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