Initialize Tizen 2.3
[apps/home/settings.git] / setting-reset / src / setting-reset-main.c
1 /*
2  * setting
3  * Copyright (c) 2012 Samsung Electronics Co., Ltd.
4  *
5  * Licensed under the Flora License, Version 1.1 (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
18 #include <setting-reset-main.h>
19 #include <sysman.h>
20
21
22 #define RESULT_FONT_SIZE 28//18
23 #define ITEM_NAME_FONT_SIZE 35//22
24
25 static int setting_reset_main_create(void *cb);
26 static int setting_reset_main_destroy(void *cb);
27 static int setting_reset_main_update(void *cb);
28 static int setting_reset_main_cleanup(void *cb);
29
30 setting_view setting_view_reset_main = {
31         .create = setting_reset_main_create,
32         .destroy = setting_reset_main_destroy,
33         .update = setting_reset_main_update,
34         .cleanup = setting_reset_main_cleanup,
35 };
36
37 static void setting_reset_main_click_softkey_cancel_cb(void *data,
38                                                        Evas_Object *obj,
39                                                        void *event_info);
40 #if SUPPORT_RESET_DETAILS
41 static void setting_reset_main_mouse_up_Gendial_list_cb(void *data, Evas_Object *obj, void *event_info);
42 #endif
43
44 /* ***************************************************
45  *
46  *basic func
47  *
48  ***************************************************/
49 static int setting_reset_main_create(void *cb)
50 {
51         SETTING_TRACE_BEGIN;
52         /* error check */
53         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
54
55         SettingResetUG *ad = (SettingResetUG *) cb;
56         Evas_Object *scroller = NULL;
57 #if SIMPLY_SUPPORT_ALL_RESET
58         ad->ly_main =
59             setting_create_layout_navi_bar_genlist(ad->win_main_layout,
60                                                    ad->win_get,
61                                                    _("IDS_COM_BODY_RESET"),
62                                                    _("IDS_COM_BODY_BACK"), NULL,
63                                                    setting_reset_main_click_softkey_cancel_cb,
64                                                    NULL, ad, &scroller,
65                                                    &(ad->navi_bar));
66         /* Description */
67         setting_create_Gendial_field_def(scroller, &(ad->itc_1text), NULL,
68                                          ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
69                                          NULL, NULL, 0, RESET_ALL_DESC,
70                                          NULL, NULL);
71         elm_genlist_item_select_mode_set(elm_genlist_item_append(scroller, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
72                                          ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
73         /* Button */
74         Setting_GenGroupItem_Data *item_data =
75             (Setting_GenGroupItem_Data *) calloc(1,
76                                                  sizeof
77                                                  (Setting_GenGroupItem_Data));
78         setting_retvm_if(!item_data, SETTING_RETURN_FAIL, "calloc failed");
79         item_data->userdata = ad;
80         item_data->keyStr = (char *)g_strdup(RESET_ALL);
81         item_data->swallow_type = SWALLOW_Type_1BUTTON;
82
83         item_data->chk_change_cb = __reset_all_button_cb;
84         item_data->item = elm_genlist_item_append(scroller, &(ad->itc_1icon), item_data, NULL,
85                                                     ELM_GENLIST_ITEM_NONE,
86                                                     NULL, NULL);
87         setting_view_reset_main.is_create = 1;
88         ad->main_scroller = scroller;
89         return SETTING_RETURN_SUCCESS;
90 #endif
91
92 #if SUPPORT_RESET_DETAILS
93         ad->ly_main =
94             setting_create_layout_navi_bar_genlist(ad->win_main_layout,
95                                                    ad->win_get,
96                                                    _("IDS_COM_BODY_RESET"),
97                                                    _("IDS_COM_BODY_BACK"), NULL,
98                                                    setting_reset_main_click_softkey_cancel_cb,
99                                                    NULL, ad, &scroller,
100                                                    &(ad->navi_bar));
101
102         Elm_Object_Item *item = NULL;;
103
104         item =
105             elm_genlist_item_append(scroller, &itc_seperator, NULL, NULL,
106                                     ELM_GENLIST_ITEM_NONE, NULL, NULL);
107         elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
108
109         /* 1. Reset settings */
110         setting_create_Gendial_field_def(scroller, &itc_1text,
111                                                                 setting_reset_main_mouse_up_Gendial_list_cb,ad,
112                                                                 SWALLOW_Type_INVALID,
113                                                                 NULL, NULL,
114                                                                 0, RESET_SETTINGS_STR, NULL, NULL);
115 #if SUPPORT_SIM_CARD_PROFILE
116         /* 2. SIM card profile settings */
117         #ifdef TARGET
118         int is_sim_profile_enabled = csc_svc_sim_auto_setting_chk_feature_enable();
119         int err = 0;
120         int value = VCONFKEY_TELEPHONY_SIM_UNKNOWN;
121         setting_get_int_slp_key(INT_SLP_SETTING_SIM_SLOT, &value, &err);
122         if (is_sim_profile_enabled && VCONFKEY_TELEPHONY_SIM_INSERTED == value) {
123                 setting_create_Gendial_field_def(scroller, &itc_1text,
124                                                                 setting_reset_main_mouse_up_Gendial_list_cb,ad,
125                                                                 SWALLOW_Type_INVALID,
126                                                                 NULL, NULL,
127                                                                 0, SIM_CARD_PROFILE_SETTINGS_STR, NULL, NULL);
128         } else {
129                 SETTING_TRACE("is_sim_profile_enabled:%d", is_sim_profile_enabled);
130                 SETTING_TRACE("value:%d", value);
131         }
132         #else
133         SETTING_TRACE("TARGET MACRO disabled");
134         #endif
135
136 #endif
137
138 #if DISABLED_CODE
139         /* Description */
140         setting_create_Gendial_field_def(scroller, &itc_multiline_text, NULL,
141                                          ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
142                                          NULL, NULL, 0, RESET_ALL_DESC,
143                                          NULL, NULL);
144 #endif
145         setting_view_reset_main.is_create = 1;
146         ad->main_scroller = scroller;
147         return SETTING_RETURN_SUCCESS;
148
149 #endif
150
151 #if SUPPORT_RESET_OLD
152         Evas_Object *navi_bar = NULL;
153
154         Evas_Object *controllbar = NULL;
155
156         Evas_Object *view_layout = elm_layout_add(ad->win_main_layout);
157         elm_layout_file_set(view_layout, SETTING_THEME_EDJ_NAME,
158                             "selinfo_bottom");
159         evas_object_size_hint_weight_set(view_layout, EVAS_HINT_EXPAND, 0.0);
160
161         /*  Evas_Object * win_layout, Evas_Object * win_obj */
162         ad->ly_main =
163             setting_create_layout_navi_bar(ad->win_main_layout, ad->win_get,
164                                            _("IDS_COM_BODY_RESET"),
165                                            _("IDS_COM_SK_CANCEL"),
166                                            _("IDS_COM_BODY_RESET"), NULL,
167                                            setting_reset_main_click_softkey_cancel_cb,
168                                            setting_reset_main_click_softkey_reset_cb,
169                                            NULL, ad, view_layout, &navi_bar,
170                                            &controllbar);
171         elm_object_item_disabled_set(elm_toolbar_last_item_get
172                                          (controllbar), EINA_TRUE);
173
174         /* ******************************************create frame */
175         Setting_Done_List_Data *list_data = &(ad->list_data);   /* define a handle */
176         int idx = 0;
177         list_data->win_main = ad->ly_main;
178         list_data->UG_data = ad;
179         list_data->ly_parent = view_layout;
180         list_data->controllbar = controllbar;
181
182
183         list_data->chk_items[idx++].item_name = KeyStr_Select_All;
184         char *ug_args;
185         char *item_name;
186
187         int i = 0;
188         int j = 0;
189
190         for (; i < setting_cfg_get_category_length(); i++) {
191                 SETTING_TRACE("group is:%s", _(setting_cfg_get_category_name(i)));
192
193                 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
194                         /*SETTING_TRACE("i:%d\tj:%d", i, j);*/
195                         if (Cfg_Item_unResetable ==
196                             setting_cfg_get_resetable_flag_idx(i, j))
197                         {
198                             continue;
199                         }
200                         list_data->chk_items[idx].ug_args = ug_args =
201                                         setting_cfg_get_ug_args_idx(i, j);
202                         list_data->chk_items[idx].item_name = item_name =
203                                         setting_cfg_get_keyname_idx(i, j);
204
205                         SETTING_TRACE("process %s:\t%s",_(item_name), ug_args);
206                         idx++;
207                 }
208         }
209
210         list_data->cur_item_num = idx;
211         SETTING_TRACE("list_data->cur_item_num:%d", list_data->cur_item_num);
212         scroller = setting_create_done_list(list_data);
213         elm_object_part_content_set(view_layout, "elm.swallow.contents", scroller);
214
215         ad->view_layout = view_layout;
216         ad->navi_bar = navi_bar;
217         ad->controllbar = controllbar;
218         /* *******************************************update info */
219
220         setting_view_reset_main.is_create = 1;
221         ad->itc_1text.func.text_get = __result_gl_text_get;
222         return SETTING_RETURN_SUCCESS;
223 #endif
224 }
225
226 static int setting_reset_main_destroy(void *cb)
227 {
228         SETTING_TRACE_BEGIN;
229         /* error check */
230         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
231
232         SettingResetUG *ad = (SettingResetUG *) cb;
233         if (ad->notify) {
234                 evas_object_del(ad->notify);
235                 ad->notify = NULL;
236         }
237         if (ad->old_notify) {
238                 evas_object_del(ad->old_notify);
239                 ad->old_notify = NULL;
240         }
241         if (ad->pop_progress)
242         {
243                 evas_object_del(ad->pop_progress);
244                 ad->pop_progress = NULL;
245         }
246
247         if (ad->ask_popup)
248         {
249                 evas_object_del(ad->ask_popup);
250                 ad->ask_popup = NULL;
251         }
252         if (ad->animator)
253         {
254                 ecore_animator_del(ad->animator);
255                 ad->animator = NULL;
256         }
257
258         if (ad->ly_main != NULL) {
259                 evas_object_del(ad->ly_main);
260                 setting_view_reset_main.is_create = 0;
261         }
262
263         return SETTING_RETURN_SUCCESS;
264 }
265
266 static int setting_reset_main_update(void *cb)
267 {
268         SETTING_TRACE_BEGIN;
269         /* error check */
270         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
271
272         SettingResetUG *ad = (SettingResetUG *) cb;
273
274         if (ad->ly_main != NULL) {
275                 evas_object_show(ad->ly_main);
276         }
277
278         return SETTING_RETURN_SUCCESS;
279 }
280
281 static int setting_reset_main_cleanup(void *cb)
282 {
283         SETTING_TRACE_BEGIN;
284         /* error check */
285         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
286
287         SettingResetUG *ad = (SettingResetUG *) cb;
288
289         if (ad->ly_main != NULL) {
290                 evas_object_hide(ad->ly_main);
291         }
292
293         return SETTING_RETURN_SUCCESS;
294 }
295
296 static void setting_reset_reboot_resp_cb(void *data, Evas_Object *obj,
297                                         void *event_info)
298 {
299         SETTING_TRACE_BEGIN;
300         int response_type = btn_type(obj);
301         if (POPUP_RESPONSE_OK == response_type) {                       // OK cliked
302                 csc_svc_sim_auto_setting_clear_active_operator();
303                 // reboot here
304                 sysman_request_reboot();
305
306         } else if (POPUP_RESPONSE_CANCEL == response_type) { // cancel clicked
307                 // DO NOTHING
308         }
309
310         SettingResetUG *ad = data;
311         if (ad->pop)
312         {
313                 evas_object_del(ad->pop);
314                 ad->pop = NULL;
315         }
316 }
317
318 #if SUPPORT_RESET_DETAILS
319 static void
320 setting_reset_main_mouse_up_Gendial_list_cb(void *data, Evas_Object *obj, void *event_info)
321 {
322         /* error check */
323         setting_retm_if(data == NULL, "Data parameter is NULL");
324
325         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
326         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
327         elm_genlist_item_selected_set(item, 0);
328
329         Setting_GenGroupItem_Data *list_item =
330             (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
331
332         SettingResetUG *ad = (SettingResetUG *) data;
333
334         SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
335
336         if (!safeStrCmp(RESET_SETTINGS_STR, list_item->keyStr))
337         {
338                 setting_view_change(&setting_view_reset_main, &setting_view_reset_settings, ad);
339         }
340 #if SUPPORT_SIM_CARD_PROFILE
341         else if (!safeStrCmp(SIM_CARD_PROFILE_SETTINGS_STR, list_item->keyStr))
342         {
343                 SETTING_TRACE("SIM-CARD PROFILE");
344                 #ifdef TARGET
345                 ad->pop = setting_create_popup_with_btn(ad, ad->win_get, NULL,
346                                          _("IDS_ST_BODY_RESET_SIM_CARD_PROFILE_SETTINGS_TO_DEFAULT_AND_SELECT_ANOTHER_SERVICE_PROVIDER_MSG"),
347                                          //setting_time_reboot_resp_cb,
348                                          setting_reset_reboot_resp_cb,
349                                          0, 2,
350                                  dgettext("sys_string", "IDS_COM_SK_OK"),
351                                  _("IDS_COM_SK_CANCEL"));
352                 #endif
353         }
354 #endif
355         /* to do : */
356 }
357 #endif
358
359 static void
360 setting_reset_main_click_softkey_cancel_cb(void *data, Evas_Object *obj,
361                                            void *event_info)
362 {
363         SETTING_TRACE_BEGIN;
364         /* error check */
365         retm_if(data == NULL, "Data parameter is NULL");
366
367         SettingResetUG *ad = (SettingResetUG *) data;
368         if (ad->list_data.selInfoPop) {
369                 evas_object_del(ad->list_data.selInfoPop);
370                 ad->list_data.selInfoPop = NULL;
371         }
372         /* Send destroy request */
373         ug_destroy_me(ad->ug);
374 }
375