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