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>
23 #include <tethering.h>
24 #include <bluetooth.h>
27 #include <setting-plugin.h>
29 #define PLUGIN_PREFIX "/opt"
31 typedef struct _DrawAppInfo
34 //------------------------------------
35 void (*draw_app)(void* arg, char* name, char* pkgname);
39 static int setting_main_create(void *cb);
40 static int setting_main_destroy(void *cb);
41 static int setting_main_update(void *cb);
42 static int setting_main_cleanup(void *cb);
44 setting_view setting_view_main = {
45 .create = setting_main_create,
46 .update = setting_main_update,
47 .destroy = setting_main_destroy,
48 .cleanup = setting_main_cleanup,
51 setting_main_appdata *g_main_ad = NULL;
53 static void setting_main_tapi_event_cb(TapiHandle *handle, int result, void *data, void *user_data);
54 static int setting_main_refresh(void *data);
55 static void __alternate_flight_mode(Evas_Object *check);
56 static void setting_main_click_Gendial_list_flight_mode_cb(void *data,
59 static void __alternate_flight_mode(Evas_Object *check);
61 void setting_main_click_list_item_ug_cb(void *data, Evas_Object *obj, char *ug_to_load, service_h svc, struct ug_cbs *cbs);
64 __setting_chk_changed(void *data, Evas_Object *obj, void *event_info)
66 /* SETTING_TRACE_BEGIN; */
67 retm_if(data == NULL, "Data parameter is NULL");
68 Setting_GenGroupItem_Data *list_item =
69 (Setting_GenGroupItem_Data *) data;
70 /* SETTING_TRACE("process item [%s]", _(list_item->keyStr)); */
71 list_item->chk_status = elm_check_state_get(obj);
73 Eina_List *check_list = g_main_ad->item_check_list;
74 Setting_GenGroupItem_Data *item = NULL;
75 bool isFoundNotSelSomeone = FALSE;
76 bool isFoundSelSomeone = FALSE;
78 item = (Setting_GenGroupItem_Data *)
79 eina_list_data_get(check_list);
83 if (!(item->chk_status)) {
84 isFoundNotSelSomeone = TRUE;
86 isFoundSelSomeone = TRUE;
88 if (isFoundNotSelSomeone && isFoundSelSomeone) {
91 check_list = eina_list_next(check_list);
94 if (isFoundNotSelSomeone) {
95 g_main_ad->check_all_item->chk_status = 0; /* for update new state */
97 g_main_ad->check_all_item->chk_status = 1; /* for update new state */
99 elm_object_item_data_set(g_main_ad->check_all_item->item, g_main_ad->check_all_item);
100 elm_genlist_item_update(g_main_ad->check_all_item->item);
102 if (isFoundSelSomeone) {
103 /* SETTING_TRACE("Set it to active"); */
105 elm_object_item_disabled_set(elm_toolbar_last_item_get
106 (g_main_ad->controllbar_all_check),
111 static void __setting_list_changed(void *data, Evas_Object *obj,
117 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
119 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
120 elm_genlist_item_selected_set(item, 0);
121 Setting_GenGroupItem_Data *list_item =
122 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
124 int old_status = elm_check_state_get(list_item->eo_check);
126 list_item->chk_status = !old_status;
127 elm_check_state_set(list_item->eo_check, list_item->chk_status);
129 Eina_List *check_list = g_main_ad->item_check_list;
130 Setting_GenGroupItem_Data *group_item = NULL;
131 bool isFoundNotSelSomeone = FALSE;
132 bool isFoundSelSomeone = FALSE;
134 group_item = (Setting_GenGroupItem_Data *)
135 eina_list_data_get(check_list);
136 if (NULL == group_item) {
139 if (!(group_item->chk_status)) {
140 isFoundNotSelSomeone = TRUE;
143 isFoundSelSomeone = TRUE;
145 if (isFoundNotSelSomeone && isFoundSelSomeone) {
149 check_list = eina_list_next(check_list);
152 if (isFoundNotSelSomeone) {
153 g_main_ad->check_all_item->chk_status = 0; /* for update new state */
155 g_main_ad->check_all_item->chk_status = 1; /* for update new state */
157 elm_object_item_data_set(g_main_ad->check_all_item->item, g_main_ad->check_all_item);
158 elm_genlist_item_update(g_main_ad->check_all_item->item);
160 if (isFoundSelSomeone) {
161 /* SETTING_TRACE("Set it to active"); */
163 elm_object_item_disabled_set(elm_toolbar_last_item_get
164 (g_main_ad->controllbar_all_check),
171 __setting_chk_sel_all_changed(void *data, Evas_Object *obj, void *event_info)
173 /* SETTING_TRACE_BEGIN; */
174 retm_if(data == NULL, "Data parameter is NULL");
175 Setting_GenGroupItem_Data *list_item =
176 (Setting_GenGroupItem_Data *) data;
177 bool is_all_checked = elm_check_state_get(obj);
178 list_item->chk_status = is_all_checked; /* for update new state */
179 /* SETTING_TRACE("is_all_checked:%d", is_all_checked); */
181 Eina_List *check_list = g_main_ad->item_check_list;
184 list_item = (Setting_GenGroupItem_Data *)
185 eina_list_data_get(check_list);
186 if (NULL == list_item) {
189 list_item->chk_status = is_all_checked;
190 elm_object_item_data_set(list_item->item, list_item);
191 elm_genlist_item_update(list_item->item);
192 check_list = eina_list_next(check_list);
194 if (is_all_checked) {
196 elm_object_item_disabled_set(elm_toolbar_last_item_get
197 (g_main_ad->controllbar_all_check),
202 static void __setting_list_sel_all_changed(void *data, Evas_Object *obj,
208 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
209 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
210 elm_genlist_item_selected_set(item, 0);
211 Setting_GenGroupItem_Data *list_item =
212 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
214 int old_status = elm_check_state_get(list_item->eo_check);
216 int is_all_checked = list_item->chk_status = !old_status;
217 elm_check_state_set(list_item->eo_check, list_item->chk_status);
219 Eina_List *check_list = g_main_ad->item_check_list;
222 list_item = (Setting_GenGroupItem_Data *)
223 eina_list_data_get(check_list);
224 if (NULL == list_item) {
227 list_item->chk_status = is_all_checked;
228 /* elm_check_state_set(list_item->eo_check, is_all_checked); */
229 elm_object_item_data_set(list_item->item, list_item);
230 elm_genlist_item_update(list_item->item);
231 check_list = eina_list_next(check_list);
233 if (is_all_checked) {
235 elm_object_item_disabled_set(elm_toolbar_last_item_get
236 (g_main_ad->controllbar_all_check),
242 static void __load_check_list(void *data, Evas_Object **genlist,
246 setting_main_appdata *ad = (setting_main_appdata *) data;
250 Cfg_Item_Position pos = Cfg_Item_Pos_Uninstall;
251 bool isFoundNonSelItem = FALSE;
252 bool isFoundSelSomeoneItem = FALSE;
255 char *icon_path = NULL;
258 setting_create_Gendial_field_def(ad->gl_sel_all,
259 &(ad->itc[GENDIAL_Type_sel_all]),
260 __setting_list_sel_all_changed, ad,
261 SWALLOW_Type_1CHECK, NULL, NULL,
262 state, KeyStr_Select_All, NULL,
263 __setting_chk_sel_all_changed);
264 __BACK_POINTER_SET(ad->check_all_item);
266 Setting_GenGroupItem_Data *item = NULL;
267 Setting_GenGroupItem_Data *category_item = NULL;
268 for (i = 0; i < setting_cfg_get_category_length(); i++) {
269 if (NULL == menuNameKey) {
270 /* SETTING_TRACE("load all the items in config file"); */
273 (setting_cfg_get_category_name(i), menuNameKey)) {
276 char *category_name = setting_cfg_get_category_name(i);
279 setting_create_Gendial_field_group_titleItem(*genlist,
281 [GENDIAL_Type_group_item]),
283 ELM_GENLIST_ITEM_NONE,
287 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
288 keyStr = setting_cfg_get_keyname_idx(i, j);
289 pos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
291 if (Cfg_Item_Pos_Level1 == pos) {
293 isFoundNonSelItem = TRUE;
296 isFoundSelSomeoneItem = TRUE;
299 icon_path = setting_cfg_get_icon_path_idx(i, j);
301 setting_create_Gendial_field_groupitem(*genlist,
303 [GENDIAL_Type_1text_2icon_2]),
305 __setting_list_changed,
307 SWALLOW_Type_1CHECKICON,
312 __setting_chk_changed);
314 ad->item_check_list =
315 eina_list_append(ad->item_check_list, item);
318 SETTING_TRACE_ERROR("category_item is NULL");
322 if (ad->check_all_item) {
323 if (isFoundNonSelItem) {
324 ad->check_all_item->chk_status = 0; /* for update new state */
326 ad->check_all_item->chk_status = 1; /* for update new state */
328 elm_object_item_data_set(ad->check_all_item->item, ad->check_all_item);
329 elm_genlist_item_update(ad->check_all_item->item);
331 SETTING_TRACE_ERROR("ad->check_all_item is NULL");
334 if (isFoundSelSomeoneItem) {
335 /* elm_object_item_disabled_set(elm_toolbar_last_item_get
336 (ad->controllbar_all_check),
341 elm_object_item_disabled_set(elm_toolbar_last_item_get
342 (ad->controllbar_all_check),
349 static Setting_GenGroupItem_Data * __flightmode_handler(void* data, char* keyStr, char* icon_path, char* ug_name, Evas_Object *genlist)
351 // NOT UG --> it's just UI drawing
353 setting_main_appdata *ad = (setting_main_appdata *)data;
355 setting_get_bool_slp_key (BOOL_SLP_SETTING_FLIGHT_MODE, &value, &err);
357 /* create flight_mode */
358 ad->data_flight = setting_create_Gendial_field_groupitem(genlist,
359 &(ad->itc[GENDIAL_Type_1text_2icon]),
361 setting_main_click_Gendial_list_flight_mode_cb,
363 SWALLOW_Type_1ICON_1RADIO,
369 setting_main_click_list_flight_mode_cb);
370 __BACK_POINTER_SET(ad->data_flight);
372 return ad->data_flight;
375 static Setting_GenGroupItem_Data * __wifi_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
377 setting_main_appdata *ad = (setting_main_appdata *)data;
379 setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err);
381 //char* pa_wifi = get_pa_Wi_Fi_on_off_str();
382 ad->data_wifi = setting_create_Gendial_field_groupitem(genlist,
383 &(ad->itc[GENDIAL_Type_1text_2icon]),
385 setting_main_click_list_ex_ug_cb,
387 SWALLOW_Type_1ICON_1RADIO,
393 setting_main_click_list_wifi_mode_cb);
394 __BACK_POINTER_SET(ad->data_wifi);
396 ad->data_wifi->userdata = ad;
399 return ad->data_wifi;
402 static Setting_GenGroupItem_Data * __bluetooth_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
404 setting_main_appdata *ad = (setting_main_appdata *)data;
406 setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err);
408 ad->data_bt = setting_create_Gendial_field_groupitem(genlist,
409 &(ad->itc[GENDIAL_Type_1text_2icon]),
411 setting_main_click_list_ex_ug_cb,
413 SWALLOW_Type_1ICON_1RADIO,
419 setting_main_click_list_bt_mode_cb);
420 __BACK_POINTER_SET(ad->data_bt);
422 ad->data_bt->userdata = ad;
427 static Setting_GenGroupItem_Data * __allshare_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
429 setting_main_appdata *ad = (setting_main_appdata *)data;
431 Setting_GenGroupItem_Data * obj = setting_create_Gendial_field_groupitem(genlist,
432 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
434 setting_main_click_list_default_ug_cb,
436 SWALLOW_Type_INVALID,
445 static Setting_GenGroupItem_Data * __network_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
447 setting_main_appdata *ad = (setting_main_appdata *)data;
449 ad->data_network = setting_create_Gendial_field_groupitem(genlist,
450 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
452 setting_main_click_list_network_ug_cb,
454 SWALLOW_Type_INVALID,
461 return ad->data_network;
464 static Setting_GenGroupItem_Data * __nfc_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
466 setting_main_appdata *ad = (setting_main_appdata *)data;
469 setting_get_bool_slp_key(BOOL_SLP_SETTING_NFC_STATUS, &value, &err);
471 ad->data_nfc = setting_create_Gendial_field_groupitem(genlist,
472 &(ad->itc[GENDIAL_Type_1text_2icon]),
474 setting_main_click_list_ex_ug_cb,
476 SWALLOW_Type_1ICON_1RADIO,
482 setting_main_click_list_nfc_mode_cb);
483 __BACK_POINTER_SET(ad->data_nfc);
485 ad->data_nfc->userdata = ad;
488 setting_create_Gendial_field_def(genlist, &itc_multiline_text, NULL,
489 ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
490 NULL, NULL, 0, SETTING_NFC_DESC, NULL, NULL);
491 elm_genlist_item_select_mode_set(elm_genlist_item_append(genlist, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
492 ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
497 static Setting_GenGroupItem_Data * __default_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
499 setting_main_appdata *ad = (setting_main_appdata *)data;
500 Setting_GenGroupItem_Data * obj = setting_create_Gendial_field_groupitem(genlist,
501 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
503 setting_main_click_list_ex_ug_cb,
505 SWALLOW_Type_INVALID,
516 typedef struct mainlist_entry mainlist_entry;
518 struct mainlist_entry {
520 Setting_GenGroupItem_Data* (*ui_handler)(void* data, char* title, char* iconpath, char* ugname, Evas_Object *genlist);
525 MAINLIST_ENTRY_FLIGHT_MODE = 0,
528 MAINLIST_ENTRY_ALLSHARE,
529 MAINLIST_ENTRY_NETWORK,
531 MAINLIST_ENTRY_DEFAULT,
535 static mainlist_entry mainlist_table[] = {
536 {KeyStr_FlightMode, __flightmode_handler}, // 0 --> NOT UG
537 {KeyStr_WiFi, __wifi_handler}, // 1 --> UG
538 {KeyStr_Bluetooth, __bluetooth_handler}, // 1 --> UG
539 {KeyStr_AllShare, __allshare_handler}, // NOT UG
540 {KeyStr_Network, __network_handler}, // 1 --> UG
541 {KeyStr_NFC, __nfc_handler}, // 1 --> UG
542 {"Default", __default_handler}, // 1 --> UG
544 //--------------------------------------------------------------
549 void __gl_realized(void *data, Evas_Object *obj, void *event_info)
551 //SETTING_TRACE_BEGIN;
552 setting_retm_if(data == NULL, "invalid parameter: data is NULL");
553 setting_retm_if(event_info == NULL, "invalid parameter: event_info is NULL");
554 setting_main_appdata *ad = (setting_main_appdata *)data;
555 Elm_Object_Item *item = (Elm_Object_Item *)event_info;
556 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)elm_object_item_data_get(item);
558 //setting_retm_if(list_item == NULL, "list_item is NULL");
561 if (list_item->group_style == SETTING_GROUP_STYLE_TOP) {
562 elm_object_item_signal_emit(item, "elm,state,top", "");
563 } else if (list_item->group_style == SETTING_GROUP_STYLE_BOTTOM) {
564 elm_object_item_signal_emit(item, "elm,state,bottom", "");
565 } else if (list_item->group_style == SETTING_GROUP_STYLE_CENTER) {
566 elm_object_item_signal_emit(item, "elm,state,center", "");
567 } else if (list_item->group_style == SETTING_GROUP_STYLE_NONE) {
570 SETTING_TRACE_ERROR("list_item->group_style is wrong");
573 /* item is used for description */
574 elm_object_item_signal_emit(item, "elm,state,center", "");
578 // Flight Mode - not UG
579 // All share - not UG
580 // WiFi - added toggle
586 void __load_connectivity_menu_list(void *data, Cfg_Item_Position inputPos, Evas_Object *genlist)
589 setting_main_appdata *ad = data;
590 //group title, only display in setting main view
591 if (SETTING_VIEW_MAIN == ad->view_load) {
592 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
593 &(ad->itc[GENDIAL_Type_group_item]),
595 ELM_GENLIST_ITEM_NONE,
596 KeyStr_Connectivity, NULL);
599 int idx_second_menu = 0;
602 char *icon_path = NULL;
603 char *ug_args = NULL;
604 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
607 bool is_emulator = isEmulBin();
609 Setting_GenGroupItem_Data *item_data = NULL;
612 for (i = 0; i < setting_cfg_get_category_length(); i++) {
614 (setting_cfg_get_category_name(i), KeyStr_Connectivity))
617 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
618 keyStr = setting_cfg_get_keyname_idx(i, j);
619 tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
620 ug_args = setting_cfg_get_ug_args_idx(i, j);
621 icon_path = setting_cfg_get_icon_path_idx(i, j);
622 /* SETTING_TRACE_DEBUG("Got an item[keyStr:%s, ug_args:%s, pos:%d]", */
623 /* keyStr, ug_args, tmpPos); */
626 if (!safeStrCmp(KeyStr_FlightMode, keyStr)) {
627 continue; /* hide Flight Mode in Emulator*/
628 } else if (!safeStrCmp(KeyStr_WiFi, keyStr)) {
629 continue; /* hide WIFI in Emulator*/
630 } else if (!safeStrCmp(KeyStr_WiFiDirect, keyStr)) {
631 continue; /* hide WiFiDirect in Emulator*/
632 } else if (!safeStrCmp(KeyStr_Network, keyStr)) {
633 continue; /* hide Network in Emulator*/
634 } else if (!safeStrCmp(KeyStr_Bluetooth, keyStr)) {
635 continue; /* hide Bluetooth in Emulator*/
636 } else if (!safeStrCmp(KeyStr_MobileAP, keyStr)) {
637 continue; /* hide Tethering in Emulator*/
643 if (idx_second_menu < MAX_MORE_MENU_NUM
644 && Cfg_Item_Pos_Level1 == tmpPos
645 && SETTING_VIEW_MAIN == ad->view_load
646 && MAIN_PROFILE_PREFERRED == ad->profile_type) {
648 if (is_ug_installed_by_ug_args(ug_args)) {
649 ad->more_connective_menus[idx_second_menu++] = keyStr;
653 if (Cfg_Item_Pos_Level_All == inputPos) {
654 } else if (inputPos != tmpPos) { /* not in the inputPos level */
658 if (!safeStrCmp(KeyStr_FlightMode, keyStr)) { /* load special radio */
660 item_data = mainlist_table[MAINLIST_ENTRY_FLIGHT_MODE].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
662 } else if (!safeStrCmp(KeyStr_AllShare, keyStr)) { /* NOT UG */
664 item_data = mainlist_table[MAINLIST_ENTRY_ALLSHARE].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
666 } else if (!safeStrCmp(KeyStr_WiFi, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
668 item_data = mainlist_table[MAINLIST_ENTRY_WIFI].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
670 } else if (!safeStrCmp(KeyStr_Bluetooth, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
672 item_data = mainlist_table[MAINLIST_ENTRY_BT].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
676 else if (!safeStrCmp(KeyStr_MobileAP, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
678 item_data = mainlist_table[MAINLIST_ENTRY_MOBILEAP].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
682 else if (!safeStrCmp(KeyStr_Network, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special UG */
684 item_data = mainlist_table[MAINLIST_ENTRY_NETWORK].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
686 } else if (!safeStrCmp(KeyStr_NFC, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
687 int nfc_value = FALSE; //default
688 vconf_get_bool(VCONFKEY_NFC_FEATURE, &nfc_value);
689 if (VCONFKEY_NFC_FEATURE_ON == nfc_value)
691 item_data = mainlist_table[MAINLIST_ENTRY_NFC].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
693 } else { /* load other UGs */
694 if (is_ug_installed_by_ug_args(ug_args))
696 item_data = mainlist_table[MAINLIST_ENTRY_DEFAULT].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
702 item_data->group_style = SETTING_GROUP_STYLE_TOP;
703 } else if (j == setting_cfg_get_menu_length(i) - 1) {
704 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
706 item_data->group_style = SETTING_GROUP_STYLE_CENTER;
710 item_data->group_style = SETTING_GROUP_STYLE_TOP;
717 //end group , only display in setting main view
718 #if SUPPORT_MORE_ITEM_FUNCTION
719 if (SETTING_VIEW_MAIN == ad->view_load && MAIN_PROFILE_PREFERRED == ad->profile_type && idx_second_menu > 0)
721 char sub_text[MAX_COMMON_BUFFER_LEN] = {0, };
723 while (idx < MAX_MORE_MENU_NUM && ad->more_connective_menus[idx])
727 safeStrNCat(sub_text, ", ", MAX_COMMON_BUFFER_LEN);
729 safeStrNCat(sub_text, _(ad->more_connective_menus[idx]), MAX_COMMON_BUFFER_LEN);
733 ad->data_moreConnect =
734 setting_create_Gendial_field_groupitem(ad->main_genlist,
735 &(ad->itc[GENDIAL_Type_2text_3]),
737 setting_main_click_list_more_cb,
739 SWALLOW_Type_INVALID,
746 __BACK_POINTER_SET(ad->data_moreConnect);
748 /* if has <more ..> item , change the last item_date to SETTING_GROUP_STYLE_CENTER*/
749 if (item_data && index > 1) {
750 item_data->group_style = SETTING_GROUP_STYLE_CENTER;
752 ad->data_moreConnect->group_style = SETTING_GROUP_STYLE_BOTTOM;
754 item_data = ad->data_moreConnect;
760 item_data->group_style = SETTING_GROUP_STYLE_NONE;
761 } else if (index == 2) {
762 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
767 void __load_connectivity_level0_list(void *data)
769 setting_main_appdata *ad = data;
770 __load_connectivity_menu_list(ad, Cfg_Item_Pos_Level0, ad->main_genlist);
773 void __load_connectivity_level_all_list(void *data)
776 setting_main_appdata *ad = data;
777 __load_connectivity_menu_list(ad, Cfg_Item_Pos_Level_All, ad->main_genlist);
780 void __load_system_menu_list(void *data, Cfg_Item_Position inputPos, Evas_Object *genlist)
783 SETTING_TRACE_DEBUG("pos :%d", inputPos);
784 setting_main_appdata *ad = data;
785 //group title, only display in setting main view
786 if (SETTING_VIEW_MAIN == ad->view_load) {
787 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
788 &(ad->itc[GENDIAL_Type_group_item]),
790 ELM_GENLIST_ITEM_NONE,
791 KeyStr_System, NULL);
793 int idx_second_menu = 0;
796 char *icon_path = NULL;
797 char *ug_args = NULL;
799 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
804 bool is_emulator = isEmulBin();
806 Setting_GenGroupItem_Data *item_data = NULL;
809 //SETTING_TRACE("setting_cfg_get_category_length() :: %d ", setting_cfg_get_category_length());
810 for (i = 0; i < setting_cfg_get_category_length(); i++) {
811 if (safeStrCmp(setting_cfg_get_category_name(i), KeyStr_System))
814 //SETTING_TRACE(" setting_cfg_get_menu_length(%d) :: %d ",i, setting_cfg_get_menu_length(i) );
815 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
816 keyStr = setting_cfg_get_keyname_idx(i, j);
817 /* sg_path = setting_cfg_get_ugpath_idx(i, j); */
818 tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
819 icon_path = setting_cfg_get_icon_path_idx(i, j);
820 ug_args = setting_cfg_get_ug_args_idx(i, j);
822 //SETTING_TRACE("KeyString : %s , tmpPos : %d , inputPos : %d ", keyStr, tmpPos, inputPos );
825 if (!safeStrCmp(KeyStr_Security, keyStr)) {
826 continue; /* hide Security in Emulator*/
827 } else if (!safeStrCmp(KeyStr_Memory, keyStr)) {
828 continue; /* hide Memory in Emulator*/
829 } else if (!safeStrCmp(KeyStr_Powersaving, keyStr)) {
830 continue; /* hide Powersaving in Emulator*/
831 } else if (!safeStrCmp(KeyStr_FlightMode, keyStr)) {
832 continue; /* hide Powersaving in Emulator*/
838 if (idx_second_menu < MAX_MORE_MENU_NUM
839 && Cfg_Item_Pos_Level1 == tmpPos
840 && SETTING_VIEW_MAIN == ad->view_load
841 && MAIN_PROFILE_PREFERRED == ad->profile_type) {
843 if (is_ug_installed_by_ug_args(ug_args)) {
844 ad->more_system_menus[idx_second_menu++] = keyStr;
848 if (Cfg_Item_Pos_Level_All == inputPos) {
850 //SETTING_TRACE("Cfg_Item_Pos_Level_All == inputPos ---> no draw --- WHY?? ");
851 } else if (inputPos != tmpPos) { /* not in the inputPos level */
852 //SETTING_TRACE("inputPos == tmp Pos ---> no draw --- WHY?? ");
856 if (!safeStrCmp(KeyStr_FlightMode, keyStr)) { /* load special radio */
858 item_data = mainlist_table[MAINLIST_ENTRY_FLIGHT_MODE].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
861 else if (!safeStrCmp(KeyStr_Landscape, keyStr)) { /* load special UG */
864 (VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, &value);
866 ad->data_rotationMode =
867 setting_create_Gendial_field_groupitem(genlist,
868 &(ad->itc[GENDIAL_Type_1text_2icon]),
870 setting_main_sel_list_mouse_up_cb,
872 SWALLOW_Type_1ICON_1RADIO,
878 setting_main_list_mouse_up_cb);
879 __BACK_POINTER_SET(ad->data_rotationMode);
880 item_data = ad->data_rotationMode;
882 else if (!safeStrCmp(KeyStr_Brightness, keyStr)) {
884 char* pa_bright = get_brightness_mode_str();
886 setting_create_Gendial_field_groupitem(genlist,
887 &(ad->itc[GENDIAL_Type_1icon_2text]),
889 setting_main_click_list_ex_ug_cb,
891 SWALLOW_Type_INVALID,
898 __BACK_POINTER_SET(ad->data_bright);
899 item_data = ad->data_bright;
902 else { /* load other UGs */
903 item_data = setting_create_Gendial_field_groupitem(genlist,
904 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
906 setting_main_click_list_ex_ug_cb,
908 SWALLOW_Type_INVALID,
919 item_data->group_style = SETTING_GROUP_STYLE_TOP;
920 } else if (j == setting_cfg_get_menu_length(i) - 1) {
921 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
923 item_data->group_style = SETTING_GROUP_STYLE_CENTER;
927 item_data->group_style = SETTING_GROUP_STYLE_TOP;
933 //end group, only display in setting main view
934 #if SUPPORT_MORE_ITEM_FUNCTION
935 if (SETTING_VIEW_MAIN == ad->view_load && MAIN_PROFILE_PREFERRED == ad->profile_type && idx_second_menu > 0)
937 char sub_text[MAX_COMMON_BUFFER_LEN] = {0, };
939 while (idx < MAX_MORE_MENU_NUM && ad->more_system_menus[idx])
943 safeStrNCat(sub_text, ", ", MAX_COMMON_BUFFER_LEN);
945 safeStrNCat(sub_text, _(ad->more_system_menus[idx]), MAX_COMMON_BUFFER_LEN);
949 ad->data_moreSystem =
950 setting_create_Gendial_field_groupitem(ad->main_genlist,
951 &(ad->itc[GENDIAL_Type_2text_3]),
953 setting_main_click_list_more_cb,
955 SWALLOW_Type_INVALID,
962 __BACK_POINTER_SET(ad->data_moreSystem);
964 /* if has <more ..> item , change the last item_date to SETTING_GROUP_STYLE_CENTER*/
965 if (item_data && index > 1) {
966 item_data->group_style = SETTING_GROUP_STYLE_CENTER;
968 ad->data_moreSystem->group_style = SETTING_GROUP_STYLE_BOTTOM;
970 item_data = ad->data_moreSystem;
975 item_data->group_style = SETTING_GROUP_STYLE_NONE;
976 } else if (index == 2) {
977 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
981 static void __load_system_level0_list(void *data)
983 setting_main_appdata *ad = data;
984 __load_system_menu_list(ad, Cfg_Item_Pos_Level0, ad->main_genlist);
987 static void __load_system_level_all_list(void *data)
990 setting_main_appdata *ad = data;
991 __load_system_menu_list(ad, Cfg_Item_Pos_Level_All, ad->main_genlist);
994 static void __load_applications_menu_list(void *data,
995 Cfg_Item_Position inputPos)
998 SETTING_TRACE_DEBUG("pos :%d", inputPos);
999 setting_main_appdata *ad = data;
1001 bool is_emulator = isEmulBin();
1004 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
1005 &(ad->itc[GENDIAL_Type_group_item]),
1007 ELM_GENLIST_ITEM_NONE,
1008 KeyStr_Applications, NULL);
1009 char *keyStr = NULL;
1010 char *icon_path = NULL;
1011 char *ug_args = NULL;
1012 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
1015 Setting_GenGroupItem_Data *item_data = NULL;
1017 for (i = 0; i < setting_cfg_get_category_length(); i++) {
1019 (setting_cfg_get_category_name(i), KeyStr_Applications))
1022 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
1023 keyStr = setting_cfg_get_keyname_idx(i, j);
1024 icon_path = setting_cfg_get_icon_path_idx(i, j);
1025 ug_args = setting_cfg_get_ug_args_idx(i, j);
1027 (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
1029 if (Cfg_Item_Pos_Level_All == inputPos) {
1030 } else if (inputPos != tmpPos) { /* not in the inputPos level */
1035 /* hide all except Email */
1036 if (safeStrCmp(KeyStr_Email, keyStr)) {
1043 item_data = setting_create_Gendial_field_groupitem(ad->main_genlist,
1044 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1046 setting_main_click_list_ex_ug_cb,
1048 SWALLOW_Type_INVALID,
1055 item_data->group_style = SETTING_GROUP_STYLE_TOP;
1056 } else if (j == setting_cfg_get_menu_length(i) - 1) {
1057 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
1059 item_data->group_style = SETTING_GROUP_STYLE_CENTER;
1063 item_data->group_style = SETTING_GROUP_STYLE_TOP;
1071 item_data->group_style = SETTING_GROUP_STYLE_NONE;
1072 } else if (index == 2) {
1073 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
1079 static void __load_applications_level0_list(void *data)
1081 setting_main_appdata *ad = data;
1082 __load_applications_menu_list(ad, Cfg_Item_Pos_Level0);
1085 static void __load_applications_level_all_list(void *data)
1087 SETTING_TRACE_BEGIN;
1088 setting_main_appdata *ad = data;
1089 __load_applications_menu_list(ad, Cfg_Item_Pos_Level_All);
1093 bool is_3rdapp_installed_setting_cfg(char* pkgname)
1095 SETTING_TRACE_BEGIN;
1099 if (snprintf(path, 512, PLUGIN_PREFIX"/apps/%s/setting/setting.xml", pkgname) < 0)
1103 bool result_opt = false;
1105 if(stat(path, &st) == 0) {
1108 SETTING_TRACE_ERROR(" %s is *NOT* present\n", path);
1117 * ex) name : AppSetting4
1118 * ex) pkgname : UBKFwQidax.AppSetting4
1120 static void draw_3rdapp(void* data, char* name, char* pkgname)
1122 SETTING_TRACE_BEGIN;
1123 SETTING_TRACE(" name : %s", name);
1124 SETTING_TRACE(" pkgname : %s", pkgname);
1126 setting_main_appdata *ad = data;
1130 if (snprintf(fullpath, 512, PLUGIN_PREFIX"/apps/%s/setting/setting.xml", pkgname) < 0)
1133 SETTING_TRACE(" fullpath : %s", fullpath);
1137 char* plugin_path = strdup(fullpath);
1138 Setting_GenGroupItem_Data * plugin_node = setting_create_Gendial_field_groupitem(ad->main_genlist,
1139 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1141 setting_main_click_list_plugin_cb,
1143 SWALLOW_Type_INVALID,
1144 IMG_DefaultIcon, NULL,
1145 0, name, plugin_path, // <<-- refactoring
1155 static ail_cb_ret_e __download_apps_cb(ail_appinfo_h ai, void* data)
1157 DrawAppInfo* pinfo = (DrawAppInfo*)data;
1160 if (AIL_ERROR_OK == ail_appinfo_get_str(ai, AIL_PROP_PACKAGE_STR, &id))
1162 SETTING_TRACE(" 3rd party - app name : ----> %s ", id);
1165 ail_appinfo_h handle;
1170 bool nodisplay = false;
1171 bool removable = true;
1173 if (AIL_ERROR_OK == ail_package_get_appinfo(id, &handle))
1175 if (AIL_ERROR_OK != ail_appinfo_get_str(handle, AIL_PROP_NAME_STR, &name))
1176 SETTING_TRACE("cannot get name");
1178 if (AIL_ERROR_OK != ail_appinfo_get_str(handle, AIL_PROP_ICON_STR, &icon))
1179 SETTING_TRACE("cannot get icon");
1181 if (AIL_ERROR_OK != ail_appinfo_get_bool(handle, AIL_PROP_NODISPLAY_BOOL, &nodisplay))
1182 SETTING_TRACE("cannot get nodisplay");
1184 if (AIL_ERROR_OK != ail_appinfo_get_bool(handle, AIL_PROP_X_SLP_REMOVABLE_BOOL, &removable))
1185 SETTING_TRACE("cannot get removable");
1187 if (AIL_ERROR_OK != ail_appinfo_get_int(handle, AIL_PROP_X_SLP_INSTALLEDTIME_INT, &installed_time))
1188 SETTING_TRACE("cannot get installed_time");
1190 //SETTING_TRACE("installed_time = %d ", installed_time);
1191 if (installed_time != 0 && is_3rdapp_installed_setting_cfg(id) == true )
1193 SETTING_TRACE(" 3rd party - app name : ----> id : %s --- name : %s ", id, name);
1194 SETTING_TRACE(" 3rd party - icon : ----> %s ", icon);
1195 SETTING_TRACE(" 3rd party - nodisplay : ----> %d ", nodisplay);
1199 if (pinfo->draw_app != NULL)
1201 SETTING_TRACE(">>> pkg name --> %s ", id);
1202 pinfo->draw_app(pinfo->data, strdup(name)/* appname*/, strdup(id)/* pkg_name*/);
1207 return AIL_CB_RET_CONTINUE;
1212 * get 3rd party applist from AIL & searching dir/file by the defined rule
1214 * if data is NULL --> just get how many items are there
1215 * if data is NOT NULL --> draw UI code
1217 static int get_downloadapp_list(void* data)
1219 SETTING_TRACE_BEGIN;
1221 setting_main_appdata *ad = data;
1226 DrawAppInfo* pinfo = (DrawAppInfo*)malloc(sizeof(DrawAppInfo));
1230 pinfo->draw_app = draw_3rdapp;
1233 if (ail_filter_new(&f) == AIL_ERROR_OK)
1235 if (ail_filter_add_bool(f, AIL_PROP_NODISPLAY_BOOL, false) != AIL_ERROR_OK)
1237 SETTING_TRACE("ail filter error");
1242 ail_filter_destroy(f);
1246 ail_filter_list_appinfo_foreach(f, __download_apps_cb, pinfo);
1247 //---------------------------------------------------------------
1248 ail_filter_destroy(f);
1250 ncount = pinfo->ncount;
1260 static int __get_downloaded_apps_num(Cfg_Item_Position inputPos)
1262 SETTING_TRACE_BEGIN;
1263 SETTING_TRACE_DEBUG("pos :%d", inputPos);
1264 int downloaded_apps_num = 0;
1265 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
1267 for (i = 0; i < setting_cfg_get_category_length(); i++) {
1269 (setting_cfg_get_category_name(i), KeyStr_DownloadedAPPs))
1272 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
1273 tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
1274 if (Cfg_Item_Pos_Level_All == inputPos) {
1275 } else if (inputPos != tmpPos) { /* not in the inputPos level */
1279 downloaded_apps_num++;
1283 // draw UI with AUL code
1285 downloaded_apps_num = get_downloadapp_list(NULL);
1286 SETTING_TRACE("Exit %s with return[%d]",__FUNCTION__, downloaded_apps_num);
1289 SETTING_TRACE("Exit %s with return[%d]",__FUNCTION__, downloaded_apps_num);
1290 return downloaded_apps_num;
1294 static void __load_downloaded_apps_menu_list(void *data,
1295 Cfg_Item_Position inputPos)
1297 SETTING_TRACE_BEGIN;
1298 SETTING_TRACE_DEBUG("pos :%d", inputPos);
1299 setting_main_appdata *ad = data;
1301 // if the number of download apps is zero, display a bottom seperator
1302 if (0 == __get_downloaded_apps_num(inputPos)) {
1303 Elm_Object_Item *item = NULL;
1304 item = elm_genlist_item_append(ad->main_genlist, &itc_bottom_seperator, NULL, NULL,
1305 ELM_GENLIST_ITEM_NONE, NULL, NULL);
1306 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1311 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
1312 &(ad->itc[GENDIAL_Type_group_item]),
1314 ELM_GENLIST_ITEM_NONE,
1315 KeyStr_DownloadedAPPs,
1317 get_downloadapp_list(ad);
1318 //SETTING_TRACE("Exit %s with return[%d]",__FUNCTION__, downloaded_apps_num);
1322 static void __load_downloaded_apps_level0_list(void *data)
1324 setting_main_appdata *ad = data;
1325 __load_downloaded_apps_menu_list(ad, Cfg_Item_Pos_Level0);
1328 static void __load_downloaded_apps_level_all_list(void *data)
1330 SETTING_TRACE_BEGIN;
1331 setting_main_appdata *ad = data;
1332 __load_downloaded_apps_menu_list(ad, Cfg_Item_Pos_Level_All);
1335 static void __check_all_view_clear(void *data)
1337 SETTING_TRACE_BEGIN;
1339 setting_main_appdata *ad = data;
1340 if (ad->item_check_list) {
1341 eina_list_free(ad->item_check_list);
1342 ad->item_check_list = NULL;
1345 ad->gl_sel_all = NULL;
1346 ad->edit_preferred_genlist = NULL;
1347 //ad->controllbar_all_check = NULL;
1348 ad->check_all_item =NULL;
1351 static void __prefered_buttons_cb(void *data, Evas_Object *obj, void *event_info)
1353 SETTING_TRACE_BEGIN;
1355 setting_main_appdata *ad = (setting_main_appdata *) data;
1356 const char *key = NULL;
1358 key = elm_object_text_get(obj);
1359 setting_retm_if(data == NULL
1360 || key == NULL, "data == NULL || key == NULL");
1362 SETTING_TRACE_DEBUG("press button: %s", key);
1365 if (!safeStrCmp(key, dgettext("sys_string", "IDS_COM_SK_DONE"))) {
1367 if (ad->profile_type == MAIN_PROFILE_ALL) {
1368 SETTING_TRACE_DEBUG("Cancel to hide current view.");
1369 setting_try_save_check_list(ad); /* need to save too */
1370 __check_all_view_clear(ad);
1371 elm_naviframe_item_pop(ad->navibar_main); // pop(preferred) --> main
1375 // MAIN_PROFILE_PREFERRED and Etc
1376 // redraw setting-main
1377 setting_try_save_check_list(ad);
1378 elm_naviframe_item_pop(ad->navibar_main); // pop (preferred) -> main
1380 //After the view is popuped, all the object handlers should be reset NULL.
1381 __check_all_view_clear(ad);
1382 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1383 ad->load_fns[Func_Type_System] = __load_system_level0_list;
1384 ad->load_fns[Func_Type_Apps] = __load_applications_level0_list;
1385 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level0_list;
1386 int ret = setting_main_refresh(ad);
1387 ret_if(ret != SETTING_RETURN_SUCCESS);
1392 if (!safeStrCmp(key, setting_gettext("IDS_COM_SK_CANCEL"))
1393 || !safeStrCmp(key, dgettext("sys_string", "IDS_COM_BODY_BACK"))) {
1394 SETTING_TRACE_DEBUG("Cancel to hide current view.");
1395 elm_naviframe_item_pop(ad->navibar_main);
1396 //After the view is popuped, all the object handlers should be reset NULL.
1397 __check_all_view_clear(ad);
1403 static void __btnback_clicked_cb(void *data, Evas_Object *obj, void *event_info)
1405 SETTING_TRACE_BEGIN;
1407 setting_main_appdata *ad = (setting_main_appdata *) data;
1408 elm_win_lower(ad->win_main);
1411 static Eina_Bool __refresh_on_idle(void *data)
1413 SETTING_TRACE_BEGIN;
1414 retv_if(!data, FALSE);
1415 setting_main_appdata *ad = data;
1416 if (MAIN_PROFILE_ALL == ad->profile_type)
1418 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level_all_list;
1419 ad->load_fns[Func_Type_System] = __load_system_level_all_list;
1420 ad->load_fns[Func_Type_Apps] = __load_applications_level_all_list;
1421 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level_all_list;
1422 setting_main_refresh(ad);
1424 else if (MAIN_PROFILE_PREFERRED == ad->profile_type)
1426 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1427 ad->load_fns[Func_Type_System] = __load_system_level0_list;
1428 ad->load_fns[Func_Type_Apps] = __load_applications_level0_list;
1429 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level0_list;
1430 setting_main_refresh(ad);
1432 ad->refresh_idler = NULL;
1436 static void __allFrequent_btn_cb(void *data, Evas_Object *obj, void *event_info)
1438 SETTING_TRACE_BEGIN;
1439 ret_if(!data || !obj);
1440 setting_main_appdata *ad = (setting_main_appdata *) data;
1441 //if already has the task,cancel the old task with ecore_idler_del,then add new idler task.
1442 if (ad->refresh_idler) {
1443 ecore_idler_del(ad->refresh_idler);
1444 ad->refresh_idler = NULL;
1447 //Elm_Object_Item *item = elm_toolbar_first_item_get(obj);
1449 if (MAIN_PROFILE_ALL == ad->profile_type)
1451 SETTING_TRACE("Change to Preferred view");
1452 elm_object_text_set(obj, _(ALL_STR));
1453 ad->profile_type = MAIN_PROFILE_PREFERRED;
1455 else if (MAIN_PROFILE_PREFERRED == ad->profile_type)
1457 SETTING_TRACE("Change to ALL view");
1458 elm_object_text_set(obj, _(PREFERRED_STR));
1459 ad->profile_type = MAIN_PROFILE_ALL;
1465 ad->refresh_idler = ecore_idler_add((Ecore_Task_Cb) __refresh_on_idle, ad);
1468 static void __setting_show_title_toolbar(void *data, Evas_Object *obj, void *event_info)
1470 SETTING_TRACE_BEGIN;
1471 //elm_object_item_signal_emit(data, "elm,state,sip,shown", "");
1472 setting_main_appdata *ad = (setting_main_appdata *) data;
1474 Evas_Object *navi_bar = NULL;
1476 if (ad->isInUGMode && ad->ug) {
1477 Evas_Object *layout = (Evas_Object *)ug_get_layout(ad->ug);
1479 navi_bar = elm_object_part_content_get(layout, "elm.swallow.content");
1481 navi_bar = ad->navibar_main;
1484 const char *support = evas_object_data_get(navi_bar, "sip.naviframe.title_obj");
1485 SETTING_TRACE("support:%s", support);
1488 Elm_Object_Item *top_item = elm_naviframe_top_item_get(navi_bar);
1490 elm_object_item_signal_emit(top_item, "elm,state,sip,shown", "");
1494 static void __setting_hide_title_toolbar(void *data, Evas_Object *obj, void *event_info)
1496 SETTING_TRACE_BEGIN;
1497 //elm_object_item_signal_emit(data, "elm,state,sip,hidden", "");
1498 setting_main_appdata *ad = (setting_main_appdata *) data;
1500 Evas_Object *navi_bar = NULL;
1502 if (ad->isInUGMode && ad->ug) {
1503 Evas_Object *layout = (Evas_Object *)ug_get_layout(ad->ug);
1505 navi_bar = elm_object_part_content_get(layout, "elm.swallow.content");
1507 navi_bar = ad->navibar_main;
1510 const char *support = evas_object_data_get(navi_bar, "sip.naviframe.title_obj");
1512 SETTING_TRACE("support:%s", support);
1515 Elm_Object_Item *top_item = elm_naviframe_top_item_get(navi_bar);
1517 elm_object_item_signal_emit(top_item, "elm,state,sip,hidden", "");
1521 static bool __setting_create_main_view(void *data)
1523 SETTING_TRACE_BEGIN;
1525 setting_retvm_if(data == NULL, FALSE, "data == NULL");
1526 setting_main_appdata *ad = (setting_main_appdata *) data;
1528 Evas_Object *conform = elm_conformant_add(ad->win_main);
1529 ad->ly_main = setting_create_win_layout(ad->win_main, ad->win_main);
1530 evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1531 evas_object_size_hint_align_set(conform, EVAS_HINT_FILL, EVAS_HINT_FILL);
1532 elm_win_resize_object_add(ad->win_main, conform);
1533 elm_object_content_set(conform, ad->ly_main);
1534 evas_object_show(conform);
1536 evas_object_smart_callback_add(conform, "virtualkeypad,state,on", __setting_show_title_toolbar, ad);
1537 evas_object_smart_callback_add(conform, "virtualkeypad,state,off", __setting_hide_title_toolbar, ad);
1539 elm_win_conformant_set(ad->win_main, EINA_TRUE);
1541 ad->conform = conform;
1543 ad->navibar_main = setting_create_navi_bar(ad->ly_main);
1545 ad->main_genlist = elm_genlist_add(ad->navibar_main);
1546 elm_object_style_set(ad->main_genlist, "dialogue");
1547 retvm_if(ad->main_genlist == NULL, FALSE,
1548 "Cannot set scroller object as contento of layout");
1550 //elm_genlist_homogeneous_set(ad->main_genlist, EINA_TRUE);
1551 elm_genlist_clear(ad->main_genlist); /* first to clear list */
1552 evas_object_smart_callback_add(ad->main_genlist, "realized", __gl_realized, ad);
1554 setting_create_navi_bar_buttons(_("IDS_COM_BODY_SETTINGS"),
1555 _("IDS_COM_BODY_BACK"), NULL, _("IDS_ST_OPT_ALL"),
1556 __btnback_clicked_cb, NULL,
1557 __allFrequent_btn_cb, ad, ad->main_genlist,
1558 ad->navibar_main, NULL);
1560 ad->profile_type = MAIN_PROFILE_PREFERRED;
1561 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1562 ad->load_fns[Func_Type_System] = __load_system_level0_list;
1563 ad->load_fns[Func_Type_Apps] = __load_applications_level_all_list;
1564 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level_all_list;
1565 setting_main_refresh(ad);
1569 static bool __setting_create_prefered_view(void *data)
1571 SETTING_TRACE_BEGIN;
1573 setting_retvm_if(data == NULL, FALSE, "data == NULL");
1574 setting_main_appdata *ad = (setting_main_appdata *) data;
1576 /* the genlist will be destroyed with its parent view, when using elm_naviframe_item_pop() to destroy the view. */
1577 ad->edit_preferred_genlist = elm_genlist_add(ad->win_main);
1578 elm_object_style_set(ad->edit_preferred_genlist, "dialogue");
1579 elm_genlist_clear(ad->edit_preferred_genlist); /* first to clear list */
1581 /* [UI] edit preffered view */
1582 Evas_Object *sub_layout = elm_layout_add(ad->win_main);
1583 elm_object_style_set(sub_layout, "dialogue");
1584 elm_layout_file_set(sub_layout, SETTING_THEME_EDJ_NAME, "search_layout");
1585 evas_object_size_hint_weight_set(sub_layout, EVAS_HINT_EXPAND, 0.0);
1586 evas_object_show(sub_layout);
1588 ad->gl_sel_all = elm_genlist_add(ad->win_main);
1589 elm_genlist_clear(ad->gl_sel_all); /* first to clear list */
1590 elm_genlist_bounce_set(ad->gl_sel_all, 0, 0);
1592 elm_object_part_content_set(sub_layout, "search_bar", ad->gl_sel_all); /* add 'Select all' */
1593 elm_object_part_content_set(sub_layout, "search_list", ad->edit_preferred_genlist); /* add Genlist */
1595 /* push, not create */
1596 setting_push_layout_navi_bar(_(EDIT_PREFERRED_STR),
1597 _("IDS_COM_SK_CANCEL"),
1598 _("IDS_COM_SK_DONE"), NULL,
1599 __prefered_buttons_cb, __prefered_buttons_cb, NULL, ad,
1600 sub_layout, ad->navibar_main,
1606 static void setting_main_tapi_event_cb(TapiHandle *handle, int result, void *data, void *user_data)
1608 SETTING_TRACE_BEGIN;
1610 setting_main_appdata *ad = user_data;
1611 ad->b_fm_requesting = FALSE;
1612 SETTING_TRACE("result:%d", result);
1616 case TAPI_POWER_FLIGHT_MODE_RESP_ON:
1618 setting_set_bool_slp_key(BOOL_SLP_SETTING_FLIGHT_MODE,
1619 SETTING_ON_OFF_BTN_ON, &err);
1621 //If Setting has validate operation (fm_waiting_op == FM_LEAVE) to process, process it.
1622 //Otherwise, do nothing
1623 if (FM_LEAVE == ad->fm_waiting_op)
1625 //Send the latest operation
1626 ad->fm_waiting_op = FM_INVALID;
1627 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
1628 setting_retm_if(err != TAPI_API_SUCCESS,
1629 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
1632 ad->b_fm_requesting = TRUE;
1637 case TAPI_POWER_FLIGHT_MODE_RESP_OFF:
1639 setting_set_bool_slp_key(BOOL_SLP_SETTING_FLIGHT_MODE,
1640 SETTING_ON_OFF_BTN_OFF, &err);
1642 //If Setting has validate operation (here, fm_waiting_op == FM_ENTER) to process,process it.
1643 //Otherwise, do nothing
1644 if (FM_ENTER == ad->fm_waiting_op)
1646 //Send the latest operation
1647 ad->fm_waiting_op = FM_INVALID;
1648 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
1649 setting_retm_if(err != TAPI_API_SUCCESS,
1650 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
1653 ad->b_fm_requesting = TRUE;
1658 case TAPI_POWER_FLIGHT_MODE_RESP_FAIL:
1659 //Setting has a validate operation to process, Send the operation request
1660 if (FM_ENTER == ad->fm_waiting_op)
1662 ad->fm_waiting_op = FM_INVALID;
1663 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
1665 setting_retm_if(err != TAPI_API_SUCCESS,
1666 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
1667 ad->b_fm_requesting = TRUE;
1669 else if (FM_LEAVE == ad->fm_waiting_op)
1671 ad->fm_waiting_op = FM_INVALID;
1672 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
1674 setting_retm_if(err != TAPI_API_SUCCESS,
1675 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
1676 ad->b_fm_requesting = TRUE;
1678 else //Current requset is the last one, Setting needs to notify user
1680 setting_create_popup_without_btn(ad, ad->win_main,
1681 _("IDS_COM_POP_ERROR"),
1682 _("IDS_ST_POP_UNABLE_TO_TURN_ON_FLIGHT_MODE_VODA"),
1683 NULL, POPUP_INTERVAL,
1686 //It is need to rollback the status,
1687 if (ad->data_flight) {
1688 ad->data_flight->chk_status = !ad->data_flight->chk_status;
1689 elm_check_state_set(ad->data_flight->eo_check, ad->data_flight->chk_status);
1695 ad->b_fm_requesting = TRUE;
1699 case TAPI_POWER_FLIGHT_MODE_RESP_MAX:
1700 setting_create_popup_without_btn(ad, ad->win_main,
1701 _("IDS_COM_POP_ERROR"),
1702 _("IDS_COM_POP_UNEXPECTED_ERROR"),
1703 NULL, POPUP_INTERVAL, FALSE, FALSE);
1705 //It is need to rollback the status,
1706 if (ad->data_flight) {
1707 ad->data_flight->chk_status = !ad->data_flight->chk_status;
1708 elm_check_state_set(ad->data_flight->eo_check, ad->data_flight->chk_status);
1713 SETTING_TRACE_DEBUG("default");
1715 setting_set_bool_slp_key(BOOL_SLP_SETTING_FLIGHT_MODE,
1716 ad->data_flight->chk_status, &err);
1722 static int setting_main_refresh(void *data)
1724 SETTING_TRACE_BEGIN;
1725 setting_main_appdata *ad = (setting_main_appdata *) data;
1726 elm_genlist_clear(ad->main_genlist); /* first to clear list */
1729 if (is_ug_installed_by_ug_args("rcs-config"))
1731 Elm_Object_Item *item = elm_genlist_item_append(ad->main_genlist, &itc_seperator, NULL, NULL,
1732 ELM_GENLIST_ITEM_NONE, NULL, NULL);
1733 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1734 setting_create_Gendial_field_groupitem(ad->main_genlist,
1735 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1737 setting_main_click_list_ex_ug_cb,
1739 SWALLOW_Type_INVALID,
1741 0, KeyStr_Joyn, NULL,
1747 for(i = Func_Type_Connectivity; i < Func_Type_MAX; i++)
1748 (ad->load_fns[i]) (ad);
1750 memset(ad->load_fns, 0, Func_Type_MAX *sizeof(menu_list_load_fn));
1752 return SETTING_RETURN_SUCCESS;
1755 static int setting_main_create(void *cb)
1757 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1759 setting_main_appdata *ad = (setting_main_appdata *) cb;
1761 //pass NULL to let TAPI access default module
1762 ad->handle = tel_init(NULL);
1764 SETTING_TRACE_ERROR("*** [ERR] tel_init failed ***");
1766 SETTING_TRACE("tel_init ok[handle:%p]", ad->handle);
1768 setting_create_Gendial_itc("dialogue/1text.1icon.2",
1769 &(ad->itc[GENDIAL_Type_1text_1icon_2]));
1770 setting_create_Gendial_itc("dialogue/1text.2icon",
1771 &(ad->itc[GENDIAL_Type_1text_2icon]));
1772 setting_create_Gendial_itc("dialogue/2text.1icon.3",
1773 &(ad->itc[GENDIAL_Type_1icon_2text]));
1774 setting_create_Gendial_itc("dialogue/1text.1icon.2",
1775 &(ad->itc[GENDIAL_Type_1text_2icon_2]));
1776 setting_create_Gendial_itc("dialogue/2text.2icon.3",
1777 &(ad->itc[GENDIAL_Type_2text_2icon_3]));
1778 setting_create_Gendial_itc("dialogue/title",
1779 &(ad->itc[GENDIAL_Type_group_item]));
1780 setting_create_Gendial_itc("select_all",
1781 &(ad->itc[GENDIAL_Type_sel_all]));
1783 setting_create_Gendial_itc("dialogue/2text.3", &(ad->itc[GENDIAL_Type_2text_3]));
1785 ad->view_type = SETTING_VIEW_MAIN;
1786 __setting_create_main_view(ad);
1788 setting_view_main.is_create = 1;
1790 setting_drawer_list_init();
1791 return SETTING_RETURN_SUCCESS;
1794 static int setting_main_destroy(void *cb)
1796 SETTING_TRACE_BEGIN;
1798 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1800 setting_main_appdata *ad = (setting_main_appdata *) cb;
1801 if (0 == setting_view_main.is_create)
1804 return SETTING_RETURN_SUCCESS;
1807 evas_object_smart_callback_del(ad->conform, "virtualkeypad,state,on", __setting_show_title_toolbar);
1808 evas_object_smart_callback_del(ad->conform, "virtualkeypad,state,off", __setting_hide_title_toolbar);
1810 if (ad->refresh_idler) {
1811 ecore_idler_del(ad->refresh_idler);
1812 ad->refresh_idler = NULL;
1816 int tapi_ret = tel_deinit(ad->handle);
1817 if (tapi_ret != TAPI_API_SUCCESS) {
1818 SETTING_TRACE_DEBUG("*** [ERR] tel_deinit. [%d] ***", tapi_ret);
1820 SETTING_TRACE("*** tel_deinit OK ");
1825 /* then destroy the UI object. */
1826 if (ad->item_check_list) {
1827 eina_list_free(ad->item_check_list);
1828 ad->item_check_list = NULL;
1830 SETTING_TRACE("*** ad->item_check_list is NULL - abnormal state ");
1834 evas_object_del(ad->ly_main);
1838 if (ad->flight_popup) {
1839 evas_object_del(ad->flight_popup);
1840 ad->flight_popup = NULL;
1843 evas_object_smart_callback_del(ad->main_genlist, "realized", __gl_realized);
1845 setting_dbus_handler_fini();
1846 setting_drawer_list_fini();
1848 setting_view_main.is_create = 0;
1850 return SETTING_RETURN_SUCCESS;
1853 static int setting_main_update(void *cb)
1855 SETTING_TRACE_BEGIN;
1858 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1860 setting_main_appdata *ad = (setting_main_appdata *) cb;
1862 if (ad->ly_main != NULL) {
1863 //evas_object_show(ad->ly_main);
1866 return SETTING_RETURN_SUCCESS;
1869 static int setting_main_cleanup(void *cb)
1871 SETTING_TRACE_BEGIN;
1873 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1875 setting_main_appdata *ad = (setting_main_appdata *) cb;
1877 if (ad->ly_main != NULL) {
1878 //evas_object_hide(ad->ly_main);
1881 return SETTING_RETURN_SUCCESS;
1884 /* ***************************************************
1888 ***************************************************/
1890 void setting_update_gl_item(void* data)
1892 SETTING_TRACE_BEGIN;
1893 setting_main_appdata *ad = data;
1894 retm_if(!data, "Invalid argument: data is NULL");
1897 Eina_Bool bGlUpdate = EINA_FALSE;
1898 Setting_GenGroupItem_Data *item_to_update = NULL;
1900 for(;nDx<GL_ITEM_MAX; nDx++) {
1901 if(EINA_TRUE == ad->updateItems[nDx]) {
1905 item_to_update = ad->data_wifi;
1906 bGlUpdate = EINA_TRUE;
1909 item_to_update = ad->data_bt;
1910 bGlUpdate = EINA_TRUE;
1913 item_to_update = ad->data_nfc;
1914 bGlUpdate = EINA_TRUE;
1916 case GL_ITEM_FLIGHT:
1917 item_to_update = ad->data_flight;
1918 bGlUpdate = EINA_FALSE;
1924 default: // other case
1928 if (item_to_update) {
1929 SETTING_TRACE("gl update [%s], bGlUpdate:%d", _(item_to_update->keyStr), bGlUpdate);
1931 SETTING_TRACE("gl update:%d", nDx);
1932 elm_object_item_data_set(item_to_update->item, item_to_update);
1933 elm_genlist_item_update(item_to_update->item);
1935 SETTING_TRACE("chk update:%d", nDx);
1936 elm_check_state_set(item_to_update->eo_check, item_to_update->chk_status);
1940 ad->updateItems[nDx] = EINA_FALSE;
1941 } // if(EINA_TRUE == ad->updateItems[nDx])
1949 void setting_main_destroy_ug_cb(ui_gadget_h ug, void *priv)
1951 setting_main_appdata *ad = (setting_main_appdata *) priv;
1953 return; /* do nothing if ad is NULL */
1960 setting_main_click_list_item_reset_data(ad, NULL);
1962 // update main genlist in unloading UG
1963 SETTING_TRACE("update main genlist in unloading UG");
1964 setting_update_gl_item(ad);
1969 void setting_main_result_ug_cb(ui_gadget_h ug, service_h service,
1974 // set default local automatically
1975 set_defaultLangICU();
1978 void setting_main_layout_ug_cb(ui_gadget_h ug, enum ug_mode mode,
1981 setting_main_appdata *ad = (setting_main_appdata *) priv;
1986 SETTING_TRACE_BEGIN;
1988 base = (Evas_Object *) ug_get_layout(ug);
1993 case UG_MODE_FULLVIEW:
1994 evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,
1996 evas_object_show(base);
2005 /* ***************************************************
2009 ***************************************************/
2011 void setting_main_click_list_item_reset_data(void *data,
2014 SETTING_TRACE_BEGIN;
2015 setting_main_appdata *ad = (setting_main_appdata *) data;
2017 ad->isInUGMode = FALSE;
2022 void /* obj is the layout clicked */
2023 setting_main_click_list_item_ug_cb(void *data, Evas_Object *obj,
2024 char *ug_to_load, service_h svc,
2027 SETTING_TRACE_BEGIN;
2028 setting_main_appdata *ad = (setting_main_appdata *) data;
2030 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
2034 char ug_file[PATH_MAX];
2036 (ug_file, PATH_MAX, "%s/libug-%s.so", SETTING_UG_PATH,
2039 SETTING_TRACE("ug_file:%s", ug_file);
2040 if (!ecore_file_exists(ug_file)) {
2041 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
2045 SETTING_TRACE("to create libug-%s.so", ug_to_load);
2046 ad->ug = ug_create(NULL, ug_to_load, UG_MODE_FULLVIEW, svc, cbs);
2048 ad->isInUGMode = TRUE;
2049 memset(ad->cur_loaded_ug, 0x00, MAX_DISPLAY_NAME_LEN_ON_UI);
2050 safeCopyStr(ad->cur_loaded_ug, ug_to_load, MAX_DISPLAY_NAME_LEN_ON_UI);
2053 evas_object_show(ad->ly_main);
2055 SETTING_TRACE_ERROR("errno:%d", errno);
2056 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
2062 setting_main_click_list_default_ug_cb(void *data, Evas_Object *obj,
2065 setting_main_appdata *ad = data;
2066 setting_create_simple_popup(ad, ad->win_main, NULL,
2071 setting_main_click_list_usb_cb(void *data, Evas_Object *obj, void *event_info)
2073 SETTING_TRACE_BEGIN;
2074 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2078 char *str_text = USB_NEED_OFF;
2080 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2082 setting_get_int_slp_key(INT_SLP_SETTING_MOBILE_AP_STATUS, &value, &err);
2085 SETTING_TRACE_ERROR("FAIL: VCONFKEY_MOBILE_HOTSPOT_MODE may not exist\n");
2086 setting_main_click_list_ex_ug_cb(data, obj, item);
2090 /* If mobile hotspot is on, going USB utilties is blocked by a popup*/
2091 if (value & VCONFKEY_MOBILE_HOTSPOT_MODE_USB)
2093 elm_genlist_item_selected_set(item, EINA_FALSE);
2094 setting_create_simple_popup(g_main_ad, g_main_ad->win_main, NULL, (str_text));
2098 setting_main_click_list_ex_ug_cb(data, obj, item);
2104 void setting_main_click_list_more_cb(void *data, Evas_Object *obj, void *event_info)
2106 SETTING_TRACE_BEGIN;
2107 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2108 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2109 elm_genlist_item_selected_set(item, EINA_FALSE);
2110 retm_if(data == NULL, "Invalid argument: data is NULL");
2111 setting_main_appdata *ad = data;
2112 Setting_GenGroupItem_Data *selected_item_data =
2113 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2114 SETTING_TRACE("selected_item_data->keyStr:%s", selected_item_data->keyStr);
2115 if (0 == safeStrCmp(selected_item_data->keyStr, KeyStr_MoreConnect))
2117 ad->view_load = SETTING_VIEW_CONNECTIVE_MORE;
2119 else if (0 == safeStrCmp(selected_item_data->keyStr, KeyStr_MoreSystem))
2121 ad->view_load = SETTING_VIEW_SYSTEM_MORE;
2127 setting_view_change(&setting_view_main, &setting_view_more_menu, ad);
2132 setting_main_click_list_ex_ug_cb(void *data, Evas_Object *obj,
2135 SETTING_TRACE_BEGIN;
2136 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2137 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2139 elm_genlist_item_selected_set(item, EINA_FALSE);
2141 if (g_main_ad->ug) {
2143 ("[ad->ug non-NULL]skip genlist click event!!");
2149 if (NULL == data) { /* pass NULL to ug_args when create setting.cfg. */
2150 setting_create_simple_popup(g_main_ad,
2151 g_main_ad->win_main,
2152 NULL, NO_UG_FOUND_MSG);
2157 setting_main_appdata *ad = g_main_ad;
2159 /* if UG is created by Setting app, setting_main_click_list_ex_ug_cb is diabled. */
2160 if (ad->isInUGMode) {
2161 SETTING_TRACE("isInUGMode : TRUE - another UG is running now.");
2162 ad->isInUGMode = FALSE;
2167 ("isInUGMode : FALSE - another UG is NOT running now.")
2170 Setting_GenGroupItem_Data *selected_item_data =
2171 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2172 setting_main_click_list_item_reset_data(ad, obj);
2173 const char *item_name = _(selected_item_data->keyStr);
2176 struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
2177 setting_retm_if(!cbs, "calloc failed");
2178 cbs->layout_cb = setting_main_layout_ug_cb;
2179 cbs->result_cb = setting_main_result_ug_cb;
2180 cbs->destroy_cb = setting_main_destroy_ug_cb;
2181 cbs->priv = (void *)ad;
2183 char *path = get_ug_path_from_ug_args(data);
2184 service_h svc = get_bundle_from_ug_args(data);
2185 setting_main_click_list_item_ug_cb(ad, obj, path, svc, cbs);
2192 service_destroy(svc);
2195 setting_main_click_list_plugin_cb(void *data, Evas_Object *obj,
2198 SETTING_TRACE_BEGIN;
2199 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2200 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2201 elm_genlist_item_selected_set(item, EINA_FALSE);
2202 Setting_GenGroupItem_Data *selected_item = (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2204 setting_main_appdata *ad = data;
2206 ad->plugin_path = strdup(selected_item->sub_desc);
2207 SETTING_TRACE(" >> SELECTED plugin name : %s \n", ad->plugin_path);
2209 PluginNode* plugin_node = setting_plugin_create(g_main_ad->navibar_main, g_main_ad->win_main);
2210 plugin_node->plugin_path = strdup(selected_item->sub_desc);
2211 ad->plugin_node = plugin_node; // the selected plugin name
2213 setting_drawer_list_init();
2214 setting_dbus_handler_init( ad->plugin_node );
2216 setting_plugin_load(plugin_node, (const char *)plugin_node->plugin_path);
2220 * @see [caller] setting_main_list_mouse_up_cb
2221 * @see [caller] setting_main_sel_list_mouse_up_cb
2223 static void __rotate_lock_handler(int chk_status, setting_main_appdata *ad )
2225 SETTING_TRACE_BEGIN;
2226 if( chk_status == 1)
2229 int angle = elm_win_rotation_get(ad->win_main);
2230 elm_win_rotation_with_resize_set(ad->win_main, angle);
2232 elm_win_rotation_with_resize_set(ad->win_main, 0);
2234 vconf_set_bool(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, chk_status);
2240 void setting_main_list_mouse_up_cb(void *data, Evas_Object *eo,
2243 SETTING_TRACE_BEGIN;
2244 retm_if(data == NULL, "Data parameter is NULL");
2245 Setting_GenGroupItem_Data *list_item =
2246 (Setting_GenGroupItem_Data *) data;
2247 SETTING_TRACE("process item [%s]", list_item->keyStr);
2248 list_item->chk_status = elm_check_state_get(eo); /* for update new state */
2250 SETTING_TRACE("change radio[%s], status is:%d", _(list_item->keyStr),
2251 list_item->chk_status);
2252 setting_main_appdata *ad = g_main_ad;
2254 if (!safeStrCmp(KeyStr_UsePacketData, list_item->keyStr)) {
2256 if (elm_check_state_get(eo)) {
2257 setting_set_bool_slp_key
2258 (BOOL_SLP_SETTING_USE_PACKET_DATA,
2259 SETTING_ON_OFF_BTN_ON, &err);
2261 setting_set_bool_slp_key
2262 (BOOL_SLP_SETTING_USE_PACKET_DATA,
2263 SETTING_ON_OFF_BTN_OFF, &err);
2266 } else if (!safeStrCmp(KeyStr_Landscape, list_item->keyStr)) {
2267 __rotate_lock_handler(list_item->chk_status, ad);
2276 void setting_main_sel_list_mouse_up_cb(void *data, Evas_Object *eo,
2279 SETTING_TRACE_BEGIN;
2280 setting_retm_if(data == NULL, "Data parameter is NULL");
2282 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2283 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2284 elm_genlist_item_selected_set(item, 0);
2285 Setting_GenGroupItem_Data *list_item =
2286 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2288 list_item->chk_status = elm_check_state_get(list_item->eo_check);
2291 list_item->chk_status = !list_item->chk_status;
2292 elm_check_state_set(list_item->eo_check, list_item->chk_status);
2294 setting_main_appdata *ad = (setting_main_appdata *) data;
2295 if (!safeStrCmp(KeyStr_UsePacketData, list_item->keyStr)) {
2296 /* setting_reset_slp_key_by_status(eo, BOOL_SLP_SETTING_USE_PACKET_DATA); */
2298 setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
2299 list_item->chk_status, &err);
2301 } else if (!safeStrCmp(KeyStr_Landscape, list_item->keyStr)) {
2302 __rotate_lock_handler(list_item->chk_status, ad);
2308 void __alternate_flight_mode(Evas_Object *check)
2310 SETTING_TRACE_BEGIN;
2312 Eina_Bool status = elm_check_state_get(check);
2313 SETTING_TRACE("flight mode status : %d", status);
2314 setting_main_appdata *ad = g_main_ad;
2316 //Check whether some requestion is processing by TAPI
2317 if (ad->b_fm_requesting)
2319 //Do nothing, just mark the lastest operation..
2320 SETTING_TRACE("Some requestion is processing by TAPI, wait to process");
2321 ad->fm_waiting_op = status ? FM_ENTER : FM_LEAVE;
2325 //otherwise, invalid waiting operation and send requsetion to TAPI:
2326 ad->fm_waiting_op = FM_INVALID;
2328 ret = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
2329 setting_retm_if(ret != TAPI_API_SUCCESS,
2330 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
2332 ret = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
2333 setting_retm_if(ret != TAPI_API_SUCCESS,
2334 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
2338 ad->b_fm_requesting = TRUE;
2342 static void __tethering_disabled_cb(tethering_error_e error, tethering_type_e type, tethering_disabled_cause_e code, void *data)
2347 tethering_h th = (tethering_h)data;
2348 tethering_destroy(th);
2351 ret = wifi_initialize();
2352 setting_retm_if(ret < 0, "*** [ERR] wifi_initialize() ***");
2354 ret = wifi_activate(NULL, NULL);
2356 wifi_deinitialize();
2358 setting_retm_if(ret < 0, "*** [ERR] wifi_activate() ***");
2360 ret = wifi_deinitialize();
2361 setting_retm_if(ret < 0, "*** [ERR] wifi_deinitialize() ***");
2364 static void __tethering_turn_off_resp_cb(void *data, Evas_Object *obj, void *event_info)
2366 setting_retm_if(NULL == obj, "NULL == obj");
2367 int response_type = btn_type(obj);
2368 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)data;
2372 evas_object_del(g_main_ad->popup);
2373 g_main_ad->popup = NULL;
2376 if (POPUP_RESPONSE_OK == response_type)
2378 tethering_h th = NULL;
2379 tethering_error_e ret = TETHERING_ERROR_NONE;
2381 ret = tethering_create(&th);
2382 if (ret != TETHERING_ERROR_NONE) {
2383 list_item->swallow_type = SWALLOW_Type_1ICON_1RADIO;
2384 list_item->chk_status = EINA_FALSE;
2385 elm_object_item_data_set(list_item->item, list_item);
2386 elm_genlist_item_update(list_item->item);
2389 ret = tethering_set_disabled_cb(th, TETHERING_TYPE_WIFI, __tethering_disabled_cb, 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);
2396 tethering_destroy(th);
2400 tethering_disable(th, TETHERING_TYPE_WIFI);
2402 else if (POPUP_RESPONSE_CANCEL == response_type)
2404 list_item->swallow_type = SWALLOW_Type_1ICON_1RADIO;
2405 list_item->chk_status = EINA_FALSE;
2406 elm_object_item_data_set(list_item->item, list_item);
2407 elm_genlist_item_update(list_item->item);
2411 void __alternate_wifi_mode(Setting_GenGroupItem_Data *list_item, Evas_Object *check)
2413 SETTING_TRACE_BEGIN;
2415 Eina_Bool status = elm_check_state_get(check);
2416 SETTING_TRACE("wifi mode status : %d", status);
2420 if (tethering_is_enabled(NULL, TETHERING_TYPE_WIFI) == TRUE) {
2421 list_item->swallow_type = SWALLOW_Type_1ICON_1PROCESS;
2422 elm_object_item_data_set(list_item->item, list_item);
2423 elm_genlist_item_update(list_item->item);
2425 g_main_ad->popup = setting_create_popup_with_btn(list_item,
2426 g_main_ad->win_main, NULL,
2427 _("Connecting Wi-Fi will turn off Mobile hotspot. Continue?"),
2428 __tethering_turn_off_resp_cb,
2429 0, 2, _("IDS_COM_SK_OK"), _("IDS_COM_SK_CANCEL"));
2431 ret = wifi_initialize();
2433 setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err);
2434 list_item->chk_status = value;
2435 elm_object_item_data_set(list_item->item, list_item);
2436 elm_genlist_item_update(list_item->item);
2438 setting_retm_if(ret < 0, "*** [ERR] wifi_initialize() ***");
2441 ret = wifi_activate(NULL, NULL);
2443 setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err);
2444 list_item->chk_status = value;
2445 elm_object_item_data_set(list_item->item, list_item);
2446 elm_genlist_item_update(list_item->item);
2447 wifi_deinitialize();
2449 setting_retm_if(ret < 0, "*** [ERR] wifi_activate() ***");
2451 ret = wifi_deactivate(NULL, NULL);
2453 setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err);
2454 list_item->chk_status = value;
2455 elm_object_item_data_set(list_item->item, list_item);
2456 elm_genlist_item_update(list_item->item);
2457 wifi_deinitialize();
2459 setting_retm_if(ret < 0, "*** [ERR] wifi_deactivate() ***");
2462 ret = wifi_deinitialize();
2464 setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err);
2465 list_item->chk_status = value;
2466 elm_object_item_data_set(list_item->item, list_item);
2467 elm_genlist_item_update(list_item->item);
2469 setting_retm_if(ret < 0, "*** [ERR] wifi_deinitialize() ***");
2471 list_item->swallow_type = SWALLOW_Type_1ICON_1PROCESS;
2472 elm_object_item_data_set(list_item->item, list_item);
2473 elm_genlist_item_update(list_item->item);
2479 void __alternate_bt_mode(Setting_GenGroupItem_Data *list_item, Evas_Object *check)
2481 SETTING_TRACE_BEGIN;
2483 Eina_Bool status = elm_check_state_get(check);
2484 SETTING_TRACE("bt mode status : %d", status);
2488 ret = bt_initialize();
2490 setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err);
2491 list_item->chk_status = value;
2492 elm_object_item_data_set(list_item->item, list_item);
2493 elm_genlist_item_update(list_item->item);
2495 setting_retm_if(ret < 0, "*** [ERR] bt_initialize() ***");
2499 ret = bt_adapter_enable();
2501 setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err);
2502 list_item->chk_status = value;
2503 elm_object_item_data_set(list_item->item, list_item);
2504 elm_genlist_item_update(list_item->item);
2507 setting_retm_if(ret < 0, "*** [ERR] bt_adapter_enable() ***");
2509 ret = bt_adapter_disable();
2511 setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err);
2512 list_item->chk_status = value;
2513 elm_object_item_data_set(list_item->item, list_item);
2514 elm_genlist_item_update(list_item->item);
2517 setting_retm_if(ret < 0, "*** [ERR] bt_adapter_disable() ***");
2520 ret = bt_deinitialize();
2522 setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err);
2523 list_item->chk_status = value;
2524 elm_object_item_data_set(list_item->item, list_item);
2525 elm_genlist_item_update(list_item->item);
2527 setting_retm_if(ret < 0, "*** [ERR] bt_deinitialize() ***");
2529 list_item->swallow_type = SWALLOW_Type_1ICON_1PROCESS;
2530 elm_object_item_data_set(list_item->item, list_item);
2531 elm_genlist_item_update(list_item->item);
2536 void __alternate_nfc_mode(Setting_GenGroupItem_Data *list_item, Evas_Object *check)
2538 SETTING_TRACE_BEGIN;
2540 Eina_Bool status = elm_check_state_get(check);
2541 SETTING_TRACE("nfc mode status : %d", status);
2545 ret = nfc_manager_initialize(NULL, NULL);
2547 setting_get_bool_slp_key(BOOL_SLP_SETTING_NFC_STATUS, &value, &err);
2548 list_item->chk_status = value;
2549 elm_object_item_data_set(list_item->item, list_item);
2550 elm_genlist_item_update(list_item->item);
2552 setting_retm_if(ret < 0, "*** [ERR] nfc_manager_initialize() ***");
2554 ret = nfc_manager_set_activation(status, NULL, NULL);
2556 setting_get_bool_slp_key(BOOL_SLP_SETTING_NFC_STATUS, &value, &err);
2557 list_item->chk_status = value;
2558 elm_object_item_data_set(list_item->item, list_item);
2559 elm_genlist_item_update(list_item->item);
2560 nfc_manager_deinitialize();
2562 setting_retm_if(ret < 0, "*** [ERR] nfc_manager_set_activation() ***");
2564 ret = nfc_manager_deinitialize();
2566 setting_get_bool_slp_key(BOOL_SLP_SETTING_NFC_STATUS, &value, &err);
2567 list_item->chk_status = value;
2568 elm_object_item_data_set(list_item->item, list_item);
2569 elm_genlist_item_update(list_item->item);
2571 setting_retm_if(ret < 0, "*** [ERR] nfc_manager_deinitialize() ***");
2573 list_item->swallow_type = SWALLOW_Type_1ICON_1PROCESS;
2574 elm_object_item_data_set(list_item->item, list_item);
2575 elm_genlist_item_update(list_item->item);
2580 void __alternate_sbeam_mode(Evas_Object *check)
2582 SETTING_TRACE_BEGIN;
2584 Eina_Bool status = elm_check_state_get(check);
2585 SETTING_TRACE("wifi mode status : %d", status);
2587 vconf_set_bool(VCONFKEY_NFC_SBEAM, status);
2593 setting_main_click_list_network_ug_cb(void *data, Evas_Object *obj,
2596 SETTING_TRACE_BEGIN;
2597 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2598 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2600 elm_genlist_item_selected_set(item, EINA_FALSE);
2602 if (g_main_ad->ug) {
2604 ("[ad->ug non-NULL]skip genlist click event!!");
2610 setting_main_appdata *ad = g_main_ad;
2611 setting_main_click_list_item_reset_data(ad, obj);
2615 setting_get_int_slp_key(INT_SLP_SETTING_SIM_SLOT, &value, &err);
2616 SETTING_TRACE("value:%d", value);
2618 case VCONFKEY_TELEPHONY_SIM_INSERTED:
2620 struct ug_cbs *cbs =
2621 (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
2622 setting_retm_if(!cbs, "calloc failed");
2623 cbs->layout_cb = setting_main_layout_ug_cb;
2624 cbs->result_cb = setting_main_result_ug_cb;
2625 cbs->destroy_cb = setting_main_destroy_ug_cb;
2626 cbs->priv = (void *)ad;
2627 setting_main_click_list_item_ug_cb(data, obj,
2628 "setting-network-efl",
2633 case VCONFKEY_TELEPHONY_SIM_NOT_PRESENT:
2634 setting_create_simple_popup(NULL, ad->win_main,
2635 NULL, _("IDS_ST_HEADER_INSERT_SIM_CARD_ABB"));
2636 SETTING_TRACE("%s*** [ERR] No SIM. sim_slot_type=%d ***%s",
2637 SETTING_FONT_RED, value, SETTING_FONT_BLACK);
2640 case VCONFKEY_TELEPHONY_SIM_CARD_ERROR:
2641 case VCONFKEY_TELEPHONY_SIM_UNKNOWN:
2642 setting_create_simple_popup(NULL, ad->win_main,
2643 NULL,_("IDS_COM_BODY_INVALID_SIM_CARD"));
2644 SETTING_TRACE("%s*** [ERR] Invalid SIM. sim_slot_type=%d ***%s",
2645 SETTING_FONT_RED, value, SETTING_FONT_BLACK);
2658 setting_main_click_Gendial_list_flight_mode_cb(void *data, Evas_Object *obj,
2662 setting_retm_if(data == NULL, "Data parameter is NULL");
2664 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2665 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2666 elm_genlist_item_selected_set(item, 0);
2667 Setting_GenGroupItem_Data *list_item =
2668 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2669 int old_status = elm_check_state_get(list_item->eo_check);
2671 list_item->chk_status = !old_status;
2672 elm_check_state_set(list_item->eo_check, list_item->chk_status);
2674 __alternate_flight_mode(list_item->eo_check);
2682 setting_main_click_list_flight_mode_cb(void *data, Evas_Object *obj,
2685 SETTING_TRACE_BEGIN;
2686 retm_if(data == NULL, "Data parameter is NULL");
2687 Setting_GenGroupItem_Data *list_item =
2688 (Setting_GenGroupItem_Data *) data;
2689 list_item->chk_status = elm_check_state_get(obj); /* for update new state */
2690 SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2691 list_item->chk_status);
2693 __alternate_flight_mode(obj);
2701 setting_main_click_list_wifi_mode_cb(void *data, Evas_Object *obj,
2704 SETTING_TRACE_BEGIN;
2705 retm_if(data == NULL, "Data parameter is NULL");
2706 Setting_GenGroupItem_Data *list_item =
2707 (Setting_GenGroupItem_Data *) data;
2708 list_item->chk_status = elm_check_state_get(obj); /* for update new state */
2709 SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2710 list_item->chk_status);
2712 __alternate_wifi_mode(list_item, obj);
2720 setting_main_click_list_bt_mode_cb(void *data, Evas_Object *obj,
2723 SETTING_TRACE_BEGIN;
2724 retm_if(data == NULL, "Data parameter is NULL");
2725 Setting_GenGroupItem_Data *list_item =
2726 (Setting_GenGroupItem_Data *) data;
2727 list_item->chk_status = elm_check_state_get(obj); /* for update new state */
2728 SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2729 list_item->chk_status);
2731 __alternate_bt_mode(list_item, obj);
2739 setting_main_click_list_nfc_mode_cb(void *data, Evas_Object *obj,
2742 SETTING_TRACE_BEGIN;
2743 retm_if(data == NULL, "Data parameter is NULL");
2744 Setting_GenGroupItem_Data *list_item =
2745 (Setting_GenGroupItem_Data *) data;
2746 list_item->chk_status = elm_check_state_get(obj); /* for update new state */
2747 SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2748 list_item->chk_status);
2750 __alternate_nfc_mode(list_item, obj);
2758 setting_main_click_list_sbeam_mode_cb(void *data, Evas_Object *obj,
2761 SETTING_TRACE_BEGIN;
2762 retm_if(data == NULL, "Data parameter is NULL");
2763 Setting_GenGroupItem_Data *list_item =
2764 (Setting_GenGroupItem_Data *) data;
2765 list_item->chk_status = elm_check_state_get(obj); /* for update new state */
2766 SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2767 list_item->chk_status);
2769 __alternate_sbeam_mode(obj);
2774 * store current selection in setting.cfg
2776 void setting_try_save_check_list(void *data)
2778 SETTING_TRACE_BEGIN;
2779 setting_main_appdata *ad = (setting_main_appdata *) data;
2781 Eina_List *check_list = ad->item_check_list;
2782 Setting_GenGroupItem_Data *list_item = NULL;
2783 int update_count = 0;
2785 while (check_list) {
2786 list_item = (Setting_GenGroupItem_Data *) eina_list_data_get(check_list);
2787 if (NULL == list_item) continue;
2790 if (list_item->chk_status) {
2791 /* to update config file */
2792 setting_cfg_set_pos(list_item->keyStr, Cfg_Item_Pos_Level0);
2794 /* to update config file */
2795 setting_cfg_set_pos(list_item->keyStr, Cfg_Item_Pos_Level1);
2797 check_list = eina_list_next(check_list);
2800 if (update_count == 0) {
2801 /* to popup tips notify */
2803 setting_cfg_file_update();
2809 setting_main_click_edit_preferred_cb(void *data, Evas_Object *obj, void *event_info)
2811 SETTING_TRACE_BEGIN;
2813 setting_main_appdata *ad = (setting_main_appdata *) data;
2814 ad->view_type = SETTING_VIEW_ALL_CHECK;
2815 __setting_create_prefered_view(ad);
2816 __load_check_list(ad, &(ad->edit_preferred_genlist), NULL);