3 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * Licensed under the Flora License, Version 1.0 (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>
22 #include <setting-plugin.h>
24 #include <tethering.h>
25 #include <bluetooth.h>
28 #define PLUGIN_PREFIX "/opt"
30 typedef struct _DrawAppInfo
33 //------------------------------------
34 void (*draw_app)(void* arg, char* name, char* pkgname);
38 static int setting_main_create(void *cb);
39 static int setting_main_destroy(void *cb);
40 static int setting_main_update(void *cb);
41 static int setting_main_cleanup(void *cb);
43 setting_view setting_view_main = {
44 .create = setting_main_create,
45 .update = setting_main_update,
46 .destroy = setting_main_destroy,
47 .cleanup = setting_main_cleanup,
50 setting_main_appdata *g_main_ad = NULL;
52 static void setting_main_tapi_event_cb(TapiHandle *handle, int result, void *data, void *user_data);
53 static int setting_main_refresh(void *data);
54 static void __alternate_flight_mode(Evas_Object *check);
55 static void setting_main_click_Gendial_list_flight_mode_cb(void *data,
58 static void __alternate_flight_mode(Evas_Object *check);
60 void setting_main_click_list_item_ug_cb(void *data, Evas_Object *obj, char *ug_to_load, service_h svc, struct ug_cbs *cbs);
63 __setting_chk_changed(void *data, Evas_Object *obj, void *event_info)
65 /* SETTING_TRACE_BEGIN; */
66 retm_if(data == NULL, "Data parameter is NULL");
67 Setting_GenGroupItem_Data *list_item =
68 (Setting_GenGroupItem_Data *) data;
69 /* SETTING_TRACE("process item [%s]", _(list_item->keyStr)); */
70 list_item->chk_status = elm_check_state_get(obj);
72 Eina_List *check_list = g_main_ad->item_check_list;
73 Setting_GenGroupItem_Data *item = NULL;
74 bool isFoundNotSelSomeone = FALSE;
75 bool isFoundSelSomeone = FALSE;
77 item = (Setting_GenGroupItem_Data *)
78 eina_list_data_get(check_list);
82 if (!(item->chk_status)) {
83 isFoundNotSelSomeone = TRUE;
85 isFoundSelSomeone = TRUE;
87 if (isFoundNotSelSomeone && isFoundSelSomeone) {
90 check_list = eina_list_next(check_list);
93 if (isFoundNotSelSomeone) {
94 g_main_ad->check_all_item->chk_status = 0; /* for update new state */
96 g_main_ad->check_all_item->chk_status = 1; /* for update new state */
98 elm_object_item_data_set(g_main_ad->check_all_item->item, g_main_ad->check_all_item);
99 elm_genlist_item_update(g_main_ad->check_all_item->item);
101 if (isFoundSelSomeone) {
102 /* SETTING_TRACE("Set it to active"); */
104 elm_object_item_disabled_set(elm_toolbar_last_item_get
105 (g_main_ad->controllbar_all_check),
110 static void __setting_list_changed(void *data, Evas_Object *obj,
116 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
118 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
119 elm_genlist_item_selected_set(item, 0);
120 Setting_GenGroupItem_Data *list_item =
121 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
123 int old_status = elm_check_state_get(list_item->eo_check);
125 list_item->chk_status = !old_status;
126 elm_check_state_set(list_item->eo_check, list_item->chk_status);
128 Eina_List *check_list = g_main_ad->item_check_list;
129 Setting_GenGroupItem_Data *group_item = NULL;
130 bool isFoundNotSelSomeone = FALSE;
131 bool isFoundSelSomeone = FALSE;
133 group_item = (Setting_GenGroupItem_Data *)
134 eina_list_data_get(check_list);
135 if (NULL == group_item) {
138 if (!(group_item->chk_status)) {
139 isFoundNotSelSomeone = TRUE;
142 isFoundSelSomeone = TRUE;
144 if (isFoundNotSelSomeone && isFoundSelSomeone) {
148 check_list = eina_list_next(check_list);
151 if (isFoundNotSelSomeone) {
152 g_main_ad->check_all_item->chk_status = 0; /* for update new state */
154 g_main_ad->check_all_item->chk_status = 1; /* for update new state */
156 elm_object_item_data_set(g_main_ad->check_all_item->item, g_main_ad->check_all_item);
157 elm_genlist_item_update(g_main_ad->check_all_item->item);
159 if (isFoundSelSomeone) {
160 /* SETTING_TRACE("Set it to active"); */
162 elm_object_item_disabled_set(elm_toolbar_last_item_get
163 (g_main_ad->controllbar_all_check),
170 __setting_chk_sel_all_changed(void *data, Evas_Object *obj, void *event_info)
172 /* SETTING_TRACE_BEGIN; */
173 retm_if(data == NULL, "Data parameter is NULL");
174 Setting_GenGroupItem_Data *list_item =
175 (Setting_GenGroupItem_Data *) data;
176 bool is_all_checked = elm_check_state_get(obj);
177 list_item->chk_status = is_all_checked; /* for update new state */
178 /* SETTING_TRACE("is_all_checked:%d", is_all_checked); */
180 Eina_List *check_list = g_main_ad->item_check_list;
183 list_item = (Setting_GenGroupItem_Data *)
184 eina_list_data_get(check_list);
185 if (NULL == list_item) {
188 list_item->chk_status = is_all_checked;
189 elm_object_item_data_set(list_item->item, list_item);
190 elm_genlist_item_update(list_item->item);
191 check_list = eina_list_next(check_list);
193 if (is_all_checked) {
195 elm_object_item_disabled_set(elm_toolbar_last_item_get
196 (g_main_ad->controllbar_all_check),
201 static void __setting_list_sel_all_changed(void *data, Evas_Object *obj,
207 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
208 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
209 elm_genlist_item_selected_set(item, 0);
210 Setting_GenGroupItem_Data *list_item =
211 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
213 int old_status = elm_check_state_get(list_item->eo_check);
215 int is_all_checked = list_item->chk_status = !old_status;
216 elm_check_state_set(list_item->eo_check, list_item->chk_status);
218 Eina_List *check_list = g_main_ad->item_check_list;
221 list_item = (Setting_GenGroupItem_Data *)
222 eina_list_data_get(check_list);
223 if (NULL == list_item) {
226 list_item->chk_status = is_all_checked;
227 /* elm_check_state_set(list_item->eo_check, is_all_checked); */
228 elm_object_item_data_set(list_item->item, list_item);
229 elm_genlist_item_update(list_item->item);
230 check_list = eina_list_next(check_list);
232 if (is_all_checked) {
234 elm_object_item_disabled_set(elm_toolbar_last_item_get
235 (g_main_ad->controllbar_all_check),
241 static void __load_check_list(void *data, Evas_Object **genlist,
245 setting_main_appdata *ad = (setting_main_appdata *) data;
249 Cfg_Item_Position pos = Cfg_Item_Pos_Uninstall;
250 bool isFoundNonSelItem = FALSE;
251 bool isFoundSelSomeoneItem = FALSE;
254 char *icon_path = NULL;
257 setting_create_Gendial_field_def(ad->gl_sel_all,
258 &(ad->itc[GENDIAL_Type_sel_all]),
259 __setting_list_sel_all_changed, ad,
260 SWALLOW_Type_1CHECK, NULL, NULL,
261 state, KeyStr_Select_All, NULL,
262 __setting_chk_sel_all_changed);
263 __BACK_POINTER_SET(ad->check_all_item);
265 Setting_GenGroupItem_Data *item = NULL;
266 Setting_GenGroupItem_Data *category_item = NULL;
267 for (i = 0; i < setting_cfg_get_category_length(); i++) {
268 if (NULL == menuNameKey) {
269 /* SETTING_TRACE("load all the items in config file"); */
272 (setting_cfg_get_category_name(i), menuNameKey)) {
275 char *category_name = setting_cfg_get_category_name(i);
278 setting_create_Gendial_field_group_titleItem(*genlist,
280 [GENDIAL_Type_group_item]),
282 ELM_GENLIST_ITEM_NONE,
286 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
287 keyStr = setting_cfg_get_keyname_idx(i, j);
288 pos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
290 if (Cfg_Item_Pos_Level1 == pos) {
292 isFoundNonSelItem = TRUE;
295 isFoundSelSomeoneItem = TRUE;
298 icon_path = setting_cfg_get_icon_path_idx(i, j);
300 setting_create_Gendial_field_groupitem(*genlist,
302 [GENDIAL_Type_1text_2icon_2]),
304 __setting_list_changed,
306 SWALLOW_Type_1CHECKICON,
311 __setting_chk_changed);
313 ad->item_check_list =
314 eina_list_append(ad->item_check_list, item);
317 SETTING_TRACE_ERROR("category_item is NULL");
321 if (ad->check_all_item) {
322 if (isFoundNonSelItem) {
323 ad->check_all_item->chk_status = 0; /* for update new state */
325 ad->check_all_item->chk_status = 1; /* for update new state */
327 elm_object_item_data_set(ad->check_all_item->item, ad->check_all_item);
328 elm_genlist_item_update(ad->check_all_item->item);
330 SETTING_TRACE_ERROR("ad->check_all_item is NULL");
333 if (isFoundSelSomeoneItem) {
334 /* elm_object_item_disabled_set(elm_toolbar_last_item_get
335 (ad->controllbar_all_check),
340 elm_object_item_disabled_set(elm_toolbar_last_item_get
341 (ad->controllbar_all_check),
348 static Setting_GenGroupItem_Data * __flightmode_handler(void* data, char* keyStr, char* icon_path, char* ug_name, Evas_Object *genlist)
350 // NOT UG --> it's just UI drawing
352 setting_main_appdata *ad = (setting_main_appdata *)data;
354 setting_get_bool_slp_key (BOOL_SLP_SETTING_FLIGHT_MODE, &value, &err);
356 /* create flight_mode */
357 ad->data_flight = setting_create_Gendial_field_groupitem(genlist,
358 &(ad->itc[GENDIAL_Type_1text_2icon]),
360 setting_main_click_Gendial_list_flight_mode_cb,
362 SWALLOW_Type_1ICON_1RADIO,
368 setting_main_click_list_flight_mode_cb);
369 __BACK_POINTER_SET(ad->data_flight);
371 return ad->data_flight;
374 static Setting_GenGroupItem_Data * __wifi_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
376 setting_main_appdata *ad = (setting_main_appdata *)data;
378 setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err);
380 //char* pa_wifi = get_pa_Wi_Fi_on_off_str();
381 ad->data_wifi = setting_create_Gendial_field_groupitem(genlist,
382 &(ad->itc[GENDIAL_Type_1text_2icon]),
384 setting_main_click_list_ex_ug_cb,
386 SWALLOW_Type_1ICON_1RADIO,
392 setting_main_click_list_wifi_mode_cb);
393 __BACK_POINTER_SET(ad->data_wifi);
395 ad->data_wifi->userdata = ad;
398 return ad->data_wifi;
401 static Setting_GenGroupItem_Data * __bluetooth_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
403 setting_main_appdata *ad = (setting_main_appdata *)data;
405 setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err);
407 ad->data_bt = setting_create_Gendial_field_groupitem(genlist,
408 &(ad->itc[GENDIAL_Type_1text_2icon]),
410 setting_main_click_list_ex_ug_cb,
412 SWALLOW_Type_1ICON_1RADIO,
418 setting_main_click_list_bt_mode_cb);
419 __BACK_POINTER_SET(ad->data_bt);
421 ad->data_bt->userdata = ad;
426 static Setting_GenGroupItem_Data * __allshare_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
428 setting_main_appdata *ad = (setting_main_appdata *)data;
430 Setting_GenGroupItem_Data * obj = setting_create_Gendial_field_groupitem(genlist,
431 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
433 setting_main_click_list_default_ug_cb,
435 SWALLOW_Type_INVALID,
444 static Setting_GenGroupItem_Data * __network_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
446 setting_main_appdata *ad = (setting_main_appdata *)data;
448 ad->data_network = setting_create_Gendial_field_groupitem(genlist,
449 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
451 setting_main_click_list_network_ug_cb,
453 SWALLOW_Type_INVALID,
460 return ad->data_network;
463 static Setting_GenGroupItem_Data * __nfc_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
465 setting_main_appdata *ad = (setting_main_appdata *)data;
468 setting_get_bool_slp_key(BOOL_SLP_SETTING_NFC_STATUS, &value, &err);
470 ad->data_nfc = setting_create_Gendial_field_groupitem(genlist,
471 &(ad->itc[GENDIAL_Type_1text_2icon]),
473 setting_main_click_list_ex_ug_cb,
475 SWALLOW_Type_1ICON_1RADIO,
481 setting_main_click_list_nfc_mode_cb);
482 __BACK_POINTER_SET(ad->data_nfc);
484 ad->data_nfc->userdata = ad;
487 setting_create_Gendial_field_def(genlist, &itc_multiline_text, NULL,
488 ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
489 NULL, NULL, 0, SETTING_NFC_DESC, NULL, NULL);
490 elm_genlist_item_select_mode_set(elm_genlist_item_append(genlist, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
491 ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
496 static Setting_GenGroupItem_Data * __default_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
498 setting_main_appdata *ad = (setting_main_appdata *)data;
499 Setting_GenGroupItem_Data * obj = setting_create_Gendial_field_groupitem(genlist,
500 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
502 setting_main_click_list_ex_ug_cb,
504 SWALLOW_Type_INVALID,
515 typedef struct mainlist_entry mainlist_entry;
517 struct mainlist_entry {
519 Setting_GenGroupItem_Data* (*ui_handler)(void* data, char* title, char* iconpath, char* ugname, Evas_Object *genlist);
524 MAINLIST_ENTRY_FLIGHT_MODE = 0,
527 MAINLIST_ENTRY_ALLSHARE,
528 MAINLIST_ENTRY_NETWORK,
530 MAINLIST_ENTRY_DEFAULT,
534 static mainlist_entry mainlist_table[] = {
535 {KeyStr_FlightMode, __flightmode_handler}, // 0 --> NOT UG
536 {KeyStr_WiFi, __wifi_handler}, // 1 --> UG
537 {KeyStr_Bluetooth, __bluetooth_handler}, // 1 --> UG
538 {KeyStr_AllShare, __allshare_handler}, // NOT UG
539 {KeyStr_Network, __network_handler}, // 1 --> UG
540 {KeyStr_NFC, __nfc_handler}, // 1 --> UG
541 {"Default", __default_handler}, // 1 --> UG
543 //--------------------------------------------------------------
548 void __gl_realized(void *data, Evas_Object *obj, void *event_info)
550 //SETTING_TRACE_BEGIN;
551 setting_retm_if(data == NULL, "invalid parameter: data is NULL");
552 setting_retm_if(event_info == NULL, "invalid parameter: event_info is NULL");
553 setting_main_appdata *ad = (setting_main_appdata *)data;
554 Elm_Object_Item *item = (Elm_Object_Item *)event_info;
555 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)elm_object_item_data_get(item);
557 //setting_retm_if(list_item == NULL, "list_item is NULL");
560 if (list_item->group_style == SETTING_GROUP_STYLE_TOP) {
561 elm_object_item_signal_emit(item, "elm,state,top", "");
562 } else if (list_item->group_style == SETTING_GROUP_STYLE_BOTTOM) {
563 elm_object_item_signal_emit(item, "elm,state,bottom", "");
564 } else if (list_item->group_style == SETTING_GROUP_STYLE_CENTER) {
565 elm_object_item_signal_emit(item, "elm,state,center", "");
566 } else if (list_item->group_style == SETTING_GROUP_STYLE_NONE) {
569 SETTING_TRACE_ERROR("list_item->group_style is wrong");
572 /* item is used for description */
573 elm_object_item_signal_emit(item, "elm,state,center", "");
577 // Flight Mode - not UG
578 // All share - not UG
579 // WiFi - added toggle
585 void __load_connectivity_menu_list(void *data, Cfg_Item_Position inputPos, Evas_Object *genlist)
588 setting_main_appdata *ad = data;
589 //group title, only display in setting main view
590 if (SETTING_VIEW_MAIN == ad->view_load) {
591 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
592 &(ad->itc[GENDIAL_Type_group_item]),
594 ELM_GENLIST_ITEM_NONE,
595 KeyStr_Connectivity, NULL);
598 int idx_second_menu = 0;
601 char *icon_path = NULL;
602 char *ug_args = NULL;
603 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
606 bool is_emulator = isEmulBin();
608 Setting_GenGroupItem_Data *item_data = NULL;
611 for (i = 0; i < setting_cfg_get_category_length(); i++) {
613 (setting_cfg_get_category_name(i), KeyStr_Connectivity))
616 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
617 keyStr = setting_cfg_get_keyname_idx(i, j);
618 tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
619 ug_args = setting_cfg_get_ug_args_idx(i, j);
620 icon_path = setting_cfg_get_icon_path_idx(i, j);
621 /* SETTING_TRACE_DEBUG("Got an item[keyStr:%s, ug_args:%s, pos:%d]", */
622 /* keyStr, ug_args, tmpPos); */
625 if (!safeStrCmp(KeyStr_FlightMode, keyStr)) {
626 continue; /* hide Flight Mode in Emulator*/
627 } else if (!safeStrCmp(KeyStr_WiFi, keyStr)) {
628 continue; /* hide WIFI in Emulator*/
629 } else if (!safeStrCmp(KeyStr_WiFiDirect, keyStr)) {
630 continue; /* hide WiFiDirect in Emulator*/
631 } else if (!safeStrCmp(KeyStr_Network, keyStr)) {
632 continue; /* hide Network in Emulator*/
633 } else if (!safeStrCmp(KeyStr_Bluetooth, keyStr)) {
634 continue; /* hide Bluetooth in Emulator*/
635 } else if (!safeStrCmp(KeyStr_MobileAP, keyStr)) {
636 continue; /* hide Tethering in Emulator*/
642 if (idx_second_menu < MAX_MORE_MENU_NUM
643 && Cfg_Item_Pos_Level1 == tmpPos
644 && SETTING_VIEW_MAIN == ad->view_load
645 && MAIN_PROFILE_PREFERRED == ad->profile_type) {
647 if (is_ug_installed_by_ug_args(ug_args)) {
648 ad->more_connective_menus[idx_second_menu++] = keyStr;
652 if (Cfg_Item_Pos_Level_All == inputPos) {
653 } else if (inputPos != tmpPos) { /* not in the inputPos level */
657 if (!safeStrCmp(KeyStr_FlightMode, keyStr)) { /* load special radio */
659 item_data = mainlist_table[MAINLIST_ENTRY_FLIGHT_MODE].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
661 } else if (!safeStrCmp(KeyStr_AllShare, keyStr)) { /* NOT UG */
663 item_data = mainlist_table[MAINLIST_ENTRY_ALLSHARE].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
665 } else if (!safeStrCmp(KeyStr_WiFi, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
667 item_data = mainlist_table[MAINLIST_ENTRY_WIFI].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
669 } else if (!safeStrCmp(KeyStr_Bluetooth, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
671 item_data = mainlist_table[MAINLIST_ENTRY_BT].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
675 else if (!safeStrCmp(KeyStr_MobileAP, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
677 item_data = mainlist_table[MAINLIST_ENTRY_MOBILEAP].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
681 else if (!safeStrCmp(KeyStr_Network, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special UG */
683 item_data = mainlist_table[MAINLIST_ENTRY_NETWORK].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
685 } else if (!safeStrCmp(KeyStr_NFC, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
686 int nfc_value = FALSE; //default
687 vconf_get_bool(VCONFKEY_NFC_FEATURE, &nfc_value);
688 if (VCONFKEY_NFC_FEATURE_ON == nfc_value)
690 item_data = mainlist_table[MAINLIST_ENTRY_NFC].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
692 } else { /* load other UGs */
693 if (is_ug_installed_by_ug_args(ug_args))
695 item_data = mainlist_table[MAINLIST_ENTRY_DEFAULT].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
701 item_data->group_style = SETTING_GROUP_STYLE_TOP;
702 } else if (j == setting_cfg_get_menu_length(i) - 1) {
703 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
705 item_data->group_style = SETTING_GROUP_STYLE_CENTER;
709 item_data->group_style = SETTING_GROUP_STYLE_TOP;
716 //end group , only display in setting main view
717 #if SUPPORT_MORE_ITEM_FUNCTION
718 if (SETTING_VIEW_MAIN == ad->view_load && MAIN_PROFILE_PREFERRED == ad->profile_type && idx_second_menu > 0)
720 char sub_text[MAX_COMMON_BUFFER_LEN] = {0, };
722 while (idx < MAX_MORE_MENU_NUM && ad->more_connective_menus[idx])
726 safeStrNCat(sub_text, ", ", MAX_COMMON_BUFFER_LEN);
728 safeStrNCat(sub_text, _(ad->more_connective_menus[idx]), MAX_COMMON_BUFFER_LEN);
732 ad->data_moreConnect =
733 setting_create_Gendial_field_groupitem(ad->main_genlist,
734 &(ad->itc[GENDIAL_Type_2text_3]),
736 setting_main_click_list_more_cb,
738 SWALLOW_Type_INVALID,
745 __BACK_POINTER_SET(ad->data_moreConnect);
747 /* if has <more ..> item , change the last item_date to SETTING_GROUP_STYLE_CENTER*/
748 if (item_data && index > 1) {
749 item_data->group_style = SETTING_GROUP_STYLE_CENTER;
751 ad->data_moreConnect->group_style = SETTING_GROUP_STYLE_BOTTOM;
753 item_data = ad->data_moreConnect;
759 item_data->group_style = SETTING_GROUP_STYLE_NONE;
760 } else if (index == 2) {
761 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
766 void __load_connectivity_level0_list(void *data)
768 setting_main_appdata *ad = data;
769 __load_connectivity_menu_list(ad, Cfg_Item_Pos_Level0, ad->main_genlist);
772 void __load_connectivity_level_all_list(void *data)
775 setting_main_appdata *ad = data;
776 __load_connectivity_menu_list(ad, Cfg_Item_Pos_Level_All, ad->main_genlist);
779 void __load_system_menu_list(void *data, Cfg_Item_Position inputPos, Evas_Object *genlist)
782 SETTING_TRACE_DEBUG("pos :%d", inputPos);
783 setting_main_appdata *ad = data;
784 //group title, only display in setting main view
785 if (SETTING_VIEW_MAIN == ad->view_load) {
786 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
787 &(ad->itc[GENDIAL_Type_group_item]),
789 ELM_GENLIST_ITEM_NONE,
790 KeyStr_System, NULL);
792 int idx_second_menu = 0;
795 char *icon_path = NULL;
796 char *ug_args = NULL;
798 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
803 bool is_emulator = isEmulBin();
805 Setting_GenGroupItem_Data *item_data = NULL;
808 //SETTING_TRACE("setting_cfg_get_category_length() :: %d ", setting_cfg_get_category_length());
809 for (i = 0; i < setting_cfg_get_category_length(); i++) {
810 if (safeStrCmp(setting_cfg_get_category_name(i), KeyStr_System))
813 //SETTING_TRACE(" setting_cfg_get_menu_length(%d) :: %d ",i, setting_cfg_get_menu_length(i) );
814 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
815 keyStr = setting_cfg_get_keyname_idx(i, j);
816 /* sg_path = setting_cfg_get_ugpath_idx(i, j); */
817 tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
818 icon_path = setting_cfg_get_icon_path_idx(i, j);
819 ug_args = setting_cfg_get_ug_args_idx(i, j);
821 //SETTING_TRACE("KeyString : %s , tmpPos : %d , inputPos : %d ", keyStr, tmpPos, inputPos );
824 if (!safeStrCmp(KeyStr_Security, keyStr)) {
825 continue; /* hide Security in Emulator*/
826 } else if (!safeStrCmp(KeyStr_Memory, keyStr)) {
827 continue; /* hide Memory in Emulator*/
828 } else if (!safeStrCmp(KeyStr_Powersaving, keyStr)) {
829 continue; /* hide Powersaving in Emulator*/
830 } else if (!safeStrCmp(KeyStr_FlightMode, keyStr)) {
831 continue; /* hide Powersaving in Emulator*/
837 if (idx_second_menu < MAX_MORE_MENU_NUM
838 && Cfg_Item_Pos_Level1 == tmpPos
839 && SETTING_VIEW_MAIN == ad->view_load
840 && MAIN_PROFILE_PREFERRED == ad->profile_type) {
842 if (is_ug_installed_by_ug_args(ug_args)) {
843 ad->more_system_menus[idx_second_menu++] = keyStr;
847 if (Cfg_Item_Pos_Level_All == inputPos) {
849 //SETTING_TRACE("Cfg_Item_Pos_Level_All == inputPos ---> no draw --- WHY?? ");
850 } else if (inputPos != tmpPos) { /* not in the inputPos level */
851 //SETTING_TRACE("inputPos == tmp Pos ---> no draw --- WHY?? ");
855 if (!safeStrCmp(KeyStr_FlightMode, keyStr)) { /* load special radio */
857 item_data = mainlist_table[MAINLIST_ENTRY_FLIGHT_MODE].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
860 else if (!safeStrCmp(KeyStr_Landscape, keyStr)) { /* load special UG */
863 (VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, &value);
865 ad->data_rotationMode =
866 setting_create_Gendial_field_groupitem(genlist,
867 &(ad->itc[GENDIAL_Type_1text_2icon]),
869 setting_main_sel_list_mouse_up_cb,
871 SWALLOW_Type_1ICON_1RADIO,
877 setting_main_list_mouse_up_cb);
878 __BACK_POINTER_SET(ad->data_rotationMode);
879 item_data = ad->data_rotationMode;
881 else if (!safeStrCmp(KeyStr_Brightness, keyStr)) {
883 char* pa_bright = get_brightness_mode_str();
885 setting_create_Gendial_field_groupitem(genlist,
886 &(ad->itc[GENDIAL_Type_1icon_2text]),
888 setting_main_click_list_ex_ug_cb,
890 SWALLOW_Type_INVALID,
897 __BACK_POINTER_SET(ad->data_bright);
898 item_data = ad->data_bright;
901 else { /* load other UGs */
902 item_data = setting_create_Gendial_field_groupitem(genlist,
903 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
905 setting_main_click_list_ex_ug_cb,
907 SWALLOW_Type_INVALID,
918 item_data->group_style = SETTING_GROUP_STYLE_TOP;
919 } else if (j == setting_cfg_get_menu_length(i) - 1) {
920 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
922 item_data->group_style = SETTING_GROUP_STYLE_CENTER;
926 item_data->group_style = SETTING_GROUP_STYLE_TOP;
932 //end group, only display in setting main view
933 #if SUPPORT_MORE_ITEM_FUNCTION
934 if (SETTING_VIEW_MAIN == ad->view_load && MAIN_PROFILE_PREFERRED == ad->profile_type && idx_second_menu > 0)
936 char sub_text[MAX_COMMON_BUFFER_LEN] = {0, };
938 while (idx < MAX_MORE_MENU_NUM && ad->more_system_menus[idx])
942 safeStrNCat(sub_text, ", ", MAX_COMMON_BUFFER_LEN);
944 safeStrNCat(sub_text, _(ad->more_system_menus[idx]), MAX_COMMON_BUFFER_LEN);
948 ad->data_moreSystem =
949 setting_create_Gendial_field_groupitem(ad->main_genlist,
950 &(ad->itc[GENDIAL_Type_2text_3]),
952 setting_main_click_list_more_cb,
954 SWALLOW_Type_INVALID,
961 __BACK_POINTER_SET(ad->data_moreSystem);
963 /* if has <more ..> item , change the last item_date to SETTING_GROUP_STYLE_CENTER*/
964 if (item_data && index > 1) {
965 item_data->group_style = SETTING_GROUP_STYLE_CENTER;
967 ad->data_moreSystem->group_style = SETTING_GROUP_STYLE_BOTTOM;
969 item_data = ad->data_moreSystem;
974 item_data->group_style = SETTING_GROUP_STYLE_NONE;
975 } else if (index == 2) {
976 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
980 static void __load_system_level0_list(void *data)
982 setting_main_appdata *ad = data;
983 __load_system_menu_list(ad, Cfg_Item_Pos_Level0, ad->main_genlist);
986 static void __load_system_level_all_list(void *data)
989 setting_main_appdata *ad = data;
990 __load_system_menu_list(ad, Cfg_Item_Pos_Level_All, ad->main_genlist);
993 static void __load_applications_menu_list(void *data,
994 Cfg_Item_Position inputPos)
997 SETTING_TRACE_DEBUG("pos :%d", inputPos);
998 setting_main_appdata *ad = data;
1000 bool is_emulator = isEmulBin();
1003 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
1004 &(ad->itc[GENDIAL_Type_group_item]),
1006 ELM_GENLIST_ITEM_NONE,
1007 KeyStr_Applications, NULL);
1008 char *keyStr = NULL;
1009 char *icon_path = NULL;
1010 char *ug_args = NULL;
1011 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
1014 Setting_GenGroupItem_Data *item_data = NULL;
1016 for (i = 0; i < setting_cfg_get_category_length(); i++) {
1018 (setting_cfg_get_category_name(i), KeyStr_Applications))
1021 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
1022 keyStr = setting_cfg_get_keyname_idx(i, j);
1023 icon_path = setting_cfg_get_icon_path_idx(i, j);
1024 ug_args = setting_cfg_get_ug_args_idx(i, j);
1026 (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
1028 if (Cfg_Item_Pos_Level_All == inputPos) {
1029 } else if (inputPos != tmpPos) { /* not in the inputPos level */
1034 /* hide all except Email */
1035 if (safeStrCmp(KeyStr_Email, keyStr)) {
1042 item_data = setting_create_Gendial_field_groupitem(ad->main_genlist,
1043 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1045 setting_main_click_list_ex_ug_cb,
1047 SWALLOW_Type_INVALID,
1054 item_data->group_style = SETTING_GROUP_STYLE_TOP;
1055 } else if (j == setting_cfg_get_menu_length(i) - 1) {
1056 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
1058 item_data->group_style = SETTING_GROUP_STYLE_CENTER;
1062 item_data->group_style = SETTING_GROUP_STYLE_TOP;
1070 item_data->group_style = SETTING_GROUP_STYLE_NONE;
1071 } else if (index == 2) {
1072 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
1078 static void __load_applications_level0_list(void *data)
1080 setting_main_appdata *ad = data;
1081 __load_applications_menu_list(ad, Cfg_Item_Pos_Level0);
1084 static void __load_applications_level_all_list(void *data)
1086 SETTING_TRACE_BEGIN;
1087 setting_main_appdata *ad = data;
1088 __load_applications_menu_list(ad, Cfg_Item_Pos_Level_All);
1092 bool is_3rdapp_installed_setting_cfg(char* pkgname)
1094 SETTING_TRACE_BEGIN;
1098 if (snprintf(path, 512, PLUGIN_PREFIX"/apps/%s/setting/setting.xml", pkgname) < 0)
1102 bool result_opt = false;
1104 if(stat(path, &st) == 0) {
1107 SETTING_TRACE_ERROR(" %s is *NOT* present\n", path);
1116 * ex) name : AppSetting4
1117 * ex) pkgname : UBKFwQidax.AppSetting4
1119 static void draw_3rdapp(void* data, char* name, char* pkgname)
1121 SETTING_TRACE_BEGIN;
1122 SETTING_TRACE(" name : %s", name);
1123 SETTING_TRACE(" pkgname : %s", pkgname);
1125 setting_main_appdata *ad = data;
1129 if (snprintf(fullpath, 512, PLUGIN_PREFIX"/apps/%s/setting/setting.xml", pkgname) < 0)
1132 SETTING_TRACE(" fullpath : %s", fullpath);
1136 char* plugin_path = strdup(fullpath);
1137 Setting_GenGroupItem_Data * plugin_node = setting_create_Gendial_field_groupitem(ad->main_genlist,
1138 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1140 setting_main_click_list_plugin_cb,
1142 SWALLOW_Type_INVALID,
1143 IMG_DefaultIcon, NULL,
1144 0, name, plugin_path, // <<-- refactoring
1154 static ail_cb_ret_e __download_apps_cb(ail_appinfo_h ai, void* data)
1156 DrawAppInfo* pinfo = (DrawAppInfo*)data;
1159 if (AIL_ERROR_OK == ail_appinfo_get_str(ai, AIL_PROP_PACKAGE_STR, &id))
1161 SETTING_TRACE(" 3rd party - app name : ----> %s ", id);
1164 ail_appinfo_h handle;
1169 bool nodisplay = false;
1170 bool removable = true;
1172 if (AIL_ERROR_OK == ail_package_get_appinfo(id, &handle))
1174 if (AIL_ERROR_OK != ail_appinfo_get_str(handle, AIL_PROP_NAME_STR, &name))
1175 SETTING_TRACE("cannot get name");
1177 if (AIL_ERROR_OK != ail_appinfo_get_str(handle, AIL_PROP_ICON_STR, &icon))
1178 SETTING_TRACE("cannot get icon");
1180 if (AIL_ERROR_OK != ail_appinfo_get_bool(handle, AIL_PROP_NODISPLAY_BOOL, &nodisplay))
1181 SETTING_TRACE("cannot get nodisplay");
1183 if (AIL_ERROR_OK != ail_appinfo_get_bool(handle, AIL_PROP_X_SLP_REMOVABLE_BOOL, &removable))
1184 SETTING_TRACE("cannot get removable");
1186 if (AIL_ERROR_OK != ail_appinfo_get_int(handle, AIL_PROP_X_SLP_INSTALLEDTIME_INT, &installed_time))
1187 SETTING_TRACE("cannot get installed_time");
1189 //SETTING_TRACE("installed_time = %d ", installed_time);
1190 if (installed_time != 0 && is_3rdapp_installed_setting_cfg(id) == true )
1192 SETTING_TRACE(" 3rd party - app name : ----> id : %s --- name : %s ", id, name);
1193 SETTING_TRACE(" 3rd party - icon : ----> %s ", icon);
1194 SETTING_TRACE(" 3rd party - nodisplay : ----> %d ", nodisplay);
1198 if (pinfo->draw_app != NULL)
1200 SETTING_TRACE(">>> pkg name --> %s ", id);
1201 pinfo->draw_app(pinfo->data, strdup(name)/* appname*/, strdup(id)/* pkg_name*/);
1206 return AIL_CB_RET_CONTINUE;
1211 * get 3rd party applist from AIL & searching dir/file by the defined rule
1213 * if data is NULL --> just get how many items are there
1214 * if data is NOT NULL --> draw UI code
1216 static int get_downloadapp_list(void* data)
1218 SETTING_TRACE_BEGIN;
1220 setting_main_appdata *ad = data;
1225 DrawAppInfo* pinfo = (DrawAppInfo*)malloc(sizeof(DrawAppInfo));
1229 pinfo->draw_app = draw_3rdapp;
1232 if (ail_filter_new(&f) == AIL_ERROR_OK)
1234 if (ail_filter_add_bool(f, AIL_PROP_NODISPLAY_BOOL, false) != AIL_ERROR_OK)
1236 SETTING_TRACE("ail filter error");
1241 ail_filter_destroy(f);
1245 ail_filter_list_appinfo_foreach(f, __download_apps_cb, pinfo);
1246 //---------------------------------------------------------------
1247 ail_filter_destroy(f);
1249 ncount = pinfo->ncount;
1259 static int __get_downloaded_apps_num(Cfg_Item_Position inputPos)
1261 SETTING_TRACE_BEGIN;
1262 SETTING_TRACE_DEBUG("pos :%d", inputPos);
1263 int downloaded_apps_num = 0;
1264 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
1266 for (i = 0; i < setting_cfg_get_category_length(); i++) {
1268 (setting_cfg_get_category_name(i), KeyStr_DownloadedAPPs))
1271 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
1272 tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
1273 if (Cfg_Item_Pos_Level_All == inputPos) {
1274 } else if (inputPos != tmpPos) { /* not in the inputPos level */
1278 downloaded_apps_num++;
1282 // draw UI with AUL code
1284 downloaded_apps_num = get_downloadapp_list(NULL);
1285 SETTING_TRACE("Exit %s with return[%d]",__FUNCTION__, downloaded_apps_num);
1288 SETTING_TRACE("Exit %s with return[%d]",__FUNCTION__, downloaded_apps_num);
1289 return downloaded_apps_num;
1293 static void __load_downloaded_apps_menu_list(void *data,
1294 Cfg_Item_Position inputPos)
1296 SETTING_TRACE_BEGIN;
1297 SETTING_TRACE_DEBUG("pos :%d", inputPos);
1298 setting_main_appdata *ad = data;
1300 // if the number of download apps is zero, display a bottom seperator
1301 if (0 == __get_downloaded_apps_num(inputPos)) {
1302 Elm_Object_Item *item = NULL;
1303 item = elm_genlist_item_append(ad->main_genlist, &itc_bottom_seperator, NULL, NULL,
1304 ELM_GENLIST_ITEM_NONE, NULL, NULL);
1305 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1310 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
1311 &(ad->itc[GENDIAL_Type_group_item]),
1313 ELM_GENLIST_ITEM_NONE,
1314 KeyStr_DownloadedAPPs,
1316 get_downloadapp_list(ad);
1317 //SETTING_TRACE("Exit %s with return[%d]",__FUNCTION__, downloaded_apps_num);
1321 static void __load_downloaded_apps_level0_list(void *data)
1323 setting_main_appdata *ad = data;
1324 __load_downloaded_apps_menu_list(ad, Cfg_Item_Pos_Level0);
1327 static void __load_downloaded_apps_level_all_list(void *data)
1329 SETTING_TRACE_BEGIN;
1330 setting_main_appdata *ad = data;
1331 __load_downloaded_apps_menu_list(ad, Cfg_Item_Pos_Level_All);
1334 static void __check_all_view_clear(void *data)
1336 SETTING_TRACE_BEGIN;
1338 setting_main_appdata *ad = data;
1339 if (ad->item_check_list) {
1340 eina_list_free(ad->item_check_list);
1341 ad->item_check_list = NULL;
1344 ad->gl_sel_all = NULL;
1345 ad->edit_preferred_genlist = NULL;
1346 //ad->controllbar_all_check = NULL;
1347 ad->check_all_item =NULL;
1350 static void __prefered_buttons_cb(void *data, Evas_Object *obj, void *event_info)
1352 SETTING_TRACE_BEGIN;
1354 setting_main_appdata *ad = (setting_main_appdata *) data;
1355 const char *key = NULL;
1357 key = elm_object_text_get(obj);
1358 setting_retm_if(data == NULL
1359 || key == NULL, "data == NULL || key == NULL");
1361 SETTING_TRACE_DEBUG("press button: %s", key);
1364 if (!safeStrCmp(key, dgettext("sys_string", "IDS_COM_SK_DONE"))) {
1366 if (ad->profile_type == MAIN_PROFILE_ALL) {
1367 SETTING_TRACE_DEBUG("Cancel to hide current view.");
1368 setting_try_save_check_list(ad); /* need to save too */
1369 __check_all_view_clear(ad);
1370 elm_naviframe_item_pop(ad->navibar_main); // pop(preferred) --> main
1374 // MAIN_PROFILE_PREFERRED and Etc
1375 // redraw setting-main
1376 setting_try_save_check_list(ad);
1377 elm_naviframe_item_pop(ad->navibar_main); // pop (preferred) -> main
1379 //After the view is popuped, all the object handlers should be reset NULL.
1380 __check_all_view_clear(ad);
1381 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1382 ad->load_fns[Func_Type_System] = __load_system_level0_list;
1383 ad->load_fns[Func_Type_Apps] = __load_applications_level0_list;
1384 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level0_list;
1385 int ret = setting_main_refresh(ad);
1386 ret_if(ret != SETTING_RETURN_SUCCESS);
1391 if (!safeStrCmp(key, setting_gettext("IDS_COM_SK_CANCEL"))
1392 || !safeStrCmp(key, dgettext("sys_string", "IDS_COM_BODY_BACK"))) {
1393 SETTING_TRACE_DEBUG("Cancel to hide current view.");
1394 elm_naviframe_item_pop(ad->navibar_main);
1395 //After the view is popuped, all the object handlers should be reset NULL.
1396 __check_all_view_clear(ad);
1402 static void __btnback_clicked_cb(void *data, Evas_Object *obj, void *event_info)
1404 SETTING_TRACE_BEGIN;
1406 setting_main_appdata *ad = (setting_main_appdata *) data;
1407 elm_win_lower(ad->win_main);
1410 static Eina_Bool __refresh_on_idle(void *data)
1412 SETTING_TRACE_BEGIN;
1413 retv_if(!data, FALSE);
1414 setting_main_appdata *ad = data;
1415 if (MAIN_PROFILE_ALL == ad->profile_type)
1417 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level_all_list;
1418 ad->load_fns[Func_Type_System] = __load_system_level_all_list;
1419 ad->load_fns[Func_Type_Apps] = __load_applications_level_all_list;
1420 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level_all_list;
1421 setting_main_refresh(ad);
1423 else if (MAIN_PROFILE_PREFERRED == ad->profile_type)
1425 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1426 ad->load_fns[Func_Type_System] = __load_system_level0_list;
1427 ad->load_fns[Func_Type_Apps] = __load_applications_level0_list;
1428 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level0_list;
1429 setting_main_refresh(ad);
1431 ad->refresh_idler = NULL;
1435 static void __allFrequent_btn_cb(void *data, Evas_Object *obj, void *event_info)
1437 SETTING_TRACE_BEGIN;
1438 ret_if(!data || !obj);
1439 setting_main_appdata *ad = (setting_main_appdata *) data;
1440 //if already has the task,cancel the old task with ecore_idler_del,then add new idler task.
1441 if (ad->refresh_idler) {
1442 ecore_idler_del(ad->refresh_idler);
1443 ad->refresh_idler = NULL;
1446 //Elm_Object_Item *item = elm_toolbar_first_item_get(obj);
1448 if (MAIN_PROFILE_ALL == ad->profile_type)
1450 SETTING_TRACE("Change to Preferred view");
1451 elm_object_text_set(obj, _(ALL_STR));
1452 ad->profile_type = MAIN_PROFILE_PREFERRED;
1454 else if (MAIN_PROFILE_PREFERRED == ad->profile_type)
1456 SETTING_TRACE("Change to ALL view");
1457 elm_object_text_set(obj, _(PREFERRED_STR));
1458 ad->profile_type = MAIN_PROFILE_ALL;
1464 ad->refresh_idler = ecore_idler_add((Ecore_Task_Cb) __refresh_on_idle, ad);
1467 static void __setting_show_title_toolbar(void *data, Evas_Object *obj, void *event_info)
1469 SETTING_TRACE_BEGIN;
1470 //elm_object_item_signal_emit(data, "elm,state,sip,shown", "");
1471 setting_main_appdata *ad = (setting_main_appdata *) data;
1473 Evas_Object *navi_bar = NULL;
1475 if (ad->isInUGMode && ad->ug) {
1476 Evas_Object *layout = (Evas_Object *)ug_get_layout(ad->ug);
1478 navi_bar = elm_object_part_content_get(layout, "elm.swallow.content");
1480 navi_bar = ad->navibar_main;
1483 const char *support = evas_object_data_get(navi_bar, "sip.naviframe.title_obj");
1484 SETTING_TRACE("support:%s", support);
1487 Elm_Object_Item *top_item = elm_naviframe_top_item_get(navi_bar);
1489 elm_object_item_signal_emit(top_item, "elm,state,sip,shown", "");
1493 static void __setting_hide_title_toolbar(void *data, Evas_Object *obj, void *event_info)
1495 SETTING_TRACE_BEGIN;
1496 //elm_object_item_signal_emit(data, "elm,state,sip,hidden", "");
1497 setting_main_appdata *ad = (setting_main_appdata *) data;
1499 Evas_Object *navi_bar = NULL;
1501 if (ad->isInUGMode && ad->ug) {
1502 Evas_Object *layout = (Evas_Object *)ug_get_layout(ad->ug);
1504 navi_bar = elm_object_part_content_get(layout, "elm.swallow.content");
1506 navi_bar = ad->navibar_main;
1509 const char *support = evas_object_data_get(navi_bar, "sip.naviframe.title_obj");
1511 SETTING_TRACE("support:%s", support);
1514 Elm_Object_Item *top_item = elm_naviframe_top_item_get(navi_bar);
1516 elm_object_item_signal_emit(top_item, "elm,state,sip,hidden", "");
1520 static bool __setting_create_main_view(void *data)
1522 SETTING_TRACE_BEGIN;
1524 setting_retvm_if(data == NULL, FALSE, "data == NULL");
1525 setting_main_appdata *ad = (setting_main_appdata *) data;
1527 Evas_Object *conform = elm_conformant_add(ad->win_main);
1528 ad->ly_main = setting_create_win_layout(ad->win_main, ad->win_main);
1529 evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1530 evas_object_size_hint_align_set(conform, EVAS_HINT_FILL, EVAS_HINT_FILL);
1531 elm_win_resize_object_add(ad->win_main, conform);
1532 elm_object_content_set(conform, ad->ly_main);
1533 evas_object_show(conform);
1535 evas_object_smart_callback_add(conform, "virtualkeypad,state,on", __setting_show_title_toolbar, ad);
1536 evas_object_smart_callback_add(conform, "virtualkeypad,state,off", __setting_hide_title_toolbar, ad);
1538 elm_win_conformant_set(ad->win_main, EINA_TRUE);
1540 ad->conform = conform;
1542 ad->navibar_main = setting_create_navi_bar(ad->ly_main);
1544 ad->main_genlist = elm_genlist_add(ad->navibar_main);
1545 elm_object_style_set(ad->main_genlist, "dialogue");
1546 retvm_if(ad->main_genlist == NULL, FALSE,
1547 "Cannot set scroller object as contento of layout");
1549 //elm_genlist_homogeneous_set(ad->main_genlist, EINA_TRUE);
1550 elm_genlist_clear(ad->main_genlist); /* first to clear list */
1551 evas_object_smart_callback_add(ad->main_genlist, "realized", __gl_realized, ad);
1553 setting_create_navi_bar_buttons(_("IDS_COM_BODY_SETTINGS"),
1554 _("IDS_COM_BODY_BACK"), NULL, _("IDS_ST_OPT_ALL"),
1555 __btnback_clicked_cb, NULL,
1556 __allFrequent_btn_cb, ad, ad->main_genlist,
1557 ad->navibar_main, NULL);
1559 ad->profile_type = MAIN_PROFILE_PREFERRED;
1560 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1561 ad->load_fns[Func_Type_System] = __load_system_level0_list;
1562 ad->load_fns[Func_Type_Apps] = __load_applications_level_all_list;
1563 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level_all_list;
1564 setting_main_refresh(ad);
1568 static bool __setting_create_prefered_view(void *data)
1570 SETTING_TRACE_BEGIN;
1572 setting_retvm_if(data == NULL, FALSE, "data == NULL");
1573 setting_main_appdata *ad = (setting_main_appdata *) data;
1575 /* the genlist will be destroyed with its parent view, when using elm_naviframe_item_pop() to destroy the view. */
1576 ad->edit_preferred_genlist = elm_genlist_add(ad->win_main);
1577 elm_object_style_set(ad->edit_preferred_genlist, "dialogue");
1578 elm_genlist_clear(ad->edit_preferred_genlist); /* first to clear list */
1580 /* [UI] edit preffered view */
1581 Evas_Object *sub_layout = elm_layout_add(ad->win_main);
1582 elm_object_style_set(sub_layout, "dialogue");
1583 elm_layout_file_set(sub_layout, SETTING_THEME_EDJ_NAME, "search_layout");
1584 evas_object_size_hint_weight_set(sub_layout, EVAS_HINT_EXPAND, 0.0);
1585 evas_object_show(sub_layout);
1587 ad->gl_sel_all = elm_genlist_add(ad->win_main);
1588 elm_genlist_clear(ad->gl_sel_all); /* first to clear list */
1589 elm_genlist_bounce_set(ad->gl_sel_all, 0, 0);
1591 elm_object_part_content_set(sub_layout, "search_bar", ad->gl_sel_all); /* add 'Select all' */
1592 elm_object_part_content_set(sub_layout, "search_list", ad->edit_preferred_genlist); /* add Genlist */
1594 /* push, not create */
1595 setting_push_layout_navi_bar(_(EDIT_PREFERRED_STR),
1596 _("IDS_COM_SK_CANCEL"),
1597 _("IDS_COM_SK_DONE"), NULL,
1598 __prefered_buttons_cb, __prefered_buttons_cb, NULL, ad,
1599 sub_layout, ad->navibar_main,
1605 static void setting_main_tapi_event_cb(TapiHandle *handle, int result, void *data, void *user_data)
1607 SETTING_TRACE_BEGIN;
1609 setting_main_appdata *ad = user_data;
1610 ad->b_fm_requesting = FALSE;
1611 SETTING_TRACE("result:%d", result);
1615 case TAPI_POWER_FLIGHT_MODE_RESP_ON:
1617 setting_set_bool_slp_key(BOOL_SLP_SETTING_FLIGHT_MODE,
1618 SETTING_ON_OFF_BTN_ON, &err);
1620 //If Setting has validate operation (fm_waiting_op == FM_LEAVE) to process, process it.
1621 //Otherwise, do nothing
1622 if (FM_LEAVE == ad->fm_waiting_op)
1624 //Send the latest operation
1625 ad->fm_waiting_op = FM_INVALID;
1626 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
1627 setting_retm_if(err != TAPI_API_SUCCESS,
1628 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
1631 ad->b_fm_requesting = TRUE;
1636 case TAPI_POWER_FLIGHT_MODE_RESP_OFF:
1638 setting_set_bool_slp_key(BOOL_SLP_SETTING_FLIGHT_MODE,
1639 SETTING_ON_OFF_BTN_OFF, &err);
1641 //If Setting has validate operation (here, fm_waiting_op == FM_ENTER) to process,process it.
1642 //Otherwise, do nothing
1643 if (FM_ENTER == ad->fm_waiting_op)
1645 //Send the latest operation
1646 ad->fm_waiting_op = FM_INVALID;
1647 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
1648 setting_retm_if(err != TAPI_API_SUCCESS,
1649 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
1652 ad->b_fm_requesting = TRUE;
1657 case TAPI_POWER_FLIGHT_MODE_RESP_FAIL:
1658 //Setting has a validate operation to process, Send the operation request
1659 if (FM_ENTER == ad->fm_waiting_op)
1661 ad->fm_waiting_op = FM_INVALID;
1662 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
1664 setting_retm_if(err != TAPI_API_SUCCESS,
1665 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
1666 ad->b_fm_requesting = TRUE;
1668 else if (FM_LEAVE == ad->fm_waiting_op)
1670 ad->fm_waiting_op = FM_INVALID;
1671 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
1673 setting_retm_if(err != TAPI_API_SUCCESS,
1674 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
1675 ad->b_fm_requesting = TRUE;
1677 else //Current requset is the last one, Setting needs to notify user
1679 setting_create_popup_without_btn(ad, ad->win_main,
1680 _("IDS_COM_POP_ERROR"),
1681 _("IDS_ST_POP_UNABLE_TO_TURN_ON_FLIGHT_MODE_VODA"),
1682 NULL, POPUP_INTERVAL,
1685 //It is need to rollback the status,
1686 if (ad->data_flight) {
1687 ad->data_flight->chk_status = !ad->data_flight->chk_status;
1688 elm_check_state_set(ad->data_flight->eo_check, ad->data_flight->chk_status);
1694 ad->b_fm_requesting = TRUE;
1698 case TAPI_POWER_FLIGHT_MODE_RESP_MAX:
1699 setting_create_popup_without_btn(ad, ad->win_main,
1700 _("IDS_COM_POP_ERROR"),
1701 _("IDS_COM_POP_UNEXPECTED_ERROR"),
1702 NULL, POPUP_INTERVAL, FALSE, FALSE);
1704 //It is need to rollback the status,
1705 if (ad->data_flight) {
1706 ad->data_flight->chk_status = !ad->data_flight->chk_status;
1707 elm_check_state_set(ad->data_flight->eo_check, ad->data_flight->chk_status);
1712 SETTING_TRACE_DEBUG("default");
1714 setting_set_bool_slp_key(BOOL_SLP_SETTING_FLIGHT_MODE,
1715 ad->data_flight->chk_status, &err);
1721 static int setting_main_refresh(void *data)
1723 SETTING_TRACE_BEGIN;
1724 setting_main_appdata *ad = (setting_main_appdata *) data;
1725 elm_genlist_clear(ad->main_genlist); /* first to clear list */
1728 if (is_ug_installed_by_ug_args("rcs-config"))
1730 Elm_Object_Item *item = elm_genlist_item_append(ad->main_genlist, &itc_seperator, NULL, NULL,
1731 ELM_GENLIST_ITEM_NONE, NULL, NULL);
1732 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1733 setting_create_Gendial_field_groupitem(ad->main_genlist,
1734 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1736 setting_main_click_list_ex_ug_cb,
1738 SWALLOW_Type_INVALID,
1740 0, KeyStr_Joyn, NULL,
1746 for(i = Func_Type_Connectivity; i < Func_Type_MAX; i++)
1747 (ad->load_fns[i]) (ad);
1749 memset(ad->load_fns, 0, Func_Type_MAX *sizeof(menu_list_load_fn));
1751 return SETTING_RETURN_SUCCESS;
1754 static int setting_main_create(void *cb)
1756 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1758 setting_main_appdata *ad = (setting_main_appdata *) cb;
1760 //pass NULL to let TAPI access default module
1761 ad->handle = tel_init(NULL);
1763 SETTING_TRACE_ERROR("*** [ERR] tel_init failed ***");
1765 SETTING_TRACE("tel_init ok[handle:%p]", ad->handle);
1767 setting_create_Gendial_itc("dialogue/1text.1icon.2",
1768 &(ad->itc[GENDIAL_Type_1text_1icon_2]));
1769 setting_create_Gendial_itc("dialogue/1text.2icon",
1770 &(ad->itc[GENDIAL_Type_1text_2icon]));
1771 setting_create_Gendial_itc("dialogue/2text.1icon.3",
1772 &(ad->itc[GENDIAL_Type_1icon_2text]));
1773 setting_create_Gendial_itc("dialogue/1text.1icon.2",
1774 &(ad->itc[GENDIAL_Type_1text_2icon_2]));
1775 setting_create_Gendial_itc("dialogue/2text.2icon.3",
1776 &(ad->itc[GENDIAL_Type_2text_2icon_3]));
1777 setting_create_Gendial_itc("dialogue/title",
1778 &(ad->itc[GENDIAL_Type_group_item]));
1779 setting_create_Gendial_itc("select_all",
1780 &(ad->itc[GENDIAL_Type_sel_all]));
1782 setting_create_Gendial_itc("dialogue/2text.3", &(ad->itc[GENDIAL_Type_2text_3]));
1784 ad->view_type = SETTING_VIEW_MAIN;
1785 __setting_create_main_view(ad);
1787 setting_view_main.is_create = 1;
1789 setting_drawer_list_init();
1790 return SETTING_RETURN_SUCCESS;
1793 static int setting_main_destroy(void *cb)
1795 SETTING_TRACE_BEGIN;
1797 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1799 setting_main_appdata *ad = (setting_main_appdata *) cb;
1800 if (0 == setting_view_main.is_create)
1803 return SETTING_RETURN_SUCCESS;
1806 evas_object_smart_callback_del(ad->conform, "virtualkeypad,state,on", __setting_show_title_toolbar);
1807 evas_object_smart_callback_del(ad->conform, "virtualkeypad,state,off", __setting_hide_title_toolbar);
1809 if (ad->refresh_idler) {
1810 ecore_idler_del(ad->refresh_idler);
1811 ad->refresh_idler = NULL;
1815 int tapi_ret = tel_deinit(ad->handle);
1816 if (tapi_ret != TAPI_API_SUCCESS) {
1817 SETTING_TRACE_DEBUG("*** [ERR] tel_deinit. [%d] ***", tapi_ret);
1819 SETTING_TRACE("*** tel_deinit OK ");
1824 /* then destroy the UI object. */
1825 if (ad->item_check_list) {
1826 eina_list_free(ad->item_check_list);
1827 ad->item_check_list = NULL;
1829 SETTING_TRACE("*** ad->item_check_list is NULL - abnormal state ");
1833 evas_object_del(ad->ly_main);
1837 if (ad->flight_popup) {
1838 evas_object_del(ad->flight_popup);
1839 ad->flight_popup = NULL;
1843 if (ad->plugin_node)
1845 setting_plugin_destroy(ad->plugin_node);
1849 evas_object_smart_callback_del(ad->main_genlist, "realized", __gl_realized);
1851 setting_dbus_handler_fini();
1852 setting_drawer_list_fini();
1854 setting_view_main.is_create = 0;
1856 return SETTING_RETURN_SUCCESS;
1859 static int setting_main_update(void *cb)
1861 SETTING_TRACE_BEGIN;
1864 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1866 setting_main_appdata *ad = (setting_main_appdata *) cb;
1868 if (ad->ly_main != NULL) {
1869 //evas_object_show(ad->ly_main);
1872 return SETTING_RETURN_SUCCESS;
1875 static int setting_main_cleanup(void *cb)
1877 SETTING_TRACE_BEGIN;
1879 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1881 setting_main_appdata *ad = (setting_main_appdata *) cb;
1883 if (ad->ly_main != NULL) {
1884 //evas_object_hide(ad->ly_main);
1887 return SETTING_RETURN_SUCCESS;
1890 /* ***************************************************
1894 ***************************************************/
1896 void setting_update_gl_item(void* data)
1898 SETTING_TRACE_BEGIN;
1899 setting_main_appdata *ad = data;
1900 retm_if(!data, "Invalid argument: data is NULL");
1903 Eina_Bool bGlUpdate = EINA_FALSE;
1904 Setting_GenGroupItem_Data *item_to_update = NULL;
1906 for(;nDx<GL_ITEM_MAX; nDx++) {
1907 if(EINA_TRUE == ad->updateItems[nDx]) {
1911 item_to_update = ad->data_wifi;
1912 bGlUpdate = EINA_TRUE;
1915 item_to_update = ad->data_bt;
1916 bGlUpdate = EINA_TRUE;
1919 item_to_update = ad->data_nfc;
1920 bGlUpdate = EINA_TRUE;
1922 case GL_ITEM_FLIGHT:
1923 item_to_update = ad->data_flight;
1924 bGlUpdate = EINA_FALSE;
1930 default: // other case
1934 if (item_to_update) {
1935 SETTING_TRACE("gl update [%s], bGlUpdate:%d", _(item_to_update->keyStr), bGlUpdate);
1937 SETTING_TRACE("gl update:%d", nDx);
1938 elm_object_item_data_set(item_to_update->item, item_to_update);
1939 elm_genlist_item_update(item_to_update->item);
1941 SETTING_TRACE("chk update:%d", nDx);
1942 elm_check_state_set(item_to_update->eo_check, item_to_update->chk_status);
1946 ad->updateItems[nDx] = EINA_FALSE;
1947 } // if(EINA_TRUE == ad->updateItems[nDx])
1955 void setting_main_destroy_ug_cb(ui_gadget_h ug, void *priv)
1957 setting_main_appdata *ad = (setting_main_appdata *) priv;
1959 return; /* do nothing if ad is NULL */
1966 setting_main_click_list_item_reset_data(ad, NULL);
1968 // update main genlist in unloading UG
1969 SETTING_TRACE("update main genlist in unloading UG");
1970 setting_update_gl_item(ad);
1975 void setting_main_result_ug_cb(ui_gadget_h ug, service_h service,
1980 // set default local automatically
1981 set_defaultLangICU();
1984 void setting_main_layout_ug_cb(ui_gadget_h ug, enum ug_mode mode,
1987 setting_main_appdata *ad = (setting_main_appdata *) priv;
1992 SETTING_TRACE_BEGIN;
1994 base = (Evas_Object *) ug_get_layout(ug);
1999 case UG_MODE_FULLVIEW:
2000 evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,
2002 evas_object_show(base);
2011 /* ***************************************************
2015 ***************************************************/
2017 void setting_main_click_list_item_reset_data(void *data,
2020 SETTING_TRACE_BEGIN;
2021 setting_main_appdata *ad = (setting_main_appdata *) data;
2023 ad->isInUGMode = FALSE;
2028 void /* obj is the layout clicked */
2029 setting_main_click_list_item_ug_cb(void *data, Evas_Object *obj,
2030 char *ug_to_load, service_h svc,
2033 SETTING_TRACE_BEGIN;
2034 setting_main_appdata *ad = (setting_main_appdata *) data;
2036 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
2040 char ug_file[PATH_MAX];
2042 (ug_file, PATH_MAX, "%s/libug-%s.so", SETTING_UG_PATH,
2045 SETTING_TRACE("ug_file:%s", ug_file);
2046 if (!ecore_file_exists(ug_file)) {
2047 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
2051 SETTING_TRACE("to create libug-%s.so", ug_to_load);
2052 ad->ug = ug_create(NULL, ug_to_load, UG_MODE_FULLVIEW, svc, cbs);
2054 ad->isInUGMode = TRUE;
2055 memset(ad->cur_loaded_ug, 0x00, MAX_DISPLAY_NAME_LEN_ON_UI);
2056 safeCopyStr(ad->cur_loaded_ug, ug_to_load, MAX_DISPLAY_NAME_LEN_ON_UI);
2059 evas_object_show(ad->ly_main);
2061 SETTING_TRACE_ERROR("errno:%d", errno);
2062 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
2068 setting_main_click_list_default_ug_cb(void *data, Evas_Object *obj,
2071 setting_main_appdata *ad = data;
2072 setting_create_simple_popup(ad, ad->win_main, NULL,
2077 setting_main_click_list_usb_cb(void *data, Evas_Object *obj, void *event_info)
2079 SETTING_TRACE_BEGIN;
2080 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2084 char *str_text = USB_NEED_OFF;
2086 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2088 setting_get_int_slp_key(INT_SLP_SETTING_MOBILE_AP_STATUS, &value, &err);
2091 SETTING_TRACE_ERROR("FAIL: VCONFKEY_MOBILE_HOTSPOT_MODE may not exist\n");
2092 setting_main_click_list_ex_ug_cb(data, obj, item);
2096 /* If mobile hotspot is on, going USB utilties is blocked by a popup*/
2097 if (value & VCONFKEY_MOBILE_HOTSPOT_MODE_USB)
2099 elm_genlist_item_selected_set(item, EINA_FALSE);
2100 setting_create_simple_popup(g_main_ad, g_main_ad->win_main, NULL, (str_text));
2104 setting_main_click_list_ex_ug_cb(data, obj, item);
2110 void setting_main_click_list_more_cb(void *data, Evas_Object *obj, void *event_info)
2112 SETTING_TRACE_BEGIN;
2113 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2114 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2115 elm_genlist_item_selected_set(item, EINA_FALSE);
2116 retm_if(data == NULL, "Invalid argument: data is NULL");
2117 setting_main_appdata *ad = data;
2118 Setting_GenGroupItem_Data *selected_item_data =
2119 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2120 SETTING_TRACE("selected_item_data->keyStr:%s", selected_item_data->keyStr);
2121 if (0 == safeStrCmp(selected_item_data->keyStr, KeyStr_MoreConnect))
2123 ad->view_load = SETTING_VIEW_CONNECTIVE_MORE;
2125 else if (0 == safeStrCmp(selected_item_data->keyStr, KeyStr_MoreSystem))
2127 ad->view_load = SETTING_VIEW_SYSTEM_MORE;
2133 setting_view_change(&setting_view_main, &setting_view_more_menu, ad);
2138 setting_main_click_list_ex_ug_cb(void *data, Evas_Object *obj,
2141 SETTING_TRACE_BEGIN;
2142 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2143 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2145 elm_genlist_item_selected_set(item, EINA_FALSE);
2147 if (g_main_ad->ug) {
2149 ("[ad->ug non-NULL]skip genlist click event!!");
2155 if (NULL == data) { /* pass NULL to ug_args when create setting.cfg. */
2156 setting_create_simple_popup(g_main_ad,
2157 g_main_ad->win_main,
2158 NULL, NO_UG_FOUND_MSG);
2163 setting_main_appdata *ad = g_main_ad;
2165 /* if UG is created by Setting app, setting_main_click_list_ex_ug_cb is diabled. */
2166 if (ad->isInUGMode) {
2167 SETTING_TRACE("isInUGMode : TRUE - another UG is running now.");
2168 ad->isInUGMode = FALSE;
2173 ("isInUGMode : FALSE - another UG is NOT running now.")
2176 Setting_GenGroupItem_Data *selected_item_data =
2177 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2178 setting_main_click_list_item_reset_data(ad, obj);
2179 const char *item_name = _(selected_item_data->keyStr);
2182 struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
2183 setting_retm_if(!cbs, "calloc failed");
2184 cbs->layout_cb = setting_main_layout_ug_cb;
2185 cbs->result_cb = setting_main_result_ug_cb;
2186 cbs->destroy_cb = setting_main_destroy_ug_cb;
2187 cbs->priv = (void *)ad;
2189 char *path = get_ug_path_from_ug_args(data);
2190 service_h svc = get_bundle_from_ug_args(data);
2191 setting_main_click_list_item_ug_cb(ad, obj, path, svc, cbs);
2198 service_destroy(svc);
2201 setting_main_click_list_plugin_cb(void *data, Evas_Object *obj,
2204 SETTING_TRACE_BEGIN;
2205 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2206 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2207 elm_genlist_item_selected_set(item, EINA_FALSE);
2208 Setting_GenGroupItem_Data *selected_item = (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2210 setting_main_appdata *ad = data;
2213 ad->plugin_path = strdup(selected_item->sub_desc);
2214 SETTING_TRACE(" >> SELECTED plugin name : %s \n", ad->plugin_path);
2216 setting_dbus_handler_init( ad );
2219 PluginNode* plugin_node = setting_plugin_create(ad);
2220 plugin_node->plugin_path = strdup(ad->plugin_path);
2221 setting_plugin_load(plugin_node, (const char *)plugin_node->plugin_path);
2223 ad->plugin_node = plugin_node; // the selected plugin name
2228 * @see [caller] setting_main_list_mouse_up_cb
2229 * @see [caller] setting_main_sel_list_mouse_up_cb
2231 static void __rotate_lock_handler(int chk_status, setting_main_appdata *ad )
2233 SETTING_TRACE_BEGIN;
2234 if( chk_status == 1)
2237 int angle = elm_win_rotation_get(ad->win_main);
2238 elm_win_rotation_with_resize_set(ad->win_main, angle);
2240 elm_win_rotation_with_resize_set(ad->win_main, 0);
2242 vconf_set_bool(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, chk_status);
2248 void setting_main_list_mouse_up_cb(void *data, Evas_Object *eo,
2251 SETTING_TRACE_BEGIN;
2252 retm_if(data == NULL, "Data parameter is NULL");
2253 Setting_GenGroupItem_Data *list_item =
2254 (Setting_GenGroupItem_Data *) data;
2255 SETTING_TRACE("process item [%s]", list_item->keyStr);
2256 list_item->chk_status = elm_check_state_get(eo); /* for update new state */
2258 SETTING_TRACE("change radio[%s], status is:%d", _(list_item->keyStr),
2259 list_item->chk_status);
2260 setting_main_appdata *ad = g_main_ad;
2262 if (!safeStrCmp(KeyStr_UsePacketData, list_item->keyStr)) {
2264 if (elm_check_state_get(eo)) {
2265 setting_set_bool_slp_key
2266 (BOOL_SLP_SETTING_USE_PACKET_DATA,
2267 SETTING_ON_OFF_BTN_ON, &err);
2269 setting_set_bool_slp_key
2270 (BOOL_SLP_SETTING_USE_PACKET_DATA,
2271 SETTING_ON_OFF_BTN_OFF, &err);
2274 } else if (!safeStrCmp(KeyStr_Landscape, list_item->keyStr)) {
2275 __rotate_lock_handler(list_item->chk_status, ad);
2284 void setting_main_sel_list_mouse_up_cb(void *data, Evas_Object *eo,
2287 SETTING_TRACE_BEGIN;
2288 setting_retm_if(data == NULL, "Data parameter is NULL");
2290 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2291 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2292 elm_genlist_item_selected_set(item, 0);
2293 Setting_GenGroupItem_Data *list_item =
2294 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2296 list_item->chk_status = elm_check_state_get(list_item->eo_check);
2299 list_item->chk_status = !list_item->chk_status;
2300 elm_check_state_set(list_item->eo_check, list_item->chk_status);
2302 setting_main_appdata *ad = (setting_main_appdata *) data;
2303 if (!safeStrCmp(KeyStr_UsePacketData, list_item->keyStr)) {
2304 /* setting_reset_slp_key_by_status(eo, BOOL_SLP_SETTING_USE_PACKET_DATA); */
2306 setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
2307 list_item->chk_status, &err);
2309 } else if (!safeStrCmp(KeyStr_Landscape, list_item->keyStr)) {
2310 __rotate_lock_handler(list_item->chk_status, ad);
2316 void __alternate_flight_mode(Evas_Object *check)
2318 SETTING_TRACE_BEGIN;
2320 Eina_Bool status = elm_check_state_get(check);
2321 SETTING_TRACE("flight mode status : %d", status);
2322 setting_main_appdata *ad = g_main_ad;
2324 //Check whether some requestion is processing by TAPI
2325 if (ad->b_fm_requesting)
2327 //Do nothing, just mark the lastest operation..
2328 SETTING_TRACE("Some requestion is processing by TAPI, wait to process");
2329 ad->fm_waiting_op = status ? FM_ENTER : FM_LEAVE;
2333 //otherwise, invalid waiting operation and send requsetion to TAPI:
2334 ad->fm_waiting_op = FM_INVALID;
2336 ret = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
2337 setting_retm_if(ret != TAPI_API_SUCCESS,
2338 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
2340 ret = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
2341 setting_retm_if(ret != TAPI_API_SUCCESS,
2342 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
2346 ad->b_fm_requesting = TRUE;
2350 static void __tethering_disabled_cb(tethering_error_e error, tethering_type_e type, tethering_disabled_cause_e code, void *data)
2355 tethering_h th = (tethering_h)data;
2356 tethering_destroy(th);
2359 ret = wifi_initialize();
2360 setting_retm_if(ret < 0, "*** [ERR] wifi_initialize() ***");
2362 ret = wifi_activate(NULL, NULL);
2364 wifi_deinitialize();
2366 setting_retm_if(ret < 0, "*** [ERR] wifi_activate() ***");
2368 ret = wifi_deinitialize();
2369 setting_retm_if(ret < 0, "*** [ERR] wifi_deinitialize() ***");
2372 static void __tethering_turn_off_resp_cb(void *data, Evas_Object *obj, void *event_info)
2374 setting_retm_if(NULL == obj, "NULL == obj");
2375 int response_type = btn_type(obj);
2376 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)data;
2380 evas_object_del(g_main_ad->popup);
2381 g_main_ad->popup = NULL;
2384 if (POPUP_RESPONSE_OK == response_type)
2386 tethering_h th = NULL;
2387 tethering_error_e ret = TETHERING_ERROR_NONE;
2389 ret = tethering_create(&th);
2390 if (ret != TETHERING_ERROR_NONE) {
2391 list_item->swallow_type = SWALLOW_Type_1ICON_1RADIO;
2392 list_item->chk_status = EINA_FALSE;
2393 elm_object_item_data_set(list_item->item, list_item);
2394 elm_genlist_item_update(list_item->item);
2397 ret = tethering_set_disabled_cb(th, TETHERING_TYPE_WIFI, __tethering_disabled_cb, th);
2398 if (ret != TETHERING_ERROR_NONE) {
2399 list_item->swallow_type = SWALLOW_Type_1ICON_1RADIO;
2400 list_item->chk_status = EINA_FALSE;
2401 elm_object_item_data_set(list_item->item, list_item);
2402 elm_genlist_item_update(list_item->item);
2404 tethering_destroy(th);
2408 tethering_disable(th, TETHERING_TYPE_WIFI);
2410 else if (POPUP_RESPONSE_CANCEL == response_type)
2412 list_item->swallow_type = SWALLOW_Type_1ICON_1RADIO;
2413 list_item->chk_status = EINA_FALSE;
2414 elm_object_item_data_set(list_item->item, list_item);
2415 elm_genlist_item_update(list_item->item);
2419 void __alternate_wifi_mode(Setting_GenGroupItem_Data *list_item, Evas_Object *check)
2421 SETTING_TRACE_BEGIN;
2423 Eina_Bool status = elm_check_state_get(check);
2424 SETTING_TRACE("wifi mode status : %d", status);
2428 if (tethering_is_enabled(NULL, TETHERING_TYPE_WIFI) == TRUE) {
2429 list_item->swallow_type = SWALLOW_Type_1ICON_1PROCESS;
2430 elm_object_item_data_set(list_item->item, list_item);
2431 elm_genlist_item_update(list_item->item);
2433 g_main_ad->popup = setting_create_popup_with_btn(list_item,
2434 g_main_ad->win_main, NULL,
2435 _("Connecting Wi-Fi will turn off Mobile hotspot. Continue?"),
2436 __tethering_turn_off_resp_cb,
2437 0, 2, _("IDS_COM_SK_OK"), _("IDS_COM_SK_CANCEL"));
2439 ret = wifi_initialize();
2441 setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err);
2442 list_item->chk_status = value;
2443 elm_object_item_data_set(list_item->item, list_item);
2444 elm_genlist_item_update(list_item->item);
2446 setting_retm_if(ret < 0, "*** [ERR] wifi_initialize() ***");
2449 ret = wifi_activate(NULL, NULL);
2451 setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err);
2452 list_item->chk_status = value;
2453 elm_object_item_data_set(list_item->item, list_item);
2454 elm_genlist_item_update(list_item->item);
2455 wifi_deinitialize();
2457 setting_retm_if(ret < 0, "*** [ERR] wifi_activate() ***");
2459 ret = wifi_deactivate(NULL, NULL);
2461 setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err);
2462 list_item->chk_status = value;
2463 elm_object_item_data_set(list_item->item, list_item);
2464 elm_genlist_item_update(list_item->item);
2465 wifi_deinitialize();
2467 setting_retm_if(ret < 0, "*** [ERR] wifi_deactivate() ***");
2470 ret = wifi_deinitialize();
2472 setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err);
2473 list_item->chk_status = value;
2474 elm_object_item_data_set(list_item->item, list_item);
2475 elm_genlist_item_update(list_item->item);
2477 setting_retm_if(ret < 0, "*** [ERR] wifi_deinitialize() ***");
2479 list_item->swallow_type = SWALLOW_Type_1ICON_1PROCESS;
2480 elm_object_item_data_set(list_item->item, list_item);
2481 elm_genlist_item_update(list_item->item);
2487 void __alternate_bt_mode(Setting_GenGroupItem_Data *list_item, Evas_Object *check)
2489 SETTING_TRACE_BEGIN;
2491 Eina_Bool status = elm_check_state_get(check);
2492 SETTING_TRACE("bt mode status : %d", status);
2496 ret = bt_initialize();
2498 setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err);
2499 list_item->chk_status = value;
2500 elm_object_item_data_set(list_item->item, list_item);
2501 elm_genlist_item_update(list_item->item);
2503 setting_retm_if(ret < 0, "*** [ERR] bt_initialize() ***");
2507 ret = bt_adapter_enable();
2509 setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err);
2510 list_item->chk_status = value;
2511 elm_object_item_data_set(list_item->item, list_item);
2512 elm_genlist_item_update(list_item->item);
2515 setting_retm_if(ret < 0, "*** [ERR] bt_adapter_enable() ***");
2517 ret = bt_adapter_disable();
2519 setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err);
2520 list_item->chk_status = value;
2521 elm_object_item_data_set(list_item->item, list_item);
2522 elm_genlist_item_update(list_item->item);
2525 setting_retm_if(ret < 0, "*** [ERR] bt_adapter_disable() ***");
2528 ret = bt_deinitialize();
2530 setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err);
2531 list_item->chk_status = value;
2532 elm_object_item_data_set(list_item->item, list_item);
2533 elm_genlist_item_update(list_item->item);
2535 setting_retm_if(ret < 0, "*** [ERR] bt_deinitialize() ***");
2537 list_item->swallow_type = SWALLOW_Type_1ICON_1PROCESS;
2538 elm_object_item_data_set(list_item->item, list_item);
2539 elm_genlist_item_update(list_item->item);
2544 void __alternate_nfc_mode(Setting_GenGroupItem_Data *list_item, Evas_Object *check)
2546 SETTING_TRACE_BEGIN;
2548 Eina_Bool status = elm_check_state_get(check);
2549 SETTING_TRACE("nfc mode status : %d", status);
2553 ret = nfc_manager_initialize(NULL, NULL);
2555 setting_get_bool_slp_key(BOOL_SLP_SETTING_NFC_STATUS, &value, &err);
2556 list_item->chk_status = value;
2557 elm_object_item_data_set(list_item->item, list_item);
2558 elm_genlist_item_update(list_item->item);
2560 setting_retm_if(ret < 0, "*** [ERR] nfc_manager_initialize() ***");
2562 ret = nfc_manager_set_activation(status, NULL, NULL);
2564 setting_get_bool_slp_key(BOOL_SLP_SETTING_NFC_STATUS, &value, &err);
2565 list_item->chk_status = value;
2566 elm_object_item_data_set(list_item->item, list_item);
2567 elm_genlist_item_update(list_item->item);
2568 nfc_manager_deinitialize();
2570 setting_retm_if(ret < 0, "*** [ERR] nfc_manager_set_activation() ***");
2572 ret = nfc_manager_deinitialize();
2574 setting_get_bool_slp_key(BOOL_SLP_SETTING_NFC_STATUS, &value, &err);
2575 list_item->chk_status = value;
2576 elm_object_item_data_set(list_item->item, list_item);
2577 elm_genlist_item_update(list_item->item);
2579 setting_retm_if(ret < 0, "*** [ERR] nfc_manager_deinitialize() ***");
2581 list_item->swallow_type = SWALLOW_Type_1ICON_1PROCESS;
2582 elm_object_item_data_set(list_item->item, list_item);
2583 elm_genlist_item_update(list_item->item);
2588 void __alternate_sbeam_mode(Evas_Object *check)
2590 SETTING_TRACE_BEGIN;
2592 Eina_Bool status = elm_check_state_get(check);
2593 SETTING_TRACE("wifi mode status : %d", status);
2595 vconf_set_bool(VCONFKEY_NFC_SBEAM, status);
2601 setting_main_click_list_network_ug_cb(void *data, Evas_Object *obj,
2604 SETTING_TRACE_BEGIN;
2605 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2606 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2608 elm_genlist_item_selected_set(item, EINA_FALSE);
2610 if (g_main_ad->ug) {
2612 ("[ad->ug non-NULL]skip genlist click event!!");
2618 setting_main_appdata *ad = g_main_ad;
2619 setting_main_click_list_item_reset_data(ad, obj);
2623 setting_get_int_slp_key(INT_SLP_SETTING_SIM_SLOT, &value, &err);
2624 SETTING_TRACE("value:%d", value);
2626 case VCONFKEY_TELEPHONY_SIM_INSERTED:
2628 struct ug_cbs *cbs =
2629 (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
2630 setting_retm_if(!cbs, "calloc failed");
2631 cbs->layout_cb = setting_main_layout_ug_cb;
2632 cbs->result_cb = setting_main_result_ug_cb;
2633 cbs->destroy_cb = setting_main_destroy_ug_cb;
2634 cbs->priv = (void *)ad;
2635 setting_main_click_list_item_ug_cb(data, obj,
2636 "setting-network-efl",
2641 case VCONFKEY_TELEPHONY_SIM_NOT_PRESENT:
2642 setting_create_simple_popup(NULL, ad->win_main,
2643 NULL, _("IDS_ST_HEADER_INSERT_SIM_CARD_ABB"));
2644 SETTING_TRACE("%s*** [ERR] No SIM. sim_slot_type=%d ***%s",
2645 SETTING_FONT_RED, value, SETTING_FONT_BLACK);
2648 case VCONFKEY_TELEPHONY_SIM_CARD_ERROR:
2649 case VCONFKEY_TELEPHONY_SIM_UNKNOWN:
2650 setting_create_simple_popup(NULL, ad->win_main,
2651 NULL,_("IDS_COM_BODY_INVALID_SIM_CARD"));
2652 SETTING_TRACE("%s*** [ERR] Invalid SIM. sim_slot_type=%d ***%s",
2653 SETTING_FONT_RED, value, SETTING_FONT_BLACK);
2666 setting_main_click_Gendial_list_flight_mode_cb(void *data, Evas_Object *obj,
2670 setting_retm_if(data == NULL, "Data parameter is NULL");
2672 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2673 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2674 elm_genlist_item_selected_set(item, 0);
2675 Setting_GenGroupItem_Data *list_item =
2676 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2677 int old_status = elm_check_state_get(list_item->eo_check);
2679 list_item->chk_status = !old_status;
2680 elm_check_state_set(list_item->eo_check, list_item->chk_status);
2682 __alternate_flight_mode(list_item->eo_check);
2690 setting_main_click_list_flight_mode_cb(void *data, Evas_Object *obj,
2693 SETTING_TRACE_BEGIN;
2694 retm_if(data == NULL, "Data parameter is NULL");
2695 Setting_GenGroupItem_Data *list_item =
2696 (Setting_GenGroupItem_Data *) data;
2697 list_item->chk_status = elm_check_state_get(obj); /* for update new state */
2698 SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2699 list_item->chk_status);
2701 __alternate_flight_mode(obj);
2709 setting_main_click_list_wifi_mode_cb(void *data, Evas_Object *obj,
2712 SETTING_TRACE_BEGIN;
2713 retm_if(data == NULL, "Data parameter is NULL");
2714 Setting_GenGroupItem_Data *list_item =
2715 (Setting_GenGroupItem_Data *) data;
2716 list_item->chk_status = elm_check_state_get(obj); /* for update new state */
2717 SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2718 list_item->chk_status);
2720 __alternate_wifi_mode(list_item, obj);
2728 setting_main_click_list_bt_mode_cb(void *data, Evas_Object *obj,
2731 SETTING_TRACE_BEGIN;
2732 retm_if(data == NULL, "Data parameter is NULL");
2733 Setting_GenGroupItem_Data *list_item =
2734 (Setting_GenGroupItem_Data *) data;
2735 list_item->chk_status = elm_check_state_get(obj); /* for update new state */
2736 SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2737 list_item->chk_status);
2739 __alternate_bt_mode(list_item, obj);
2747 setting_main_click_list_nfc_mode_cb(void *data, Evas_Object *obj,
2750 SETTING_TRACE_BEGIN;
2751 retm_if(data == NULL, "Data parameter is NULL");
2752 Setting_GenGroupItem_Data *list_item =
2753 (Setting_GenGroupItem_Data *) data;
2754 list_item->chk_status = elm_check_state_get(obj); /* for update new state */
2755 SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2756 list_item->chk_status);
2758 __alternate_nfc_mode(list_item, obj);
2766 setting_main_click_list_sbeam_mode_cb(void *data, Evas_Object *obj,
2769 SETTING_TRACE_BEGIN;
2770 retm_if(data == NULL, "Data parameter is NULL");
2771 Setting_GenGroupItem_Data *list_item =
2772 (Setting_GenGroupItem_Data *) data;
2773 list_item->chk_status = elm_check_state_get(obj); /* for update new state */
2774 SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2775 list_item->chk_status);
2777 __alternate_sbeam_mode(obj);
2782 * store current selection in setting.cfg
2784 void setting_try_save_check_list(void *data)
2786 SETTING_TRACE_BEGIN;
2787 setting_main_appdata *ad = (setting_main_appdata *) data;
2789 Eina_List *check_list = ad->item_check_list;
2790 Setting_GenGroupItem_Data *list_item = NULL;
2791 int update_count = 0;
2793 while (check_list) {
2794 list_item = (Setting_GenGroupItem_Data *) eina_list_data_get(check_list);
2795 if (NULL == list_item) continue;
2798 if (list_item->chk_status) {
2799 /* to update config file */
2800 setting_cfg_set_pos(list_item->keyStr, Cfg_Item_Pos_Level0);
2802 /* to update config file */
2803 setting_cfg_set_pos(list_item->keyStr, Cfg_Item_Pos_Level1);
2805 check_list = eina_list_next(check_list);
2808 if (update_count == 0) {
2809 /* to popup tips notify */
2811 setting_cfg_file_update();
2817 setting_main_click_edit_preferred_cb(void *data, Evas_Object *obj, void *event_info)
2819 SETTING_TRACE_BEGIN;
2821 setting_main_appdata *ad = (setting_main_appdata *) data;
2822 ad->view_type = SETTING_VIEW_ALL_CHECK;
2823 __setting_create_prefered_view(ad);
2824 __load_check_list(ad, &(ad->edit_preferred_genlist), NULL);