4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
6 * Contact: MyoungJune Park <mj2004.park@samsung.com>
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
12 * http://www.apache.org/licenses/LICENSE-2.0
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.
22 #include <tapi_common.h>
26 #include <setting-main.h>
27 #include <setting-plugin.h>
30 typedef struct DrawAppInfo DrawAppInfo;
31 typedef struct DrawAppInfo
34 //------------------------------------
35 void (*draw_app)(void* arg, char* name, char* pkgname);
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);
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,
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,
57 static void __alternate_flight_mode(Evas_Object *check);
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);
61 setting_main_appdata *g_main_ad;
63 __setting_chk_changed(void *data, Evas_Object *obj, void *event_info)
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);
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;
77 item = (Setting_GenGroupItem_Data *)
78 eina_list_data_get(check_list);
82 if (!(item->chk_status)) {
83 isFoundNotSelSomeone = TRUE;
85 isFoundSelSomeone = TRUE;
87 if (isFoundNotSelSomeone && isFoundSelSomeone) {
90 check_list = eina_list_next(check_list);
93 if (isFoundNotSelSomeone) {
94 g_main_ad->check_all_item->chk_status = 0; /* for update new state */
96 g_main_ad->check_all_item->chk_status = 1; /* for update new state */
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);
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),
109 static void __setting_list_changed(void *data, Evas_Object *obj,
115 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
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);
122 int old_status = elm_check_state_get(list_item->eo_check);
124 list_item->chk_status = !old_status;
125 elm_check_state_set(list_item->eo_check, list_item->chk_status);
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;
132 group_item = (Setting_GenGroupItem_Data *)
133 eina_list_data_get(check_list);
134 if (NULL == group_item) {
137 if (!(group_item->chk_status)) {
138 isFoundNotSelSomeone = TRUE;
141 isFoundSelSomeone = TRUE;
143 if (isFoundNotSelSomeone && isFoundSelSomeone) {
147 check_list = eina_list_next(check_list);
150 if (isFoundNotSelSomeone) {
151 g_main_ad->check_all_item->chk_status = 0; /* for update new state */
153 g_main_ad->check_all_item->chk_status = 1; /* for update new state */
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);
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),
168 __setting_chk_sel_all_changed(void *data, Evas_Object *obj, void *event_info)
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); */
178 Eina_List *check_list = g_main_ad->item_check_list;
181 list_item = (Setting_GenGroupItem_Data *)
182 eina_list_data_get(check_list);
183 if (NULL == list_item) {
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);
191 if (is_all_checked) {
192 elm_object_item_disabled_set(elm_toolbar_last_item_get
193 (g_main_ad->controllbar_all_check),
198 static void __setting_list_sel_all_changed(void *data, Evas_Object *obj,
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);
210 int old_status = elm_check_state_get(list_item->eo_check);
212 int is_all_checked = list_item->chk_status = !old_status;
213 elm_check_state_set(list_item->eo_check, list_item->chk_status);
215 Eina_List *check_list = g_main_ad->item_check_list;
218 list_item = (Setting_GenGroupItem_Data *)
219 eina_list_data_get(check_list);
220 if (NULL == list_item) {
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);
229 if (is_all_checked) {
230 elm_object_item_disabled_set(elm_toolbar_last_item_get
231 (g_main_ad->controllbar_all_check),
237 static void __load_check_list(void *data, Evas_Object **genlist,
241 setting_main_appdata *ad = (setting_main_appdata *) data;
245 Cfg_Item_Position pos = Cfg_Item_Pos_Uninstall;
246 bool isFoundNonSelItem = FALSE;
247 bool isFoundSelSomeoneItem = FALSE;
250 char *icon_path = NULL;
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);
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"); */
268 (setting_cfg_get_category_name(i), menuNameKey)) {
271 char *category_name = setting_cfg_get_category_name(i);
274 setting_create_Gendial_field_group_titleItem(*genlist,
276 [GENDIAL_Type_group_item]),
278 ELM_GENLIST_ITEM_NONE,
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);
286 if (Cfg_Item_Pos_Level1 == pos) {
288 isFoundNonSelItem = TRUE;
291 isFoundSelSomeoneItem = TRUE;
294 icon_path = setting_cfg_get_icon_path_idx(i, j);
296 setting_create_Gendial_field_groupitem(*genlist,
298 [GENDIAL_Type_1text_2icon_2]),
300 __setting_list_changed,
302 SWALLOW_Type_1CHECKICON,
307 __setting_chk_changed);
309 ad->item_check_list =
310 eina_list_append(ad->item_check_list, item);
313 SETTING_TRACE_ERROR("category_item is NULL");
317 if (ad->check_all_item) {
318 if (isFoundNonSelItem) {
319 ad->check_all_item->chk_status = 0; /* for update new state */
321 ad->check_all_item->chk_status = 1; /* for update new state */
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);
326 SETTING_TRACE_ERROR("ad->check_all_item is NULL");
329 if (isFoundSelSomeoneItem) {
330 elm_object_item_disabled_set(elm_toolbar_last_item_get
331 (ad->controllbar_all_check),
334 elm_object_item_disabled_set(elm_toolbar_last_item_get
335 (ad->controllbar_all_check),
342 static Setting_GenGroupItem_Data * __flightmode_handler(void* data, char* keyStr, char* icon_path, char* ug_name, Evas_Object *genlist)
344 // NOT UG --> it's just UI drawing
346 setting_main_appdata *ad = (setting_main_appdata *)data;
348 setting_get_bool_slp_key (BOOL_SLP_SETTING_FLIGHT_MODE, &value, &err);
350 /* create flight_mode */
351 ad->data_flight = setting_create_Gendial_field_groupitem(genlist,
352 &(ad->itc[GENDIAL_Type_1text_2icon]),
354 setting_main_click_Gendial_list_flight_mode_cb,
356 SWALLOW_Type_1ICON_1RADIO,
362 setting_main_click_list_flight_mode_cb);
363 __BACK_POINTER_SET(ad->data_flight);
365 return ad->data_flight;
368 static Setting_GenGroupItem_Data * __wifi_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
370 setting_main_appdata *ad = (setting_main_appdata *)data;
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]),
376 setting_main_click_list_ex_ug_cb,
378 SWALLOW_Type_INVALID,
385 __BACK_POINTER_SET(ad->data_wifi);
388 return ad->data_wifi;
391 static Setting_GenGroupItem_Data * __bluetooth_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
393 setting_main_appdata *ad = (setting_main_appdata *)data;
395 ad->data_bt = setting_create_Gendial_field_groupitem(genlist,
396 &(ad->itc[GENDIAL_Type_1icon_2text]),
398 setting_main_click_list_ex_ug_cb,
400 SWALLOW_Type_INVALID,
408 __BACK_POINTER_SET(ad->data_bt);
413 static Setting_GenGroupItem_Data * __mobileap_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
415 setting_main_appdata *ad = (setting_main_appdata *)data;
417 ad->data_mobileApp = setting_create_Gendial_field_groupitem(genlist,
418 &(ad->itc[GENDIAL_Type_1icon_2text]),
420 setting_main_click_list_ex_ug_cb,
422 SWALLOW_Type_INVALID,
427 get_Mobile_AP_on_off_str
430 __BACK_POINTER_SET(ad->data_mobileApp);
432 return ad->data_mobileApp;
435 static Setting_GenGroupItem_Data * __allshare_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
437 setting_main_appdata *ad = (setting_main_appdata *)data;
439 Setting_GenGroupItem_Data * obj = setting_create_Gendial_field_groupitem(genlist,
440 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
442 setting_main_click_list_default_ug_cb,
444 SWALLOW_Type_INVALID,
453 static Setting_GenGroupItem_Data * __network_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
455 setting_main_appdata *ad = (setting_main_appdata *)data;
457 Setting_GenGroupItem_Data * obj = setting_create_Gendial_field_groupitem(genlist,
458 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
460 setting_main_click_list_network_ug_cb,
462 SWALLOW_Type_INVALID,
472 static Setting_GenGroupItem_Data * __nfc_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
474 setting_main_appdata *ad = (setting_main_appdata *)data;
476 ad->data_nfc = setting_create_Gendial_field_groupitem(genlist,
477 &(ad->itc[GENDIAL_Type_1icon_2text]),
479 setting_main_click_list_ex_ug_cb,
481 SWALLOW_Type_INVALID,
486 get_NFC_on_off_str(),
488 __BACK_POINTER_SET(ad->data_nfc);
490 setting_create_Gendial_field_def(genlist, &itc_multiline_text, NULL,
491 ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
492 NULL, NULL, 0, SETTING_NFC_DESC, NULL, NULL);
493 elm_genlist_item_select_mode_set(elm_genlist_item_append(genlist, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
494 ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
499 static Setting_GenGroupItem_Data * __default_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
501 setting_main_appdata *ad = (setting_main_appdata *)data;
502 Setting_GenGroupItem_Data * obj = setting_create_Gendial_field_groupitem(genlist,
503 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
505 setting_main_click_list_ex_ug_cb,
507 SWALLOW_Type_INVALID,
514 if (!safeStrCmp(KeyStr_WiFiDirect, keyStr)) {
515 setting_create_Gendial_field_def(genlist, &itc_multiline_text, NULL,
516 ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
517 NULL, NULL, 0, SETTING_WIFI_DIRECT_DESC, NULL, NULL);
518 elm_genlist_item_select_mode_set(elm_genlist_item_append(genlist, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
519 ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
520 } else if (!safeStrCmp(KeyStr_KeisOverWifi, keyStr)) {
521 setting_create_Gendial_field_def(genlist, &itc_multiline_text, NULL,
522 ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
523 NULL, NULL, 0, SETTING_KIES_VIA_WIFI_DESC, NULL, NULL);
524 elm_genlist_item_select_mode_set(elm_genlist_item_append(genlist, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
525 ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
533 typedef struct mainlist_entry mainlist_entry;
535 struct mainlist_entry {
537 Setting_GenGroupItem_Data* (*ui_handler)(void* data, char* title, char* iconpath, char* ugname, Evas_Object *genlist);
542 MAINLIST_ENTRY_FLIGHT_MODE = 0,
545 MAINLIST_ENTRY_MOBILEAP,
546 MAINLIST_ENTRY_ALLSHARE,
547 MAINLIST_ENTRY_NETWORK,
549 MAINLIST_ENTRY_DEFAULT,
553 static mainlist_entry mainlist_table[] = {
554 {KeyStr_FlightMode, __flightmode_handler}, // 0 --> NOT UG
555 {KeyStr_WiFi, __wifi_handler}, // 1 --> UG
556 {KeyStr_Bluetooth, __bluetooth_handler}, // 1 --> UG
557 {KeyStr_MobileAP, __mobileap_handler}, // 1 --> UG
558 {KeyStr_AllShare, __allshare_handler}, // NOT UG
559 {KeyStr_Network, __network_handler}, // 1 --> UG
560 {KeyStr_NFC, __nfc_handler}, // 1 --> UG
561 {"Default", __default_handler}, // 1 --> UG
563 //--------------------------------------------------------------
568 // Flight Mode - not UG
569 // All share - not UG
570 // WiFi - added toggle
576 void __load_connectivity_menu_list(void *data, Cfg_Item_Position inputPos, Evas_Object *genlist)
579 setting_main_appdata *ad = data;
580 //group title, only display in setting main view
581 if (SETTING_VIEW_MAIN == ad->view_load) {
582 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
583 &(ad->itc[GENDIAL_Type_group_item]),
585 ELM_GENLIST_ITEM_NONE,
586 KeyStr_Connectivity, NULL);
589 int idx_second_menu = 0;
592 char *icon_path = NULL;
593 char *ug_args = NULL;
594 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
597 bool is_emulator = isEmulBin();
599 for (i = 0; i < setting_cfg_get_category_length(); i++) {
601 (setting_cfg_get_category_name(i), KeyStr_Connectivity))
604 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
605 keyStr = setting_cfg_get_keyname_idx(i, j);
606 tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
607 ug_args = setting_cfg_get_ug_args_idx(i, j);
608 icon_path = setting_cfg_get_icon_path_idx(i, j);
609 /* SETTING_TRACE_DEBUG("Got an item[keyStr:%s, ug_args:%s, pos:%d]", */
610 /* keyStr, ug_args, tmpPos); */
613 if (!safeStrCmp(KeyStr_FlightMode, keyStr)) {
614 continue; /* hide Flight Mode in Emulator*/
615 } else if (!safeStrCmp(KeyStr_WiFi, keyStr)) {
616 continue; /* hide WIFI in Emulator*/
617 } else if (!safeStrCmp(KeyStr_MobileAP, keyStr)) {
618 continue; /* hide Tethering in Emulator*/
619 } else if (!safeStrCmp(KeyStr_NFC, keyStr)) {
620 continue; /* hide NFC in Emulator*/
621 } else if (!safeStrCmp(KeyStr_WiFiDirect, keyStr)) {
622 continue; /* hide WiFiDirect in Emulator*/
623 } else if (!safeStrCmp(KeyStr_AllShareCast, keyStr)) {
624 continue; /* hide AllShareCast in Emulator*/
625 } else if (!safeStrCmp(KeyStr_NearbyDevices, keyStr)) {
626 continue; /* hide NearbyDevices in Emulator*/
627 } else if (!safeStrCmp(KeyStr_KeisOverWifi, keyStr)) {
628 continue; /* hide KeisOverWifi in Emulator*/
629 } else if (!safeStrCmp(KeyStr_Synchronise, keyStr)) {
630 continue; /* hide Synchronise in Emulator*/
631 } else if (!safeStrCmp(KeyStr_Network, keyStr)) {
632 continue; /* hide Network in Emulator*/
638 if (idx_second_menu < MAX_MORE_MENU_NUM
639 && Cfg_Item_Pos_Level1 == tmpPos
640 && SETTING_VIEW_MAIN == ad->view_load
641 && MAIN_PROFILE_PREFERRED == ad->profile_type) {
643 if (is_ug_installed_by_ug_args(ug_args)) {
644 ad->more_connective_menus[idx_second_menu++] = keyStr;
648 if (Cfg_Item_Pos_Level_All == inputPos) {
649 } else if (inputPos != tmpPos) { /* not in the inputPos level */
653 if (!safeStrCmp(KeyStr_FlightMode, keyStr)) { /* load special radio */
655 mainlist_table[MAINLIST_ENTRY_FLIGHT_MODE].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
657 } else if (!safeStrCmp(KeyStr_AllShare, keyStr)) { /* NOT UG */
659 mainlist_table[MAINLIST_ENTRY_ALLSHARE].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
661 } else if (!safeStrCmp(KeyStr_WiFi, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
663 mainlist_table[MAINLIST_ENTRY_WIFI].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
665 } else if (!safeStrCmp(KeyStr_Bluetooth, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
667 mainlist_table[MAINLIST_ENTRY_BT].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
669 } else if (!safeStrCmp(KeyStr_MobileAP, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
671 mainlist_table[MAINLIST_ENTRY_MOBILEAP].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
673 } else if (!safeStrCmp(KeyStr_Network, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special UG */
675 mainlist_table[MAINLIST_ENTRY_NETWORK].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
677 } else if (!safeStrCmp(KeyStr_NFC, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
678 int nfc_value = FALSE; //default
679 vconf_get_bool(VCONFKEY_NFC_FEATURE, &nfc_value);
680 if (VCONFKEY_NFC_FEATURE_ON == nfc_value)
682 mainlist_table[MAINLIST_ENTRY_NFC].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
684 } else { /* load other UGs */
685 if (is_ug_installed_by_ug_args(ug_args))
687 mainlist_table[MAINLIST_ENTRY_DEFAULT].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
693 //end group , only display in setting main view
694 #if SUPPORT_MORE_ITEM_FUNCTION
695 if (SETTING_VIEW_MAIN == ad->view_load && MAIN_PROFILE_PREFERRED == ad->profile_type && idx_second_menu > 0)
697 char sub_text[MAX_COMMON_BUFFER_LEN] = {0, };
699 while (idx < MAX_MORE_MENU_NUM && ad->more_connective_menus[idx])
703 safeStrNCat(sub_text, ", ", MAX_COMMON_BUFFER_LEN);
705 safeStrNCat(sub_text, _(ad->more_connective_menus[idx]), MAX_COMMON_BUFFER_LEN);
709 ad->data_moreConnect =
710 setting_create_Gendial_field_groupitem(ad->main_genlist,
711 &(ad->itc[GENDIAL_Type_2text_3]),
713 setting_main_click_list_more_cb,
715 SWALLOW_Type_INVALID,
722 __BACK_POINTER_SET(ad->data_moreConnect);
728 void __load_connectivity_level0_list(void *data)
730 setting_main_appdata *ad = data;
731 __load_connectivity_menu_list(ad, Cfg_Item_Pos_Level0, ad->main_genlist);
734 void __load_connectivity_level_all_list(void *data)
737 setting_main_appdata *ad = data;
738 __load_connectivity_menu_list(ad, Cfg_Item_Pos_Level_All, ad->main_genlist);
741 void __load_system_menu_list(void *data, Cfg_Item_Position inputPos, Evas_Object *genlist)
744 SETTING_TRACE_DEBUG("pos :%d", inputPos);
745 setting_main_appdata *ad = data;
746 //group title, only display in setting main view
747 if (SETTING_VIEW_MAIN == ad->view_load) {
748 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
749 &(ad->itc[GENDIAL_Type_group_item]),
751 ELM_GENLIST_ITEM_NONE,
752 KeyStr_System, NULL);
754 int idx_second_menu = 0;
757 char *icon_path = NULL;
758 char *ug_args = NULL;
760 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
765 bool is_emulator = isEmulBin();
767 //SETTING_TRACE("setting_cfg_get_category_length() :: %d ", setting_cfg_get_category_length());
768 for (i = 0; i < setting_cfg_get_category_length(); i++) {
769 if (safeStrCmp(setting_cfg_get_category_name(i), KeyStr_System))
772 //SETTING_TRACE(" setting_cfg_get_menu_length(%d) :: %d ",i, setting_cfg_get_menu_length(i) );
773 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
774 keyStr = setting_cfg_get_keyname_idx(i, j);
775 /* sg_path = setting_cfg_get_ugpath_idx(i, j); */
776 tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
777 icon_path = setting_cfg_get_icon_path_idx(i, j);
778 ug_args = setting_cfg_get_ug_args_idx(i, j);
780 //SETTING_TRACE("KeyString : %s , tmpPos : %d , inputPos : %d ", keyStr, tmpPos, inputPos );
783 if (!safeStrCmp(KeyStr_EventsNotifications, keyStr)) {
784 continue; /* hide EventsNotifications in Emulator*/
785 } else if (!safeStrCmp(KeyStr_Security, keyStr)) {
786 continue; /* hide Security in Emulator*/
787 } else if (!safeStrCmp(KeyStr_Motions, keyStr)) {
788 continue; /* hide Motion in Emulator*/
789 } else if (!safeStrCmp(KeyStr_Accessibility, keyStr)) {
790 continue; /* hide Accessibility in Emulator*/
791 } else if (!safeStrCmp(KeyStr_VoiceInOut, keyStr)) {
792 continue; /* hide VoiceInOut in Emulator*/
793 } else if (!safeStrCmp(keystr_Drivingmode, keyStr)) {
794 continue; /* hide Drivingmode in Emulator*/
795 } else if (!safeStrCmp(KeyStr_License, keyStr)) {
796 continue; /* hide License in Emulator*/
797 } else if (!safeStrCmp(KeyStr_Memory, keyStr)) {
798 continue; /* hide Memory in Emulator*/
804 if (idx_second_menu < MAX_MORE_MENU_NUM
805 && Cfg_Item_Pos_Level1 == tmpPos
806 && SETTING_VIEW_MAIN == ad->view_load
807 && MAIN_PROFILE_PREFERRED == ad->profile_type) {
809 if (is_ug_installed_by_ug_args(ug_args)) {
810 ad->more_system_menus[idx_second_menu++] = keyStr;
814 if (Cfg_Item_Pos_Level_All == inputPos) {
816 //SETTING_TRACE("Cfg_Item_Pos_Level_All == inputPos ---> no draw --- WHY?? ");
817 } else if (inputPos != tmpPos) { /* not in the inputPos level */
818 //SETTING_TRACE("inputPos == tmp Pos ---> no draw --- WHY?? ");
822 if (!safeStrCmp(KeyStr_Landscape, keyStr)) { /* load special UG */
825 (VCONFKEY_SETAPPL_ROTATE_LOCK_BOOL, &value);
828 ad->data_rotationMode =
829 setting_create_Gendial_field_groupitem(genlist,
830 &(ad->itc[GENDIAL_Type_1text_2icon]),
832 setting_main_sel_list_mouse_up_cb,
834 SWALLOW_Type_1ICON_1RADIO,
840 setting_main_list_mouse_up_cb);
841 __BACK_POINTER_SET(ad->data_rotationMode);
843 else if (!safeStrCmp(KeyStr_Brightness, keyStr)) {
845 char* pa_bright = get_brightness_mode_str();
847 setting_create_Gendial_field_groupitem(genlist,
848 &(ad->itc[GENDIAL_Type_1icon_2text]),
850 setting_main_click_list_ex_ug_cb,
852 SWALLOW_Type_INVALID,
859 __BACK_POINTER_SET(ad->data_bright);
862 else { /* load other UGs */
864 if (is_ug_installed_by_ug_args(ug_args))
866 setting_create_Gendial_field_groupitem(genlist,
867 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
869 setting_main_click_list_ex_ug_cb,
871 SWALLOW_Type_INVALID,
882 //end group, only display in setting main view
883 #if SUPPORT_MORE_ITEM_FUNCTION
884 if (SETTING_VIEW_MAIN == ad->view_load && MAIN_PROFILE_PREFERRED == ad->profile_type && idx_second_menu > 0)
886 char sub_text[MAX_COMMON_BUFFER_LEN] = {0, };
888 while (idx < MAX_MORE_MENU_NUM && ad->more_system_menus[idx])
892 safeStrNCat(sub_text, ", ", MAX_COMMON_BUFFER_LEN);
894 safeStrNCat(sub_text, _(ad->more_system_menus[idx]), MAX_COMMON_BUFFER_LEN);
898 ad->data_moreSystem =
899 setting_create_Gendial_field_groupitem(ad->main_genlist,
900 &(ad->itc[GENDIAL_Type_2text_3]),
902 setting_main_click_list_more_cb,
904 SWALLOW_Type_INVALID,
911 __BACK_POINTER_SET(ad->data_moreSystem);
916 static void __load_system_level0_list(void *data)
918 setting_main_appdata *ad = data;
919 __load_system_menu_list(ad, Cfg_Item_Pos_Level0, ad->main_genlist);
922 static void __load_system_level_all_list(void *data)
925 setting_main_appdata *ad = data;
926 __load_system_menu_list(ad, Cfg_Item_Pos_Level_All, ad->main_genlist);
929 static void __load_applications_menu_list(void *data,
930 Cfg_Item_Position inputPos)
933 SETTING_TRACE_DEBUG("pos :%d", inputPos);
934 setting_main_appdata *ad = data;
936 bool is_emulator = isEmulBin();
939 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
940 &(ad->itc[GENDIAL_Type_group_item]),
942 ELM_GENLIST_ITEM_NONE,
943 KeyStr_Applications, NULL);
945 char *icon_path = NULL;
946 char *ug_args = NULL;
947 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
950 for (i = 0; i < setting_cfg_get_category_length(); i++) {
952 (setting_cfg_get_category_name(i), KeyStr_Applications))
955 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
956 keyStr = setting_cfg_get_keyname_idx(i, j);
957 icon_path = setting_cfg_get_icon_path_idx(i, j);
958 ug_args = setting_cfg_get_ug_args_idx(i, j);
960 (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
962 if (Cfg_Item_Pos_Level_All == inputPos) {
963 } else if (inputPos != tmpPos) { /* not in the inputPos level */
968 /* hide all except Email */
969 if (safeStrCmp(KeyStr_Email, keyStr)) {
976 setting_create_Gendial_field_groupitem(ad->main_genlist,
977 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
979 setting_main_click_list_ex_ug_cb,
981 SWALLOW_Type_INVALID,
992 static void __load_applications_level0_list(void *data)
994 setting_main_appdata *ad = data;
995 __load_applications_menu_list(ad, Cfg_Item_Pos_Level0);
998 static void __load_applications_level_all_list(void *data)
1000 SETTING_TRACE_BEGIN;
1001 setting_main_appdata *ad = data;
1002 __load_applications_menu_list(ad, Cfg_Item_Pos_Level_All);
1005 bool is_3rdapp_installed_setting_cfg(char* pkgname)
1007 SETTING_TRACE_BEGIN;
1012 if (snprintf(path, 512, "/opt/apps/%s/setting/setting.xml", pkgname) < 0)
1016 bool result_opt = false;
1018 if(stat(path, &st) == 0) {
1021 SETTING_TRACE_ERROR(" %s is *NOT* present\n", path);
1032 static void draw_3rdapp(void* data, char* name, char* pkgname)
1034 SETTING_TRACE_BEGIN;
1035 setting_main_appdata *ad = data;
1040 if (snprintf(fullpath, 512, "/opt/apps/%s/setting/setting.xml", pkgname) < 0)
1043 SETTING_TRACE(" fullpath : %s", fullpath);
1047 setting_create_Gendial_field_groupitem(ad->main_genlist,
1048 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1050 setting_main_click_list_plugin_cb,
1052 SWALLOW_Type_INVALID,
1053 IMG_DefaultIcon, NULL,
1064 static ail_cb_ret_e __download_apps_cb(ail_appinfo_h ai, void* data)
1066 SETTING_TRACE_BEGIN;
1068 DrawAppInfo* pinfo = (DrawAppInfo*)data;
1071 if (AIL_ERROR_OK == ail_appinfo_get_str(ai, AIL_PROP_PACKAGE_STR, &id))
1073 //SETTING_TRACE(" 3rd party - app name : ----> %s ", id);
1076 ail_appinfo_h handle;
1081 bool nodisplay = false;
1082 bool removable = true;
1084 if (AIL_ERROR_OK == ail_package_get_appinfo(id, &handle))
1086 if (AIL_ERROR_OK != ail_appinfo_get_str(handle, AIL_PROP_NAME_STR, &name))
1087 SETTING_TRACE("cannot get name");
1089 if (AIL_ERROR_OK != ail_appinfo_get_str(handle, AIL_PROP_ICON_STR, &icon))
1090 SETTING_TRACE("cannot get icon");
1092 if (AIL_ERROR_OK != ail_appinfo_get_bool(handle, AIL_PROP_NODISPLAY_BOOL, &nodisplay))
1093 SETTING_TRACE("cannot get nodisplay");
1095 if (AIL_ERROR_OK != ail_appinfo_get_bool(handle, AIL_PROP_X_SLP_REMOVABLE_BOOL, &removable))
1096 SETTING_TRACE("cannot get removable");
1098 if (AIL_ERROR_OK != ail_appinfo_get_int(handle, AIL_PROP_X_SLP_INSTALLEDTIME_INT, &installed_time))
1099 SETTING_TRACE("cannot get installed_time");
1101 //SETTING_TRACE("installed_time = %d ", installed_time);
1102 if (installed_time != 0 && is_3rdapp_installed_setting_cfg(id) == true )
1104 SETTING_TRACE(" 3rd party - app name : ----> %s ", id);
1108 if (pinfo->draw_app != NULL)
1110 SETTING_TRACE(">>> pkg name --> %s ", id);
1112 pinfo->draw_app(pinfo->data, strdup(id)/* appname*/, strdup(id)/* pkg_name*/);
1119 return AIL_CB_RET_CONTINUE;
1124 * get 3rd party applist from AIL & searching dir/file by the defined rule
1126 * if data is NULL --> just get how many items are there
1127 * if data is NOT NULL --> draw UI code
1129 static int get_downloadapp_list(void* data)
1131 SETTING_TRACE_BEGIN;
1133 setting_main_appdata *ad = data;
1137 ail_appinfo_h handle;
1139 DrawAppInfo* pinfo = (DrawAppInfo*)malloc(sizeof(DrawAppInfo));
1141 pinfo->draw_app = draw_3rdapp;
1144 if (ail_filter_new(&f) == AIL_ERROR_OK)
1146 if (ail_filter_add_bool(f, AIL_PROP_NODISPLAY_BOOL, false) != AIL_ERROR_OK)
1148 SETTING_TRACE("ail filter error");
1152 ail_filter_list_appinfo_foreach(f, __download_apps_cb, pinfo);
1153 //---------------------------------------------------------------
1154 ail_filter_destroy(f);
1156 ncount = pinfo->ncount;
1167 static int __get_downloaded_apps_num(Cfg_Item_Position inputPos)
1169 SETTING_TRACE_BEGIN;
1170 SETTING_TRACE_DEBUG("pos :%d", inputPos);
1171 int downloaded_apps_num = 0;
1172 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
1174 for (i = 0; i < setting_cfg_get_category_length(); i++) {
1176 (setting_cfg_get_category_name(i), KeyStr_DownloadedAPPs))
1179 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
1180 tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
1181 if (Cfg_Item_Pos_Level_All == inputPos) {
1182 } else if (inputPos != tmpPos) { /* not in the inputPos level */
1186 downloaded_apps_num++;
1190 // draw UI with AUL code
1192 downloaded_apps_num = get_downloadapp_list(NULL);
1193 SETTING_TRACE("Exit %s with return[%d]",__FUNCTION__, downloaded_apps_num);
1196 return downloaded_apps_num;
1200 static void __load_downloaded_apps_menu_list(void *data,
1201 Cfg_Item_Position inputPos)
1203 SETTING_TRACE_BEGIN;
1204 SETTING_TRACE_DEBUG("pos :%d", inputPos);
1205 setting_main_appdata *ad = data;
1207 // if the number of download apps is zero, display a bottom seperator
1208 if (0 == __get_downloaded_apps_num(inputPos)) {
1209 Elm_Object_Item *item = NULL;
1210 item = elm_genlist_item_append(ad->main_genlist, &itc_bottom_seperator, NULL, NULL,
1211 ELM_GENLIST_ITEM_NONE, NULL, NULL);
1212 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1217 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
1218 &(ad->itc[GENDIAL_Type_group_item]),
1220 ELM_GENLIST_ITEM_NONE,
1221 KeyStr_DownloadedAPPs,
1224 char *keyStr = NULL;
1225 char *icon_path = NULL;
1226 char *ug_args = NULL;
1228 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
1230 for (i = 0; i < setting_cfg_get_category_length(); i++) {
1232 (setting_cfg_get_category_name(i), KeyStr_DownloadedAPPs))
1235 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
1236 keyStr = setting_cfg_get_keyname_idx(i, j);
1238 (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
1239 icon_path = setting_cfg_get_icon_path_idx(i, j);
1240 ug_args = setting_cfg_get_ug_args_idx(i, j);
1242 if (Cfg_Item_Pos_Level_All == inputPos) {
1243 } else if (inputPos != tmpPos) { /* not in the inputPos level */
1247 setting_create_Gendial_field_groupitem(ad->main_genlist,
1248 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1250 setting_main_click_list_ex_ug_cb,
1252 SWALLOW_Type_INVALID,
1265 DIR *dp = opendir (PLUGIN_CFG_DIR);
1272 while (ep = readdir (dp))
1274 memset(fullpath, 0x00, 256);
1275 strncpy(fullpath, PLUGIN_CFG_DIR, 256);
1276 strncat(fullpath, "/", 256);
1277 strncat(fullpath, ep->d_name, 256);
1279 //SETTING_TRACE("ep->d_name:%s", ep->d_name);
1280 if (0 == safeStrCmp(".", ep->d_name)
1281 || 0 == safeStrCmp("..", ep->d_name))
1285 SETTING_TRACE("fullpath: %s", fullpath);
1286 char *p = strrchr(ep->d_name, '.');
1288 setting_create_Gendial_field_groupitem(ad->main_genlist,
1289 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1291 setting_main_click_list_plugin_cb,
1293 SWALLOW_Type_INVALID,
1294 IMG_DefaultIcon, NULL,
1295 0, ep->d_name, NULL,
1299 (void) closedir (dp);
1302 // TODO: DRAW 3RD PARTY APPS LIST here with EFL code
1303 int downloaded_apps_num = get_downloadapp_list(ad);
1305 // loop condition : 0 ---> ncount
1312 static void __load_downloaded_apps_level0_list(void *data)
1314 setting_main_appdata *ad = data;
1315 __load_downloaded_apps_menu_list(ad, Cfg_Item_Pos_Level0);
1318 static void __load_downloaded_apps_level_all_list(void *data)
1320 SETTING_TRACE_BEGIN;
1321 setting_main_appdata *ad = data;
1322 __load_downloaded_apps_menu_list(ad, Cfg_Item_Pos_Level_All);
1325 static void __check_all_view_clear(void *data)
1327 SETTING_TRACE_BEGIN;
1329 setting_main_appdata *ad = data;
1330 if (ad->item_check_list) {
1331 eina_list_free(ad->item_check_list);
1332 ad->item_check_list = NULL;
1335 ad->gl_sel_all = NULL;
1336 ad->edit_preferred_genlist = NULL;
1337 ad->controllbar_all_check = NULL;
1338 ad->check_all_item =NULL;
1341 static void __prefered_buttons_cb(void *data, Evas_Object *obj, void *event_info)
1343 SETTING_TRACE_BEGIN;
1345 setting_main_appdata *ad = (setting_main_appdata *) data;
1346 const char *key = NULL;
1348 #if SUPPORT_BOTTOM_BTNS
1349 ret_if(!event_info);
1350 Elm_Object_Item *it = event_info;
1351 key = elm_object_item_text_get(it);
1353 key = elm_object_text_get(obj);
1355 setting_retm_if(data == NULL
1356 || key == NULL, "data == NULL || key == NULL");
1358 SETTING_TRACE_DEBUG("press button: %s", key);
1361 if (!safeStrCmp(key, dgettext("sys_string", "IDS_COM_SK_DONE"))) {
1363 if (ad->profile_type == MAIN_PROFILE_ALL) {
1364 SETTING_TRACE_DEBUG("Cancel to hide current view.");
1365 setting_try_save_check_list(ad); /* need to save too */
1366 __check_all_view_clear(ad);
1367 elm_naviframe_item_pop(ad->navibar_main); // pop(preferred) --> main
1371 // MAIN_PROFILE_PREFERRED and Etc
1372 // redraw setting-main
1373 setting_try_save_check_list(ad);
1374 elm_naviframe_item_pop(ad->navibar_main); // pop (preferred) -> main
1376 //After the view is popuped, all the object handlers should be reset NULL.
1377 __check_all_view_clear(ad);
1378 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1379 ad->load_fns[Func_Type_System] = __load_system_level0_list;
1380 ad->load_fns[Func_Type_Apps] = __load_applications_level0_list;
1381 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level0_list;
1382 int ret = setting_main_refresh(ad);
1383 ret_if(ret != SETTING_RETURN_SUCCESS);
1388 if (!safeStrCmp(key, setting_gettext("IDS_COM_SK_CANCEL"))
1389 || !safeStrCmp(key, dgettext("sys_string", "IDS_COM_BODY_BACK"))) {
1390 SETTING_TRACE_DEBUG("Cancel to hide current view.");
1391 elm_naviframe_item_pop(ad->navibar_main);
1392 //After the view is popuped, all the object handlers should be reset NULL.
1393 __check_all_view_clear(ad);
1398 static void __setting_contorlbar_clicked(void *data, Evas_Object *obj,
1401 SETTING_TRACE_BEGIN;
1402 ret_if(data == NULL || obj == NULL);
1403 setting_main_appdata *ad = (setting_main_appdata *) data;
1405 /* elm_segment_control_selected_segment_get(obj, &index); */
1406 Elm_Object_Item *sel_item = elm_segment_control_item_selected_get(obj);
1407 ret_if(sel_item == NULL);
1408 index = elm_segment_control_item_index_get(sel_item);
1413 SETTING_TRACE("Preferred");
1414 ad->profile_type = MAIN_PROFILE_PREFERRED;
1415 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1416 ad->load_fns[Func_Type_System] = __load_system_level0_list;
1417 ad->load_fns[Func_Type_Apps] = __load_applications_level0_list;
1418 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level0_list;
1424 SETTING_TRACE("All");
1425 ad->profile_type = MAIN_PROFILE_ALL;
1426 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level_all_list;
1427 ad->load_fns[Func_Type_System] = __load_system_level_all_list;
1428 ad->load_fns[Func_Type_Apps] = __load_applications_level_all_list;
1429 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level_all_list;
1437 int ret = setting_main_refresh(ad);
1438 ret_if(ret != SETTING_RETURN_SUCCESS);
1441 static void __btnback_clicked_cb(void *data, Evas_Object *obj, void *event_info)
1443 SETTING_TRACE_BEGIN;
1445 setting_main_appdata *ad = (setting_main_appdata *) data;
1446 elm_win_lower(ad->win_main);
1449 static void __allFrequent_btn_cb(void *data, Evas_Object *obj, void *event_info)
1451 SETTING_TRACE_BEGIN;
1452 ret_if(!data || !obj);
1453 setting_main_appdata *ad = (setting_main_appdata *) data;
1454 Elm_Object_Item *item = elm_toolbar_first_item_get(obj);
1457 if (MAIN_PROFILE_ALL == ad->profile_type)
1459 SETTING_TRACE("Change to Preferred view");
1460 elm_object_item_text_set(item, _(ALL_STR));
1461 ad->profile_type = MAIN_PROFILE_PREFERRED;
1462 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1463 ad->load_fns[Func_Type_System] = __load_system_level0_list;
1464 ad->load_fns[Func_Type_Apps] = __load_applications_level0_list;
1465 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level0_list;
1466 setting_main_refresh(ad);
1468 else if (MAIN_PROFILE_PREFERRED == ad->profile_type)
1470 SETTING_TRACE("Change to ALL view");
1471 elm_object_item_text_set(item, _(PREFERRED_STR));
1472 ad->profile_type = MAIN_PROFILE_ALL;
1473 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level_all_list;
1474 ad->load_fns[Func_Type_System] = __load_system_level_all_list;
1475 ad->load_fns[Func_Type_Apps] = __load_applications_level_all_list;
1476 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level_all_list;
1477 setting_main_refresh(ad);
1488 Evas_Object *__create_main_view_widgets(Evas_Object *win_main, void *cb,
1489 Evas_Object *content,
1491 bool isFoundPreferredItem,
1492 Evas_Object **navibar,
1493 Elm_Object_Item **edit_item,
1494 Elm_Object_Item **segment_all,
1495 Elm_Object_Item **segment_preferred)
1497 SETTING_TRACE_BEGIN;
1499 /* add layout to win_main */
1500 Evas_Object *ly = elm_layout_add(win_main);
1501 setting_retvm_if(ly == NULL, FALSE, "layout == NULL");
1502 elm_layout_theme_set(ly, "layout", "application", "default");
1503 evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND,
1505 elm_win_resize_object_add(win_main, ly);
1506 Evas_Object *bg = setting_create_bg(ly, win_main, "group_list");
1507 elm_object_part_content_set(ly, "elm.swallow.bg", bg);
1508 evas_object_show(ly);
1510 /* add navi_bar to the layout */
1511 Evas_Object *navi_bar = elm_naviframe_add(ly);
1513 elm_object_part_content_set(ly, "elm.swallow.content", navi_bar);
1514 evas_object_show(navi_bar);
1515 *navibar = navi_bar;
1517 // create 'back' button on navigaiton bar
1518 Evas_Object* btn_back = elm_button_add(navi_bar);
1519 evas_object_smart_callback_add(btn_back, "clicked", __btnback_clicked_cb, g_main_ad);
1521 Evas_Object *controlbar = elm_toolbar_add(navi_bar);
1522 setting_retvm_if(controlbar == NULL, FALSE, "controlbar == NULL");
1523 elm_toolbar_shrink_mode_set(controlbar, ELM_TOOLBAR_SHRINK_EXPAND);
1524 //elm_object_style_set(controlbar, NAVI_CONTROLBAR_STYLE);
1526 /* add segment control */
1527 Evas_Object *segment = elm_segment_control_add(controlbar);
1528 setting_retvm_if(segment == NULL, FALSE, "segment == NULL");
1530 Elm_Object_Item *seg_preferred = NULL, *seg_all = NULL;
1531 *segment_preferred = seg_preferred = elm_segment_control_item_add(segment, NULL, _(PREFERRED_STR));
1532 *segment_all = seg_all = elm_segment_control_item_add(segment, NULL, _(ALL_STR));
1534 evas_object_show(segment);
1535 evas_object_smart_callback_add(segment, "changed",
1536 __setting_contorlbar_clicked, cb);
1538 #if !SUPPORT_BOTTOM_BTNS
1539 Elm_Object_Item *item = NULL;
1540 Elm_Object_Item *navi_it = elm_naviframe_item_push(navi_bar, title_text, btn_back, NULL, content, NULL);
1541 elm_object_style_set(btn_back, NAVI_BACK_BUTTON_STYLE);
1542 /* add 'Edit preffered' button to controlbar */
1543 Evas_Object *btn_pref = setting_create_button(controlbar, _(EDIT_PREFERRED_STR),
1544 NAVI_DEF_BUTTON_STYLE,
1545 setting_main_click_edit_preferred_cb,cb);
1547 *edit_item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
1548 elm_object_item_part_content_set(*edit_item, "object", btn_pref);
1549 item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
1550 elm_object_item_part_content_set(item, "object", segment);
1551 elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
1553 elm_object_item_part_content_set(navi_it, "optionheader", controlbar);
1555 Elm_Object_Item *navi_it = elm_naviframe_item_push(navi_bar, title_text, btn_back, NULL, content, "segment/instant");
1556 elm_object_style_set(btn_back, NAVI_BACK_BUTTON_STYLE);
1558 elm_object_item_disabled_set(elm_toolbar_item_append(controlbar, NULL, "", NULL, NULL), EINA_TRUE);
1559 *edit_item = elm_toolbar_item_append(controlbar, NULL, _(EDIT_PREFERRED_STR), setting_main_click_edit_preferred_cb, cb);
1561 elm_object_item_part_content_set(navi_it, "controlbar", controlbar);
1562 elm_object_item_part_content_set(navi_it, "segment", segment);
1566 if (isFoundPreferredItem) {
1567 elm_segment_control_item_selected_set(seg_preferred, EINA_TRUE);
1569 elm_segment_control_item_selected_set(seg_all, EINA_TRUE);
1574 static bool __setting_create_main_view(void *data)
1576 SETTING_TRACE_BEGIN;
1578 setting_retvm_if(data == NULL, FALSE, "data == NULL");
1579 setting_main_appdata *ad = (setting_main_appdata *) data;
1580 #if SUPPORT_MORE_ITEM_FUNCTION
1581 ad->ly_main = setting_create_win_layout(ad->win_main, ad->win_main);
1582 ad->navibar_main = setting_create_navi_bar(ad->ly_main);
1583 /* add controlbar */
1584 Evas_Object *controlbar = elm_toolbar_add(ad->navibar_main);
1585 setting_retvm_if(controlbar == NULL, FALSE, "controlbar == NULL");
1586 elm_toolbar_shrink_mode_set(controlbar, ELM_TOOLBAR_SHRINK_EXPAND);
1588 ad->main_genlist = elm_genlist_add(ad->navibar_main);
1589 elm_object_style_set(ad->main_genlist, "dialogue");
1590 retvm_if(ad->main_genlist == NULL, FALSE,
1591 "Cannot set scroller object as contento of layout");
1592 elm_genlist_clear(ad->main_genlist); /* first to clear list */
1594 setting_create_navi_bar_buttons(_("IDS_COM_BODY_SETTINGS"),
1595 _("IDS_COM_BODY_BACK"), "", _("IDS_ST_OPT_ALL"),
1596 __btnback_clicked_cb, NULL,
1597 __allFrequent_btn_cb, ad, ad->main_genlist,
1598 ad->navibar_main, controlbar);
1599 elm_object_item_disabled_set(elm_toolbar_last_item_get(controlbar), EINA_TRUE);
1601 ad->controlbar = controlbar;
1603 ad->profile_type = MAIN_PROFILE_PREFERRED;
1604 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1605 ad->load_fns[Func_Type_System] = __load_system_level0_list;
1606 ad->load_fns[Func_Type_Apps] = __load_applications_level_all_list;
1607 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level_all_list;
1608 setting_main_refresh(ad);
1612 ad->main_genlist = elm_genlist_add(ad->win_main);
1613 elm_object_style_set(ad->main_genlist, "dialogue");
1614 elm_genlist_clear(ad->main_genlist); /* first to clear list */
1616 int isFoundPreferredItem = FALSE;
1617 for (i = 0; i < setting_cfg_get_category_length(); i++) {
1618 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
1619 pos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
1620 if (Cfg_Item_Pos_Level0 == pos) {
1621 isFoundPreferredItem = TRUE;
1625 if (isFoundPreferredItem) {
1630 ad->ly_main = __create_main_view_widgets(ad->win_main, ad,
1632 _("IDS_COM_BODY_SETTINGS"),
1633 isFoundPreferredItem,
1637 &ad->segment_preferred);
1638 setting_retvm_if(ad->ly_main == NULL, FALSE, "ad->ly_main == NULL");
1644 static bool __setting_create_prefered_view(void *data)
1646 SETTING_TRACE_BEGIN;
1648 setting_retvm_if(data == NULL, FALSE, "data == NULL");
1649 setting_main_appdata *ad = (setting_main_appdata *) data;
1651 /* the genlist will be destroyed with its parent view, when using elm_naviframe_item_pop() to destroy the view. */
1652 ad->edit_preferred_genlist = elm_genlist_add(ad->win_main);
1653 elm_object_style_set(ad->edit_preferred_genlist, "dialogue");
1654 elm_genlist_clear(ad->edit_preferred_genlist); /* first to clear list */
1656 /* [UI] edit preffered view */
1657 Evas_Object *sub_layout = elm_layout_add(ad->win_main);
1658 elm_object_style_set(sub_layout, "dialogue");
1659 elm_layout_file_set(sub_layout, SETTING_THEME_EDJ_NAME, "search_layout");
1660 evas_object_size_hint_weight_set(sub_layout, EVAS_HINT_EXPAND, 0.0);
1661 evas_object_show(sub_layout);
1663 ad->gl_sel_all = elm_genlist_add(ad->win_main);
1664 elm_genlist_clear(ad->gl_sel_all); /* first to clear list */
1665 elm_genlist_bounce_set(ad->gl_sel_all, 0, 0);
1667 elm_object_part_content_set(sub_layout, "search_bar", ad->gl_sel_all); /* add 'Select all' */
1668 elm_object_part_content_set(sub_layout, "search_list", ad->edit_preferred_genlist); /* add Genlist */
1670 /* push, not create */
1671 setting_push_layout_navi_bar(_(EDIT_PREFERRED_STR),
1672 _("IDS_COM_SK_CANCEL"),
1673 _("IDS_COM_SK_DONE"), NULL,
1674 __prefered_buttons_cb, __prefered_buttons_cb, NULL, ad,
1675 sub_layout, ad->navibar_main,
1676 &(ad->controllbar_all_check));
1681 static void setting_main_tapi_event_cb(TapiHandle *handle, int result, void *data, void *user_data)
1683 SETTING_TRACE_BEGIN;
1685 setting_main_appdata *ad = user_data;
1686 ad->b_fm_requesting = FALSE;
1687 SETTING_TRACE("result:%d", result);
1691 case TAPI_POWER_FLIGHT_MODE_RESP_ON:
1693 setting_set_bool_slp_key(BOOL_SLP_SETTING_FLIGHT_MODE,
1694 SETTING_ON_OFF_BTN_ON, &err);
1696 //If Setting has validate operation (fm_waiting_op == FM_LEAVE) to process, process it.
1697 //Otherwise, do nothing
1698 if (FM_LEAVE == ad->fm_waiting_op)
1700 //Send the latest operation
1701 ad->fm_waiting_op = FM_INVALID;
1702 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
1703 setting_retm_if(err != TAPI_API_SUCCESS,
1704 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
1707 ad->b_fm_requesting = TRUE;
1712 case TAPI_POWER_FLIGHT_MODE_RESP_OFF:
1714 setting_set_bool_slp_key(BOOL_SLP_SETTING_FLIGHT_MODE,
1715 SETTING_ON_OFF_BTN_OFF, &err);
1717 //If Setting has validate operation (here, fm_waiting_op == FM_ENTER) to process,process it.
1718 //Otherwise, do nothing
1719 if (FM_ENTER == ad->fm_waiting_op)
1721 //Send the latest operation
1722 ad->fm_waiting_op = FM_INVALID;
1723 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
1724 setting_retm_if(err != TAPI_API_SUCCESS,
1725 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
1728 ad->b_fm_requesting = TRUE;
1733 case TAPI_POWER_FLIGHT_MODE_RESP_FAIL:
1734 //Setting has a validate operation to process, Send the operation request
1735 if (FM_ENTER == ad->fm_waiting_op)
1737 ad->fm_waiting_op = FM_INVALID;
1738 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
1740 setting_retm_if(err != TAPI_API_SUCCESS,
1741 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
1742 ad->b_fm_requesting = TRUE;
1744 else if (FM_LEAVE == ad->fm_waiting_op)
1746 ad->fm_waiting_op = FM_INVALID;
1747 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
1749 setting_retm_if(err != TAPI_API_SUCCESS,
1750 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
1751 ad->b_fm_requesting = TRUE;
1753 else //Current requset is the last one, Setting needs to notify user
1755 setting_create_popup_without_btn(ad, ad->win_main,
1756 _("IDS_COM_POP_ERROR"),
1757 _("IDS_ST_POP_UNABLE_TO_TURN_ON_FLIGHT_MODE_VODA"),
1758 NULL, POPUP_INTERVAL,
1761 //It is need to rollback the status,
1762 if (ad->data_flight) {
1763 ad->data_flight->chk_status = !ad->data_flight->chk_status;
1764 elm_check_state_set(ad->data_flight->eo_check, ad->data_flight->chk_status);
1770 ad->b_fm_requesting = TRUE;
1774 case TAPI_POWER_FLIGHT_MODE_RESP_MAX:
1775 setting_create_popup_without_btn(ad, ad->win_main,
1776 _("IDS_COM_POP_ERROR"),
1777 _("IDS_COM_POP_UNEXPECTED_ERROR"),
1778 NULL, POPUP_INTERVAL, FALSE, FALSE);
1780 //It is need to rollback the status,
1781 if (ad->data_flight) {
1782 ad->data_flight->chk_status = !ad->data_flight->chk_status;
1783 elm_check_state_set(ad->data_flight->eo_check, ad->data_flight->chk_status);
1793 static int setting_main_refresh(void *data)
1795 SETTING_TRACE_BEGIN;
1796 setting_main_appdata *ad = (setting_main_appdata *) data;
1797 elm_genlist_clear(ad->main_genlist); /* first to clear list */
1799 if (is_ug_installed_by_ug_args("rcs-config"))
1801 Elm_Object_Item *item = elm_genlist_item_append(ad->main_genlist, &itc_seperator, NULL, NULL,
1802 ELM_GENLIST_ITEM_NONE, NULL, NULL);
1803 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1804 setting_create_Gendial_field_groupitem(ad->main_genlist,
1805 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1807 setting_main_click_list_ex_ug_cb,
1809 SWALLOW_Type_INVALID,
1811 0, KeyStr_Joyn, NULL,
1816 for(i = Func_Type_Connectivity; i < Func_Type_MAX; i++)
1817 (ad->load_fns[i]) (ad);
1819 memset(ad->load_fns, 0, Func_Type_MAX *sizeof(menu_list_load_fn));
1821 return SETTING_RETURN_SUCCESS;
1824 static int setting_main_create(void *cb)
1826 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1828 setting_main_appdata *ad = (setting_main_appdata *) cb;
1830 //pass NULL to let TAPI access default module
1831 ad->handle = tel_init(NULL);
1833 SETTING_TRACE_ERROR("*** [ERR] tel_init failed ***");
1835 SETTING_TRACE("tel_init ok[handle:%p]", ad->handle);
1837 setting_create_Gendial_itc("dialogue/1text.1icon.2",
1838 &(ad->itc[GENDIAL_Type_1text_1icon_2]));
1839 setting_create_Gendial_itc("dialogue/1text.2icon",
1840 &(ad->itc[GENDIAL_Type_1text_2icon]));
1841 setting_create_Gendial_itc("dialogue/2text.1icon.3",
1842 &(ad->itc[GENDIAL_Type_1icon_2text]));
1843 setting_create_Gendial_itc("dialogue/1text.1icon.2",
1844 &(ad->itc[GENDIAL_Type_1text_2icon_2]));
1845 setting_create_Gendial_itc("dialogue/title",
1846 &(ad->itc[GENDIAL_Type_group_item]));
1847 setting_create_Gendial_itc("select_all",
1848 &(ad->itc[GENDIAL_Type_sel_all]));
1850 setting_create_Gendial_itc("dialogue/2text.3", &(ad->itc[GENDIAL_Type_2text_3]));
1852 ad->view_type = SETTING_VIEW_MAIN;
1853 __setting_create_main_view(ad);
1854 setting_view_main.is_create = 1;
1856 return SETTING_RETURN_SUCCESS;
1859 static int setting_main_destroy(void *cb)
1861 SETTING_TRACE_BEGIN;
1863 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1865 setting_main_appdata *ad = (setting_main_appdata *) cb;
1866 if (0 == setting_view_main.is_create)
1869 return SETTING_RETURN_SUCCESS;
1873 int tapi_ret = tel_deinit(ad->handle);
1874 if (tapi_ret != TAPI_API_SUCCESS) {
1875 SETTING_TRACE_DEBUG("*** [ERR] tel_deinit. [%d] ***", tapi_ret);
1877 SETTING_TRACE("*** tel_deinit OK ");
1882 /* then destroy the UI object. */
1883 if (ad->item_check_list) {
1884 eina_list_free(ad->item_check_list);
1885 ad->item_check_list = NULL;
1887 SETTING_TRACE("*** ad->item_check_list is NULL - abnormal state ");
1891 evas_object_del(ad->ly_main);
1895 if (ad->flight_popup) {
1896 evas_object_del(ad->flight_popup);
1897 ad->flight_popup = NULL;
1899 setting_view_main.is_create = 0;
1901 return SETTING_RETURN_SUCCESS;
1904 static int setting_main_update(void *cb)
1906 SETTING_TRACE_BEGIN;
1909 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1911 setting_main_appdata *ad = (setting_main_appdata *) cb;
1913 if (ad->ly_main != NULL) {
1914 //evas_object_show(ad->ly_main);
1917 return SETTING_RETURN_SUCCESS;
1920 static int setting_main_cleanup(void *cb)
1922 SETTING_TRACE_BEGIN;
1924 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1926 setting_main_appdata *ad = (setting_main_appdata *) cb;
1928 if (ad->ly_main != NULL) {
1929 //evas_object_hide(ad->ly_main);
1932 return SETTING_RETURN_SUCCESS;
1935 /* ***************************************************
1939 ***************************************************/
1941 void setting_update_gl_item(void* data)
1943 SETTING_TRACE_BEGIN;
1944 setting_main_appdata *ad = data;
1945 retm_if(!data, "Invalid argument: data is NULL");
1948 Eina_Bool bGlUpdate = EINA_FALSE;
1949 Setting_GenGroupItem_Data *item_to_update = NULL;
1951 for(;nDx<GL_ITEM_MAX; nDx++) {
1952 if(EINA_TRUE == ad->updateItems[nDx]) {
1956 item_to_update = ad->data_wifi;
1957 bGlUpdate = EINA_TRUE;
1960 item_to_update = ad->data_bt;
1961 bGlUpdate = EINA_TRUE;
1964 item_to_update = ad->data_nfc;
1965 bGlUpdate = EINA_TRUE;
1968 item_to_update = ad->data_mobileApp;
1969 bGlUpdate = EINA_TRUE;
1971 case GL_ITEM_FLIGHT:
1972 item_to_update = ad->data_flight;
1973 bGlUpdate = EINA_FALSE;
1979 default: // other case
1983 if (item_to_update) {
1985 SETTING_TRACE("gl update:%d", nDx);
1986 elm_object_item_data_set(item_to_update->item, item_to_update);
1987 elm_genlist_item_update(item_to_update->item);
1989 SETTING_TRACE("chk update:%d", nDx);
1990 elm_check_state_set(item_to_update->eo_check, item_to_update->chk_status);
1994 ad->updateItems[nDx] = EINA_FALSE;
1995 } // if(EINA_TRUE == ad->updateItems[nDx])
2003 void setting_main_destroy_ug_cb(ui_gadget_h ug, void *priv)
2005 setting_main_appdata *ad = (setting_main_appdata *) priv;
2007 return; /* do nothing if ad is NULL */
2014 setting_main_click_list_item_reset_data(ad, NULL);
2016 // update main genlist in unloading UG
2017 SETTING_TRACE("update main genlist in unloading UG");
2018 setting_update_gl_item(ad);
2023 void setting_main_result_ug_cb(ui_gadget_h ug, service_h service,
2028 SETTING_TRACE_BEGIN;
2033 void setting_main_layout_ug_cb(ui_gadget_h ug, enum ug_mode mode,
2036 setting_main_appdata *ad = (setting_main_appdata *) priv;
2041 SETTING_TRACE_BEGIN;
2043 base = (Evas_Object *) ug_get_layout(ug);
2048 case UG_MODE_FULLVIEW:
2049 evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,
2051 elm_win_resize_object_add(ad->win_main, base);
2052 evas_object_show(base);
2061 /* ***************************************************
2065 ***************************************************/
2067 void setting_main_click_list_item_reset_data(void *data,
2070 SETTING_TRACE_BEGIN;
2071 setting_main_appdata *ad = (setting_main_appdata *) data;
2073 ad->isInUGMode = FALSE;
2078 void /* obj is the layout clicked */
2079 setting_main_click_list_item_ug_cb(void *data, Evas_Object *obj,
2080 char *ug_to_load, service_h svc,
2083 SETTING_TRACE_BEGIN;
2084 setting_main_appdata *ad = (setting_main_appdata *) data;
2086 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
2090 char ug_file[PATH_MAX];
2092 (ug_file, PATH_MAX, "%s/libug-%s.so", SETTING_UG_PATH,
2095 SETTING_TRACE("ug_file:%s", ug_file);
2096 if (!ecore_file_exists(ug_file)) {
2097 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
2101 SETTING_TRACE("to create libug-%s.so", ug_to_load);
2102 ad->ug = ug_create(NULL, ug_to_load, UG_MODE_FULLVIEW, svc, cbs);
2104 ad->isInUGMode = TRUE;
2107 evas_object_show(ad->ly_main);
2109 SETTING_TRACE_ERROR("errno:%d", errno);
2110 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
2116 setting_main_click_list_default_ug_cb(void *data, Evas_Object *obj,
2119 setting_main_appdata *ad = data;
2120 setting_create_simple_popup(ad, ad->win_main, NULL,
2125 setting_main_click_list_usb_cb(void *data, Evas_Object *obj, void *event_info)
2127 SETTING_TRACE_BEGIN;
2128 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2132 char *str_text = USB_NEED_OFF;
2134 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2136 setting_get_int_slp_key(INT_SLP_SETTING_MOBILE_AP_STATUS, &value, &err);
2139 SETTING_TRACE_ERROR("FAIL: VCONFKEY_MOBILE_HOTSPOT_MODE may not exist\n");
2140 setting_main_click_list_ex_ug_cb(data, obj, item);
2144 /* If mobile hotspot is on, going USB utilties is blocked by a popup*/
2145 if (value & VCONFKEY_MOBILE_HOTSPOT_MODE_USB)
2147 elm_genlist_item_selected_set(item, EINA_FALSE);
2148 setting_create_simple_popup(g_main_ad, g_main_ad->win_main, NULL, (str_text));
2152 setting_main_click_list_ex_ug_cb(data, obj, item);
2158 void setting_main_click_list_more_cb(void *data, Evas_Object *obj, void *event_info)
2160 SETTING_TRACE_BEGIN;
2161 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2162 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2163 elm_genlist_item_selected_set(item, EINA_FALSE);
2164 retm_if(data == NULL, "Invalid argument: data is NULL");
2165 setting_main_appdata *ad = data;
2166 Setting_GenGroupItem_Data *selected_item_data =
2167 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2168 SETTING_TRACE("selected_item_data->keyStr:%s", selected_item_data->keyStr);
2169 if (0 == safeStrCmp(selected_item_data->keyStr, KeyStr_MoreConnect))
2171 ad->view_load = SETTING_VIEW_CONNECTIVE_MORE;
2173 else if (0 == safeStrCmp(selected_item_data->keyStr, KeyStr_MoreSystem))
2175 ad->view_load = SETTING_VIEW_SYSTEM_MORE;
2181 setting_view_change(&setting_view_main, &setting_view_more_menu, ad);
2186 setting_main_click_list_ex_ug_cb(void *data, Evas_Object *obj,
2189 SETTING_TRACE_BEGIN;
2190 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2191 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2193 elm_genlist_item_selected_set(item, EINA_FALSE);
2195 if (g_main_ad->ug) {
2197 ("[ad->ug non-NULL]skip genlist click event!!");
2203 if (NULL == data) { /* pass NULL to ug_args when create setting.cfg. */
2204 setting_create_simple_popup(g_main_ad,
2205 g_main_ad->win_main,
2206 NULL, NO_UG_FOUND_MSG);
2211 setting_main_appdata *ad = g_main_ad;
2213 /* if UG is created by Setting app, setting_main_click_list_ex_ug_cb is diabled. */
2214 if (ad->isInUGMode) {
2215 SETTING_TRACE("isInUGMode : TRUE - another UG is running now.");
2216 ad->isInUGMode = FALSE;
2221 ("isInUGMode : FALSE - another UG is NOT running now.")
2224 Setting_GenGroupItem_Data *selected_item_data =
2225 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2226 setting_main_click_list_item_reset_data(ad, obj);
2227 const char *item_name = _(selected_item_data->keyStr);
2230 struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
2231 setting_retm_if(!cbs, "calloc failed");
2232 cbs->layout_cb = setting_main_layout_ug_cb;
2233 cbs->result_cb = setting_main_result_ug_cb;
2234 cbs->destroy_cb = setting_main_destroy_ug_cb;
2235 cbs->priv = (void *)ad;
2237 char *path = get_ug_path_from_ug_args(data);
2238 service_h svc = get_bundle_from_ug_args(data);
2239 setting_main_click_list_item_ug_cb(ad, obj, path, svc, cbs);
2246 service_destroy(svc);
2249 setting_main_click_list_plugin_cb(void *data, Evas_Object *obj,
2252 SETTING_TRACE_BEGIN;
2253 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2254 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2255 elm_genlist_item_selected_set(item, EINA_FALSE);
2257 setting_plugin_load((const char *)data);
2261 void setting_main_list_mouse_up_cb(void *data, Evas_Object *eo,
2264 SETTING_TRACE_BEGIN;
2265 retm_if(data == NULL, "Data parameter is NULL");
2266 Setting_GenGroupItem_Data *list_item =
2267 (Setting_GenGroupItem_Data *) data;
2268 SETTING_TRACE("process item [%s]", list_item->keyStr);
2269 list_item->chk_status = elm_check_state_get(eo); /* for update new state */
2271 SETTING_TRACE("change radio[%s], status is:%d", _(list_item->keyStr),
2272 list_item->chk_status);
2273 /*setting_main_appdata *ad = g_main_ad;*/
2275 if (!safeStrCmp(KeyStr_UsePacketData, list_item->keyStr)) {
2277 if (elm_check_state_get(eo)) {
2278 setting_set_bool_slp_key
2279 (BOOL_SLP_SETTING_USE_PACKET_DATA,
2280 SETTING_ON_OFF_BTN_ON, &err);
2282 setting_set_bool_slp_key
2283 (BOOL_SLP_SETTING_USE_PACKET_DATA,
2284 SETTING_ON_OFF_BTN_OFF, &err);
2287 } else if (!safeStrCmp(KeyStr_Landscape, list_item->keyStr)) {
2288 vconf_set_bool(VCONFKEY_SETAPPL_ROTATE_LOCK_BOOL, ! list_item->chk_status);
2294 void setting_main_sel_list_mouse_up_cb(void *data, Evas_Object *eo,
2297 SETTING_TRACE_BEGIN;
2298 setting_retm_if(data == NULL, "Data parameter is NULL");
2300 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2301 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2302 elm_genlist_item_selected_set(item, 0);
2303 Setting_GenGroupItem_Data *list_item =
2304 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2306 list_item->chk_status = elm_check_state_get(list_item->eo_check);
2309 /*setting_main_appdata *ad = (setting_main_appdata *) data;*/
2311 if (!safeStrCmp(KeyStr_UsePacketData, list_item->keyStr)) {
2312 /* setting_reset_slp_key_by_status(eo, BOOL_SLP_SETTING_USE_PACKET_DATA); */
2314 setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
2315 list_item->chk_status, &err);
2317 } else if (!safeStrCmp(KeyStr_Landscape, list_item->keyStr)) {
2318 vconf_set_bool(VCONFKEY_SETAPPL_ROTATE_LOCK_BOOL, (list_item->chk_status));
2324 void __alternate_flight_mode(Evas_Object *check)
2326 SETTING_TRACE_BEGIN;
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;
2332 //Check whether some requestion is processing by TAPI
2333 if (ad->b_fm_requesting)
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;
2341 //otherwise, invalid waiting operation and send requsetion to TAPI:
2342 ad->fm_waiting_op = FM_INVALID;
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) ***");
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) ***");
2354 ad->b_fm_requesting = TRUE;
2359 setting_main_click_list_network_ug_cb(void *data, Evas_Object *obj,
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;
2366 elm_genlist_item_selected_set(item, EINA_FALSE);
2368 if (g_main_ad->ug) {
2370 ("[ad->ug non-NULL]skip genlist click event!!");
2376 setting_main_appdata *ad = g_main_ad;
2377 setting_main_click_list_item_reset_data(ad, obj);
2381 setting_get_int_slp_key(INT_SLP_SETTING_SIM_SLOT, &value, &err);
2382 SETTING_TRACE("value:%d", value);
2384 case VCONFKEY_TELEPHONY_SIM_INSERTED:
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",
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);
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);
2421 setting_main_click_Gendial_list_flight_mode_cb(void *data, Evas_Object *obj,
2425 setting_retm_if(data == NULL, "Data parameter is NULL");
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);
2434 list_item->chk_status = !old_status;
2435 elm_check_state_set(list_item->eo_check, list_item->chk_status);
2437 __alternate_flight_mode(list_item->eo_check);
2442 setting_main_click_list_flight_mode_cb(void *data, Evas_Object *obj,
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);
2453 __alternate_flight_mode(obj);
2459 * store current selection in setting.cfg
2461 void setting_try_save_check_list(void *data)
2463 SETTING_TRACE_BEGIN;
2464 setting_main_appdata *ad = (setting_main_appdata *) data;
2466 Eina_List *check_list = ad->item_check_list;
2467 Setting_GenGroupItem_Data *list_item = NULL;
2468 int update_count = 0;
2470 while (check_list) {
2471 list_item = (Setting_GenGroupItem_Data *) eina_list_data_get(check_list);
2472 if (NULL == list_item) continue;
2475 if (list_item->chk_status) {
2476 /* to update config file */
2477 setting_cfg_set_pos(list_item->keyStr, Cfg_Item_Pos_Level0);
2479 /* to update config file */
2480 setting_cfg_set_pos(list_item->keyStr, Cfg_Item_Pos_Level1);
2482 check_list = eina_list_next(check_list);
2485 if (update_count == 0) {
2486 /* to popup tips notify */
2488 setting_cfg_file_update();
2494 setting_main_click_edit_preferred_cb(void *data, Evas_Object *obj, void *event_info)
2496 SETTING_TRACE_BEGIN;
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);