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