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>
25 #include <setting-main.h>
26 #include <setting-plugin.h>
28 static int setting_main_create(void *cb);
29 static int setting_main_destroy(void *cb);
30 static int setting_main_update(void *cb);
31 static int setting_main_cleanup(void *cb);
33 setting_view setting_view_main = {
34 .create = setting_main_create,
35 .update = setting_main_update,
36 .destroy = setting_main_destroy,
37 .cleanup = setting_main_cleanup,
40 static void setting_main_tapi_event_cb(TapiHandle *handle, int result, void *data, void *user_data);
41 static int setting_main_refresh(void *data);
42 static void __alternate_flight_mode(Evas_Object *check);
43 static void setting_main_click_Gendial_list_flight_mode_cb(void *data,
46 static void __alternate_flight_mode(Evas_Object *check);
48 void setting_main_click_list_item_ug_cb(void *data, Evas_Object *obj, char *ug_to_load, service_h svc, struct ug_cbs *cbs);
50 setting_main_appdata *g_main_ad;
52 __setting_chk_changed(void *data, Evas_Object *obj, void *event_info)
54 /* SETTING_TRACE_BEGIN; */
55 retm_if(data == NULL, "Data parameter is NULL");
56 Setting_GenGroupItem_Data *list_item =
57 (Setting_GenGroupItem_Data *) data;
58 /* SETTING_TRACE("process item [%s]", _(list_item->keyStr)); */
59 list_item->chk_status = elm_check_state_get(obj);
61 Eina_List *check_list = g_main_ad->item_check_list;
62 Setting_GenGroupItem_Data *item = NULL;
63 bool isFoundNotSelSomeone = FALSE;
64 bool isFoundSelSomeone = FALSE;
66 item = (Setting_GenGroupItem_Data *)
67 eina_list_data_get(check_list);
71 if (!(item->chk_status)) {
72 isFoundNotSelSomeone = TRUE;
74 isFoundSelSomeone = TRUE;
76 if (isFoundNotSelSomeone && isFoundSelSomeone) {
79 check_list = eina_list_next(check_list);
82 if (isFoundNotSelSomeone) {
83 g_main_ad->check_all_item->chk_status = 0; /* for update new state */
85 g_main_ad->check_all_item->chk_status = 1; /* for update new state */
87 elm_object_item_data_set(g_main_ad->check_all_item->item, g_main_ad->check_all_item);
88 elm_genlist_item_update(g_main_ad->check_all_item->item);
90 if (isFoundSelSomeone) {
91 /* SETTING_TRACE("Set it to active"); */
92 elm_object_item_disabled_set(elm_toolbar_last_item_get
93 (g_main_ad->controllbar_all_check),
98 static void __setting_list_changed(void *data, Evas_Object *obj,
104 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
106 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
107 elm_genlist_item_selected_set(item, 0);
108 Setting_GenGroupItem_Data *list_item =
109 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
111 int old_status = elm_check_state_get(list_item->eo_check);
113 list_item->chk_status = !old_status;
114 elm_check_state_set(list_item->eo_check, list_item->chk_status);
116 Eina_List *check_list = g_main_ad->item_check_list;
117 Setting_GenGroupItem_Data *group_item = NULL;
118 bool isFoundNotSelSomeone = FALSE;
119 bool isFoundSelSomeone = FALSE;
121 group_item = (Setting_GenGroupItem_Data *)
122 eina_list_data_get(check_list);
123 if (NULL == group_item) {
126 if (!(group_item->chk_status)) {
127 isFoundNotSelSomeone = TRUE;
130 isFoundSelSomeone = TRUE;
132 if (isFoundNotSelSomeone && isFoundSelSomeone) {
136 check_list = eina_list_next(check_list);
139 if (isFoundNotSelSomeone) {
140 g_main_ad->check_all_item->chk_status = 0; /* for update new state */
142 g_main_ad->check_all_item->chk_status = 1; /* for update new state */
144 elm_object_item_data_set(g_main_ad->check_all_item->item, g_main_ad->check_all_item);
145 elm_genlist_item_update(g_main_ad->check_all_item->item);
147 if (isFoundSelSomeone) {
148 /* SETTING_TRACE("Set it to active"); */
149 elm_object_item_disabled_set(elm_toolbar_last_item_get
150 (g_main_ad->controllbar_all_check),
157 __setting_chk_sel_all_changed(void *data, Evas_Object *obj, void *event_info)
159 /* SETTING_TRACE_BEGIN; */
160 retm_if(data == NULL, "Data parameter is NULL");
161 Setting_GenGroupItem_Data *list_item =
162 (Setting_GenGroupItem_Data *) data;
163 bool is_all_checked = elm_check_state_get(obj);
164 list_item->chk_status = is_all_checked; /* for update new state */
165 /* SETTING_TRACE("is_all_checked:%d", is_all_checked); */
167 Eina_List *check_list = g_main_ad->item_check_list;
170 list_item = (Setting_GenGroupItem_Data *)
171 eina_list_data_get(check_list);
172 if (NULL == list_item) {
175 list_item->chk_status = is_all_checked;
176 elm_object_item_data_set(list_item->item, list_item);
177 elm_genlist_item_update(list_item->item);
178 check_list = eina_list_next(check_list);
180 if (is_all_checked) {
181 elm_object_item_disabled_set(elm_toolbar_last_item_get
182 (g_main_ad->controllbar_all_check),
187 static void __setting_list_sel_all_changed(void *data, Evas_Object *obj,
193 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
194 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
195 elm_genlist_item_selected_set(item, 0);
196 Setting_GenGroupItem_Data *list_item =
197 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
199 int old_status = elm_check_state_get(list_item->eo_check);
201 int is_all_checked = list_item->chk_status = !old_status;
202 elm_check_state_set(list_item->eo_check, list_item->chk_status);
204 Eina_List *check_list = g_main_ad->item_check_list;
207 list_item = (Setting_GenGroupItem_Data *)
208 eina_list_data_get(check_list);
209 if (NULL == list_item) {
212 list_item->chk_status = is_all_checked;
213 /* elm_check_state_set(list_item->eo_check, is_all_checked); */
214 elm_object_item_data_set(list_item->item, list_item);
215 elm_genlist_item_update(list_item->item);
216 check_list = eina_list_next(check_list);
218 if (is_all_checked) {
219 elm_object_item_disabled_set(elm_toolbar_last_item_get
220 (g_main_ad->controllbar_all_check),
226 static void __load_check_list(void *data, Evas_Object **genlist,
230 setting_main_appdata *ad = (setting_main_appdata *) data;
234 Cfg_Item_Position pos = Cfg_Item_Pos_Uninstall;
235 bool isFoundNonSelItem = FALSE;
236 bool isFoundSelSomeoneItem = FALSE;
239 char *icon_path = NULL;
242 setting_create_Gendial_field_def(ad->gl_sel_all,
243 &(ad->itc[GENDIAL_Type_sel_all]),
244 __setting_list_sel_all_changed, ad,
245 SWALLOW_Type_1CHECK, NULL, NULL,
246 state, KeyStr_Select_All, NULL,
247 __setting_chk_sel_all_changed);
248 __BACK_POINTER_SET(ad->check_all_item);
250 Setting_GenGroupItem_Data *item = NULL;
251 Setting_GenGroupItem_Data *category_item = NULL;
252 for (i = 0; i < setting_cfg_get_category_length(); i++) {
253 if (NULL == menuNameKey) {
254 /* SETTING_TRACE("load all the items in config file"); */
257 (setting_cfg_get_category_name(i), menuNameKey)) {
260 char *category_name = setting_cfg_get_category_name(i);
263 setting_create_Gendial_field_group_titleItem(*genlist,
265 [GENDIAL_Type_group_item]),
267 ELM_GENLIST_ITEM_NONE,
271 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
272 keyStr = setting_cfg_get_keyname_idx(i, j);
273 pos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
275 if (Cfg_Item_Pos_Level1 == pos) {
277 isFoundNonSelItem = TRUE;
280 isFoundSelSomeoneItem = TRUE;
283 icon_path = setting_cfg_get_icon_path_idx(i, j);
285 setting_create_Gendial_field_groupitem(*genlist,
287 [GENDIAL_Type_1text_2icon_2]),
289 __setting_list_changed,
291 SWALLOW_Type_1CHECKICON,
296 __setting_chk_changed);
298 ad->item_check_list =
299 eina_list_append(ad->item_check_list, item);
302 SETTING_TRACE_ERROR("category_item is NULL");
306 if (ad->check_all_item) {
307 if (isFoundNonSelItem) {
308 ad->check_all_item->chk_status = 0; /* for update new state */
310 ad->check_all_item->chk_status = 1; /* for update new state */
312 elm_object_item_data_set(ad->check_all_item->item, ad->check_all_item);
313 elm_genlist_item_update(ad->check_all_item->item);
315 SETTING_TRACE_ERROR("ad->check_all_item is NULL");
318 if (isFoundSelSomeoneItem) {
319 elm_object_item_disabled_set(elm_toolbar_last_item_get
320 (ad->controllbar_all_check),
323 elm_object_item_disabled_set(elm_toolbar_last_item_get
324 (ad->controllbar_all_check),
331 static Setting_GenGroupItem_Data * __flightmode_handler(void* data, char* keyStr, char* icon_path, char* ug_name, Evas_Object *genlist)
333 // NOT UG --> it's just UI drawing
335 setting_main_appdata *ad = (setting_main_appdata *)data;
337 setting_get_bool_slp_key (BOOL_SLP_SETTING_FLIGHT_MODE, &value, &err);
339 /* create flight_mode */
340 ad->data_flight = setting_create_Gendial_field_groupitem(genlist,
341 &(ad->itc[GENDIAL_Type_1text_2icon]),
343 setting_main_click_Gendial_list_flight_mode_cb,
345 SWALLOW_Type_1ICON_1RADIO,
351 setting_main_click_list_flight_mode_cb);
352 __BACK_POINTER_SET(ad->data_flight);
354 return ad->data_flight;
357 static Setting_GenGroupItem_Data * __wifi_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
359 setting_main_appdata *ad = (setting_main_appdata *)data;
361 char* pa_wifi = get_pa_Wi_Fi_on_off_str();
362 ad->data_wifi = setting_create_Gendial_field_groupitem(genlist,
363 &(ad->itc[GENDIAL_Type_1icon_2text]),
365 setting_main_click_list_ex_ug_cb,
367 SWALLOW_Type_INVALID,
374 __BACK_POINTER_SET(ad->data_wifi);
377 return ad->data_wifi;
380 static Setting_GenGroupItem_Data * __bluetooth_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
382 setting_main_appdata *ad = (setting_main_appdata *)data;
384 ad->data_bt = setting_create_Gendial_field_groupitem(genlist,
385 &(ad->itc[GENDIAL_Type_1icon_2text]),
387 setting_main_click_list_ex_ug_cb,
389 SWALLOW_Type_INVALID,
397 __BACK_POINTER_SET(ad->data_bt);
402 static Setting_GenGroupItem_Data * __mobileap_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
404 setting_main_appdata *ad = (setting_main_appdata *)data;
406 ad->data_mobileApp = setting_create_Gendial_field_groupitem(genlist,
407 &(ad->itc[GENDIAL_Type_1icon_2text]),
409 setting_main_click_list_ex_ug_cb,
411 SWALLOW_Type_INVALID,
416 get_Mobile_AP_on_off_str
419 __BACK_POINTER_SET(ad->data_mobileApp);
421 return ad->data_mobileApp;
424 static Setting_GenGroupItem_Data * __allshare_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
426 setting_main_appdata *ad = (setting_main_appdata *)data;
428 Setting_GenGroupItem_Data * obj = setting_create_Gendial_field_groupitem(genlist,
429 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
431 setting_main_click_list_default_ug_cb,
433 SWALLOW_Type_INVALID,
442 static Setting_GenGroupItem_Data * __network_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
444 setting_main_appdata *ad = (setting_main_appdata *)data;
446 Setting_GenGroupItem_Data * obj = setting_create_Gendial_field_groupitem(genlist,
447 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
449 setting_main_click_list_network_ug_cb,
451 SWALLOW_Type_INVALID,
461 static Setting_GenGroupItem_Data * __nfc_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
463 setting_main_appdata *ad = (setting_main_appdata *)data;
465 ad->data_nfc = setting_create_Gendial_field_groupitem(genlist,
466 &(ad->itc[GENDIAL_Type_1icon_2text]),
468 setting_main_click_list_ex_ug_cb,
470 SWALLOW_Type_INVALID,
475 get_NFC_on_off_str(),
477 __BACK_POINTER_SET(ad->data_nfc);
479 setting_create_Gendial_field_def(genlist, &itc_multiline_text, NULL,
480 ad, SWALLOW_Type_LAYOUT_SPECIALIZTION,
481 NULL, NULL, 0, SETTING_NFC_DESC, NULL, NULL);
486 static Setting_GenGroupItem_Data * __default_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
488 setting_main_appdata *ad = (setting_main_appdata *)data;
489 Setting_GenGroupItem_Data * obj = setting_create_Gendial_field_groupitem(genlist,
490 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
492 setting_main_click_list_ex_ug_cb,
494 SWALLOW_Type_INVALID,
501 if (!safeStrCmp(KeyStr_WiFiDirect, keyStr)) {
502 setting_create_Gendial_field_def(genlist, &itc_multiline_text, NULL,
503 ad, SWALLOW_Type_LAYOUT_SPECIALIZTION,
504 NULL, NULL, 0, SETTING_WIFI_DIRECT_DESC, NULL, NULL);
505 } else if (!safeStrCmp(KeyStr_KeisOverWifi, keyStr)) {
506 setting_create_Gendial_field_def(genlist, &itc_multiline_text, NULL,
507 ad, SWALLOW_Type_LAYOUT_SPECIALIZTION,
508 NULL, NULL, 0, SETTING_KIES_VIA_WIFI_DESC, NULL, NULL);
516 typedef struct mainlist_entry mainlist_entry;
518 struct mainlist_entry {
520 Setting_GenGroupItem_Data* (*ui_handler)(void* data, char* title, char* iconpath, char* ugname, Evas_Object *genlist);
525 MAINLIST_ENTRY_FLIGHT_MODE = 0,
528 MAINLIST_ENTRY_MOBILEAP,
529 MAINLIST_ENTRY_ALLSHARE,
530 MAINLIST_ENTRY_NETWORK,
532 MAINLIST_ENTRY_DEFAULT,
536 static mainlist_entry mainlist_table[] = {
537 {KeyStr_FlightMode, __flightmode_handler}, // 0 --> NOT UG
538 {KeyStr_WiFi, __wifi_handler}, // 1 --> UG
539 {KeyStr_Bluetooth, __bluetooth_handler}, // 1 --> UG
540 {KeyStr_MobileAP, __mobileap_handler}, // 1 --> UG
541 {KeyStr_AllShare, __allshare_handler}, // NOT UG
542 {KeyStr_Network, __network_handler}, // 1 --> UG
543 {KeyStr_NFC, __nfc_handler}, // 1 --> UG
544 {"Default", __default_handler}, // 1 --> UG
546 //--------------------------------------------------------------
551 // Flight Mode - not UG
552 // All share - not UG
553 // WiFi - added toggle
559 void __load_connectivity_menu_list(void *data, Cfg_Item_Position inputPos, Evas_Object *genlist)
562 setting_main_appdata *ad = data;
563 //group title, only display in setting main view
564 if (SETTING_VIEW_MAIN == ad->view_load) {
565 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
566 &(ad->itc[GENDIAL_Type_group_item]),
568 ELM_GENLIST_ITEM_NONE,
569 KeyStr_Connectivity, NULL);
572 int idx_second_menu = 0;
575 char *icon_path = NULL;
576 char *ug_args = NULL;
577 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
580 bool is_emulator = isEmulBin();
582 for (i = 0; i < setting_cfg_get_category_length(); i++) {
584 (setting_cfg_get_category_name(i), KeyStr_Connectivity))
587 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
588 keyStr = setting_cfg_get_keyname_idx(i, j);
589 tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
590 ug_args = setting_cfg_get_ug_args_idx(i, j);
591 icon_path = setting_cfg_get_icon_path_idx(i, j);
592 /* SETTING_TRACE_DEBUG("Got an item[keyStr:%s, ug_args:%s, pos:%d]", */
593 /* keyStr, ug_args, tmpPos); */
596 if (!safeStrCmp(KeyStr_FlightMode, keyStr)) {
597 continue; /* hide Flight Mode in Emulator*/
598 } else if (!safeStrCmp(KeyStr_WiFi, keyStr)) {
599 continue; /* hide WIFI in Emulator*/
600 } else if (!safeStrCmp(KeyStr_MobileAP, keyStr)) {
601 continue; /* hide Tethering in Emulator*/
602 } else if (!safeStrCmp(KeyStr_NFC, keyStr)) {
603 continue; /* hide NFC in Emulator*/
604 } else if (!safeStrCmp(KeyStr_WiFiDirect, keyStr)) {
605 continue; /* hide WiFiDirect in Emulator*/
606 } else if (!safeStrCmp(KeyStr_AllShareCast, keyStr)) {
607 continue; /* hide AllShareCast in Emulator*/
608 } else if (!safeStrCmp(KeyStr_NearbyDevices, keyStr)) {
609 continue; /* hide NearbyDevices in Emulator*/
610 } else if (!safeStrCmp(KeyStr_KeisOverWifi, keyStr)) {
611 continue; /* hide KeisOverWifi in Emulator*/
612 } else if (!safeStrCmp(KeyStr_Synchronise, keyStr)) {
613 continue; /* hide Synchronise in Emulator*/
614 } else if (!safeStrCmp(KeyStr_Network, keyStr)) {
615 continue; /* hide Network in Emulator*/
621 if (idx_second_menu < MAX_MORE_MENU_NUM
622 && Cfg_Item_Pos_Level1 == tmpPos
623 && SETTING_VIEW_MAIN == ad->view_load
624 && MAIN_PROFILE_PREFERRED == ad->profile_type) {
626 ad->more_connective_menus[idx_second_menu++] = keyStr;
629 if (Cfg_Item_Pos_Level_All == inputPos) {
630 } else if (inputPos != tmpPos) { /* not in the inputPos level */
634 if (!safeStrCmp(KeyStr_FlightMode, keyStr)) { /* load special radio */
636 mainlist_table[MAINLIST_ENTRY_FLIGHT_MODE].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
638 } else if (!safeStrCmp(KeyStr_AllShare, keyStr)) { /* NOT UG */
640 mainlist_table[MAINLIST_ENTRY_ALLSHARE].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
642 } else if (!safeStrCmp(KeyStr_WiFi, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
644 mainlist_table[MAINLIST_ENTRY_WIFI].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
646 } else if (!safeStrCmp(KeyStr_Bluetooth, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
648 mainlist_table[MAINLIST_ENTRY_BT].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
650 } else if (!safeStrCmp(KeyStr_MobileAP, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
652 mainlist_table[MAINLIST_ENTRY_MOBILEAP].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
654 } else if (!safeStrCmp(KeyStr_Network, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special UG */
656 mainlist_table[MAINLIST_ENTRY_NETWORK].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
658 } else if (!safeStrCmp(KeyStr_NFC, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
659 int nfc_value = FALSE; //default
660 vconf_get_bool(VCONFKEY_NFC_FEATURE, &nfc_value);
661 if (VCONFKEY_NFC_FEATURE_ON == nfc_value)
663 mainlist_table[MAINLIST_ENTRY_NFC].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
665 } else { /* load other UGs */
666 if (is_ug_installed_by_ug_args(ug_args))
668 mainlist_table[MAINLIST_ENTRY_DEFAULT].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
674 //end group , only display in setting main view
675 #if SUPPORT_MORE_ITEM_FUNCTION
676 if (SETTING_VIEW_MAIN == ad->view_load && MAIN_PROFILE_PREFERRED == ad->profile_type)
678 char sub_text[MAX_COMMON_BUFFER_LEN] = {0, };
680 while (idx < MAX_MORE_MENU_NUM && ad->more_connective_menus[idx])
684 safeStrNCat(sub_text, ", ", MAX_COMMON_BUFFER_LEN);
686 safeStrNCat(sub_text, _(ad->more_connective_menus[idx]), MAX_COMMON_BUFFER_LEN);
690 ad->data_moreConnect =
691 setting_create_Gendial_field_groupitem(ad->main_genlist,
692 &(ad->itc[GENDIAL_Type_2text_3]),
694 setting_main_click_list_more_cb,
696 SWALLOW_Type_INVALID,
703 __BACK_POINTER_SET(ad->data_moreConnect);
709 void __load_connectivity_level0_list(void *data)
711 setting_main_appdata *ad = data;
712 __load_connectivity_menu_list(ad, Cfg_Item_Pos_Level0, ad->main_genlist);
715 void __load_connectivity_level_all_list(void *data)
718 setting_main_appdata *ad = data;
719 __load_connectivity_menu_list(ad, Cfg_Item_Pos_Level_All, ad->main_genlist);
722 void __load_system_menu_list(void *data, Cfg_Item_Position inputPos, Evas_Object *genlist)
725 SETTING_TRACE_DEBUG("pos :%d", inputPos);
726 setting_main_appdata *ad = data;
727 //group title, only display in setting main view
728 if (SETTING_VIEW_MAIN == ad->view_load) {
729 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
730 &(ad->itc[GENDIAL_Type_group_item]),
732 ELM_GENLIST_ITEM_NONE,
733 KeyStr_System, NULL);
735 int idx_second_menu = 0;
738 char *icon_path = NULL;
739 char *ug_args = NULL;
741 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
746 bool is_emulator = isEmulBin();
748 //SETTING_TRACE("setting_cfg_get_category_length() :: %d ", setting_cfg_get_category_length());
749 for (i = 0; i < setting_cfg_get_category_length(); i++) {
750 if (safeStrCmp(setting_cfg_get_category_name(i), KeyStr_System))
753 //SETTING_TRACE(" setting_cfg_get_menu_length(%d) :: %d ",i, setting_cfg_get_menu_length(i) );
754 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
755 keyStr = setting_cfg_get_keyname_idx(i, j);
756 /* sg_path = setting_cfg_get_ugpath_idx(i, j); */
757 tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
758 icon_path = setting_cfg_get_icon_path_idx(i, j);
759 ug_args = setting_cfg_get_ug_args_idx(i, j);
761 //SETTING_TRACE("KeyString : %s , tmpPos : %d , inputPos : %d ", keyStr, tmpPos, inputPos );
764 if (!safeStrCmp(KeyStr_EventsNotifications, keyStr)) {
765 continue; /* hide EventsNotifications in Emulator*/
766 } else if (!safeStrCmp(KeyStr_Security, keyStr)) {
767 continue; /* hide Security in Emulator*/
768 } else if (!safeStrCmp(KeyStr_Motions, keyStr)) {
769 continue; /* hide Motion in Emulator*/
770 } else if (!safeStrCmp(KeyStr_Accessibility, keyStr)) {
771 continue; /* hide Accessibility in Emulator*/
772 } else if (!safeStrCmp(KeyStr_VoiceInOut, keyStr)) {
773 continue; /* hide VoiceInOut in Emulator*/
774 } else if (!safeStrCmp(keystr_Drivingmode, keyStr)) {
775 continue; /* hide Drivingmode in Emulator*/
776 } else if (!safeStrCmp(KeyStr_License, keyStr)) {
777 continue; /* hide License in Emulator*/
778 } else if (!safeStrCmp(KeyStr_Memory, keyStr)) {
779 continue; /* hide Memory in Emulator*/
785 if (idx_second_menu < MAX_MORE_MENU_NUM
786 && Cfg_Item_Pos_Level1 == tmpPos
787 && SETTING_VIEW_MAIN == ad->view_load
788 && MAIN_PROFILE_PREFERRED == ad->profile_type) {
789 ad->more_system_menus[idx_second_menu++] = keyStr;
792 if (Cfg_Item_Pos_Level_All == inputPos) {
794 //SETTING_TRACE("Cfg_Item_Pos_Level_All == inputPos ---> no draw --- WHY?? ");
795 } else if (inputPos != tmpPos) { /* not in the inputPos level */
796 //SETTING_TRACE("inputPos == tmp Pos ---> no draw --- WHY?? ");
800 if (!safeStrCmp(KeyStr_Landscape, keyStr)) { /* load special UG */
803 (VCONFKEY_SETAPPL_ROTATE_LOCK_BOOL, &value);
806 ad->data_rotationMode =
807 setting_create_Gendial_field_groupitem(genlist,
808 &(ad->itc[GENDIAL_Type_1text_2icon]),
810 setting_main_sel_list_mouse_up_cb,
812 SWALLOW_Type_1ICON_1RADIO,
818 setting_main_list_mouse_up_cb);
819 __BACK_POINTER_SET(ad->data_rotationMode);
821 else if (!safeStrCmp(KeyStr_Brightness, keyStr)) {
823 char* pa_bright = get_brightness_mode_str();
825 setting_create_Gendial_field_groupitem(genlist,
826 &(ad->itc[GENDIAL_Type_1icon_2text]),
828 setting_main_click_list_ex_ug_cb,
830 SWALLOW_Type_INVALID,
837 __BACK_POINTER_SET(ad->data_bright);
840 else { /* load other UGs */
842 if (is_ug_installed_by_ug_args(ug_args))
844 setting_create_Gendial_field_groupitem(genlist,
845 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
847 setting_main_click_list_ex_ug_cb,
849 SWALLOW_Type_INVALID,
860 //end group, only display in setting main view
861 #if SUPPORT_MORE_ITEM_FUNCTION
862 if (SETTING_VIEW_MAIN == ad->view_load && MAIN_PROFILE_PREFERRED == ad->profile_type)
864 char sub_text[MAX_COMMON_BUFFER_LEN] = {0, };
866 while (idx < MAX_MORE_MENU_NUM && ad->more_system_menus[idx])
870 safeStrNCat(sub_text, ", ", MAX_COMMON_BUFFER_LEN);
872 safeStrNCat(sub_text, _(ad->more_system_menus[idx]), MAX_COMMON_BUFFER_LEN);
876 ad->data_moreSystem =
877 setting_create_Gendial_field_groupitem(ad->main_genlist,
878 &(ad->itc[GENDIAL_Type_2text_3]),
880 setting_main_click_list_more_cb,
882 SWALLOW_Type_INVALID,
889 __BACK_POINTER_SET(ad->data_moreSystem);
894 static void __load_system_level0_list(void *data)
896 setting_main_appdata *ad = data;
897 __load_system_menu_list(ad, Cfg_Item_Pos_Level0, ad->main_genlist);
900 static void __load_system_level_all_list(void *data)
903 setting_main_appdata *ad = data;
904 __load_system_menu_list(ad, Cfg_Item_Pos_Level_All, ad->main_genlist);
907 static void __load_applications_menu_list(void *data,
908 Cfg_Item_Position inputPos)
911 SETTING_TRACE_DEBUG("pos :%d", inputPos);
912 setting_main_appdata *ad = data;
914 bool is_emulator = isEmulBin();
917 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
918 &(ad->itc[GENDIAL_Type_group_item]),
920 ELM_GENLIST_ITEM_NONE,
921 KeyStr_Applications, NULL);
923 char *icon_path = NULL;
924 char *ug_args = NULL;
925 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
928 for (i = 0; i < setting_cfg_get_category_length(); i++) {
930 (setting_cfg_get_category_name(i), KeyStr_Applications))
933 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
934 keyStr = setting_cfg_get_keyname_idx(i, j);
935 icon_path = setting_cfg_get_icon_path_idx(i, j);
936 ug_args = setting_cfg_get_ug_args_idx(i, j);
938 (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
940 if (Cfg_Item_Pos_Level_All == inputPos) {
941 } else if (inputPos != tmpPos) { /* not in the inputPos level */
946 /* hide all except Email */
947 if (safeStrCmp(KeyStr_Email, keyStr)) {
954 setting_create_Gendial_field_groupitem(ad->main_genlist,
955 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
957 setting_main_click_list_ex_ug_cb,
959 SWALLOW_Type_INVALID,
970 static void __load_applications_level0_list(void *data)
972 setting_main_appdata *ad = data;
973 __load_applications_menu_list(ad, Cfg_Item_Pos_Level0);
976 static void __load_applications_level_all_list(void *data)
979 setting_main_appdata *ad = data;
980 __load_applications_menu_list(ad, Cfg_Item_Pos_Level_All);
983 static int __get_downloaded_apps_num(Cfg_Item_Position inputPos)
986 SETTING_TRACE_DEBUG("pos :%d", inputPos);
987 int downloaded_apps_num = 0;
988 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
990 for (i = 0; i < setting_cfg_get_category_length(); i++) {
992 (setting_cfg_get_category_name(i), KeyStr_DownloadedAPPs))
995 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
996 tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
997 if (Cfg_Item_Pos_Level_All == inputPos) {
998 } else if (inputPos != tmpPos) { /* not in the inputPos level */
1002 downloaded_apps_num++;
1008 DIR *dp = opendir (PLUGIN_CFG_DIR);
1012 while (ep = readdir (dp))
1014 if (0 == safeStrCmp(".", ep->d_name)
1015 || 0 == safeStrCmp("..", ep->d_name))
1019 downloaded_apps_num++;
1021 (void) closedir (dp);
1024 SETTING_TRACE("Exit %s with return[%d]",__FUNCTION__, downloaded_apps_num);
1025 return downloaded_apps_num;
1028 static void __load_downloaded_apps_menu_list(void *data,
1029 Cfg_Item_Position inputPos)
1031 SETTING_TRACE_BEGIN;
1032 SETTING_TRACE_DEBUG("pos :%d", inputPos);
1033 setting_main_appdata *ad = data;
1035 // if the number of download apps is zero, display a bottom seperator
1036 if (0 == __get_downloaded_apps_num(inputPos)) {
1037 Elm_Object_Item *item = NULL;
1038 item = elm_genlist_item_append(ad->main_genlist, &itc_bottom_seperator, NULL, NULL,
1039 ELM_GENLIST_ITEM_NONE, NULL, NULL);
1040 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1045 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
1046 &(ad->itc[GENDIAL_Type_group_item]),
1048 ELM_GENLIST_ITEM_NONE,
1049 KeyStr_DownloadedAPPs,
1051 char *keyStr = NULL;
1052 char *icon_path = NULL;
1053 char *ug_args = NULL;
1055 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
1057 for (i = 0; i < setting_cfg_get_category_length(); i++) {
1059 (setting_cfg_get_category_name(i), KeyStr_DownloadedAPPs))
1062 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
1063 keyStr = setting_cfg_get_keyname_idx(i, j);
1065 (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
1066 icon_path = setting_cfg_get_icon_path_idx(i, j);
1067 ug_args = setting_cfg_get_ug_args_idx(i, j);
1069 if (Cfg_Item_Pos_Level_All == inputPos) {
1070 } else if (inputPos != tmpPos) { /* not in the inputPos level */
1074 setting_create_Gendial_field_groupitem(ad->main_genlist,
1075 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1077 setting_main_click_list_ex_ug_cb,
1079 SWALLOW_Type_INVALID,
1089 DIR *dp = opendir (PLUGIN_CFG_DIR);
1096 while (ep = readdir (dp))
1098 memset(fullpath, 0x00, 256);
1099 strncpy(fullpath, PLUGIN_CFG_DIR, 256);
1100 strncat(fullpath, "/", 256);
1101 strncat(fullpath, ep->d_name, 256);
1103 //SETTING_TRACE("ep->d_name:%s", ep->d_name);
1104 if (0 == safeStrCmp(".", ep->d_name)
1105 || 0 == safeStrCmp("..", ep->d_name))
1109 SETTING_TRACE("fullpath: %s", fullpath);
1110 char *p = strrchr(ep->d_name, '.');
1112 setting_create_Gendial_field_groupitem(ad->main_genlist,
1113 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1115 setting_main_click_list_plugin_cb,
1117 SWALLOW_Type_INVALID,
1118 IMG_DefaultIcon, NULL,
1119 0, ep->d_name, NULL,
1123 (void) closedir (dp);
1129 static void __load_downloaded_apps_level0_list(void *data)
1131 setting_main_appdata *ad = data;
1132 __load_downloaded_apps_menu_list(ad, Cfg_Item_Pos_Level0);
1135 static void __load_downloaded_apps_level_all_list(void *data)
1137 SETTING_TRACE_BEGIN;
1138 setting_main_appdata *ad = data;
1139 __load_downloaded_apps_menu_list(ad, Cfg_Item_Pos_Level_All);
1142 static void __check_all_view_clear(void *data)
1144 SETTING_TRACE_BEGIN;
1146 setting_main_appdata *ad = data;
1147 if (ad->item_check_list) {
1148 eina_list_free(ad->item_check_list);
1149 ad->item_check_list = NULL;
1152 ad->gl_sel_all = NULL;
1153 ad->edit_preferred_genlist = NULL;
1154 ad->controllbar_all_check = NULL;
1155 ad->check_all_item =NULL;
1158 static void __prefered_buttons_cb(void *data, Evas_Object *obj, void *event_info)
1160 SETTING_TRACE_BEGIN;
1162 setting_main_appdata *ad = (setting_main_appdata *) data;
1163 const char *key = NULL;
1165 #if SUPPORT_BOTTOM_BTNS
1166 ret_if(!event_info);
1167 Elm_Object_Item *it = event_info;
1168 key = elm_object_item_text_get(it);
1170 key = elm_object_text_get(obj);
1172 setting_retm_if(data == NULL
1173 || key == NULL, "data == NULL || key == NULL");
1175 SETTING_TRACE_DEBUG("press button: %s", key);
1178 if (!safeStrCmp(key, dgettext("sys_string", "IDS_COM_SK_DONE"))) {
1180 if (ad->profile_type == MAIN_PROFILE_ALL) {
1181 SETTING_TRACE_DEBUG("Cancel to hide current view.");
1182 setting_try_save_check_list(ad); /* need to save too */
1183 __check_all_view_clear(ad);
1184 elm_naviframe_item_pop(ad->navibar_main); // pop(preferred) --> main
1188 // MAIN_PROFILE_PREFERRED and Etc
1189 // redraw setting-main
1190 setting_try_save_check_list(ad);
1191 elm_naviframe_item_pop(ad->navibar_main); // pop (preferred) -> main
1193 //After the view is popuped, all the object handlers should be reset NULL.
1194 __check_all_view_clear(ad);
1195 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1196 ad->load_fns[Func_Type_System] = __load_system_level0_list;
1197 ad->load_fns[Func_Type_Apps] = __load_applications_level0_list;
1198 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level0_list;
1199 int ret = setting_main_refresh(ad);
1200 ret_if(ret != SETTING_RETURN_SUCCESS);
1205 if (!safeStrCmp(key, setting_gettext("IDS_COM_SK_CANCEL"))
1206 || !safeStrCmp(key, dgettext("sys_string", "IDS_COM_BODY_BACK"))) {
1207 SETTING_TRACE_DEBUG("Cancel to hide current view.");
1208 elm_naviframe_item_pop(ad->navibar_main);
1209 //After the view is popuped, all the object handlers should be reset NULL.
1210 __check_all_view_clear(ad);
1215 static void __setting_contorlbar_clicked(void *data, Evas_Object *obj,
1218 SETTING_TRACE_BEGIN;
1219 ret_if(data == NULL || obj == NULL);
1220 setting_main_appdata *ad = (setting_main_appdata *) data;
1222 /* elm_segment_control_selected_segment_get(obj, &index); */
1223 Elm_Object_Item *sel_item = elm_segment_control_item_selected_get(obj);
1224 ret_if(sel_item == NULL);
1225 index = elm_segment_control_item_index_get(sel_item);
1230 SETTING_TRACE("Preferred");
1231 ad->profile_type = MAIN_PROFILE_PREFERRED;
1232 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1233 ad->load_fns[Func_Type_System] = __load_system_level0_list;
1234 ad->load_fns[Func_Type_Apps] = __load_applications_level0_list;
1235 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level0_list;
1241 SETTING_TRACE("All");
1242 ad->profile_type = MAIN_PROFILE_ALL;
1243 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level_all_list;
1244 ad->load_fns[Func_Type_System] = __load_system_level_all_list;
1245 ad->load_fns[Func_Type_Apps] = __load_applications_level_all_list;
1246 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level_all_list;
1254 int ret = setting_main_refresh(ad);
1255 ret_if(ret != SETTING_RETURN_SUCCESS);
1258 static void __btnback_clicked_cb(void *data, Evas_Object *obj, void *event_info)
1260 SETTING_TRACE_BEGIN;
1262 setting_main_appdata *ad = (setting_main_appdata *) data;
1263 elm_win_lower(ad->win_main);
1266 static void __allFrequent_btn_cb(void *data, Evas_Object *obj, void *event_info)
1268 SETTING_TRACE_BEGIN;
1269 ret_if(!data || !obj);
1270 setting_main_appdata *ad = (setting_main_appdata *) data;
1271 Elm_Object_Item *item = elm_toolbar_first_item_get(obj);
1274 if (MAIN_PROFILE_ALL == ad->profile_type)
1276 SETTING_TRACE("Change to Preferred view");
1277 elm_object_item_text_set(item, _(ALL_STR));
1278 ad->profile_type = MAIN_PROFILE_PREFERRED;
1279 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1280 ad->load_fns[Func_Type_System] = __load_system_level0_list;
1281 ad->load_fns[Func_Type_Apps] = __load_applications_level0_list;
1282 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level0_list;
1283 setting_main_refresh(ad);
1285 else if (MAIN_PROFILE_PREFERRED == ad->profile_type)
1287 SETTING_TRACE("Change to ALL view");
1288 elm_object_item_text_set(item, _(PREFERRED_STR));
1289 ad->profile_type = MAIN_PROFILE_ALL;
1290 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level_all_list;
1291 ad->load_fns[Func_Type_System] = __load_system_level_all_list;
1292 ad->load_fns[Func_Type_Apps] = __load_applications_level_all_list;
1293 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level_all_list;
1294 setting_main_refresh(ad);
1305 Evas_Object *__create_main_view_widgets(Evas_Object *win_main, void *cb,
1306 Evas_Object *content,
1308 bool isFoundPreferredItem,
1309 Evas_Object **navibar,
1310 Elm_Object_Item **edit_item,
1311 Elm_Object_Item **segment_all,
1312 Elm_Object_Item **segment_preferred)
1314 SETTING_TRACE_BEGIN;
1316 /* add layout to win_main */
1317 Evas_Object *ly = elm_layout_add(win_main);
1318 setting_retvm_if(ly == NULL, FALSE, "layout == NULL");
1319 elm_layout_theme_set(ly, "layout", "application", "default");
1320 evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND,
1322 elm_win_resize_object_add(win_main, ly);
1323 Evas_Object *bg = setting_create_bg(ly, win_main, "group_list");
1324 elm_object_part_content_set(ly, "elm.swallow.bg", bg);
1325 evas_object_show(ly);
1327 /* add navi_bar to the layout */
1328 Evas_Object *navi_bar = elm_naviframe_add(ly);
1330 elm_object_part_content_set(ly, "elm.swallow.content", navi_bar);
1331 evas_object_show(navi_bar);
1332 *navibar = navi_bar;
1334 // create 'back' button on navigaiton bar
1335 Evas_Object* btn_back = elm_button_add(navi_bar);
1336 evas_object_smart_callback_add(btn_back, "clicked", __btnback_clicked_cb, g_main_ad);
1338 Evas_Object *controlbar = elm_toolbar_add(navi_bar);
1339 setting_retvm_if(controlbar == NULL, FALSE, "controlbar == NULL");
1340 elm_toolbar_shrink_mode_set(controlbar, ELM_TOOLBAR_SHRINK_EXPAND);
1341 //elm_object_style_set(controlbar, NAVI_CONTROLBAR_STYLE);
1343 /* add segment control */
1344 Evas_Object *segment = elm_segment_control_add(controlbar);
1345 setting_retvm_if(segment == NULL, FALSE, "segment == NULL");
1347 Elm_Object_Item *seg_preferred = NULL, *seg_all = NULL;
1348 *segment_preferred = seg_preferred = elm_segment_control_item_add(segment, NULL, _(PREFERRED_STR));
1349 *segment_all = seg_all = elm_segment_control_item_add(segment, NULL, _(ALL_STR));
1351 evas_object_show(segment);
1352 evas_object_smart_callback_add(segment, "changed",
1353 __setting_contorlbar_clicked, cb);
1355 #if !SUPPORT_BOTTOM_BTNS
1356 Elm_Object_Item *item = NULL;
1357 Elm_Object_Item *navi_it = elm_naviframe_item_push(navi_bar, title_text, btn_back, NULL, content, NULL);
1358 elm_object_style_set(btn_back, NAVI_BACK_BUTTON_STYLE);
1359 /* add 'Edit preffered' button to controlbar */
1360 Evas_Object *btn_pref = setting_create_button(controlbar, _(EDIT_PREFERRED_STR),
1361 NAVI_DEF_BUTTON_STYLE,
1362 setting_main_click_edit_preferred_cb,cb);
1364 *edit_item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
1365 elm_object_item_part_content_set(*edit_item, "object", btn_pref);
1366 item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
1367 elm_object_item_part_content_set(item, "object", segment);
1368 elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
1370 elm_object_item_part_content_set(navi_it, "optionheader", controlbar);
1372 Elm_Object_Item *navi_it = elm_naviframe_item_push(navi_bar, title_text, btn_back, NULL, content, "segment/instant");
1373 elm_object_style_set(btn_back, NAVI_BACK_BUTTON_STYLE);
1375 elm_object_item_disabled_set(elm_toolbar_item_append(controlbar, NULL, "", NULL, NULL), EINA_TRUE);
1376 *edit_item = elm_toolbar_item_append(controlbar, NULL, _(EDIT_PREFERRED_STR), setting_main_click_edit_preferred_cb, cb);
1378 elm_object_item_part_content_set(navi_it, "controlbar", controlbar);
1379 elm_object_item_part_content_set(navi_it, "segment", segment);
1383 if (isFoundPreferredItem) {
1384 elm_segment_control_item_selected_set(seg_preferred, EINA_TRUE);
1386 elm_segment_control_item_selected_set(seg_all, EINA_TRUE);
1391 static bool __setting_create_main_view(void *data)
1393 SETTING_TRACE_BEGIN;
1395 setting_retvm_if(data == NULL, FALSE, "data == NULL");
1396 setting_main_appdata *ad = (setting_main_appdata *) data;
1397 #if SUPPORT_MORE_ITEM_FUNCTION
1398 ad->ly_main = setting_create_win_layout(ad->win_main, ad->win_main);
1399 ad->navibar_main = setting_create_navi_bar(ad->ly_main);
1400 /* add controlbar */
1401 Evas_Object *controlbar = elm_toolbar_add(ad->navibar_main);
1402 setting_retvm_if(controlbar == NULL, FALSE, "controlbar == NULL");
1403 elm_toolbar_shrink_mode_set(controlbar, ELM_TOOLBAR_SHRINK_EXPAND);
1405 ad->main_genlist = elm_genlist_add(ad->navibar_main);
1406 elm_object_style_set(ad->main_genlist, "dialogue");
1407 retvm_if(ad->main_genlist == NULL, FALSE,
1408 "Cannot set scroller object as contento of layout");
1409 elm_genlist_clear(ad->main_genlist); /* first to clear list */
1411 setting_create_navi_bar_buttons(_("IDS_COM_BODY_SETTINGS"),
1412 _("IDS_COM_BODY_BACK"), "", _("IDS_ST_OPT_ALL"),
1413 __btnback_clicked_cb, NULL,
1414 __allFrequent_btn_cb, ad, ad->main_genlist,
1415 ad->navibar_main, controlbar);
1416 elm_object_item_disabled_set(elm_toolbar_last_item_get(controlbar), EINA_TRUE);
1418 ad->controlbar = controlbar;
1420 ad->profile_type = MAIN_PROFILE_PREFERRED;
1421 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1422 ad->load_fns[Func_Type_System] = __load_system_level0_list;
1423 ad->load_fns[Func_Type_Apps] = __load_applications_level_all_list;
1424 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level_all_list;
1425 setting_main_refresh(ad);
1429 ad->main_genlist = elm_genlist_add(ad->win_main);
1430 elm_object_style_set(ad->main_genlist, "dialogue");
1431 elm_genlist_clear(ad->main_genlist); /* first to clear list */
1433 int isFoundPreferredItem = FALSE;
1434 for (i = 0; i < setting_cfg_get_category_length(); i++) {
1435 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
1436 pos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
1437 if (Cfg_Item_Pos_Level0 == pos) {
1438 isFoundPreferredItem = TRUE;
1442 if (isFoundPreferredItem) {
1447 ad->ly_main = __create_main_view_widgets(ad->win_main, ad,
1449 _("IDS_COM_BODY_SETTINGS"),
1450 isFoundPreferredItem,
1454 &ad->segment_preferred);
1455 setting_retvm_if(ad->ly_main == NULL, FALSE, "ad->ly_main == NULL");
1461 static bool __setting_create_prefered_view(void *data)
1463 SETTING_TRACE_BEGIN;
1465 setting_retvm_if(data == NULL, FALSE, "data == NULL");
1466 setting_main_appdata *ad = (setting_main_appdata *) data;
1468 /* the genlist will be destroyed with its parent view, when using elm_naviframe_item_pop() to destroy the view. */
1469 ad->edit_preferred_genlist = elm_genlist_add(ad->win_main);
1470 elm_object_style_set(ad->edit_preferred_genlist, "dialogue");
1471 elm_genlist_clear(ad->edit_preferred_genlist); /* first to clear list */
1473 /* [UI] edit preffered view */
1474 Evas_Object *sub_layout = elm_layout_add(ad->win_main);
1475 elm_object_style_set(sub_layout, "dialogue");
1476 elm_layout_file_set(sub_layout, SETTING_THEME_EDJ_NAME, "search_layout");
1477 evas_object_size_hint_weight_set(sub_layout, EVAS_HINT_EXPAND, 0.0);
1478 evas_object_show(sub_layout);
1480 ad->gl_sel_all = elm_genlist_add(ad->win_main);
1481 elm_genlist_clear(ad->gl_sel_all); /* first to clear list */
1482 elm_genlist_bounce_set(ad->gl_sel_all, 0, 0);
1484 elm_object_part_content_set(sub_layout, "search_bar", ad->gl_sel_all); /* add 'Select all' */
1485 elm_object_part_content_set(sub_layout, "search_list", ad->edit_preferred_genlist); /* add Genlist */
1487 /* push, not create */
1488 setting_push_layout_navi_bar(_(EDIT_PREFERRED_STR),
1489 _("IDS_COM_SK_CANCEL"),
1490 _("IDS_COM_SK_DONE"), NULL,
1491 __prefered_buttons_cb, __prefered_buttons_cb, NULL, ad,
1492 sub_layout, ad->navibar_main,
1493 &(ad->controllbar_all_check));
1498 static void setting_main_tapi_event_cb(TapiHandle *handle, int result, void *data, void *user_data)
1500 SETTING_TRACE_BEGIN;
1502 setting_main_appdata *ad = user_data;
1503 ad->b_fm_requesting = FALSE;
1504 SETTING_TRACE("result:%d", result);
1508 case TAPI_POWER_FLIGHT_MODE_RESP_ON:
1510 setting_set_bool_slp_key(BOOL_SLP_SETTING_FLIGHT_MODE,
1511 SETTING_ON_OFF_BTN_ON, &err);
1513 //If Setting has validate operation (fm_waiting_op == FM_LEAVE) to process, process it.
1514 //Otherwise, do nothing
1515 if (FM_LEAVE == ad->fm_waiting_op)
1517 //Send the latest operation
1518 ad->fm_waiting_op = FM_INVALID;
1519 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
1520 setting_retm_if(err != TAPI_API_SUCCESS,
1521 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
1524 ad->b_fm_requesting = TRUE;
1529 case TAPI_POWER_FLIGHT_MODE_RESP_OFF:
1531 setting_set_bool_slp_key(BOOL_SLP_SETTING_FLIGHT_MODE,
1532 SETTING_ON_OFF_BTN_OFF, &err);
1534 //If Setting has validate operation (here, fm_waiting_op == FM_ENTER) to process,process it.
1535 //Otherwise, do nothing
1536 if (FM_ENTER == ad->fm_waiting_op)
1538 //Send the latest operation
1539 ad->fm_waiting_op = FM_INVALID;
1540 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
1541 setting_retm_if(err != TAPI_API_SUCCESS,
1542 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
1545 ad->b_fm_requesting = TRUE;
1550 case TAPI_POWER_FLIGHT_MODE_RESP_FAIL:
1551 //Setting has a validate operation to process, Send the operation request
1552 if (FM_ENTER == ad->fm_waiting_op)
1554 ad->fm_waiting_op = FM_INVALID;
1555 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
1557 setting_retm_if(err != TAPI_API_SUCCESS,
1558 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
1559 ad->b_fm_requesting = TRUE;
1561 else if (FM_LEAVE == ad->fm_waiting_op)
1563 ad->fm_waiting_op = FM_INVALID;
1564 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
1566 setting_retm_if(err != TAPI_API_SUCCESS,
1567 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
1568 ad->b_fm_requesting = TRUE;
1570 else //Current requset is the last one, Setting needs to notify user
1572 setting_create_popup_without_btn(ad, ad->win_main,
1573 _("IDS_COM_POP_ERROR"),
1574 _("IDS_ST_POP_UNABLE_TO_TURN_ON_FLIGHT_MODE_VODA"),
1575 NULL, POPUP_INTERVAL,
1578 //It is need to rollback the status,
1579 if (ad->data_flight) {
1580 ad->data_flight->chk_status = !ad->data_flight->chk_status;
1581 elm_check_state_set(ad->data_flight->eo_check, ad->data_flight->chk_status);
1587 ad->b_fm_requesting = TRUE;
1591 case TAPI_POWER_FLIGHT_MODE_RESP_MAX:
1592 setting_create_popup_without_btn(ad, ad->win_main,
1593 _("IDS_COM_POP_ERROR"),
1594 _("IDS_COM_POP_UNEXPECTED_ERROR"),
1595 NULL, POPUP_INTERVAL, FALSE, FALSE);
1597 //It is need to rollback the status,
1598 if (ad->data_flight) {
1599 ad->data_flight->chk_status = !ad->data_flight->chk_status;
1600 elm_check_state_set(ad->data_flight->eo_check, ad->data_flight->chk_status);
1610 static int setting_main_refresh(void *data)
1612 SETTING_TRACE_BEGIN;
1613 setting_main_appdata *ad = (setting_main_appdata *) data;
1614 elm_genlist_clear(ad->main_genlist); /* first to clear list */
1616 if (is_ug_installed_by_ug_args("rcs-config"))
1618 Elm_Object_Item *item = elm_genlist_item_append(ad->main_genlist, &itc_seperator, NULL, NULL,
1619 ELM_GENLIST_ITEM_NONE, NULL, NULL);
1620 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1621 setting_create_Gendial_field_groupitem(ad->main_genlist,
1622 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1624 setting_main_click_list_ex_ug_cb,
1626 SWALLOW_Type_INVALID,
1628 0, KeyStr_Joyn, NULL,
1633 for(i = Func_Type_Connectivity; i < Func_Type_MAX; i++)
1634 (ad->load_fns[i]) (ad);
1636 memset(ad->load_fns, 0, Func_Type_MAX *sizeof(menu_list_load_fn));
1638 return SETTING_RETURN_SUCCESS;
1641 static int setting_main_create(void *cb)
1643 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1645 setting_main_appdata *ad = (setting_main_appdata *) cb;
1647 //pass NULL to let TAPI access default module
1648 ad->handle = tel_init(NULL);
1650 SETTING_TRACE_ERROR("*** [ERR] tel_init failed ***");
1652 SETTING_TRACE("tel_init ok[handle:%p]", ad->handle);
1654 setting_create_Gendial_itc("dialogue/1text.1icon.2",
1655 &(ad->itc[GENDIAL_Type_1text_1icon_2]));
1656 setting_create_Gendial_itc("dialogue/1text.2icon",
1657 &(ad->itc[GENDIAL_Type_1text_2icon]));
1658 setting_create_Gendial_itc("dialogue/2text.1icon.3",
1659 &(ad->itc[GENDIAL_Type_1icon_2text]));
1660 setting_create_Gendial_itc("dialogue/1text.1icon.2",
1661 &(ad->itc[GENDIAL_Type_1text_2icon_2]));
1662 setting_create_Gendial_itc("dialogue/title",
1663 &(ad->itc[GENDIAL_Type_group_item]));
1664 setting_create_Gendial_itc("select_all",
1665 &(ad->itc[GENDIAL_Type_sel_all]));
1667 setting_create_Gendial_itc("dialogue/2text.3", &(ad->itc[GENDIAL_Type_2text_3]));
1669 ad->view_type = SETTING_VIEW_MAIN;
1670 __setting_create_main_view(ad);
1671 setting_view_main.is_create = 1;
1673 return SETTING_RETURN_SUCCESS;
1676 static int setting_main_destroy(void *cb)
1678 SETTING_TRACE_BEGIN;
1680 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1682 setting_main_appdata *ad = (setting_main_appdata *) cb;
1683 if (0 == setting_view_main.is_create)
1686 return SETTING_RETURN_SUCCESS;
1690 int tapi_ret = tel_deinit(ad->handle);
1691 if (tapi_ret != TAPI_API_SUCCESS) {
1692 SETTING_TRACE_DEBUG("*** [ERR] tel_deinit. [%d] ***", tapi_ret);
1694 SETTING_TRACE("*** tel_deinit OK ");
1699 /* then destroy the UI object. */
1700 if (ad->item_check_list) {
1701 eina_list_free(ad->item_check_list);
1702 ad->item_check_list = NULL;
1704 SETTING_TRACE("*** ad->item_check_list is NULL - abnormal state ");
1708 evas_object_del(ad->ly_main);
1712 if (ad->flight_popup) {
1713 evas_object_del(ad->flight_popup);
1714 ad->flight_popup = NULL;
1716 setting_view_main.is_create = 0;
1718 return SETTING_RETURN_SUCCESS;
1721 static int setting_main_update(void *cb)
1723 SETTING_TRACE_BEGIN;
1726 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1728 setting_main_appdata *ad = (setting_main_appdata *) cb;
1730 if (ad->ly_main != NULL) {
1731 //evas_object_show(ad->ly_main);
1734 return SETTING_RETURN_SUCCESS;
1737 static int setting_main_cleanup(void *cb)
1739 SETTING_TRACE_BEGIN;
1741 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1743 setting_main_appdata *ad = (setting_main_appdata *) cb;
1745 if (ad->ly_main != NULL) {
1746 //evas_object_hide(ad->ly_main);
1749 return SETTING_RETURN_SUCCESS;
1752 /* ***************************************************
1756 ***************************************************/
1758 void setting_update_gl_item(void* data)
1760 SETTING_TRACE_BEGIN;
1761 setting_main_appdata *ad = data;
1762 retm_if(!data, "Invalid argument: data is NULL");
1765 Eina_Bool bGlUpdate = EINA_FALSE;
1766 Setting_GenGroupItem_Data *item_to_update = NULL;
1768 for(;nDx<GL_ITEM_MAX; nDx++) {
1769 if(EINA_TRUE == ad->updateItems[nDx]) {
1773 item_to_update = ad->data_wifi;
1774 bGlUpdate = EINA_TRUE;
1777 item_to_update = ad->data_bt;
1778 bGlUpdate = EINA_TRUE;
1781 item_to_update = ad->data_nfc;
1782 bGlUpdate = EINA_TRUE;
1785 item_to_update = ad->data_mobileApp;
1786 bGlUpdate = EINA_TRUE;
1788 case GL_ITEM_FLIGHT:
1789 item_to_update = ad->data_flight;
1790 bGlUpdate = EINA_FALSE;
1796 default: // other case
1800 if (item_to_update) {
1802 SETTING_TRACE("gl update:%d", nDx);
1803 elm_object_item_data_set(item_to_update->item, item_to_update);
1804 elm_genlist_item_update(item_to_update->item);
1806 SETTING_TRACE("chk update:%d", nDx);
1807 elm_check_state_set(item_to_update->eo_check, item_to_update->chk_status);
1811 ad->updateItems[nDx] = EINA_FALSE;
1812 } // if(EINA_TRUE == ad->updateItems[nDx])
1820 void setting_main_destroy_ug_cb(ui_gadget_h ug, void *priv)
1822 setting_main_appdata *ad = (setting_main_appdata *) priv;
1824 return; /* do nothing if ad is NULL */
1831 setting_main_click_list_item_reset_data(ad, NULL);
1833 // update main genlist in unloading UG
1834 SETTING_TRACE("update main genlist in unloading UG");
1835 setting_update_gl_item(ad);
1840 void setting_main_result_ug_cb(ui_gadget_h ug, service_h service,
1845 SETTING_TRACE_BEGIN;
1850 void setting_main_layout_ug_cb(ui_gadget_h ug, enum ug_mode mode,
1853 setting_main_appdata *ad = (setting_main_appdata *) priv;
1858 SETTING_TRACE_BEGIN;
1860 base = (Evas_Object *) ug_get_layout(ug);
1865 case UG_MODE_FULLVIEW:
1866 evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,
1868 elm_win_resize_object_add(ad->win_main, base);
1869 evas_object_show(base);
1878 /* ***************************************************
1882 ***************************************************/
1884 void setting_main_click_list_item_reset_data(void *data,
1887 SETTING_TRACE_BEGIN;
1888 setting_main_appdata *ad = (setting_main_appdata *) data;
1890 ad->isInUGMode = FALSE;
1895 void /* obj is the layout clicked */
1896 setting_main_click_list_item_ug_cb(void *data, Evas_Object *obj,
1897 char *ug_to_load, service_h svc,
1900 SETTING_TRACE_BEGIN;
1901 setting_main_appdata *ad = (setting_main_appdata *) data;
1903 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
1907 char ug_file[PATH_MAX];
1909 (ug_file, PATH_MAX, "%s/libug-%s.so", SETTING_UG_PATH,
1912 SETTING_TRACE("ug_file:%s", ug_file);
1913 if (!ecore_file_exists(ug_file)) {
1914 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
1918 SETTING_TRACE("to create libug-%s.so", ug_to_load);
1919 ad->ug = ug_create(NULL, ug_to_load, UG_MODE_FULLVIEW, svc, cbs);
1921 ad->isInUGMode = TRUE;
1924 evas_object_show(ad->ly_main);
1926 SETTING_TRACE_ERROR("errno:%d", errno);
1927 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
1933 setting_main_click_list_default_ug_cb(void *data, Evas_Object *obj,
1936 setting_main_appdata *ad = data;
1937 setting_create_simple_popup(ad, ad->win_main, NULL,
1942 setting_main_click_list_usb_cb(void *data, Evas_Object *obj, void *event_info)
1944 SETTING_TRACE_BEGIN;
1945 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
1949 char *str_text = USB_NEED_OFF;
1951 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
1953 setting_get_int_slp_key(INT_SLP_SETTING_MOBILE_AP_STATUS, &value, &err);
1956 SETTING_TRACE_ERROR("FAIL: VCONFKEY_MOBILE_HOTSPOT_MODE may not exist\n");
1957 setting_main_click_list_ex_ug_cb(data, obj, item);
1961 /* If mobile hotspot is on, going USB utilties is blocked by a popup*/
1962 if (value & VCONFKEY_MOBILE_HOTSPOT_MODE_USB)
1964 elm_genlist_item_selected_set(item, EINA_FALSE);
1965 setting_create_simple_popup(g_main_ad, g_main_ad->win_main, NULL, (str_text));
1969 setting_main_click_list_ex_ug_cb(data, obj, item);
1975 void setting_main_click_list_more_cb(void *data, Evas_Object *obj, void *event_info)
1977 SETTING_TRACE_BEGIN;
1978 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
1979 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
1980 elm_genlist_item_selected_set(item, EINA_FALSE);
1981 retm_if(data == NULL, "Invalid argument: data is NULL");
1982 setting_main_appdata *ad = data;
1983 Setting_GenGroupItem_Data *selected_item_data =
1984 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
1985 SETTING_TRACE("selected_item_data->keyStr:%s", selected_item_data->keyStr);
1986 if (0 == safeStrCmp(selected_item_data->keyStr, KeyStr_MoreConnect))
1988 ad->view_load = SETTING_VIEW_CONNECTIVE_MORE;
1990 else if (0 == safeStrCmp(selected_item_data->keyStr, KeyStr_MoreSystem))
1992 ad->view_load = SETTING_VIEW_SYSTEM_MORE;
1998 setting_view_change(&setting_view_main, &setting_view_more_menu, ad);
2003 setting_main_click_list_ex_ug_cb(void *data, Evas_Object *obj,
2006 SETTING_TRACE_BEGIN;
2007 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2008 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2010 elm_genlist_item_selected_set(item, EINA_FALSE);
2012 if (g_main_ad->ug) {
2014 ("[ad->ug non-NULL]skip genlist click event!!");
2020 if (NULL == data) { /* pass NULL to ug_args when create setting.cfg. */
2021 setting_create_simple_popup(g_main_ad,
2022 g_main_ad->win_main,
2023 NULL, NO_UG_FOUND_MSG);
2028 setting_main_appdata *ad = g_main_ad;
2030 /* if UG is created by Setting app, setting_main_click_list_ex_ug_cb is diabled. */
2031 if (ad->isInUGMode) {
2032 SETTING_TRACE("isInUGMode : TRUE - another UG is running now.");
2033 ad->isInUGMode = FALSE;
2038 ("isInUGMode : FALSE - another UG is NOT running now.")
2041 Setting_GenGroupItem_Data *selected_item_data =
2042 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2043 setting_main_click_list_item_reset_data(ad, obj);
2044 const char *item_name = _(selected_item_data->keyStr);
2047 struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
2048 setting_retm_if(!cbs, "calloc failed");
2049 cbs->layout_cb = setting_main_layout_ug_cb;
2050 cbs->result_cb = setting_main_result_ug_cb;
2051 cbs->destroy_cb = setting_main_destroy_ug_cb;
2052 cbs->priv = (void *)ad;
2054 char *path = get_ug_path_from_ug_args(data);
2055 service_h svc = get_bundle_from_ug_args(data);
2056 setting_main_click_list_item_ug_cb(ad, obj, path, svc, cbs);
2063 service_destroy(svc);
2066 setting_main_click_list_plugin_cb(void *data, Evas_Object *obj,
2069 SETTING_TRACE_BEGIN;
2070 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2071 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2072 elm_genlist_item_selected_set(item, EINA_FALSE);
2074 setting_plugin_load((const char *)data);
2078 void setting_main_list_mouse_up_cb(void *data, Evas_Object *eo,
2081 SETTING_TRACE_BEGIN;
2082 retm_if(data == NULL, "Data parameter is NULL");
2083 Setting_GenGroupItem_Data *list_item =
2084 (Setting_GenGroupItem_Data *) data;
2085 SETTING_TRACE("process item [%s]", list_item->keyStr);
2086 list_item->chk_status = elm_check_state_get(eo); /* for update new state */
2088 SETTING_TRACE("change radio[%s], status is:%d", _(list_item->keyStr),
2089 list_item->chk_status);
2090 /*setting_main_appdata *ad = g_main_ad;*/
2092 if (!safeStrCmp(KeyStr_UsePacketData, list_item->keyStr)) {
2094 if (elm_check_state_get(eo)) {
2095 setting_set_bool_slp_key
2096 (BOOL_SLP_SETTING_USE_PACKET_DATA,
2097 SETTING_ON_OFF_BTN_ON, &err);
2099 setting_set_bool_slp_key
2100 (BOOL_SLP_SETTING_USE_PACKET_DATA,
2101 SETTING_ON_OFF_BTN_OFF, &err);
2104 } else if (!safeStrCmp(KeyStr_Landscape, list_item->keyStr)) {
2105 vconf_set_bool(VCONFKEY_SETAPPL_ROTATE_LOCK_BOOL, ! list_item->chk_status);
2111 void setting_main_sel_list_mouse_up_cb(void *data, Evas_Object *eo,
2114 SETTING_TRACE_BEGIN;
2115 setting_retm_if(data == NULL, "Data parameter is NULL");
2117 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2118 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2119 elm_genlist_item_selected_set(item, 0);
2120 Setting_GenGroupItem_Data *list_item =
2121 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2123 list_item->chk_status = elm_check_state_get(list_item->eo_check);
2126 /*setting_main_appdata *ad = (setting_main_appdata *) data;*/
2128 if (!safeStrCmp(KeyStr_UsePacketData, list_item->keyStr)) {
2129 /* setting_reset_slp_key_by_status(eo, BOOL_SLP_SETTING_USE_PACKET_DATA); */
2131 setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
2132 list_item->chk_status, &err);
2134 } else if (!safeStrCmp(KeyStr_Landscape, list_item->keyStr)) {
2135 vconf_set_bool(VCONFKEY_SETAPPL_ROTATE_LOCK_BOOL, (list_item->chk_status));
2141 void __alternate_flight_mode(Evas_Object *check)
2143 SETTING_TRACE_BEGIN;
2145 Eina_Bool status = elm_check_state_get(check);
2146 SETTING_TRACE("flight mode status : %d", status);
2147 setting_main_appdata *ad = g_main_ad;
2149 //Check whether some requestion is processing by TAPI
2150 if (ad->b_fm_requesting)
2152 //Do nothing, just mark the lastest operation..
2153 SETTING_TRACE("Some requestion is processing by TAPI, wait to process");
2154 ad->fm_waiting_op = status ? FM_ENTER : FM_LEAVE;
2158 //otherwise, invalid waiting operation and send requsetion to TAPI:
2159 ad->fm_waiting_op = FM_INVALID;
2161 ret = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
2162 setting_retm_if(ret != TAPI_API_SUCCESS,
2163 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
2165 ret = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
2166 setting_retm_if(ret != TAPI_API_SUCCESS,
2167 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
2171 ad->b_fm_requesting = TRUE;
2176 setting_main_click_list_network_ug_cb(void *data, Evas_Object *obj,
2179 SETTING_TRACE_BEGIN;
2180 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2181 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2183 elm_genlist_item_selected_set(item, EINA_FALSE);
2185 if (g_main_ad->ug) {
2187 ("[ad->ug non-NULL]skip genlist click event!!");
2193 setting_main_appdata *ad = g_main_ad;
2194 setting_main_click_list_item_reset_data(ad, obj);
2198 setting_get_int_slp_key(INT_SLP_SETTING_SIM_SLOT, &value, &err);
2199 SETTING_TRACE("value:%d", value);
2201 case VCONFKEY_TELEPHONY_SIM_INSERTED:
2203 struct ug_cbs *cbs =
2204 (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
2205 setting_retm_if(!cbs, "calloc failed");
2206 cbs->layout_cb = setting_main_layout_ug_cb;
2207 cbs->result_cb = setting_main_result_ug_cb;
2208 cbs->destroy_cb = setting_main_destroy_ug_cb;
2209 cbs->priv = (void *)ad;
2210 setting_main_click_list_item_ug_cb(data, obj,
2211 "setting-network-efl",
2216 case VCONFKEY_TELEPHONY_SIM_NOT_PRESENT:
2217 setting_create_simple_popup(NULL, ad->win_main,
2218 NULL, _("IDS_ST_HEADER_INSERT_SIM_CARD_ABB"));
2219 SETTING_TRACE("%s*** [ERR] No SIM. sim_slot_type=%d ***%s",
2220 SETTING_FONT_RED, value, SETTING_FONT_BLACK);
2223 case VCONFKEY_TELEPHONY_SIM_CARD_ERROR:
2224 case VCONFKEY_TELEPHONY_SIM_UNKNOWN:
2225 setting_create_simple_popup(NULL, ad->win_main,
2226 NULL,_("IDS_COM_BODY_INVALID_SIM_CARD"));
2227 SETTING_TRACE("%s*** [ERR] Invalid SIM. sim_slot_type=%d ***%s",
2228 SETTING_FONT_RED, value, SETTING_FONT_BLACK);
2238 setting_main_click_Gendial_list_flight_mode_cb(void *data, Evas_Object *obj,
2242 setting_retm_if(data == NULL, "Data parameter is NULL");
2244 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2245 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2246 elm_genlist_item_selected_set(item, 0);
2247 Setting_GenGroupItem_Data *list_item =
2248 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2249 int old_status = elm_check_state_get(list_item->eo_check);
2251 list_item->chk_status = !old_status;
2252 elm_check_state_set(list_item->eo_check, list_item->chk_status);
2254 __alternate_flight_mode(list_item->eo_check);
2259 setting_main_click_list_flight_mode_cb(void *data, Evas_Object *obj,
2262 SETTING_TRACE_BEGIN;
2263 retm_if(data == NULL, "Data parameter is NULL");
2264 Setting_GenGroupItem_Data *list_item =
2265 (Setting_GenGroupItem_Data *) data;
2266 list_item->chk_status = elm_check_state_get(obj); /* for update new state */
2267 SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2268 list_item->chk_status);
2270 __alternate_flight_mode(obj);
2276 * store current selection in setting.cfg
2278 void setting_try_save_check_list(void *data)
2280 SETTING_TRACE_BEGIN;
2281 setting_main_appdata *ad = (setting_main_appdata *) data;
2283 Eina_List *check_list = ad->item_check_list;
2284 Setting_GenGroupItem_Data *list_item = NULL;
2285 int update_count = 0;
2287 while (check_list) {
2288 list_item = (Setting_GenGroupItem_Data *) eina_list_data_get(check_list);
2289 if (NULL == list_item) continue;
2292 if (list_item->chk_status) {
2293 /* to update config file */
2294 setting_cfg_set_pos(list_item->keyStr, Cfg_Item_Pos_Level0);
2296 /* to update config file */
2297 setting_cfg_set_pos(list_item->keyStr, Cfg_Item_Pos_Level1);
2299 check_list = eina_list_next(check_list);
2302 if (update_count == 0) {
2303 /* to popup tips notify */
2305 setting_cfg_file_update();
2311 setting_main_click_edit_preferred_cb(void *data, Evas_Object *obj, void *event_info)
2313 SETTING_TRACE_BEGIN;
2315 setting_main_appdata *ad = (setting_main_appdata *) data;
2316 ad->view_type = SETTING_VIEW_ALL_CHECK;
2317 __setting_create_prefered_view(ad);
2318 __load_check_list(ad, &(ad->edit_preferred_genlist), NULL);