Disable Factory reset menu .
[apps/core/preloaded/settings.git] / setting-reset / src / setting-reset-main.c
1 /*
2  * setting
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
5  *
6  * Contact: MyoungJune Park <mj2004.park@samsung.com>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21 #include <setting-reset-main.h>
22
23 #define RESULT_FONT_SIZE 28//18
24 #define ITEM_NAME_FONT_SIZE 35//22
25
26 static int setting_reset_main_create(void *cb);
27 static int setting_reset_main_destroy(void *cb);
28 static int setting_reset_main_update(void *cb);
29 static int setting_reset_main_cleanup(void *cb);
30
31 setting_view setting_view_reset_main = {
32         .create = setting_reset_main_create,
33         .destroy = setting_reset_main_destroy,
34         .update = setting_reset_main_update,
35         .cleanup = setting_reset_main_cleanup,
36 };
37
38 static void setting_reset_main_click_softkey_cancel_cb(void *data,
39                                                        Evas_Object *obj,
40                                                        void *event_info);
41 #if SUPPORT_RESET_DETAILS
42 static void setting_reset_main_mouse_up_Gendial_list_cb(void *data, Evas_Object *obj, void *event_info);
43 #endif
44
45 /* ***************************************************
46  *
47  *basic func
48  *
49  ***************************************************/
50 static int setting_reset_main_create(void *cb)
51 {
52         SETTING_TRACE_BEGIN;
53         /* error check */
54         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
55
56         SettingResetUG *ad = (SettingResetUG *) cb;
57         Evas_Object *scroller = NULL;
58 #if SIMPLY_SUPPORT_ALL_RESET
59         ad->ly_main =
60             setting_create_layout_navi_bar_genlist(ad->win_main_layout,
61                                                    ad->win_get,
62                                                    _("IDS_COM_BODY_RESET"),
63                                                    _("IDS_COM_BODY_BACK"), NULL,
64                                                    setting_reset_main_click_softkey_cancel_cb,
65                                                    NULL, ad, &scroller,
66                                                    &(ad->navi_bar));
67         /* Description */
68         setting_create_Gendial_field_def(scroller, &(ad->itc_1text), NULL,
69                                          ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
70                                          NULL, NULL, 0, RESET_ALL_DESC,
71                                          NULL, NULL);
72         elm_genlist_item_select_mode_set(elm_genlist_item_append(scroller, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
73                                          ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
74         /* Button */
75         Setting_GenGroupItem_Data *item_data =
76             (Setting_GenGroupItem_Data *) calloc(1,
77                                                  sizeof
78                                                  (Setting_GenGroupItem_Data));
79         setting_retvm_if(!item_data, SETTING_RETURN_FAIL, "calloc failed");
80         item_data->userdata = ad;
81         item_data->keyStr = (char *)g_strdup(RESET_ALL);
82         item_data->swallow_type = SWALLOW_Type_1BUTTON;
83
84         item_data->chk_change_cb = __reset_all_button_cb;
85         item_data->item = elm_genlist_item_append(scroller, &(ad->itc_1icon), item_data, NULL,
86                                                     ELM_GENLIST_ITEM_NONE,
87                                                     NULL, NULL);
88         setting_view_reset_main.is_create = 1;
89         ad->main_scroller = scroller;
90         return SETTING_RETURN_SUCCESS;
91 #endif
92
93 #if SUPPORT_RESET_DETAILS
94         ad->ly_main =
95             setting_create_layout_navi_bar_genlist(ad->win_main_layout,
96                                                    ad->win_get,
97                                                    _("IDS_COM_BODY_RESET"),
98                                                    _("IDS_COM_BODY_BACK"), NULL,
99                                                    setting_reset_main_click_softkey_cancel_cb,
100                                                    NULL, ad, &scroller,
101                                                    &(ad->navi_bar));
102
103         Elm_Object_Item *item = NULL;;
104
105         item =
106             elm_genlist_item_append(scroller, &itc_seperator, NULL, NULL,
107                                     ELM_GENLIST_ITEM_NONE, NULL, NULL);
108         elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
109
110         /* 1. Reset settings */
111         setting_create_Gendial_field_def(scroller, &itc_1text,
112                                                                 setting_reset_main_mouse_up_Gendial_list_cb,ad,
113                                                                 SWALLOW_Type_INVALID,
114                                                                 NULL, NULL,
115                                                                 0, RESET_SETTINGS_STR, NULL, NULL);
116 #if SUPPORT_SIM_CARD_PROFILE
117         /* 2. SIM card profile settings */
118         setting_create_Gendial_field_def(scroller, &itc_1text,
119                                                                 setting_reset_main_mouse_up_Gendial_list_cb,ad,
120                                                                 SWALLOW_Type_INVALID,
121                                                                 NULL, NULL,
122                                                                 0, SIM_CARD_PROFILE_SETTINGS_STR, NULL, NULL);
123 #endif
124
125 #if DISABLED_CODE
126         /* Description */
127         setting_create_Gendial_field_def(scroller, &itc_multiline_text, NULL,
128                                          ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
129                                          NULL, NULL, 0, RESET_ALL_DESC,
130                                          NULL, NULL);
131 #endif
132         setting_view_reset_main.is_create = 1;
133         ad->main_scroller = scroller;
134         return SETTING_RETURN_SUCCESS;
135
136 #endif
137
138 #if SUPPORT_RESET_OLD
139         Evas_Object *navi_bar = NULL;
140
141         Evas_Object *controllbar = NULL;
142
143         Evas_Object *view_layout = elm_layout_add(ad->win_main_layout);
144         elm_layout_file_set(view_layout, SETTING_THEME_EDJ_NAME,
145                             "selinfo_bottom");
146         evas_object_size_hint_weight_set(view_layout, EVAS_HINT_EXPAND, 0.0);
147
148         /*  Evas_Object * win_layout, Evas_Object * win_obj */
149         ad->ly_main =
150             setting_create_layout_navi_bar(ad->win_main_layout, ad->win_get,
151                                            _("IDS_COM_BODY_RESET"),
152                                            _("IDS_COM_SK_CANCEL"),
153                                            _("IDS_COM_BODY_RESET"), NULL,
154                                            setting_reset_main_click_softkey_cancel_cb,
155                                            setting_reset_main_click_softkey_reset_cb,
156                                            NULL, ad, view_layout, &navi_bar,
157                                            &controllbar);
158         elm_object_item_disabled_set(elm_toolbar_last_item_get
159                                          (controllbar), EINA_TRUE);
160
161         /* ******************************************create frame */
162         Setting_Done_List_Data *list_data = &(ad->list_data);   /* define a handle */
163         int idx = 0;
164         list_data->win_main = ad->ly_main;
165         list_data->UG_data = ad;
166         list_data->ly_parent = view_layout;
167         list_data->controllbar = controllbar;
168
169
170         list_data->chk_items[idx++].item_name = KeyStr_Select_All;
171         char *ug_args;
172         char *item_name;
173
174         int i = 0;
175         int j = 0;
176
177         for (; i < setting_cfg_get_category_length(); i++) {
178                 SETTING_TRACE("group is:%s", _(setting_cfg_get_category_name(i)));
179
180                 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
181                         /*SETTING_TRACE("i:%d\tj:%d", i, j);*/
182                         if (Cfg_Item_unResetable ==
183                             setting_cfg_get_resetable_flag_idx(i, j))
184                         {
185                             continue;
186                         }
187                         list_data->chk_items[idx].ug_args = ug_args =
188                                         setting_cfg_get_ug_args_idx(i, j);
189                         list_data->chk_items[idx].item_name = item_name =
190                                         setting_cfg_get_keyname_idx(i, j);
191
192                         SETTING_TRACE("process %s:\t%s",_(item_name), ug_args);
193                         idx++;
194                 }
195         }
196
197         list_data->cur_item_num = idx;
198         SETTING_TRACE("list_data->cur_item_num:%d", list_data->cur_item_num);
199         scroller = setting_create_done_list(list_data);
200         elm_object_part_content_set(view_layout, "elm.swallow.contents", scroller);
201
202         ad->view_layout = view_layout;
203         ad->navi_bar = navi_bar;
204         ad->controllbar = controllbar;
205         /* *******************************************update info */
206
207         setting_view_reset_main.is_create = 1;
208         ad->itc_1text.func.text_get = __result_gl_text_get;
209         return SETTING_RETURN_SUCCESS;
210 #endif
211 }
212
213 static int setting_reset_main_destroy(void *cb)
214 {
215         SETTING_TRACE_BEGIN;
216         /* error check */
217         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
218
219         SettingResetUG *ad = (SettingResetUG *) cb;
220         if (ad->notify) {
221                 evas_object_del(ad->notify);
222                 ad->notify = NULL;
223         }
224         if (ad->old_notify) {
225                 evas_object_del(ad->old_notify);
226                 ad->old_notify = NULL;
227         }
228         if (ad->pop_progress)
229         {
230                 evas_object_del(ad->pop_progress);
231                 ad->pop_progress = NULL;
232         }
233
234         if (ad->ask_popup)
235         {
236                 evas_object_del(ad->ask_popup);
237                 ad->ask_popup = NULL;
238         }
239         if (ad->animator)
240         {
241                 ecore_animator_del(ad->animator);
242                 ad->animator = NULL;
243         }
244
245         if (ad->ly_main != NULL) {
246                 evas_object_del(ad->ly_main);
247                 setting_view_reset_main.is_create = 0;
248         }
249
250         return SETTING_RETURN_SUCCESS;
251 }
252
253 static int setting_reset_main_update(void *cb)
254 {
255         SETTING_TRACE_BEGIN;
256         /* error check */
257         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
258
259         SettingResetUG *ad = (SettingResetUG *) cb;
260
261         if (ad->ly_main != NULL) {
262                 evas_object_show(ad->ly_main);
263         }
264
265         return SETTING_RETURN_SUCCESS;
266 }
267
268 static int setting_reset_main_cleanup(void *cb)
269 {
270         SETTING_TRACE_BEGIN;
271         /* error check */
272         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
273
274         SettingResetUG *ad = (SettingResetUG *) cb;
275
276         if (ad->ly_main != NULL) {
277                 evas_object_hide(ad->ly_main);
278         }
279
280         return SETTING_RETURN_SUCCESS;
281 }
282
283 #if SUPPORT_RESET_DETAILS
284 static void
285 setting_reset_main_mouse_up_Gendial_list_cb(void *data, Evas_Object *obj, void *event_info)
286 {
287         /* error check */
288         setting_retm_if(data == NULL, "Data parameter is NULL");
289
290         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
291         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
292         elm_genlist_item_selected_set(item, 0);
293
294         Setting_GenGroupItem_Data *list_item =
295             (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
296
297         SettingResetUG *ad = (SettingResetUG *) data;
298
299         SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
300
301         if (!safeStrCmp(RESET_SETTINGS_STR, list_item->keyStr))
302         {
303                 setting_view_change(&setting_view_reset_main, &setting_view_reset_settings, ad);
304         }
305 #if SUPPORT_SIM_CARD_PROFILE
306         else if (!safeStrCmp(SIM_CARD_PROFILE_SETTINGS_STR, list_item->keyStr))
307         {
308                 /* TBD */
309                 SETTING_TRACE("SIM-CARD PROFILE");
310                 setting_create_simple_popup(NULL, ad->win_get, NULL, "NOT IMPLMENTED YET");
311         }
312 #endif
313
314         /* to do : */
315 }
316 #endif
317
318 static void
319 setting_reset_main_click_softkey_cancel_cb(void *data, Evas_Object *obj,
320                                            void *event_info)
321 {
322         SETTING_TRACE_BEGIN;
323         /* error check */
324         retm_if(data == NULL, "Data parameter is NULL");
325
326         SettingResetUG *ad = (SettingResetUG *) data;
327         if (ad->list_data.selInfoPop) {
328                 evas_object_del(ad->list_data.selInfoPop);
329                 ad->list_data.selInfoPop = NULL;
330         }
331         /* Send destroy request */
332         ug_destroy_me(ad->ug);
333 }
334