On calling, only wifi menu should be disabled
[apps/core/preloaded/settings.git] / src / setting-main.c
1 /*
2  * setting
3  * Copyright (c) 2012 Samsung Electronics Co., Ltd.
4  *
5  * Licensed under the Flora License, Version 1.0 (the License);
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://floralicense.org/license/
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an AS IS BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 #include <tapi_common.h>
18 #include <aul.h>
19 #include <ail.h>
20 #include <time.h>
21 #include <setting-main.h>
22 #include <wifi.h>
23 #include <tethering.h>
24 #include <bluetooth.h>
25 #include <nfc.h>
26
27 #include <setting-common-plugin.h>
28
29 #define PLUGIN_PREFIX "/opt"
30
31 typedef struct _DrawAppInfo
32 {
33         int ncount;
34         //------------------------------------
35         void (*draw_app)(void* arg, char* name, char* pkgname);
36         void* data;
37 } DrawAppInfo;
38
39 static int setting_main_create(void *cb);
40 static int setting_main_destroy(void *cb);
41 static int setting_main_update(void *cb);
42 static int setting_main_cleanup(void *cb);
43
44 setting_view setting_view_main = {
45         .create = setting_main_create,
46         .update = setting_main_update,
47         .destroy = setting_main_destroy,
48         .cleanup = setting_main_cleanup,
49 };
50
51 setting_main_appdata *g_main_ad = NULL;
52
53 static void setting_main_tapi_event_cb(TapiHandle *handle, int result, void *data, void *user_data);
54 static int setting_main_refresh(void *data);
55 static void __alternate_flight_mode(Evas_Object *check);
56 static void setting_main_click_Gendial_list_flight_mode_cb(void *data,
57                                                            Evas_Object *obj,
58                                                            void *event_info);
59 static void __alternate_flight_mode(Evas_Object *check);
60
61 void setting_main_click_list_item_ug_cb(void *data, Evas_Object *obj, char *ug_to_load, service_h svc, struct ug_cbs *cbs);
62
63 static void
64 __setting_chk_changed(void *data, Evas_Object *obj, void *event_info)
65 {
66         /* SETTING_TRACE_BEGIN; */
67         retm_if(data == NULL, "Data parameter is NULL");
68         Setting_GenGroupItem_Data *list_item =
69             (Setting_GenGroupItem_Data *) data;
70         /* SETTING_TRACE("process item [%s]", _(list_item->keyStr)); */
71         list_item->chk_status = elm_check_state_get(obj);
72
73         Eina_List *check_list = g_main_ad->item_check_list;
74         Setting_GenGroupItem_Data *item = NULL;
75         bool isFoundNotSelSomeone = FALSE;
76         bool isFoundSelSomeone = FALSE;
77         while (check_list) {
78                 item = (Setting_GenGroupItem_Data *)
79                     eina_list_data_get(check_list);
80                 if (NULL == item) {
81                         continue;
82                 }
83                 if (!(item->chk_status)) {
84                         isFoundNotSelSomeone = TRUE;
85                 } else {
86                         isFoundSelSomeone = TRUE;
87                 }
88                 if (isFoundNotSelSomeone && isFoundSelSomeone) {
89                         break;
90                 }
91                 check_list = eina_list_next(check_list);
92         }
93
94         if (isFoundNotSelSomeone) {
95                 g_main_ad->check_all_item->chk_status = 0;      /* for update new state */
96         } else {
97                 g_main_ad->check_all_item->chk_status = 1;      /* for update new state */
98         }
99         elm_object_item_data_set(g_main_ad->check_all_item->item, g_main_ad->check_all_item);
100         elm_genlist_item_update(g_main_ad->check_all_item->item);
101
102         if (isFoundSelSomeone) {
103                 /* SETTING_TRACE("Set it to active"); */
104                 /*
105                 elm_object_item_disabled_set(elm_toolbar_last_item_get
106                                                  (g_main_ad->controllbar_all_check),
107                                                  EINA_FALSE);*/
108         }
109 }
110
111 static void __setting_list_changed(void *data, Evas_Object *obj,
112                                    void *event_info)
113 {
114
115         SETTING_TRACE_BEGIN;
116         /* error check */
117         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
118
119         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
120         elm_genlist_item_selected_set(item, 0);
121         Setting_GenGroupItem_Data *list_item =
122             (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
123
124         int old_status = elm_check_state_get(list_item->eo_check);
125         /* new status */
126         list_item->chk_status = !old_status;
127         elm_check_state_set(list_item->eo_check, list_item->chk_status);
128
129         Eina_List *check_list = g_main_ad->item_check_list;
130         Setting_GenGroupItem_Data *group_item = NULL;
131         bool isFoundNotSelSomeone = FALSE;
132         bool isFoundSelSomeone = FALSE;
133         while (check_list) {
134                 group_item = (Setting_GenGroupItem_Data *)
135                     eina_list_data_get(check_list);
136                 if (NULL == group_item) {
137                         continue;
138                 }
139                 if (!(group_item->chk_status)) {
140                         isFoundNotSelSomeone = TRUE;
141                         /* break; */
142                 } else {
143                         isFoundSelSomeone = TRUE;
144                 }
145                 if (isFoundNotSelSomeone && isFoundSelSomeone) {
146                         break;
147                 }
148
149                 check_list = eina_list_next(check_list);
150         }
151
152         if (isFoundNotSelSomeone) {
153                 g_main_ad->check_all_item->chk_status = 0;      /* for update new state */
154         } else {
155                 g_main_ad->check_all_item->chk_status = 1;      /* for update new state */
156         }
157         elm_object_item_data_set(g_main_ad->check_all_item->item, g_main_ad->check_all_item);
158         elm_genlist_item_update(g_main_ad->check_all_item->item);
159
160         if (isFoundSelSomeone) {
161                 /* SETTING_TRACE("Set it to active"); */
162                 /*
163                 elm_object_item_disabled_set(elm_toolbar_last_item_get
164                                                  (g_main_ad->controllbar_all_check),
165                                                  EINA_FALSE);*/
166         }
167
168 }
169
170 static void
171 __setting_chk_sel_all_changed(void *data, Evas_Object *obj, void *event_info)
172 {
173         /* SETTING_TRACE_BEGIN; */
174         retm_if(data == NULL, "Data parameter is NULL");
175         Setting_GenGroupItem_Data *list_item =
176             (Setting_GenGroupItem_Data *) data;
177         bool is_all_checked = elm_check_state_get(obj);
178         list_item->chk_status = is_all_checked; /* for update new state */
179         /* SETTING_TRACE("is_all_checked:%d", is_all_checked); */
180
181         Eina_List *check_list = g_main_ad->item_check_list;
182
183         while (check_list) {
184                 list_item = (Setting_GenGroupItem_Data *)
185                     eina_list_data_get(check_list);
186                 if (NULL == list_item) {
187                         continue;
188                 }
189                 list_item->chk_status = is_all_checked;
190                 elm_object_item_data_set(list_item->item, list_item);
191                 elm_genlist_item_update(list_item->item);
192                 check_list = eina_list_next(check_list);
193         }
194         if (is_all_checked) {
195                 /*
196                 elm_object_item_disabled_set(elm_toolbar_last_item_get
197                                                  (g_main_ad->controllbar_all_check),
198                                                  EINA_FALSE);*/
199         }
200 }
201
202 static void __setting_list_sel_all_changed(void *data, Evas_Object *obj,
203                                            void *event_info)
204 {
205         /* error check */
206         SETTING_TRACE_BEGIN;
207         SETTING_TRACE();
208         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
209         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
210         elm_genlist_item_selected_set(item, 0);
211         Setting_GenGroupItem_Data *list_item =
212             (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
213
214         int old_status = elm_check_state_get(list_item->eo_check);
215         /* new status */
216         int is_all_checked = list_item->chk_status = !old_status;
217         elm_check_state_set(list_item->eo_check, list_item->chk_status);
218
219         Eina_List *check_list = g_main_ad->item_check_list;
220
221         while (check_list) {
222                 list_item = (Setting_GenGroupItem_Data *)
223                     eina_list_data_get(check_list);
224                 if (NULL == list_item) {
225                         continue;
226                 }
227                 list_item->chk_status = is_all_checked;
228                 /* elm_check_state_set(list_item->eo_check, is_all_checked); */
229                 elm_object_item_data_set(list_item->item, list_item);
230                 elm_genlist_item_update(list_item->item);
231                 check_list = eina_list_next(check_list);
232         }
233         if (is_all_checked) {
234                 /*
235                 elm_object_item_disabled_set(elm_toolbar_last_item_get
236                                                  (g_main_ad->controllbar_all_check),
237                                                  EINA_FALSE);*/
238         }
239
240 }
241
242 static void __load_check_list(void *data, Evas_Object **genlist,
243                               char *menuNameKey)
244 {
245         SETTING_TRACE_BEGIN;
246         setting_main_appdata *ad = (setting_main_appdata *) data;
247
248         bool state = FALSE;
249         char *keyStr = NULL;
250         Cfg_Item_Position pos = Cfg_Item_Pos_Uninstall;
251         bool isFoundNonSelItem = FALSE;
252         bool isFoundSelSomeoneItem = FALSE;
253
254         int i, j;
255         char *icon_path = NULL;
256
257         ad->check_all_item =
258             setting_create_Gendial_field_def(ad->gl_sel_all,
259                                              &(ad->itc[GENDIAL_Type_sel_all]),
260                                              __setting_list_sel_all_changed, ad,
261                                              SWALLOW_Type_1CHECK, NULL, NULL,
262                                              state, KeyStr_Select_All, NULL,
263                                              __setting_chk_sel_all_changed);
264         __BACK_POINTER_SET(ad->check_all_item);
265
266         Setting_GenGroupItem_Data *item = NULL;
267         Setting_GenGroupItem_Data *category_item = NULL;
268         for (i = 0; i < setting_cfg_get_category_length(); i++) {
269                 if (NULL == menuNameKey) {
270                         /* SETTING_TRACE("load all the items in config file"); */
271                 } else
272                     if (safeStrCmp
273                         (setting_cfg_get_category_name(i), menuNameKey)) {
274                         continue;
275                 }
276                 char *category_name = setting_cfg_get_category_name(i);
277
278                 category_item =
279                     setting_create_Gendial_field_group_titleItem(*genlist,
280                                                                  &(ad->itc
281                                                                    [GENDIAL_Type_group_item]),
282                                                                  NULL,
283                                                                  ELM_GENLIST_ITEM_NONE,
284                                                                  category_name,
285                                                                  NULL);
286                 if (category_item) {
287                         for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
288                                 keyStr = setting_cfg_get_keyname_idx(i, j);
289                                 pos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
290
291                                 if (Cfg_Item_Pos_Level1 == pos) {
292                                         state = FALSE;
293                                         isFoundNonSelItem = TRUE;
294                                 } else {
295                                         state = TRUE;
296                                         isFoundSelSomeoneItem = TRUE;
297                                 }
298
299                         icon_path = setting_cfg_get_icon_path_idx(i, j);
300                         item =
301                             setting_create_Gendial_field_groupitem(*genlist,
302                                                                    &(ad->itc
303                                                                      [GENDIAL_Type_1text_2icon_2]),
304                                                                    category_item->item,
305                                                                    __setting_list_changed,
306                                                                    ad,
307                                                                    SWALLOW_Type_1CHECKICON,
308                                                                    NULL,
309                                                                    icon_path,
310                                                                    state,
311                                                                    keyStr, NULL,
312                                                                    __setting_chk_changed);
313
314                                 ad->item_check_list =
315                                     eina_list_append(ad->item_check_list, item);
316                         }
317                 } else {
318                         SETTING_TRACE_ERROR("category_item is NULL");
319                 }
320         }
321
322         if (ad->check_all_item) {
323                 if (isFoundNonSelItem) {
324                         ad->check_all_item->chk_status = 0;     /* for update new state */
325                 } else {
326                         ad->check_all_item->chk_status = 1;     /* for update new state */
327                 }
328                 elm_object_item_data_set(ad->check_all_item->item, ad->check_all_item);
329                 elm_genlist_item_update(ad->check_all_item->item);
330         } else {
331                 SETTING_TRACE_ERROR("ad->check_all_item is NULL");
332         }
333
334         if (isFoundSelSomeoneItem) {
335         /*      elm_object_item_disabled_set(elm_toolbar_last_item_get
336                                                  (ad->controllbar_all_check),
337                                                  EINA_FALSE);
338                                                  */
339         } else {
340         /*
341                 elm_object_item_disabled_set(elm_toolbar_last_item_get
342                                                  (ad->controllbar_all_check),
343                                                  EINA_TRUE);*/
344         }
345         SETTING_TRACE_END;
346 }
347
348
349 static Setting_GenGroupItem_Data * __flightmode_handler(void* data, char* keyStr, char* icon_path, char* ug_name, Evas_Object *genlist)
350 {
351         // NOT UG --> it's just UI drawing
352
353         setting_main_appdata *ad = (setting_main_appdata *)data;
354         int value, err;
355         setting_get_bool_slp_key (BOOL_SLP_SETTING_FLIGHT_MODE, &value, &err);
356
357         /* create flight_mode */
358         ad->data_flight = setting_create_Gendial_field_groupitem(genlist,
359                                                    &(ad->itc[GENDIAL_Type_1text_2icon]),
360                                                    NULL,
361                                                    setting_main_click_Gendial_list_flight_mode_cb,
362                                                    ad,
363                                                    SWALLOW_Type_1ICON_1RADIO,
364                                                    icon_path,
365                                                    NULL,
366                                                    value,
367                                                    keyStr,
368                                                    NULL,
369                                                    setting_main_click_list_flight_mode_cb);
370         __BACK_POINTER_SET(ad->data_flight);
371
372         return ad->data_flight;
373 }
374
375 static Setting_GenGroupItem_Data * __wifi_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
376 {
377         setting_main_appdata *ad = (setting_main_appdata *)data;
378         int value, err;
379         setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err);
380
381         //char* pa_wifi = get_pa_Wi_Fi_on_off_str();
382         ad->data_wifi = setting_create_Gendial_field_groupitem(genlist,
383                                                    &(ad->itc[GENDIAL_Type_1text_2icon]),
384                                                    NULL,
385                                                    setting_main_click_list_ex_ug_cb,
386                                                    ug_args,
387                                                    SWALLOW_Type_1ICON_1RADIO,
388                                                    icon_path,
389                                                    NULL,
390                                                    value,
391                                                    keyStr,
392                                                    NULL,
393                                                    setting_main_click_list_wifi_mode_cb);
394         __BACK_POINTER_SET(ad->data_wifi);
395         if(ad->data_wifi)
396                 ad->data_wifi->userdata = ad;
397         //G_FREE(pa_wifi);
398
399         return ad->data_wifi;
400 }
401
402 static Setting_GenGroupItem_Data * __bluetooth_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         int value, err;
406         setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err);
407
408         ad->data_bt = setting_create_Gendial_field_groupitem(genlist,
409                                                    &(ad->itc[GENDIAL_Type_1text_2icon]),
410                                                    NULL,
411                                                    setting_main_click_list_ex_ug_cb,
412                                                    ug_args,
413                                                    SWALLOW_Type_1ICON_1RADIO,
414                                                    icon_path,
415                                                    NULL,
416                                                    value,
417                                                    keyStr,
418                                                    NULL,
419                                                    setting_main_click_list_bt_mode_cb);
420         __BACK_POINTER_SET(ad->data_bt);
421         if(ad->data_bt)
422                 ad->data_bt->userdata = ad;
423
424         return ad->data_bt;
425 }
426
427 static Setting_GenGroupItem_Data * __allshare_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
428 {
429         setting_main_appdata *ad = (setting_main_appdata *)data;
430
431         Setting_GenGroupItem_Data * obj = setting_create_Gendial_field_groupitem(genlist,
432                                                                    &(ad->itc[GENDIAL_Type_1text_1icon_2]),
433                                                                    NULL,
434                                                                    setting_main_click_list_default_ug_cb,
435                                                                    ad,
436                                                                    SWALLOW_Type_INVALID,
437                                                                    icon_path,
438                                                                    NULL, 0,
439                                                                    keyStr,
440                                                                    NULL,
441                                                                    NULL);
442         return obj;
443 }
444
445 static Setting_GenGroupItem_Data * __network_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
446 {
447         setting_main_appdata *ad = (setting_main_appdata *)data;
448
449         ad->data_network = setting_create_Gendial_field_groupitem(genlist,
450                                                                        &(ad->itc[GENDIAL_Type_1text_1icon_2]),
451                                                                        NULL,
452                                                                        setting_main_click_list_network_ug_cb,
453                                                                        ad,
454                                                                        SWALLOW_Type_INVALID,
455                                                                        icon_path,
456                                                                        NULL, 0,
457                                                                        keyStr,
458                                                                        NULL,
459                                                                        NULL);
460
461         return ad->data_network;
462 }
463
464 static Setting_GenGroupItem_Data * __nfc_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
465 {
466         setting_main_appdata *ad = (setting_main_appdata *)data;
467
468         int value, err;
469         setting_get_bool_slp_key(BOOL_SLP_SETTING_NFC_STATUS, &value, &err);
470
471         ad->data_nfc = setting_create_Gendial_field_groupitem(genlist,
472                                                    &(ad->itc[GENDIAL_Type_1text_2icon]),
473                                                    NULL,
474                                                    setting_main_click_list_ex_ug_cb,
475                                                    ug_args,
476                                                    SWALLOW_Type_1ICON_1RADIO,
477                                                    icon_path,
478                                                    NULL,
479                                                    value,
480                                                    keyStr,
481                                                    NULL,
482                                                    setting_main_click_list_nfc_mode_cb);
483         __BACK_POINTER_SET(ad->data_nfc);
484         if(ad->data_nfc)
485                 ad->data_nfc->userdata = ad;
486
487 #if DISABLED_CODE
488         setting_create_Gendial_field_def(genlist, &itc_multiline_text, NULL,
489                  ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
490                  NULL, NULL, 0, SETTING_NFC_DESC, NULL, NULL);
491         elm_genlist_item_select_mode_set(elm_genlist_item_append(genlist, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
492                                          ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
493 #endif
494         return ad->data_nfc;
495 }
496
497 static Setting_GenGroupItem_Data * __default_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
498 {
499         setting_main_appdata *ad = (setting_main_appdata *)data;
500         Setting_GenGroupItem_Data * obj = setting_create_Gendial_field_groupitem(genlist,
501                                                            &(ad->itc[GENDIAL_Type_1text_1icon_2]),
502                                                            NULL,
503                                                            setting_main_click_list_ex_ug_cb,
504                                                            ug_args,
505                                                            SWALLOW_Type_INVALID,
506                                                            icon_path,
507                                                            NULL, 0,
508                                                            keyStr,
509                                                            NULL,
510                                                            NULL);
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_ALLSHARE,
529         MAINLIST_ENTRY_NETWORK,
530         MAINLIST_ENTRY_NFC,
531         MAINLIST_ENTRY_DEFAULT,
532         MAINLIST_ENTRY_MAX,
533 };
534
535 static mainlist_entry mainlist_table[] = {
536                 {KeyStr_FlightMode,     __flightmode_handler},                  // 0 --> NOT UG
537                 {KeyStr_WiFi,                   __wifi_handler},                                // 1 --> UG
538                 {KeyStr_Bluetooth,              __bluetooth_handler},                   // 1 --> UG
539                 {KeyStr_AllShare,               __allshare_handler},                    // NOT UG
540                 {KeyStr_Network,                __network_handler},                             // 1 --> UG
541                 {KeyStr_NFC,                    __nfc_handler},                                 // 1 --> UG
542                 {"Default",                     __default_handler},                             // 1 --> UG
543
544                 //--------------------------------------------------------------
545                 {NULL, NULL},
546         };
547
548
549 void __gl_realized(void *data, Evas_Object *obj, void *event_info)
550 {
551         //SETTING_TRACE_BEGIN;
552         setting_retm_if(data == NULL, "invalid parameter: data is NULL");
553         setting_retm_if(event_info == NULL, "invalid parameter: event_info is NULL");
554         setting_main_appdata *ad = (setting_main_appdata *)data;
555         Elm_Object_Item *item = (Elm_Object_Item *)event_info;
556         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)elm_object_item_data_get(item);
557
558         //setting_retm_if(list_item == NULL, "list_item is NULL");
559
560         if (list_item) {
561                 if (list_item->group_style == SETTING_GROUP_STYLE_TOP) {
562                         elm_object_item_signal_emit(item, "elm,state,top", "");
563                 } else if (list_item->group_style == SETTING_GROUP_STYLE_BOTTOM) {
564                         elm_object_item_signal_emit(item, "elm,state,bottom", "");
565                 } else if (list_item->group_style == SETTING_GROUP_STYLE_CENTER) {
566                         elm_object_item_signal_emit(item, "elm,state,center", "");
567                 } else if (list_item->group_style == SETTING_GROUP_STYLE_NONE) {
568                         /* do nothing */
569                 } else {
570                         SETTING_TRACE_ERROR("list_item->group_style is wrong");
571                 }
572         } else {
573                 /* item is used for description */
574                 elm_object_item_signal_emit(item, "elm,state,center", "");
575         }
576 }
577
578 // Flight Mode  - not UG
579 // All share    - not UG
580 // WiFi                 - added toggle
581 // Bluetooth
582 // Mobile AP
583 // Network
584 // NFC
585 // Other UGs
586 void __load_connectivity_menu_list(void *data, Cfg_Item_Position inputPos, Evas_Object *genlist)
587 {
588         SETTING_TRACE_BEGIN;
589         setting_main_appdata *ad = data;
590         //group title, only display in setting main view
591         if (SETTING_VIEW_MAIN == ad->view_load) {
592                 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
593                                                      &(ad->itc[GENDIAL_Type_group_item]),
594                                                      NULL,
595                                                      ELM_GENLIST_ITEM_NONE,
596                                                      KeyStr_Connectivity, NULL);
597         }
598
599         int idx_second_menu = 0;
600
601         char *keyStr = NULL;
602         char *icon_path = NULL;
603         char *ug_args = NULL;
604         Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
605         int i, j;
606
607         bool is_emulator = isEmulBin();
608
609         Setting_GenGroupItem_Data *item_data = NULL;
610         int index = 0;
611
612         for (i = 0; i < setting_cfg_get_category_length(); i++) {
613                 if (safeStrCmp
614                     (setting_cfg_get_category_name(i), KeyStr_Connectivity))
615                         continue;
616
617                 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
618                         keyStr = setting_cfg_get_keyname_idx(i, j);
619                         tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
620                         ug_args = setting_cfg_get_ug_args_idx(i, j);
621                         icon_path = setting_cfg_get_icon_path_idx(i, j);
622                         /* SETTING_TRACE_DEBUG("Got an item[keyStr:%s, ug_args:%s, pos:%d]", */
623                         /*                     keyStr, ug_args, tmpPos); */
624
625                         if (is_emulator) {
626                                 if (!safeStrCmp(KeyStr_FlightMode, keyStr)) {
627                                         continue; /* hide Flight Mode in Emulator*/
628                                 } else if (!safeStrCmp(KeyStr_WiFi, keyStr)) {
629                                         continue; /* hide WIFI in Emulator*/
630                                 } else if (!safeStrCmp(KeyStr_WiFiDirect, keyStr)) {
631                                         continue; /* hide WiFiDirect in Emulator*/
632                                 } else if (!safeStrCmp(KeyStr_Network, keyStr)) {
633                                         continue; /* hide Network in Emulator*/
634                                 } else if (!safeStrCmp(KeyStr_Bluetooth, keyStr)) {
635                                         continue; /* hide Bluetooth in Emulator*/
636                                 } else if (!safeStrCmp(KeyStr_MobileAP, keyStr)) {
637                                         continue; /* hide Tethering in Emulator*/
638                                 } else {
639                                         /* do nothing */
640                                 }
641                         }
642
643                         if (idx_second_menu < MAX_MORE_MENU_NUM
644                             && Cfg_Item_Pos_Level1 == tmpPos
645                             && SETTING_VIEW_MAIN == ad->view_load
646                             && MAIN_PROFILE_PREFERRED == ad->profile_type) {
647
648                                 if (is_ug_installed_by_ug_args(ug_args)) {
649                                         ad->more_connective_menus[idx_second_menu++] = keyStr;
650                                 }
651                         }
652
653                         if (Cfg_Item_Pos_Level_All == inputPos) {
654                         } else if (inputPos != tmpPos) {        /* not in the inputPos level */
655                                 continue;
656                         }
657
658                         if (!safeStrCmp(KeyStr_FlightMode, keyStr)) {   /* load special radio */
659                                 // ug == NULL
660                                 item_data = mainlist_table[MAINLIST_ENTRY_FLIGHT_MODE].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
661
662                         } else if (!safeStrCmp(KeyStr_AllShare, keyStr)) {      /* NOT UG */
663
664                                 item_data = mainlist_table[MAINLIST_ENTRY_ALLSHARE].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
665
666                         } else if (!safeStrCmp(KeyStr_WiFi, keyStr) && is_ug_installed_by_ug_args(ug_args)) {   /* load special icon */
667
668                                 item_data = mainlist_table[MAINLIST_ENTRY_WIFI].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
669
670                         } else if (!safeStrCmp(KeyStr_Bluetooth, keyStr) && is_ug_installed_by_ug_args(ug_args)) {      /* load special icon */
671
672                                 item_data = mainlist_table[MAINLIST_ENTRY_BT].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
673
674                         }
675 #if 0
676  else if (!safeStrCmp(KeyStr_MobileAP, keyStr) && is_ug_installed_by_ug_args(ug_args)) {        /* load special icon */
677
678                                 item_data = mainlist_table[MAINLIST_ENTRY_MOBILEAP].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
679
680                         }
681 #endif
682                          else if (!safeStrCmp(KeyStr_Network, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special UG */
683
684                                 item_data = mainlist_table[MAINLIST_ENTRY_NETWORK].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
685
686                         } else if (!safeStrCmp(KeyStr_NFC, keyStr) && is_ug_installed_by_ug_args(ug_args)) {    /* load special icon */
687                                 int nfc_value = FALSE; //default
688                                 vconf_get_bool(VCONFKEY_NFC_FEATURE, &nfc_value);
689                                 if (VCONFKEY_NFC_FEATURE_ON == nfc_value)
690                                 {
691                                         item_data = mainlist_table[MAINLIST_ENTRY_NFC].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
692                                 }
693                         } else {        /* load other UGs */
694                                 if (is_ug_installed_by_ug_args(ug_args))
695                                 {
696                                         item_data = mainlist_table[MAINLIST_ENTRY_DEFAULT].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
697                                 }
698                         }
699
700                         if (item_data) {
701                                 if (j == 0) {
702                                         item_data->group_style = SETTING_GROUP_STYLE_TOP;
703                                 } else if (j == setting_cfg_get_menu_length(i) - 1) {
704                                         item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
705                                 } else {
706                                         item_data->group_style = SETTING_GROUP_STYLE_CENTER;
707                                 }
708
709                                 if (index == 0) {
710                                         item_data->group_style = SETTING_GROUP_STYLE_TOP;
711                                 }
712                                 index++;
713                         }
714                 }
715         }
716
717         //end group , only display in setting main view
718 #if SUPPORT_MORE_ITEM_FUNCTION
719                 if (SETTING_VIEW_MAIN == ad->view_load && MAIN_PROFILE_PREFERRED == ad->profile_type && idx_second_menu > 0)
720                 {
721                         char sub_text[MAX_COMMON_BUFFER_LEN] = {0, };
722                         int idx = 0;
723                         while (idx < MAX_MORE_MENU_NUM && ad->more_connective_menus[idx])
724                         {
725                                 if (idx != 0)
726                                 {
727                                         safeStrNCat(sub_text, ", ", MAX_COMMON_BUFFER_LEN);
728                                 }
729                                 safeStrNCat(sub_text, _(ad->more_connective_menus[idx]), MAX_COMMON_BUFFER_LEN);
730                                 idx++;
731                         }
732
733                         ad->data_moreConnect =
734                                 setting_create_Gendial_field_groupitem(ad->main_genlist,
735                                                                        &(ad->itc[GENDIAL_Type_2text_3]),
736                                                                        NULL,
737                                                                        setting_main_click_list_more_cb,
738                                                                        ad,
739                                                                        SWALLOW_Type_INVALID,
740                                                                        NULL,
741                                                                        NULL,
742                                                                        0,
743                                                                        KeyStr_MoreConnect,
744                                                                        sub_text,
745                                                                        NULL);
746                         __BACK_POINTER_SET(ad->data_moreConnect);
747
748                         /* if has <more ..> item , change the last item_date to SETTING_GROUP_STYLE_CENTER*/
749                         if (item_data && index > 1) {
750                                 item_data->group_style = SETTING_GROUP_STYLE_CENTER;
751                         }
752                         ad->data_moreConnect->group_style = SETTING_GROUP_STYLE_BOTTOM;
753
754                         item_data = ad->data_moreConnect;
755                         index++;
756                 }
757 #endif
758
759         if (index == 1) {
760                 item_data->group_style = SETTING_GROUP_STYLE_NONE;
761         } else if (index == 2) {
762                 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
763         }
764         SETTING_TRACE_END;
765 }
766
767 void __load_connectivity_level0_list(void *data)
768 {
769         setting_main_appdata *ad = data;
770         __load_connectivity_menu_list(ad, Cfg_Item_Pos_Level0, ad->main_genlist);
771 }
772
773 void __load_connectivity_level_all_list(void *data)
774 {
775         SETTING_TRACE_BEGIN;
776         setting_main_appdata *ad = data;
777         __load_connectivity_menu_list(ad, Cfg_Item_Pos_Level_All, ad->main_genlist);
778 }
779
780 void __load_system_menu_list(void *data, Cfg_Item_Position inputPos, Evas_Object *genlist)
781 {
782         SETTING_TRACE_BEGIN;
783         SETTING_TRACE_DEBUG("pos :%d", inputPos);
784         setting_main_appdata *ad = data;
785         //group title, only display in setting main view
786         if (SETTING_VIEW_MAIN == ad->view_load) {
787                 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
788                                                      &(ad->itc[GENDIAL_Type_group_item]),
789                                                      NULL,
790                                                      ELM_GENLIST_ITEM_NONE,
791                                                      KeyStr_System, NULL);
792         }
793         int idx_second_menu = 0;
794
795         char *keyStr = NULL;
796         char *icon_path = NULL;
797         char *ug_args = NULL;
798
799         Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
800
801         int ncount = 0;
802         int i, j;
803
804         bool is_emulator = isEmulBin();
805
806         Setting_GenGroupItem_Data *item_data = NULL;
807         int index = 0;
808
809         //SETTING_TRACE("setting_cfg_get_category_length() :: %d ", setting_cfg_get_category_length());
810         for (i = 0; i < setting_cfg_get_category_length(); i++) {
811                 if (safeStrCmp(setting_cfg_get_category_name(i), KeyStr_System))
812                         continue;
813
814                 //SETTING_TRACE(" setting_cfg_get_menu_length(%d) :: %d ",i, setting_cfg_get_menu_length(i) );
815                 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
816                         keyStr = setting_cfg_get_keyname_idx(i, j);
817                         /* sg_path = setting_cfg_get_ugpath_idx(i, j); */
818                         tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
819                         icon_path = setting_cfg_get_icon_path_idx(i, j);
820                         ug_args = setting_cfg_get_ug_args_idx(i, j);
821
822                         //SETTING_TRACE("KeyString :  %s , tmpPos : %d , inputPos : %d ", keyStr, tmpPos, inputPos );
823
824                         if (is_emulator) {
825                                 if (!safeStrCmp(KeyStr_Security, keyStr)) {
826                                         continue; /* hide Security in Emulator*/
827                                 } else if (!safeStrCmp(KeyStr_Memory, keyStr)) {
828                                         continue; /* hide Memory in Emulator*/
829                                 } else if (!safeStrCmp(KeyStr_Powersaving, keyStr)) {
830                                         continue; /* hide Powersaving in Emulator*/
831                                 } else if (!safeStrCmp(KeyStr_FlightMode, keyStr)) {
832                                         continue; /* hide Powersaving in Emulator*/
833                                 } else {
834                                         /* do nothing */
835                                 }
836                         }
837
838                         if (idx_second_menu < MAX_MORE_MENU_NUM
839                             && Cfg_Item_Pos_Level1 == tmpPos
840                             && SETTING_VIEW_MAIN == ad->view_load
841                             && MAIN_PROFILE_PREFERRED == ad->profile_type) {
842
843                             if (is_ug_installed_by_ug_args(ug_args)) {
844                                 ad->more_system_menus[idx_second_menu++] = keyStr;
845                             }
846                         }
847
848                         if (Cfg_Item_Pos_Level_All == inputPos) {
849                                 // do nothing
850                                 //SETTING_TRACE("Cfg_Item_Pos_Level_All == inputPos ---> no draw --- WHY?? ");
851                         } else if (inputPos != tmpPos) {        /* not in the inputPos level */
852                                 //SETTING_TRACE("inputPos == tmp Pos ---> no draw --- WHY?? ");
853                                 continue;
854                         }
855
856                         if (!safeStrCmp(KeyStr_FlightMode, keyStr)) {   /* load special radio */
857                                 // ug == NULL
858                                 item_data = mainlist_table[MAINLIST_ENTRY_FLIGHT_MODE].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
859
860                         }
861                         else if (!safeStrCmp(KeyStr_Landscape, keyStr)) {       /* load special UG */
862                                 int value = 0;
863                                 vconf_get_bool
864                                     (VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, &value);
865
866                                 ad->data_rotationMode =
867                                     setting_create_Gendial_field_groupitem(genlist,
868                                                                            &(ad->itc[GENDIAL_Type_1text_2icon]),
869                                                                            NULL,
870                                                                            setting_main_sel_list_mouse_up_cb,
871                                                                            ad,
872                                                                            SWALLOW_Type_1ICON_1RADIO,
873                                                                            icon_path,
874                                                                            NULL,
875                                                                            value,
876                                                                            keyStr,
877                                                                            NULL,
878                                                                            setting_main_list_mouse_up_cb);
879                                 __BACK_POINTER_SET(ad->data_rotationMode);
880                                 item_data = ad->data_rotationMode;
881                         }
882                         else if (!safeStrCmp(KeyStr_Brightness, keyStr)) {
883
884                                 char* pa_bright = get_brightness_mode_str();
885                                 ad->data_bright=
886                                     setting_create_Gendial_field_groupitem(genlist,
887                                                                            &(ad->itc[GENDIAL_Type_1icon_2text]),
888                                                                            NULL,
889                                                                            setting_main_click_list_ex_ug_cb,
890                                                                            ug_args,
891                                                                            SWALLOW_Type_INVALID,
892                                                                            icon_path,
893                                                                            NULL,
894                                                                            0,
895                                                                            keyStr,
896                                                                            pa_bright,
897                                                                            NULL);
898                                 __BACK_POINTER_SET(ad->data_bright);
899                                 item_data = ad->data_bright;
900                                 ncount++;
901                         }
902                         else {  /* load other UGs */
903                                 item_data = setting_create_Gendial_field_groupitem(genlist,
904                                                                        &(ad->itc[GENDIAL_Type_1text_1icon_2]),
905                                                                        NULL,
906                                                                        setting_main_click_list_ex_ug_cb,
907                                                                        ug_args,
908                                                                        SWALLOW_Type_INVALID,
909                                                                        icon_path,
910                                                                        NULL, 0,
911                                                                        keyStr,
912                                                                        NULL,
913                                                                        NULL);
914                                 ncount++;
915                         }
916
917                         if (item_data) {
918                                 if (j == 0) {
919                                         item_data->group_style = SETTING_GROUP_STYLE_TOP;
920                                 } else if (j == setting_cfg_get_menu_length(i) - 1) {
921                                         item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
922                                 } else {
923                                         item_data->group_style = SETTING_GROUP_STYLE_CENTER;
924                                 }
925
926                                 if (index == 0) {
927                                         item_data->group_style = SETTING_GROUP_STYLE_TOP;
928                                 }
929                                 index++;
930                         }
931                 }
932         }
933         //end group, only display in setting main view
934 #if SUPPORT_MORE_ITEM_FUNCTION
935                 if (SETTING_VIEW_MAIN == ad->view_load && MAIN_PROFILE_PREFERRED == ad->profile_type && idx_second_menu > 0)
936                 {
937                         char sub_text[MAX_COMMON_BUFFER_LEN] = {0, };
938                         int idx = 0;
939                         while (idx < MAX_MORE_MENU_NUM && ad->more_system_menus[idx])
940                         {
941                                 if (idx != 0)
942                                 {
943                                         safeStrNCat(sub_text, ", ", MAX_COMMON_BUFFER_LEN);
944                                 }
945                                 safeStrNCat(sub_text, _(ad->more_system_menus[idx]), MAX_COMMON_BUFFER_LEN);
946                                 idx++;
947                         }
948
949                         ad->data_moreSystem =
950                                 setting_create_Gendial_field_groupitem(ad->main_genlist,
951                                                                        &(ad->itc[GENDIAL_Type_2text_3]),
952                                                                        NULL,
953                                                                        setting_main_click_list_more_cb,
954                                                                        ad,
955                                                                        SWALLOW_Type_INVALID,
956                                                                        NULL,
957                                                                        NULL,
958                                                                        0,
959                                                                        KeyStr_MoreSystem,
960                                                                        sub_text,
961                                                                        NULL);
962                         __BACK_POINTER_SET(ad->data_moreSystem);
963
964                         /* if has <more ..> item , change the last item_date to SETTING_GROUP_STYLE_CENTER*/
965                         if (item_data && index > 1) {
966                                 item_data->group_style = SETTING_GROUP_STYLE_CENTER;
967                         }
968                         ad->data_moreSystem->group_style = SETTING_GROUP_STYLE_BOTTOM;
969
970                         item_data = ad->data_moreSystem;
971                         index++;
972                 }
973 #endif
974         if (index == 1) {
975                 item_data->group_style = SETTING_GROUP_STYLE_NONE;
976         } else if (index == 2) {
977                 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
978         }
979 }
980
981 static void __load_system_level0_list(void *data)
982 {
983         setting_main_appdata *ad = data;
984         __load_system_menu_list(ad, Cfg_Item_Pos_Level0, ad->main_genlist);
985 }
986
987 static void __load_system_level_all_list(void *data)
988 {
989         SETTING_TRACE_BEGIN;
990         setting_main_appdata *ad = data;
991         __load_system_menu_list(ad, Cfg_Item_Pos_Level_All, ad->main_genlist);
992 }
993
994 static void __load_applications_menu_list(void *data,
995                                           Cfg_Item_Position inputPos)
996 {
997         SETTING_TRACE_BEGIN;
998         SETTING_TRACE_DEBUG("pos :%d", inputPos);
999         setting_main_appdata *ad = data;
1000
1001         bool is_emulator = isEmulBin();
1002
1003         //group title
1004         setting_create_Gendial_field_group_titleItem(ad->main_genlist,
1005                                                      &(ad->itc[GENDIAL_Type_group_item]),
1006                                                      NULL,
1007                                                      ELM_GENLIST_ITEM_NONE,
1008                                                      KeyStr_Applications, NULL);
1009         char *keyStr = NULL;
1010         char *icon_path = NULL;
1011         char *ug_args = NULL;
1012         Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
1013         int i, j;
1014
1015         Setting_GenGroupItem_Data *item_data = NULL;
1016         int index = 0;
1017         for (i = 0; i < setting_cfg_get_category_length(); i++) {
1018                 if (safeStrCmp
1019                     (setting_cfg_get_category_name(i), KeyStr_Applications))
1020                         continue;
1021
1022                 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
1023                         keyStr = setting_cfg_get_keyname_idx(i, j);
1024                         icon_path = setting_cfg_get_icon_path_idx(i, j);
1025                         ug_args = setting_cfg_get_ug_args_idx(i, j);
1026                         tmpPos =
1027                             (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
1028
1029                         if (Cfg_Item_Pos_Level_All == inputPos) {
1030                         } else if (inputPos != tmpPos) {        /* not in the inputPos level */
1031                                 continue;
1032                         }
1033
1034                         if (is_emulator) {
1035                                  /* hide all except Email */
1036                                 if (safeStrCmp(KeyStr_Email, keyStr)) {
1037                                         continue;
1038                                 } else {
1039                                         /* do nothing */
1040                                 }
1041                         }
1042
1043                         item_data = setting_create_Gendial_field_groupitem(ad->main_genlist,
1044                                                                &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1045                                                                NULL,
1046                                                                setting_main_click_list_ex_ug_cb,
1047                                                                ug_args,
1048                                                                SWALLOW_Type_INVALID,
1049                                                                icon_path, NULL,
1050                                                                0, keyStr, NULL,
1051                                                                NULL);
1052
1053                         if (item_data) {
1054                                 if (j == 0) {
1055                                         item_data->group_style = SETTING_GROUP_STYLE_TOP;
1056                                 } else if (j == setting_cfg_get_menu_length(i) - 1) {
1057                                         item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
1058                                 } else {
1059                                         item_data->group_style = SETTING_GROUP_STYLE_CENTER;
1060                                 }
1061
1062                                 if (index == 0) {
1063                                         item_data->group_style = SETTING_GROUP_STYLE_TOP;
1064                                 }
1065                                 index++;
1066                         }
1067                 }
1068         }
1069
1070         if (index == 1) {
1071                 item_data->group_style = SETTING_GROUP_STYLE_NONE;
1072         } else if (index == 2) {
1073                 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
1074         }
1075
1076         SETTING_TRACE_END;
1077 }
1078
1079 static void __load_applications_level0_list(void *data)
1080 {
1081         setting_main_appdata *ad = data;
1082         __load_applications_menu_list(ad, Cfg_Item_Pos_Level0);
1083 }
1084
1085 static void __load_applications_level_all_list(void *data)
1086 {
1087         SETTING_TRACE_BEGIN;
1088         setting_main_appdata *ad = data;
1089         __load_applications_menu_list(ad, Cfg_Item_Pos_Level_All);
1090 }
1091
1092
1093 bool is_3rdapp_installed_setting_cfg(char* pkgname)
1094 {
1095         SETTING_TRACE_BEGIN;
1096         char path[512];
1097
1098         SETTING_TRACE("1");
1099         if (snprintf(path, 512, PLUGIN_PREFIX"/apps/%s/setting/setting.xml", pkgname) < 0)
1100                 return false;
1101
1102         struct stat st;
1103         bool result_opt = false;
1104
1105         if(stat(path, &st) == 0) {
1106                 result_opt = true;
1107         } else {
1108                 SETTING_TRACE_ERROR(" %s is *NOT* present\n", path);
1109                 result_opt = false;
1110         }
1111
1112         return result_opt;
1113 }
1114
1115 /**
1116  * @param data
1117  * ex) name : AppSetting4
1118  * ex) pkgname : UBKFwQidax.AppSetting4
1119  */
1120 static void draw_3rdapp(void* data, char* name, char* pkgname)
1121 {
1122         SETTING_TRACE_BEGIN;
1123         SETTING_TRACE(" name : %s", name);
1124         SETTING_TRACE(" pkgname : %s", pkgname);
1125
1126         setting_main_appdata *ad = data;
1127
1128         //3rd cfg
1129         char fullpath[512];
1130         if (snprintf(fullpath, 512,  PLUGIN_PREFIX"/apps/%s/setting/setting.xml", pkgname) < 0)
1131                 return;
1132
1133         SETTING_TRACE(" fullpath : %s", fullpath);
1134
1135         if (ad)
1136         {
1137                 char* plugin_path =  strdup(fullpath);
1138                 Setting_GenGroupItem_Data * plugin_node = setting_create_Gendial_field_groupitem(ad->main_genlist,
1139                                                            &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1140                                                            NULL,
1141                                                            setting_main_click_list_plugin_cb,
1142                                                            ad,
1143                                                            SWALLOW_Type_INVALID,
1144                                                            IMG_DefaultIcon, NULL,
1145                                                            0, name, plugin_path,        // <<-- refactoring
1146                                                            NULL);
1147         }
1148         SETTING_TRACE_END;
1149 }
1150
1151 /**
1152  *
1153  * ail code here
1154  */
1155 static ail_cb_ret_e __download_apps_cb(ail_appinfo_h ai, void* data)
1156 {
1157         DrawAppInfo* pinfo = (DrawAppInfo*)data;
1158     char *id;
1159
1160         if (AIL_ERROR_OK == ail_appinfo_get_str(ai, AIL_PROP_PACKAGE_STR, &id))
1161         {
1162                 SETTING_TRACE(" 3rd party - app name : ----> %s ", id);
1163         }
1164
1165     ail_appinfo_h handle;
1166
1167     char *name = NULL;
1168     char *icon = NULL;
1169     int installed_time;
1170     bool nodisplay = false;
1171     bool removable = true;
1172
1173     if (AIL_ERROR_OK == ail_package_get_appinfo(id, &handle))
1174         {
1175                 if (AIL_ERROR_OK != ail_appinfo_get_str(handle, AIL_PROP_NAME_STR, &name))
1176                         SETTING_TRACE("cannot get name");
1177
1178                 if (AIL_ERROR_OK != ail_appinfo_get_str(handle, AIL_PROP_ICON_STR, &icon))
1179                         SETTING_TRACE("cannot get icon");
1180
1181                 if (AIL_ERROR_OK != ail_appinfo_get_bool(handle, AIL_PROP_NODISPLAY_BOOL, &nodisplay))
1182                         SETTING_TRACE("cannot get nodisplay");
1183
1184                 if (AIL_ERROR_OK != ail_appinfo_get_bool(handle, AIL_PROP_X_SLP_REMOVABLE_BOOL, &removable))
1185                         SETTING_TRACE("cannot get removable");
1186
1187                 if (AIL_ERROR_OK != ail_appinfo_get_int(handle, AIL_PROP_X_SLP_INSTALLEDTIME_INT, &installed_time))
1188                         SETTING_TRACE("cannot get installed_time");
1189
1190                 //SETTING_TRACE("installed_time = %d ", installed_time);
1191                 if (installed_time != 0 && is_3rdapp_installed_setting_cfg(id) == true )
1192                 {
1193                         SETTING_TRACE(" 3rd party - app name : ----> id : %s --- name : %s ", id, name);
1194                         SETTING_TRACE(" 3rd party - icon : ----> %s ", icon);
1195                         SETTING_TRACE(" 3rd party - nodisplay :  ----> %d ", nodisplay);
1196                         pinfo->ncount++;
1197
1198                         // draw code here
1199                         if (pinfo->draw_app != NULL)
1200                         {
1201                                 SETTING_TRACE(">>> pkg name --> %s ", id);
1202                                 pinfo->draw_app(pinfo->data, strdup(name)/* appname*/, strdup(id)/* pkg_name*/);
1203                         }
1204                 }
1205         }
1206         SETTING_TRACE_END;
1207     return AIL_CB_RET_CONTINUE;
1208 }
1209
1210
1211 /**
1212  * get 3rd party applist from AIL & searching dir/file by the defined rule
1213  * @param data ad
1214  * if data is NULL --> just get how many items are there
1215  * if data is NOT NULL --> draw UI code
1216  */
1217 static int get_downloadapp_list(void* data)
1218 {
1219         SETTING_TRACE_BEGIN;
1220
1221         setting_main_appdata *ad = data;
1222
1223         int ncount = 0;
1224         ail_filter_h f;
1225
1226         DrawAppInfo* pinfo = (DrawAppInfo*)malloc(sizeof(DrawAppInfo));
1227
1228         if (pinfo) {
1229                 pinfo->ncount = 0;
1230                 pinfo->draw_app = draw_3rdapp;
1231                 pinfo->data = ad;
1232
1233                 if (ail_filter_new(&f) == AIL_ERROR_OK)
1234                 {
1235                         if (ail_filter_add_bool(f, AIL_PROP_NODISPLAY_BOOL, false) != AIL_ERROR_OK)
1236                         {
1237                                 SETTING_TRACE("ail filter error");
1238
1239                                 free(pinfo);
1240                                 pinfo = NULL;
1241
1242                                 ail_filter_destroy(f);
1243                                 return 0;
1244                         }
1245
1246                         ail_filter_list_appinfo_foreach(f, __download_apps_cb, pinfo);
1247                         //---------------------------------------------------------------
1248                         ail_filter_destroy(f);
1249                 }
1250                 ncount = pinfo->ncount;
1251
1252                 free(pinfo);
1253                 pinfo = NULL;
1254         }
1255
1256         SETTING_TRACE_END;
1257         return ncount;
1258 }
1259
1260 static int __get_downloaded_apps_num(Cfg_Item_Position inputPos)
1261 {
1262         SETTING_TRACE_BEGIN;
1263         SETTING_TRACE_DEBUG("pos :%d", inputPos);
1264         int downloaded_apps_num = 0;
1265         Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
1266         int i, j;
1267         for (i = 0; i < setting_cfg_get_category_length(); i++) {
1268                 if (safeStrCmp
1269                     (setting_cfg_get_category_name(i), KeyStr_DownloadedAPPs))
1270                         continue;
1271
1272                 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
1273                         tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
1274                         if (Cfg_Item_Pos_Level_All == inputPos) {
1275                         } else if (inputPos != tmpPos) {        /* not in the inputPos level */
1276                                 continue;
1277                         }
1278
1279                         downloaded_apps_num++;
1280                 }
1281         }
1282
1283         // draw UI with AUL code
1284 #ifdef PLUGIN
1285         downloaded_apps_num = get_downloadapp_list(NULL);
1286         SETTING_TRACE("Exit %s with return[%d]",__FUNCTION__, downloaded_apps_num);
1287 #endif
1288
1289         SETTING_TRACE("Exit %s with return[%d]",__FUNCTION__, downloaded_apps_num);
1290         return downloaded_apps_num;
1291 }
1292
1293
1294 static void __load_downloaded_apps_menu_list(void *data,
1295                                              Cfg_Item_Position inputPos)
1296 {
1297         SETTING_TRACE_BEGIN;
1298         SETTING_TRACE_DEBUG("pos :%d", inputPos);
1299         setting_main_appdata *ad = data;
1300
1301         // if the number of download apps is zero, display a bottom seperator
1302         if (0 == __get_downloaded_apps_num(inputPos)) {
1303                 Elm_Object_Item *item = NULL;
1304                 item = elm_genlist_item_append(ad->main_genlist, &itc_bottom_seperator, NULL, NULL,
1305                                         ELM_GENLIST_ITEM_NONE, NULL, NULL);
1306                 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1307                 return;
1308         }
1309
1310         //group title
1311         setting_create_Gendial_field_group_titleItem(ad->main_genlist,
1312                                                      &(ad->itc[GENDIAL_Type_group_item]),
1313                                                      NULL,
1314                                                      ELM_GENLIST_ITEM_NONE,
1315                                                      KeyStr_DownloadedAPPs,
1316                                                      NULL);
1317         get_downloadapp_list(ad);
1318         //SETTING_TRACE("Exit %s with return[%d]",__FUNCTION__, downloaded_apps_num);
1319         SETTING_TRACE_END;
1320 }
1321
1322 static void __load_downloaded_apps_level0_list(void *data)
1323 {
1324         setting_main_appdata *ad = data;
1325         __load_downloaded_apps_menu_list(ad, Cfg_Item_Pos_Level0);
1326 }
1327
1328 static void __load_downloaded_apps_level_all_list(void *data)
1329 {
1330         SETTING_TRACE_BEGIN;
1331         setting_main_appdata *ad = data;
1332         __load_downloaded_apps_menu_list(ad, Cfg_Item_Pos_Level_All);
1333 }
1334
1335 static void __check_all_view_clear(void *data)
1336 {
1337         SETTING_TRACE_BEGIN;
1338         ret_if(!data);
1339         setting_main_appdata *ad = data;
1340         if (ad->item_check_list) {
1341                 eina_list_free(ad->item_check_list);
1342                 ad->item_check_list = NULL;
1343         }
1344
1345         ad->gl_sel_all = NULL;
1346         ad->edit_preferred_genlist  = NULL;
1347         //ad->controllbar_all_check = NULL;
1348         ad->check_all_item =NULL;
1349 }
1350
1351 static void __prefered_buttons_cb(void *data, Evas_Object *obj, void *event_info)
1352 {
1353         SETTING_TRACE_BEGIN;
1354         ret_if(!data);
1355         setting_main_appdata *ad = (setting_main_appdata *) data;
1356         const char *key = NULL;
1357
1358         key = elm_object_text_get(obj);
1359         setting_retm_if(data == NULL
1360                         || key == NULL, "data == NULL || key == NULL");
1361
1362         SETTING_TRACE_DEBUG("press button: %s", key);
1363
1364         // "Done"
1365         if (!safeStrCmp(key, dgettext("sys_string", "IDS_COM_SK_DONE"))) {
1366
1367                 if (ad->profile_type == MAIN_PROFILE_ALL) {
1368                         SETTING_TRACE_DEBUG("Cancel to hide current view.");
1369                         setting_try_save_check_list(ad);        /* need to save too */
1370                         __check_all_view_clear(ad);
1371                         elm_naviframe_item_pop(ad->navibar_main);       // pop(preferred) --> main
1372                         return;
1373                 }
1374
1375                 // MAIN_PROFILE_PREFERRED and Etc
1376                 // redraw setting-main
1377                 setting_try_save_check_list(ad);
1378                 elm_naviframe_item_pop(ad->navibar_main);  // pop (preferred) -> main
1379
1380                 //After the view is popuped, all the object handlers should be reset NULL.
1381                 __check_all_view_clear(ad);
1382                 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1383                 ad->load_fns[Func_Type_System] = __load_system_level0_list;
1384                 ad->load_fns[Func_Type_Apps] = __load_applications_level0_list;
1385                 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level0_list;
1386                 int ret = setting_main_refresh(ad);
1387                 ret_if(ret != SETTING_RETURN_SUCCESS);
1388                 return;
1389         }
1390
1391         // "Cancel"
1392         if (!safeStrCmp(key, setting_gettext("IDS_COM_SK_CANCEL"))
1393             || !safeStrCmp(key, dgettext("sys_string", "IDS_COM_BODY_BACK"))) {
1394                 SETTING_TRACE_DEBUG("Cancel to hide current view.");
1395                 elm_naviframe_item_pop(ad->navibar_main);
1396                 //After the view is popuped, all the object handlers should be reset NULL.
1397                 __check_all_view_clear(ad);
1398                 return;
1399         }
1400 }
1401
1402
1403 static void __btnback_clicked_cb(void *data, Evas_Object *obj, void *event_info)
1404 {
1405         SETTING_TRACE_BEGIN;
1406         ret_if(!data);
1407         setting_main_appdata *ad = (setting_main_appdata *) data;
1408         elm_win_lower(ad->win_main);
1409 }
1410
1411 static Eina_Bool __refresh_on_idle(void *data)
1412 {
1413         SETTING_TRACE_BEGIN;
1414         retv_if(!data, FALSE);
1415         setting_main_appdata *ad = data;
1416         if (MAIN_PROFILE_ALL == ad->profile_type)
1417         {
1418                 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level_all_list;
1419                 ad->load_fns[Func_Type_System] = __load_system_level_all_list;
1420                 ad->load_fns[Func_Type_Apps] = __load_applications_level_all_list;
1421                 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level_all_list;
1422                 setting_main_refresh(ad);
1423         }
1424         else if (MAIN_PROFILE_PREFERRED == ad->profile_type)
1425         {
1426                 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1427                 ad->load_fns[Func_Type_System] = __load_system_level0_list;
1428                 ad->load_fns[Func_Type_Apps] = __load_applications_level0_list;
1429                 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level0_list;
1430                 setting_main_refresh(ad);
1431         }
1432         ad->refresh_idler = NULL;
1433         return FALSE;
1434 }
1435
1436 static void __allFrequent_btn_cb(void *data, Evas_Object *obj, void *event_info)
1437 {
1438         SETTING_TRACE_BEGIN;
1439         ret_if(!data || !obj);
1440         setting_main_appdata *ad = (setting_main_appdata *) data;
1441         //if already has the task,cancel the old task with ecore_idler_del,then add new idler task.
1442         if (ad->refresh_idler) {
1443                 ecore_idler_del(ad->refresh_idler);
1444                 ad->refresh_idler = NULL;
1445         }
1446
1447         //Elm_Object_Item *item = elm_toolbar_first_item_get(obj);
1448         //ret_if(!item);
1449         if (MAIN_PROFILE_ALL == ad->profile_type)
1450         {
1451                 SETTING_TRACE("Change to Preferred view");
1452                 elm_object_text_set(obj, _(ALL_STR));
1453                 ad->profile_type = MAIN_PROFILE_PREFERRED;
1454         }
1455         else if (MAIN_PROFILE_PREFERRED == ad->profile_type)
1456         {
1457                 SETTING_TRACE("Change to ALL view");
1458                 elm_object_text_set(obj, _(PREFERRED_STR));
1459                 ad->profile_type = MAIN_PROFILE_ALL;
1460         }
1461         else
1462         {
1463                 return;
1464         }
1465         ad->refresh_idler = ecore_idler_add((Ecore_Task_Cb) __refresh_on_idle, ad);
1466 }
1467
1468 static void __setting_show_title_toolbar(void *data, Evas_Object *obj, void *event_info)
1469 {
1470     SETTING_TRACE_BEGIN;
1471     //elm_object_item_signal_emit(data, "elm,state,sip,shown", "");
1472     setting_main_appdata *ad = (setting_main_appdata *) data;
1473
1474     Evas_Object *navi_bar = NULL;
1475
1476     if (ad->isInUGMode && ad->ug) {
1477         Evas_Object *layout = (Evas_Object *)ug_get_layout(ad->ug);
1478         if (layout)
1479             navi_bar = elm_object_part_content_get(layout, "elm.swallow.content");
1480     } else {
1481         navi_bar = ad->navibar_main;
1482     }
1483
1484     const char *support = evas_object_data_get(navi_bar, "sip.naviframe.title_obj");
1485     SETTING_TRACE("support:%s", support);
1486     if (support)
1487     {
1488         Elm_Object_Item *top_item = elm_naviframe_top_item_get(navi_bar);
1489         if (top_item)
1490             elm_object_item_signal_emit(top_item, "elm,state,sip,shown", "");
1491     }
1492 }
1493
1494 static void __setting_hide_title_toolbar(void *data, Evas_Object *obj, void *event_info)
1495 {
1496     SETTING_TRACE_BEGIN;
1497     //elm_object_item_signal_emit(data, "elm,state,sip,hidden", "");
1498     setting_main_appdata *ad = (setting_main_appdata *) data;
1499
1500     Evas_Object *navi_bar = NULL;
1501
1502     if (ad->isInUGMode && ad->ug) {
1503         Evas_Object *layout = (Evas_Object *)ug_get_layout(ad->ug);
1504         if (layout)
1505             navi_bar = elm_object_part_content_get(layout, "elm.swallow.content");
1506     } else {
1507         navi_bar = ad->navibar_main;
1508     }
1509
1510     const char *support = evas_object_data_get(navi_bar, "sip.naviframe.title_obj");
1511
1512     SETTING_TRACE("support:%s", support);
1513     if (support)
1514     {
1515         Elm_Object_Item *top_item = elm_naviframe_top_item_get(navi_bar);
1516         if (top_item)
1517             elm_object_item_signal_emit(top_item, "elm,state,sip,hidden", "");
1518     }
1519 }
1520
1521 static bool __setting_create_main_view(void *data)
1522 {
1523         SETTING_TRACE_BEGIN;
1524         /* error check */
1525         setting_retvm_if(data == NULL, FALSE, "data == NULL");
1526         setting_main_appdata *ad = (setting_main_appdata *) data;
1527
1528         Evas_Object *conform = elm_conformant_add(ad->win_main);
1529         ad->ly_main = setting_create_win_layout(ad->win_main, ad->win_main);
1530         evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1531         evas_object_size_hint_align_set(conform, EVAS_HINT_FILL, EVAS_HINT_FILL);
1532         elm_win_resize_object_add(ad->win_main, conform);
1533         elm_object_content_set(conform, ad->ly_main);
1534         evas_object_show(conform);
1535
1536     evas_object_smart_callback_add(conform, "virtualkeypad,state,on", __setting_show_title_toolbar, ad);
1537     evas_object_smart_callback_add(conform, "virtualkeypad,state,off", __setting_hide_title_toolbar, ad);
1538
1539         elm_win_conformant_set(ad->win_main, EINA_TRUE);
1540
1541         ad->conform = conform;
1542
1543         ad->navibar_main = setting_create_navi_bar(ad->ly_main);
1544
1545         ad->main_genlist = elm_genlist_add(ad->navibar_main);
1546         elm_object_style_set(ad->main_genlist, "dialogue");
1547         retvm_if(ad->main_genlist == NULL, FALSE,
1548                  "Cannot set scroller object as contento of layout");
1549
1550         //elm_genlist_homogeneous_set(ad->main_genlist, EINA_TRUE);
1551         elm_genlist_clear(ad->main_genlist);    /* first to clear list */
1552         evas_object_smart_callback_add(ad->main_genlist, "realized", __gl_realized, ad);
1553
1554         setting_create_navi_bar_buttons(_("IDS_COM_BODY_SETTINGS"),
1555                                         _("IDS_COM_BODY_BACK"), NULL, _("IDS_ST_OPT_ALL"),
1556                                         __btnback_clicked_cb, NULL,
1557                                         __allFrequent_btn_cb, ad, ad->main_genlist,
1558                                         ad->navibar_main, NULL);
1559
1560         ad->profile_type = MAIN_PROFILE_PREFERRED;
1561         ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1562         ad->load_fns[Func_Type_System] = __load_system_level0_list;
1563         ad->load_fns[Func_Type_Apps] = __load_applications_level_all_list;
1564         ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level_all_list;
1565         setting_main_refresh(ad);
1566         return TRUE;
1567 }
1568
1569 static bool __setting_create_prefered_view(void *data)
1570 {
1571         SETTING_TRACE_BEGIN;
1572         /* error check */
1573         setting_retvm_if(data == NULL, FALSE, "data == NULL");
1574         setting_main_appdata *ad = (setting_main_appdata *) data;
1575
1576         /* the genlist will be destroyed with its parent view, when using elm_naviframe_item_pop() to destroy the view. */
1577         ad->edit_preferred_genlist = elm_genlist_add(ad->win_main);
1578         elm_object_style_set(ad->edit_preferred_genlist, "dialogue");
1579         elm_genlist_clear(ad->edit_preferred_genlist);  /* first to clear list */
1580
1581         /*  [UI] edit preffered view */
1582         Evas_Object *sub_layout = elm_layout_add(ad->win_main);
1583         elm_object_style_set(sub_layout, "dialogue");
1584         elm_layout_file_set(sub_layout, SETTING_THEME_EDJ_NAME, "search_layout");
1585         evas_object_size_hint_weight_set(sub_layout, EVAS_HINT_EXPAND, 0.0);
1586         evas_object_show(sub_layout);
1587
1588         ad->gl_sel_all = elm_genlist_add(ad->win_main);
1589         elm_genlist_clear(ad->gl_sel_all);      /* first to clear list */
1590         elm_genlist_bounce_set(ad->gl_sel_all, 0, 0);
1591
1592         elm_object_part_content_set(sub_layout, "search_bar", ad->gl_sel_all);  /*  add 'Select all' */
1593         elm_object_part_content_set(sub_layout, "search_list", ad->edit_preferred_genlist);     /*  add Genlist */
1594
1595         /*  push, not create */
1596         setting_push_layout_navi_bar(_(EDIT_PREFERRED_STR),
1597                                      _("IDS_COM_SK_CANCEL"),
1598                                      _("IDS_COM_SK_DONE"), NULL,
1599                                      __prefered_buttons_cb, __prefered_buttons_cb, NULL, ad,
1600                                      sub_layout, ad->navibar_main,
1601                                      NULL);
1602         SETTING_TRACE_END;
1603         return TRUE;
1604 }
1605
1606 static void setting_main_tapi_event_cb(TapiHandle *handle, int result, void *data, void *user_data)
1607 {
1608         SETTING_TRACE_BEGIN;
1609         ret_if(!user_data);
1610         setting_main_appdata *ad = user_data;
1611         ad->b_fm_requesting = FALSE;
1612         SETTING_TRACE("result:%d", result);
1613
1614         int err = 0;
1615         switch (result) {
1616         case TAPI_POWER_FLIGHT_MODE_RESP_ON:
1617
1618                 setting_set_bool_slp_key(BOOL_SLP_SETTING_FLIGHT_MODE,
1619                                          SETTING_ON_OFF_BTN_ON, &err);
1620
1621                 //If Setting has validate operation (fm_waiting_op == FM_LEAVE) to process, process it.
1622                 //Otherwise, do nothing
1623                 if (FM_LEAVE == ad->fm_waiting_op)
1624                 {
1625                         //Send the latest operation
1626                         ad->fm_waiting_op = FM_INVALID;
1627                         err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
1628                         setting_retm_if(err != TAPI_API_SUCCESS,
1629                                         "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
1630
1631                         //sucessfully sent,
1632                         ad->b_fm_requesting = TRUE;
1633
1634                 }
1635                 break;
1636
1637         case TAPI_POWER_FLIGHT_MODE_RESP_OFF:
1638
1639                 setting_set_bool_slp_key(BOOL_SLP_SETTING_FLIGHT_MODE,
1640                                          SETTING_ON_OFF_BTN_OFF, &err);
1641
1642                 //If Setting has validate operation (here, fm_waiting_op == FM_ENTER) to process,process it.
1643                 //Otherwise, do nothing
1644                 if (FM_ENTER == ad->fm_waiting_op)
1645                 {
1646                         //Send the latest operation
1647                         ad->fm_waiting_op = FM_INVALID;
1648                         err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
1649                         setting_retm_if(err != TAPI_API_SUCCESS,
1650                                         "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
1651
1652                         //sucessfully sent,
1653                         ad->b_fm_requesting = TRUE;
1654                 }
1655
1656                 break;
1657
1658         case TAPI_POWER_FLIGHT_MODE_RESP_FAIL:
1659                 //Setting has a validate operation to process, Send the operation request
1660                 if (FM_ENTER == ad->fm_waiting_op)
1661                 {
1662                         ad->fm_waiting_op = FM_INVALID;
1663                         err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
1664
1665                         setting_retm_if(err != TAPI_API_SUCCESS,
1666                                         "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
1667                         ad->b_fm_requesting = TRUE;
1668                 }
1669                 else if (FM_LEAVE == ad->fm_waiting_op)
1670                 {
1671                         ad->fm_waiting_op = FM_INVALID;
1672                         err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
1673
1674                         setting_retm_if(err != TAPI_API_SUCCESS,
1675                                         "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
1676                         ad->b_fm_requesting = TRUE;
1677                 }
1678                 else //Current requset is the last one, Setting needs to notify user
1679                 {
1680                         setting_create_popup_without_btn(ad, ad->win_main,
1681                                              _("IDS_COM_POP_ERROR"),
1682                                              _("IDS_ST_POP_UNABLE_TO_TURN_ON_FLIGHT_MODE_VODA"),
1683                                              NULL, POPUP_INTERVAL,
1684                                              FALSE, FALSE);
1685
1686                         //It is need to rollback the status,
1687                         if (ad->data_flight) {
1688                                 ad->data_flight->chk_status = !ad->data_flight->chk_status;
1689                                 elm_check_state_set(ad->data_flight->eo_check, ad->data_flight->chk_status);
1690                         }
1691                         return;
1692                 }
1693
1694                 //sucessfully sent,
1695                 ad->b_fm_requesting = TRUE;
1696
1697                 break;
1698
1699         case TAPI_POWER_FLIGHT_MODE_RESP_MAX:
1700                 setting_create_popup_without_btn(ad, ad->win_main,
1701                                      _("IDS_COM_POP_ERROR"),
1702                                      _("IDS_COM_POP_UNEXPECTED_ERROR"),
1703                                      NULL, POPUP_INTERVAL, FALSE, FALSE);
1704
1705                 //It is need to rollback the status,
1706                 if (ad->data_flight) {
1707                         ad->data_flight->chk_status = !ad->data_flight->chk_status;
1708                         elm_check_state_set(ad->data_flight->eo_check, ad->data_flight->chk_status);
1709                 }
1710                 break;
1711         default:
1712                 /* do nothing */
1713                 SETTING_TRACE_DEBUG("default");
1714                 if(ad->data_flight)
1715                         setting_set_bool_slp_key(BOOL_SLP_SETTING_FLIGHT_MODE,
1716                                          ad->data_flight->chk_status, &err);
1717                 break;
1718         }
1719         return;
1720 }
1721
1722 static int setting_main_refresh(void *data)
1723 {
1724         SETTING_TRACE_BEGIN;
1725         setting_main_appdata *ad = (setting_main_appdata *) data;
1726         elm_genlist_clear(ad->main_genlist);    /* first to clear list */
1727
1728 #if 0
1729         if (is_ug_installed_by_ug_args("rcs-config"))
1730         {
1731                 Elm_Object_Item *item = elm_genlist_item_append(ad->main_genlist, &itc_seperator, NULL, NULL,
1732                                             ELM_GENLIST_ITEM_NONE, NULL, NULL);
1733                 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1734                 setting_create_Gendial_field_groupitem(ad->main_genlist,
1735                                                        &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1736                                                        NULL,
1737                                                        setting_main_click_list_ex_ug_cb,
1738                                                        "rcs-config",
1739                                                        SWALLOW_Type_INVALID,
1740                                                        IMG_Joyn, NULL,
1741                                                        0, KeyStr_Joyn, NULL,
1742                                                        NULL);
1743         }
1744 #endif
1745
1746         int i;
1747         for(i = Func_Type_Connectivity; i < Func_Type_MAX; i++)
1748                 (ad->load_fns[i]) (ad);
1749
1750         memset(ad->load_fns, 0, Func_Type_MAX *sizeof(menu_list_load_fn));
1751         SETTING_TRACE_END;
1752         return SETTING_RETURN_SUCCESS;
1753 }
1754
1755 static int setting_main_create(void *cb)
1756 {
1757         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1758
1759         setting_main_appdata *ad = (setting_main_appdata *) cb;
1760         g_main_ad = ad;
1761         //pass NULL to let TAPI access default module
1762         ad->handle = tel_init(NULL);
1763         if (!ad->handle) {
1764                 SETTING_TRACE_ERROR("*** [ERR] tel_init failed ***");
1765         } else {
1766                 SETTING_TRACE("tel_init ok[handle:%p]", ad->handle);
1767         }
1768         setting_create_Gendial_itc("dialogue/1text.1icon.2",
1769                                    &(ad->itc[GENDIAL_Type_1text_1icon_2]));
1770         setting_create_Gendial_itc("dialogue/1text.2icon",
1771                                    &(ad->itc[GENDIAL_Type_1text_2icon]));
1772         setting_create_Gendial_itc("dialogue/2text.1icon.3",
1773                                    &(ad->itc[GENDIAL_Type_1icon_2text]));
1774         setting_create_Gendial_itc("dialogue/1text.1icon.2",
1775                                    &(ad->itc[GENDIAL_Type_1text_2icon_2]));
1776         setting_create_Gendial_itc("dialogue/2text.2icon.3",
1777                                    &(ad->itc[GENDIAL_Type_2text_2icon_3]));
1778         setting_create_Gendial_itc("dialogue/title",
1779                                    &(ad->itc[GENDIAL_Type_group_item]));
1780         setting_create_Gendial_itc("select_all",
1781                                    &(ad->itc[GENDIAL_Type_sel_all]));
1782
1783         setting_create_Gendial_itc("dialogue/2text.3", &(ad->itc[GENDIAL_Type_2text_3]));
1784
1785         ad->view_type = SETTING_VIEW_MAIN;
1786         __setting_create_main_view(ad);
1787
1788         setting_view_main.is_create = 1;
1789
1790         setting_drawer_list_init();
1791         return SETTING_RETURN_SUCCESS;
1792 }
1793
1794 static int setting_main_destroy(void *cb)
1795 {
1796         SETTING_TRACE_BEGIN;
1797         /* error check */
1798         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1799
1800         setting_main_appdata *ad = (setting_main_appdata *) cb;
1801         if (0 == setting_view_main.is_create)
1802         {
1803                 //already not exsit
1804                 return SETTING_RETURN_SUCCESS;
1805         }
1806
1807     evas_object_smart_callback_del(ad->conform, "virtualkeypad,state,on", __setting_show_title_toolbar);
1808     evas_object_smart_callback_del(ad->conform, "virtualkeypad,state,off", __setting_hide_title_toolbar);
1809
1810         if (ad->refresh_idler) {
1811                 ecore_idler_del(ad->refresh_idler);
1812                 ad->refresh_idler = NULL;
1813         }
1814
1815         if (ad->handle) {
1816                 int tapi_ret = tel_deinit(ad->handle);
1817                 if (tapi_ret != TAPI_API_SUCCESS) {
1818                         SETTING_TRACE_DEBUG("*** [ERR] tel_deinit. [%d] ***", tapi_ret);
1819                 } else {
1820                         SETTING_TRACE("***  tel_deinit OK ");
1821                 }
1822                 ad->handle = NULL;
1823         }
1824
1825         /* then destroy the UI object. */
1826         if (ad->item_check_list) {
1827                 eina_list_free(ad->item_check_list);
1828                 ad->item_check_list = NULL;
1829         } else {
1830                 SETTING_TRACE("*** ad->item_check_list is NULL - abnormal state ");
1831         }
1832
1833         if (ad->ly_main) {
1834                 evas_object_del(ad->ly_main);
1835                 ad->ly_main = NULL;
1836         }
1837
1838         if (ad->flight_popup) {
1839                 evas_object_del(ad->flight_popup);
1840                 ad->flight_popup = NULL;
1841         }
1842
1843         evas_object_smart_callback_del(ad->main_genlist, "realized", __gl_realized);
1844
1845         setting_dbus_handler_fini();
1846         setting_drawer_list_fini();
1847
1848         setting_view_main.is_create = 0;
1849         SETTING_TRACE_END;
1850         return SETTING_RETURN_SUCCESS;
1851 }
1852
1853 static int setting_main_update(void *cb)
1854 {
1855         SETTING_TRACE_BEGIN;
1856
1857         /* error check */
1858         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1859
1860         setting_main_appdata *ad = (setting_main_appdata *) cb;
1861
1862         if (ad->ly_main != NULL) {
1863                 //evas_object_show(ad->ly_main);
1864         }
1865
1866         return SETTING_RETURN_SUCCESS;
1867 }
1868
1869 static int setting_main_cleanup(void *cb)
1870 {
1871         SETTING_TRACE_BEGIN;
1872         /* error check */
1873         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1874
1875         setting_main_appdata *ad = (setting_main_appdata *) cb;
1876
1877         if (ad->ly_main != NULL) {
1878                 //evas_object_hide(ad->ly_main);
1879         }
1880
1881         return SETTING_RETURN_SUCCESS;
1882 }
1883
1884 /* ***************************************************
1885  *
1886  *general func
1887  *
1888  ***************************************************/
1889
1890 void setting_update_gl_item(void* data)
1891 {
1892         SETTING_TRACE_BEGIN;
1893         setting_main_appdata *ad = data;
1894         retm_if(!data, "Invalid argument: data is NULL");
1895
1896         int nDx = 0;
1897         Eina_Bool bGlUpdate = EINA_FALSE;
1898         Setting_GenGroupItem_Data *item_to_update = NULL;
1899
1900         for(;nDx<GL_ITEM_MAX; nDx++) {
1901                 if(EINA_TRUE == ad->updateItems[nDx]) {
1902                         switch (nDx)
1903                         {
1904                         case GL_ITEM_WIFI:
1905                                 item_to_update = ad->data_wifi;
1906                                 bGlUpdate = EINA_TRUE;
1907                                 break;
1908                         case GL_ITEM_BT:
1909                                 item_to_update = ad->data_bt;
1910                                 bGlUpdate = EINA_TRUE;
1911                                 break;
1912                         case GL_ITEM_NFC:
1913                                 item_to_update = ad->data_nfc;
1914                                 bGlUpdate = EINA_TRUE;
1915                                 break;
1916                         case GL_ITEM_FLIGHT:
1917                                 item_to_update = ad->data_flight;
1918                                 bGlUpdate = EINA_FALSE;
1919                                 break;
1920
1921
1922
1923
1924                         default: // other case
1925                                 continue;
1926                         }
1927
1928                         if (item_to_update) {
1929                                 SETTING_TRACE("gl update [%s], bGlUpdate:%d", _(item_to_update->keyStr), bGlUpdate);
1930                                 if(bGlUpdate) {
1931                                         SETTING_TRACE("gl update:%d", nDx);
1932                                         elm_object_item_data_set(item_to_update->item, item_to_update);
1933                                         elm_genlist_item_update(item_to_update->item);
1934                                 } else {
1935                                         SETTING_TRACE("chk update:%d", nDx);
1936                                         elm_check_state_set(item_to_update->eo_check, item_to_update->chk_status);
1937                                 }
1938                         }
1939
1940                         ad->updateItems[nDx] = EINA_FALSE;
1941                 } // if(EINA_TRUE == ad->updateItems[nDx])
1942
1943         }
1944
1945         SETTING_TRACE_END;
1946         return;
1947 }
1948
1949 void setting_main_destroy_ug_cb(ui_gadget_h ug, void *priv)
1950 {
1951         setting_main_appdata *ad = (setting_main_appdata *) priv;
1952         if (!ad)
1953                 return;         /*  do nothing if ad is NULL */
1954
1955         if (ug) {
1956                 ug_destroy(ug);
1957                 ad->ug = NULL;
1958         }
1959
1960         setting_main_click_list_item_reset_data(ad, NULL);
1961
1962         // update main genlist in unloading UG
1963         SETTING_TRACE("update main genlist in unloading UG");
1964         setting_update_gl_item(ad);
1965
1966         SETTING_TRACE_END;
1967 }
1968
1969 void setting_main_result_ug_cb(ui_gadget_h ug, service_h service,
1970                                       void *priv)
1971 {
1972         if (!priv) return;
1973
1974         // set default local automatically
1975         set_defaultLangICU();
1976 }
1977
1978 void setting_main_layout_ug_cb(ui_gadget_h ug, enum ug_mode mode,
1979                                       void *priv)
1980 {
1981         setting_main_appdata *ad = (setting_main_appdata *) priv;
1982         Evas_Object *base;
1983
1984         if (!priv)
1985                 return;
1986         SETTING_TRACE_BEGIN;
1987
1988         base = (Evas_Object *) ug_get_layout(ug);
1989         if (!base)
1990                 return;
1991
1992         switch (mode) {
1993         case UG_MODE_FULLVIEW:
1994                 evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,
1995                                                  EVAS_HINT_EXPAND);
1996                 evas_object_show(base);
1997                 break;
1998         default:
1999                 break;
2000         }
2001
2002         SETTING_TRACE_END;
2003 }
2004
2005 /* ***************************************************
2006  *
2007  *call back func
2008  *
2009  ***************************************************/
2010
2011 void setting_main_click_list_item_reset_data(void *data,
2012                                                     Evas_Object *obj)
2013 {
2014         SETTING_TRACE_BEGIN;
2015         setting_main_appdata *ad = (setting_main_appdata *) data;
2016
2017         ad->isInUGMode = FALSE;
2018
2019         SETTING_TRACE_END;
2020 }
2021
2022 void /* obj is the layout clicked */
2023 setting_main_click_list_item_ug_cb(void *data, Evas_Object *obj,
2024                                    char *ug_to_load, service_h svc,
2025                                    struct ug_cbs *cbs)
2026 {
2027         SETTING_TRACE_BEGIN;
2028         setting_main_appdata *ad = (setting_main_appdata *) data;
2029         if (!ug_to_load) {
2030                 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
2031                 return;
2032         }
2033 #if DISABLED_CODE
2034         char ug_file[PATH_MAX];
2035         if (snprintf
2036             (ug_file, PATH_MAX, "%s/libug-%s.so", SETTING_UG_PATH,
2037              ug_to_load) < 0)
2038                 return;
2039         SETTING_TRACE("ug_file:%s", ug_file);
2040         if (!ecore_file_exists(ug_file)) {
2041                 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
2042                 return;
2043         }
2044 #endif
2045         SETTING_TRACE("to create libug-%s.so", ug_to_load);
2046         ad->ug = ug_create(NULL, ug_to_load, UG_MODE_FULLVIEW, svc, cbs);
2047         if (ad->ug) {
2048                 ad->isInUGMode = TRUE;
2049                 memset(ad->cur_loaded_ug, 0x00, MAX_DISPLAY_NAME_LEN_ON_UI);
2050                 safeCopyStr(ad->cur_loaded_ug, ug_to_load, MAX_DISPLAY_NAME_LEN_ON_UI);
2051         } else {
2052
2053                 evas_object_show(ad->ly_main);
2054
2055                 SETTING_TRACE_ERROR("errno:%d", errno);
2056                 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
2057         }
2058         SETTING_TRACE_END;
2059 }
2060
2061 void
2062 setting_main_click_list_default_ug_cb(void *data, Evas_Object *obj,
2063                                       void *event_info)
2064 {
2065         setting_main_appdata *ad = data;
2066         setting_create_simple_popup(ad, ad->win_main, NULL,
2067                                           NO_UG_FOUND_MSG);
2068 }
2069
2070 void
2071 setting_main_click_list_usb_cb(void *data, Evas_Object *obj, void *event_info)
2072 {
2073         SETTING_TRACE_BEGIN;
2074         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2075
2076         int err;
2077         int value = -1;
2078         char *str_text = USB_NEED_OFF;
2079
2080         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2081 #if 0
2082         setting_get_int_slp_key(INT_SLP_SETTING_MOBILE_AP_STATUS, &value, &err);
2083         if (err != 0)
2084         {
2085                 SETTING_TRACE_ERROR("FAIL: VCONFKEY_MOBILE_HOTSPOT_MODE may not exist\n");
2086                 setting_main_click_list_ex_ug_cb(data, obj, item);
2087                 return;
2088         }
2089 #endif
2090         /* If mobile hotspot is on, going USB utilties is blocked by a popup*/
2091         if (value & VCONFKEY_MOBILE_HOTSPOT_MODE_USB)
2092         {
2093                 elm_genlist_item_selected_set(item, EINA_FALSE);
2094                 setting_create_simple_popup(g_main_ad, g_main_ad->win_main, NULL, (str_text));
2095         }
2096         else
2097         {
2098                 setting_main_click_list_ex_ug_cb(data, obj, item);
2099         }
2100
2101         SETTING_TRACE_END;
2102 }
2103
2104 void setting_main_click_list_more_cb(void *data, Evas_Object *obj, void *event_info)
2105 {
2106         SETTING_TRACE_BEGIN;
2107         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2108         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2109         elm_genlist_item_selected_set(item, EINA_FALSE);
2110         retm_if(data == NULL, "Invalid argument: data is NULL");
2111         setting_main_appdata *ad = data;
2112         Setting_GenGroupItem_Data *selected_item_data =
2113                     (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2114         SETTING_TRACE("selected_item_data->keyStr:%s", selected_item_data->keyStr);
2115         if (0 == safeStrCmp(selected_item_data->keyStr, KeyStr_MoreConnect))
2116         {
2117                 ad->view_load = SETTING_VIEW_CONNECTIVE_MORE;
2118         }
2119         else if (0 == safeStrCmp(selected_item_data->keyStr, KeyStr_MoreSystem))
2120         {
2121                 ad->view_load = SETTING_VIEW_SYSTEM_MORE;
2122         }
2123         else
2124         {
2125                 return;
2126         }
2127         setting_view_change(&setting_view_main, &setting_view_more_menu, ad);
2128 }
2129
2130
2131 void
2132 setting_main_click_list_ex_ug_cb(void *data, Evas_Object *obj,
2133                                  void *event_info)
2134 {
2135         SETTING_TRACE_BEGIN;
2136         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2137         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2138
2139         elm_genlist_item_selected_set(item, EINA_FALSE);
2140
2141         if (g_main_ad->ug) {
2142                 SETTING_TRACE
2143                     ("[ad->ug non-NULL]skip genlist click event!!");
2144
2145                 SETTING_TRACE_END;
2146                 return;
2147         }
2148
2149         if (NULL == data) {     /* pass NULL to ug_args when create setting.cfg. */
2150                 setting_create_simple_popup(g_main_ad,
2151                                           g_main_ad->win_main,
2152                                           NULL, NO_UG_FOUND_MSG);
2153                 SETTING_TRACE_END;
2154                 return;
2155         }
2156
2157         setting_main_appdata *ad = g_main_ad;
2158
2159         /*  if UG is created by Setting app, setting_main_click_list_ex_ug_cb is diabled. */
2160         if (ad->isInUGMode) {
2161                 SETTING_TRACE("isInUGMode : TRUE - another UG is running now.");
2162                 ad->isInUGMode = FALSE;
2163                 SETTING_TRACE_END;
2164                 return;
2165         } else {
2166                 SETTING_TRACE
2167                     ("isInUGMode : FALSE - another UG is NOT running now.")
2168         }
2169
2170         Setting_GenGroupItem_Data *selected_item_data =
2171             (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2172         setting_main_click_list_item_reset_data(ad, obj);
2173         const char *item_name = _(selected_item_data->keyStr);
2174         ret_if(!item_name);
2175
2176         struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
2177         setting_retm_if(!cbs, "calloc failed");
2178         cbs->layout_cb = setting_main_layout_ug_cb;
2179         cbs->result_cb = setting_main_result_ug_cb;
2180         cbs->destroy_cb = setting_main_destroy_ug_cb;
2181         cbs->priv = (void *)ad;
2182
2183         char *path = get_ug_path_from_ug_args(data);
2184         service_h svc = get_bundle_from_ug_args(data);
2185         setting_main_click_list_item_ug_cb(ad, obj, path, svc, cbs);
2186         if (path)
2187                 FREE(path);
2188         if (cbs)
2189                 FREE(cbs);
2190         path = NULL;
2191         cbs = NULL;
2192         service_destroy(svc);
2193 }
2194 void
2195 setting_main_click_list_plugin_cb(void *data, Evas_Object *obj,
2196                                  void *event_info)
2197 {
2198         SETTING_TRACE_BEGIN;
2199         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2200         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2201         elm_genlist_item_selected_set(item, EINA_FALSE);
2202         Setting_GenGroupItem_Data *selected_item = (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2203
2204         setting_main_appdata *ad = data;
2205
2206         ad->plugin_path = strdup(selected_item->sub_desc);
2207         SETTING_TRACE(" >> SELECTED plugin name : %s \n", ad->plugin_path);
2208
2209         PluginNode* plugin_node = setting_plugin_create(g_main_ad->navibar_main, g_main_ad->win_main);
2210         plugin_node->plugin_path = strdup(selected_item->sub_desc);
2211         ad->plugin_node = plugin_node; // the selected plugin name
2212
2213         setting_drawer_list_init();
2214         setting_dbus_handler_init( ad->plugin_node );
2215
2216         setting_plugin_load(plugin_node, (const char *)plugin_node->plugin_path);
2217 }
2218
2219 /**
2220  * @see [caller] setting_main_list_mouse_up_cb
2221  * @see [caller] setting_main_sel_list_mouse_up_cb
2222  */
2223 static void __rotate_lock_handler(int chk_status, setting_main_appdata *ad )
2224 {
2225         SETTING_TRACE_BEGIN;
2226         if( chk_status == 1)
2227         {
2228                 // toggle : 0 --> 1
2229                 int angle = elm_win_rotation_get(ad->win_main);
2230                 elm_win_rotation_with_resize_set(ad->win_main, angle);
2231         } else {
2232                 elm_win_rotation_with_resize_set(ad->win_main, 0);
2233         }
2234         vconf_set_bool(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, chk_status);
2235 }
2236
2237 /**
2238  * toggle cb
2239  */
2240 void setting_main_list_mouse_up_cb(void *data, Evas_Object *eo,
2241                                           void *event_info)
2242 {
2243         SETTING_TRACE_BEGIN;
2244         retm_if(data == NULL, "Data parameter is NULL");
2245         Setting_GenGroupItem_Data *list_item =
2246             (Setting_GenGroupItem_Data *) data;
2247         SETTING_TRACE("process item [%s]", list_item->keyStr);
2248         list_item->chk_status = elm_check_state_get(eo);        /* for update new state */
2249
2250         SETTING_TRACE("change radio[%s], status is:%d", _(list_item->keyStr),
2251                       list_item->chk_status);
2252         setting_main_appdata *ad = g_main_ad;
2253
2254         if (!safeStrCmp(KeyStr_UsePacketData, list_item->keyStr)) {
2255                 int err;
2256                 if (elm_check_state_get(eo)) {
2257                         setting_set_bool_slp_key
2258                             (BOOL_SLP_SETTING_USE_PACKET_DATA,
2259                              SETTING_ON_OFF_BTN_ON, &err);
2260                 } else {
2261                         setting_set_bool_slp_key
2262                             (BOOL_SLP_SETTING_USE_PACKET_DATA,
2263                              SETTING_ON_OFF_BTN_OFF, &err);
2264                 }
2265
2266         } else if (!safeStrCmp(KeyStr_Landscape, list_item->keyStr)) {
2267                 __rotate_lock_handler(list_item->chk_status, ad);
2268         }
2269
2270         return;
2271 }
2272
2273 /**
2274  * genlist touch cb
2275  */
2276 void setting_main_sel_list_mouse_up_cb(void *data, Evas_Object *eo,
2277                                               void *event_info)
2278 {
2279         SETTING_TRACE_BEGIN;
2280         setting_retm_if(data == NULL, "Data parameter is NULL");
2281
2282         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2283         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2284         elm_genlist_item_selected_set(item, 0);
2285         Setting_GenGroupItem_Data *list_item =
2286             (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2287
2288         list_item->chk_status = elm_check_state_get(list_item->eo_check);
2289
2290         /* new status */
2291     list_item->chk_status = !list_item->chk_status;
2292     elm_check_state_set(list_item->eo_check, list_item->chk_status);
2293
2294         setting_main_appdata *ad = (setting_main_appdata *) data;
2295         if (!safeStrCmp(KeyStr_UsePacketData, list_item->keyStr)) {
2296                 /* setting_reset_slp_key_by_status(eo, BOOL_SLP_SETTING_USE_PACKET_DATA); */
2297                 int err;
2298                 setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
2299                                          list_item->chk_status, &err);
2300
2301         } else if (!safeStrCmp(KeyStr_Landscape, list_item->keyStr)) {
2302                 __rotate_lock_handler(list_item->chk_status, ad);
2303         }
2304
2305         return;
2306 }
2307
2308 void __alternate_flight_mode(Evas_Object *check)
2309 {
2310         SETTING_TRACE_BEGIN;
2311         int ret;
2312         Eina_Bool status =  elm_check_state_get(check);
2313         SETTING_TRACE("flight mode status : %d", status);
2314         setting_main_appdata *ad = g_main_ad;
2315
2316         //Check whether some requestion is processing by TAPI
2317         if (ad->b_fm_requesting)
2318         {
2319                 //Do nothing, just mark the lastest operation..
2320                 SETTING_TRACE("Some requestion is processing by TAPI, wait to process");
2321                 ad->fm_waiting_op = status ? FM_ENTER : FM_LEAVE;
2322                 return;
2323         }
2324
2325         //otherwise, invalid waiting operation and send requsetion to TAPI:
2326         ad->fm_waiting_op = FM_INVALID;
2327         if (status) {
2328                 ret = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
2329                 setting_retm_if(ret != TAPI_API_SUCCESS,
2330                                 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
2331         } else {
2332                 ret = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
2333                 setting_retm_if(ret != TAPI_API_SUCCESS,
2334                                 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
2335         }
2336
2337         //sucessfully sent,
2338         ad->b_fm_requesting = TRUE;
2339         SETTING_TRACE_END;
2340 }
2341
2342 static void __tethering_disabled_cb(tethering_error_e error, tethering_type_e type, tethering_disabled_cause_e code, void *data)
2343 {
2344         int ret;
2345
2346         if (data) {
2347                 tethering_h th = (tethering_h)data;
2348                 tethering_destroy(th);
2349         }
2350
2351         ret = wifi_initialize();
2352         setting_retm_if(ret < 0, "*** [ERR] wifi_initialize() ***");
2353
2354         ret = wifi_activate(NULL, NULL);
2355         if (ret < 0) {
2356                 wifi_deinitialize();
2357         }
2358         setting_retm_if(ret < 0, "*** [ERR] wifi_activate() ***");
2359
2360         ret = wifi_deinitialize();
2361         setting_retm_if(ret < 0, "*** [ERR] wifi_deinitialize() ***");
2362 }
2363
2364 static void __tethering_turn_off_resp_cb(void *data, Evas_Object *obj, void *event_info)
2365 {
2366         setting_retm_if(NULL == obj, "NULL == obj");
2367         int response_type = btn_type(obj);
2368         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)data;
2369
2370         if (g_main_ad)
2371         {
2372                 evas_object_del(g_main_ad->popup);
2373                 g_main_ad->popup = NULL;
2374         }
2375
2376         if (POPUP_RESPONSE_OK == response_type)
2377         {
2378                 tethering_h th = NULL;
2379                 tethering_error_e ret = TETHERING_ERROR_NONE;
2380
2381                 ret = tethering_create(&th);
2382                 if (ret != TETHERING_ERROR_NONE) {
2383                         list_item->swallow_type = SWALLOW_Type_1ICON_1RADIO;
2384                         list_item->chk_status = EINA_FALSE;
2385                         elm_object_item_data_set(list_item->item, list_item);
2386                         elm_genlist_item_update(list_item->item);
2387                 }
2388
2389                 ret = tethering_set_disabled_cb(th, TETHERING_TYPE_WIFI, __tethering_disabled_cb, th);
2390                 if (ret != TETHERING_ERROR_NONE) {
2391                         list_item->swallow_type = SWALLOW_Type_1ICON_1RADIO;
2392                         list_item->chk_status = EINA_FALSE;
2393                         elm_object_item_data_set(list_item->item, list_item);
2394                         elm_genlist_item_update(list_item->item);
2395
2396                         tethering_destroy(th);
2397                         return;
2398                 }
2399
2400                 tethering_disable(th, TETHERING_TYPE_WIFI);
2401         }
2402         else if (POPUP_RESPONSE_CANCEL == response_type)
2403         {
2404                 list_item->swallow_type = SWALLOW_Type_1ICON_1RADIO;
2405                 list_item->chk_status = EINA_FALSE;
2406                 elm_object_item_data_set(list_item->item, list_item);
2407                 elm_genlist_item_update(list_item->item);
2408         }
2409 }
2410
2411 void __alternate_wifi_mode(Setting_GenGroupItem_Data *list_item, Evas_Object *check)
2412 {
2413         SETTING_TRACE_BEGIN;
2414         int ret;
2415         Eina_Bool status =  elm_check_state_get(check);
2416         SETTING_TRACE("wifi mode status : %d", status);
2417
2418         int value, err;
2419
2420         if (tethering_is_enabled(NULL, TETHERING_TYPE_WIFI) == TRUE) {
2421                 list_item->swallow_type = SWALLOW_Type_1ICON_1PROCESS;
2422                 elm_object_item_data_set(list_item->item, list_item);
2423                 elm_genlist_item_update(list_item->item);
2424
2425                 g_main_ad->popup = setting_create_popup_with_btn(list_item,
2426                                 g_main_ad->win_main, NULL,
2427                                 _("Connecting Wi-Fi will turn off Mobile hotspot. Continue?"),
2428                                 __tethering_turn_off_resp_cb,
2429                                 0, 2, _("IDS_COM_SK_OK"), _("IDS_COM_SK_CANCEL"));
2430         } else {
2431                 ret = wifi_initialize();
2432                 if (ret < 0) {
2433                         setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err);
2434                         list_item->chk_status = value;
2435                         elm_object_item_data_set(list_item->item, list_item);
2436                         elm_genlist_item_update(list_item->item);
2437                 }
2438                 setting_retm_if(ret < 0, "*** [ERR] wifi_initialize() ***");
2439
2440                 if (status) {
2441                         ret = wifi_activate(NULL, NULL);
2442                         if (ret < 0) {
2443                                 setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err);
2444                                 list_item->chk_status = value;
2445                                 elm_object_item_data_set(list_item->item, list_item);
2446                                 elm_genlist_item_update(list_item->item);
2447                                 wifi_deinitialize();
2448                         }
2449                         setting_retm_if(ret < 0, "*** [ERR] wifi_activate() ***");
2450                 } else {
2451                         ret = wifi_deactivate(NULL, NULL);
2452                         if (ret < 0) {
2453                                 setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err);
2454                                 list_item->chk_status = value;
2455                                 elm_object_item_data_set(list_item->item, list_item);
2456                                 elm_genlist_item_update(list_item->item);
2457                                 wifi_deinitialize();
2458                         }
2459                         setting_retm_if(ret < 0, "*** [ERR] wifi_deactivate() ***");
2460                 }
2461
2462                 ret = wifi_deinitialize();
2463                 if (ret < 0) {
2464                         setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err);
2465                         list_item->chk_status = value;
2466                         elm_object_item_data_set(list_item->item, list_item);
2467                         elm_genlist_item_update(list_item->item);
2468                 }
2469                 setting_retm_if(ret < 0, "*** [ERR] wifi_deinitialize() ***");
2470
2471                 list_item->swallow_type = SWALLOW_Type_1ICON_1PROCESS;
2472                 elm_object_item_data_set(list_item->item, list_item);
2473                 elm_genlist_item_update(list_item->item);
2474
2475         }
2476         SETTING_TRACE_END;
2477 }
2478
2479 void __alternate_bt_mode(Setting_GenGroupItem_Data *list_item, Evas_Object *check)
2480 {
2481         SETTING_TRACE_BEGIN;
2482         int ret;
2483         Eina_Bool status =  elm_check_state_get(check);
2484         SETTING_TRACE("bt mode status : %d", status);
2485
2486         int value, err;
2487
2488         ret = bt_initialize();
2489         if (ret < 0) {
2490                 setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err);
2491                 list_item->chk_status = value;
2492                 elm_object_item_data_set(list_item->item, list_item);
2493                 elm_genlist_item_update(list_item->item);
2494         }
2495         setting_retm_if(ret < 0, "*** [ERR] bt_initialize() ***");
2496
2497
2498         if (status) {
2499                 ret = bt_adapter_enable();
2500                 if (ret < 0) {
2501                         setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err);
2502                         list_item->chk_status = value;
2503                         elm_object_item_data_set(list_item->item, list_item);
2504                         elm_genlist_item_update(list_item->item);
2505                         bt_deinitialize();
2506                 }
2507                 setting_retm_if(ret < 0, "*** [ERR] bt_adapter_enable() ***");
2508         } else {
2509                 ret = bt_adapter_disable();
2510                 if (ret < 0) {
2511                         setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err);
2512                         list_item->chk_status = value;
2513                         elm_object_item_data_set(list_item->item, list_item);
2514                         elm_genlist_item_update(list_item->item);
2515                         bt_deinitialize();
2516                 }
2517                 setting_retm_if(ret < 0, "*** [ERR] bt_adapter_disable() ***");
2518         }
2519
2520         ret = bt_deinitialize();
2521         if (ret < 0) {
2522                 setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err);
2523                 list_item->chk_status = value;
2524                 elm_object_item_data_set(list_item->item, list_item);
2525                 elm_genlist_item_update(list_item->item);
2526         }
2527         setting_retm_if(ret < 0, "*** [ERR] bt_deinitialize() ***");
2528
2529         list_item->swallow_type = SWALLOW_Type_1ICON_1PROCESS;
2530         elm_object_item_data_set(list_item->item, list_item);
2531         elm_genlist_item_update(list_item->item);
2532
2533         SETTING_TRACE_END;
2534 }
2535
2536 void __alternate_nfc_mode(Setting_GenGroupItem_Data *list_item, Evas_Object *check)
2537 {
2538         SETTING_TRACE_BEGIN;
2539         int ret;
2540         Eina_Bool status =  elm_check_state_get(check);
2541         SETTING_TRACE("nfc mode status : %d", status);
2542
2543         int value, err;
2544
2545         ret = nfc_manager_initialize(NULL, NULL);
2546         if (ret < 0) {
2547                 setting_get_bool_slp_key(BOOL_SLP_SETTING_NFC_STATUS, &value, &err);
2548                 list_item->chk_status = value;
2549                 elm_object_item_data_set(list_item->item, list_item);
2550                 elm_genlist_item_update(list_item->item);
2551         }
2552         setting_retm_if(ret < 0, "*** [ERR] nfc_manager_initialize() ***");
2553
2554         ret = nfc_manager_set_activation(status, NULL, NULL);
2555         if (ret < 0) {
2556                 setting_get_bool_slp_key(BOOL_SLP_SETTING_NFC_STATUS, &value, &err);
2557                 list_item->chk_status = value;
2558                 elm_object_item_data_set(list_item->item, list_item);
2559                 elm_genlist_item_update(list_item->item);
2560                 nfc_manager_deinitialize();
2561         }
2562         setting_retm_if(ret < 0, "*** [ERR] nfc_manager_set_activation() ***");
2563
2564         ret = nfc_manager_deinitialize();
2565         if (ret < 0) {
2566                 setting_get_bool_slp_key(BOOL_SLP_SETTING_NFC_STATUS, &value, &err);
2567                 list_item->chk_status = value;
2568                 elm_object_item_data_set(list_item->item, list_item);
2569                 elm_genlist_item_update(list_item->item);
2570         }
2571         setting_retm_if(ret < 0, "*** [ERR] nfc_manager_deinitialize() ***");
2572
2573         list_item->swallow_type = SWALLOW_Type_1ICON_1PROCESS;
2574         elm_object_item_data_set(list_item->item, list_item);
2575         elm_genlist_item_update(list_item->item);
2576
2577         SETTING_TRACE_END;
2578 }
2579
2580 void __alternate_sbeam_mode(Evas_Object *check)
2581 {
2582         SETTING_TRACE_BEGIN;
2583         int ret;
2584         Eina_Bool status =  elm_check_state_get(check);
2585         SETTING_TRACE("wifi mode status : %d", status);
2586
2587         vconf_set_bool(VCONFKEY_NFC_SBEAM, status);
2588
2589         SETTING_TRACE_END;
2590 }
2591
2592 void
2593 setting_main_click_list_network_ug_cb(void *data, Evas_Object *obj,
2594                                       void *event_info)
2595 {
2596         SETTING_TRACE_BEGIN;
2597         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2598         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2599
2600         elm_genlist_item_selected_set(item, EINA_FALSE);
2601
2602         if (g_main_ad->ug) {
2603                 SETTING_TRACE
2604                     ("[ad->ug non-NULL]skip genlist click event!!");
2605
2606                 SETTING_TRACE_END;
2607                 return;
2608         }
2609
2610         setting_main_appdata *ad = g_main_ad;
2611         setting_main_click_list_item_reset_data(ad, obj);
2612
2613         int err = 0;
2614         int value;
2615         setting_get_int_slp_key(INT_SLP_SETTING_SIM_SLOT, &value, &err);
2616         SETTING_TRACE("value:%d", value);
2617         switch (value) {
2618         case VCONFKEY_TELEPHONY_SIM_INSERTED:
2619                 {
2620                         struct ug_cbs *cbs =
2621                             (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
2622                         setting_retm_if(!cbs, "calloc failed");
2623                         cbs->layout_cb = setting_main_layout_ug_cb;
2624                         cbs->result_cb = setting_main_result_ug_cb;
2625                         cbs->destroy_cb = setting_main_destroy_ug_cb;
2626                         cbs->priv = (void *)ad;
2627                         setting_main_click_list_item_ug_cb(data, obj,
2628                                                            "setting-network-efl",
2629                                                            NULL, cbs);
2630                         FREE(cbs);
2631                         break;
2632                 }
2633         case VCONFKEY_TELEPHONY_SIM_NOT_PRESENT:
2634                 setting_create_simple_popup(NULL, ad->win_main,
2635                                             NULL, _("IDS_ST_HEADER_INSERT_SIM_CARD_ABB"));
2636                 SETTING_TRACE("%s*** [ERR] No SIM. sim_slot_type=%d ***%s",
2637                               SETTING_FONT_RED, value, SETTING_FONT_BLACK);
2638                 return;
2639                 break;
2640         case VCONFKEY_TELEPHONY_SIM_CARD_ERROR:
2641         case VCONFKEY_TELEPHONY_SIM_UNKNOWN:
2642                 setting_create_simple_popup(NULL, ad->win_main,
2643                                             NULL,_("IDS_COM_BODY_INVALID_SIM_CARD"));
2644                 SETTING_TRACE("%s*** [ERR] Invalid SIM. sim_slot_type=%d ***%s",
2645                               SETTING_FONT_RED, value, SETTING_FONT_BLACK);
2646                 return;
2647                 break;
2648         default:
2649                 break;
2650         }
2651
2652 }
2653
2654 /**
2655  * genlist touch cb
2656  */
2657 static void
2658 setting_main_click_Gendial_list_flight_mode_cb(void *data, Evas_Object *obj,
2659                                                void *event_info)
2660 {
2661     /* error check */
2662     setting_retm_if(data == NULL, "Data parameter is NULL");
2663
2664     retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2665     Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2666     elm_genlist_item_selected_set(item, 0);
2667     Setting_GenGroupItem_Data *list_item =
2668         (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2669     int old_status = elm_check_state_get(list_item->eo_check);
2670     /* new status */
2671     list_item->chk_status = !old_status;
2672     elm_check_state_set(list_item->eo_check, list_item->chk_status);
2673
2674     __alternate_flight_mode(list_item->eo_check);
2675     SETTING_TRACE_END;
2676 }
2677
2678 /**
2679  * toggle cb
2680  */
2681 void
2682 setting_main_click_list_flight_mode_cb(void *data, Evas_Object *obj,
2683                                        void *event_info)
2684 {
2685         SETTING_TRACE_BEGIN;
2686         retm_if(data == NULL, "Data parameter is NULL");
2687         Setting_GenGroupItem_Data *list_item =
2688             (Setting_GenGroupItem_Data *) data;
2689         list_item->chk_status = elm_check_state_get(obj);       /* for update new state */
2690         SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2691                       list_item->chk_status);
2692
2693         __alternate_flight_mode(obj);
2694         SETTING_TRACE_END;
2695 }
2696
2697 /**
2698  * toggle cb
2699  */
2700 void
2701 setting_main_click_list_wifi_mode_cb(void *data, Evas_Object *obj,
2702                                        void *event_info)
2703 {
2704         SETTING_TRACE_BEGIN;
2705         retm_if(data == NULL, "Data parameter is NULL");
2706         Setting_GenGroupItem_Data *list_item =
2707             (Setting_GenGroupItem_Data *) data;
2708         list_item->chk_status = elm_check_state_get(obj);       /* for update new state */
2709         SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2710                       list_item->chk_status);
2711
2712         __alternate_wifi_mode(list_item, obj);
2713         SETTING_TRACE_END;
2714 }
2715
2716 /**
2717  * toggle cb
2718  */
2719 void
2720 setting_main_click_list_bt_mode_cb(void *data, Evas_Object *obj,
2721                                        void *event_info)
2722 {
2723         SETTING_TRACE_BEGIN;
2724         retm_if(data == NULL, "Data parameter is NULL");
2725         Setting_GenGroupItem_Data *list_item =
2726             (Setting_GenGroupItem_Data *) data;
2727         list_item->chk_status = elm_check_state_get(obj);       /* for update new state */
2728         SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2729                       list_item->chk_status);
2730
2731         __alternate_bt_mode(list_item, obj);
2732         SETTING_TRACE_END;
2733 }
2734
2735 /**
2736  * toggle cb
2737  */
2738 void
2739 setting_main_click_list_nfc_mode_cb(void *data, Evas_Object *obj,
2740                                        void *event_info)
2741 {
2742         SETTING_TRACE_BEGIN;
2743         retm_if(data == NULL, "Data parameter is NULL");
2744         Setting_GenGroupItem_Data *list_item =
2745             (Setting_GenGroupItem_Data *) data;
2746         list_item->chk_status = elm_check_state_get(obj);       /* for update new state */
2747         SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2748                       list_item->chk_status);
2749
2750         __alternate_nfc_mode(list_item, obj);
2751         SETTING_TRACE_END;
2752 }
2753
2754 /**
2755  * toggle cb
2756  */
2757 void
2758 setting_main_click_list_sbeam_mode_cb(void *data, Evas_Object *obj,
2759                                        void *event_info)
2760 {
2761         SETTING_TRACE_BEGIN;
2762         retm_if(data == NULL, "Data parameter is NULL");
2763         Setting_GenGroupItem_Data *list_item =
2764             (Setting_GenGroupItem_Data *) data;
2765         list_item->chk_status = elm_check_state_get(obj);       /* for update new state */
2766         SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2767                       list_item->chk_status);
2768
2769         __alternate_sbeam_mode(obj);
2770         SETTING_TRACE_END;
2771 }
2772
2773 /**
2774  * store current selection in setting.cfg
2775  */
2776 void setting_try_save_check_list(void *data)
2777 {
2778         SETTING_TRACE_BEGIN;
2779         setting_main_appdata *ad = (setting_main_appdata *) data;
2780
2781         Eina_List *check_list = ad->item_check_list;
2782         Setting_GenGroupItem_Data *list_item = NULL;
2783         int update_count = 0;
2784
2785         while (check_list) {
2786                 list_item = (Setting_GenGroupItem_Data *) eina_list_data_get(check_list);
2787                 if (NULL == list_item) continue;
2788
2789                 update_count++;
2790                 if (list_item->chk_status) {
2791                         /* to update config file */
2792                         setting_cfg_set_pos(list_item->keyStr, Cfg_Item_Pos_Level0);
2793                 } else {
2794                         /* to update config file */
2795                         setting_cfg_set_pos(list_item->keyStr, Cfg_Item_Pos_Level1);
2796                 }
2797                 check_list = eina_list_next(check_list);
2798         }
2799
2800         if (update_count == 0) {
2801                 /* to popup tips notify */
2802         } else {
2803                 setting_cfg_file_update();
2804         }
2805         SETTING_TRACE_END;
2806 }
2807
2808 void
2809 setting_main_click_edit_preferred_cb(void *data, Evas_Object *obj, void *event_info)
2810 {
2811         SETTING_TRACE_BEGIN;
2812
2813         setting_main_appdata *ad = (setting_main_appdata *) data;
2814         ad->view_type = SETTING_VIEW_ALL_CHECK;
2815         __setting_create_prefered_view(ad);
2816         __load_check_list(ad, &(ad->edit_preferred_genlist), NULL);
2817
2818         SETTING_TRACE_END;
2819 }