Tizen 2.0 Release
[apps/home/settings.git] / setting-reset / src / setting-reset.c
1 /*
2  * setting
3  * Copyright (c) 2012 Samsung Electronics Co., Ltd.
4  *
5  * Licensed under the Flora License, Version 1.0 (the License);
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://floralicense.org/license/
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an AS IS BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 #include <setting-reset.h>
18 #include <ITapiModem.h>
19 #include <TapiUtility.h>
20 #include <tapi_common.h>
21
22 #ifndef UG_MODULE_API
23 #define UG_MODULE_API __attribute__ ((visibility("default")))
24 #endif
25
26 static void setting_reset_ug_cb_resize(void *data, Evas *e, Evas_Object *obj,
27                                        void *event_info)
28 {
29         SettingResetUG *ad = (SettingResetUG *) data;
30         setting_view_update(&setting_view_reset_main, ad);
31 }
32
33 static void *setting_reset_ug_on_create(ui_gadget_h ug, enum ug_mode mode,
34                                         service_h service, void *priv)
35 {
36         setting_retvm_if((!priv), NULL, "!priv");
37
38         SettingResetUG *resetUG = priv;
39         resetUG->ug = ug;
40
41         resetUG->win_main_layout = (Evas_Object *) ug_get_parent_layout(ug);
42         resetUG->win_get = (Evas_Object *) ug_get_window();
43
44         evas_object_show(resetUG->win_main_layout);
45         resetUG->evas = evas_object_evas_get(resetUG->win_main_layout);
46
47         setting_retvm_if(resetUG->win_main_layout == NULL, NULL,
48                          "cannot get main window ");
49
50         setting_set_i18n(SETTING_PACKAGE, SETTING_LOCALEDIR);
51
52         setting_create_Gendial_itc("multiline/1text", &(resetUG->itc_1text));
53         setting_create_Gendial_itc("dialogue/bg/1icon", &(resetUG->itc_1icon));
54
55         /*  creating a view. */
56         setting_view_node_table_register(&setting_view_reset_main, NULL);
57         setting_view_node_table_register(&setting_view_reset_settings, &setting_view_reset_main);
58         setting_view_node_set_cur_view(&setting_view_reset_main);
59
60         setting_view_create(&setting_view_reset_main, (void *)resetUG);
61         evas_object_event_callback_add(resetUG->win_main_layout,
62                                        EVAS_CALLBACK_RESIZE,
63                                        setting_reset_ug_cb_resize, resetUG);
64         return resetUG->ly_main;
65 }
66
67 static void setting_reset_ug_on_start(ui_gadget_h ug, service_h service,
68                                       void *priv)
69 {
70 }
71
72 static void setting_reset_ug_on_pause(ui_gadget_h ug, service_h service,
73                                       void *priv)
74 {
75 }
76
77 static void setting_reset_ug_on_resume(ui_gadget_h ug, service_h service,
78                                        void *priv)
79 {
80 }
81
82 static void setting_reset_ug_on_destroy(ui_gadget_h ug, service_h service,
83                                         void *priv)
84 {
85         SETTING_TRACE_BEGIN;
86         setting_retm_if((!priv), "!priv");
87         SettingResetUG *resetUG = priv;
88
89         evas_object_event_callback_del(resetUG->win_main_layout, EVAS_CALLBACK_RESIZE, setting_reset_ug_cb_resize);     /* fix flash issue for gallery */
90         resetUG->ug = ug;
91         /*  delete the allocated objects. */
92         setting_view_destroy(&setting_view_reset_settings, resetUG);
93         setting_view_destroy(&setting_view_reset_main, resetUG);
94
95         if (NULL != ug_get_layout(resetUG->ug)) {
96                 evas_object_hide((Evas_Object *) ug_get_layout(resetUG->ug));
97                 evas_object_del((Evas_Object *) ug_get_layout(resetUG->ug));
98         }
99
100         SETTING_TRACE_END;
101 }
102
103 static void setting_reset_ug_on_message(ui_gadget_h ug, service_h msg,
104                                         service_h service, void *priv)
105 {
106         SETTING_TRACE_BEGIN;
107 }
108
109 static void setting_reset_ug_on_event(ui_gadget_h ug, enum ug_event event,
110                                       service_h service, void *priv)
111 {
112         SETTING_TRACE_BEGIN;
113         setting_retm_if(!priv, "!priv");
114         SettingResetUG *ad = (SettingResetUG *) priv;
115         switch (event) {
116         case UG_EVENT_LOW_MEMORY:
117                 break;
118         case UG_EVENT_LOW_BATTERY:
119                 break;
120         case UG_EVENT_LANG_CHANGE:
121         {
122                 /* navigation item in reset setting view */
123                 Elm_Object_Item *navi_it = elm_naviframe_top_item_get(ad->navi_bar);
124                 ret_if(!navi_it);
125                 elm_object_item_text_set(navi_it, _(RESET_SETTINGS_STR));
126
127                 /* navigation item in reset main view */
128                 navi_it = elm_naviframe_bottom_item_get(ad->navi_bar);
129                 ret_if(!navi_it);
130                 elm_object_item_text_set(navi_it, _("IDS_COM_BODY_RESET"));
131
132                 if (ad->main_scroller)
133                 {
134                         elm_genlist_realized_items_update(ad->main_scroller);
135                 }
136                 SETTING_TRACE("ad->main_scroller:%p", ad->main_scroller);
137
138                 if (ad->controllbar)
139                 {
140                         Elm_Object_Item *item = NULL;
141                         item = elm_toolbar_first_item_get(ad->controllbar);
142                         if (item)
143                         {
144 #if SUPPORT_BOTTOM_BTNS
145                                 elm_object_item_text_set(item, _("IDS_COM_BODY_RESET"));
146 #else
147                                 Evas_Object *eo_btn = elm_object_item_part_content_get(item, "object");
148                                 setting_retm_if(eo_btn == NULL, "get eo_lbtn failed");
149                                 elm_object_text_set(eo_btn, _("IDS_COM_SK_CANCEL"));
150 #endif
151                         }
152
153                         item = elm_toolbar_last_item_get(ad->controllbar);
154                         if (item)
155                         {
156 #if SUPPORT_BOTTOM_BTNS
157                                 elm_object_item_text_set(item, _("IDS_COM_SK_CANCEL"));
158 #else
159                                 Evas_Object *eo_btn = elm_object_item_part_content_get(item, "object");
160                                 setting_retm_if(eo_btn == NULL, "get eo_lbtn failed");
161                                 elm_object_text_set(eo_btn, _("IDS_COM_BODY_RESET"));
162 #endif
163                         }
164                 }
165                 Evas_Object *sub_layout = elm_object_part_content_get(ad->view_layout, "elm.swallow.contents");
166                 if (sub_layout)
167                 {
168                         Evas_Object *select_all_layout = elm_object_part_content_get(sub_layout, "search_bar");
169                         if (select_all_layout) {
170                                 elm_object_part_text_set(select_all_layout, "elm.text", _(KeyStr_Select_All));
171                         }
172                 }
173
174                 if (ad->reset_list)
175                         elm_genlist_realized_items_update(ad->reset_list);
176
177                 // setting_reset_result_popup_update(ad);
178
179                 break;
180         }
181
182         case UG_EVENT_ROTATE_PORTRAIT:
183                 break;
184         case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
185                 break;
186         case UG_EVENT_ROTATE_LANDSCAPE:
187                 break;
188         case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
189                 break;
190         case UG_EVENT_REGION_CHANGE:
191                 break;
192         default:
193                 break;
194         }
195 }
196
197 static void setting_reset_ug_on_key_event(ui_gadget_h ug,
198                                           enum ug_key_event event,
199                                           service_h service, void *priv)
200 {
201         SETTING_TRACE_BEGIN;
202
203         switch (event) {
204         case UG_KEY_EVENT_END:
205                 ug_destroy_me(ug);
206                 break;
207         default:
208                 break;
209         }
210 }
211
212 UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
213 {
214         SETTING_TRACE_BEGIN;
215         SettingResetUG *resetUG = calloc(1, sizeof(SettingResetUG));
216         setting_retvm_if(!resetUG, -1, "Create SettingResetUG obj failed");
217
218         ops->create = setting_reset_ug_on_create;
219         ops->start = setting_reset_ug_on_start;
220         ops->pause = setting_reset_ug_on_pause;
221         ops->resume = setting_reset_ug_on_resume;
222         ops->destroy = setting_reset_ug_on_destroy;
223         ops->message = setting_reset_ug_on_message;
224         ops->event = setting_reset_ug_on_event;
225         ops->key_event = setting_reset_ug_on_key_event;
226         ops->priv = resetUG;
227         ops->opt = UG_OPT_INDICATOR_ENABLE;
228
229         return 0;
230 }
231
232 UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
233 {
234         SETTING_TRACE_BEGIN;
235         struct SettingResetUG *resetUG;
236         setting_retm_if(!ops, "ops == NULL");
237
238         resetUG = ops->priv;
239         if (resetUG)
240                 FREE(resetUG);
241 }
242
243 /* ***************************************************
244  *
245  *general func
246  *
247  ***************************************************/
248 #if DISABLED_CODE
249 static void __ask_popup_response_cb(void *data, Evas_Object *obj, void *event_info)
250 {
251         if (btn_type(obj) == POPUP_RESPONSE_OK) {
252                 elm_exit();//exit the Setting app
253         }
254
255         ret_if(!data);
256         SettingResetUG *ad = data;
257         if (ad->ask_popup) {
258                 evas_object_del(ad->ask_popup);
259                 ad->ask_popup = NULL;
260         }
261 }
262 #endif
263
264 void setting_reset_result_popup_resp_cb(void *data, Evas_Object *obj, void *event_info)
265 {
266         SETTING_TRACE_BEGIN;
267         ret_if(!data);
268         SettingResetUG *ad = data;
269         if (btn_type(obj) == POPUP_RESPONSE_OK) {
270         }
271         if (ad->notify) {
272                 evas_object_del(ad->notify);
273                 ad->notify = NULL;
274         }
275
276         if (ad->old_notify) {
277                 evas_object_del(ad->old_notify);
278                 ad->old_notify = NULL;
279         }
280         ad->pop_btn = NULL;
281 }
282
283 /**
284  * language change makes B/S on resetting "Language&Region UG"
285  */
286 void setting_reset_result_popup_update(void *data)
287 {
288 #if 1
289         SETTING_TRACE_BEGIN;
290         ret_if(!data);
291         SettingResetUG *ad = data;
292         if (ad->notify) {
293                 elm_object_part_text_set(ad->notify, "title,text", _(RESET_RESULT_STR));
294                 Evas_Object *btn = elm_object_part_content_get(ad->notify, "button1");
295                 elm_object_style_set(btn, "popup_button/default");
296                 if (btn)
297                 {
298                         elm_object_text_set(btn, _("IDS_COM_SK_OK"));
299                 }
300                 Evas_Object *genlist = elm_object_content_get(ad->notify);
301                 if(genlist)
302                 {
303                         elm_genlist_realized_items_update(genlist);
304                         elm_object_content_set(ad->notify, genlist);
305                 }
306                 //evas_object_show(ad->notify);
307         }
308 #endif
309 }
310
311
312 static void __tapi_flight_mode_cb(TapiHandle *handle, int result, void *data, void *user_data)
313 {
314         SETTING_TRACE_BEGIN;
315         SETTING_TRACE("result:%d", result);
316 }
317 int setting_reset_flight_mode()
318 {
319         int ret = -1;
320         TapiHandle *handle = tel_init(NULL);
321         if (!handle) {
322                 SETTING_TRACE_ERROR("tel_init error");
323         }
324
325         //if callback is NULL,it will return failed directly.
326         if (tel_set_flight_mode(handle, TAPI_POWER_FLIGHT_MODE_LEAVE, __tapi_flight_mode_cb, NULL) == 0) {
327 #if SUPPORT_RUN_SYSTEM_COMMAND
328                 ret = excuteCmd(SETTING_POSTINST_FILE, 1, "flightmode");
329 #else
330                 ret = vconf_set_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, FALSE);
331 #endif
332         } else {
333                 SETTING_TRACE_ERROR("tel_set_flight_mode error");
334         }
335
336
337         if (tel_deinit(handle) != 0) {
338                 SETTING_TRACE_ERROR("tel_deinit error");
339         }
340         return ret;
341 }
342
343 int setting_reset_rotation_lock(void)
344 {
345 #if SUPPORT_RUN_SYSTEM_COMMAND
346         return excuteCmd(SETTING_POSTINST_FILE, 1, "rotationLock");
347 #else
348         return vconf_set_bool(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, FALSE);
349 #endif
350 }
351