[Bug] Fix N_SE-7737 : the string is automatic following its sub menus are being...
[apps/core/preloaded/settings.git] / src / setting-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
22 #include <tapi_common.h>
23 #include <aul.h>
24 #include <time.h>
25 #include <setting-main.h>
26 #include <setting-plugin.h>
27
28 static int setting_main_create(void *cb);
29 static int setting_main_destroy(void *cb);
30 static int setting_main_update(void *cb);
31 static int setting_main_cleanup(void *cb);
32
33 setting_view setting_view_main = {
34         .create = setting_main_create,
35         .update = setting_main_update,
36         .destroy = setting_main_destroy,
37         .cleanup = setting_main_cleanup,
38 };
39
40 static void setting_main_tapi_event_cb(TapiHandle *handle, int result, void *data, void *user_data);
41 static int setting_main_refresh(void *data);
42 static void __alternate_flight_mode(Evas_Object *check);
43 static void setting_main_click_Gendial_list_flight_mode_cb(void *data,
44                                                            Evas_Object *obj,
45                                                            void *event_info);
46 static void __alternate_flight_mode(Evas_Object *check);
47
48 void setting_main_click_list_item_ug_cb(void *data, Evas_Object *obj, char *ug_to_load, service_h svc, struct ug_cbs *cbs);
49
50 setting_main_appdata *g_main_ad;
51 static void
52 __setting_chk_changed(void *data, Evas_Object *obj, void *event_info)
53 {
54         /* SETTING_TRACE_BEGIN; */
55         retm_if(data == NULL, "Data parameter is NULL");
56         Setting_GenGroupItem_Data *list_item =
57             (Setting_GenGroupItem_Data *) data;
58         /* SETTING_TRACE("process item [%s]", _(list_item->keyStr)); */
59         list_item->chk_status = elm_check_state_get(obj);
60
61         Eina_List *check_list = g_main_ad->item_check_list;
62         Setting_GenGroupItem_Data *item = NULL;
63         bool isFoundNotSelSomeone = FALSE;
64         bool isFoundSelSomeone = FALSE;
65         while (check_list) {
66                 item = (Setting_GenGroupItem_Data *)
67                     eina_list_data_get(check_list);
68                 if (NULL == item) {
69                         continue;
70                 }
71                 if (!(item->chk_status)) {
72                         isFoundNotSelSomeone = TRUE;
73                 } else {
74                         isFoundSelSomeone = TRUE;
75                 }
76                 if (isFoundNotSelSomeone && isFoundSelSomeone) {
77                         break;
78                 }
79                 check_list = eina_list_next(check_list);
80         }
81
82         if (isFoundNotSelSomeone) {
83                 g_main_ad->check_all_item->chk_status = 0;      /* for update new state */
84         } else {
85                 g_main_ad->check_all_item->chk_status = 1;      /* for update new state */
86         }
87         elm_object_item_data_set(g_main_ad->check_all_item->item, g_main_ad->check_all_item);
88         elm_genlist_item_update(g_main_ad->check_all_item->item);
89
90         if (isFoundSelSomeone) {
91                 /* SETTING_TRACE("Set it to active"); */
92                 elm_object_item_disabled_set(elm_toolbar_last_item_get
93                                                  (g_main_ad->controllbar_all_check),
94                                                  EINA_FALSE);
95         }
96 }
97
98 static void __setting_list_changed(void *data, Evas_Object *obj,
99                                    void *event_info)
100 {
101
102         SETTING_TRACE_BEGIN;
103         /* error check */
104         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
105
106         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
107         elm_genlist_item_selected_set(item, 0);
108         Setting_GenGroupItem_Data *list_item =
109             (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
110
111         int old_status = elm_check_state_get(list_item->eo_check);
112         /* new status */
113         list_item->chk_status = !old_status;
114         elm_check_state_set(list_item->eo_check, list_item->chk_status);
115
116         Eina_List *check_list = g_main_ad->item_check_list;
117         Setting_GenGroupItem_Data *group_item = NULL;
118         bool isFoundNotSelSomeone = FALSE;
119         bool isFoundSelSomeone = FALSE;
120         while (check_list) {
121                 group_item = (Setting_GenGroupItem_Data *)
122                     eina_list_data_get(check_list);
123                 if (NULL == group_item) {
124                         continue;
125                 }
126                 if (!(group_item->chk_status)) {
127                         isFoundNotSelSomeone = TRUE;
128                         /* break; */
129                 } else {
130                         isFoundSelSomeone = TRUE;
131                 }
132                 if (isFoundNotSelSomeone && isFoundSelSomeone) {
133                         break;
134                 }
135
136                 check_list = eina_list_next(check_list);
137         }
138
139         if (isFoundNotSelSomeone) {
140                 g_main_ad->check_all_item->chk_status = 0;      /* for update new state */
141         } else {
142                 g_main_ad->check_all_item->chk_status = 1;      /* for update new state */
143         }
144         elm_object_item_data_set(g_main_ad->check_all_item->item, g_main_ad->check_all_item);
145         elm_genlist_item_update(g_main_ad->check_all_item->item);
146
147         if (isFoundSelSomeone) {
148                 /* SETTING_TRACE("Set it to active"); */
149                 elm_object_item_disabled_set(elm_toolbar_last_item_get
150                                                  (g_main_ad->controllbar_all_check),
151                                                  EINA_FALSE);
152         }
153
154 }
155
156 static void
157 __setting_chk_sel_all_changed(void *data, Evas_Object *obj, void *event_info)
158 {
159         /* SETTING_TRACE_BEGIN; */
160         retm_if(data == NULL, "Data parameter is NULL");
161         Setting_GenGroupItem_Data *list_item =
162             (Setting_GenGroupItem_Data *) data;
163         bool is_all_checked = elm_check_state_get(obj);
164         list_item->chk_status = is_all_checked; /* for update new state */
165         /* SETTING_TRACE("is_all_checked:%d", is_all_checked); */
166
167         Eina_List *check_list = g_main_ad->item_check_list;
168
169         while (check_list) {
170                 list_item = (Setting_GenGroupItem_Data *)
171                     eina_list_data_get(check_list);
172                 if (NULL == list_item) {
173                         continue;
174                 }
175                 list_item->chk_status = is_all_checked;
176                 elm_object_item_data_set(list_item->item, list_item);
177                 elm_genlist_item_update(list_item->item);
178                 check_list = eina_list_next(check_list);
179         }
180         if (is_all_checked) {
181                 elm_object_item_disabled_set(elm_toolbar_last_item_get
182                                                  (g_main_ad->controllbar_all_check),
183                                                  EINA_FALSE);
184         }
185 }
186
187 static void __setting_list_sel_all_changed(void *data, Evas_Object *obj,
188                                            void *event_info)
189 {
190         /* error check */
191         SETTING_TRACE_BEGIN;
192         SETTING_TRACE();
193         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
194         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
195         elm_genlist_item_selected_set(item, 0);
196         Setting_GenGroupItem_Data *list_item =
197             (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
198
199         int old_status = elm_check_state_get(list_item->eo_check);
200         /* new status */
201         int is_all_checked = list_item->chk_status = !old_status;
202         elm_check_state_set(list_item->eo_check, list_item->chk_status);
203
204         Eina_List *check_list = g_main_ad->item_check_list;
205
206         while (check_list) {
207                 list_item = (Setting_GenGroupItem_Data *)
208                     eina_list_data_get(check_list);
209                 if (NULL == list_item) {
210                         continue;
211                 }
212                 list_item->chk_status = is_all_checked;
213                 /* elm_check_state_set(list_item->eo_check, is_all_checked); */
214                 elm_object_item_data_set(list_item->item, list_item);
215                 elm_genlist_item_update(list_item->item);
216                 check_list = eina_list_next(check_list);
217         }
218         if (is_all_checked) {
219                 elm_object_item_disabled_set(elm_toolbar_last_item_get
220                                                  (g_main_ad->controllbar_all_check),
221                                                  EINA_FALSE);
222         }
223
224 }
225
226 static void __load_check_list(void *data, Evas_Object **genlist,
227                               char *menuNameKey)
228 {
229         SETTING_TRACE_BEGIN;
230         setting_main_appdata *ad = (setting_main_appdata *) data;
231
232         bool state = FALSE;
233         char *keyStr = NULL;
234         Cfg_Item_Position pos = Cfg_Item_Pos_Uninstall;
235         bool isFoundNonSelItem = FALSE;
236         bool isFoundSelSomeoneItem = FALSE;
237
238         int i, j;
239         char *icon_path = NULL;
240
241         ad->check_all_item =
242             setting_create_Gendial_field_def(ad->gl_sel_all,
243                                              &(ad->itc[GENDIAL_Type_sel_all]),
244                                              __setting_list_sel_all_changed, ad,
245                                              SWALLOW_Type_1CHECK, NULL, NULL,
246                                              state, KeyStr_Select_All, NULL,
247                                              __setting_chk_sel_all_changed);
248         __BACK_POINTER_SET(ad->check_all_item);
249
250         Setting_GenGroupItem_Data *item = NULL;
251         Setting_GenGroupItem_Data *category_item = NULL;
252         for (i = 0; i < setting_cfg_get_category_length(); i++) {
253                 if (NULL == menuNameKey) {
254                         /* SETTING_TRACE("load all the items in config file"); */
255                 } else
256                     if (safeStrCmp
257                         (setting_cfg_get_category_name(i), menuNameKey)) {
258                         continue;
259                 }
260                 char *category_name = setting_cfg_get_category_name(i);
261
262                 category_item =
263                     setting_create_Gendial_field_group_titleItem(*genlist,
264                                                                  &(ad->itc
265                                                                    [GENDIAL_Type_group_item]),
266                                                                  NULL,
267                                                                  ELM_GENLIST_ITEM_NONE,
268                                                                  category_name,
269                                                                  NULL);
270                 if (category_item) {
271                         for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
272                                 keyStr = setting_cfg_get_keyname_idx(i, j);
273                                 pos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
274
275                                 if (Cfg_Item_Pos_Level1 == pos) {
276                                         state = FALSE;
277                                         isFoundNonSelItem = TRUE;
278                                 } else {
279                                         state = TRUE;
280                                         isFoundSelSomeoneItem = TRUE;
281                                 }
282
283                         icon_path = setting_cfg_get_icon_path_idx(i, j);
284                         item =
285                             setting_create_Gendial_field_groupitem(*genlist,
286                                                                    &(ad->itc
287                                                                      [GENDIAL_Type_1text_2icon_2]),
288                                                                    category_item->item,
289                                                                    __setting_list_changed,
290                                                                    ad,
291                                                                    SWALLOW_Type_1CHECKICON,
292                                                                    NULL,
293                                                                    icon_path,
294                                                                    state,
295                                                                    keyStr, NULL,
296                                                                    __setting_chk_changed);
297
298                                 ad->item_check_list =
299                                     eina_list_append(ad->item_check_list, item);
300                         }
301                 } else {
302                         SETTING_TRACE_ERROR("category_item is NULL");
303                 }
304         }
305
306         if (ad->check_all_item) {
307                 if (isFoundNonSelItem) {
308                         ad->check_all_item->chk_status = 0;     /* for update new state */
309                 } else {
310                         ad->check_all_item->chk_status = 1;     /* for update new state */
311                 }
312                 elm_object_item_data_set(ad->check_all_item->item, ad->check_all_item);
313                 elm_genlist_item_update(ad->check_all_item->item);
314         } else {
315                 SETTING_TRACE_ERROR("ad->check_all_item is NULL");
316         }
317
318         if (isFoundSelSomeoneItem) {
319                 elm_object_item_disabled_set(elm_toolbar_last_item_get
320                                                  (ad->controllbar_all_check),
321                                                  EINA_FALSE);
322         } else {
323                 elm_object_item_disabled_set(elm_toolbar_last_item_get
324                                                  (ad->controllbar_all_check),
325                                                  EINA_TRUE);
326         }
327         SETTING_TRACE_END;
328 }
329
330
331 static Setting_GenGroupItem_Data * __flightmode_handler(void* data, char* keyStr, char* icon_path, char* ug_name, Evas_Object *genlist)
332 {
333         // NOT UG --> it's just UI drawing
334
335         setting_main_appdata *ad = (setting_main_appdata *)data;
336         int value, err;
337         setting_get_bool_slp_key (BOOL_SLP_SETTING_FLIGHT_MODE, &value, &err);
338
339         /* create flight_mode */
340         ad->data_flight = setting_create_Gendial_field_groupitem(genlist,
341                                                    &(ad->itc[GENDIAL_Type_1text_2icon]),
342                                                    NULL,
343                                                    setting_main_click_Gendial_list_flight_mode_cb,
344                                                    ad,
345                                                    SWALLOW_Type_1ICON_1RADIO,
346                                                    icon_path,
347                                                    NULL,
348                                                    value,
349                                                    keyStr,
350                                                    NULL,
351                                                    setting_main_click_list_flight_mode_cb);
352         __BACK_POINTER_SET(ad->data_flight);
353
354         return ad->data_flight;
355 }
356
357 static Setting_GenGroupItem_Data * __wifi_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
358 {
359         setting_main_appdata *ad = (setting_main_appdata *)data;
360
361         char* pa_wifi = get_pa_Wi_Fi_on_off_str();
362         ad->data_wifi = setting_create_Gendial_field_groupitem(genlist,
363                                                    &(ad->itc[GENDIAL_Type_1icon_2text]),
364                                                    NULL,
365                                                    setting_main_click_list_ex_ug_cb,
366                                                    ug_args,
367                                                    SWALLOW_Type_INVALID,
368                                                    icon_path,
369                                                    NULL,
370                                                    0,
371                                                    keyStr,
372                                                    pa_wifi,
373                                                    NULL);
374         __BACK_POINTER_SET(ad->data_wifi);
375         G_FREE(pa_wifi);
376
377         return ad->data_wifi;
378 }
379
380 static Setting_GenGroupItem_Data * __bluetooth_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
381 {
382         setting_main_appdata *ad = (setting_main_appdata *)data;
383
384         ad->data_bt = setting_create_Gendial_field_groupitem(genlist,
385                                                    &(ad->itc[GENDIAL_Type_1icon_2text]),
386                                                    NULL,
387                                                    setting_main_click_list_ex_ug_cb,
388                                                    ug_args,
389                                                    SWALLOW_Type_INVALID,
390                                                    icon_path,
391                                                    NULL,
392                                                    0,
393                                                    keyStr,
394                                                    get_BT_on_off_str
395                                                    (),
396                                                    NULL);
397         __BACK_POINTER_SET(ad->data_bt);
398
399         return ad->data_bt;
400 }
401
402 static Setting_GenGroupItem_Data * __mobileap_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
403 {
404         setting_main_appdata *ad = (setting_main_appdata *)data;
405
406         ad->data_mobileApp = setting_create_Gendial_field_groupitem(genlist,
407                                                    &(ad->itc[GENDIAL_Type_1icon_2text]),
408                                                    NULL,
409                                                    setting_main_click_list_ex_ug_cb,
410                                                    ug_args,
411                                                    SWALLOW_Type_INVALID,
412                                                    icon_path,
413                                                    NULL,
414                                                    0,
415                                                    keyStr,
416                                                    get_Mobile_AP_on_off_str
417                                                    (),
418                                                    NULL);
419         __BACK_POINTER_SET(ad->data_mobileApp);
420
421         return ad->data_mobileApp;
422 }
423
424 static Setting_GenGroupItem_Data * __allshare_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
425 {
426         setting_main_appdata *ad = (setting_main_appdata *)data;
427
428         Setting_GenGroupItem_Data * obj = setting_create_Gendial_field_groupitem(genlist,
429                                                                    &(ad->itc[GENDIAL_Type_1text_1icon_2]),
430                                                                    NULL,
431                                                                    setting_main_click_list_default_ug_cb,
432                                                                    ad,
433                                                                    SWALLOW_Type_INVALID,
434                                                                    icon_path,
435                                                                    NULL, 0,
436                                                                    keyStr,
437                                                                    NULL,
438                                                                    NULL);
439         return obj;
440 }
441
442 static Setting_GenGroupItem_Data * __network_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
443 {
444         setting_main_appdata *ad = (setting_main_appdata *)data;
445
446         Setting_GenGroupItem_Data * obj = setting_create_Gendial_field_groupitem(genlist,
447                                                                        &(ad->itc[GENDIAL_Type_1text_1icon_2]),
448                                                                        NULL,
449                                                                        setting_main_click_list_network_ug_cb,
450                                                                        ad,
451                                                                        SWALLOW_Type_INVALID,
452                                                                        icon_path,
453                                                                        NULL, 0,
454                                                                        keyStr,
455                                                                        NULL,
456                                                                        NULL);
457
458         return obj;
459 }
460
461 static Setting_GenGroupItem_Data * __nfc_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
462 {
463         setting_main_appdata *ad = (setting_main_appdata *)data;
464
465         ad->data_nfc = setting_create_Gendial_field_groupitem(genlist,
466                                                    &(ad->itc[GENDIAL_Type_1icon_2text]),
467                                                    NULL,
468                                                    setting_main_click_list_ex_ug_cb,
469                                                    ug_args,
470                                                    SWALLOW_Type_INVALID,
471                                                    icon_path,
472                                                    NULL,
473                                                    0,
474                                                    keyStr,
475                                                    get_NFC_on_off_str(),
476                                                    NULL);
477         __BACK_POINTER_SET(ad->data_nfc);
478
479         setting_create_Gendial_field_def(genlist, &itc_multiline_text, NULL,
480                  ad, SWALLOW_Type_LAYOUT_SPECIALIZTION,
481                  NULL, NULL, 0, SETTING_NFC_DESC, NULL, NULL);
482
483         return ad->data_nfc;
484 }
485
486 static Setting_GenGroupItem_Data * __default_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
487 {
488         setting_main_appdata *ad = (setting_main_appdata *)data;
489         Setting_GenGroupItem_Data * obj = setting_create_Gendial_field_groupitem(genlist,
490                                                            &(ad->itc[GENDIAL_Type_1text_1icon_2]),
491                                                            NULL,
492                                                            setting_main_click_list_ex_ug_cb,
493                                                            ug_args,
494                                                            SWALLOW_Type_INVALID,
495                                                            icon_path,
496                                                            NULL, 0,
497                                                            keyStr,
498                                                            NULL,
499                                                            NULL);
500
501         if (!safeStrCmp(KeyStr_WiFiDirect, keyStr)) {
502                 setting_create_Gendial_field_def(genlist, &itc_multiline_text, NULL,
503                          ad, SWALLOW_Type_LAYOUT_SPECIALIZTION,
504                          NULL, NULL, 0, SETTING_WIFI_DIRECT_DESC, NULL, NULL);
505         } else if (!safeStrCmp(KeyStr_KeisOverWifi, keyStr)) {
506                 setting_create_Gendial_field_def(genlist, &itc_multiline_text, NULL,
507                          ad, SWALLOW_Type_LAYOUT_SPECIALIZTION,
508                          NULL, NULL, 0, SETTING_KIES_VIA_WIFI_DESC, NULL, NULL);
509         } else {
510                 /* do nothing */
511         }
512
513         return obj;
514 }
515
516 typedef struct mainlist_entry mainlist_entry;
517
518 struct mainlist_entry {
519         char* title;
520         Setting_GenGroupItem_Data* (*ui_handler)(void* data, char* title, char* iconpath, char* ugname, Evas_Object *genlist);
521 };
522
523
524 enum {
525         MAINLIST_ENTRY_FLIGHT_MODE = 0,
526         MAINLIST_ENTRY_WIFI,
527         MAINLIST_ENTRY_BT,
528         MAINLIST_ENTRY_MOBILEAP,
529         MAINLIST_ENTRY_ALLSHARE,
530         MAINLIST_ENTRY_NETWORK,
531         MAINLIST_ENTRY_NFC,
532         MAINLIST_ENTRY_DEFAULT,
533         MAINLIST_ENTRY_MAX,
534 };
535
536 static mainlist_entry mainlist_table[] = {
537                 {KeyStr_FlightMode,     __flightmode_handler},                  // 0 --> NOT UG
538                 {KeyStr_WiFi,                   __wifi_handler},                                // 1 --> UG
539                 {KeyStr_Bluetooth,              __bluetooth_handler},                   // 1 --> UG
540                 {KeyStr_MobileAP,               __mobileap_handler},                    // 1 --> UG
541                 {KeyStr_AllShare,               __allshare_handler},                    // NOT UG
542                 {KeyStr_Network,                __network_handler},                             // 1 --> UG
543                 {KeyStr_NFC,                    __nfc_handler},                                 // 1 --> UG
544                 {"Default",                     __default_handler},                             // 1 --> UG
545
546                 //--------------------------------------------------------------
547                 {NULL, NULL},
548         };
549
550
551 // Flight Mode  - not UG
552 // All share    - not UG
553 // WiFi                 - added toggle
554 // Bluetooth
555 // Mobile AP
556 // Network
557 // NFC
558 // Other UGs
559 void __load_connectivity_menu_list(void *data, Cfg_Item_Position inputPos, Evas_Object *genlist)
560 {
561         SETTING_TRACE_BEGIN;
562         setting_main_appdata *ad = data;
563         //group title, only display in setting main view
564         if (SETTING_VIEW_MAIN == ad->view_load) {
565                 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
566                                                      &(ad->itc[GENDIAL_Type_group_item]),
567                                                      NULL,
568                                                      ELM_GENLIST_ITEM_NONE,
569                                                      KeyStr_Connectivity, NULL);
570         }
571
572         int idx_second_menu = 0;
573         
574         char *keyStr = NULL;
575         char *icon_path = NULL;
576         char *ug_args = NULL;
577         Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
578         int i, j;
579
580         bool is_emulator = isEmulBin();
581
582         for (i = 0; i < setting_cfg_get_category_length(); i++) {
583                 if (safeStrCmp
584                     (setting_cfg_get_category_name(i), KeyStr_Connectivity))
585                         continue;
586
587                 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
588                         keyStr = setting_cfg_get_keyname_idx(i, j);
589                         tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
590                         ug_args = setting_cfg_get_ug_args_idx(i, j);
591                         icon_path = setting_cfg_get_icon_path_idx(i, j);
592                         /* SETTING_TRACE_DEBUG("Got an item[keyStr:%s, ug_args:%s, pos:%d]", */
593                         /*                     keyStr, ug_args, tmpPos); */
594
595                         if (is_emulator) {
596                                 if (!safeStrCmp(KeyStr_FlightMode, keyStr)) {
597                                         continue; /* hide Flight Mode in Emulator*/
598                                 } else if (!safeStrCmp(KeyStr_WiFi, keyStr)) {
599                                         continue; /* hide WIFI in Emulator*/
600                                 } else if (!safeStrCmp(KeyStr_MobileAP, keyStr)) {
601                                         continue; /* hide Tethering in Emulator*/
602                                 } else if (!safeStrCmp(KeyStr_NFC, keyStr)) {
603                                         continue; /* hide NFC in Emulator*/
604                                 } else if (!safeStrCmp(KeyStr_WiFiDirect, keyStr)) {
605                                         continue; /* hide WiFiDirect in Emulator*/
606                                 } else if (!safeStrCmp(KeyStr_AllShareCast, keyStr)) {
607                                         continue; /* hide AllShareCast in Emulator*/
608                                 } else if (!safeStrCmp(KeyStr_NearbyDevices, keyStr)) {
609                                         continue; /* hide NearbyDevices in Emulator*/
610                                 } else if (!safeStrCmp(KeyStr_KeisOverWifi, keyStr)) {
611                                         continue; /* hide KeisOverWifi in Emulator*/
612                                 } else if (!safeStrCmp(KeyStr_Synchronise, keyStr)) {
613                                         continue; /* hide Synchronise in Emulator*/
614                                 } else if (!safeStrCmp(KeyStr_Network, keyStr)) {
615                                         continue; /* hide Network in Emulator*/
616                                 }else {
617                                         /* do nothing */
618                                 }
619                         }
620
621                         if (idx_second_menu < MAX_MORE_MENU_NUM
622                             && Cfg_Item_Pos_Level1 == tmpPos
623                             && SETTING_VIEW_MAIN == ad->view_load
624                             && MAIN_PROFILE_PREFERRED == ad->profile_type) {
625
626                                 ad->more_connective_menus[idx_second_menu++] = keyStr;
627                         }
628
629                         if (Cfg_Item_Pos_Level_All == inputPos) {
630                         } else if (inputPos != tmpPos) {        /* not in the inputPos level */
631                                 continue;
632                         }
633
634                         if (!safeStrCmp(KeyStr_FlightMode, keyStr)) {   /* load special radio */
635                                 // ug == NULL
636                                 mainlist_table[MAINLIST_ENTRY_FLIGHT_MODE].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
637
638                         } else if (!safeStrCmp(KeyStr_AllShare, keyStr)) {      /* NOT UG */
639
640                                 mainlist_table[MAINLIST_ENTRY_ALLSHARE].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
641
642                         } else if (!safeStrCmp(KeyStr_WiFi, keyStr) && is_ug_installed_by_ug_args(ug_args)) {   /* load special icon */
643
644                                 mainlist_table[MAINLIST_ENTRY_WIFI].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
645
646                         } else if (!safeStrCmp(KeyStr_Bluetooth, keyStr) && is_ug_installed_by_ug_args(ug_args)) {      /* load special icon */
647
648                                 mainlist_table[MAINLIST_ENTRY_BT].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
649
650                         } else if (!safeStrCmp(KeyStr_MobileAP, keyStr) && is_ug_installed_by_ug_args(ug_args)) {       /* load special icon */
651
652                                 mainlist_table[MAINLIST_ENTRY_MOBILEAP].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
653
654                         } else if (!safeStrCmp(KeyStr_Network, keyStr) && is_ug_installed_by_ug_args(ug_args)) {        /* load special UG */
655
656                                 mainlist_table[MAINLIST_ENTRY_NETWORK].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
657
658                         } else if (!safeStrCmp(KeyStr_NFC, keyStr) && is_ug_installed_by_ug_args(ug_args)) {    /* load special icon */
659                                 int nfc_value = FALSE; //default
660                                 vconf_get_bool(VCONFKEY_NFC_FEATURE, &nfc_value);
661                                 if (VCONFKEY_NFC_FEATURE_ON == nfc_value)
662                                 {
663                                         mainlist_table[MAINLIST_ENTRY_NFC].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
664                                 }
665                         } else {        /* load other UGs */
666                                 if (is_ug_installed_by_ug_args(ug_args))
667                                 {
668                                         mainlist_table[MAINLIST_ENTRY_DEFAULT].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
669                                 }
670                         }
671                 }
672         }
673
674         //end group , only display in setting main view
675 #if SUPPORT_MORE_ITEM_FUNCTION
676                 if (SETTING_VIEW_MAIN == ad->view_load && MAIN_PROFILE_PREFERRED == ad->profile_type)
677                 {
678                         char sub_text[MAX_COMMON_BUFFER_LEN] = {0, };
679                         int idx = 0;
680                         while (idx < MAX_MORE_MENU_NUM && ad->more_connective_menus[idx])
681                         {
682                                 if (idx != 0)
683                                 {
684                                         safeStrNCat(sub_text, ", ", MAX_COMMON_BUFFER_LEN);
685                                 }
686                                 safeStrNCat(sub_text, _(ad->more_connective_menus[idx]), MAX_COMMON_BUFFER_LEN);
687                                 idx++;
688                         }
689
690                         ad->data_moreConnect =
691                                 setting_create_Gendial_field_groupitem(ad->main_genlist,
692                                                                        &(ad->itc[GENDIAL_Type_2text_3]),
693                                                                        NULL,
694                                                                        setting_main_click_list_more_cb,
695                                                                        ad,
696                                                                        SWALLOW_Type_INVALID,
697                                                                        NULL,
698                                                                        NULL,
699                                                                        0,
700                                                                        KeyStr_MoreConnect,
701                                                                        sub_text,
702                                                                        NULL);
703                         __BACK_POINTER_SET(ad->data_moreConnect);
704                 }
705 #endif
706         SETTING_TRACE_END;
707 }
708
709 void __load_connectivity_level0_list(void *data)
710 {
711         setting_main_appdata *ad = data;
712         __load_connectivity_menu_list(ad, Cfg_Item_Pos_Level0, ad->main_genlist);
713 }
714
715 void __load_connectivity_level_all_list(void *data)
716 {
717         SETTING_TRACE_BEGIN;
718         setting_main_appdata *ad = data;
719         __load_connectivity_menu_list(ad, Cfg_Item_Pos_Level_All, ad->main_genlist);
720 }
721
722 void __load_system_menu_list(void *data, Cfg_Item_Position inputPos, Evas_Object *genlist)
723 {
724         SETTING_TRACE_BEGIN;
725         SETTING_TRACE_DEBUG("pos :%d", inputPos);
726         setting_main_appdata *ad = data;
727         //group title, only display in setting main view
728         if (SETTING_VIEW_MAIN == ad->view_load) {
729                 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
730                                                      &(ad->itc[GENDIAL_Type_group_item]),
731                                                      NULL,
732                                                      ELM_GENLIST_ITEM_NONE,
733                                                      KeyStr_System, NULL);
734         }
735         int idx_second_menu = 0;
736
737         char *keyStr = NULL;
738         char *icon_path = NULL;
739         char *ug_args = NULL;
740
741         Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
742
743         int ncount = 0;
744         int i, j;
745
746         bool is_emulator = isEmulBin();
747
748         //SETTING_TRACE("setting_cfg_get_category_length() :: %d ", setting_cfg_get_category_length());
749         for (i = 0; i < setting_cfg_get_category_length(); i++) {
750                 if (safeStrCmp(setting_cfg_get_category_name(i), KeyStr_System))
751                         continue;
752
753                 //SETTING_TRACE(" setting_cfg_get_menu_length(%d) :: %d ",i, setting_cfg_get_menu_length(i) );
754                 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
755                         keyStr = setting_cfg_get_keyname_idx(i, j);
756                         /* sg_path = setting_cfg_get_ugpath_idx(i, j); */
757                         tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
758                         icon_path = setting_cfg_get_icon_path_idx(i, j);
759                         ug_args = setting_cfg_get_ug_args_idx(i, j);
760
761                         //SETTING_TRACE("KeyString :  %s , tmpPos : %d , inputPos : %d ", keyStr, tmpPos, inputPos );
762
763                         if (is_emulator) {
764                                 if (!safeStrCmp(KeyStr_EventsNotifications, keyStr)) {
765                                         continue; /* hide EventsNotifications in Emulator*/
766                                 } else if (!safeStrCmp(KeyStr_Security, keyStr)) {
767                                         continue; /* hide Security in Emulator*/
768                                 } else if (!safeStrCmp(KeyStr_Motions, keyStr)) {
769                                         continue; /* hide Motion in Emulator*/
770                                 } else if (!safeStrCmp(KeyStr_Accessibility, keyStr)) {
771                                         continue; /* hide Accessibility in Emulator*/
772                                 } else if (!safeStrCmp(KeyStr_VoiceInOut, keyStr)) {
773                                         continue; /* hide VoiceInOut in Emulator*/
774                                 } else if (!safeStrCmp(keystr_Drivingmode, keyStr)) {
775                                         continue; /* hide Drivingmode in Emulator*/
776                                 } else if (!safeStrCmp(KeyStr_License, keyStr)) {
777                                         continue; /* hide License in Emulator*/
778                                 } else if (!safeStrCmp(KeyStr_Memory, keyStr)) {
779                                         continue; /* hide Memory in Emulator*/
780                                 } else {
781                                         /* do nothing */
782                                 }
783                         }
784
785                         if (idx_second_menu < MAX_MORE_MENU_NUM
786                             && Cfg_Item_Pos_Level1 == tmpPos
787                             && SETTING_VIEW_MAIN == ad->view_load
788                             && MAIN_PROFILE_PREFERRED == ad->profile_type) {
789                                 ad->more_system_menus[idx_second_menu++] = keyStr;
790                         }
791
792                         if (Cfg_Item_Pos_Level_All == inputPos) {
793                                 // do nothing
794                                 //SETTING_TRACE("Cfg_Item_Pos_Level_All == inputPos ---> no draw --- WHY?? ");
795                         } else if (inputPos != tmpPos) {        /* not in the inputPos level */
796                                 //SETTING_TRACE("inputPos == tmp Pos ---> no draw --- WHY?? ");
797                                 continue;
798                         }
799
800                         if (!safeStrCmp(KeyStr_Landscape, keyStr)) {    /* load special UG */
801                                 int value = 0;
802                                 vconf_get_bool
803                                     (VCONFKEY_SETAPPL_ROTATE_LOCK_BOOL, &value);
804                                 value = !value;
805
806                                 ad->data_rotationMode =
807                                     setting_create_Gendial_field_groupitem(genlist,
808                                                                            &(ad->itc[GENDIAL_Type_1text_2icon]),
809                                                                            NULL,
810                                                                            setting_main_sel_list_mouse_up_cb,
811                                                                            ad,
812                                                                            SWALLOW_Type_1ICON_1RADIO,
813                                                                            icon_path,
814                                                                            NULL,
815                                                                            value,
816                                                                            keyStr,
817                                                                            NULL,
818                                                                            setting_main_list_mouse_up_cb);
819                                 __BACK_POINTER_SET(ad->data_rotationMode);
820                         }
821                         else if (!safeStrCmp(KeyStr_Brightness, keyStr)) {
822
823                                 char* pa_bright = get_brightness_mode_str();
824                                 ad->data_bright=
825                                     setting_create_Gendial_field_groupitem(genlist,
826                                                                            &(ad->itc[GENDIAL_Type_1icon_2text]),
827                                                                            NULL,
828                                                                            setting_main_click_list_ex_ug_cb,
829                                                                            ug_args,
830                                                                            SWALLOW_Type_INVALID,
831                                                                            icon_path,
832                                                                            NULL,
833                                                                            0,
834                                                                            keyStr,
835                                                                            pa_bright,
836                                                                            NULL);
837                                 __BACK_POINTER_SET(ad->data_bright);
838                                 ncount++;
839                         }
840                         else {  /* load other UGs */
841
842                                 if (is_ug_installed_by_ug_args(ug_args))
843                                 {
844                                         setting_create_Gendial_field_groupitem(genlist,
845                                                                                &(ad->itc[GENDIAL_Type_1text_1icon_2]),
846                                                                                NULL,
847                                                                                setting_main_click_list_ex_ug_cb,
848                                                                                ug_args,
849                                                                                SWALLOW_Type_INVALID,
850                                                                                icon_path,
851                                                                                NULL, 0,
852                                                                                keyStr,
853                                                                                NULL,
854                                                                                NULL);
855                                         ncount++;
856                                 }
857                         }
858                 }
859         }
860         //end group, only display in setting main view
861 #if SUPPORT_MORE_ITEM_FUNCTION
862                 if (SETTING_VIEW_MAIN == ad->view_load && MAIN_PROFILE_PREFERRED == ad->profile_type)
863                 {
864                         char sub_text[MAX_COMMON_BUFFER_LEN] = {0, };
865                         int idx = 0;
866                         while (idx < MAX_MORE_MENU_NUM && ad->more_system_menus[idx])
867                         {
868                                 if (idx != 0)
869                                 {
870                                         safeStrNCat(sub_text, ", ", MAX_COMMON_BUFFER_LEN);
871                                 }
872                                 safeStrNCat(sub_text, _(ad->more_system_menus[idx]), MAX_COMMON_BUFFER_LEN);
873                                 idx++;
874                         }
875                         
876                         ad->data_moreSystem =
877                                 setting_create_Gendial_field_groupitem(ad->main_genlist,
878                                                                        &(ad->itc[GENDIAL_Type_2text_3]),
879                                                                        NULL,
880                                                                        setting_main_click_list_more_cb,
881                                                                        ad,
882                                                                        SWALLOW_Type_INVALID,
883                                                                        NULL,
884                                                                        NULL,
885                                                                        0,
886                                                                        KeyStr_MoreSystem,
887                                                                        sub_text,
888                                                                        NULL);
889                         __BACK_POINTER_SET(ad->data_moreSystem);
890                 }
891 #endif
892 }
893
894 static void __load_system_level0_list(void *data)
895 {
896         setting_main_appdata *ad = data;
897         __load_system_menu_list(ad, Cfg_Item_Pos_Level0, ad->main_genlist);
898 }
899
900 static void __load_system_level_all_list(void *data)
901 {
902         SETTING_TRACE_BEGIN;
903         setting_main_appdata *ad = data;
904         __load_system_menu_list(ad, Cfg_Item_Pos_Level_All, ad->main_genlist);
905 }
906
907 static void __load_applications_menu_list(void *data,
908                                           Cfg_Item_Position inputPos)
909 {
910         SETTING_TRACE_BEGIN;
911         SETTING_TRACE_DEBUG("pos :%d", inputPos);
912         setting_main_appdata *ad = data;
913
914         bool is_emulator = isEmulBin();
915
916         //group title
917         setting_create_Gendial_field_group_titleItem(ad->main_genlist,
918                                                      &(ad->itc[GENDIAL_Type_group_item]),
919                                                      NULL,
920                                                      ELM_GENLIST_ITEM_NONE,
921                                                      KeyStr_Applications, NULL);
922         char *keyStr = NULL;
923         char *icon_path = NULL;
924         char *ug_args = NULL;
925         Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
926         int i, j;
927
928         for (i = 0; i < setting_cfg_get_category_length(); i++) {
929                 if (safeStrCmp
930                     (setting_cfg_get_category_name(i), KeyStr_Applications))
931                         continue;
932
933                 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
934                         keyStr = setting_cfg_get_keyname_idx(i, j);
935                         icon_path = setting_cfg_get_icon_path_idx(i, j);
936                         ug_args = setting_cfg_get_ug_args_idx(i, j);
937                         tmpPos =
938                             (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
939
940                         if (Cfg_Item_Pos_Level_All == inputPos) {
941                         } else if (inputPos != tmpPos) {        /* not in the inputPos level */
942                                 continue;
943                         }
944
945                         if (is_emulator) {
946                                  /* hide all except Email */
947                                 if (safeStrCmp(KeyStr_Email, keyStr)) {
948                                         continue;
949                                 } else {
950                                         /* do nothing */
951                                 }
952                         }
953
954                         setting_create_Gendial_field_groupitem(ad->main_genlist,
955                                                                &(ad->itc[GENDIAL_Type_1text_1icon_2]),
956                                                                NULL,
957                                                                setting_main_click_list_ex_ug_cb,
958                                                                ug_args,
959                                                                SWALLOW_Type_INVALID,
960                                                                icon_path, NULL,
961                                                                0, keyStr, NULL,
962                                                                NULL);
963
964                 }
965         }
966
967         SETTING_TRACE_END;
968 }
969
970 static void __load_applications_level0_list(void *data)
971 {
972         setting_main_appdata *ad = data;
973         __load_applications_menu_list(ad, Cfg_Item_Pos_Level0);
974 }
975
976 static void __load_applications_level_all_list(void *data)
977 {
978         SETTING_TRACE_BEGIN;
979         setting_main_appdata *ad = data;
980         __load_applications_menu_list(ad, Cfg_Item_Pos_Level_All);
981 }
982
983 static int __get_downloaded_apps_num(Cfg_Item_Position inputPos)
984 {
985         SETTING_TRACE_BEGIN;
986         SETTING_TRACE_DEBUG("pos :%d", inputPos);
987         int downloaded_apps_num = 0;
988         Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
989         int i, j;
990         for (i = 0; i < setting_cfg_get_category_length(); i++) {
991                 if (safeStrCmp
992                     (setting_cfg_get_category_name(i), KeyStr_DownloadedAPPs))
993                         continue;
994
995                 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
996                         tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
997                         if (Cfg_Item_Pos_Level_All == inputPos) {
998                         } else if (inputPos != tmpPos) {        /* not in the inputPos level */
999                                 continue;
1000                         }
1001
1002                         downloaded_apps_num++;
1003                 }
1004         }
1005
1006 #ifdef PLUGIN
1007         //3rd cfg
1008         DIR *dp = opendir (PLUGIN_CFG_DIR);
1009         if (dp != NULL)
1010         {
1011                 struct dirent *ep;
1012                 while (ep = readdir (dp))
1013                 {
1014                                 if (0 == safeStrCmp(".", ep->d_name)
1015                                     || 0 == safeStrCmp("..", ep->d_name))
1016                                 {
1017                                         continue;
1018                                 }
1019                                 downloaded_apps_num++;
1020                 }
1021                 (void) closedir (dp);
1022         }
1023 #endif
1024         SETTING_TRACE("Exit %s with return[%d]",__FUNCTION__, downloaded_apps_num);
1025         return downloaded_apps_num;
1026 }
1027
1028 static void __load_downloaded_apps_menu_list(void *data,
1029                                              Cfg_Item_Position inputPos)
1030 {
1031         SETTING_TRACE_BEGIN;
1032         SETTING_TRACE_DEBUG("pos :%d", inputPos);
1033         setting_main_appdata *ad = data;
1034
1035         // if the number of download apps is zero, display a bottom seperator
1036         if (0 == __get_downloaded_apps_num(inputPos)) {
1037                 Elm_Object_Item *item = NULL;
1038                 item = elm_genlist_item_append(ad->main_genlist, &itc_bottom_seperator, NULL, NULL,
1039                                         ELM_GENLIST_ITEM_NONE, NULL, NULL);
1040                 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1041                 return;
1042         }
1043
1044         //group title
1045         setting_create_Gendial_field_group_titleItem(ad->main_genlist,
1046                                                      &(ad->itc[GENDIAL_Type_group_item]),
1047                                                      NULL,
1048                                                      ELM_GENLIST_ITEM_NONE,
1049                                                      KeyStr_DownloadedAPPs,
1050                                                      NULL);
1051         char *keyStr = NULL;
1052         char *icon_path = NULL;
1053         char *ug_args = NULL;
1054
1055         Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
1056         int i, j;
1057         for (i = 0; i < setting_cfg_get_category_length(); i++) {
1058                 if (safeStrCmp
1059                     (setting_cfg_get_category_name(i), KeyStr_DownloadedAPPs))
1060                         continue;
1061
1062                 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
1063                         keyStr = setting_cfg_get_keyname_idx(i, j);
1064                         tmpPos =
1065                             (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
1066                         icon_path = setting_cfg_get_icon_path_idx(i, j);
1067                         ug_args = setting_cfg_get_ug_args_idx(i, j);
1068
1069                         if (Cfg_Item_Pos_Level_All == inputPos) {
1070                         } else if (inputPos != tmpPos) {        /* not in the inputPos level */
1071                                 continue;
1072                         }
1073
1074                         setting_create_Gendial_field_groupitem(ad->main_genlist,
1075                                                                &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1076                                                                NULL,
1077                                                                setting_main_click_list_ex_ug_cb,
1078                                                                ug_args,
1079                                                                SWALLOW_Type_INVALID,
1080                                                                icon_path, NULL,
1081                                                                0, keyStr, NULL,
1082                                                                NULL);
1083
1084                 }
1085         }
1086
1087         #ifdef PLUGIN
1088         //3rd cfg
1089         DIR *dp = opendir (PLUGIN_CFG_DIR);
1090         if (dp != NULL)
1091         {
1092                 struct dirent *ep;
1093
1094                 char fullpath[256];
1095
1096                 while (ep = readdir (dp))
1097                 {
1098                                 memset(fullpath, 0x00, 256);
1099                                 strncpy(fullpath, PLUGIN_CFG_DIR, 256);
1100                                 strncat(fullpath, "/", 256);
1101                                 strncat(fullpath, ep->d_name, 256);
1102
1103                                 //SETTING_TRACE("ep->d_name:%s", ep->d_name);
1104                                 if (0 == safeStrCmp(".", ep->d_name)
1105                                     || 0 == safeStrCmp("..", ep->d_name))
1106                                 {
1107                                         continue;
1108                                 }
1109                                 SETTING_TRACE("fullpath: %s", fullpath);
1110                                 char *p = strrchr(ep->d_name, '.');
1111                                 *p = '\0';
1112                                 setting_create_Gendial_field_groupitem(ad->main_genlist,
1113                                                                        &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1114                                                                        NULL,
1115                                                                        setting_main_click_list_plugin_cb,
1116                                                                        strdup(fullpath),
1117                                                                        SWALLOW_Type_INVALID,
1118                                                                        IMG_DefaultIcon, NULL,
1119                                                                        0, ep->d_name, NULL,
1120                                                                        NULL);
1121
1122                 }
1123                 (void) closedir (dp);
1124         }
1125         #endif
1126         SETTING_TRACE_END;
1127 }
1128
1129 static void __load_downloaded_apps_level0_list(void *data)
1130 {
1131         setting_main_appdata *ad = data;
1132         __load_downloaded_apps_menu_list(ad, Cfg_Item_Pos_Level0);
1133 }
1134
1135 static void __load_downloaded_apps_level_all_list(void *data)
1136 {
1137         SETTING_TRACE_BEGIN;
1138         setting_main_appdata *ad = data;
1139         __load_downloaded_apps_menu_list(ad, Cfg_Item_Pos_Level_All);
1140 }
1141
1142 static void __check_all_view_clear(void *data)
1143 {
1144         SETTING_TRACE_BEGIN;
1145         ret_if(!data);
1146         setting_main_appdata *ad = data;
1147         if (ad->item_check_list) {
1148                 eina_list_free(ad->item_check_list);
1149                 ad->item_check_list = NULL;
1150         }
1151
1152         ad->gl_sel_all = NULL;
1153         ad->edit_preferred_genlist  = NULL;
1154         ad->controllbar_all_check = NULL;
1155         ad->check_all_item =NULL;
1156 }
1157
1158 static void __prefered_buttons_cb(void *data, Evas_Object *obj, void *event_info)
1159 {
1160         SETTING_TRACE_BEGIN;
1161         ret_if(!data);
1162         setting_main_appdata *ad = (setting_main_appdata *) data;
1163         const char *key = NULL;
1164
1165         #if SUPPORT_BOTTOM_BTNS
1166         ret_if(!event_info);
1167         Elm_Object_Item *it = event_info;
1168         key = elm_object_item_text_get(it);
1169         #else
1170         key = elm_object_text_get(obj);
1171         #endif
1172         setting_retm_if(data == NULL
1173                         || key == NULL, "data == NULL || key == NULL");
1174
1175         SETTING_TRACE_DEBUG("press button: %s", key);
1176
1177         // "Done"
1178         if (!safeStrCmp(key, dgettext("sys_string", "IDS_COM_SK_DONE"))) {
1179
1180                 if (ad->profile_type == MAIN_PROFILE_ALL) {
1181                         SETTING_TRACE_DEBUG("Cancel to hide current view.");
1182                         setting_try_save_check_list(ad);        /* need to save too */
1183                         __check_all_view_clear(ad);
1184                         elm_naviframe_item_pop(ad->navibar_main);       // pop(preferred) --> main
1185                         return;
1186                 }
1187
1188                 // MAIN_PROFILE_PREFERRED and Etc
1189                 // redraw setting-main
1190                 setting_try_save_check_list(ad);
1191                 elm_naviframe_item_pop(ad->navibar_main);  // pop (preferred) -> main
1192
1193                 //After the view is popuped, all the object handlers should be reset NULL.
1194                 __check_all_view_clear(ad);
1195                 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1196                 ad->load_fns[Func_Type_System] = __load_system_level0_list;
1197                 ad->load_fns[Func_Type_Apps] = __load_applications_level0_list;
1198                 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level0_list;
1199                 int ret = setting_main_refresh(ad);
1200                 ret_if(ret != SETTING_RETURN_SUCCESS);
1201                 return;
1202         }
1203
1204         // "Cancel"
1205         if (!safeStrCmp(key, setting_gettext("IDS_COM_SK_CANCEL"))
1206             || !safeStrCmp(key, dgettext("sys_string", "IDS_COM_BODY_BACK"))) {
1207                 SETTING_TRACE_DEBUG("Cancel to hide current view.");
1208                 elm_naviframe_item_pop(ad->navibar_main);
1209                 //After the view is popuped, all the object handlers should be reset NULL.
1210                 __check_all_view_clear(ad);
1211                 return;
1212         }
1213 }
1214
1215 static void __setting_contorlbar_clicked(void *data, Evas_Object *obj,
1216                                          void *event_info)
1217 {
1218         SETTING_TRACE_BEGIN;
1219         ret_if(data == NULL || obj == NULL);
1220         setting_main_appdata *ad = (setting_main_appdata *) data;
1221         int index = -1;
1222         /* elm_segment_control_selected_segment_get(obj, &index); */
1223         Elm_Object_Item *sel_item = elm_segment_control_item_selected_get(obj);
1224         ret_if(sel_item == NULL);
1225         index = elm_segment_control_item_index_get(sel_item);
1226
1227         switch (index) {
1228         case 0:
1229                 {
1230                         SETTING_TRACE("Preferred");
1231                         ad->profile_type = MAIN_PROFILE_PREFERRED;
1232                         ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1233                         ad->load_fns[Func_Type_System] = __load_system_level0_list;
1234                         ad->load_fns[Func_Type_Apps] = __load_applications_level0_list;
1235                         ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level0_list;
1236
1237                         break;
1238                 }
1239         case 1:
1240                 {
1241                         SETTING_TRACE("All");
1242                         ad->profile_type = MAIN_PROFILE_ALL;
1243                         ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level_all_list;
1244                         ad->load_fns[Func_Type_System] = __load_system_level_all_list;
1245                         ad->load_fns[Func_Type_Apps] = __load_applications_level_all_list;
1246                         ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level_all_list;
1247                         break;
1248                 }
1249         default:
1250                 {
1251                         return;
1252                 }
1253         }
1254         int ret = setting_main_refresh(ad);
1255         ret_if(ret != SETTING_RETURN_SUCCESS);
1256 }
1257
1258 static void __btnback_clicked_cb(void *data, Evas_Object *obj, void *event_info)
1259 {
1260         SETTING_TRACE_BEGIN;
1261         ret_if(!data);
1262         setting_main_appdata *ad = (setting_main_appdata *) data;
1263         elm_win_lower(ad->win_main);
1264 }
1265
1266 static void __allFrequent_btn_cb(void *data, Evas_Object *obj, void *event_info)
1267 {
1268         SETTING_TRACE_BEGIN;
1269         ret_if(!data || !obj);
1270         setting_main_appdata *ad = (setting_main_appdata *) data;
1271         Elm_Object_Item *item = elm_toolbar_first_item_get(obj);
1272         ret_if(!item);
1273
1274         if (MAIN_PROFILE_ALL == ad->profile_type)
1275         {
1276                 SETTING_TRACE("Change to Preferred view");
1277                 elm_object_item_text_set(item, _(ALL_STR));
1278                 ad->profile_type = MAIN_PROFILE_PREFERRED;
1279                 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1280                 ad->load_fns[Func_Type_System] = __load_system_level0_list;
1281                 ad->load_fns[Func_Type_Apps] = __load_applications_level0_list;
1282                 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level0_list;
1283                 setting_main_refresh(ad);
1284         }
1285         else if (MAIN_PROFILE_PREFERRED == ad->profile_type)
1286         {
1287                 SETTING_TRACE("Change to ALL view");
1288                 elm_object_item_text_set(item, _(PREFERRED_STR));
1289                 ad->profile_type = MAIN_PROFILE_ALL;
1290                 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level_all_list;
1291                 ad->load_fns[Func_Type_System] = __load_system_level_all_list;
1292                 ad->load_fns[Func_Type_Apps] = __load_applications_level_all_list;
1293                 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level_all_list;
1294                 setting_main_refresh(ad);
1295         }
1296         else
1297         {
1298                 return;
1299         }
1300 }
1301
1302 /**
1303  * creat a layout
1304  */
1305 Evas_Object *__create_main_view_widgets(Evas_Object *win_main, void *cb,
1306                                         Evas_Object *content,
1307                                         char *title_text,
1308                                         bool isFoundPreferredItem,
1309                                         Evas_Object **navibar,
1310                                         Elm_Object_Item **edit_item,
1311                                         Elm_Object_Item **segment_all,
1312                                         Elm_Object_Item **segment_preferred)
1313 {
1314         SETTING_TRACE_BEGIN;
1315
1316         /*  add layout to win_main */
1317         Evas_Object *ly = elm_layout_add(win_main);
1318         setting_retvm_if(ly == NULL, FALSE, "layout == NULL");
1319         elm_layout_theme_set(ly, "layout", "application", "default");
1320         evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND,
1321                                          EVAS_HINT_EXPAND);
1322         elm_win_resize_object_add(win_main, ly);
1323         Evas_Object *bg = setting_create_bg(ly, win_main, "group_list");
1324         elm_object_part_content_set(ly, "elm.swallow.bg", bg);
1325         evas_object_show(ly);
1326
1327         /*  add navi_bar to the layout */
1328         Evas_Object *navi_bar = elm_naviframe_add(ly);
1329
1330         elm_object_part_content_set(ly, "elm.swallow.content", navi_bar);
1331         evas_object_show(navi_bar);
1332         *navibar = navi_bar;
1333
1334         // create 'back' button on navigaiton bar
1335         Evas_Object* btn_back = elm_button_add(navi_bar);
1336         evas_object_smart_callback_add(btn_back, "clicked", __btnback_clicked_cb, g_main_ad);
1337
1338         Evas_Object *controlbar = elm_toolbar_add(navi_bar);
1339         setting_retvm_if(controlbar == NULL, FALSE, "controlbar == NULL");
1340         elm_toolbar_shrink_mode_set(controlbar, ELM_TOOLBAR_SHRINK_EXPAND);
1341         //elm_object_style_set(controlbar, NAVI_CONTROLBAR_STYLE);
1342
1343         /*  add segment control */
1344         Evas_Object *segment = elm_segment_control_add(controlbar);
1345         setting_retvm_if(segment == NULL, FALSE, "segment == NULL");
1346
1347         Elm_Object_Item *seg_preferred = NULL, *seg_all = NULL;
1348         *segment_preferred = seg_preferred = elm_segment_control_item_add(segment, NULL, _(PREFERRED_STR));
1349         *segment_all = seg_all = elm_segment_control_item_add(segment, NULL, _(ALL_STR));
1350
1351         evas_object_show(segment);
1352         evas_object_smart_callback_add(segment, "changed",
1353                                        __setting_contorlbar_clicked, cb);
1354
1355         #if !SUPPORT_BOTTOM_BTNS
1356         Elm_Object_Item *item = NULL;
1357         Elm_Object_Item *navi_it = elm_naviframe_item_push(navi_bar, title_text, btn_back, NULL, content, NULL);
1358         elm_object_style_set(btn_back, NAVI_BACK_BUTTON_STYLE);
1359         /*  add 'Edit preffered' button to controlbar */
1360         Evas_Object *btn_pref = setting_create_button(controlbar, _(EDIT_PREFERRED_STR),
1361                               NAVI_DEF_BUTTON_STYLE,
1362                               setting_main_click_edit_preferred_cb,cb);
1363
1364         *edit_item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
1365         elm_object_item_part_content_set(*edit_item, "object", btn_pref);
1366         item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
1367         elm_object_item_part_content_set(item, "object", segment);
1368         elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
1369
1370         elm_object_item_part_content_set(navi_it, "optionheader", controlbar);
1371         #else
1372         Elm_Object_Item *navi_it = elm_naviframe_item_push(navi_bar, title_text, btn_back, NULL, content, "segment/instant");
1373         elm_object_style_set(btn_back, NAVI_BACK_BUTTON_STYLE);
1374
1375         elm_object_item_disabled_set(elm_toolbar_item_append(controlbar, NULL, "", NULL, NULL), EINA_TRUE);
1376         *edit_item = elm_toolbar_item_append(controlbar, NULL, _(EDIT_PREFERRED_STR), setting_main_click_edit_preferred_cb, cb);
1377
1378         elm_object_item_part_content_set(navi_it, "controlbar", controlbar);
1379         elm_object_item_part_content_set(navi_it, "segment", segment);
1380         #endif
1381
1382
1383         if (isFoundPreferredItem) {
1384                 elm_segment_control_item_selected_set(seg_preferred, EINA_TRUE);
1385         } else {
1386                 elm_segment_control_item_selected_set(seg_all, EINA_TRUE);
1387         }
1388         return ly;
1389 }
1390
1391 static bool __setting_create_main_view(void *data)
1392 {
1393         SETTING_TRACE_BEGIN;
1394         /* error check */
1395         setting_retvm_if(data == NULL, FALSE, "data == NULL");
1396         setting_main_appdata *ad = (setting_main_appdata *) data;
1397 #if SUPPORT_MORE_ITEM_FUNCTION
1398         ad->ly_main = setting_create_win_layout(ad->win_main, ad->win_main);
1399         ad->navibar_main = setting_create_navi_bar(ad->ly_main);
1400         /*  add controlbar */
1401         Evas_Object *controlbar = elm_toolbar_add(ad->navibar_main);
1402         setting_retvm_if(controlbar == NULL, FALSE, "controlbar == NULL");
1403         elm_toolbar_shrink_mode_set(controlbar, ELM_TOOLBAR_SHRINK_EXPAND);
1404
1405         ad->main_genlist = elm_genlist_add(ad->navibar_main);
1406         elm_object_style_set(ad->main_genlist, "dialogue");
1407         retvm_if(ad->main_genlist == NULL, FALSE,
1408                  "Cannot set scroller object as contento of layout");
1409         elm_genlist_clear(ad->main_genlist);    /* first to clear list */
1410
1411         setting_create_navi_bar_buttons(_("IDS_COM_BODY_SETTINGS"),
1412                                         _("IDS_COM_BODY_BACK"), "", _("IDS_ST_OPT_ALL"),
1413                                         __btnback_clicked_cb, NULL,
1414                                         __allFrequent_btn_cb, ad, ad->main_genlist,
1415                                         ad->navibar_main, controlbar);
1416         elm_object_item_disabled_set(elm_toolbar_last_item_get(controlbar), EINA_TRUE);
1417
1418         ad->controlbar = controlbar;
1419
1420         ad->profile_type = MAIN_PROFILE_PREFERRED;
1421         ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1422         ad->load_fns[Func_Type_System] = __load_system_level0_list;
1423         ad->load_fns[Func_Type_Apps] = __load_applications_level_all_list;
1424         ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level_all_list;
1425         setting_main_refresh(ad);
1426         return TRUE;
1427 #endif
1428
1429         ad->main_genlist = elm_genlist_add(ad->win_main);
1430         elm_object_style_set(ad->main_genlist, "dialogue");
1431         elm_genlist_clear(ad->main_genlist);    /* first to clear list */
1432         int i, j, pos;
1433         int isFoundPreferredItem = FALSE;
1434         for (i = 0; i < setting_cfg_get_category_length(); i++) {
1435                 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
1436                         pos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
1437                         if (Cfg_Item_Pos_Level0 == pos) {
1438                                 isFoundPreferredItem = TRUE;
1439                                 break;
1440                         }
1441                 }
1442                 if (isFoundPreferredItem) {
1443                         break;
1444                 }
1445         }
1446
1447         ad->ly_main = __create_main_view_widgets(ad->win_main, ad,
1448                                                  ad->main_genlist,
1449                                                  _("IDS_COM_BODY_SETTINGS"),
1450                                                  isFoundPreferredItem,
1451                                                  &ad->navibar_main,
1452                                                  &ad->edit_item,
1453                                                  &ad->segment_all,
1454                                                  &ad->segment_preferred);
1455         setting_retvm_if(ad->ly_main == NULL, FALSE, "ad->ly_main == NULL");
1456
1457         SETTING_TRACE_END;
1458         return TRUE;
1459 }
1460
1461 static bool __setting_create_prefered_view(void *data)
1462 {
1463         SETTING_TRACE_BEGIN;
1464         /* error check */
1465         setting_retvm_if(data == NULL, FALSE, "data == NULL");
1466         setting_main_appdata *ad = (setting_main_appdata *) data;
1467
1468         /* the genlist will be destroyed with its parent view, when using elm_naviframe_item_pop() to destroy the view. */
1469         ad->edit_preferred_genlist = elm_genlist_add(ad->win_main);
1470         elm_object_style_set(ad->edit_preferred_genlist, "dialogue");
1471         elm_genlist_clear(ad->edit_preferred_genlist);  /* first to clear list */
1472
1473         /*  [UI] edit preffered view */
1474         Evas_Object *sub_layout = elm_layout_add(ad->win_main);
1475         elm_object_style_set(sub_layout, "dialogue");
1476         elm_layout_file_set(sub_layout, SETTING_THEME_EDJ_NAME, "search_layout");
1477         evas_object_size_hint_weight_set(sub_layout, EVAS_HINT_EXPAND, 0.0);
1478         evas_object_show(sub_layout);
1479
1480         ad->gl_sel_all = elm_genlist_add(ad->win_main);
1481         elm_genlist_clear(ad->gl_sel_all);      /* first to clear list */
1482         elm_genlist_bounce_set(ad->gl_sel_all, 0, 0);
1483
1484         elm_object_part_content_set(sub_layout, "search_bar", ad->gl_sel_all);  /*  add 'Select all' */
1485         elm_object_part_content_set(sub_layout, "search_list", ad->edit_preferred_genlist);     /*  add Genlist */
1486
1487         /*  push, not create */
1488         setting_push_layout_navi_bar(_(EDIT_PREFERRED_STR),
1489                                      _("IDS_COM_SK_CANCEL"),
1490                                      _("IDS_COM_SK_DONE"), NULL,
1491                                      __prefered_buttons_cb, __prefered_buttons_cb, NULL, ad,
1492                                      sub_layout, ad->navibar_main,
1493                                      &(ad->controllbar_all_check));
1494         SETTING_TRACE_END;
1495         return TRUE;
1496 }
1497
1498 static void setting_main_tapi_event_cb(TapiHandle *handle, int result, void *data, void *user_data)
1499 {
1500         SETTING_TRACE_BEGIN;
1501         ret_if(!user_data);
1502         setting_main_appdata *ad = user_data;
1503         ad->b_fm_requesting = FALSE;
1504         SETTING_TRACE("result:%d", result);
1505
1506         int err = 0;
1507         switch (result) {
1508         case TAPI_POWER_FLIGHT_MODE_RESP_ON:
1509
1510                 setting_set_bool_slp_key(BOOL_SLP_SETTING_FLIGHT_MODE,
1511                                          SETTING_ON_OFF_BTN_ON, &err);
1512
1513                 //If Setting has validate operation (fm_waiting_op == FM_LEAVE) to process, process it.
1514                 //Otherwise, do nothing
1515                 if (FM_LEAVE == ad->fm_waiting_op)
1516                 {
1517                         //Send the latest operation
1518                         ad->fm_waiting_op = FM_INVALID;
1519                         err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
1520                         setting_retm_if(err != TAPI_API_SUCCESS,
1521                                         "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
1522
1523                         //sucessfully sent,
1524                         ad->b_fm_requesting = TRUE;
1525
1526                 }
1527                 break;
1528
1529         case TAPI_POWER_FLIGHT_MODE_RESP_OFF:
1530
1531                 setting_set_bool_slp_key(BOOL_SLP_SETTING_FLIGHT_MODE,
1532                                          SETTING_ON_OFF_BTN_OFF, &err);
1533
1534                 //If Setting has validate operation (here, fm_waiting_op == FM_ENTER) to process,process it.
1535                 //Otherwise, do nothing
1536                 if (FM_ENTER == ad->fm_waiting_op)
1537                 {
1538                         //Send the latest operation
1539                         ad->fm_waiting_op = FM_INVALID;
1540                         err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
1541                         setting_retm_if(err != TAPI_API_SUCCESS,
1542                                         "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
1543
1544                         //sucessfully sent,
1545                         ad->b_fm_requesting = TRUE;
1546                 }
1547
1548                 break;
1549
1550         case TAPI_POWER_FLIGHT_MODE_RESP_FAIL:
1551                 //Setting has a validate operation to process, Send the operation request
1552                 if (FM_ENTER == ad->fm_waiting_op)
1553                 {
1554                         ad->fm_waiting_op = FM_INVALID;
1555                         err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
1556
1557                         setting_retm_if(err != TAPI_API_SUCCESS,
1558                                         "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
1559                         ad->b_fm_requesting = TRUE;
1560                 }
1561                 else if (FM_LEAVE == ad->fm_waiting_op)
1562                 {
1563                         ad->fm_waiting_op = FM_INVALID;
1564                         err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
1565
1566                         setting_retm_if(err != TAPI_API_SUCCESS,
1567                                         "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
1568                         ad->b_fm_requesting = TRUE;
1569                 }
1570                 else //Current requset is the last one, Setting needs to notify user
1571                 {
1572                         setting_create_popup_without_btn(ad, ad->win_main,
1573                                              _("IDS_COM_POP_ERROR"),
1574                                              _("IDS_ST_POP_UNABLE_TO_TURN_ON_FLIGHT_MODE_VODA"),
1575                                              NULL, POPUP_INTERVAL,
1576                                              FALSE, FALSE);
1577
1578                         //It is need to rollback the status,
1579                         if (ad->data_flight) {
1580                                 ad->data_flight->chk_status = !ad->data_flight->chk_status;
1581                                 elm_check_state_set(ad->data_flight->eo_check, ad->data_flight->chk_status);
1582                         }
1583                         return;
1584                 }
1585
1586                 //sucessfully sent,
1587                 ad->b_fm_requesting = TRUE;
1588
1589                 break;
1590
1591         case TAPI_POWER_FLIGHT_MODE_RESP_MAX:
1592                 setting_create_popup_without_btn(ad, ad->win_main,
1593                                      _("IDS_COM_POP_ERROR"),
1594                                      _("IDS_COM_POP_UNEXPECTED_ERROR"),
1595                                      NULL, POPUP_INTERVAL, FALSE, FALSE);
1596
1597                 //It is need to rollback the status,
1598                 if (ad->data_flight) {
1599                         ad->data_flight->chk_status = !ad->data_flight->chk_status;
1600                         elm_check_state_set(ad->data_flight->eo_check, ad->data_flight->chk_status);
1601                 }
1602                 break;
1603         default:
1604                 /* do nothing */
1605                 break;
1606         }
1607         return;
1608 }
1609
1610 static int setting_main_refresh(void *data)
1611 {
1612         SETTING_TRACE_BEGIN;
1613         setting_main_appdata *ad = (setting_main_appdata *) data;
1614         elm_genlist_clear(ad->main_genlist);    /* first to clear list */
1615
1616         if (is_ug_installed_by_ug_args("rcs-config"))
1617         {
1618                 Elm_Object_Item *item = elm_genlist_item_append(ad->main_genlist, &itc_seperator, NULL, NULL,
1619                                             ELM_GENLIST_ITEM_NONE, NULL, NULL);
1620                 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1621                 setting_create_Gendial_field_groupitem(ad->main_genlist,
1622                                                        &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1623                                                        NULL,
1624                                                        setting_main_click_list_ex_ug_cb,
1625                                                        "rcs-config",
1626                                                        SWALLOW_Type_INVALID,
1627                                                        IMG_Joyn, NULL,
1628                                                        0, KeyStr_Joyn, NULL,
1629                                                        NULL);
1630         }
1631
1632         int i;
1633         for(i = Func_Type_Connectivity; i < Func_Type_MAX; i++)
1634                 (ad->load_fns[i]) (ad);
1635
1636         memset(ad->load_fns, 0, Func_Type_MAX *sizeof(menu_list_load_fn));
1637         SETTING_TRACE_END;
1638         return SETTING_RETURN_SUCCESS;
1639 }
1640
1641 static int setting_main_create(void *cb)
1642 {
1643         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1644
1645         setting_main_appdata *ad = (setting_main_appdata *) cb;
1646         g_main_ad = ad;
1647         //pass NULL to let TAPI access default module
1648         ad->handle = tel_init(NULL);
1649         if (!ad->handle) {
1650                 SETTING_TRACE_ERROR("*** [ERR] tel_init failed ***");
1651         } else {
1652                 SETTING_TRACE("tel_init ok[handle:%p]", ad->handle);
1653         }
1654         setting_create_Gendial_itc("dialogue/1text.1icon.2",
1655                                    &(ad->itc[GENDIAL_Type_1text_1icon_2]));
1656         setting_create_Gendial_itc("dialogue/1text.2icon",
1657                                    &(ad->itc[GENDIAL_Type_1text_2icon]));
1658         setting_create_Gendial_itc("dialogue/2text.1icon.3",
1659                                    &(ad->itc[GENDIAL_Type_1icon_2text]));
1660         setting_create_Gendial_itc("dialogue/1text.1icon.2",
1661                                    &(ad->itc[GENDIAL_Type_1text_2icon_2]));
1662         setting_create_Gendial_itc("dialogue/title",
1663                                    &(ad->itc[GENDIAL_Type_group_item]));
1664         setting_create_Gendial_itc("select_all",
1665                                    &(ad->itc[GENDIAL_Type_sel_all]));
1666
1667         setting_create_Gendial_itc("dialogue/2text.3", &(ad->itc[GENDIAL_Type_2text_3]));
1668
1669         ad->view_type = SETTING_VIEW_MAIN;
1670         __setting_create_main_view(ad);
1671         setting_view_main.is_create = 1;
1672
1673         return SETTING_RETURN_SUCCESS;
1674 }
1675
1676 static int setting_main_destroy(void *cb)
1677 {
1678         SETTING_TRACE_BEGIN;
1679         /* error check */
1680         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1681
1682         setting_main_appdata *ad = (setting_main_appdata *) cb;
1683         if (0 == setting_view_main.is_create)
1684         {
1685                 //already not exsit
1686                 return SETTING_RETURN_SUCCESS;
1687         }
1688
1689         if (ad->handle) {
1690                 int tapi_ret = tel_deinit(ad->handle);
1691                 if (tapi_ret != TAPI_API_SUCCESS) {
1692                         SETTING_TRACE_DEBUG("*** [ERR] tel_deinit. [%d] ***", tapi_ret);
1693                 } else {
1694                         SETTING_TRACE("***  tel_deinit OK ");
1695                 }
1696                 ad->handle = NULL;
1697         }
1698
1699         /* then destroy the UI object. */
1700         if (ad->item_check_list) {
1701                 eina_list_free(ad->item_check_list);
1702                 ad->item_check_list = NULL;
1703         } else {
1704                 SETTING_TRACE("*** ad->item_check_list is NULL - abnormal state ");
1705         }
1706
1707         if (ad->ly_main) {
1708                 evas_object_del(ad->ly_main);
1709                 ad->ly_main = NULL;
1710         }
1711
1712         if (ad->flight_popup) {
1713                 evas_object_del(ad->flight_popup);
1714                 ad->flight_popup = NULL;
1715         }
1716         setting_view_main.is_create = 0;
1717         SETTING_TRACE_END;
1718         return SETTING_RETURN_SUCCESS;
1719 }
1720
1721 static int setting_main_update(void *cb)
1722 {
1723         SETTING_TRACE_BEGIN;
1724
1725         /* error check */
1726         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1727
1728         setting_main_appdata *ad = (setting_main_appdata *) cb;
1729
1730         if (ad->ly_main != NULL) {
1731                 //evas_object_show(ad->ly_main);
1732         }
1733
1734         return SETTING_RETURN_SUCCESS;
1735 }
1736
1737 static int setting_main_cleanup(void *cb)
1738 {
1739         SETTING_TRACE_BEGIN;
1740         /* error check */
1741         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1742
1743         setting_main_appdata *ad = (setting_main_appdata *) cb;
1744
1745         if (ad->ly_main != NULL) {
1746                 //evas_object_hide(ad->ly_main);
1747         }
1748
1749         return SETTING_RETURN_SUCCESS;
1750 }
1751
1752 /* ***************************************************
1753  *
1754  *general func
1755  *
1756  ***************************************************/
1757
1758 void setting_update_gl_item(void* data)
1759 {
1760         SETTING_TRACE_BEGIN;
1761         setting_main_appdata *ad = data;
1762         retm_if(!data, "Invalid argument: data is NULL");
1763
1764         int nDx = 0;
1765         Eina_Bool bGlUpdate = EINA_FALSE;
1766         Setting_GenGroupItem_Data *item_to_update = NULL;
1767
1768         for(;nDx<GL_ITEM_MAX; nDx++) {
1769                 if(EINA_TRUE == ad->updateItems[nDx]) {
1770                         switch (nDx)
1771                         {
1772                         case GL_ITEM_WIFI:
1773                                 item_to_update = ad->data_wifi;
1774                                 bGlUpdate = EINA_TRUE;
1775                                 break;
1776                         case GL_ITEM_BT:
1777                                 item_to_update = ad->data_bt;
1778                                 bGlUpdate = EINA_TRUE;
1779                                 break;
1780                         case GL_ITEM_NFC:
1781                                 item_to_update = ad->data_nfc;
1782                                 bGlUpdate = EINA_TRUE;
1783                                 break;
1784                         case GL_ITEM_MAP:
1785                                 item_to_update = ad->data_mobileApp;
1786                                 bGlUpdate = EINA_TRUE;
1787                                 break;
1788                         case GL_ITEM_FLIGHT:
1789                                 item_to_update = ad->data_flight;
1790                                 bGlUpdate = EINA_FALSE;
1791                                 break;
1792
1793
1794
1795
1796                         default: // other case
1797                                 continue;
1798                         }
1799
1800                         if (item_to_update) {
1801                                 if(bGlUpdate) {
1802                                         SETTING_TRACE("gl update:%d", nDx);
1803                                         elm_object_item_data_set(item_to_update->item, item_to_update);
1804                                         elm_genlist_item_update(item_to_update->item);
1805                                 } else {
1806                                         SETTING_TRACE("chk update:%d", nDx);
1807                                         elm_check_state_set(item_to_update->eo_check, item_to_update->chk_status);
1808                                 }
1809                         }
1810
1811                         ad->updateItems[nDx] = EINA_FALSE;
1812                 } // if(EINA_TRUE == ad->updateItems[nDx])
1813
1814         }
1815
1816         SETTING_TRACE_END;
1817         return;
1818 }
1819
1820 void setting_main_destroy_ug_cb(ui_gadget_h ug, void *priv)
1821 {
1822         setting_main_appdata *ad = (setting_main_appdata *) priv;
1823         if (!ad)
1824                 return;         /*  do nothing if ad is NULL */
1825
1826         if (ug) {
1827                 ug_destroy(ug);
1828                 ad->ug = NULL;
1829         }
1830
1831         setting_main_click_list_item_reset_data(ad, NULL);
1832
1833         // update main genlist in unloading UG
1834         SETTING_TRACE("update main genlist in unloading UG");
1835         setting_update_gl_item(ad);
1836
1837         SETTING_TRACE_END;
1838 }
1839
1840 void setting_main_result_ug_cb(ui_gadget_h ug, service_h service,
1841                                       void *priv)
1842 {
1843         if (!priv)
1844                 return;
1845         SETTING_TRACE_BEGIN;
1846
1847         SETTING_TRACE_END;
1848 }
1849
1850 void setting_main_layout_ug_cb(ui_gadget_h ug, enum ug_mode mode,
1851                                       void *priv)
1852 {
1853         setting_main_appdata *ad = (setting_main_appdata *) priv;
1854         Evas_Object *base;
1855
1856         if (!priv)
1857                 return;
1858         SETTING_TRACE_BEGIN;
1859
1860         base = (Evas_Object *) ug_get_layout(ug);
1861         if (!base)
1862                 return;
1863
1864         switch (mode) {
1865         case UG_MODE_FULLVIEW:
1866                 evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,
1867                                                  EVAS_HINT_EXPAND);
1868                 elm_win_resize_object_add(ad->win_main, base);
1869                 evas_object_show(base);
1870                 break;
1871         default:
1872                 break;
1873         }
1874
1875         SETTING_TRACE_END;
1876 }
1877
1878 /* ***************************************************
1879  *
1880  *call back func
1881  *
1882  ***************************************************/
1883
1884 void setting_main_click_list_item_reset_data(void *data,
1885                                                     Evas_Object *obj)
1886 {
1887         SETTING_TRACE_BEGIN;
1888         setting_main_appdata *ad = (setting_main_appdata *) data;
1889
1890         ad->isInUGMode = FALSE;
1891
1892         SETTING_TRACE_END;
1893 }
1894
1895 void /* obj is the layout clicked */
1896 setting_main_click_list_item_ug_cb(void *data, Evas_Object *obj,
1897                                    char *ug_to_load, service_h svc,
1898                                    struct ug_cbs *cbs)
1899 {
1900         SETTING_TRACE_BEGIN;
1901         setting_main_appdata *ad = (setting_main_appdata *) data;
1902         if (!ug_to_load) {
1903                 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
1904                 return;
1905         }
1906 #if DISABLED_CODE
1907         char ug_file[PATH_MAX];
1908         if (snprintf
1909             (ug_file, PATH_MAX, "%s/libug-%s.so", SETTING_UG_PATH,
1910              ug_to_load) < 0)
1911                 return;
1912         SETTING_TRACE("ug_file:%s", ug_file);
1913         if (!ecore_file_exists(ug_file)) {
1914                 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
1915                 return;
1916         }
1917 #endif
1918         SETTING_TRACE("to create libug-%s.so", ug_to_load);
1919         ad->ug = ug_create(NULL, ug_to_load, UG_MODE_FULLVIEW, svc, cbs);
1920         if (ad->ug) {
1921                 ad->isInUGMode = TRUE;
1922         } else {
1923
1924                 evas_object_show(ad->ly_main);
1925
1926                 SETTING_TRACE_ERROR("errno:%d", errno);
1927                 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
1928         }
1929         SETTING_TRACE_END;
1930 }
1931
1932 void
1933 setting_main_click_list_default_ug_cb(void *data, Evas_Object *obj,
1934                                       void *event_info)
1935 {
1936         setting_main_appdata *ad = data;
1937         setting_create_simple_popup(ad, ad->win_main, NULL,
1938                                           NO_UG_FOUND_MSG);
1939 }
1940
1941 void
1942 setting_main_click_list_usb_cb(void *data, Evas_Object *obj, void *event_info)
1943 {
1944         SETTING_TRACE_BEGIN;
1945         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
1946
1947         int err;
1948         int value = -1;
1949         char *str_text = USB_NEED_OFF;
1950
1951         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
1952
1953         setting_get_int_slp_key(INT_SLP_SETTING_MOBILE_AP_STATUS, &value, &err);
1954         if (err != 0)
1955         {
1956                 SETTING_TRACE_ERROR("FAIL: VCONFKEY_MOBILE_HOTSPOT_MODE may not exist\n");
1957                 setting_main_click_list_ex_ug_cb(data, obj, item);
1958                 return;
1959         }
1960
1961         /* If mobile hotspot is on, going USB utilties is blocked by a popup*/
1962         if (value & VCONFKEY_MOBILE_HOTSPOT_MODE_USB)
1963         {
1964                 elm_genlist_item_selected_set(item, EINA_FALSE);
1965                 setting_create_simple_popup(g_main_ad, g_main_ad->win_main, NULL, (str_text));
1966         }
1967         else
1968         {
1969                 setting_main_click_list_ex_ug_cb(data, obj, item);
1970         }
1971
1972         SETTING_TRACE_END;
1973 }
1974
1975 void setting_main_click_list_more_cb(void *data, Evas_Object *obj, void *event_info)
1976 {
1977         SETTING_TRACE_BEGIN;
1978         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
1979         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
1980         elm_genlist_item_selected_set(item, EINA_FALSE);
1981         retm_if(data == NULL, "Invalid argument: data is NULL");
1982         setting_main_appdata *ad = data;
1983         Setting_GenGroupItem_Data *selected_item_data =
1984                     (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
1985         SETTING_TRACE("selected_item_data->keyStr:%s", selected_item_data->keyStr);
1986         if (0 == safeStrCmp(selected_item_data->keyStr, KeyStr_MoreConnect))
1987         {
1988                 ad->view_load = SETTING_VIEW_CONNECTIVE_MORE;
1989         }
1990         else if (0 == safeStrCmp(selected_item_data->keyStr, KeyStr_MoreSystem))
1991         {
1992                 ad->view_load = SETTING_VIEW_SYSTEM_MORE;
1993         }
1994         else
1995         {
1996                 return;
1997         }
1998         setting_view_change(&setting_view_main, &setting_view_more_menu, ad);
1999 }
2000
2001
2002 void
2003 setting_main_click_list_ex_ug_cb(void *data, Evas_Object *obj,
2004                                  void *event_info)
2005 {
2006         SETTING_TRACE_BEGIN;
2007         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2008         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2009
2010         elm_genlist_item_selected_set(item, EINA_FALSE);
2011
2012         if (g_main_ad->ug) {
2013                 SETTING_TRACE
2014                     ("[ad->ug non-NULL]skip genlist click event!!");
2015
2016                 SETTING_TRACE_END;
2017                 return;
2018         }
2019
2020         if (NULL == data) {     /* pass NULL to ug_args when create setting.cfg. */
2021                 setting_create_simple_popup(g_main_ad,
2022                                           g_main_ad->win_main,
2023                                           NULL, NO_UG_FOUND_MSG);
2024                 SETTING_TRACE_END;
2025                 return;
2026         }
2027
2028         setting_main_appdata *ad = g_main_ad;
2029
2030         /*  if UG is created by Setting app, setting_main_click_list_ex_ug_cb is diabled. */
2031         if (ad->isInUGMode) {
2032                 SETTING_TRACE("isInUGMode : TRUE - another UG is running now.");
2033                 ad->isInUGMode = FALSE;
2034                 SETTING_TRACE_END;
2035                 return;
2036         } else {
2037                 SETTING_TRACE
2038                     ("isInUGMode : FALSE - another UG is NOT running now.")
2039         }
2040
2041         Setting_GenGroupItem_Data *selected_item_data =
2042             (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2043         setting_main_click_list_item_reset_data(ad, obj);
2044         const char *item_name = _(selected_item_data->keyStr);
2045         ret_if(!item_name);
2046
2047         struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
2048         setting_retm_if(!cbs, "calloc failed");
2049         cbs->layout_cb = setting_main_layout_ug_cb;
2050         cbs->result_cb = setting_main_result_ug_cb;
2051         cbs->destroy_cb = setting_main_destroy_ug_cb;
2052         cbs->priv = (void *)ad;
2053
2054         char *path = get_ug_path_from_ug_args(data);
2055         service_h svc = get_bundle_from_ug_args(data);
2056         setting_main_click_list_item_ug_cb(ad, obj, path, svc, cbs);
2057         if (path)
2058                 FREE(path);
2059         if (cbs)
2060                 FREE(cbs);
2061         path = NULL;
2062         cbs = NULL;
2063         service_destroy(svc);
2064 }
2065 void
2066 setting_main_click_list_plugin_cb(void *data, Evas_Object *obj,
2067                                  void *event_info)
2068 {
2069         SETTING_TRACE_BEGIN;
2070         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2071         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2072         elm_genlist_item_selected_set(item, EINA_FALSE);
2073 #ifdef PLUGIN
2074         setting_plugin_load((const char *)data);
2075 #endif
2076 }
2077
2078 void setting_main_list_mouse_up_cb(void *data, Evas_Object *eo,
2079                                           void *event_info)
2080 {
2081         SETTING_TRACE_BEGIN;
2082         retm_if(data == NULL, "Data parameter is NULL");
2083         Setting_GenGroupItem_Data *list_item =
2084             (Setting_GenGroupItem_Data *) data;
2085         SETTING_TRACE("process item [%s]", list_item->keyStr);
2086         list_item->chk_status = elm_check_state_get(eo);        /* for update new state */
2087
2088         SETTING_TRACE("change radio[%s], status is:%d", _(list_item->keyStr),
2089                       list_item->chk_status);
2090         /*setting_main_appdata *ad = g_main_ad;*/
2091
2092         if (!safeStrCmp(KeyStr_UsePacketData, list_item->keyStr)) {
2093                 int err;
2094                 if (elm_check_state_get(eo)) {
2095                         setting_set_bool_slp_key
2096                             (BOOL_SLP_SETTING_USE_PACKET_DATA,
2097                              SETTING_ON_OFF_BTN_ON, &err);
2098                 } else {
2099                         setting_set_bool_slp_key
2100                             (BOOL_SLP_SETTING_USE_PACKET_DATA,
2101                              SETTING_ON_OFF_BTN_OFF, &err);
2102                 }
2103
2104         } else if (!safeStrCmp(KeyStr_Landscape, list_item->keyStr)) {
2105                 vconf_set_bool(VCONFKEY_SETAPPL_ROTATE_LOCK_BOOL, ! list_item->chk_status);
2106         }
2107
2108         return;
2109 }
2110
2111 void setting_main_sel_list_mouse_up_cb(void *data, Evas_Object *eo,
2112                                               void *event_info)
2113 {
2114         SETTING_TRACE_BEGIN;
2115         setting_retm_if(data == NULL, "Data parameter is NULL");
2116
2117         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2118         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2119         elm_genlist_item_selected_set(item, 0);
2120         Setting_GenGroupItem_Data *list_item =
2121             (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2122
2123         list_item->chk_status = elm_check_state_get(list_item->eo_check);
2124         /* new status */
2125
2126         /*setting_main_appdata *ad = (setting_main_appdata *) data;*/
2127
2128         if (!safeStrCmp(KeyStr_UsePacketData, list_item->keyStr)) {
2129                 /* setting_reset_slp_key_by_status(eo, BOOL_SLP_SETTING_USE_PACKET_DATA); */
2130                 int err;
2131                 setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
2132                                          list_item->chk_status, &err);
2133
2134         } else if (!safeStrCmp(KeyStr_Landscape, list_item->keyStr)) {
2135                 vconf_set_bool(VCONFKEY_SETAPPL_ROTATE_LOCK_BOOL, (list_item->chk_status));
2136         }
2137
2138         return;
2139 }
2140
2141 void __alternate_flight_mode(Evas_Object *check)
2142 {
2143         SETTING_TRACE_BEGIN;
2144         int ret;
2145         Eina_Bool status =  elm_check_state_get(check);
2146         SETTING_TRACE("flight mode status : %d", status);
2147         setting_main_appdata *ad = g_main_ad;
2148
2149         //Check whether some requestion is processing by TAPI
2150         if (ad->b_fm_requesting)
2151         {
2152                 //Do nothing, just mark the lastest operation..
2153                 SETTING_TRACE("Some requestion is processing by TAPI, wait to process");
2154                 ad->fm_waiting_op = status ? FM_ENTER : FM_LEAVE;
2155                 return;
2156         }
2157
2158         //otherwise, invalid waiting operation and send requsetion to TAPI:
2159         ad->fm_waiting_op = FM_INVALID;
2160         if (status) {
2161                 ret = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
2162                 setting_retm_if(ret != TAPI_API_SUCCESS,
2163                                 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
2164         } else {
2165                 ret = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
2166                 setting_retm_if(ret != TAPI_API_SUCCESS,
2167                                 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
2168         }
2169
2170         //sucessfully sent,
2171         ad->b_fm_requesting = TRUE;
2172         SETTING_TRACE_END;
2173 }
2174
2175 void
2176 setting_main_click_list_network_ug_cb(void *data, Evas_Object *obj,
2177                                       void *event_info)
2178 {
2179         SETTING_TRACE_BEGIN;
2180         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2181         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2182
2183         elm_genlist_item_selected_set(item, EINA_FALSE);
2184
2185         if (g_main_ad->ug) {
2186                 SETTING_TRACE
2187                     ("[ad->ug non-NULL]skip genlist click event!!");
2188
2189                 SETTING_TRACE_END;
2190                 return;
2191         }
2192
2193         setting_main_appdata *ad = g_main_ad;
2194         setting_main_click_list_item_reset_data(ad, obj);
2195
2196         int err = 0;
2197         int value;
2198         setting_get_int_slp_key(INT_SLP_SETTING_SIM_SLOT, &value, &err);
2199         SETTING_TRACE("value:%d", value);
2200         switch (value) {
2201         case VCONFKEY_TELEPHONY_SIM_INSERTED:
2202                 {
2203                         struct ug_cbs *cbs =
2204                             (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
2205                         setting_retm_if(!cbs, "calloc failed");
2206                         cbs->layout_cb = setting_main_layout_ug_cb;
2207                         cbs->result_cb = setting_main_result_ug_cb;
2208                         cbs->destroy_cb = setting_main_destroy_ug_cb;
2209                         cbs->priv = (void *)ad;
2210                         setting_main_click_list_item_ug_cb(data, obj,
2211                                                            "setting-network-efl",
2212                                                            NULL, cbs);
2213                         FREE(cbs);
2214                         break;
2215                 }
2216         case VCONFKEY_TELEPHONY_SIM_NOT_PRESENT:
2217                 setting_create_simple_popup(NULL, ad->win_main,
2218                                             NULL, _("IDS_ST_HEADER_INSERT_SIM_CARD_ABB"));
2219                 SETTING_TRACE("%s*** [ERR] No SIM. sim_slot_type=%d ***%s",
2220                               SETTING_FONT_RED, value, SETTING_FONT_BLACK);
2221                 return;
2222                 break;
2223         case VCONFKEY_TELEPHONY_SIM_CARD_ERROR:
2224         case VCONFKEY_TELEPHONY_SIM_UNKNOWN:
2225                 setting_create_simple_popup(NULL, ad->win_main,
2226                                             NULL,_("IDS_COM_BODY_INVALID_SIM_CARD"));
2227                 SETTING_TRACE("%s*** [ERR] Invalid SIM. sim_slot_type=%d ***%s",
2228                               SETTING_FONT_RED, value, SETTING_FONT_BLACK);
2229                 return;
2230                 break;
2231         default:
2232                 break;
2233         }
2234
2235 }
2236
2237 static void
2238 setting_main_click_Gendial_list_flight_mode_cb(void *data, Evas_Object *obj,
2239                                                void *event_info)
2240 {
2241     /* error check */
2242     setting_retm_if(data == NULL, "Data parameter is NULL");
2243
2244     retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2245     Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2246     elm_genlist_item_selected_set(item, 0);
2247     Setting_GenGroupItem_Data *list_item =
2248         (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2249     int old_status = elm_check_state_get(list_item->eo_check);
2250     /* new status */
2251     list_item->chk_status = !old_status;
2252     elm_check_state_set(list_item->eo_check, list_item->chk_status);
2253
2254     __alternate_flight_mode(list_item->eo_check);
2255     SETTING_TRACE_END;
2256 }
2257
2258 void
2259 setting_main_click_list_flight_mode_cb(void *data, Evas_Object *obj,
2260                                        void *event_info)
2261 {
2262         SETTING_TRACE_BEGIN;
2263         retm_if(data == NULL, "Data parameter is NULL");
2264         Setting_GenGroupItem_Data *list_item =
2265             (Setting_GenGroupItem_Data *) data;
2266         list_item->chk_status = elm_check_state_get(obj);       /* for update new state */
2267         SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2268                       list_item->chk_status);
2269
2270         __alternate_flight_mode(obj);
2271         SETTING_TRACE_END;
2272 }
2273
2274
2275 /**
2276  * store current selection in setting.cfg
2277  */
2278 void setting_try_save_check_list(void *data)
2279 {
2280         SETTING_TRACE_BEGIN;
2281         setting_main_appdata *ad = (setting_main_appdata *) data;
2282
2283         Eina_List *check_list = ad->item_check_list;
2284         Setting_GenGroupItem_Data *list_item = NULL;
2285         int update_count = 0;
2286
2287         while (check_list) {
2288                 list_item = (Setting_GenGroupItem_Data *) eina_list_data_get(check_list);
2289                 if (NULL == list_item) continue;
2290
2291                 update_count++;
2292                 if (list_item->chk_status) {
2293                         /* to update config file */
2294                         setting_cfg_set_pos(list_item->keyStr, Cfg_Item_Pos_Level0);
2295                 } else {
2296                         /* to update config file */
2297                         setting_cfg_set_pos(list_item->keyStr, Cfg_Item_Pos_Level1);
2298                 }
2299                 check_list = eina_list_next(check_list);
2300         }
2301
2302         if (update_count == 0) {
2303                 /* to popup tips notify */
2304         } else {
2305                 setting_cfg_file_update();
2306         }
2307         SETTING_TRACE_END;
2308 }
2309
2310 void
2311 setting_main_click_edit_preferred_cb(void *data, Evas_Object *obj, void *event_info)
2312 {
2313         SETTING_TRACE_BEGIN;
2314
2315         setting_main_appdata *ad = (setting_main_appdata *) data;
2316         ad->view_type = SETTING_VIEW_ALL_CHECK;
2317         __setting_create_prefered_view(ad);
2318         __load_check_list(ad, &(ad->edit_preferred_genlist), NULL);
2319
2320         SETTING_TRACE_END;
2321 }