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 <bluetooth.h>
27 #define PLUGIN_PREFIX "/opt"
29 typedef struct _DrawAppInfo
32 //------------------------------------
33 void (*draw_app)(void* arg, char* name, char* pkgname);
37 static int setting_main_create(void *cb);
38 static int setting_main_destroy(void *cb);
39 static int setting_main_update(void *cb);
40 static int setting_main_cleanup(void *cb);
42 setting_view setting_view_main = {
43 .create = setting_main_create,
44 .update = setting_main_update,
45 .destroy = setting_main_destroy,
46 .cleanup = setting_main_cleanup,
49 setting_main_appdata *g_main_ad = NULL;
51 static void setting_main_tapi_event_cb(TapiHandle *handle, int result, void *data, void *user_data);
52 static int setting_main_refresh(void *data);
53 static void __alternate_flight_mode(Evas_Object *check);
54 static void setting_main_click_Gendial_list_flight_mode_cb(void *data,
57 static void __alternate_flight_mode(Evas_Object *check);
59 void setting_main_click_list_item_ug_cb(void *data, Evas_Object *obj, char *ug_to_load, service_h svc, struct ug_cbs *cbs);
62 __setting_chk_changed(void *data, Evas_Object *obj, void *event_info)
64 /* SETTING_TRACE_BEGIN; */
65 retm_if(data == NULL, "Data parameter is NULL");
66 Setting_GenGroupItem_Data *list_item =
67 (Setting_GenGroupItem_Data *) data;
68 /* SETTING_TRACE("process item [%s]", _(list_item->keyStr)); */
69 list_item->chk_status = elm_check_state_get(obj);
71 Eina_List *check_list = g_main_ad->item_check_list;
72 Setting_GenGroupItem_Data *item = NULL;
73 bool isFoundNotSelSomeone = FALSE;
74 bool isFoundSelSomeone = FALSE;
76 item = (Setting_GenGroupItem_Data *)
77 eina_list_data_get(check_list);
81 if (!(item->chk_status)) {
82 isFoundNotSelSomeone = TRUE;
84 isFoundSelSomeone = TRUE;
86 if (isFoundNotSelSomeone && isFoundSelSomeone) {
89 check_list = eina_list_next(check_list);
92 if (isFoundNotSelSomeone) {
93 g_main_ad->check_all_item->chk_status = 0; /* for update new state */
95 g_main_ad->check_all_item->chk_status = 1; /* for update new state */
97 elm_object_item_data_set(g_main_ad->check_all_item->item, g_main_ad->check_all_item);
98 elm_genlist_item_update(g_main_ad->check_all_item->item);
100 if (isFoundSelSomeone) {
101 /* SETTING_TRACE("Set it to active"); */
103 elm_object_item_disabled_set(elm_toolbar_last_item_get
104 (g_main_ad->controllbar_all_check),
109 static void __setting_list_changed(void *data, Evas_Object *obj,
115 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
117 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
118 elm_genlist_item_selected_set(item, 0);
119 Setting_GenGroupItem_Data *list_item =
120 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
122 int old_status = elm_check_state_get(list_item->eo_check);
124 list_item->chk_status = !old_status;
125 elm_check_state_set(list_item->eo_check, list_item->chk_status);
127 Eina_List *check_list = g_main_ad->item_check_list;
128 Setting_GenGroupItem_Data *group_item = NULL;
129 bool isFoundNotSelSomeone = FALSE;
130 bool isFoundSelSomeone = FALSE;
132 group_item = (Setting_GenGroupItem_Data *)
133 eina_list_data_get(check_list);
134 if (NULL == group_item) {
137 if (!(group_item->chk_status)) {
138 isFoundNotSelSomeone = TRUE;
141 isFoundSelSomeone = TRUE;
143 if (isFoundNotSelSomeone && isFoundSelSomeone) {
147 check_list = eina_list_next(check_list);
150 if (isFoundNotSelSomeone) {
151 g_main_ad->check_all_item->chk_status = 0; /* for update new state */
153 g_main_ad->check_all_item->chk_status = 1; /* for update new state */
155 elm_object_item_data_set(g_main_ad->check_all_item->item, g_main_ad->check_all_item);
156 elm_genlist_item_update(g_main_ad->check_all_item->item);
158 if (isFoundSelSomeone) {
159 /* SETTING_TRACE("Set it to active"); */
161 elm_object_item_disabled_set(elm_toolbar_last_item_get
162 (g_main_ad->controllbar_all_check),
169 __setting_chk_sel_all_changed(void *data, Evas_Object *obj, void *event_info)
171 /* SETTING_TRACE_BEGIN; */
172 retm_if(data == NULL, "Data parameter is NULL");
173 Setting_GenGroupItem_Data *list_item =
174 (Setting_GenGroupItem_Data *) data;
175 bool is_all_checked = elm_check_state_get(obj);
176 list_item->chk_status = is_all_checked; /* for update new state */
177 /* SETTING_TRACE("is_all_checked:%d", is_all_checked); */
179 Eina_List *check_list = g_main_ad->item_check_list;
182 list_item = (Setting_GenGroupItem_Data *)
183 eina_list_data_get(check_list);
184 if (NULL == list_item) {
187 list_item->chk_status = is_all_checked;
188 elm_object_item_data_set(list_item->item, list_item);
189 elm_genlist_item_update(list_item->item);
190 check_list = eina_list_next(check_list);
192 if (is_all_checked) {
194 elm_object_item_disabled_set(elm_toolbar_last_item_get
195 (g_main_ad->controllbar_all_check),
200 static void __setting_list_sel_all_changed(void *data, Evas_Object *obj,
206 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
207 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
208 elm_genlist_item_selected_set(item, 0);
209 Setting_GenGroupItem_Data *list_item =
210 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
212 int old_status = elm_check_state_get(list_item->eo_check);
214 int is_all_checked = list_item->chk_status = !old_status;
215 elm_check_state_set(list_item->eo_check, list_item->chk_status);
217 Eina_List *check_list = g_main_ad->item_check_list;
220 list_item = (Setting_GenGroupItem_Data *)
221 eina_list_data_get(check_list);
222 if (NULL == list_item) {
225 list_item->chk_status = is_all_checked;
226 /* elm_check_state_set(list_item->eo_check, is_all_checked); */
227 elm_object_item_data_set(list_item->item, list_item);
228 elm_genlist_item_update(list_item->item);
229 check_list = eina_list_next(check_list);
231 if (is_all_checked) {
233 elm_object_item_disabled_set(elm_toolbar_last_item_get
234 (g_main_ad->controllbar_all_check),
240 static void __load_check_list(void *data, Evas_Object **genlist,
244 setting_main_appdata *ad = (setting_main_appdata *) data;
248 Cfg_Item_Position pos = Cfg_Item_Pos_Uninstall;
249 bool isFoundNonSelItem = FALSE;
250 bool isFoundSelSomeoneItem = FALSE;
253 char *icon_path = NULL;
256 setting_create_Gendial_field_def(ad->gl_sel_all,
257 &(ad->itc[GENDIAL_Type_sel_all]),
258 __setting_list_sel_all_changed, ad,
259 SWALLOW_Type_1CHECK, NULL, NULL,
260 state, KeyStr_Select_All, NULL,
261 __setting_chk_sel_all_changed);
262 __BACK_POINTER_SET(ad->check_all_item);
264 Setting_GenGroupItem_Data *item = NULL;
265 Setting_GenGroupItem_Data *category_item = NULL;
266 for (i = 0; i < setting_cfg_get_category_length(); i++) {
267 if (NULL == menuNameKey) {
268 /* SETTING_TRACE("load all the items in config file"); */
271 (setting_cfg_get_category_name(i), menuNameKey)) {
274 char *category_name = setting_cfg_get_category_name(i);
277 setting_create_Gendial_field_group_titleItem(*genlist,
279 [GENDIAL_Type_group_item]),
281 ELM_GENLIST_ITEM_NONE,
285 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
286 keyStr = setting_cfg_get_keyname_idx(i, j);
287 pos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
289 if (Cfg_Item_Pos_Level1 == pos) {
291 isFoundNonSelItem = TRUE;
294 isFoundSelSomeoneItem = TRUE;
297 icon_path = setting_cfg_get_icon_path_idx(i, j);
299 setting_create_Gendial_field_groupitem(*genlist,
301 [GENDIAL_Type_1text_2icon_2]),
303 __setting_list_changed,
305 SWALLOW_Type_1CHECKICON,
310 __setting_chk_changed);
312 ad->item_check_list =
313 eina_list_append(ad->item_check_list, item);
316 SETTING_TRACE_ERROR("category_item is NULL");
320 if (ad->check_all_item) {
321 if (isFoundNonSelItem) {
322 ad->check_all_item->chk_status = 0; /* for update new state */
324 ad->check_all_item->chk_status = 1; /* for update new state */
326 elm_object_item_data_set(ad->check_all_item->item, ad->check_all_item);
327 elm_genlist_item_update(ad->check_all_item->item);
329 SETTING_TRACE_ERROR("ad->check_all_item is NULL");
332 if (isFoundSelSomeoneItem) {
333 /* elm_object_item_disabled_set(elm_toolbar_last_item_get
334 (ad->controllbar_all_check),
339 elm_object_item_disabled_set(elm_toolbar_last_item_get
340 (ad->controllbar_all_check),
347 static Setting_GenGroupItem_Data * __flightmode_handler(void* data, char* keyStr, char* icon_path, char* ug_name, Evas_Object *genlist)
349 // NOT UG --> it's just UI drawing
351 setting_main_appdata *ad = (setting_main_appdata *)data;
353 setting_get_bool_slp_key (BOOL_SLP_SETTING_FLIGHT_MODE, &value, &err);
355 /* create flight_mode */
356 ad->data_flight = setting_create_Gendial_field_groupitem(genlist,
357 &(ad->itc[GENDIAL_Type_1text_2icon]),
359 setting_main_click_Gendial_list_flight_mode_cb,
361 SWALLOW_Type_1ICON_1RADIO,
367 setting_main_click_list_flight_mode_cb);
368 __BACK_POINTER_SET(ad->data_flight);
370 return ad->data_flight;
373 static Setting_GenGroupItem_Data * __wifi_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
375 setting_main_appdata *ad = (setting_main_appdata *)data;
377 setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err);
379 char* pa_wifi = get_pa_Wi_Fi_on_off_str();
380 ad->data_wifi = setting_create_Gendial_field_groupitem(genlist,
381 &(ad->itc[GENDIAL_Type_2text_2icon_3]),
383 setting_main_click_list_ex_ug_cb,
385 SWALLOW_Type_1ICON_1RADIO,
391 setting_main_click_list_wifi_mode_cb);
392 __BACK_POINTER_SET(ad->data_wifi);
395 return ad->data_wifi;
398 static Setting_GenGroupItem_Data * __bluetooth_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
400 setting_main_appdata *ad = (setting_main_appdata *)data;
402 setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err);
404 ad->data_bt = setting_create_Gendial_field_groupitem(genlist,
405 &(ad->itc[GENDIAL_Type_2text_2icon_3]),
407 setting_main_click_list_ex_ug_cb,
409 SWALLOW_Type_1ICON_1RADIO,
416 setting_main_click_list_bt_mode_cb);
417 __BACK_POINTER_SET(ad->data_bt);
422 static Setting_GenGroupItem_Data * __allshare_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
424 setting_main_appdata *ad = (setting_main_appdata *)data;
426 Setting_GenGroupItem_Data * obj = setting_create_Gendial_field_groupitem(genlist,
427 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
429 setting_main_click_list_default_ug_cb,
431 SWALLOW_Type_INVALID,
440 static Setting_GenGroupItem_Data * __network_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
442 setting_main_appdata *ad = (setting_main_appdata *)data;
444 ad->data_network = setting_create_Gendial_field_groupitem(genlist,
445 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
447 setting_main_click_list_network_ug_cb,
449 SWALLOW_Type_INVALID,
456 return ad->data_network;
459 static Setting_GenGroupItem_Data * __nfc_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
461 setting_main_appdata *ad = (setting_main_appdata *)data;
464 setting_get_bool_slp_key(BOOL_SLP_SETTING_NFC_STATUS, &value, &err);
466 ad->data_nfc = setting_create_Gendial_field_groupitem(genlist,
467 &(ad->itc[GENDIAL_Type_2text_2icon_3]),
469 setting_main_click_list_ex_ug_cb,
471 SWALLOW_Type_1ICON_1RADIO,
476 get_NFC_on_off_str(),
477 setting_main_click_list_nfc_mode_cb);
478 __BACK_POINTER_SET(ad->data_nfc);
481 setting_create_Gendial_field_def(genlist, &itc_multiline_text, NULL,
482 ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
483 NULL, NULL, 0, SETTING_NFC_DESC, NULL, NULL);
484 elm_genlist_item_select_mode_set(elm_genlist_item_append(genlist, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
485 ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
490 static Setting_GenGroupItem_Data * __default_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
492 setting_main_appdata *ad = (setting_main_appdata *)data;
493 Setting_GenGroupItem_Data * obj = setting_create_Gendial_field_groupitem(genlist,
494 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
496 setting_main_click_list_ex_ug_cb,
498 SWALLOW_Type_INVALID,
509 typedef struct mainlist_entry mainlist_entry;
511 struct mainlist_entry {
513 Setting_GenGroupItem_Data* (*ui_handler)(void* data, char* title, char* iconpath, char* ugname, Evas_Object *genlist);
518 MAINLIST_ENTRY_FLIGHT_MODE = 0,
521 MAINLIST_ENTRY_ALLSHARE,
522 MAINLIST_ENTRY_NETWORK,
524 MAINLIST_ENTRY_DEFAULT,
528 static mainlist_entry mainlist_table[] = {
529 {KeyStr_FlightMode, __flightmode_handler}, // 0 --> NOT UG
530 {KeyStr_WiFi, __wifi_handler}, // 1 --> UG
531 {KeyStr_Bluetooth, __bluetooth_handler}, // 1 --> UG
532 {KeyStr_AllShare, __allshare_handler}, // NOT UG
533 {KeyStr_Network, __network_handler}, // 1 --> UG
534 {KeyStr_NFC, __nfc_handler}, // 1 --> UG
535 {"Default", __default_handler}, // 1 --> UG
537 //--------------------------------------------------------------
542 void __gl_realized(void *data, Evas_Object *obj, void *event_info)
544 //SETTING_TRACE_BEGIN;
545 setting_retm_if(data == NULL, "invalid parameter: data is NULL");
546 setting_retm_if(event_info == NULL, "invalid parameter: event_info is NULL");
547 setting_main_appdata *ad = (setting_main_appdata *)data;
548 Elm_Object_Item *item = (Elm_Object_Item *)event_info;
549 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)elm_object_item_data_get(item);
551 //setting_retm_if(list_item == NULL, "list_item is NULL");
554 if (list_item->group_style == SETTING_GROUP_STYLE_TOP) {
555 elm_object_item_signal_emit(item, "elm,state,top", "");
556 } else if (list_item->group_style == SETTING_GROUP_STYLE_BOTTOM) {
557 elm_object_item_signal_emit(item, "elm,state,bottom", "");
558 } else if (list_item->group_style == SETTING_GROUP_STYLE_CENTER) {
559 elm_object_item_signal_emit(item, "elm,state,center", "");
560 } else if (list_item->group_style == SETTING_GROUP_STYLE_NONE) {
563 SETTING_TRACE_ERROR("list_item->group_style is wrong");
566 /* item is used for description */
567 elm_object_item_signal_emit(item, "elm,state,center", "");
571 // Flight Mode - not UG
572 // All share - not UG
573 // WiFi - added toggle
579 void __load_connectivity_menu_list(void *data, Cfg_Item_Position inputPos, Evas_Object *genlist)
582 setting_main_appdata *ad = data;
583 //group title, only display in setting main view
584 if (SETTING_VIEW_MAIN == ad->view_load) {
585 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
586 &(ad->itc[GENDIAL_Type_group_item]),
588 ELM_GENLIST_ITEM_NONE,
589 KeyStr_Connectivity, NULL);
592 int idx_second_menu = 0;
595 char *icon_path = NULL;
596 char *ug_args = NULL;
597 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
600 bool is_emulator = isEmulBin();
602 Setting_GenGroupItem_Data *item_data = NULL;
605 for (i = 0; i < setting_cfg_get_category_length(); i++) {
607 (setting_cfg_get_category_name(i), KeyStr_Connectivity))
610 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
611 keyStr = setting_cfg_get_keyname_idx(i, j);
612 tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
613 ug_args = setting_cfg_get_ug_args_idx(i, j);
614 icon_path = setting_cfg_get_icon_path_idx(i, j);
615 /* SETTING_TRACE_DEBUG("Got an item[keyStr:%s, ug_args:%s, pos:%d]", */
616 /* keyStr, ug_args, tmpPos); */
619 if (!safeStrCmp(KeyStr_FlightMode, keyStr)) {
620 continue; /* hide Flight Mode in Emulator*/
621 } else if (!safeStrCmp(KeyStr_WiFi, keyStr)) {
622 continue; /* hide WIFI in Emulator*/
623 } else if (!safeStrCmp(KeyStr_WiFiDirect, keyStr)) {
624 continue; /* hide WiFiDirect in Emulator*/
625 } else if (!safeStrCmp(KeyStr_Network, keyStr)) {
626 continue; /* hide Network in Emulator*/
627 } else if (!safeStrCmp(KeyStr_Bluetooth, keyStr)) {
628 continue; /* hide Bluetooth in Emulator*/
629 } else if (!safeStrCmp(KeyStr_MobileAP, keyStr)) {
630 continue; /* hide Tethering in Emulator*/
636 if (idx_second_menu < MAX_MORE_MENU_NUM
637 && Cfg_Item_Pos_Level1 == tmpPos
638 && SETTING_VIEW_MAIN == ad->view_load
639 && MAIN_PROFILE_PREFERRED == ad->profile_type) {
641 if (is_ug_installed_by_ug_args(ug_args)) {
642 ad->more_connective_menus[idx_second_menu++] = keyStr;
646 if (Cfg_Item_Pos_Level_All == inputPos) {
647 } else if (inputPos != tmpPos) { /* not in the inputPos level */
651 if (!safeStrCmp(KeyStr_FlightMode, keyStr)) { /* load special radio */
653 item_data = mainlist_table[MAINLIST_ENTRY_FLIGHT_MODE].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
655 } else if (!safeStrCmp(KeyStr_AllShare, keyStr)) { /* NOT UG */
657 item_data = mainlist_table[MAINLIST_ENTRY_ALLSHARE].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
659 } else if (!safeStrCmp(KeyStr_WiFi, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
661 item_data = mainlist_table[MAINLIST_ENTRY_WIFI].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
663 } else if (!safeStrCmp(KeyStr_Bluetooth, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
665 item_data = mainlist_table[MAINLIST_ENTRY_BT].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
669 else if (!safeStrCmp(KeyStr_MobileAP, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
671 item_data = mainlist_table[MAINLIST_ENTRY_MOBILEAP].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
675 else if (!safeStrCmp(KeyStr_Network, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special UG */
677 item_data = mainlist_table[MAINLIST_ENTRY_NETWORK].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
679 } else if (!safeStrCmp(KeyStr_NFC, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
680 int nfc_value = FALSE; //default
681 vconf_get_bool(VCONFKEY_NFC_FEATURE, &nfc_value);
682 if (VCONFKEY_NFC_FEATURE_ON == nfc_value)
684 item_data = mainlist_table[MAINLIST_ENTRY_NFC].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
686 } else { /* load other UGs */
687 if (is_ug_installed_by_ug_args(ug_args))
689 item_data = mainlist_table[MAINLIST_ENTRY_DEFAULT].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
695 item_data->group_style = SETTING_GROUP_STYLE_TOP;
696 } else if (j == setting_cfg_get_menu_length(i) - 1) {
697 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
699 item_data->group_style = SETTING_GROUP_STYLE_CENTER;
703 item_data->group_style = SETTING_GROUP_STYLE_TOP;
710 //end group , only display in setting main view
711 #if SUPPORT_MORE_ITEM_FUNCTION
712 if (SETTING_VIEW_MAIN == ad->view_load && MAIN_PROFILE_PREFERRED == ad->profile_type && idx_second_menu > 0)
714 char sub_text[MAX_COMMON_BUFFER_LEN] = {0, };
716 while (idx < MAX_MORE_MENU_NUM && ad->more_connective_menus[idx])
720 safeStrNCat(sub_text, ", ", MAX_COMMON_BUFFER_LEN);
722 safeStrNCat(sub_text, _(ad->more_connective_menus[idx]), MAX_COMMON_BUFFER_LEN);
726 ad->data_moreConnect =
727 setting_create_Gendial_field_groupitem(ad->main_genlist,
728 &(ad->itc[GENDIAL_Type_2text_3]),
730 setting_main_click_list_more_cb,
732 SWALLOW_Type_INVALID,
739 __BACK_POINTER_SET(ad->data_moreConnect);
741 /* if has <more ..> item , change the last item_date to SETTING_GROUP_STYLE_CENTER*/
742 if (item_data && index > 1) {
743 item_data->group_style = SETTING_GROUP_STYLE_CENTER;
745 ad->data_moreConnect->group_style = SETTING_GROUP_STYLE_BOTTOM;
747 item_data = ad->data_moreConnect;
753 item_data->group_style = SETTING_GROUP_STYLE_NONE;
754 } else if (index == 2) {
755 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
760 void __load_connectivity_level0_list(void *data)
762 setting_main_appdata *ad = data;
763 __load_connectivity_menu_list(ad, Cfg_Item_Pos_Level0, ad->main_genlist);
766 void __load_connectivity_level_all_list(void *data)
769 setting_main_appdata *ad = data;
770 __load_connectivity_menu_list(ad, Cfg_Item_Pos_Level_All, ad->main_genlist);
773 void __load_system_menu_list(void *data, Cfg_Item_Position inputPos, Evas_Object *genlist)
776 SETTING_TRACE_DEBUG("pos :%d", inputPos);
777 setting_main_appdata *ad = data;
778 //group title, only display in setting main view
779 if (SETTING_VIEW_MAIN == ad->view_load) {
780 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
781 &(ad->itc[GENDIAL_Type_group_item]),
783 ELM_GENLIST_ITEM_NONE,
784 KeyStr_System, NULL);
786 int idx_second_menu = 0;
789 char *icon_path = NULL;
790 char *ug_args = NULL;
792 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
797 bool is_emulator = isEmulBin();
799 Setting_GenGroupItem_Data *item_data = NULL;
802 //SETTING_TRACE("setting_cfg_get_category_length() :: %d ", setting_cfg_get_category_length());
803 for (i = 0; i < setting_cfg_get_category_length(); i++) {
804 if (safeStrCmp(setting_cfg_get_category_name(i), KeyStr_System))
807 //SETTING_TRACE(" setting_cfg_get_menu_length(%d) :: %d ",i, setting_cfg_get_menu_length(i) );
808 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
809 keyStr = setting_cfg_get_keyname_idx(i, j);
810 /* sg_path = setting_cfg_get_ugpath_idx(i, j); */
811 tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
812 icon_path = setting_cfg_get_icon_path_idx(i, j);
813 ug_args = setting_cfg_get_ug_args_idx(i, j);
815 //SETTING_TRACE("KeyString : %s , tmpPos : %d , inputPos : %d ", keyStr, tmpPos, inputPos );
818 if (!safeStrCmp(KeyStr_Security, keyStr)) {
819 continue; /* hide Security in Emulator*/
820 } else if (!safeStrCmp(KeyStr_Memory, keyStr)) {
821 continue; /* hide Memory in Emulator*/
822 } else if (!safeStrCmp(KeyStr_Powersaving, keyStr)) {
823 continue; /* hide Powersaving in Emulator*/
824 } else if (!safeStrCmp(KeyStr_FlightMode, keyStr)) {
825 continue; /* hide Powersaving in Emulator*/
831 if (idx_second_menu < MAX_MORE_MENU_NUM
832 && Cfg_Item_Pos_Level1 == tmpPos
833 && SETTING_VIEW_MAIN == ad->view_load
834 && MAIN_PROFILE_PREFERRED == ad->profile_type) {
836 if (is_ug_installed_by_ug_args(ug_args)) {
837 ad->more_system_menus[idx_second_menu++] = keyStr;
841 if (Cfg_Item_Pos_Level_All == inputPos) {
843 //SETTING_TRACE("Cfg_Item_Pos_Level_All == inputPos ---> no draw --- WHY?? ");
844 } else if (inputPos != tmpPos) { /* not in the inputPos level */
845 //SETTING_TRACE("inputPos == tmp Pos ---> no draw --- WHY?? ");
849 if (!safeStrCmp(KeyStr_FlightMode, keyStr)) { /* load special radio */
851 item_data = mainlist_table[MAINLIST_ENTRY_FLIGHT_MODE].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
854 else if (!safeStrCmp(KeyStr_Landscape, keyStr)) { /* load special UG */
857 (VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, &value);
859 ad->data_rotationMode =
860 setting_create_Gendial_field_groupitem(genlist,
861 &(ad->itc[GENDIAL_Type_1text_2icon]),
863 setting_main_sel_list_mouse_up_cb,
865 SWALLOW_Type_1ICON_1RADIO,
871 setting_main_list_mouse_up_cb);
872 __BACK_POINTER_SET(ad->data_rotationMode);
873 item_data = ad->data_rotationMode;
875 else if (!safeStrCmp(KeyStr_Brightness, keyStr)) {
877 char* pa_bright = get_brightness_mode_str();
879 setting_create_Gendial_field_groupitem(genlist,
880 &(ad->itc[GENDIAL_Type_1icon_2text]),
882 setting_main_click_list_ex_ug_cb,
884 SWALLOW_Type_INVALID,
891 __BACK_POINTER_SET(ad->data_bright);
892 item_data = ad->data_bright;
895 else { /* load other UGs */
896 item_data = setting_create_Gendial_field_groupitem(genlist,
897 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
899 setting_main_click_list_ex_ug_cb,
901 SWALLOW_Type_INVALID,
912 item_data->group_style = SETTING_GROUP_STYLE_TOP;
913 } else if (j == setting_cfg_get_menu_length(i) - 1) {
914 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
916 item_data->group_style = SETTING_GROUP_STYLE_CENTER;
920 item_data->group_style = SETTING_GROUP_STYLE_TOP;
926 //end group, only display in setting main view
927 #if SUPPORT_MORE_ITEM_FUNCTION
928 if (SETTING_VIEW_MAIN == ad->view_load && MAIN_PROFILE_PREFERRED == ad->profile_type && idx_second_menu > 0)
930 char sub_text[MAX_COMMON_BUFFER_LEN] = {0, };
932 while (idx < MAX_MORE_MENU_NUM && ad->more_system_menus[idx])
936 safeStrNCat(sub_text, ", ", MAX_COMMON_BUFFER_LEN);
938 safeStrNCat(sub_text, _(ad->more_system_menus[idx]), MAX_COMMON_BUFFER_LEN);
942 ad->data_moreSystem =
943 setting_create_Gendial_field_groupitem(ad->main_genlist,
944 &(ad->itc[GENDIAL_Type_2text_3]),
946 setting_main_click_list_more_cb,
948 SWALLOW_Type_INVALID,
955 __BACK_POINTER_SET(ad->data_moreSystem);
957 /* if has <more ..> item , change the last item_date to SETTING_GROUP_STYLE_CENTER*/
958 if (item_data && index > 1) {
959 item_data->group_style = SETTING_GROUP_STYLE_CENTER;
961 ad->data_moreSystem->group_style = SETTING_GROUP_STYLE_BOTTOM;
963 item_data = ad->data_moreSystem;
968 item_data->group_style = SETTING_GROUP_STYLE_NONE;
969 } else if (index == 2) {
970 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
974 static void __load_system_level0_list(void *data)
976 setting_main_appdata *ad = data;
977 __load_system_menu_list(ad, Cfg_Item_Pos_Level0, ad->main_genlist);
980 static void __load_system_level_all_list(void *data)
983 setting_main_appdata *ad = data;
984 __load_system_menu_list(ad, Cfg_Item_Pos_Level_All, ad->main_genlist);
987 static void __load_applications_menu_list(void *data,
988 Cfg_Item_Position inputPos)
991 SETTING_TRACE_DEBUG("pos :%d", inputPos);
992 setting_main_appdata *ad = data;
994 bool is_emulator = isEmulBin();
997 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
998 &(ad->itc[GENDIAL_Type_group_item]),
1000 ELM_GENLIST_ITEM_NONE,
1001 KeyStr_Applications, NULL);
1002 char *keyStr = NULL;
1003 char *icon_path = NULL;
1004 char *ug_args = NULL;
1005 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
1008 Setting_GenGroupItem_Data *item_data = NULL;
1010 for (i = 0; i < setting_cfg_get_category_length(); i++) {
1012 (setting_cfg_get_category_name(i), KeyStr_Applications))
1015 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
1016 keyStr = setting_cfg_get_keyname_idx(i, j);
1017 icon_path = setting_cfg_get_icon_path_idx(i, j);
1018 ug_args = setting_cfg_get_ug_args_idx(i, j);
1020 (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
1022 if (Cfg_Item_Pos_Level_All == inputPos) {
1023 } else if (inputPos != tmpPos) { /* not in the inputPos level */
1028 /* hide all except Email */
1029 if (safeStrCmp(KeyStr_Email, keyStr)) {
1036 item_data = setting_create_Gendial_field_groupitem(ad->main_genlist,
1037 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1039 setting_main_click_list_ex_ug_cb,
1041 SWALLOW_Type_INVALID,
1048 item_data->group_style = SETTING_GROUP_STYLE_TOP;
1049 } else if (j == setting_cfg_get_menu_length(i) - 1) {
1050 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
1052 item_data->group_style = SETTING_GROUP_STYLE_CENTER;
1056 item_data->group_style = SETTING_GROUP_STYLE_TOP;
1064 item_data->group_style = SETTING_GROUP_STYLE_NONE;
1065 } else if (index == 2) {
1066 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
1072 static void __load_applications_level0_list(void *data)
1074 setting_main_appdata *ad = data;
1075 __load_applications_menu_list(ad, Cfg_Item_Pos_Level0);
1078 static void __load_applications_level_all_list(void *data)
1080 SETTING_TRACE_BEGIN;
1081 setting_main_appdata *ad = data;
1082 __load_applications_menu_list(ad, Cfg_Item_Pos_Level_All);
1086 bool is_3rdapp_installed_setting_cfg(char* pkgname)
1088 SETTING_TRACE_BEGIN;
1092 if (snprintf(path, 512, PLUGIN_PREFIX"/apps/%s/setting/setting.xml", pkgname) < 0)
1096 bool result_opt = false;
1098 if(stat(path, &st) == 0) {
1101 SETTING_TRACE_ERROR(" %s is *NOT* present\n", path);
1110 * ex) name : AppSetting4
1111 * ex) pkgname : UBKFwQidax.AppSetting4
1113 static void draw_3rdapp(void* data, char* name, char* pkgname)
1115 SETTING_TRACE_BEGIN;
1116 SETTING_TRACE(" name : %s", name);
1117 SETTING_TRACE(" pkgname : %s", pkgname);
1119 setting_main_appdata *ad = data;
1123 if (snprintf(fullpath, 512, PLUGIN_PREFIX"/apps/%s/setting/setting.xml", pkgname) < 0)
1126 SETTING_TRACE(" fullpath : %s", fullpath);
1130 char* plugin_path = strdup(fullpath);
1131 Setting_GenGroupItem_Data * plugin_node = setting_create_Gendial_field_groupitem(ad->main_genlist,
1132 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1134 setting_main_click_list_plugin_cb,
1136 SWALLOW_Type_INVALID,
1137 IMG_DefaultIcon, NULL,
1138 0, name, plugin_path, // <<-- refactoring
1148 static ail_cb_ret_e __download_apps_cb(ail_appinfo_h ai, void* data)
1150 DrawAppInfo* pinfo = (DrawAppInfo*)data;
1153 if (AIL_ERROR_OK == ail_appinfo_get_str(ai, AIL_PROP_PACKAGE_STR, &id))
1155 SETTING_TRACE(" 3rd party - app name : ----> %s ", id);
1158 ail_appinfo_h handle;
1163 bool nodisplay = false;
1164 bool removable = true;
1166 if (AIL_ERROR_OK == ail_package_get_appinfo(id, &handle))
1168 if (AIL_ERROR_OK != ail_appinfo_get_str(handle, AIL_PROP_NAME_STR, &name))
1169 SETTING_TRACE("cannot get name");
1171 if (AIL_ERROR_OK != ail_appinfo_get_str(handle, AIL_PROP_ICON_STR, &icon))
1172 SETTING_TRACE("cannot get icon");
1174 if (AIL_ERROR_OK != ail_appinfo_get_bool(handle, AIL_PROP_NODISPLAY_BOOL, &nodisplay))
1175 SETTING_TRACE("cannot get nodisplay");
1177 if (AIL_ERROR_OK != ail_appinfo_get_bool(handle, AIL_PROP_X_SLP_REMOVABLE_BOOL, &removable))
1178 SETTING_TRACE("cannot get removable");
1180 if (AIL_ERROR_OK != ail_appinfo_get_int(handle, AIL_PROP_X_SLP_INSTALLEDTIME_INT, &installed_time))
1181 SETTING_TRACE("cannot get installed_time");
1183 //SETTING_TRACE("installed_time = %d ", installed_time);
1184 if (installed_time != 0 && is_3rdapp_installed_setting_cfg(id) == true )
1186 SETTING_TRACE(" 3rd party - app name : ----> id : %s --- name : %s ", id, name);
1187 SETTING_TRACE(" 3rd party - icon : ----> %s ", icon);
1188 SETTING_TRACE(" 3rd party - nodisplay : ----> %d ", nodisplay);
1192 if (pinfo->draw_app != NULL)
1194 SETTING_TRACE(">>> pkg name --> %s ", id);
1195 pinfo->draw_app(pinfo->data, strdup(name)/* appname*/, strdup(id)/* pkg_name*/);
1200 return AIL_CB_RET_CONTINUE;
1205 * get 3rd party applist from AIL & searching dir/file by the defined rule
1207 * if data is NULL --> just get how many items are there
1208 * if data is NOT NULL --> draw UI code
1210 static int get_downloadapp_list(void* data)
1212 SETTING_TRACE_BEGIN;
1214 setting_main_appdata *ad = data;
1219 DrawAppInfo* pinfo = (DrawAppInfo*)malloc(sizeof(DrawAppInfo));
1223 pinfo->draw_app = draw_3rdapp;
1226 if (ail_filter_new(&f) == AIL_ERROR_OK)
1228 if (ail_filter_add_bool(f, AIL_PROP_NODISPLAY_BOOL, false) != AIL_ERROR_OK)
1230 SETTING_TRACE("ail filter error");
1235 ail_filter_destroy(f);
1239 ail_filter_list_appinfo_foreach(f, __download_apps_cb, pinfo);
1240 //---------------------------------------------------------------
1241 ail_filter_destroy(f);
1243 ncount = pinfo->ncount;
1253 static int __get_downloaded_apps_num(Cfg_Item_Position inputPos)
1255 SETTING_TRACE_BEGIN;
1256 SETTING_TRACE_DEBUG("pos :%d", inputPos);
1257 int downloaded_apps_num = 0;
1258 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
1260 for (i = 0; i < setting_cfg_get_category_length(); i++) {
1262 (setting_cfg_get_category_name(i), KeyStr_DownloadedAPPs))
1265 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
1266 tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
1267 if (Cfg_Item_Pos_Level_All == inputPos) {
1268 } else if (inputPos != tmpPos) { /* not in the inputPos level */
1272 downloaded_apps_num++;
1276 // draw UI with AUL code
1278 downloaded_apps_num = get_downloadapp_list(NULL);
1279 SETTING_TRACE("Exit %s with return[%d]",__FUNCTION__, downloaded_apps_num);
1282 SETTING_TRACE("Exit %s with return[%d]",__FUNCTION__, downloaded_apps_num);
1283 return downloaded_apps_num;
1287 static void __load_downloaded_apps_menu_list(void *data,
1288 Cfg_Item_Position inputPos)
1290 SETTING_TRACE_BEGIN;
1291 SETTING_TRACE_DEBUG("pos :%d", inputPos);
1292 setting_main_appdata *ad = data;
1294 // if the number of download apps is zero, display a bottom seperator
1295 if (0 == __get_downloaded_apps_num(inputPos)) {
1296 Elm_Object_Item *item = NULL;
1297 item = elm_genlist_item_append(ad->main_genlist, &itc_bottom_seperator, NULL, NULL,
1298 ELM_GENLIST_ITEM_NONE, NULL, NULL);
1299 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1304 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
1305 &(ad->itc[GENDIAL_Type_group_item]),
1307 ELM_GENLIST_ITEM_NONE,
1308 KeyStr_DownloadedAPPs,
1310 get_downloadapp_list(ad);
1311 //SETTING_TRACE("Exit %s with return[%d]",__FUNCTION__, downloaded_apps_num);
1315 static void __load_downloaded_apps_level0_list(void *data)
1317 setting_main_appdata *ad = data;
1318 __load_downloaded_apps_menu_list(ad, Cfg_Item_Pos_Level0);
1321 static void __load_downloaded_apps_level_all_list(void *data)
1323 SETTING_TRACE_BEGIN;
1324 setting_main_appdata *ad = data;
1325 __load_downloaded_apps_menu_list(ad, Cfg_Item_Pos_Level_All);
1328 static void __check_all_view_clear(void *data)
1330 SETTING_TRACE_BEGIN;
1332 setting_main_appdata *ad = data;
1333 if (ad->item_check_list) {
1334 eina_list_free(ad->item_check_list);
1335 ad->item_check_list = NULL;
1338 ad->gl_sel_all = NULL;
1339 ad->edit_preferred_genlist = NULL;
1340 //ad->controllbar_all_check = NULL;
1341 ad->check_all_item =NULL;
1344 static void __prefered_buttons_cb(void *data, Evas_Object *obj, void *event_info)
1346 SETTING_TRACE_BEGIN;
1348 setting_main_appdata *ad = (setting_main_appdata *) data;
1349 const char *key = NULL;
1351 key = elm_object_text_get(obj);
1352 setting_retm_if(data == NULL
1353 || key == NULL, "data == NULL || key == NULL");
1355 SETTING_TRACE_DEBUG("press button: %s", key);
1358 if (!safeStrCmp(key, dgettext("sys_string", "IDS_COM_SK_DONE"))) {
1360 if (ad->profile_type == MAIN_PROFILE_ALL) {
1361 SETTING_TRACE_DEBUG("Cancel to hide current view.");
1362 setting_try_save_check_list(ad); /* need to save too */
1363 __check_all_view_clear(ad);
1364 elm_naviframe_item_pop(ad->navibar_main); // pop(preferred) --> main
1368 // MAIN_PROFILE_PREFERRED and Etc
1369 // redraw setting-main
1370 setting_try_save_check_list(ad);
1371 elm_naviframe_item_pop(ad->navibar_main); // pop (preferred) -> main
1373 //After the view is popuped, all the object handlers should be reset NULL.
1374 __check_all_view_clear(ad);
1375 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1376 ad->load_fns[Func_Type_System] = __load_system_level0_list;
1377 ad->load_fns[Func_Type_Apps] = __load_applications_level0_list;
1378 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level0_list;
1379 int ret = setting_main_refresh(ad);
1380 ret_if(ret != SETTING_RETURN_SUCCESS);
1385 if (!safeStrCmp(key, setting_gettext("IDS_COM_SK_CANCEL"))
1386 || !safeStrCmp(key, dgettext("sys_string", "IDS_COM_BODY_BACK"))) {
1387 SETTING_TRACE_DEBUG("Cancel to hide current view.");
1388 elm_naviframe_item_pop(ad->navibar_main);
1389 //After the view is popuped, all the object handlers should be reset NULL.
1390 __check_all_view_clear(ad);
1396 static void __btnback_clicked_cb(void *data, Evas_Object *obj, void *event_info)
1398 SETTING_TRACE_BEGIN;
1400 setting_main_appdata *ad = (setting_main_appdata *) data;
1401 elm_win_lower(ad->win_main);
1404 static Eina_Bool __refresh_on_idle(void *data)
1406 SETTING_TRACE_BEGIN;
1407 retv_if(!data, FALSE);
1408 setting_main_appdata *ad = data;
1409 if (MAIN_PROFILE_ALL == ad->profile_type)
1411 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level_all_list;
1412 ad->load_fns[Func_Type_System] = __load_system_level_all_list;
1413 ad->load_fns[Func_Type_Apps] = __load_applications_level_all_list;
1414 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level_all_list;
1415 setting_main_refresh(ad);
1417 else if (MAIN_PROFILE_PREFERRED == ad->profile_type)
1419 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1420 ad->load_fns[Func_Type_System] = __load_system_level0_list;
1421 ad->load_fns[Func_Type_Apps] = __load_applications_level0_list;
1422 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level0_list;
1423 setting_main_refresh(ad);
1425 ad->refresh_idler = NULL;
1429 static void __allFrequent_btn_cb(void *data, Evas_Object *obj, void *event_info)
1431 SETTING_TRACE_BEGIN;
1432 ret_if(!data || !obj);
1433 setting_main_appdata *ad = (setting_main_appdata *) data;
1434 //if already has the task,cancel the old task with ecore_idler_del,then add new idler task.
1435 if (ad->refresh_idler) {
1436 ecore_idler_del(ad->refresh_idler);
1437 ad->refresh_idler = NULL;
1440 //Elm_Object_Item *item = elm_toolbar_first_item_get(obj);
1442 if (MAIN_PROFILE_ALL == ad->profile_type)
1444 SETTING_TRACE("Change to Preferred view");
1445 elm_object_text_set(obj, _(ALL_STR));
1446 ad->profile_type = MAIN_PROFILE_PREFERRED;
1448 else if (MAIN_PROFILE_PREFERRED == ad->profile_type)
1450 SETTING_TRACE("Change to ALL view");
1451 elm_object_text_set(obj, _(PREFERRED_STR));
1452 ad->profile_type = MAIN_PROFILE_ALL;
1458 ad->refresh_idler = ecore_idler_add((Ecore_Task_Cb) __refresh_on_idle, ad);
1461 static void __setting_show_title_toolbar(void *data, Evas_Object *obj, void *event_info)
1463 SETTING_TRACE_BEGIN;
1464 //elm_object_item_signal_emit(data, "elm,state,sip,shown", "");
1465 setting_main_appdata *ad = (setting_main_appdata *) data;
1467 Evas_Object *navi_bar = NULL;
1469 if (ad->isInUGMode && ad->ug) {
1470 Evas_Object *layout = (Evas_Object *)ug_get_layout(ad->ug);
1472 navi_bar = elm_object_part_content_get(layout, "elm.swallow.content");
1474 navi_bar = ad->navibar_main;
1477 const char *support = evas_object_data_get(navi_bar, "sip.naviframe.title_obj");
1478 SETTING_TRACE("support:%s", support);
1481 Elm_Object_Item *top_item = elm_naviframe_top_item_get(navi_bar);
1483 elm_object_item_signal_emit(top_item, "elm,state,sip,shown", "");
1487 static void __setting_hide_title_toolbar(void *data, Evas_Object *obj, void *event_info)
1489 SETTING_TRACE_BEGIN;
1490 //elm_object_item_signal_emit(data, "elm,state,sip,hidden", "");
1491 setting_main_appdata *ad = (setting_main_appdata *) data;
1493 Evas_Object *navi_bar = NULL;
1495 if (ad->isInUGMode && ad->ug) {
1496 Evas_Object *layout = (Evas_Object *)ug_get_layout(ad->ug);
1498 navi_bar = elm_object_part_content_get(layout, "elm.swallow.content");
1500 navi_bar = ad->navibar_main;
1503 const char *support = evas_object_data_get(navi_bar, "sip.naviframe.title_obj");
1505 SETTING_TRACE("support:%s", support);
1508 Elm_Object_Item *top_item = elm_naviframe_top_item_get(navi_bar);
1510 elm_object_item_signal_emit(top_item, "elm,state,sip,hidden", "");
1514 static bool __setting_create_main_view(void *data)
1516 SETTING_TRACE_BEGIN;
1518 setting_retvm_if(data == NULL, FALSE, "data == NULL");
1519 setting_main_appdata *ad = (setting_main_appdata *) data;
1521 Evas_Object *conform = elm_conformant_add(ad->win_main);
1522 ad->ly_main = setting_create_win_layout(ad->win_main, ad->win_main);
1523 evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1524 evas_object_size_hint_align_set(conform, EVAS_HINT_FILL, EVAS_HINT_FILL);
1525 elm_win_resize_object_add(ad->win_main, conform);
1526 elm_object_content_set(conform, ad->ly_main);
1527 evas_object_show(conform);
1529 evas_object_smart_callback_add(conform, "virtualkeypad,state,on", __setting_show_title_toolbar, ad);
1530 evas_object_smart_callback_add(conform, "virtualkeypad,state,off", __setting_hide_title_toolbar, ad);
1532 elm_win_conformant_set(ad->win_main, EINA_TRUE);
1534 ad->conform = conform;
1536 ad->navibar_main = setting_create_navi_bar(ad->ly_main);
1538 ad->main_genlist = elm_genlist_add(ad->navibar_main);
1539 elm_object_style_set(ad->main_genlist, "dialogue");
1540 retvm_if(ad->main_genlist == NULL, FALSE,
1541 "Cannot set scroller object as contento of layout");
1543 //elm_genlist_homogeneous_set(ad->main_genlist, EINA_TRUE);
1544 elm_genlist_clear(ad->main_genlist); /* first to clear list */
1545 evas_object_smart_callback_add(ad->main_genlist, "realized", __gl_realized, ad);
1547 setting_create_navi_bar_buttons(_("IDS_COM_BODY_SETTINGS"),
1548 _("IDS_COM_BODY_BACK"), NULL, _("IDS_ST_OPT_ALL"),
1549 __btnback_clicked_cb, NULL,
1550 __allFrequent_btn_cb, ad, ad->main_genlist,
1551 ad->navibar_main, NULL);
1553 ad->profile_type = MAIN_PROFILE_PREFERRED;
1554 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1555 ad->load_fns[Func_Type_System] = __load_system_level0_list;
1556 ad->load_fns[Func_Type_Apps] = __load_applications_level_all_list;
1557 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level_all_list;
1558 setting_main_refresh(ad);
1562 static bool __setting_create_prefered_view(void *data)
1564 SETTING_TRACE_BEGIN;
1566 setting_retvm_if(data == NULL, FALSE, "data == NULL");
1567 setting_main_appdata *ad = (setting_main_appdata *) data;
1569 /* the genlist will be destroyed with its parent view, when using elm_naviframe_item_pop() to destroy the view. */
1570 ad->edit_preferred_genlist = elm_genlist_add(ad->win_main);
1571 elm_object_style_set(ad->edit_preferred_genlist, "dialogue");
1572 elm_genlist_clear(ad->edit_preferred_genlist); /* first to clear list */
1574 /* [UI] edit preffered view */
1575 Evas_Object *sub_layout = elm_layout_add(ad->win_main);
1576 elm_object_style_set(sub_layout, "dialogue");
1577 elm_layout_file_set(sub_layout, SETTING_THEME_EDJ_NAME, "search_layout");
1578 evas_object_size_hint_weight_set(sub_layout, EVAS_HINT_EXPAND, 0.0);
1579 evas_object_show(sub_layout);
1581 ad->gl_sel_all = elm_genlist_add(ad->win_main);
1582 elm_genlist_clear(ad->gl_sel_all); /* first to clear list */
1583 elm_genlist_bounce_set(ad->gl_sel_all, 0, 0);
1585 elm_object_part_content_set(sub_layout, "search_bar", ad->gl_sel_all); /* add 'Select all' */
1586 elm_object_part_content_set(sub_layout, "search_list", ad->edit_preferred_genlist); /* add Genlist */
1588 /* push, not create */
1589 setting_push_layout_navi_bar(_(EDIT_PREFERRED_STR),
1590 _("IDS_COM_SK_CANCEL"),
1591 _("IDS_COM_SK_DONE"), NULL,
1592 __prefered_buttons_cb, __prefered_buttons_cb, NULL, ad,
1593 sub_layout, ad->navibar_main,
1599 static void setting_main_tapi_event_cb(TapiHandle *handle, int result, void *data, void *user_data)
1601 SETTING_TRACE_BEGIN;
1603 setting_main_appdata *ad = user_data;
1604 ad->b_fm_requesting = FALSE;
1605 SETTING_TRACE("result:%d", result);
1609 case TAPI_POWER_FLIGHT_MODE_RESP_ON:
1611 setting_set_bool_slp_key(BOOL_SLP_SETTING_FLIGHT_MODE,
1612 SETTING_ON_OFF_BTN_ON, &err);
1614 //If Setting has validate operation (fm_waiting_op == FM_LEAVE) to process, process it.
1615 //Otherwise, do nothing
1616 if (FM_LEAVE == ad->fm_waiting_op)
1618 //Send the latest operation
1619 ad->fm_waiting_op = FM_INVALID;
1620 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
1621 setting_retm_if(err != TAPI_API_SUCCESS,
1622 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
1625 ad->b_fm_requesting = TRUE;
1630 case TAPI_POWER_FLIGHT_MODE_RESP_OFF:
1632 setting_set_bool_slp_key(BOOL_SLP_SETTING_FLIGHT_MODE,
1633 SETTING_ON_OFF_BTN_OFF, &err);
1635 //If Setting has validate operation (here, fm_waiting_op == FM_ENTER) to process,process it.
1636 //Otherwise, do nothing
1637 if (FM_ENTER == ad->fm_waiting_op)
1639 //Send the latest operation
1640 ad->fm_waiting_op = FM_INVALID;
1641 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
1642 setting_retm_if(err != TAPI_API_SUCCESS,
1643 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
1646 ad->b_fm_requesting = TRUE;
1651 case TAPI_POWER_FLIGHT_MODE_RESP_FAIL:
1652 //Setting has a validate operation to process, Send the operation request
1653 if (FM_ENTER == ad->fm_waiting_op)
1655 ad->fm_waiting_op = FM_INVALID;
1656 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
1658 setting_retm_if(err != TAPI_API_SUCCESS,
1659 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
1660 ad->b_fm_requesting = TRUE;
1662 else if (FM_LEAVE == ad->fm_waiting_op)
1664 ad->fm_waiting_op = FM_INVALID;
1665 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
1667 setting_retm_if(err != TAPI_API_SUCCESS,
1668 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
1669 ad->b_fm_requesting = TRUE;
1671 else //Current requset is the last one, Setting needs to notify user
1673 setting_create_popup_without_btn(ad, ad->win_main,
1674 _("IDS_COM_POP_ERROR"),
1675 _("IDS_ST_POP_UNABLE_TO_TURN_ON_FLIGHT_MODE_VODA"),
1676 NULL, POPUP_INTERVAL,
1679 //It is need to rollback the status,
1680 if (ad->data_flight) {
1681 ad->data_flight->chk_status = !ad->data_flight->chk_status;
1682 elm_check_state_set(ad->data_flight->eo_check, ad->data_flight->chk_status);
1688 ad->b_fm_requesting = TRUE;
1692 case TAPI_POWER_FLIGHT_MODE_RESP_MAX:
1693 setting_create_popup_without_btn(ad, ad->win_main,
1694 _("IDS_COM_POP_ERROR"),
1695 _("IDS_COM_POP_UNEXPECTED_ERROR"),
1696 NULL, POPUP_INTERVAL, FALSE, FALSE);
1698 //It is need to rollback the status,
1699 if (ad->data_flight) {
1700 ad->data_flight->chk_status = !ad->data_flight->chk_status;
1701 elm_check_state_set(ad->data_flight->eo_check, ad->data_flight->chk_status);
1711 static int setting_main_refresh(void *data)
1713 SETTING_TRACE_BEGIN;
1714 setting_main_appdata *ad = (setting_main_appdata *) data;
1715 elm_genlist_clear(ad->main_genlist); /* first to clear list */
1718 if (is_ug_installed_by_ug_args("rcs-config"))
1720 Elm_Object_Item *item = elm_genlist_item_append(ad->main_genlist, &itc_seperator, NULL, NULL,
1721 ELM_GENLIST_ITEM_NONE, NULL, NULL);
1722 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1723 setting_create_Gendial_field_groupitem(ad->main_genlist,
1724 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1726 setting_main_click_list_ex_ug_cb,
1728 SWALLOW_Type_INVALID,
1730 0, KeyStr_Joyn, NULL,
1736 for(i = Func_Type_Connectivity; i < Func_Type_MAX; i++)
1737 (ad->load_fns[i]) (ad);
1739 memset(ad->load_fns, 0, Func_Type_MAX *sizeof(menu_list_load_fn));
1741 return SETTING_RETURN_SUCCESS;
1744 static int setting_main_create(void *cb)
1746 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1748 setting_main_appdata *ad = (setting_main_appdata *) cb;
1750 //pass NULL to let TAPI access default module
1751 ad->handle = tel_init(NULL);
1753 SETTING_TRACE_ERROR("*** [ERR] tel_init failed ***");
1755 SETTING_TRACE("tel_init ok[handle:%p]", ad->handle);
1757 setting_create_Gendial_itc("dialogue/1text.1icon.2",
1758 &(ad->itc[GENDIAL_Type_1text_1icon_2]));
1759 setting_create_Gendial_itc("dialogue/1text.2icon",
1760 &(ad->itc[GENDIAL_Type_1text_2icon]));
1761 setting_create_Gendial_itc("dialogue/2text.1icon.3",
1762 &(ad->itc[GENDIAL_Type_1icon_2text]));
1763 setting_create_Gendial_itc("dialogue/1text.1icon.2",
1764 &(ad->itc[GENDIAL_Type_1text_2icon_2]));
1765 setting_create_Gendial_itc("dialogue/2text.2icon.3",
1766 &(ad->itc[GENDIAL_Type_2text_2icon_3]));
1767 setting_create_Gendial_itc("dialogue/title",
1768 &(ad->itc[GENDIAL_Type_group_item]));
1769 setting_create_Gendial_itc("select_all",
1770 &(ad->itc[GENDIAL_Type_sel_all]));
1772 setting_create_Gendial_itc("dialogue/2text.3", &(ad->itc[GENDIAL_Type_2text_3]));
1774 ad->view_type = SETTING_VIEW_MAIN;
1775 __setting_create_main_view(ad);
1777 setting_view_main.is_create = 1;
1779 setting_drawer_list_init();
1780 return SETTING_RETURN_SUCCESS;
1783 static int setting_main_destroy(void *cb)
1785 SETTING_TRACE_BEGIN;
1787 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1789 setting_main_appdata *ad = (setting_main_appdata *) cb;
1790 if (0 == setting_view_main.is_create)
1793 return SETTING_RETURN_SUCCESS;
1796 evas_object_smart_callback_del(ad->conform, "virtualkeypad,state,on", __setting_show_title_toolbar);
1797 evas_object_smart_callback_del(ad->conform, "virtualkeypad,state,off", __setting_hide_title_toolbar);
1799 if (ad->refresh_idler) {
1800 ecore_idler_del(ad->refresh_idler);
1801 ad->refresh_idler = NULL;
1805 int tapi_ret = tel_deinit(ad->handle);
1806 if (tapi_ret != TAPI_API_SUCCESS) {
1807 SETTING_TRACE_DEBUG("*** [ERR] tel_deinit. [%d] ***", tapi_ret);
1809 SETTING_TRACE("*** tel_deinit OK ");
1814 /* then destroy the UI object. */
1815 if (ad->item_check_list) {
1816 eina_list_free(ad->item_check_list);
1817 ad->item_check_list = NULL;
1819 SETTING_TRACE("*** ad->item_check_list is NULL - abnormal state ");
1823 evas_object_del(ad->ly_main);
1827 if (ad->flight_popup) {
1828 evas_object_del(ad->flight_popup);
1829 ad->flight_popup = NULL;
1833 if (ad->plugin_node)
1835 setting_plugin_destroy(ad->plugin_node);
1839 evas_object_smart_callback_del(ad->main_genlist, "realized", __gl_realized);
1841 setting_dbus_handler_fini();
1842 setting_drawer_list_fini();
1844 setting_view_main.is_create = 0;
1846 return SETTING_RETURN_SUCCESS;
1849 static int setting_main_update(void *cb)
1851 SETTING_TRACE_BEGIN;
1854 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1856 setting_main_appdata *ad = (setting_main_appdata *) cb;
1858 if (ad->ly_main != NULL) {
1859 //evas_object_show(ad->ly_main);
1862 return SETTING_RETURN_SUCCESS;
1865 static int setting_main_cleanup(void *cb)
1867 SETTING_TRACE_BEGIN;
1869 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1871 setting_main_appdata *ad = (setting_main_appdata *) cb;
1873 if (ad->ly_main != NULL) {
1874 //evas_object_hide(ad->ly_main);
1877 return SETTING_RETURN_SUCCESS;
1880 /* ***************************************************
1884 ***************************************************/
1886 void setting_update_gl_item(void* data)
1888 SETTING_TRACE_BEGIN;
1889 setting_main_appdata *ad = data;
1890 retm_if(!data, "Invalid argument: data is NULL");
1893 Eina_Bool bGlUpdate = EINA_FALSE;
1894 Setting_GenGroupItem_Data *item_to_update = NULL;
1896 for(;nDx<GL_ITEM_MAX; nDx++) {
1897 if(EINA_TRUE == ad->updateItems[nDx]) {
1901 item_to_update = ad->data_wifi;
1902 bGlUpdate = EINA_TRUE;
1905 item_to_update = ad->data_bt;
1906 bGlUpdate = EINA_TRUE;
1909 item_to_update = ad->data_nfc;
1910 bGlUpdate = EINA_TRUE;
1912 case GL_ITEM_FLIGHT:
1913 item_to_update = ad->data_flight;
1914 bGlUpdate = EINA_FALSE;
1920 default: // other case
1924 if (item_to_update) {
1925 SETTING_TRACE("gl update [%s], bGlUpdate:%d", _(item_to_update->keyStr), bGlUpdate);
1927 SETTING_TRACE("gl update:%d", nDx);
1928 elm_object_item_data_set(item_to_update->item, item_to_update);
1929 elm_genlist_item_update(item_to_update->item);
1931 SETTING_TRACE("chk update:%d", nDx);
1932 elm_check_state_set(item_to_update->eo_check, item_to_update->chk_status);
1936 ad->updateItems[nDx] = EINA_FALSE;
1937 } // if(EINA_TRUE == ad->updateItems[nDx])
1945 void setting_main_destroy_ug_cb(ui_gadget_h ug, void *priv)
1947 setting_main_appdata *ad = (setting_main_appdata *) priv;
1949 return; /* do nothing if ad is NULL */
1956 setting_main_click_list_item_reset_data(ad, NULL);
1958 // update main genlist in unloading UG
1959 SETTING_TRACE("update main genlist in unloading UG");
1960 setting_update_gl_item(ad);
1965 void setting_main_result_ug_cb(ui_gadget_h ug, service_h service,
1970 // set default local automatically
1971 set_defaultLangICU();
1974 void setting_main_layout_ug_cb(ui_gadget_h ug, enum ug_mode mode,
1977 setting_main_appdata *ad = (setting_main_appdata *) priv;
1982 SETTING_TRACE_BEGIN;
1984 base = (Evas_Object *) ug_get_layout(ug);
1989 case UG_MODE_FULLVIEW:
1990 evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,
1992 evas_object_show(base);
2001 /* ***************************************************
2005 ***************************************************/
2007 void setting_main_click_list_item_reset_data(void *data,
2010 SETTING_TRACE_BEGIN;
2011 setting_main_appdata *ad = (setting_main_appdata *) data;
2013 ad->isInUGMode = FALSE;
2018 void /* obj is the layout clicked */
2019 setting_main_click_list_item_ug_cb(void *data, Evas_Object *obj,
2020 char *ug_to_load, service_h svc,
2023 SETTING_TRACE_BEGIN;
2024 setting_main_appdata *ad = (setting_main_appdata *) data;
2026 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
2030 char ug_file[PATH_MAX];
2032 (ug_file, PATH_MAX, "%s/libug-%s.so", SETTING_UG_PATH,
2035 SETTING_TRACE("ug_file:%s", ug_file);
2036 if (!ecore_file_exists(ug_file)) {
2037 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
2041 SETTING_TRACE("to create libug-%s.so", ug_to_load);
2042 ad->ug = ug_create(NULL, ug_to_load, UG_MODE_FULLVIEW, svc, cbs);
2044 ad->isInUGMode = TRUE;
2045 memset(ad->cur_loaded_ug, 0x00, MAX_DISPLAY_NAME_LEN_ON_UI);
2046 safeCopyStr(ad->cur_loaded_ug, ug_to_load, MAX_DISPLAY_NAME_LEN_ON_UI);
2049 evas_object_show(ad->ly_main);
2051 SETTING_TRACE_ERROR("errno:%d", errno);
2052 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
2058 setting_main_click_list_default_ug_cb(void *data, Evas_Object *obj,
2061 setting_main_appdata *ad = data;
2062 setting_create_simple_popup(ad, ad->win_main, NULL,
2067 setting_main_click_list_usb_cb(void *data, Evas_Object *obj, void *event_info)
2069 SETTING_TRACE_BEGIN;
2070 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2074 char *str_text = USB_NEED_OFF;
2076 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2078 setting_get_int_slp_key(INT_SLP_SETTING_MOBILE_AP_STATUS, &value, &err);
2081 SETTING_TRACE_ERROR("FAIL: VCONFKEY_MOBILE_HOTSPOT_MODE may not exist\n");
2082 setting_main_click_list_ex_ug_cb(data, obj, item);
2086 /* If mobile hotspot is on, going USB utilties is blocked by a popup*/
2087 if (value & VCONFKEY_MOBILE_HOTSPOT_MODE_USB)
2089 elm_genlist_item_selected_set(item, EINA_FALSE);
2090 setting_create_simple_popup(g_main_ad, g_main_ad->win_main, NULL, (str_text));
2094 setting_main_click_list_ex_ug_cb(data, obj, item);
2100 void setting_main_click_list_more_cb(void *data, Evas_Object *obj, void *event_info)
2102 SETTING_TRACE_BEGIN;
2103 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2104 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2105 elm_genlist_item_selected_set(item, EINA_FALSE);
2106 retm_if(data == NULL, "Invalid argument: data is NULL");
2107 setting_main_appdata *ad = data;
2108 Setting_GenGroupItem_Data *selected_item_data =
2109 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2110 SETTING_TRACE("selected_item_data->keyStr:%s", selected_item_data->keyStr);
2111 if (0 == safeStrCmp(selected_item_data->keyStr, KeyStr_MoreConnect))
2113 ad->view_load = SETTING_VIEW_CONNECTIVE_MORE;
2115 else if (0 == safeStrCmp(selected_item_data->keyStr, KeyStr_MoreSystem))
2117 ad->view_load = SETTING_VIEW_SYSTEM_MORE;
2123 setting_view_change(&setting_view_main, &setting_view_more_menu, ad);
2128 setting_main_click_list_ex_ug_cb(void *data, Evas_Object *obj,
2131 SETTING_TRACE_BEGIN;
2132 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2133 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2135 elm_genlist_item_selected_set(item, EINA_FALSE);
2137 if (g_main_ad->ug) {
2139 ("[ad->ug non-NULL]skip genlist click event!!");
2145 if (NULL == data) { /* pass NULL to ug_args when create setting.cfg. */
2146 setting_create_simple_popup(g_main_ad,
2147 g_main_ad->win_main,
2148 NULL, NO_UG_FOUND_MSG);
2153 setting_main_appdata *ad = g_main_ad;
2155 /* if UG is created by Setting app, setting_main_click_list_ex_ug_cb is diabled. */
2156 if (ad->isInUGMode) {
2157 SETTING_TRACE("isInUGMode : TRUE - another UG is running now.");
2158 ad->isInUGMode = FALSE;
2163 ("isInUGMode : FALSE - another UG is NOT running now.")
2166 Setting_GenGroupItem_Data *selected_item_data =
2167 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2168 setting_main_click_list_item_reset_data(ad, obj);
2169 const char *item_name = _(selected_item_data->keyStr);
2172 struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
2173 setting_retm_if(!cbs, "calloc failed");
2174 cbs->layout_cb = setting_main_layout_ug_cb;
2175 cbs->result_cb = setting_main_result_ug_cb;
2176 cbs->destroy_cb = setting_main_destroy_ug_cb;
2177 cbs->priv = (void *)ad;
2179 char *path = get_ug_path_from_ug_args(data);
2180 service_h svc = get_bundle_from_ug_args(data);
2181 setting_main_click_list_item_ug_cb(ad, obj, path, svc, cbs);
2188 service_destroy(svc);
2191 setting_main_click_list_plugin_cb(void *data, Evas_Object *obj,
2194 SETTING_TRACE_BEGIN;
2195 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2196 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2197 elm_genlist_item_selected_set(item, EINA_FALSE);
2198 Setting_GenGroupItem_Data *selected_item = (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2200 setting_main_appdata *ad = data;
2203 ad->plugin_path = strdup(selected_item->sub_desc);
2204 SETTING_TRACE(" >> SELECTED plugin name : %s \n", ad->plugin_path);
2206 setting_dbus_handler_init( ad );
2209 PluginNode* plugin_node = setting_plugin_create(ad);
2210 plugin_node->plugin_path = strdup(ad->plugin_path);
2211 setting_plugin_load(plugin_node, (const char *)plugin_node->plugin_path);
2213 ad->plugin_node = plugin_node; // the selected plugin name
2218 * @see [caller] setting_main_list_mouse_up_cb
2219 * @see [caller] setting_main_sel_list_mouse_up_cb
2221 static void __rotate_lock_handler(int chk_status, setting_main_appdata *ad )
2223 SETTING_TRACE_BEGIN;
2224 if( chk_status == 1)
2227 int angle = elm_win_rotation_get(ad->win_main);
2228 elm_win_rotation_with_resize_set(ad->win_main, angle);
2230 elm_win_rotation_with_resize_set(ad->win_main, 0);
2232 vconf_set_bool(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, chk_status);
2238 void setting_main_list_mouse_up_cb(void *data, Evas_Object *eo,
2241 SETTING_TRACE_BEGIN;
2242 retm_if(data == NULL, "Data parameter is NULL");
2243 Setting_GenGroupItem_Data *list_item =
2244 (Setting_GenGroupItem_Data *) data;
2245 SETTING_TRACE("process item [%s]", list_item->keyStr);
2246 list_item->chk_status = elm_check_state_get(eo); /* for update new state */
2248 SETTING_TRACE("change radio[%s], status is:%d", _(list_item->keyStr),
2249 list_item->chk_status);
2250 setting_main_appdata *ad = g_main_ad;
2252 if (!safeStrCmp(KeyStr_UsePacketData, list_item->keyStr)) {
2254 if (elm_check_state_get(eo)) {
2255 setting_set_bool_slp_key
2256 (BOOL_SLP_SETTING_USE_PACKET_DATA,
2257 SETTING_ON_OFF_BTN_ON, &err);
2259 setting_set_bool_slp_key
2260 (BOOL_SLP_SETTING_USE_PACKET_DATA,
2261 SETTING_ON_OFF_BTN_OFF, &err);
2264 } else if (!safeStrCmp(KeyStr_Landscape, list_item->keyStr)) {
2265 __rotate_lock_handler(list_item->chk_status, ad);
2274 void setting_main_sel_list_mouse_up_cb(void *data, Evas_Object *eo,
2277 SETTING_TRACE_BEGIN;
2278 setting_retm_if(data == NULL, "Data parameter is NULL");
2280 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2281 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2282 elm_genlist_item_selected_set(item, 0);
2283 Setting_GenGroupItem_Data *list_item =
2284 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2286 list_item->chk_status = elm_check_state_get(list_item->eo_check);
2289 list_item->chk_status = !list_item->chk_status;
2290 elm_check_state_set(list_item->eo_check, list_item->chk_status);
2292 setting_main_appdata *ad = (setting_main_appdata *) data;
2293 if (!safeStrCmp(KeyStr_UsePacketData, list_item->keyStr)) {
2294 /* setting_reset_slp_key_by_status(eo, BOOL_SLP_SETTING_USE_PACKET_DATA); */
2296 setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
2297 list_item->chk_status, &err);
2299 } else if (!safeStrCmp(KeyStr_Landscape, list_item->keyStr)) {
2300 __rotate_lock_handler(list_item->chk_status, ad);
2306 void __alternate_flight_mode(Evas_Object *check)
2308 SETTING_TRACE_BEGIN;
2310 Eina_Bool status = elm_check_state_get(check);
2311 SETTING_TRACE("flight mode status : %d", status);
2312 setting_main_appdata *ad = g_main_ad;
2314 //Check whether some requestion is processing by TAPI
2315 if (ad->b_fm_requesting)
2317 //Do nothing, just mark the lastest operation..
2318 SETTING_TRACE("Some requestion is processing by TAPI, wait to process");
2319 ad->fm_waiting_op = status ? FM_ENTER : FM_LEAVE;
2323 //otherwise, invalid waiting operation and send requsetion to TAPI:
2324 ad->fm_waiting_op = FM_INVALID;
2326 ret = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
2327 setting_retm_if(ret != TAPI_API_SUCCESS,
2328 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
2330 ret = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
2331 setting_retm_if(ret != TAPI_API_SUCCESS,
2332 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
2336 ad->b_fm_requesting = TRUE;
2340 void __alternate_wifi_mode(Evas_Object *check)
2342 SETTING_TRACE_BEGIN;
2344 Eina_Bool status = elm_check_state_get(check);
2345 SETTING_TRACE("wifi mode status : %d", status);
2347 ret = wifi_initialize();
2348 setting_retm_if(ret < 0, "*** [ERR] wifi_initialize() ***");
2352 ret = wifi_activate(NULL, NULL);
2353 setting_retm_if(ret < 0,
2354 "*** [ERR] wifi_activate() ***");
2356 ret = wifi_deactivate(NULL, NULL);
2357 setting_retm_if(ret < 0,
2358 "*** [ERR] wifi_deactivate() ***");
2360 ret = wifi_deinitialize();
2361 setting_retm_if(ret < 0, "*** [ERR] wifi_deinitialize() ***");
2366 void __alternate_bt_mode(Evas_Object *check)
2368 SETTING_TRACE_BEGIN;
2370 Eina_Bool status = elm_check_state_get(check);
2371 SETTING_TRACE("bt mode status : %d", status);
2373 ret = bt_initialize();
2374 setting_retm_if(ret < 0, "*** [ERR] bt_initialize() ***");
2378 ret = bt_adapter_enable();
2379 setting_retm_if(ret < 0,
2380 "*** [ERR] bt_adapter_enable() ***");
2382 ret = bt_adapter_disable();
2383 setting_retm_if(ret < 0,
2384 "*** [ERR] bt_adapter_disable() ***");
2387 ret = bt_deinitialize();
2388 setting_retm_if(ret < 0, "*** [ERR] bt_deinitialize() ***");
2393 void __alternate_nfc_mode(Evas_Object *check)
2395 SETTING_TRACE_BEGIN;
2397 Eina_Bool status = elm_check_state_get(check);
2398 SETTING_TRACE("nfc mode status : %d", status);
2400 ret = nfc_manager_initialize(NULL, NULL);
2401 setting_retm_if(ret < 0, "*** [ERR] nfc_manager_initialize() ***");
2404 ret = nfc_manager_set_activation(status, NULL, NULL);
2405 setting_retm_if(ret < 0,
2406 "*** [ERR] nfc_manager_set_activation() ***");
2408 ret = nfc_manager_deinitialize();
2409 setting_retm_if(ret < 0, "*** [ERR] nfc_manager_deinitialize() ***");
2414 void __alternate_sbeam_mode(Evas_Object *check)
2416 SETTING_TRACE_BEGIN;
2418 Eina_Bool status = elm_check_state_get(check);
2419 SETTING_TRACE("wifi mode status : %d", status);
2421 vconf_set_bool(VCONFKEY_NFC_SBEAM, status);
2427 setting_main_click_list_network_ug_cb(void *data, Evas_Object *obj,
2430 SETTING_TRACE_BEGIN;
2431 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2432 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2434 elm_genlist_item_selected_set(item, EINA_FALSE);
2436 if (g_main_ad->ug) {
2438 ("[ad->ug non-NULL]skip genlist click event!!");
2444 setting_main_appdata *ad = g_main_ad;
2445 setting_main_click_list_item_reset_data(ad, obj);
2449 setting_get_int_slp_key(INT_SLP_SETTING_SIM_SLOT, &value, &err);
2450 SETTING_TRACE("value:%d", value);
2452 case VCONFKEY_TELEPHONY_SIM_INSERTED:
2454 struct ug_cbs *cbs =
2455 (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
2456 setting_retm_if(!cbs, "calloc failed");
2457 cbs->layout_cb = setting_main_layout_ug_cb;
2458 cbs->result_cb = setting_main_result_ug_cb;
2459 cbs->destroy_cb = setting_main_destroy_ug_cb;
2460 cbs->priv = (void *)ad;
2461 setting_main_click_list_item_ug_cb(data, obj,
2462 "setting-network-efl",
2467 case VCONFKEY_TELEPHONY_SIM_NOT_PRESENT:
2468 setting_create_simple_popup(NULL, ad->win_main,
2469 NULL, _("IDS_ST_HEADER_INSERT_SIM_CARD_ABB"));
2470 SETTING_TRACE("%s*** [ERR] No SIM. sim_slot_type=%d ***%s",
2471 SETTING_FONT_RED, value, SETTING_FONT_BLACK);
2474 case VCONFKEY_TELEPHONY_SIM_CARD_ERROR:
2475 case VCONFKEY_TELEPHONY_SIM_UNKNOWN:
2476 setting_create_simple_popup(NULL, ad->win_main,
2477 NULL,_("IDS_COM_BODY_INVALID_SIM_CARD"));
2478 SETTING_TRACE("%s*** [ERR] Invalid SIM. sim_slot_type=%d ***%s",
2479 SETTING_FONT_RED, value, SETTING_FONT_BLACK);
2492 setting_main_click_Gendial_list_flight_mode_cb(void *data, Evas_Object *obj,
2496 setting_retm_if(data == NULL, "Data parameter is NULL");
2498 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2499 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2500 elm_genlist_item_selected_set(item, 0);
2501 Setting_GenGroupItem_Data *list_item =
2502 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2503 int old_status = elm_check_state_get(list_item->eo_check);
2505 list_item->chk_status = !old_status;
2506 elm_check_state_set(list_item->eo_check, list_item->chk_status);
2508 __alternate_flight_mode(list_item->eo_check);
2516 setting_main_click_list_flight_mode_cb(void *data, Evas_Object *obj,
2519 SETTING_TRACE_BEGIN;
2520 retm_if(data == NULL, "Data parameter is NULL");
2521 Setting_GenGroupItem_Data *list_item =
2522 (Setting_GenGroupItem_Data *) data;
2523 list_item->chk_status = elm_check_state_get(obj); /* for update new state */
2524 SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2525 list_item->chk_status);
2527 __alternate_flight_mode(obj);
2535 setting_main_click_list_wifi_mode_cb(void *data, Evas_Object *obj,
2538 SETTING_TRACE_BEGIN;
2539 retm_if(data == NULL, "Data parameter is NULL");
2540 Setting_GenGroupItem_Data *list_item =
2541 (Setting_GenGroupItem_Data *) data;
2542 list_item->chk_status = elm_check_state_get(obj); /* for update new state */
2543 SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2544 list_item->chk_status);
2546 __alternate_wifi_mode(obj);
2554 setting_main_click_list_bt_mode_cb(void *data, Evas_Object *obj,
2557 SETTING_TRACE_BEGIN;
2558 retm_if(data == NULL, "Data parameter is NULL");
2559 Setting_GenGroupItem_Data *list_item =
2560 (Setting_GenGroupItem_Data *) data;
2561 list_item->chk_status = elm_check_state_get(obj); /* for update new state */
2562 SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2563 list_item->chk_status);
2565 __alternate_bt_mode(obj);
2573 setting_main_click_list_nfc_mode_cb(void *data, Evas_Object *obj,
2576 SETTING_TRACE_BEGIN;
2577 retm_if(data == NULL, "Data parameter is NULL");
2578 Setting_GenGroupItem_Data *list_item =
2579 (Setting_GenGroupItem_Data *) data;
2580 list_item->chk_status = elm_check_state_get(obj); /* for update new state */
2581 SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2582 list_item->chk_status);
2584 __alternate_nfc_mode(obj);
2592 setting_main_click_list_sbeam_mode_cb(void *data, Evas_Object *obj,
2595 SETTING_TRACE_BEGIN;
2596 retm_if(data == NULL, "Data parameter is NULL");
2597 Setting_GenGroupItem_Data *list_item =
2598 (Setting_GenGroupItem_Data *) data;
2599 list_item->chk_status = elm_check_state_get(obj); /* for update new state */
2600 SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2601 list_item->chk_status);
2603 __alternate_sbeam_mode(obj);
2608 * store current selection in setting.cfg
2610 void setting_try_save_check_list(void *data)
2612 SETTING_TRACE_BEGIN;
2613 setting_main_appdata *ad = (setting_main_appdata *) data;
2615 Eina_List *check_list = ad->item_check_list;
2616 Setting_GenGroupItem_Data *list_item = NULL;
2617 int update_count = 0;
2619 while (check_list) {
2620 list_item = (Setting_GenGroupItem_Data *) eina_list_data_get(check_list);
2621 if (NULL == list_item) continue;
2624 if (list_item->chk_status) {
2625 /* to update config file */
2626 setting_cfg_set_pos(list_item->keyStr, Cfg_Item_Pos_Level0);
2628 /* to update config file */
2629 setting_cfg_set_pos(list_item->keyStr, Cfg_Item_Pos_Level1);
2631 check_list = eina_list_next(check_list);
2634 if (update_count == 0) {
2635 /* to popup tips notify */
2637 setting_cfg_file_update();
2643 setting_main_click_edit_preferred_cb(void *data, Evas_Object *obj, void *event_info)
2645 SETTING_TRACE_BEGIN;
2647 setting_main_appdata *ad = (setting_main_appdata *) data;
2648 ad->view_type = SETTING_VIEW_ALL_CHECK;
2649 __setting_create_prefered_view(ad);
2650 __load_check_list(ad, &(ad->edit_preferred_genlist), NULL);