3 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * Licensed under the Flora License, Version 1.1 (the License);
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://floralicense.org/license/
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an AS IS BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
17 #include <tapi_common.h>
21 #include <setting-main.h>
23 #include <tethering.h>
24 #include <bluetooth.h>
27 #include <pkgmgr-info.h>
29 #include <setting-common-plugin.h>
31 #define PLUGIN_PREFIX "/opt"
33 typedef struct _DrawAppInfo
36 //------------------------------------
37 void (*draw_app)(void* arg, char* name, char* pkgname);
41 static int setting_main_create(void *cb);
42 static int setting_main_destroy(void *cb);
43 static int setting_main_update(void *cb);
44 static int setting_main_cleanup(void *cb);
46 setting_view setting_view_main = {
47 .create = setting_main_create,
48 .update = setting_main_update,
49 .destroy = setting_main_destroy,
50 .cleanup = setting_main_cleanup,
53 setting_main_appdata *g_main_ad = NULL;
55 static void setting_main_tapi_event_cb(TapiHandle *handle, int result, void *data, void *user_data);
56 static int setting_main_refresh(void *data);
57 static void __alternate_flight_mode(Evas_Object *check);
58 static void setting_main_click_Gendial_list_flight_mode_cb(void *data,
61 static void __alternate_flight_mode(Evas_Object *check);
63 void setting_main_click_list_item_ug_cb(void *data, Evas_Object *obj, char *ug_to_load, service_h svc, struct ug_cbs *cbs);
66 __setting_chk_changed(void *data, Evas_Object *obj, void *event_info)
68 /* SETTING_TRACE_BEGIN; */
69 retm_if(data == NULL, "Data parameter is NULL");
70 Setting_GenGroupItem_Data *list_item =
71 (Setting_GenGroupItem_Data *) data;
72 /* SETTING_TRACE("process item [%s]", _(list_item->keyStr)); */
73 list_item->chk_status = elm_check_state_get(obj);
75 Eina_List *check_list = g_main_ad->item_check_list;
76 Setting_GenGroupItem_Data *item = NULL;
77 bool isFoundNotSelSomeone = FALSE;
78 bool isFoundSelSomeone = FALSE;
80 item = (Setting_GenGroupItem_Data *)
81 eina_list_data_get(check_list);
85 if (!(item->chk_status)) {
86 isFoundNotSelSomeone = TRUE;
88 isFoundSelSomeone = TRUE;
90 if (isFoundNotSelSomeone && isFoundSelSomeone) {
93 check_list = eina_list_next(check_list);
96 if (isFoundNotSelSomeone) {
97 g_main_ad->check_all_item->chk_status = 0; /* for update new state */
99 g_main_ad->check_all_item->chk_status = 1; /* for update new state */
101 elm_object_item_data_set(g_main_ad->check_all_item->item, g_main_ad->check_all_item);
102 elm_genlist_item_update(g_main_ad->check_all_item->item);
104 if (isFoundSelSomeone) {
105 /* SETTING_TRACE("Set it to active"); */
107 elm_object_item_disabled_set(elm_toolbar_last_item_get
108 (g_main_ad->controllbar_all_check),
113 static void __setting_list_changed(void *data, Evas_Object *obj,
119 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
121 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
122 elm_genlist_item_selected_set(item, 0);
123 Setting_GenGroupItem_Data *list_item =
124 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
126 int old_status = elm_check_state_get(list_item->eo_check);
128 list_item->chk_status = !old_status;
129 elm_check_state_set(list_item->eo_check, list_item->chk_status);
131 Eina_List *check_list = g_main_ad->item_check_list;
132 Setting_GenGroupItem_Data *group_item = NULL;
133 bool isFoundNotSelSomeone = FALSE;
134 bool isFoundSelSomeone = FALSE;
136 group_item = (Setting_GenGroupItem_Data *)
137 eina_list_data_get(check_list);
138 if (NULL == group_item) {
141 if (!(group_item->chk_status)) {
142 isFoundNotSelSomeone = TRUE;
145 isFoundSelSomeone = TRUE;
147 if (isFoundNotSelSomeone && isFoundSelSomeone) {
151 check_list = eina_list_next(check_list);
154 if (isFoundNotSelSomeone) {
155 g_main_ad->check_all_item->chk_status = 0; /* for update new state */
157 g_main_ad->check_all_item->chk_status = 1; /* for update new state */
159 elm_object_item_data_set(g_main_ad->check_all_item->item, g_main_ad->check_all_item);
160 elm_genlist_item_update(g_main_ad->check_all_item->item);
162 if (isFoundSelSomeone) {
163 /* SETTING_TRACE("Set it to active"); */
165 elm_object_item_disabled_set(elm_toolbar_last_item_get
166 (g_main_ad->controllbar_all_check),
173 __setting_chk_sel_all_changed(void *data, Evas_Object *obj, void *event_info)
175 /* SETTING_TRACE_BEGIN; */
176 retm_if(data == NULL, "Data parameter is NULL");
177 Setting_GenGroupItem_Data *list_item =
178 (Setting_GenGroupItem_Data *) data;
179 bool is_all_checked = elm_check_state_get(obj);
180 list_item->chk_status = is_all_checked; /* for update new state */
181 /* SETTING_TRACE("is_all_checked:%d", is_all_checked); */
183 Eina_List *check_list = g_main_ad->item_check_list;
186 list_item = (Setting_GenGroupItem_Data *)
187 eina_list_data_get(check_list);
188 if (NULL == list_item) {
191 list_item->chk_status = is_all_checked;
192 elm_object_item_data_set(list_item->item, list_item);
193 elm_genlist_item_update(list_item->item);
194 check_list = eina_list_next(check_list);
196 if (is_all_checked) {
198 elm_object_item_disabled_set(elm_toolbar_last_item_get
199 (g_main_ad->controllbar_all_check),
204 static void __setting_list_sel_all_changed(void *data, Evas_Object *obj,
210 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
211 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
212 elm_genlist_item_selected_set(item, 0);
213 Setting_GenGroupItem_Data *list_item =
214 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
216 int old_status = elm_check_state_get(list_item->eo_check);
218 int is_all_checked = list_item->chk_status = !old_status;
219 elm_check_state_set(list_item->eo_check, list_item->chk_status);
221 Eina_List *check_list = g_main_ad->item_check_list;
224 list_item = (Setting_GenGroupItem_Data *)
225 eina_list_data_get(check_list);
226 if (NULL == list_item) {
229 list_item->chk_status = is_all_checked;
230 /* elm_check_state_set(list_item->eo_check, is_all_checked); */
231 elm_object_item_data_set(list_item->item, list_item);
232 elm_genlist_item_update(list_item->item);
233 check_list = eina_list_next(check_list);
235 if (is_all_checked) {
237 elm_object_item_disabled_set(elm_toolbar_last_item_get
238 (g_main_ad->controllbar_all_check),
244 static void __load_check_list(void *data, Evas_Object **genlist,
248 setting_main_appdata *ad = (setting_main_appdata *) data;
252 Cfg_Item_Position pos = Cfg_Item_Pos_Uninstall;
253 bool isFoundNonSelItem = FALSE;
254 bool isFoundSelSomeoneItem = FALSE;
257 char *icon_path = NULL;
260 setting_create_Gendial_field_def(ad->gl_sel_all,
261 &(ad->itc[GENDIAL_Type_sel_all]),
262 __setting_list_sel_all_changed, ad,
263 SWALLOW_Type_1CHECK, NULL, NULL,
264 state, KeyStr_Select_All, NULL,
265 __setting_chk_sel_all_changed);
266 __BACK_POINTER_SET(ad->check_all_item);
268 Setting_GenGroupItem_Data *item = NULL;
269 Setting_GenGroupItem_Data *category_item = NULL;
270 for (i = 0; i < setting_cfg_get_category_length(); i++) {
271 if (NULL == menuNameKey) {
272 /* SETTING_TRACE("load all the items in config file"); */
275 (setting_cfg_get_category_name(i), menuNameKey)) {
278 char *category_name = setting_cfg_get_category_name(i);
281 setting_create_Gendial_field_group_titleItem(*genlist,
283 [GENDIAL_Type_group_item]),
285 ELM_GENLIST_ITEM_NONE,
289 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
290 keyStr = setting_cfg_get_keyname_idx(i, j);
291 pos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
293 if (Cfg_Item_Pos_Level1 == pos) {
295 isFoundNonSelItem = TRUE;
298 isFoundSelSomeoneItem = TRUE;
301 icon_path = setting_cfg_get_icon_path_idx(i, j);
303 setting_create_Gendial_field_groupitem(*genlist,
305 [GENDIAL_Type_1text_2icon_2]),
307 __setting_list_changed,
309 SWALLOW_Type_1CHECKICON,
314 __setting_chk_changed);
316 ad->item_check_list =
317 eina_list_append(ad->item_check_list, item);
320 SETTING_TRACE_ERROR("category_item is NULL");
324 if (ad->check_all_item) {
325 if (isFoundNonSelItem) {
326 ad->check_all_item->chk_status = 0; /* for update new state */
328 ad->check_all_item->chk_status = 1; /* for update new state */
330 elm_object_item_data_set(ad->check_all_item->item, ad->check_all_item);
331 elm_genlist_item_update(ad->check_all_item->item);
333 SETTING_TRACE_ERROR("ad->check_all_item is NULL");
336 if (isFoundSelSomeoneItem) {
337 /* elm_object_item_disabled_set(elm_toolbar_last_item_get
338 (ad->controllbar_all_check),
343 elm_object_item_disabled_set(elm_toolbar_last_item_get
344 (ad->controllbar_all_check),
351 static Setting_GenGroupItem_Data * __flightmode_handler(void* data, char* keyStr, char* icon_path, char* ug_name, Evas_Object *genlist)
353 // NOT UG --> it's just UI drawing
355 setting_main_appdata *ad = (setting_main_appdata *)data;
357 setting_get_bool_slp_key (BOOL_SLP_SETTING_FLIGHT_MODE, &value, &err);
359 /* create flight_mode */
360 ad->data_flight = setting_create_Gendial_field_groupitem(genlist,
361 &(ad->itc[GENDIAL_Type_1text_2icon]),
363 setting_main_click_Gendial_list_flight_mode_cb,
365 SWALLOW_Type_1ICON_1RADIO,
371 setting_main_click_list_flight_mode_cb);
372 __BACK_POINTER_SET(ad->data_flight);
374 return ad->data_flight;
377 static Setting_GenGroupItem_Data * __wifi_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
379 setting_main_appdata *ad = (setting_main_appdata *)data;
381 setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err);
383 //char* pa_wifi = get_pa_Wi_Fi_on_off_str();
384 ad->data_wifi = setting_create_Gendial_field_groupitem(genlist,
385 &(ad->itc[GENDIAL_Type_1text_2icon]),
387 setting_main_click_list_ex_ug_cb,
389 SWALLOW_Type_1ICON_1RADIO,
395 setting_main_click_list_wifi_mode_cb);
396 __BACK_POINTER_SET(ad->data_wifi);
398 ad->data_wifi->userdata = ad;
401 return ad->data_wifi;
404 static Setting_GenGroupItem_Data * __bluetooth_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
406 setting_main_appdata *ad = (setting_main_appdata *)data;
408 setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err);
410 ad->data_bt = setting_create_Gendial_field_groupitem(genlist,
411 &(ad->itc[GENDIAL_Type_1text_2icon]),
413 setting_main_click_list_ex_ug_cb,
415 SWALLOW_Type_1ICON_1RADIO,
421 setting_main_click_list_bt_mode_cb);
422 __BACK_POINTER_SET(ad->data_bt);
424 ad->data_bt->userdata = ad;
429 static Setting_GenGroupItem_Data * __allshare_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
431 setting_main_appdata *ad = (setting_main_appdata *)data;
433 Setting_GenGroupItem_Data * obj = setting_create_Gendial_field_groupitem(genlist,
434 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
436 setting_main_click_list_default_ug_cb,
438 SWALLOW_Type_INVALID,
447 static Setting_GenGroupItem_Data * __network_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
449 setting_main_appdata *ad = (setting_main_appdata *)data;
451 ad->data_network = setting_create_Gendial_field_groupitem(genlist,
452 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
454 setting_main_click_list_network_ug_cb,
456 SWALLOW_Type_INVALID,
463 return ad->data_network;
466 static Setting_GenGroupItem_Data * __nfc_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
468 setting_main_appdata *ad = (setting_main_appdata *)data;
471 setting_get_bool_slp_key(BOOL_SLP_SETTING_NFC_STATUS, &value, &err);
473 ad->data_nfc = setting_create_Gendial_field_groupitem(genlist,
474 &(ad->itc[GENDIAL_Type_1text_2icon]),
476 setting_main_click_list_ex_ug_cb,
478 SWALLOW_Type_1ICON_1RADIO,
484 setting_main_click_list_nfc_mode_cb);
485 __BACK_POINTER_SET(ad->data_nfc);
487 ad->data_nfc->userdata = ad;
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,
518 typedef struct mainlist_entry mainlist_entry;
520 struct mainlist_entry {
522 Setting_GenGroupItem_Data* (*ui_handler)(void* data, char* title, char* iconpath, char* ugname, Evas_Object *genlist);
527 MAINLIST_ENTRY_FLIGHT_MODE = 0,
530 MAINLIST_ENTRY_ALLSHARE,
531 MAINLIST_ENTRY_NETWORK,
533 MAINLIST_ENTRY_DEFAULT,
537 static mainlist_entry mainlist_table[] = {
538 {KeyStr_FlightMode, __flightmode_handler}, // 0 --> NOT UG
539 {KeyStr_WiFi, __wifi_handler}, // 1 --> UG
540 {KeyStr_Bluetooth, __bluetooth_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 void __gl_realized(void *data, Evas_Object *obj, void *event_info)
553 //SETTING_TRACE_BEGIN;
554 setting_retm_if(data == NULL, "invalid parameter: data is NULL");
555 setting_retm_if(event_info == NULL, "invalid parameter: event_info is NULL");
556 setting_main_appdata *ad = (setting_main_appdata *)data;
557 Elm_Object_Item *item = (Elm_Object_Item *)event_info;
558 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)elm_object_item_data_get(item);
560 //setting_retm_if(list_item == NULL, "list_item is NULL");
563 if (list_item->group_style == SETTING_GROUP_STYLE_TOP) {
564 elm_object_item_signal_emit(item, "elm,state,top", "");
565 } else if (list_item->group_style == SETTING_GROUP_STYLE_BOTTOM) {
566 elm_object_item_signal_emit(item, "elm,state,bottom", "");
567 } else if (list_item->group_style == SETTING_GROUP_STYLE_CENTER) {
568 elm_object_item_signal_emit(item, "elm,state,center", "");
569 } else if (list_item->group_style == SETTING_GROUP_STYLE_NONE) {
572 SETTING_TRACE_ERROR("list_item->group_style is wrong");
575 /* item is used for description */
576 elm_object_item_signal_emit(item, "elm,state,center", "");
580 // Flight Mode - not UG
581 // All share - not UG
582 // WiFi - added toggle
588 void __load_connectivity_menu_list(void *data, Cfg_Item_Position inputPos, Evas_Object *genlist)
591 setting_main_appdata *ad = data;
592 //group title, only display in setting main view
593 if (SETTING_VIEW_MAIN == ad->view_load) {
594 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
595 &(ad->itc[GENDIAL_Type_group_item]),
597 ELM_GENLIST_ITEM_NONE,
598 KeyStr_Connectivity, NULL);
601 int idx_second_menu = 0;
604 char *icon_path = NULL;
605 char *ug_args = NULL;
606 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
609 bool is_emulator = isEmulBin();
611 Setting_GenGroupItem_Data *item_data = NULL;
614 for (i = 0; i < setting_cfg_get_category_length(); i++) {
616 (setting_cfg_get_category_name(i), KeyStr_Connectivity))
619 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
620 keyStr = setting_cfg_get_keyname_idx(i, j);
621 tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
622 ug_args = setting_cfg_get_ug_args_idx(i, j);
623 icon_path = setting_cfg_get_icon_path_idx(i, j);
624 /* SETTING_TRACE_DEBUG("Got an item[keyStr:%s, ug_args:%s, pos:%d]", */
625 /* keyStr, ug_args, tmpPos); */
628 if (!safeStrCmp(KeyStr_FlightMode, keyStr)) {
629 continue; /* hide Flight Mode in Emulator*/
630 } else if (!safeStrCmp(KeyStr_WiFi, keyStr)) {
631 continue; /* hide WIFI in Emulator*/
632 } else if (!safeStrCmp(KeyStr_WiFiDirect, keyStr)) {
633 continue; /* hide WiFiDirect in Emulator*/
634 } else if (!safeStrCmp(KeyStr_Network, keyStr)) {
635 continue; /* hide Network in Emulator*/
636 } else if (!safeStrCmp(KeyStr_Bluetooth, keyStr)) {
637 continue; /* hide Bluetooth in Emulator*/
638 } else if (!safeStrCmp(KeyStr_MobileAP, keyStr)) {
639 continue; /* hide Tethering in Emulator*/
645 if (idx_second_menu < MAX_MORE_MENU_NUM
646 && Cfg_Item_Pos_Level1 == tmpPos
647 && SETTING_VIEW_MAIN == ad->view_load
648 && MAIN_PROFILE_PREFERRED == ad->profile_type) {
650 if (is_ug_installed_by_ug_args(ug_args)) {
651 ad->more_connective_menus[idx_second_menu++] = keyStr;
655 if (Cfg_Item_Pos_Level_All == inputPos) {
656 } else if (inputPos != tmpPos) { /* not in the inputPos level */
660 if (!safeStrCmp(KeyStr_FlightMode, keyStr)) { /* load special radio */
662 item_data = mainlist_table[MAINLIST_ENTRY_FLIGHT_MODE].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
664 } else if (!safeStrCmp(KeyStr_AllShare, keyStr)) { /* NOT UG */
666 item_data = mainlist_table[MAINLIST_ENTRY_ALLSHARE].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
668 } else if (!safeStrCmp(KeyStr_WiFi, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
670 item_data = mainlist_table[MAINLIST_ENTRY_WIFI].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
672 } else if (!safeStrCmp(KeyStr_Bluetooth, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
674 item_data = mainlist_table[MAINLIST_ENTRY_BT].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
678 else if (!safeStrCmp(KeyStr_MobileAP, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
680 item_data = mainlist_table[MAINLIST_ENTRY_MOBILEAP].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
684 else if (!safeStrCmp(KeyStr_Network, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special UG */
686 item_data = mainlist_table[MAINLIST_ENTRY_NETWORK].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
688 } else if (!safeStrCmp(KeyStr_NFC, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
689 int nfc_value = FALSE; //default
690 vconf_get_bool(VCONFKEY_NFC_FEATURE, &nfc_value);
691 if (VCONFKEY_NFC_FEATURE_ON == nfc_value)
693 item_data = mainlist_table[MAINLIST_ENTRY_NFC].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
695 } else { /* load other UGs */
696 if (is_ug_installed_by_ug_args(ug_args))
698 item_data = mainlist_table[MAINLIST_ENTRY_DEFAULT].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
704 item_data->group_style = SETTING_GROUP_STYLE_TOP;
705 } else if (j == setting_cfg_get_menu_length(i) - 1) {
706 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
708 item_data->group_style = SETTING_GROUP_STYLE_CENTER;
712 item_data->group_style = SETTING_GROUP_STYLE_TOP;
719 //end group , only display in setting main view
720 #if SUPPORT_MORE_ITEM_FUNCTION
721 if (SETTING_VIEW_MAIN == ad->view_load && MAIN_PROFILE_PREFERRED == ad->profile_type && idx_second_menu > 0)
723 char sub_text[MAX_COMMON_BUFFER_LEN] = {0, };
725 while (idx < MAX_MORE_MENU_NUM && ad->more_connective_menus[idx])
729 safeStrNCat(sub_text, ", ", MAX_COMMON_BUFFER_LEN);
731 safeStrNCat(sub_text, _(ad->more_connective_menus[idx]), MAX_COMMON_BUFFER_LEN);
735 ad->data_moreConnect =
736 setting_create_Gendial_field_groupitem(ad->main_genlist,
737 &(ad->itc[GENDIAL_Type_2text_3]),
739 setting_main_click_list_more_cb,
741 SWALLOW_Type_INVALID,
748 __BACK_POINTER_SET(ad->data_moreConnect);
750 /* if has <more ..> item , change the last item_date to SETTING_GROUP_STYLE_CENTER*/
751 if (item_data && index > 1) {
752 item_data->group_style = SETTING_GROUP_STYLE_CENTER;
754 ad->data_moreConnect->group_style = SETTING_GROUP_STYLE_BOTTOM;
756 item_data = ad->data_moreConnect;
762 item_data->group_style = SETTING_GROUP_STYLE_NONE;
763 } else if (index == 2) {
764 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
769 void __load_connectivity_level0_list(void *data)
771 setting_main_appdata *ad = data;
772 __load_connectivity_menu_list(ad, Cfg_Item_Pos_Level0, ad->main_genlist);
775 void __load_connectivity_level_all_list(void *data)
778 setting_main_appdata *ad = data;
779 __load_connectivity_menu_list(ad, Cfg_Item_Pos_Level_All, ad->main_genlist);
782 void __load_system_menu_list(void *data, Cfg_Item_Position inputPos, Evas_Object *genlist)
785 SETTING_TRACE_DEBUG("pos :%d", inputPos);
786 setting_main_appdata *ad = data;
787 //group title, only display in setting main view
788 if (SETTING_VIEW_MAIN == ad->view_load) {
789 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
790 &(ad->itc[GENDIAL_Type_group_item]),
792 ELM_GENLIST_ITEM_NONE,
793 KeyStr_System, NULL);
795 int idx_second_menu = 0;
798 char *icon_path = NULL;
799 char *ug_args = NULL;
801 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
806 bool is_emulator = isEmulBin();
808 Setting_GenGroupItem_Data *item_data = NULL;
811 //SETTING_TRACE("setting_cfg_get_category_length() :: %d ", setting_cfg_get_category_length());
812 for (i = 0; i < setting_cfg_get_category_length(); i++) {
813 if (safeStrCmp(setting_cfg_get_category_name(i), KeyStr_System))
816 //SETTING_TRACE(" setting_cfg_get_menu_length(%d) :: %d ",i, setting_cfg_get_menu_length(i) );
817 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
818 keyStr = setting_cfg_get_keyname_idx(i, j);
819 /* sg_path = setting_cfg_get_ugpath_idx(i, j); */
820 tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
821 icon_path = setting_cfg_get_icon_path_idx(i, j);
822 ug_args = setting_cfg_get_ug_args_idx(i, j);
824 //SETTING_TRACE("KeyString : %s , tmpPos : %d , inputPos : %d ", keyStr, tmpPos, inputPos );
827 if (!safeStrCmp(KeyStr_Security, keyStr)) {
828 continue; /* hide Security in Emulator*/
829 } else if (!safeStrCmp(KeyStr_Memory, keyStr)) {
830 continue; /* hide Memory in Emulator*/
831 } else if (!safeStrCmp(KeyStr_Powersaving, keyStr)) {
832 continue; /* hide Powersaving in Emulator*/
833 } else if (!safeStrCmp(KeyStr_FlightMode, keyStr)) {
834 continue; /* hide Powersaving in Emulator*/
840 if (idx_second_menu < MAX_MORE_MENU_NUM
841 && Cfg_Item_Pos_Level1 == tmpPos
842 && SETTING_VIEW_MAIN == ad->view_load
843 && MAIN_PROFILE_PREFERRED == ad->profile_type) {
845 if (is_ug_installed_by_ug_args(ug_args)) {
846 ad->more_system_menus[idx_second_menu++] = keyStr;
850 if (Cfg_Item_Pos_Level_All == inputPos) {
852 //SETTING_TRACE("Cfg_Item_Pos_Level_All == inputPos ---> no draw --- WHY?? ");
853 } else if (inputPos != tmpPos) { /* not in the inputPos level */
854 //SETTING_TRACE("inputPos == tmp Pos ---> no draw --- WHY?? ");
858 if (!safeStrCmp(KeyStr_FlightMode, keyStr)) { /* load special radio */
860 item_data = mainlist_table[MAINLIST_ENTRY_FLIGHT_MODE].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
863 else if (!safeStrCmp(KeyStr_Landscape, keyStr)) { /* load special UG */
866 (VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, &value);
868 ad->data_rotationMode =
869 setting_create_Gendial_field_groupitem(genlist,
870 &(ad->itc[GENDIAL_Type_1text_2icon]),
872 setting_main_sel_list_mouse_up_cb,
874 SWALLOW_Type_1ICON_1RADIO,
880 setting_main_list_mouse_up_cb);
881 __BACK_POINTER_SET(ad->data_rotationMode);
882 item_data = ad->data_rotationMode;
884 else if (!safeStrCmp(KeyStr_Brightness, keyStr)) {
886 char* pa_bright = get_brightness_mode_str();
888 setting_create_Gendial_field_groupitem(genlist,
889 &(ad->itc[GENDIAL_Type_1icon_2text]),
891 setting_main_click_list_ex_ug_cb,
893 SWALLOW_Type_INVALID,
900 __BACK_POINTER_SET(ad->data_bright);
901 item_data = ad->data_bright;
904 else { /* load other UGs */
905 item_data = setting_create_Gendial_field_groupitem(genlist,
906 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
908 setting_main_click_list_ex_ug_cb,
910 SWALLOW_Type_INVALID,
921 item_data->group_style = SETTING_GROUP_STYLE_TOP;
922 } else if (j == setting_cfg_get_menu_length(i) - 1) {
923 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
925 item_data->group_style = SETTING_GROUP_STYLE_CENTER;
929 item_data->group_style = SETTING_GROUP_STYLE_TOP;
935 //end group, only display in setting main view
936 #if SUPPORT_MORE_ITEM_FUNCTION
937 if (SETTING_VIEW_MAIN == ad->view_load && MAIN_PROFILE_PREFERRED == ad->profile_type && idx_second_menu > 0)
939 char sub_text[MAX_COMMON_BUFFER_LEN] = {0, };
941 while (idx < MAX_MORE_MENU_NUM && ad->more_system_menus[idx])
945 safeStrNCat(sub_text, ", ", MAX_COMMON_BUFFER_LEN);
947 safeStrNCat(sub_text, _(ad->more_system_menus[idx]), MAX_COMMON_BUFFER_LEN);
951 ad->data_moreSystem =
952 setting_create_Gendial_field_groupitem(ad->main_genlist,
953 &(ad->itc[GENDIAL_Type_2text_3]),
955 setting_main_click_list_more_cb,
957 SWALLOW_Type_INVALID,
964 __BACK_POINTER_SET(ad->data_moreSystem);
966 /* if has <more ..> item , change the last item_date to SETTING_GROUP_STYLE_CENTER*/
967 if (item_data && index > 1) {
968 item_data->group_style = SETTING_GROUP_STYLE_CENTER;
970 ad->data_moreSystem->group_style = SETTING_GROUP_STYLE_BOTTOM;
972 item_data = ad->data_moreSystem;
977 item_data->group_style = SETTING_GROUP_STYLE_NONE;
978 } else if (index == 2) {
979 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
983 static void __load_system_level0_list(void *data)
985 setting_main_appdata *ad = data;
986 __load_system_menu_list(ad, Cfg_Item_Pos_Level0, ad->main_genlist);
989 static void __load_system_level_all_list(void *data)
992 setting_main_appdata *ad = data;
993 __load_system_menu_list(ad, Cfg_Item_Pos_Level_All, ad->main_genlist);
996 static void __load_applications_menu_list(void *data,
997 Cfg_Item_Position inputPos)
1000 SETTING_TRACE_DEBUG("pos :%d", inputPos);
1001 setting_main_appdata *ad = data;
1003 bool is_emulator = isEmulBin();
1006 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
1007 &(ad->itc[GENDIAL_Type_group_item]),
1009 ELM_GENLIST_ITEM_NONE,
1010 KeyStr_Applications, NULL);
1011 char *keyStr = NULL;
1012 char *icon_path = NULL;
1013 char *ug_args = NULL;
1014 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
1017 Setting_GenGroupItem_Data *item_data = NULL;
1019 for (i = 0; i < setting_cfg_get_category_length(); i++) {
1021 (setting_cfg_get_category_name(i), KeyStr_Applications))
1024 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
1025 keyStr = setting_cfg_get_keyname_idx(i, j);
1026 icon_path = setting_cfg_get_icon_path_idx(i, j);
1027 ug_args = setting_cfg_get_ug_args_idx(i, j);
1029 (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
1031 if (Cfg_Item_Pos_Level_All == inputPos) {
1032 } else if (inputPos != tmpPos) { /* not in the inputPos level */
1037 /* hide all except Email */
1038 if (safeStrCmp(KeyStr_Email, keyStr)) {
1045 item_data = setting_create_Gendial_field_groupitem(ad->main_genlist,
1046 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1048 setting_main_click_list_ex_ug_cb,
1050 SWALLOW_Type_INVALID,
1057 item_data->group_style = SETTING_GROUP_STYLE_TOP;
1058 } else if (j == setting_cfg_get_menu_length(i) - 1) {
1059 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
1061 item_data->group_style = SETTING_GROUP_STYLE_CENTER;
1065 item_data->group_style = SETTING_GROUP_STYLE_TOP;
1073 item_data->group_style = SETTING_GROUP_STYLE_NONE;
1074 } else if (index == 2) {
1075 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
1081 static void __load_applications_level0_list(void *data)
1083 setting_main_appdata *ad = data;
1084 __load_applications_menu_list(ad, Cfg_Item_Pos_Level0);
1087 static void __load_applications_level_all_list(void *data)
1089 SETTING_TRACE_BEGIN;
1090 setting_main_appdata *ad = data;
1091 __load_applications_menu_list(ad, Cfg_Item_Pos_Level_All);
1094 bool is_3rdapp_installed_setting_cfg(char* pkgname)
1096 SETTING_TRACE_BEGIN;
1100 if (snprintf(path, 512, PLUGIN_PREFIX"/apps/%s/setting/setting.xml", pkgname) < 0)
1104 bool result_opt = false;
1106 if(stat(path, &st) == 0) {
1109 SETTING_TRACE_ERROR(" %s is *NOT* present\n", path);
1116 static int __pkg_list_cb (const pkgmgrinfo_pkginfo_h handle, void *data)
1118 SETTING_TRACE_BEGIN;
1120 DrawAppInfo* pinfo = (DrawAppInfo*)data;
1124 ret = pkgmgr_pkginfo_get_pkgid(handle, &pkgid);
1126 SETTING_TRACE(">>>>> pkgmgr_pkginfo_get_pkgid() failed\n");
1130 ret = pkgmgr_pkginfo_get_label(handle, &label);
1132 SETTING_TRACE(">>>>> pkgmgr_pkginfo_get_pkg_name() failed\n");
1134 SETTING_TRACE(" 3rd party - pkg id : ----> %s, pkg name ----> %s ", pkgid, label);
1136 // appid - 1234567890.AppSetting2
1137 // pkgid - 1234567890
1140 if (is_3rdapp_installed_setting_cfg(pkgid) == true )
1144 if (pinfo->draw_app != NULL)
1146 SETTING_TRACE(">>> pkg name --> %s ", pkgid);
1147 pinfo->draw_app(pinfo->data, strdup(label)/* appname*/, strdup(pkgid)/* pkg_name*/);
1156 static void get_3rdapp_installed_setting_list()
1158 SETTING_TRACE_BEGIN;
1161 pkgmgrinfo_pkginfo_filter_h handle;
1162 pkgmgrinfo_pkginfo_filter_create(&handle);
1163 pkgmgrinfo_pkginfo_filter_add_bool(handle, PMINFO_PKGINFO_PROP_PACKAGE_APPSETTING, val);
1165 pkgmgrinfo_pkginfo_filter_foreach_pkginfo(handle, __pkg_list_cb, NULL);
1172 * ex) name : AppSetting4
1173 * ex) pkgname : UBKFwQidax.AppSetting4
1175 static void draw_3rdapp(void* data, char* name, char* pkgname)
1177 SETTING_TRACE_BEGIN;
1178 SETTING_TRACE(" name : %s", name);
1179 SETTING_TRACE(" pkgname : %s", pkgname);
1181 setting_main_appdata *ad = data;
1185 if (snprintf(fullpath, 512, PLUGIN_PREFIX"/apps/%s/setting/setting.xml", pkgname) < 0)
1188 SETTING_TRACE(" fullpath : %s", fullpath);
1192 char* plugin_path = strdup(fullpath);
1193 Setting_GenGroupItem_Data * plugin_node = setting_create_Gendial_field_groupitem(ad->main_genlist,
1194 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1196 setting_main_click_list_plugin_cb,
1198 SWALLOW_Type_INVALID,
1199 IMG_DefaultIcon, NULL,
1200 0, name, plugin_path, // <<-- refactoring
1207 * get 3rd party applist from AIL & searching dir/file by the defined rule
1209 * if data is NULL --> just get how many items are there
1210 * if data is NOT NULL --> draw UI code
1212 static int get_downloadapp_list(void* data)
1214 SETTING_TRACE_BEGIN;
1216 setting_main_appdata *ad = data;
1219 pkgmgrinfo_pkginfo_filter_h handle;
1220 pkgmgrinfo_pkginfo_filter_create(&handle);
1221 pkgmgrinfo_pkginfo_filter_add_bool(handle, PMINFO_PKGINFO_PROP_PACKAGE_APPSETTING, val);
1225 DrawAppInfo* pinfo = (DrawAppInfo*)malloc(sizeof(DrawAppInfo));
1229 pinfo->draw_app = draw_3rdapp;
1231 pkgmgrinfo_pkginfo_filter_foreach_pkginfo(handle, __pkg_list_cb, pinfo);
1233 ncount = pinfo->ncount;
1240 if (PMINFO_R_OK == pkgmgrinfo_pkginfo_filter_destroy(handle)) {
1241 SETTING_TRACE("remove pkginfo successfully");
1243 SETTING_TRACE("failed removing pkginfo");
1252 static int __get_downloaded_apps_num(Cfg_Item_Position inputPos)
1254 SETTING_TRACE_BEGIN;
1255 SETTING_TRACE_DEBUG("pos :%d", inputPos);
1256 int downloaded_apps_num = 0;
1257 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
1259 for (i = 0; i < setting_cfg_get_category_length(); i++) {
1261 (setting_cfg_get_category_name(i), KeyStr_DownloadedAPPs))
1264 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
1265 tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
1266 if (Cfg_Item_Pos_Level_All == inputPos) {
1267 } else if (inputPos != tmpPos) { /* not in the inputPos level */
1271 downloaded_apps_num++;
1275 // draw UI with AUL code
1277 downloaded_apps_num = get_downloadapp_list(NULL);
1278 SETTING_TRACE("Exit %s with return[%d]",__FUNCTION__, downloaded_apps_num);
1281 SETTING_TRACE("Exit %s with return[%d]",__FUNCTION__, downloaded_apps_num);
1282 return downloaded_apps_num;
1286 static void __load_downloaded_apps_menu_list(void *data,
1287 Cfg_Item_Position inputPos)
1289 SETTING_TRACE_BEGIN;
1290 SETTING_TRACE_DEBUG("pos :%d", inputPos);
1291 setting_main_appdata *ad = data;
1293 // if the number of download apps is zero, display a bottom seperator
1294 if (0 == __get_downloaded_apps_num(inputPos)) {
1295 Elm_Object_Item *item = NULL;
1296 item = elm_genlist_item_append(ad->main_genlist, &itc_bottom_seperator, NULL, NULL,
1297 ELM_GENLIST_ITEM_NONE, NULL, NULL);
1298 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1303 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
1304 &(ad->itc[GENDIAL_Type_group_item]),
1306 ELM_GENLIST_ITEM_NONE,
1307 KeyStr_DownloadedAPPs,
1309 get_downloadapp_list(ad);
1310 //SETTING_TRACE("Exit %s with return[%d]",__FUNCTION__, downloaded_apps_num);
1314 static void __load_downloaded_apps_level0_list(void *data)
1316 setting_main_appdata *ad = data;
1317 __load_downloaded_apps_menu_list(ad, Cfg_Item_Pos_Level0);
1320 static void __load_downloaded_apps_level_all_list(void *data)
1322 SETTING_TRACE_BEGIN;
1323 setting_main_appdata *ad = data;
1324 __load_downloaded_apps_menu_list(ad, Cfg_Item_Pos_Level_All);
1327 static void __check_all_view_clear(void *data)
1329 SETTING_TRACE_BEGIN;
1331 setting_main_appdata *ad = data;
1332 if (ad->item_check_list) {
1333 eina_list_free(ad->item_check_list);
1334 ad->item_check_list = NULL;
1337 ad->gl_sel_all = NULL;
1338 ad->edit_preferred_genlist = NULL;
1339 //ad->controllbar_all_check = NULL;
1340 ad->check_all_item =NULL;
1343 static void __prefered_buttons_cb(void *data, Evas_Object *obj, void *event_info)
1345 SETTING_TRACE_BEGIN;
1347 setting_main_appdata *ad = (setting_main_appdata *) data;
1348 const char *key = NULL;
1350 key = elm_object_text_get(obj);
1351 setting_retm_if(data == NULL
1352 || key == NULL, "data == NULL || key == NULL");
1354 SETTING_TRACE_DEBUG("press button: %s", key);
1357 if (!safeStrCmp(key, dgettext("sys_string", "IDS_COM_SK_DONE"))) {
1359 if (ad->profile_type == MAIN_PROFILE_ALL) {
1360 SETTING_TRACE_DEBUG("Cancel to hide current view.");
1361 setting_try_save_check_list(ad); /* need to save too */
1362 __check_all_view_clear(ad);
1363 elm_naviframe_item_pop(ad->navibar_main); // pop(preferred) --> main
1367 // MAIN_PROFILE_PREFERRED and Etc
1368 // redraw setting-main
1369 setting_try_save_check_list(ad);
1370 elm_naviframe_item_pop(ad->navibar_main); // pop (preferred) -> main
1372 //After the view is popuped, all the object handlers should be reset NULL.
1373 __check_all_view_clear(ad);
1374 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1375 ad->load_fns[Func_Type_System] = __load_system_level0_list;
1376 ad->load_fns[Func_Type_Apps] = __load_applications_level0_list;
1377 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level0_list;
1378 int ret = setting_main_refresh(ad);
1379 ret_if(ret != SETTING_RETURN_SUCCESS);
1384 if (!safeStrCmp(key, setting_gettext("IDS_COM_SK_CANCEL"))
1385 || !safeStrCmp(key, dgettext("sys_string", "IDS_COM_BODY_BACK"))) {
1386 SETTING_TRACE_DEBUG("Cancel to hide current view.");
1387 elm_naviframe_item_pop(ad->navibar_main);
1388 //After the view is popuped, all the object handlers should be reset NULL.
1389 __check_all_view_clear(ad);
1395 static void __btnback_clicked_cb(void *data, Evas_Object *obj, void *event_info)
1397 SETTING_TRACE_BEGIN;
1399 setting_main_appdata *ad = (setting_main_appdata *) data;
1400 elm_win_lower(ad->win_main);
1403 static Eina_Bool __refresh_on_idle(void *data)
1405 SETTING_TRACE_BEGIN;
1406 retv_if(!data, FALSE);
1407 setting_main_appdata *ad = data;
1408 if (MAIN_PROFILE_ALL == ad->profile_type)
1410 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level_all_list;
1411 ad->load_fns[Func_Type_System] = __load_system_level_all_list;
1412 ad->load_fns[Func_Type_Apps] = __load_applications_level_all_list;
1413 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level_all_list;
1414 setting_main_refresh(ad);
1416 else if (MAIN_PROFILE_PREFERRED == ad->profile_type)
1418 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1419 ad->load_fns[Func_Type_System] = __load_system_level0_list;
1420 ad->load_fns[Func_Type_Apps] = __load_applications_level0_list;
1421 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level0_list;
1422 setting_main_refresh(ad);
1424 ad->refresh_idler = NULL;
1428 static void __allFrequent_btn_cb(void *data, Evas_Object *obj, void *event_info)
1430 SETTING_TRACE_BEGIN;
1431 ret_if(!data || !obj);
1432 setting_main_appdata *ad = (setting_main_appdata *) data;
1433 //if already has the task,cancel the old task with ecore_idler_del,then add new idler task.
1434 if (ad->refresh_idler) {
1435 ecore_idler_del(ad->refresh_idler);
1436 ad->refresh_idler = NULL;
1439 //Elm_Object_Item *item = elm_toolbar_first_item_get(obj);
1441 if (MAIN_PROFILE_ALL == ad->profile_type)
1443 SETTING_TRACE("Change to Preferred view");
1444 elm_object_text_set(obj, _(ALL_STR));
1445 ad->profile_type = MAIN_PROFILE_PREFERRED;
1447 else if (MAIN_PROFILE_PREFERRED == ad->profile_type)
1449 SETTING_TRACE("Change to ALL view");
1450 elm_object_text_set(obj, _(PREFERRED_STR));
1451 ad->profile_type = MAIN_PROFILE_ALL;
1457 ad->refresh_idler = ecore_idler_add((Ecore_Task_Cb) __refresh_on_idle, ad);
1460 static void __setting_show_title_toolbar(void *data, Evas_Object *obj, void *event_info)
1462 SETTING_TRACE_BEGIN;
1463 //elm_object_item_signal_emit(data, "elm,state,sip,shown", "");
1464 setting_main_appdata *ad = (setting_main_appdata *) data;
1466 Evas_Object *navi_bar = NULL;
1468 if (ad->isInUGMode && ad->ug) {
1469 Evas_Object *layout = (Evas_Object *)ug_get_layout(ad->ug);
1471 navi_bar = elm_object_part_content_get(layout, "elm.swallow.content");
1473 navi_bar = ad->navibar_main;
1476 const char *support = evas_object_data_get(navi_bar, "sip.naviframe.title_obj");
1477 SETTING_TRACE("support:%s", support);
1478 Elm_Object_Item *top_item = elm_naviframe_top_item_get(navi_bar);
1479 if (0 == safeStrCmp("SEARCH", support))
1482 elm_object_item_signal_emit(top_item, "elm,state,toolbar,instant_open", ""); */
1486 elm_object_item_signal_emit(top_item, "elm,state,sip,shown", "");
1491 static void __setting_hide_title_toolbar(void *data, Evas_Object *obj, void *event_info)
1493 SETTING_TRACE_BEGIN;
1494 //elm_object_item_signal_emit(data, "elm,state,sip,hidden", "");
1495 setting_main_appdata *ad = (setting_main_appdata *) data;
1497 Evas_Object *navi_bar = NULL;
1499 if (ad->isInUGMode && ad->ug) {
1500 Evas_Object *layout = (Evas_Object *)ug_get_layout(ad->ug);
1502 navi_bar = elm_object_part_content_get(layout, "elm.swallow.content");
1504 navi_bar = ad->navibar_main;
1507 const char *support = evas_object_data_get(navi_bar, "sip.naviframe.title_obj");
1509 SETTING_TRACE("support:%s", support);
1510 Elm_Object_Item *top_item = elm_naviframe_top_item_get(navi_bar);
1511 if (0 == safeStrCmp("SEARCH", support))
1514 elm_object_item_signal_emit(top_item, "elm,state,toolbar,instant_close", ""); */
1519 elm_object_item_signal_emit(top_item, "elm,state,sip,hidden", "");
1524 static bool __setting_create_main_view(void *data)
1526 SETTING_TRACE_BEGIN;
1528 setting_retvm_if(data == NULL, FALSE, "data == NULL");
1529 setting_main_appdata *ad = (setting_main_appdata *) data;
1531 Evas_Object *conform = elm_conformant_add(ad->win_main);
1532 ad->ly_main = setting_create_win_layout(ad->win_main, ad->win_main);
1533 evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1534 evas_object_size_hint_align_set(conform, EVAS_HINT_FILL, EVAS_HINT_FILL);
1535 elm_win_resize_object_add(ad->win_main, conform);
1536 elm_object_content_set(conform, ad->ly_main);
1537 evas_object_show(conform);
1539 evas_object_smart_callback_add(conform, "virtualkeypad,state,on", __setting_show_title_toolbar, ad);
1540 evas_object_smart_callback_add(conform, "virtualkeypad,state,off", __setting_hide_title_toolbar, ad);
1542 elm_win_conformant_set(ad->win_main, EINA_TRUE);
1544 ad->conform = conform;
1546 ad->navibar_main = setting_create_navi_bar(ad->ly_main);
1548 ad->main_genlist = elm_genlist_add(ad->navibar_main);
1549 elm_object_style_set(ad->main_genlist, "dialogue");
1550 retvm_if(ad->main_genlist == NULL, FALSE,
1551 "Cannot set scroller object as contento of layout");
1553 //elm_genlist_homogeneous_set(ad->main_genlist, EINA_TRUE);
1554 elm_genlist_clear(ad->main_genlist); /* first to clear list */
1555 evas_object_smart_callback_add(ad->main_genlist, "realized", __gl_realized, ad);
1557 setting_create_navi_bar_buttons(_("IDS_COM_BODY_SETTINGS"),
1558 _("IDS_COM_BODY_BACK"), NULL, _("IDS_ST_OPT_ALL"),
1559 __btnback_clicked_cb, NULL,
1560 __allFrequent_btn_cb, ad, ad->main_genlist,
1561 ad->navibar_main, NULL);
1563 ad->profile_type = MAIN_PROFILE_PREFERRED;
1564 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1565 ad->load_fns[Func_Type_System] = __load_system_level0_list;
1566 ad->load_fns[Func_Type_Apps] = __load_applications_level_all_list;
1567 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level_all_list;
1568 setting_main_refresh(ad);
1572 static bool __setting_create_prefered_view(void *data)
1574 SETTING_TRACE_BEGIN;
1576 setting_retvm_if(data == NULL, FALSE, "data == NULL");
1577 setting_main_appdata *ad = (setting_main_appdata *) data;
1579 /* the genlist will be destroyed with its parent view, when using elm_naviframe_item_pop() to destroy the view. */
1580 ad->edit_preferred_genlist = elm_genlist_add(ad->win_main);
1581 elm_object_style_set(ad->edit_preferred_genlist, "dialogue");
1582 elm_genlist_clear(ad->edit_preferred_genlist); /* first to clear list */
1584 /* [UI] edit preffered view */
1585 Evas_Object *sub_layout = elm_layout_add(ad->win_main);
1586 elm_object_style_set(sub_layout, "dialogue");
1587 elm_layout_file_set(sub_layout, SETTING_THEME_EDJ_NAME, "search_layout");
1588 evas_object_size_hint_weight_set(sub_layout, EVAS_HINT_EXPAND, 0.0);
1589 evas_object_show(sub_layout);
1591 ad->gl_sel_all = elm_genlist_add(ad->win_main);
1592 elm_genlist_clear(ad->gl_sel_all); /* first to clear list */
1593 elm_genlist_bounce_set(ad->gl_sel_all, 0, 0);
1595 elm_object_part_content_set(sub_layout, "search_bar", ad->gl_sel_all); /* add 'Select all' */
1596 elm_object_part_content_set(sub_layout, "search_list", ad->edit_preferred_genlist); /* add Genlist */
1598 /* push, not create */
1599 setting_push_layout_navi_bar(_(EDIT_PREFERRED_STR),
1600 _("IDS_COM_SK_CANCEL"),
1601 _("IDS_COM_SK_DONE"), NULL,
1602 __prefered_buttons_cb, __prefered_buttons_cb, NULL, ad,
1603 sub_layout, ad->navibar_main,
1609 static void setting_main_tapi_event_cb(TapiHandle *handle, int result, void *data, void *user_data)
1611 SETTING_TRACE_BEGIN;
1613 setting_main_appdata *ad = user_data;
1614 ad->b_fm_requesting = FALSE;
1615 SETTING_TRACE("result:%d", result);
1619 case TAPI_POWER_FLIGHT_MODE_RESP_ON:
1621 setting_set_bool_slp_key(BOOL_SLP_SETTING_FLIGHT_MODE,
1622 SETTING_ON_OFF_BTN_ON, &err);
1624 //If Setting has validate operation (fm_waiting_op == FM_LEAVE) to process, process it.
1625 //Otherwise, do nothing
1626 if (FM_LEAVE == ad->fm_waiting_op)
1628 //Send the latest operation
1629 ad->fm_waiting_op = FM_INVALID;
1630 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
1631 setting_retm_if(err != TAPI_API_SUCCESS,
1632 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
1635 ad->b_fm_requesting = TRUE;
1640 case TAPI_POWER_FLIGHT_MODE_RESP_OFF:
1642 setting_set_bool_slp_key(BOOL_SLP_SETTING_FLIGHT_MODE,
1643 SETTING_ON_OFF_BTN_OFF, &err);
1645 //If Setting has validate operation (here, fm_waiting_op == FM_ENTER) to process,process it.
1646 //Otherwise, do nothing
1647 if (FM_ENTER == ad->fm_waiting_op)
1649 //Send the latest operation
1650 ad->fm_waiting_op = FM_INVALID;
1651 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
1652 setting_retm_if(err != TAPI_API_SUCCESS,
1653 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
1656 ad->b_fm_requesting = TRUE;
1661 case TAPI_POWER_FLIGHT_MODE_RESP_FAIL:
1662 //Setting has a validate operation to process, Send the operation request
1663 if (FM_ENTER == ad->fm_waiting_op)
1665 ad->fm_waiting_op = FM_INVALID;
1666 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
1668 setting_retm_if(err != TAPI_API_SUCCESS,
1669 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
1670 ad->b_fm_requesting = TRUE;
1672 else if (FM_LEAVE == ad->fm_waiting_op)
1674 ad->fm_waiting_op = FM_INVALID;
1675 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
1677 setting_retm_if(err != TAPI_API_SUCCESS,
1678 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
1679 ad->b_fm_requesting = TRUE;
1681 else //Current requset is the last one, Setting needs to notify user
1683 setting_create_popup_without_btn(ad, ad->win_main,
1684 _("IDS_COM_POP_ERROR"),
1685 _("IDS_ST_POP_UNABLE_TO_TURN_ON_FLIGHT_MODE_VODA"),
1686 NULL, POPUP_INTERVAL,
1689 //It is need to rollback the status,
1690 if (ad->data_flight) {
1691 ad->data_flight->chk_status = !ad->data_flight->chk_status;
1692 elm_check_state_set(ad->data_flight->eo_check, ad->data_flight->chk_status);
1698 ad->b_fm_requesting = TRUE;
1702 case TAPI_POWER_FLIGHT_MODE_RESP_MAX:
1703 setting_create_popup_without_btn(ad, ad->win_main,
1704 _("IDS_COM_POP_ERROR"),
1705 _("IDS_COM_POP_UNEXPECTED_ERROR"),
1706 NULL, POPUP_INTERVAL, FALSE, FALSE);
1708 //It is need to rollback the status,
1709 if (ad->data_flight) {
1710 ad->data_flight->chk_status = !ad->data_flight->chk_status;
1711 elm_check_state_set(ad->data_flight->eo_check, ad->data_flight->chk_status);
1716 SETTING_TRACE_DEBUG("default");
1718 setting_set_bool_slp_key(BOOL_SLP_SETTING_FLIGHT_MODE,
1719 ad->data_flight->chk_status, &err);
1725 static int setting_main_refresh(void *data)
1727 SETTING_TRACE_BEGIN;
1728 setting_main_appdata *ad = (setting_main_appdata *) data;
1729 elm_genlist_clear(ad->main_genlist); /* first to clear list */
1732 if (is_ug_installed_by_ug_args("rcs-config"))
1734 Elm_Object_Item *item = elm_genlist_item_append(ad->main_genlist, &itc_seperator, NULL, NULL,
1735 ELM_GENLIST_ITEM_NONE, NULL, NULL);
1736 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1737 setting_create_Gendial_field_groupitem(ad->main_genlist,
1738 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1740 setting_main_click_list_ex_ug_cb,
1742 SWALLOW_Type_INVALID,
1744 0, KeyStr_Joyn, NULL,
1750 for(i = Func_Type_Connectivity; i < Func_Type_MAX; i++)
1751 (ad->load_fns[i]) (ad);
1753 memset(ad->load_fns, 0, Func_Type_MAX *sizeof(menu_list_load_fn));
1755 return SETTING_RETURN_SUCCESS;
1758 static int setting_main_create(void *cb)
1760 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1762 setting_main_appdata *ad = (setting_main_appdata *) cb;
1764 //pass NULL to let TAPI access default module
1765 ad->handle = tel_init(NULL);
1767 SETTING_TRACE_ERROR("*** [ERR] tel_init failed ***");
1769 SETTING_TRACE("tel_init ok[handle:%p]", ad->handle);
1771 setting_create_Gendial_itc("dialogue/1text.1icon.2",
1772 &(ad->itc[GENDIAL_Type_1text_1icon_2]));
1773 setting_create_Gendial_itc("dialogue/1text.2icon",
1774 &(ad->itc[GENDIAL_Type_1text_2icon]));
1775 setting_create_Gendial_itc("dialogue/2text.1icon.3",
1776 &(ad->itc[GENDIAL_Type_1icon_2text]));
1777 setting_create_Gendial_itc("dialogue/1text.1icon.2",
1778 &(ad->itc[GENDIAL_Type_1text_2icon_2]));
1779 setting_create_Gendial_itc("dialogue/2text.2icon.3",
1780 &(ad->itc[GENDIAL_Type_2text_2icon_3]));
1781 setting_create_Gendial_itc("dialogue/title",
1782 &(ad->itc[GENDIAL_Type_group_item]));
1783 setting_create_Gendial_itc("select_all",
1784 &(ad->itc[GENDIAL_Type_sel_all]));
1786 setting_create_Gendial_itc("dialogue/2text.3", &(ad->itc[GENDIAL_Type_2text_3]));
1788 ad->view_type = SETTING_VIEW_MAIN;
1789 __setting_create_main_view(ad);
1791 setting_view_main.is_create = 1;
1793 setting_drawer_list_init();
1794 return SETTING_RETURN_SUCCESS;
1797 static int setting_main_destroy(void *cb)
1799 SETTING_TRACE_BEGIN;
1801 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1803 setting_main_appdata *ad = (setting_main_appdata *) cb;
1804 if (0 == setting_view_main.is_create)
1807 return SETTING_RETURN_SUCCESS;
1810 evas_object_smart_callback_del(ad->conform, "virtualkeypad,state,on", __setting_show_title_toolbar);
1811 evas_object_smart_callback_del(ad->conform, "virtualkeypad,state,off", __setting_hide_title_toolbar);
1813 if (ad->refresh_idler) {
1814 ecore_idler_del(ad->refresh_idler);
1815 ad->refresh_idler = NULL;
1819 int tapi_ret = tel_deinit(ad->handle);
1820 if (tapi_ret != TAPI_API_SUCCESS) {
1821 SETTING_TRACE_DEBUG("*** [ERR] tel_deinit. [%d] ***", tapi_ret);
1823 SETTING_TRACE("*** tel_deinit OK ");
1828 /* then destroy the UI object. */
1829 if (ad->item_check_list) {
1830 eina_list_free(ad->item_check_list);
1831 ad->item_check_list = NULL;
1833 SETTING_TRACE("*** ad->item_check_list is NULL - abnormal state ");
1837 evas_object_del(ad->ly_main);
1841 if (ad->flight_popup) {
1842 evas_object_del(ad->flight_popup);
1843 ad->flight_popup = NULL;
1846 evas_object_smart_callback_del(ad->main_genlist, "realized", __gl_realized);
1848 setting_dbus_handler_fini();
1849 setting_drawer_list_fini();
1851 setting_view_main.is_create = 0;
1853 return SETTING_RETURN_SUCCESS;
1856 static int setting_main_update(void *cb)
1858 SETTING_TRACE_BEGIN;
1861 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1863 setting_main_appdata *ad = (setting_main_appdata *) cb;
1865 if (ad->ly_main != NULL) {
1866 //evas_object_show(ad->ly_main);
1869 return SETTING_RETURN_SUCCESS;
1872 static int setting_main_cleanup(void *cb)
1874 SETTING_TRACE_BEGIN;
1876 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1878 setting_main_appdata *ad = (setting_main_appdata *) cb;
1880 if (ad->ly_main != NULL) {
1881 //evas_object_hide(ad->ly_main);
1884 return SETTING_RETURN_SUCCESS;
1887 /* ***************************************************
1891 ***************************************************/
1893 void setting_update_gl_item(void* data)
1895 SETTING_TRACE_BEGIN;
1896 setting_main_appdata *ad = data;
1897 retm_if(!data, "Invalid argument: data is NULL");
1900 Eina_Bool bGlUpdate = EINA_FALSE;
1901 Setting_GenGroupItem_Data *item_to_update = NULL;
1903 for(;nDx<GL_ITEM_MAX; nDx++) {
1904 if(EINA_TRUE == ad->updateItems[nDx]) {
1908 item_to_update = ad->data_wifi;
1909 bGlUpdate = EINA_TRUE;
1912 item_to_update = ad->data_bt;
1913 bGlUpdate = EINA_TRUE;
1916 item_to_update = ad->data_nfc;
1917 bGlUpdate = EINA_TRUE;
1919 case GL_ITEM_FLIGHT:
1920 item_to_update = ad->data_flight;
1921 bGlUpdate = EINA_FALSE;
1927 default: // other case
1931 if (item_to_update) {
1932 SETTING_TRACE("gl update [%s], bGlUpdate:%d", _(item_to_update->keyStr), bGlUpdate);
1934 SETTING_TRACE("gl update:%d", nDx);
1935 elm_object_item_data_set(item_to_update->item, item_to_update);
1936 elm_genlist_item_update(item_to_update->item);
1938 SETTING_TRACE("chk update:%d", nDx);
1939 elm_check_state_set(item_to_update->eo_check, item_to_update->chk_status);
1943 ad->updateItems[nDx] = EINA_FALSE;
1944 } // if(EINA_TRUE == ad->updateItems[nDx])
1952 void setting_main_destroy_ug_cb(ui_gadget_h ug, void *priv)
1954 setting_main_appdata *ad = (setting_main_appdata *) priv;
1956 return; /* do nothing if ad is NULL */
1963 setting_main_click_list_item_reset_data(ad, NULL);
1965 // update main genlist in unloading UG
1966 SETTING_TRACE("update main genlist in unloading UG");
1967 setting_update_gl_item(ad);
1972 void setting_main_result_ug_cb(ui_gadget_h ug, service_h service,
1977 // set default local automatically
1978 set_defaultLangICU();
1981 void setting_main_layout_ug_cb(ui_gadget_h ug, enum ug_mode mode,
1984 setting_main_appdata *ad = (setting_main_appdata *) priv;
1989 SETTING_TRACE_BEGIN;
1991 base = (Evas_Object *) ug_get_layout(ug);
1996 case UG_MODE_FULLVIEW:
1997 evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,
1999 evas_object_show(base);
2008 /* ***************************************************
2012 ***************************************************/
2014 void setting_main_click_list_item_reset_data(void *data,
2017 SETTING_TRACE_BEGIN;
2018 setting_main_appdata *ad = (setting_main_appdata *) data;
2020 ad->isInUGMode = FALSE;
2025 void /* obj is the layout clicked */
2026 setting_main_click_list_item_ug_cb(void *data, Evas_Object *obj,
2027 char *ug_to_load, service_h svc,
2030 SETTING_TRACE_BEGIN;
2031 setting_main_appdata *ad = (setting_main_appdata *) data;
2033 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
2037 char ug_file[PATH_MAX];
2039 (ug_file, PATH_MAX, "%s/libug-%s.so", SETTING_UG_PATH,
2042 SETTING_TRACE("ug_file:%s", ug_file);
2043 if (!ecore_file_exists(ug_file)) {
2044 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
2048 SETTING_TRACE("to create libug-%s.so", ug_to_load);
2049 ad->ug = ug_create(NULL, ug_to_load, UG_MODE_FULLVIEW, svc, cbs);
2051 ad->isInUGMode = TRUE;
2052 memset(ad->cur_loaded_ug, 0x00, MAX_DISPLAY_NAME_LEN_ON_UI);
2053 safeCopyStr(ad->cur_loaded_ug, ug_to_load, MAX_DISPLAY_NAME_LEN_ON_UI);
2056 evas_object_show(ad->ly_main);
2058 SETTING_TRACE_ERROR("errno:%d", errno);
2059 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
2065 setting_main_click_list_default_ug_cb(void *data, Evas_Object *obj,
2068 setting_main_appdata *ad = data;
2069 setting_create_simple_popup(ad, ad->win_main, NULL,
2074 setting_main_click_list_usb_cb(void *data, Evas_Object *obj, void *event_info)
2076 SETTING_TRACE_BEGIN;
2077 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2081 char *str_text = USB_NEED_OFF;
2083 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2085 setting_get_int_slp_key(INT_SLP_SETTING_MOBILE_AP_STATUS, &value, &err);
2088 SETTING_TRACE_ERROR("FAIL: VCONFKEY_MOBILE_HOTSPOT_MODE may not exist\n");
2089 setting_main_click_list_ex_ug_cb(data, obj, item);
2093 /* If mobile hotspot is on, going USB utilties is blocked by a popup*/
2094 if (value & VCONFKEY_MOBILE_HOTSPOT_MODE_USB)
2096 elm_genlist_item_selected_set(item, EINA_FALSE);
2097 setting_create_simple_popup(g_main_ad, g_main_ad->win_main, NULL, (str_text));
2101 setting_main_click_list_ex_ug_cb(data, obj, item);
2107 void setting_main_click_list_more_cb(void *data, Evas_Object *obj, void *event_info)
2109 SETTING_TRACE_BEGIN;
2110 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2111 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2112 elm_genlist_item_selected_set(item, EINA_FALSE);
2113 retm_if(data == NULL, "Invalid argument: data is NULL");
2114 setting_main_appdata *ad = data;
2115 Setting_GenGroupItem_Data *selected_item_data =
2116 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2117 SETTING_TRACE("selected_item_data->keyStr:%s", selected_item_data->keyStr);
2118 if (0 == safeStrCmp(selected_item_data->keyStr, KeyStr_MoreConnect))
2120 ad->view_load = SETTING_VIEW_CONNECTIVE_MORE;
2122 else if (0 == safeStrCmp(selected_item_data->keyStr, KeyStr_MoreSystem))
2124 ad->view_load = SETTING_VIEW_SYSTEM_MORE;
2130 setting_view_change(&setting_view_main, &setting_view_more_menu, ad);
2135 setting_main_click_list_ex_ug_cb(void *data, Evas_Object *obj,
2138 SETTING_TRACE_BEGIN;
2139 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2140 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2142 elm_genlist_item_selected_set(item, EINA_FALSE);
2144 if (g_main_ad->ug) {
2146 ("[ad->ug non-NULL]skip genlist click event!!");
2152 if (NULL == data) { /* pass NULL to ug_args when create setting.cfg. */
2153 setting_create_simple_popup(g_main_ad,
2154 g_main_ad->win_main,
2155 NULL, NO_UG_FOUND_MSG);
2160 setting_main_appdata *ad = g_main_ad;
2162 /* if UG is created by Setting app, setting_main_click_list_ex_ug_cb is diabled. */
2163 if (ad->isInUGMode) {
2164 SETTING_TRACE("isInUGMode : TRUE - another UG is running now.");
2165 ad->isInUGMode = FALSE;
2170 ("isInUGMode : FALSE - another UG is NOT running now.")
2173 Setting_GenGroupItem_Data *selected_item_data =
2174 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2175 setting_main_click_list_item_reset_data(ad, obj);
2176 const char *item_name = _(selected_item_data->keyStr);
2179 struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
2180 setting_retm_if(!cbs, "calloc failed");
2181 cbs->layout_cb = setting_main_layout_ug_cb;
2182 cbs->result_cb = setting_main_result_ug_cb;
2183 cbs->destroy_cb = setting_main_destroy_ug_cb;
2184 cbs->priv = (void *)ad;
2186 char *path = get_ug_path_from_ug_args(data);
2187 service_h svc = get_bundle_from_ug_args(data);
2188 setting_main_click_list_item_ug_cb(ad, obj, path, svc, cbs);
2195 service_destroy(svc);
2198 setting_main_click_list_plugin_cb(void *data, Evas_Object *obj,
2201 SETTING_TRACE_BEGIN;
2202 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2203 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2204 elm_genlist_item_selected_set(item, EINA_FALSE);
2205 Setting_GenGroupItem_Data *selected_item = (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2207 setting_main_appdata *ad = data;
2209 ad->plugin_path = strdup(selected_item->sub_desc);
2210 SETTING_TRACE(" >> SELECTED plugin name : %s \n", ad->plugin_path);
2212 PluginNode* plugin_node = setting_plugin_create(g_main_ad->navibar_main, g_main_ad->win_main);
2213 plugin_node->plugin_path = strdup(selected_item->sub_desc);
2214 ad->plugin_node = plugin_node; // the selected plugin name
2216 setting_drawer_list_init();
2217 setting_dbus_handler_init( ad->plugin_node );
2219 setting_plugin_load(plugin_node, (const char *)plugin_node->plugin_path);
2223 * @see [caller] setting_main_list_mouse_up_cb
2224 * @see [caller] setting_main_sel_list_mouse_up_cb
2226 static void __rotate_lock_handler(int chk_status, setting_main_appdata *ad )
2228 SETTING_TRACE_BEGIN;
2229 if( chk_status == 1)
2232 int angle = elm_win_rotation_get(ad->win_main);
2233 elm_win_rotation_with_resize_set(ad->win_main, angle);
2235 elm_win_rotation_with_resize_set(ad->win_main, 0);
2237 vconf_set_bool(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, chk_status);
2243 void setting_main_list_mouse_up_cb(void *data, Evas_Object *eo,
2246 SETTING_TRACE_BEGIN;
2247 retm_if(data == NULL, "Data parameter is NULL");
2248 Setting_GenGroupItem_Data *list_item =
2249 (Setting_GenGroupItem_Data *) data;
2250 SETTING_TRACE("process item [%s]", list_item->keyStr);
2251 list_item->chk_status = elm_check_state_get(eo); /* for update new state */
2253 SETTING_TRACE("change radio[%s], status is:%d", _(list_item->keyStr),
2254 list_item->chk_status);
2255 setting_main_appdata *ad = g_main_ad;
2257 if (!safeStrCmp(KeyStr_UsePacketData, list_item->keyStr)) {
2259 if (elm_check_state_get(eo)) {
2260 setting_set_bool_slp_key
2261 (BOOL_SLP_SETTING_USE_PACKET_DATA,
2262 SETTING_ON_OFF_BTN_ON, &err);
2264 setting_set_bool_slp_key
2265 (BOOL_SLP_SETTING_USE_PACKET_DATA,
2266 SETTING_ON_OFF_BTN_OFF, &err);
2269 } else if (!safeStrCmp(KeyStr_Landscape, list_item->keyStr)) {
2270 __rotate_lock_handler(list_item->chk_status, ad);
2279 void setting_main_sel_list_mouse_up_cb(void *data, Evas_Object *eo,
2282 SETTING_TRACE_BEGIN;
2283 setting_retm_if(data == NULL, "Data parameter is NULL");
2285 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2286 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2287 elm_genlist_item_selected_set(item, 0);
2288 Setting_GenGroupItem_Data *list_item =
2289 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2291 list_item->chk_status = elm_check_state_get(list_item->eo_check);
2294 list_item->chk_status = !list_item->chk_status;
2295 elm_check_state_set(list_item->eo_check, list_item->chk_status);
2297 setting_main_appdata *ad = (setting_main_appdata *) data;
2298 if (!safeStrCmp(KeyStr_UsePacketData, list_item->keyStr)) {
2299 /* setting_reset_slp_key_by_status(eo, BOOL_SLP_SETTING_USE_PACKET_DATA); */
2301 setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
2302 list_item->chk_status, &err);
2304 } else if (!safeStrCmp(KeyStr_Landscape, list_item->keyStr)) {
2305 __rotate_lock_handler(list_item->chk_status, ad);
2311 void __alternate_flight_mode(Evas_Object *check)
2313 SETTING_TRACE_BEGIN;
2315 Eina_Bool status = elm_check_state_get(check);
2316 SETTING_TRACE("flight mode status : %d", status);
2317 setting_main_appdata *ad = g_main_ad;
2319 //Check whether some requestion is processing by TAPI
2320 if (ad->b_fm_requesting)
2322 //Do nothing, just mark the lastest operation..
2323 SETTING_TRACE("Some requestion is processing by TAPI, wait to process");
2324 ad->fm_waiting_op = status ? FM_ENTER : FM_LEAVE;
2328 //otherwise, invalid waiting operation and send requsetion to TAPI:
2329 ad->fm_waiting_op = FM_INVALID;
2331 ret = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
2332 setting_retm_if(ret != TAPI_API_SUCCESS,
2333 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
2335 ret = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
2336 setting_retm_if(ret != TAPI_API_SUCCESS,
2337 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
2341 ad->b_fm_requesting = TRUE;
2345 static void __tethering_disabled_cb(tethering_error_e error, tethering_type_e type, tethering_disabled_cause_e code, void *data)
2350 tethering_h th = (tethering_h)data;
2351 tethering_destroy(th);
2354 ret = wifi_initialize();
2355 setting_retm_if(ret < 0, "*** [ERR] wifi_initialize() ***");
2357 ret = wifi_activate(NULL, NULL);
2359 wifi_deinitialize();
2361 setting_retm_if(ret < 0, "*** [ERR] wifi_activate() ***");
2363 ret = wifi_deinitialize();
2364 setting_retm_if(ret < 0, "*** [ERR] wifi_deinitialize() ***");
2367 static void __tethering_turn_off_resp_cb(void *data, Evas_Object *obj, void *event_info)
2369 setting_retm_if(NULL == obj, "NULL == obj");
2370 int response_type = btn_type(obj);
2371 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)data;
2375 evas_object_del(g_main_ad->popup);
2376 g_main_ad->popup = NULL;
2379 if (POPUP_RESPONSE_OK == response_type)
2381 tethering_h th = NULL;
2382 tethering_error_e ret = TETHERING_ERROR_NONE;
2384 ret = tethering_create(&th);
2385 if (ret != TETHERING_ERROR_NONE) {
2386 list_item->swallow_type = SWALLOW_Type_1ICON_1RADIO;
2387 list_item->chk_status = EINA_FALSE;
2388 elm_object_item_data_set(list_item->item, list_item);
2389 elm_genlist_item_update(list_item->item);
2392 ret = tethering_set_disabled_cb(th, TETHERING_TYPE_WIFI, __tethering_disabled_cb, th);
2393 if (ret != TETHERING_ERROR_NONE) {
2394 list_item->swallow_type = SWALLOW_Type_1ICON_1RADIO;
2395 list_item->chk_status = EINA_FALSE;
2396 elm_object_item_data_set(list_item->item, list_item);
2397 elm_genlist_item_update(list_item->item);
2399 tethering_destroy(th);
2403 tethering_disable(th, TETHERING_TYPE_WIFI);
2405 else if (POPUP_RESPONSE_CANCEL == response_type)
2407 list_item->swallow_type = SWALLOW_Type_1ICON_1RADIO;
2408 list_item->chk_status = EINA_FALSE;
2409 elm_object_item_data_set(list_item->item, list_item);
2410 elm_genlist_item_update(list_item->item);
2414 void __alternate_wifi_mode(Setting_GenGroupItem_Data *list_item, Evas_Object *check)
2416 SETTING_TRACE_BEGIN;
2418 Eina_Bool status = elm_check_state_get(check);
2419 SETTING_TRACE("wifi mode status : %d", status);
2423 if (tethering_is_enabled(NULL, TETHERING_TYPE_WIFI) == TRUE) {
2424 list_item->swallow_type = SWALLOW_Type_1ICON_1PROCESS;
2425 elm_object_item_data_set(list_item->item, list_item);
2426 elm_genlist_item_update(list_item->item);
2428 g_main_ad->popup = setting_create_popup_with_btn(list_item,
2429 g_main_ad->win_main, NULL,
2430 _("Connecting Wi-Fi will turn off Mobile hotspot. Continue?"),
2431 __tethering_turn_off_resp_cb,
2432 0, 2, _("IDS_COM_SK_OK"), _("IDS_COM_SK_CANCEL"));
2434 ret = wifi_initialize();
2436 setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err);
2437 list_item->chk_status = value;
2438 elm_object_item_data_set(list_item->item, list_item);
2439 elm_genlist_item_update(list_item->item);
2441 setting_retm_if(ret < 0, "*** [ERR] wifi_initialize() ***");
2444 ret = wifi_activate(NULL, NULL);
2446 setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err);
2447 list_item->chk_status = value;
2448 elm_object_item_data_set(list_item->item, list_item);
2449 elm_genlist_item_update(list_item->item);
2450 wifi_deinitialize();
2452 setting_retm_if(ret < 0, "*** [ERR] wifi_activate() ***");
2454 ret = wifi_deactivate(NULL, NULL);
2456 setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err);
2457 list_item->chk_status = value;
2458 elm_object_item_data_set(list_item->item, list_item);
2459 elm_genlist_item_update(list_item->item);
2460 wifi_deinitialize();
2462 setting_retm_if(ret < 0, "*** [ERR] wifi_deactivate() ***");
2465 ret = wifi_deinitialize();
2467 setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err);
2468 list_item->chk_status = value;
2469 elm_object_item_data_set(list_item->item, list_item);
2470 elm_genlist_item_update(list_item->item);
2472 setting_retm_if(ret < 0, "*** [ERR] wifi_deinitialize() ***");
2474 list_item->swallow_type = SWALLOW_Type_1ICON_1PROCESS;
2475 elm_object_item_data_set(list_item->item, list_item);
2476 elm_genlist_item_update(list_item->item);
2482 void __alternate_bt_mode(Setting_GenGroupItem_Data *list_item, Evas_Object *check)
2484 SETTING_TRACE_BEGIN;
2486 Eina_Bool status = elm_check_state_get(check);
2487 SETTING_TRACE("bt mode status : %d", status);
2491 ret = bt_initialize();
2493 setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err);
2494 list_item->chk_status = value;
2495 elm_object_item_data_set(list_item->item, list_item);
2496 elm_genlist_item_update(list_item->item);
2498 setting_retm_if(ret < 0, "*** [ERR] bt_initialize() ***");
2502 ret = bt_adapter_enable();
2504 setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err);
2505 list_item->chk_status = value;
2506 elm_object_item_data_set(list_item->item, list_item);
2507 elm_genlist_item_update(list_item->item);
2510 setting_retm_if(ret < 0, "*** [ERR] bt_adapter_enable() ***");
2512 ret = bt_adapter_disable();
2514 setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err);
2515 list_item->chk_status = value;
2516 elm_object_item_data_set(list_item->item, list_item);
2517 elm_genlist_item_update(list_item->item);
2520 setting_retm_if(ret < 0, "*** [ERR] bt_adapter_disable() ***");
2523 ret = bt_deinitialize();
2525 setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err);
2526 list_item->chk_status = value;
2527 elm_object_item_data_set(list_item->item, list_item);
2528 elm_genlist_item_update(list_item->item);
2530 setting_retm_if(ret < 0, "*** [ERR] bt_deinitialize() ***");
2532 list_item->swallow_type = SWALLOW_Type_1ICON_1PROCESS;
2533 elm_object_item_data_set(list_item->item, list_item);
2534 elm_genlist_item_update(list_item->item);
2539 void __alternate_nfc_mode(Setting_GenGroupItem_Data *list_item, Evas_Object *check)
2541 SETTING_TRACE_BEGIN;
2543 Eina_Bool status = elm_check_state_get(check);
2544 SETTING_TRACE("nfc mode status : %d", status);
2548 ret = nfc_manager_initialize(NULL, NULL);
2550 setting_get_bool_slp_key(BOOL_SLP_SETTING_NFC_STATUS, &value, &err);
2551 list_item->chk_status = value;
2552 elm_object_item_data_set(list_item->item, list_item);
2553 elm_genlist_item_update(list_item->item);
2555 setting_retm_if(ret < 0, "*** [ERR] nfc_manager_initialize() ***");
2557 ret = nfc_manager_set_activation(status, NULL, NULL);
2559 setting_get_bool_slp_key(BOOL_SLP_SETTING_NFC_STATUS, &value, &err);
2560 list_item->chk_status = value;
2561 elm_object_item_data_set(list_item->item, list_item);
2562 elm_genlist_item_update(list_item->item);
2563 nfc_manager_deinitialize();
2565 setting_retm_if(ret < 0, "*** [ERR] nfc_manager_set_activation() ***");
2567 ret = nfc_manager_deinitialize();
2569 setting_get_bool_slp_key(BOOL_SLP_SETTING_NFC_STATUS, &value, &err);
2570 list_item->chk_status = value;
2571 elm_object_item_data_set(list_item->item, list_item);
2572 elm_genlist_item_update(list_item->item);
2574 setting_retm_if(ret < 0, "*** [ERR] nfc_manager_deinitialize() ***");
2576 list_item->swallow_type = SWALLOW_Type_1ICON_1PROCESS;
2577 elm_object_item_data_set(list_item->item, list_item);
2578 elm_genlist_item_update(list_item->item);
2583 void __alternate_sbeam_mode(Evas_Object *check)
2585 SETTING_TRACE_BEGIN;
2587 Eina_Bool status = elm_check_state_get(check);
2588 SETTING_TRACE("wifi mode status : %d", status);
2590 vconf_set_bool(VCONFKEY_NFC_SBEAM, status);
2596 setting_main_click_list_network_ug_cb(void *data, Evas_Object *obj,
2599 SETTING_TRACE_BEGIN;
2600 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2601 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2603 elm_genlist_item_selected_set(item, EINA_FALSE);
2605 if (g_main_ad->ug) {
2607 ("[ad->ug non-NULL]skip genlist click event!!");
2613 setting_main_appdata *ad = g_main_ad;
2614 setting_main_click_list_item_reset_data(ad, obj);
2618 setting_get_int_slp_key(INT_SLP_SETTING_SIM_SLOT, &value, &err);
2619 SETTING_TRACE("value:%d", value);
2621 case VCONFKEY_TELEPHONY_SIM_INSERTED:
2623 struct ug_cbs *cbs =
2624 (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
2625 setting_retm_if(!cbs, "calloc failed");
2626 cbs->layout_cb = setting_main_layout_ug_cb;
2627 cbs->result_cb = setting_main_result_ug_cb;
2628 cbs->destroy_cb = setting_main_destroy_ug_cb;
2629 cbs->priv = (void *)ad;
2630 setting_main_click_list_item_ug_cb(data, obj,
2631 "setting-network-efl",
2636 case VCONFKEY_TELEPHONY_SIM_NOT_PRESENT:
2637 setting_create_simple_popup(NULL, ad->win_main,
2638 NULL, _("IDS_ST_HEADER_INSERT_SIM_CARD_ABB"));
2639 SETTING_TRACE("%s*** [ERR] No SIM. sim_slot_type=%d ***%s",
2640 SETTING_FONT_RED, value, SETTING_FONT_BLACK);
2643 case VCONFKEY_TELEPHONY_SIM_CARD_ERROR:
2644 case VCONFKEY_TELEPHONY_SIM_UNKNOWN:
2645 setting_create_simple_popup(NULL, ad->win_main,
2646 NULL,_("IDS_COM_BODY_INVALID_SIM_CARD"));
2647 SETTING_TRACE("%s*** [ERR] Invalid SIM. sim_slot_type=%d ***%s",
2648 SETTING_FONT_RED, value, SETTING_FONT_BLACK);
2661 setting_main_click_Gendial_list_flight_mode_cb(void *data, Evas_Object *obj,
2665 setting_retm_if(data == NULL, "Data parameter is NULL");
2667 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2668 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2669 elm_genlist_item_selected_set(item, 0);
2670 Setting_GenGroupItem_Data *list_item =
2671 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2672 int old_status = elm_check_state_get(list_item->eo_check);
2674 list_item->chk_status = !old_status;
2675 elm_check_state_set(list_item->eo_check, list_item->chk_status);
2677 __alternate_flight_mode(list_item->eo_check);
2685 setting_main_click_list_flight_mode_cb(void *data, Evas_Object *obj,
2688 SETTING_TRACE_BEGIN;
2689 retm_if(data == NULL, "Data parameter is NULL");
2690 Setting_GenGroupItem_Data *list_item =
2691 (Setting_GenGroupItem_Data *) data;
2692 list_item->chk_status = elm_check_state_get(obj); /* for update new state */
2693 SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2694 list_item->chk_status);
2696 __alternate_flight_mode(obj);
2704 setting_main_click_list_wifi_mode_cb(void *data, Evas_Object *obj,
2707 SETTING_TRACE_BEGIN;
2708 retm_if(data == NULL, "Data parameter is NULL");
2709 Setting_GenGroupItem_Data *list_item =
2710 (Setting_GenGroupItem_Data *) data;
2711 list_item->chk_status = elm_check_state_get(obj); /* for update new state */
2712 SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2713 list_item->chk_status);
2715 __alternate_wifi_mode(list_item, obj);
2723 setting_main_click_list_bt_mode_cb(void *data, Evas_Object *obj,
2726 SETTING_TRACE_BEGIN;
2727 retm_if(data == NULL, "Data parameter is NULL");
2728 Setting_GenGroupItem_Data *list_item =
2729 (Setting_GenGroupItem_Data *) data;
2730 list_item->chk_status = elm_check_state_get(obj); /* for update new state */
2731 SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2732 list_item->chk_status);
2734 __alternate_bt_mode(list_item, obj);
2742 setting_main_click_list_nfc_mode_cb(void *data, Evas_Object *obj,
2745 SETTING_TRACE_BEGIN;
2746 retm_if(data == NULL, "Data parameter is NULL");
2747 Setting_GenGroupItem_Data *list_item =
2748 (Setting_GenGroupItem_Data *) data;
2749 list_item->chk_status = elm_check_state_get(obj); /* for update new state */
2750 SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2751 list_item->chk_status);
2753 __alternate_nfc_mode(list_item, obj);
2761 setting_main_click_list_sbeam_mode_cb(void *data, Evas_Object *obj,
2764 SETTING_TRACE_BEGIN;
2765 retm_if(data == NULL, "Data parameter is NULL");
2766 Setting_GenGroupItem_Data *list_item =
2767 (Setting_GenGroupItem_Data *) data;
2768 list_item->chk_status = elm_check_state_get(obj); /* for update new state */
2769 SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2770 list_item->chk_status);
2772 __alternate_sbeam_mode(obj);
2777 * store current selection in setting.cfg
2779 void setting_try_save_check_list(void *data)
2781 SETTING_TRACE_BEGIN;
2782 setting_main_appdata *ad = (setting_main_appdata *) data;
2784 Eina_List *check_list = ad->item_check_list;
2785 Setting_GenGroupItem_Data *list_item = NULL;
2786 int update_count = 0;
2788 while (check_list) {
2789 list_item = (Setting_GenGroupItem_Data *) eina_list_data_get(check_list);
2790 if (NULL == list_item) continue;
2793 if (list_item->chk_status) {
2794 /* to update config file */
2795 setting_cfg_set_pos(list_item->keyStr, Cfg_Item_Pos_Level0);
2797 /* to update config file */
2798 setting_cfg_set_pos(list_item->keyStr, Cfg_Item_Pos_Level1);
2800 check_list = eina_list_next(check_list);
2803 if (update_count == 0) {
2804 /* to popup tips notify */
2806 setting_cfg_file_update();
2812 setting_main_click_edit_preferred_cb(void *data, Evas_Object *obj, void *event_info)
2814 SETTING_TRACE_BEGIN;
2816 setting_main_appdata *ad = (setting_main_appdata *) data;
2817 ad->view_type = SETTING_VIEW_ALL_CHECK;
2818 __setting_create_prefered_view(ad);
2819 __load_check_list(ad, &(ad->edit_preferred_genlist), NULL);