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