4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
6 * Contact: MyoungJune Park <mj2004.park@samsung.com>
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
22 #include <tapi_common.h>
26 #include <setting-main.h>
27 #include <setting-plugin.h>
29 #include <bluetooth.h>
32 #define PLUGIN_PREFIX "/opt"
34 typedef struct _DrawAppInfo
37 //------------------------------------
38 void (*draw_app)(void* arg, char* name, char* pkgname);
42 static int setting_main_create(void *cb);
43 static int setting_main_destroy(void *cb);
44 static int setting_main_update(void *cb);
45 static int setting_main_cleanup(void *cb);
47 setting_view setting_view_main = {
48 .create = setting_main_create,
49 .update = setting_main_update,
50 .destroy = setting_main_destroy,
51 .cleanup = setting_main_cleanup,
54 setting_main_appdata *g_main_ad = NULL;
56 static void setting_main_tapi_event_cb(TapiHandle *handle, int result, void *data, void *user_data);
57 static int setting_main_refresh(void *data);
58 static void __alternate_flight_mode(Evas_Object *check);
59 static void setting_main_click_Gendial_list_flight_mode_cb(void *data,
62 static void __alternate_flight_mode(Evas_Object *check);
64 void setting_main_click_list_item_ug_cb(void *data, Evas_Object *obj, char *ug_to_load, service_h svc, struct ug_cbs *cbs);
67 __setting_chk_changed(void *data, Evas_Object *obj, void *event_info)
69 /* SETTING_TRACE_BEGIN; */
70 retm_if(data == NULL, "Data parameter is NULL");
71 Setting_GenGroupItem_Data *list_item =
72 (Setting_GenGroupItem_Data *) data;
73 /* SETTING_TRACE("process item [%s]", _(list_item->keyStr)); */
74 list_item->chk_status = elm_check_state_get(obj);
76 Eina_List *check_list = g_main_ad->item_check_list;
77 Setting_GenGroupItem_Data *item = NULL;
78 bool isFoundNotSelSomeone = FALSE;
79 bool isFoundSelSomeone = FALSE;
81 item = (Setting_GenGroupItem_Data *)
82 eina_list_data_get(check_list);
86 if (!(item->chk_status)) {
87 isFoundNotSelSomeone = TRUE;
89 isFoundSelSomeone = TRUE;
91 if (isFoundNotSelSomeone && isFoundSelSomeone) {
94 check_list = eina_list_next(check_list);
97 if (isFoundNotSelSomeone) {
98 g_main_ad->check_all_item->chk_status = 0; /* for update new state */
100 g_main_ad->check_all_item->chk_status = 1; /* for update new state */
102 elm_object_item_data_set(g_main_ad->check_all_item->item, g_main_ad->check_all_item);
103 elm_genlist_item_update(g_main_ad->check_all_item->item);
105 if (isFoundSelSomeone) {
106 /* SETTING_TRACE("Set it to active"); */
108 elm_object_item_disabled_set(elm_toolbar_last_item_get
109 (g_main_ad->controllbar_all_check),
114 static void __setting_list_changed(void *data, Evas_Object *obj,
120 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
122 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
123 elm_genlist_item_selected_set(item, 0);
124 Setting_GenGroupItem_Data *list_item =
125 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
127 int old_status = elm_check_state_get(list_item->eo_check);
129 list_item->chk_status = !old_status;
130 elm_check_state_set(list_item->eo_check, list_item->chk_status);
132 Eina_List *check_list = g_main_ad->item_check_list;
133 Setting_GenGroupItem_Data *group_item = NULL;
134 bool isFoundNotSelSomeone = FALSE;
135 bool isFoundSelSomeone = FALSE;
137 group_item = (Setting_GenGroupItem_Data *)
138 eina_list_data_get(check_list);
139 if (NULL == group_item) {
142 if (!(group_item->chk_status)) {
143 isFoundNotSelSomeone = TRUE;
146 isFoundSelSomeone = TRUE;
148 if (isFoundNotSelSomeone && isFoundSelSomeone) {
152 check_list = eina_list_next(check_list);
155 if (isFoundNotSelSomeone) {
156 g_main_ad->check_all_item->chk_status = 0; /* for update new state */
158 g_main_ad->check_all_item->chk_status = 1; /* for update new state */
160 elm_object_item_data_set(g_main_ad->check_all_item->item, g_main_ad->check_all_item);
161 elm_genlist_item_update(g_main_ad->check_all_item->item);
163 if (isFoundSelSomeone) {
164 /* SETTING_TRACE("Set it to active"); */
166 elm_object_item_disabled_set(elm_toolbar_last_item_get
167 (g_main_ad->controllbar_all_check),
174 __setting_chk_sel_all_changed(void *data, Evas_Object *obj, void *event_info)
176 /* SETTING_TRACE_BEGIN; */
177 retm_if(data == NULL, "Data parameter is NULL");
178 Setting_GenGroupItem_Data *list_item =
179 (Setting_GenGroupItem_Data *) data;
180 bool is_all_checked = elm_check_state_get(obj);
181 list_item->chk_status = is_all_checked; /* for update new state */
182 /* SETTING_TRACE("is_all_checked:%d", is_all_checked); */
184 Eina_List *check_list = g_main_ad->item_check_list;
187 list_item = (Setting_GenGroupItem_Data *)
188 eina_list_data_get(check_list);
189 if (NULL == list_item) {
192 list_item->chk_status = is_all_checked;
193 elm_object_item_data_set(list_item->item, list_item);
194 elm_genlist_item_update(list_item->item);
195 check_list = eina_list_next(check_list);
197 if (is_all_checked) {
199 elm_object_item_disabled_set(elm_toolbar_last_item_get
200 (g_main_ad->controllbar_all_check),
205 static void __setting_list_sel_all_changed(void *data, Evas_Object *obj,
211 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
212 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
213 elm_genlist_item_selected_set(item, 0);
214 Setting_GenGroupItem_Data *list_item =
215 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
217 int old_status = elm_check_state_get(list_item->eo_check);
219 int is_all_checked = list_item->chk_status = !old_status;
220 elm_check_state_set(list_item->eo_check, list_item->chk_status);
222 Eina_List *check_list = g_main_ad->item_check_list;
225 list_item = (Setting_GenGroupItem_Data *)
226 eina_list_data_get(check_list);
227 if (NULL == list_item) {
230 list_item->chk_status = is_all_checked;
231 /* elm_check_state_set(list_item->eo_check, is_all_checked); */
232 elm_object_item_data_set(list_item->item, list_item);
233 elm_genlist_item_update(list_item->item);
234 check_list = eina_list_next(check_list);
236 if (is_all_checked) {
238 elm_object_item_disabled_set(elm_toolbar_last_item_get
239 (g_main_ad->controllbar_all_check),
245 static void __load_check_list(void *data, Evas_Object **genlist,
249 setting_main_appdata *ad = (setting_main_appdata *) data;
253 Cfg_Item_Position pos = Cfg_Item_Pos_Uninstall;
254 bool isFoundNonSelItem = FALSE;
255 bool isFoundSelSomeoneItem = FALSE;
258 char *icon_path = NULL;
261 setting_create_Gendial_field_def(ad->gl_sel_all,
262 &(ad->itc[GENDIAL_Type_sel_all]),
263 __setting_list_sel_all_changed, ad,
264 SWALLOW_Type_1CHECK, NULL, NULL,
265 state, KeyStr_Select_All, NULL,
266 __setting_chk_sel_all_changed);
267 __BACK_POINTER_SET(ad->check_all_item);
269 Setting_GenGroupItem_Data *item = NULL;
270 Setting_GenGroupItem_Data *category_item = NULL;
271 for (i = 0; i < setting_cfg_get_category_length(); i++) {
272 if (NULL == menuNameKey) {
273 /* SETTING_TRACE("load all the items in config file"); */
276 (setting_cfg_get_category_name(i), menuNameKey)) {
279 char *category_name = setting_cfg_get_category_name(i);
282 setting_create_Gendial_field_group_titleItem(*genlist,
284 [GENDIAL_Type_group_item]),
286 ELM_GENLIST_ITEM_NONE,
290 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
291 keyStr = setting_cfg_get_keyname_idx(i, j);
292 pos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
294 if (Cfg_Item_Pos_Level1 == pos) {
296 isFoundNonSelItem = TRUE;
299 isFoundSelSomeoneItem = TRUE;
302 icon_path = setting_cfg_get_icon_path_idx(i, j);
304 setting_create_Gendial_field_groupitem(*genlist,
306 [GENDIAL_Type_1text_2icon_2]),
308 __setting_list_changed,
310 SWALLOW_Type_1CHECKICON,
315 __setting_chk_changed);
317 ad->item_check_list =
318 eina_list_append(ad->item_check_list, item);
321 SETTING_TRACE_ERROR("category_item is NULL");
325 if (ad->check_all_item) {
326 if (isFoundNonSelItem) {
327 ad->check_all_item->chk_status = 0; /* for update new state */
329 ad->check_all_item->chk_status = 1; /* for update new state */
331 elm_object_item_data_set(ad->check_all_item->item, ad->check_all_item);
332 elm_genlist_item_update(ad->check_all_item->item);
334 SETTING_TRACE_ERROR("ad->check_all_item is NULL");
337 if (isFoundSelSomeoneItem) {
338 /* elm_object_item_disabled_set(elm_toolbar_last_item_get
339 (ad->controllbar_all_check),
344 elm_object_item_disabled_set(elm_toolbar_last_item_get
345 (ad->controllbar_all_check),
352 static Setting_GenGroupItem_Data * __flightmode_handler(void* data, char* keyStr, char* icon_path, char* ug_name, Evas_Object *genlist)
354 // NOT UG --> it's just UI drawing
356 setting_main_appdata *ad = (setting_main_appdata *)data;
358 setting_get_bool_slp_key (BOOL_SLP_SETTING_FLIGHT_MODE, &value, &err);
360 /* create flight_mode */
361 ad->data_flight = setting_create_Gendial_field_groupitem(genlist,
362 &(ad->itc[GENDIAL_Type_1text_2icon]),
364 setting_main_click_Gendial_list_flight_mode_cb,
366 SWALLOW_Type_1ICON_1RADIO,
372 setting_main_click_list_flight_mode_cb);
373 __BACK_POINTER_SET(ad->data_flight);
375 return ad->data_flight;
378 static Setting_GenGroupItem_Data * __wifi_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
380 setting_main_appdata *ad = (setting_main_appdata *)data;
382 setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err);
384 char* pa_wifi = get_pa_Wi_Fi_on_off_str();
385 ad->data_wifi = setting_create_Gendial_field_groupitem(genlist,
386 &(ad->itc[GENDIAL_Type_2text_2icon_3]),
388 setting_main_click_list_ex_ug_cb,
390 SWALLOW_Type_1ICON_1RADIO,
396 setting_main_click_list_wifi_mode_cb);
397 __BACK_POINTER_SET(ad->data_wifi);
400 return ad->data_wifi;
403 static Setting_GenGroupItem_Data * __bluetooth_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
405 setting_main_appdata *ad = (setting_main_appdata *)data;
407 setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err);
409 ad->data_bt = setting_create_Gendial_field_groupitem(genlist,
410 &(ad->itc[GENDIAL_Type_2text_2icon_3]),
412 setting_main_click_list_ex_ug_cb,
414 SWALLOW_Type_1ICON_1RADIO,
421 setting_main_click_list_bt_mode_cb);
422 __BACK_POINTER_SET(ad->data_bt);
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_2text_2icon_3]),
474 setting_main_click_list_ex_ug_cb,
476 SWALLOW_Type_1ICON_1RADIO,
481 get_NFC_on_off_str(),
482 setting_main_click_list_nfc_mode_cb);
483 __BACK_POINTER_SET(ad->data_nfc);
486 setting_create_Gendial_field_def(genlist, &itc_multiline_text, NULL,
487 ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
488 NULL, NULL, 0, SETTING_NFC_DESC, NULL, NULL);
489 elm_genlist_item_select_mode_set(elm_genlist_item_append(genlist, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
490 ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
495 static Setting_GenGroupItem_Data * __default_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
497 setting_main_appdata *ad = (setting_main_appdata *)data;
498 Setting_GenGroupItem_Data * obj = setting_create_Gendial_field_groupitem(genlist,
499 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
501 setting_main_click_list_ex_ug_cb,
503 SWALLOW_Type_INVALID,
514 typedef struct mainlist_entry mainlist_entry;
516 struct mainlist_entry {
518 Setting_GenGroupItem_Data* (*ui_handler)(void* data, char* title, char* iconpath, char* ugname, Evas_Object *genlist);
523 MAINLIST_ENTRY_FLIGHT_MODE = 0,
526 MAINLIST_ENTRY_ALLSHARE,
527 MAINLIST_ENTRY_NETWORK,
529 MAINLIST_ENTRY_DEFAULT,
533 static mainlist_entry mainlist_table[] = {
534 {KeyStr_FlightMode, __flightmode_handler}, // 0 --> NOT UG
535 {KeyStr_WiFi, __wifi_handler}, // 1 --> UG
536 {KeyStr_Bluetooth, __bluetooth_handler}, // 1 --> UG
537 {KeyStr_AllShare, __allshare_handler}, // NOT UG
538 {KeyStr_Network, __network_handler}, // 1 --> UG
539 {KeyStr_NFC, __nfc_handler}, // 1 --> UG
540 {"Default", __default_handler}, // 1 --> UG
542 //--------------------------------------------------------------
547 void __gl_realized(void *data, Evas_Object *obj, void *event_info)
549 //SETTING_TRACE_BEGIN;
550 setting_retm_if(data == NULL, "invalid parameter: data is NULL");
551 setting_retm_if(event_info == NULL, "invalid parameter: event_info is NULL");
552 setting_main_appdata *ad = (setting_main_appdata *)data;
553 Elm_Object_Item *item = (Elm_Object_Item *)event_info;
554 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)elm_object_item_data_get(item);
556 //setting_retm_if(list_item == NULL, "list_item is NULL");
559 if (list_item->group_style == SETTING_GROUP_STYLE_TOP) {
560 elm_object_item_signal_emit(item, "elm,state,top", "");
561 } else if (list_item->group_style == SETTING_GROUP_STYLE_BOTTOM) {
562 elm_object_item_signal_emit(item, "elm,state,bottom", "");
563 } else if (list_item->group_style == SETTING_GROUP_STYLE_CENTER) {
564 elm_object_item_signal_emit(item, "elm,state,center", "");
565 } else if (list_item->group_style == SETTING_GROUP_STYLE_NONE) {
568 SETTING_TRACE_ERROR("list_item->group_style is wrong");
571 /* item is used for description */
572 elm_object_item_signal_emit(item, "elm,state,center", "");
576 // Flight Mode - not UG
577 // All share - not UG
578 // WiFi - added toggle
584 void __load_connectivity_menu_list(void *data, Cfg_Item_Position inputPos, Evas_Object *genlist)
587 setting_main_appdata *ad = data;
588 //group title, only display in setting main view
589 if (SETTING_VIEW_MAIN == ad->view_load) {
590 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
591 &(ad->itc[GENDIAL_Type_group_item]),
593 ELM_GENLIST_ITEM_NONE,
594 KeyStr_Connectivity, NULL);
597 int idx_second_menu = 0;
600 char *icon_path = NULL;
601 char *ug_args = NULL;
602 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
605 bool is_emulator = isEmulBin();
607 Setting_GenGroupItem_Data *item_data = NULL;
610 for (i = 0; i < setting_cfg_get_category_length(); i++) {
612 (setting_cfg_get_category_name(i), KeyStr_Connectivity))
615 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
616 keyStr = setting_cfg_get_keyname_idx(i, j);
617 tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
618 ug_args = setting_cfg_get_ug_args_idx(i, j);
619 icon_path = setting_cfg_get_icon_path_idx(i, j);
620 /* SETTING_TRACE_DEBUG("Got an item[keyStr:%s, ug_args:%s, pos:%d]", */
621 /* keyStr, ug_args, tmpPos); */
624 if (!safeStrCmp(KeyStr_FlightMode, keyStr)) {
625 continue; /* hide Flight Mode in Emulator*/
626 } else if (!safeStrCmp(KeyStr_WiFi, keyStr)) {
627 continue; /* hide WIFI in Emulator*/
628 } else if (!safeStrCmp(KeyStr_WiFiDirect, keyStr)) {
629 continue; /* hide WiFiDirect in Emulator*/
630 } else if (!safeStrCmp(KeyStr_Network, keyStr)) {
631 continue; /* hide Network in Emulator*/
632 } else if (!safeStrCmp(KeyStr_Bluetooth, keyStr)) {
633 continue; /* hide Bluetooth in Emulator*/
634 } else if (!safeStrCmp(KeyStr_MobileAP, keyStr)) {
635 continue; /* hide Tethering in Emulator*/
641 if (idx_second_menu < MAX_MORE_MENU_NUM
642 && Cfg_Item_Pos_Level1 == tmpPos
643 && SETTING_VIEW_MAIN == ad->view_load
644 && MAIN_PROFILE_PREFERRED == ad->profile_type) {
646 if (is_ug_installed_by_ug_args(ug_args)) {
647 ad->more_connective_menus[idx_second_menu++] = keyStr;
651 if (Cfg_Item_Pos_Level_All == inputPos) {
652 } else if (inputPos != tmpPos) { /* not in the inputPos level */
656 if (!safeStrCmp(KeyStr_FlightMode, keyStr)) { /* load special radio */
658 item_data = mainlist_table[MAINLIST_ENTRY_FLIGHT_MODE].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
660 } else if (!safeStrCmp(KeyStr_AllShare, keyStr)) { /* NOT UG */
662 item_data = mainlist_table[MAINLIST_ENTRY_ALLSHARE].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
664 } else if (!safeStrCmp(KeyStr_WiFi, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
666 item_data = mainlist_table[MAINLIST_ENTRY_WIFI].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
668 } else if (!safeStrCmp(KeyStr_Bluetooth, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
670 item_data = mainlist_table[MAINLIST_ENTRY_BT].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
674 else if (!safeStrCmp(KeyStr_MobileAP, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
676 item_data = mainlist_table[MAINLIST_ENTRY_MOBILEAP].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
680 else if (!safeStrCmp(KeyStr_Network, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special UG */
682 item_data = mainlist_table[MAINLIST_ENTRY_NETWORK].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
684 } else if (!safeStrCmp(KeyStr_NFC, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
685 int nfc_value = FALSE; //default
686 vconf_get_bool(VCONFKEY_NFC_FEATURE, &nfc_value);
687 if (VCONFKEY_NFC_FEATURE_ON == nfc_value)
689 item_data = mainlist_table[MAINLIST_ENTRY_NFC].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
691 } else { /* load other UGs */
692 if (is_ug_installed_by_ug_args(ug_args))
694 item_data = mainlist_table[MAINLIST_ENTRY_DEFAULT].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
700 item_data->group_style = SETTING_GROUP_STYLE_TOP;
701 } else if (j == setting_cfg_get_menu_length(i) - 1) {
702 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
704 item_data->group_style = SETTING_GROUP_STYLE_CENTER;
708 item_data->group_style = SETTING_GROUP_STYLE_TOP;
715 //end group , only display in setting main view
716 #if SUPPORT_MORE_ITEM_FUNCTION
717 if (SETTING_VIEW_MAIN == ad->view_load && MAIN_PROFILE_PREFERRED == ad->profile_type && idx_second_menu > 0)
719 char sub_text[MAX_COMMON_BUFFER_LEN] = {0, };
721 while (idx < MAX_MORE_MENU_NUM && ad->more_connective_menus[idx])
725 safeStrNCat(sub_text, ", ", MAX_COMMON_BUFFER_LEN);
727 safeStrNCat(sub_text, _(ad->more_connective_menus[idx]), MAX_COMMON_BUFFER_LEN);
731 ad->data_moreConnect =
732 setting_create_Gendial_field_groupitem(ad->main_genlist,
733 &(ad->itc[GENDIAL_Type_2text_3]),
735 setting_main_click_list_more_cb,
737 SWALLOW_Type_INVALID,
744 __BACK_POINTER_SET(ad->data_moreConnect);
746 /* if has <more ..> item , change the last item_date to SETTING_GROUP_STYLE_CENTER*/
747 if (item_data && index > 1) {
748 item_data->group_style = SETTING_GROUP_STYLE_CENTER;
750 ad->data_moreConnect->group_style = SETTING_GROUP_STYLE_BOTTOM;
752 item_data = ad->data_moreConnect;
758 item_data->group_style = SETTING_GROUP_STYLE_NONE;
759 } else if (index == 2) {
760 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
765 void __load_connectivity_level0_list(void *data)
767 setting_main_appdata *ad = data;
768 __load_connectivity_menu_list(ad, Cfg_Item_Pos_Level0, ad->main_genlist);
771 void __load_connectivity_level_all_list(void *data)
774 setting_main_appdata *ad = data;
775 __load_connectivity_menu_list(ad, Cfg_Item_Pos_Level_All, ad->main_genlist);
778 void __load_system_menu_list(void *data, Cfg_Item_Position inputPos, Evas_Object *genlist)
781 SETTING_TRACE_DEBUG("pos :%d", inputPos);
782 setting_main_appdata *ad = data;
783 //group title, only display in setting main view
784 if (SETTING_VIEW_MAIN == ad->view_load) {
785 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
786 &(ad->itc[GENDIAL_Type_group_item]),
788 ELM_GENLIST_ITEM_NONE,
789 KeyStr_System, NULL);
791 int idx_second_menu = 0;
794 char *icon_path = NULL;
795 char *ug_args = NULL;
797 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
802 bool is_emulator = isEmulBin();
804 Setting_GenGroupItem_Data *item_data = NULL;
807 //SETTING_TRACE("setting_cfg_get_category_length() :: %d ", setting_cfg_get_category_length());
808 for (i = 0; i < setting_cfg_get_category_length(); i++) {
809 if (safeStrCmp(setting_cfg_get_category_name(i), KeyStr_System))
812 //SETTING_TRACE(" setting_cfg_get_menu_length(%d) :: %d ",i, setting_cfg_get_menu_length(i) );
813 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
814 keyStr = setting_cfg_get_keyname_idx(i, j);
815 /* sg_path = setting_cfg_get_ugpath_idx(i, j); */
816 tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
817 icon_path = setting_cfg_get_icon_path_idx(i, j);
818 ug_args = setting_cfg_get_ug_args_idx(i, j);
820 //SETTING_TRACE("KeyString : %s , tmpPos : %d , inputPos : %d ", keyStr, tmpPos, inputPos );
823 if (!safeStrCmp(KeyStr_Security, keyStr)) {
824 continue; /* hide Security in Emulator*/
825 } else if (!safeStrCmp(KeyStr_Memory, keyStr)) {
826 continue; /* hide Memory in Emulator*/
827 } else if (!safeStrCmp(KeyStr_Powersaving, keyStr)) {
828 continue; /* hide Powersaving in Emulator*/
829 } else if (!safeStrCmp(KeyStr_FlightMode, keyStr)) {
830 continue; /* hide Powersaving in Emulator*/
836 if (idx_second_menu < MAX_MORE_MENU_NUM
837 && Cfg_Item_Pos_Level1 == tmpPos
838 && SETTING_VIEW_MAIN == ad->view_load
839 && MAIN_PROFILE_PREFERRED == ad->profile_type) {
841 if (is_ug_installed_by_ug_args(ug_args)) {
842 ad->more_system_menus[idx_second_menu++] = keyStr;
846 if (Cfg_Item_Pos_Level_All == inputPos) {
848 //SETTING_TRACE("Cfg_Item_Pos_Level_All == inputPos ---> no draw --- WHY?? ");
849 } else if (inputPos != tmpPos) { /* not in the inputPos level */
850 //SETTING_TRACE("inputPos == tmp Pos ---> no draw --- WHY?? ");
854 if (!safeStrCmp(KeyStr_FlightMode, keyStr)) { /* load special radio */
856 item_data = mainlist_table[MAINLIST_ENTRY_FLIGHT_MODE].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
859 else if (!safeStrCmp(KeyStr_Landscape, keyStr)) { /* load special UG */
862 (VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, &value);
864 ad->data_rotationMode =
865 setting_create_Gendial_field_groupitem(genlist,
866 &(ad->itc[GENDIAL_Type_1text_2icon]),
868 setting_main_sel_list_mouse_up_cb,
870 SWALLOW_Type_1ICON_1RADIO,
876 setting_main_list_mouse_up_cb);
877 __BACK_POINTER_SET(ad->data_rotationMode);
878 item_data = ad->data_rotationMode;
880 else if (!safeStrCmp(KeyStr_Brightness, keyStr)) {
882 char* pa_bright = get_brightness_mode_str();
884 setting_create_Gendial_field_groupitem(genlist,
885 &(ad->itc[GENDIAL_Type_1icon_2text]),
887 setting_main_click_list_ex_ug_cb,
889 SWALLOW_Type_INVALID,
896 __BACK_POINTER_SET(ad->data_bright);
897 item_data = ad->data_bright;
900 else { /* load other UGs */
901 item_data = setting_create_Gendial_field_groupitem(genlist,
902 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
904 setting_main_click_list_ex_ug_cb,
906 SWALLOW_Type_INVALID,
917 item_data->group_style = SETTING_GROUP_STYLE_TOP;
918 } else if (j == setting_cfg_get_menu_length(i) - 1) {
919 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
921 item_data->group_style = SETTING_GROUP_STYLE_CENTER;
925 item_data->group_style = SETTING_GROUP_STYLE_TOP;
931 //end group, only display in setting main view
932 #if SUPPORT_MORE_ITEM_FUNCTION
933 if (SETTING_VIEW_MAIN == ad->view_load && MAIN_PROFILE_PREFERRED == ad->profile_type && idx_second_menu > 0)
935 char sub_text[MAX_COMMON_BUFFER_LEN] = {0, };
937 while (idx < MAX_MORE_MENU_NUM && ad->more_system_menus[idx])
941 safeStrNCat(sub_text, ", ", MAX_COMMON_BUFFER_LEN);
943 safeStrNCat(sub_text, _(ad->more_system_menus[idx]), MAX_COMMON_BUFFER_LEN);
947 ad->data_moreSystem =
948 setting_create_Gendial_field_groupitem(ad->main_genlist,
949 &(ad->itc[GENDIAL_Type_2text_3]),
951 setting_main_click_list_more_cb,
953 SWALLOW_Type_INVALID,
960 __BACK_POINTER_SET(ad->data_moreSystem);
962 /* if has <more ..> item , change the last item_date to SETTING_GROUP_STYLE_CENTER*/
963 if (item_data && index > 1) {
964 item_data->group_style = SETTING_GROUP_STYLE_CENTER;
966 ad->data_moreSystem->group_style = SETTING_GROUP_STYLE_BOTTOM;
968 item_data = ad->data_moreSystem;
973 item_data->group_style = SETTING_GROUP_STYLE_NONE;
974 } else if (index == 2) {
975 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
979 static void __load_system_level0_list(void *data)
981 setting_main_appdata *ad = data;
982 __load_system_menu_list(ad, Cfg_Item_Pos_Level0, ad->main_genlist);
985 static void __load_system_level_all_list(void *data)
988 setting_main_appdata *ad = data;
989 __load_system_menu_list(ad, Cfg_Item_Pos_Level_All, ad->main_genlist);
992 static void __load_applications_menu_list(void *data,
993 Cfg_Item_Position inputPos)
996 SETTING_TRACE_DEBUG("pos :%d", inputPos);
997 setting_main_appdata *ad = data;
999 bool is_emulator = isEmulBin();
1002 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
1003 &(ad->itc[GENDIAL_Type_group_item]),
1005 ELM_GENLIST_ITEM_NONE,
1006 KeyStr_Applications, NULL);
1007 char *keyStr = NULL;
1008 char *icon_path = NULL;
1009 char *ug_args = NULL;
1010 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
1013 Setting_GenGroupItem_Data *item_data = NULL;
1015 for (i = 0; i < setting_cfg_get_category_length(); i++) {
1017 (setting_cfg_get_category_name(i), KeyStr_Applications))
1020 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
1021 keyStr = setting_cfg_get_keyname_idx(i, j);
1022 icon_path = setting_cfg_get_icon_path_idx(i, j);
1023 ug_args = setting_cfg_get_ug_args_idx(i, j);
1025 (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
1027 if (Cfg_Item_Pos_Level_All == inputPos) {
1028 } else if (inputPos != tmpPos) { /* not in the inputPos level */
1033 /* hide all except Email */
1034 if (safeStrCmp(KeyStr_Email, keyStr)) {
1041 item_data = setting_create_Gendial_field_groupitem(ad->main_genlist,
1042 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1044 setting_main_click_list_ex_ug_cb,
1046 SWALLOW_Type_INVALID,
1053 item_data->group_style = SETTING_GROUP_STYLE_TOP;
1054 } else if (j == setting_cfg_get_menu_length(i) - 1) {
1055 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
1057 item_data->group_style = SETTING_GROUP_STYLE_CENTER;
1061 item_data->group_style = SETTING_GROUP_STYLE_TOP;
1069 item_data->group_style = SETTING_GROUP_STYLE_NONE;
1070 } else if (index == 2) {
1071 item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
1077 static void __load_applications_level0_list(void *data)
1079 setting_main_appdata *ad = data;
1080 __load_applications_menu_list(ad, Cfg_Item_Pos_Level0);
1083 static void __load_applications_level_all_list(void *data)
1085 SETTING_TRACE_BEGIN;
1086 setting_main_appdata *ad = data;
1087 __load_applications_menu_list(ad, Cfg_Item_Pos_Level_All);
1091 bool is_3rdapp_installed_setting_cfg(char* pkgname)
1093 SETTING_TRACE_BEGIN;
1097 if (snprintf(path, 512, PLUGIN_PREFIX"/apps/%s/setting/setting.xml", pkgname) < 0)
1101 bool result_opt = false;
1103 if(stat(path, &st) == 0) {
1106 SETTING_TRACE_ERROR(" %s is *NOT* present\n", path);
1115 * ex) name : AppSetting4
1116 * ex) pkgname : UBKFwQidax.AppSetting4
1118 static void draw_3rdapp(void* data, char* name, char* pkgname)
1120 SETTING_TRACE_BEGIN;
1121 SETTING_TRACE(" name : %s", name);
1122 SETTING_TRACE(" pkgname : %s", pkgname);
1124 setting_main_appdata *ad = data;
1128 if (snprintf(fullpath, 512, PLUGIN_PREFIX"/apps/%s/setting/setting.xml", pkgname) < 0)
1131 SETTING_TRACE(" fullpath : %s", fullpath);
1135 char* plugin_path = strdup(fullpath);
1136 Setting_GenGroupItem_Data * plugin_node = setting_create_Gendial_field_groupitem(ad->main_genlist,
1137 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1139 setting_main_click_list_plugin_cb,
1141 SWALLOW_Type_INVALID,
1142 IMG_DefaultIcon, NULL,
1143 0, name, plugin_path, // <<-- refactoring
1153 static ail_cb_ret_e __download_apps_cb(ail_appinfo_h ai, void* data)
1155 DrawAppInfo* pinfo = (DrawAppInfo*)data;
1158 if (AIL_ERROR_OK == ail_appinfo_get_str(ai, AIL_PROP_PACKAGE_STR, &id))
1160 SETTING_TRACE(" 3rd party - app name : ----> %s ", id);
1163 ail_appinfo_h handle;
1168 bool nodisplay = false;
1169 bool removable = true;
1171 if (AIL_ERROR_OK == ail_package_get_appinfo(id, &handle))
1173 if (AIL_ERROR_OK != ail_appinfo_get_str(handle, AIL_PROP_NAME_STR, &name))
1174 SETTING_TRACE("cannot get name");
1176 if (AIL_ERROR_OK != ail_appinfo_get_str(handle, AIL_PROP_ICON_STR, &icon))
1177 SETTING_TRACE("cannot get icon");
1179 if (AIL_ERROR_OK != ail_appinfo_get_bool(handle, AIL_PROP_NODISPLAY_BOOL, &nodisplay))
1180 SETTING_TRACE("cannot get nodisplay");
1182 if (AIL_ERROR_OK != ail_appinfo_get_bool(handle, AIL_PROP_X_SLP_REMOVABLE_BOOL, &removable))
1183 SETTING_TRACE("cannot get removable");
1185 if (AIL_ERROR_OK != ail_appinfo_get_int(handle, AIL_PROP_X_SLP_INSTALLEDTIME_INT, &installed_time))
1186 SETTING_TRACE("cannot get installed_time");
1188 //SETTING_TRACE("installed_time = %d ", installed_time);
1189 if (installed_time != 0 && is_3rdapp_installed_setting_cfg(id) == true )
1191 SETTING_TRACE(" 3rd party - app name : ----> id : %s --- name : %s ", id, name);
1192 SETTING_TRACE(" 3rd party - icon : ----> %s ", icon);
1193 SETTING_TRACE(" 3rd party - nodisplay : ----> %d ", nodisplay);
1197 if (pinfo->draw_app != NULL)
1199 SETTING_TRACE(">>> pkg name --> %s ", id);
1200 pinfo->draw_app(pinfo->data, strdup(name)/* appname*/, strdup(id)/* pkg_name*/);
1205 return AIL_CB_RET_CONTINUE;
1210 * get 3rd party applist from AIL & searching dir/file by the defined rule
1212 * if data is NULL --> just get how many items are there
1213 * if data is NOT NULL --> draw UI code
1215 static int get_downloadapp_list(void* data)
1217 SETTING_TRACE_BEGIN;
1219 setting_main_appdata *ad = data;
1224 DrawAppInfo* pinfo = (DrawAppInfo*)malloc(sizeof(DrawAppInfo));
1228 pinfo->draw_app = draw_3rdapp;
1231 if (ail_filter_new(&f) == AIL_ERROR_OK)
1233 if (ail_filter_add_bool(f, AIL_PROP_NODISPLAY_BOOL, false) != AIL_ERROR_OK)
1235 SETTING_TRACE("ail filter error");
1240 ail_filter_destroy(f);
1244 ail_filter_list_appinfo_foreach(f, __download_apps_cb, pinfo);
1245 //---------------------------------------------------------------
1246 ail_filter_destroy(f);
1248 ncount = pinfo->ncount;
1258 static int __get_downloaded_apps_num(Cfg_Item_Position inputPos)
1260 SETTING_TRACE_BEGIN;
1261 SETTING_TRACE_DEBUG("pos :%d", inputPos);
1262 int downloaded_apps_num = 0;
1263 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
1265 for (i = 0; i < setting_cfg_get_category_length(); i++) {
1267 (setting_cfg_get_category_name(i), KeyStr_DownloadedAPPs))
1270 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
1271 tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
1272 if (Cfg_Item_Pos_Level_All == inputPos) {
1273 } else if (inputPos != tmpPos) { /* not in the inputPos level */
1277 downloaded_apps_num++;
1281 // draw UI with AUL code
1283 downloaded_apps_num = get_downloadapp_list(NULL);
1284 SETTING_TRACE("Exit %s with return[%d]",__FUNCTION__, downloaded_apps_num);
1287 SETTING_TRACE("Exit %s with return[%d]",__FUNCTION__, downloaded_apps_num);
1288 return downloaded_apps_num;
1292 static void __load_downloaded_apps_menu_list(void *data,
1293 Cfg_Item_Position inputPos)
1295 SETTING_TRACE_BEGIN;
1296 SETTING_TRACE_DEBUG("pos :%d", inputPos);
1297 setting_main_appdata *ad = data;
1299 // if the number of download apps is zero, display a bottom seperator
1300 if (0 == __get_downloaded_apps_num(inputPos)) {
1301 Elm_Object_Item *item = NULL;
1302 item = elm_genlist_item_append(ad->main_genlist, &itc_bottom_seperator, NULL, NULL,
1303 ELM_GENLIST_ITEM_NONE, NULL, NULL);
1304 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1309 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
1310 &(ad->itc[GENDIAL_Type_group_item]),
1312 ELM_GENLIST_ITEM_NONE,
1313 KeyStr_DownloadedAPPs,
1315 get_downloadapp_list(ad);
1316 //SETTING_TRACE("Exit %s with return[%d]",__FUNCTION__, downloaded_apps_num);
1320 static void __load_downloaded_apps_level0_list(void *data)
1322 setting_main_appdata *ad = data;
1323 __load_downloaded_apps_menu_list(ad, Cfg_Item_Pos_Level0);
1326 static void __load_downloaded_apps_level_all_list(void *data)
1328 SETTING_TRACE_BEGIN;
1329 setting_main_appdata *ad = data;
1330 __load_downloaded_apps_menu_list(ad, Cfg_Item_Pos_Level_All);
1333 static void __check_all_view_clear(void *data)
1335 SETTING_TRACE_BEGIN;
1337 setting_main_appdata *ad = data;
1338 if (ad->item_check_list) {
1339 eina_list_free(ad->item_check_list);
1340 ad->item_check_list = NULL;
1343 ad->gl_sel_all = NULL;
1344 ad->edit_preferred_genlist = NULL;
1345 //ad->controllbar_all_check = NULL;
1346 ad->check_all_item =NULL;
1349 static void __prefered_buttons_cb(void *data, Evas_Object *obj, void *event_info)
1351 SETTING_TRACE_BEGIN;
1353 setting_main_appdata *ad = (setting_main_appdata *) data;
1354 const char *key = NULL;
1356 key = elm_object_text_get(obj);
1357 setting_retm_if(data == NULL
1358 || key == NULL, "data == NULL || key == NULL");
1360 SETTING_TRACE_DEBUG("press button: %s", key);
1363 if (!safeStrCmp(key, dgettext("sys_string", "IDS_COM_SK_DONE"))) {
1365 if (ad->profile_type == MAIN_PROFILE_ALL) {
1366 SETTING_TRACE_DEBUG("Cancel to hide current view.");
1367 setting_try_save_check_list(ad); /* need to save too */
1368 __check_all_view_clear(ad);
1369 elm_naviframe_item_pop(ad->navibar_main); // pop(preferred) --> main
1373 // MAIN_PROFILE_PREFERRED and Etc
1374 // redraw setting-main
1375 setting_try_save_check_list(ad);
1376 elm_naviframe_item_pop(ad->navibar_main); // pop (preferred) -> main
1378 //After the view is popuped, all the object handlers should be reset NULL.
1379 __check_all_view_clear(ad);
1380 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1381 ad->load_fns[Func_Type_System] = __load_system_level0_list;
1382 ad->load_fns[Func_Type_Apps] = __load_applications_level0_list;
1383 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level0_list;
1384 int ret = setting_main_refresh(ad);
1385 ret_if(ret != SETTING_RETURN_SUCCESS);
1390 if (!safeStrCmp(key, setting_gettext("IDS_COM_SK_CANCEL"))
1391 || !safeStrCmp(key, dgettext("sys_string", "IDS_COM_BODY_BACK"))) {
1392 SETTING_TRACE_DEBUG("Cancel to hide current view.");
1393 elm_naviframe_item_pop(ad->navibar_main);
1394 //After the view is popuped, all the object handlers should be reset NULL.
1395 __check_all_view_clear(ad);
1401 static void __btnback_clicked_cb(void *data, Evas_Object *obj, void *event_info)
1403 SETTING_TRACE_BEGIN;
1405 setting_main_appdata *ad = (setting_main_appdata *) data;
1406 elm_win_lower(ad->win_main);
1409 static Eina_Bool __refresh_on_idle(void *data)
1411 SETTING_TRACE_BEGIN;
1412 retv_if(!data, FALSE);
1413 setting_main_appdata *ad = data;
1414 if (MAIN_PROFILE_ALL == ad->profile_type)
1416 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level_all_list;
1417 ad->load_fns[Func_Type_System] = __load_system_level_all_list;
1418 ad->load_fns[Func_Type_Apps] = __load_applications_level_all_list;
1419 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level_all_list;
1420 setting_main_refresh(ad);
1422 else if (MAIN_PROFILE_PREFERRED == ad->profile_type)
1424 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1425 ad->load_fns[Func_Type_System] = __load_system_level0_list;
1426 ad->load_fns[Func_Type_Apps] = __load_applications_level0_list;
1427 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level0_list;
1428 setting_main_refresh(ad);
1430 ad->refresh_idler = NULL;
1434 static void __allFrequent_btn_cb(void *data, Evas_Object *obj, void *event_info)
1436 SETTING_TRACE_BEGIN;
1437 ret_if(!data || !obj);
1438 setting_main_appdata *ad = (setting_main_appdata *) data;
1439 //if already has the task,cancel the old task with ecore_idler_del,then add new idler task.
1440 if (ad->refresh_idler) {
1441 ecore_idler_del(ad->refresh_idler);
1442 ad->refresh_idler = NULL;
1445 //Elm_Object_Item *item = elm_toolbar_first_item_get(obj);
1447 if (MAIN_PROFILE_ALL == ad->profile_type)
1449 SETTING_TRACE("Change to Preferred view");
1450 elm_object_text_set(obj, _(ALL_STR));
1451 ad->profile_type = MAIN_PROFILE_PREFERRED;
1453 else if (MAIN_PROFILE_PREFERRED == ad->profile_type)
1455 SETTING_TRACE("Change to ALL view");
1456 elm_object_text_set(obj, _(PREFERRED_STR));
1457 ad->profile_type = MAIN_PROFILE_ALL;
1463 ad->refresh_idler = ecore_idler_add((Ecore_Task_Cb) __refresh_on_idle, ad);
1466 static void __setting_show_title_toolbar(void *data, Evas_Object *obj, void *event_info)
1468 SETTING_TRACE_BEGIN;
1469 //elm_object_item_signal_emit(data, "elm,state,sip,shown", "");
1470 setting_main_appdata *ad = (setting_main_appdata *) data;
1472 Evas_Object *navi_bar = NULL;
1474 if (ad->isInUGMode && ad->ug) {
1475 Evas_Object *layout = (Evas_Object *)ug_get_layout(ad->ug);
1477 navi_bar = elm_object_part_content_get(layout, "elm.swallow.content");
1479 navi_bar = ad->navibar_main;
1482 const char *support = evas_object_data_get(navi_bar, "sip.naviframe.title_obj");
1483 SETTING_TRACE("support:%s", support);
1486 Elm_Object_Item *top_item = elm_naviframe_top_item_get(navi_bar);
1488 elm_object_item_signal_emit(top_item, "elm,state,sip,shown", "");
1492 static void __setting_hide_title_toolbar(void *data, Evas_Object *obj, void *event_info)
1494 SETTING_TRACE_BEGIN;
1495 //elm_object_item_signal_emit(data, "elm,state,sip,hidden", "");
1496 setting_main_appdata *ad = (setting_main_appdata *) data;
1498 Evas_Object *navi_bar = NULL;
1500 if (ad->isInUGMode && ad->ug) {
1501 Evas_Object *layout = (Evas_Object *)ug_get_layout(ad->ug);
1503 navi_bar = elm_object_part_content_get(layout, "elm.swallow.content");
1505 navi_bar = ad->navibar_main;
1508 const char *support = evas_object_data_get(navi_bar, "sip.naviframe.title_obj");
1510 SETTING_TRACE("support:%s", support);
1513 Elm_Object_Item *top_item = elm_naviframe_top_item_get(navi_bar);
1515 elm_object_item_signal_emit(top_item, "elm,state,sip,hidden", "");
1519 static bool __setting_create_main_view(void *data)
1521 SETTING_TRACE_BEGIN;
1523 setting_retvm_if(data == NULL, FALSE, "data == NULL");
1524 setting_main_appdata *ad = (setting_main_appdata *) data;
1526 Evas_Object *conform = elm_conformant_add(ad->win_main);
1527 ad->ly_main = setting_create_win_layout(ad->win_main, ad->win_main);
1528 evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1529 evas_object_size_hint_align_set(conform, EVAS_HINT_FILL, EVAS_HINT_FILL);
1530 elm_win_resize_object_add(ad->win_main, conform);
1531 elm_object_content_set(conform, ad->ly_main);
1532 evas_object_show(conform);
1534 evas_object_smart_callback_add(conform, "virtualkeypad,state,on", __setting_show_title_toolbar, ad);
1535 evas_object_smart_callback_add(conform, "virtualkeypad,state,off", __setting_hide_title_toolbar, ad);
1537 elm_win_conformant_set(ad->win_main, EINA_TRUE);
1539 ad->conform = conform;
1541 ad->navibar_main = setting_create_navi_bar(ad->ly_main);
1543 ad->main_genlist = elm_genlist_add(ad->navibar_main);
1544 elm_object_style_set(ad->main_genlist, "dialogue");
1545 retvm_if(ad->main_genlist == NULL, FALSE,
1546 "Cannot set scroller object as contento of layout");
1548 //elm_genlist_homogeneous_set(ad->main_genlist, EINA_TRUE);
1549 elm_genlist_clear(ad->main_genlist); /* first to clear list */
1550 evas_object_smart_callback_add(ad->main_genlist, "realized", __gl_realized, ad);
1552 setting_create_navi_bar_buttons(_("IDS_COM_BODY_SETTINGS"),
1553 _("IDS_COM_BODY_BACK"), NULL, _("IDS_ST_OPT_ALL"),
1554 __btnback_clicked_cb, NULL,
1555 __allFrequent_btn_cb, ad, ad->main_genlist,
1556 ad->navibar_main, NULL);
1558 ad->profile_type = MAIN_PROFILE_PREFERRED;
1559 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1560 ad->load_fns[Func_Type_System] = __load_system_level0_list;
1561 ad->load_fns[Func_Type_Apps] = __load_applications_level_all_list;
1562 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level_all_list;
1563 setting_main_refresh(ad);
1567 static bool __setting_create_prefered_view(void *data)
1569 SETTING_TRACE_BEGIN;
1571 setting_retvm_if(data == NULL, FALSE, "data == NULL");
1572 setting_main_appdata *ad = (setting_main_appdata *) data;
1574 /* the genlist will be destroyed with its parent view, when using elm_naviframe_item_pop() to destroy the view. */
1575 ad->edit_preferred_genlist = elm_genlist_add(ad->win_main);
1576 elm_object_style_set(ad->edit_preferred_genlist, "dialogue");
1577 elm_genlist_clear(ad->edit_preferred_genlist); /* first to clear list */
1579 /* [UI] edit preffered view */
1580 Evas_Object *sub_layout = elm_layout_add(ad->win_main);
1581 elm_object_style_set(sub_layout, "dialogue");
1582 elm_layout_file_set(sub_layout, SETTING_THEME_EDJ_NAME, "search_layout");
1583 evas_object_size_hint_weight_set(sub_layout, EVAS_HINT_EXPAND, 0.0);
1584 evas_object_show(sub_layout);
1586 ad->gl_sel_all = elm_genlist_add(ad->win_main);
1587 elm_genlist_clear(ad->gl_sel_all); /* first to clear list */
1588 elm_genlist_bounce_set(ad->gl_sel_all, 0, 0);
1590 elm_object_part_content_set(sub_layout, "search_bar", ad->gl_sel_all); /* add 'Select all' */
1591 elm_object_part_content_set(sub_layout, "search_list", ad->edit_preferred_genlist); /* add Genlist */
1593 /* push, not create */
1594 setting_push_layout_navi_bar(_(EDIT_PREFERRED_STR),
1595 _("IDS_COM_SK_CANCEL"),
1596 _("IDS_COM_SK_DONE"), NULL,
1597 __prefered_buttons_cb, __prefered_buttons_cb, NULL, ad,
1598 sub_layout, ad->navibar_main,
1604 static void setting_main_tapi_event_cb(TapiHandle *handle, int result, void *data, void *user_data)
1606 SETTING_TRACE_BEGIN;
1608 setting_main_appdata *ad = user_data;
1609 ad->b_fm_requesting = FALSE;
1610 SETTING_TRACE("result:%d", result);
1614 case TAPI_POWER_FLIGHT_MODE_RESP_ON:
1616 setting_set_bool_slp_key(BOOL_SLP_SETTING_FLIGHT_MODE,
1617 SETTING_ON_OFF_BTN_ON, &err);
1619 //If Setting has validate operation (fm_waiting_op == FM_LEAVE) to process, process it.
1620 //Otherwise, do nothing
1621 if (FM_LEAVE == ad->fm_waiting_op)
1623 //Send the latest operation
1624 ad->fm_waiting_op = FM_INVALID;
1625 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
1626 setting_retm_if(err != TAPI_API_SUCCESS,
1627 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
1630 ad->b_fm_requesting = TRUE;
1635 case TAPI_POWER_FLIGHT_MODE_RESP_OFF:
1637 setting_set_bool_slp_key(BOOL_SLP_SETTING_FLIGHT_MODE,
1638 SETTING_ON_OFF_BTN_OFF, &err);
1640 //If Setting has validate operation (here, fm_waiting_op == FM_ENTER) to process,process it.
1641 //Otherwise, do nothing
1642 if (FM_ENTER == ad->fm_waiting_op)
1644 //Send the latest operation
1645 ad->fm_waiting_op = FM_INVALID;
1646 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
1647 setting_retm_if(err != TAPI_API_SUCCESS,
1648 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
1651 ad->b_fm_requesting = TRUE;
1656 case TAPI_POWER_FLIGHT_MODE_RESP_FAIL:
1657 //Setting has a validate operation to process, Send the operation request
1658 if (FM_ENTER == ad->fm_waiting_op)
1660 ad->fm_waiting_op = FM_INVALID;
1661 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
1663 setting_retm_if(err != TAPI_API_SUCCESS,
1664 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
1665 ad->b_fm_requesting = TRUE;
1667 else if (FM_LEAVE == ad->fm_waiting_op)
1669 ad->fm_waiting_op = FM_INVALID;
1670 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
1672 setting_retm_if(err != TAPI_API_SUCCESS,
1673 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
1674 ad->b_fm_requesting = TRUE;
1676 else //Current requset is the last one, Setting needs to notify user
1678 setting_create_popup_without_btn(ad, ad->win_main,
1679 _("IDS_COM_POP_ERROR"),
1680 _("IDS_ST_POP_UNABLE_TO_TURN_ON_FLIGHT_MODE_VODA"),
1681 NULL, POPUP_INTERVAL,
1684 //It is need to rollback the status,
1685 if (ad->data_flight) {
1686 ad->data_flight->chk_status = !ad->data_flight->chk_status;
1687 elm_check_state_set(ad->data_flight->eo_check, ad->data_flight->chk_status);
1693 ad->b_fm_requesting = TRUE;
1697 case TAPI_POWER_FLIGHT_MODE_RESP_MAX:
1698 setting_create_popup_without_btn(ad, ad->win_main,
1699 _("IDS_COM_POP_ERROR"),
1700 _("IDS_COM_POP_UNEXPECTED_ERROR"),
1701 NULL, POPUP_INTERVAL, FALSE, FALSE);
1703 //It is need to rollback the status,
1704 if (ad->data_flight) {
1705 ad->data_flight->chk_status = !ad->data_flight->chk_status;
1706 elm_check_state_set(ad->data_flight->eo_check, ad->data_flight->chk_status);
1716 static int setting_main_refresh(void *data)
1718 SETTING_TRACE_BEGIN;
1719 setting_main_appdata *ad = (setting_main_appdata *) data;
1720 elm_genlist_clear(ad->main_genlist); /* first to clear list */
1723 if (is_ug_installed_by_ug_args("rcs-config"))
1725 Elm_Object_Item *item = elm_genlist_item_append(ad->main_genlist, &itc_seperator, NULL, NULL,
1726 ELM_GENLIST_ITEM_NONE, NULL, NULL);
1727 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1728 setting_create_Gendial_field_groupitem(ad->main_genlist,
1729 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1731 setting_main_click_list_ex_ug_cb,
1733 SWALLOW_Type_INVALID,
1735 0, KeyStr_Joyn, NULL,
1741 for(i = Func_Type_Connectivity; i < Func_Type_MAX; i++)
1742 (ad->load_fns[i]) (ad);
1744 memset(ad->load_fns, 0, Func_Type_MAX *sizeof(menu_list_load_fn));
1746 return SETTING_RETURN_SUCCESS;
1749 static int setting_main_create(void *cb)
1751 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1753 setting_main_appdata *ad = (setting_main_appdata *) cb;
1755 //pass NULL to let TAPI access default module
1756 ad->handle = tel_init(NULL);
1758 SETTING_TRACE_ERROR("*** [ERR] tel_init failed ***");
1760 SETTING_TRACE("tel_init ok[handle:%p]", ad->handle);
1762 setting_create_Gendial_itc("dialogue/1text.1icon.2",
1763 &(ad->itc[GENDIAL_Type_1text_1icon_2]));
1764 setting_create_Gendial_itc("dialogue/1text.2icon",
1765 &(ad->itc[GENDIAL_Type_1text_2icon]));
1766 setting_create_Gendial_itc("dialogue/2text.1icon.3",
1767 &(ad->itc[GENDIAL_Type_1icon_2text]));
1768 setting_create_Gendial_itc("dialogue/1text.1icon.2",
1769 &(ad->itc[GENDIAL_Type_1text_2icon_2]));
1770 setting_create_Gendial_itc("dialogue/2text.2icon.3",
1771 &(ad->itc[GENDIAL_Type_2text_2icon_3]));
1772 setting_create_Gendial_itc("dialogue/title",
1773 &(ad->itc[GENDIAL_Type_group_item]));
1774 setting_create_Gendial_itc("select_all",
1775 &(ad->itc[GENDIAL_Type_sel_all]));
1777 setting_create_Gendial_itc("dialogue/2text.3", &(ad->itc[GENDIAL_Type_2text_3]));
1779 ad->view_type = SETTING_VIEW_MAIN;
1780 __setting_create_main_view(ad);
1782 setting_view_main.is_create = 1;
1784 setting_drawer_list_init();
1785 return SETTING_RETURN_SUCCESS;
1788 static int setting_main_destroy(void *cb)
1790 SETTING_TRACE_BEGIN;
1792 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1794 setting_main_appdata *ad = (setting_main_appdata *) cb;
1795 if (0 == setting_view_main.is_create)
1798 return SETTING_RETURN_SUCCESS;
1801 evas_object_smart_callback_del(ad->conform, "virtualkeypad,state,on", __setting_show_title_toolbar);
1802 evas_object_smart_callback_del(ad->conform, "virtualkeypad,state,off", __setting_hide_title_toolbar);
1804 if (ad->refresh_idler) {
1805 ecore_idler_del(ad->refresh_idler);
1806 ad->refresh_idler = NULL;
1810 int tapi_ret = tel_deinit(ad->handle);
1811 if (tapi_ret != TAPI_API_SUCCESS) {
1812 SETTING_TRACE_DEBUG("*** [ERR] tel_deinit. [%d] ***", tapi_ret);
1814 SETTING_TRACE("*** tel_deinit OK ");
1819 /* then destroy the UI object. */
1820 if (ad->item_check_list) {
1821 eina_list_free(ad->item_check_list);
1822 ad->item_check_list = NULL;
1824 SETTING_TRACE("*** ad->item_check_list is NULL - abnormal state ");
1828 evas_object_del(ad->ly_main);
1832 if (ad->flight_popup) {
1833 evas_object_del(ad->flight_popup);
1834 ad->flight_popup = NULL;
1838 if (ad->plugin_node)
1840 setting_plugin_destroy(ad->plugin_node);
1844 evas_object_smart_callback_del(ad->main_genlist, "realized", __gl_realized);
1846 setting_dbus_handler_fini();
1847 setting_drawer_list_fini();
1849 setting_view_main.is_create = 0;
1851 return SETTING_RETURN_SUCCESS;
1854 static int setting_main_update(void *cb)
1856 SETTING_TRACE_BEGIN;
1859 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1861 setting_main_appdata *ad = (setting_main_appdata *) cb;
1863 if (ad->ly_main != NULL) {
1864 //evas_object_show(ad->ly_main);
1867 return SETTING_RETURN_SUCCESS;
1870 static int setting_main_cleanup(void *cb)
1872 SETTING_TRACE_BEGIN;
1874 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1876 setting_main_appdata *ad = (setting_main_appdata *) cb;
1878 if (ad->ly_main != NULL) {
1879 //evas_object_hide(ad->ly_main);
1882 return SETTING_RETURN_SUCCESS;
1885 /* ***************************************************
1889 ***************************************************/
1891 void setting_update_gl_item(void* data)
1893 SETTING_TRACE_BEGIN;
1894 setting_main_appdata *ad = data;
1895 retm_if(!data, "Invalid argument: data is NULL");
1898 Eina_Bool bGlUpdate = EINA_FALSE;
1899 Setting_GenGroupItem_Data *item_to_update = NULL;
1901 for(;nDx<GL_ITEM_MAX; nDx++) {
1902 if(EINA_TRUE == ad->updateItems[nDx]) {
1906 item_to_update = ad->data_wifi;
1907 bGlUpdate = EINA_TRUE;
1910 item_to_update = ad->data_bt;
1911 bGlUpdate = EINA_TRUE;
1914 item_to_update = ad->data_nfc;
1915 bGlUpdate = EINA_TRUE;
1917 case GL_ITEM_FLIGHT:
1918 item_to_update = ad->data_flight;
1919 bGlUpdate = EINA_FALSE;
1925 default: // other case
1929 if (item_to_update) {
1930 SETTING_TRACE("gl update [%s], bGlUpdate:%d", _(item_to_update->keyStr), bGlUpdate);
1932 SETTING_TRACE("gl update:%d", nDx);
1933 elm_object_item_data_set(item_to_update->item, item_to_update);
1934 elm_genlist_item_update(item_to_update->item);
1936 SETTING_TRACE("chk update:%d", nDx);
1937 elm_check_state_set(item_to_update->eo_check, item_to_update->chk_status);
1941 ad->updateItems[nDx] = EINA_FALSE;
1942 } // if(EINA_TRUE == ad->updateItems[nDx])
1950 void setting_main_destroy_ug_cb(ui_gadget_h ug, void *priv)
1952 setting_main_appdata *ad = (setting_main_appdata *) priv;
1954 return; /* do nothing if ad is NULL */
1961 setting_main_click_list_item_reset_data(ad, NULL);
1963 // update main genlist in unloading UG
1964 SETTING_TRACE("update main genlist in unloading UG");
1965 setting_update_gl_item(ad);
1970 void setting_main_result_ug_cb(ui_gadget_h ug, service_h service,
1975 // set default local automatically
1976 set_defaultLangICU();
1979 void setting_main_layout_ug_cb(ui_gadget_h ug, enum ug_mode mode,
1982 setting_main_appdata *ad = (setting_main_appdata *) priv;
1987 SETTING_TRACE_BEGIN;
1989 base = (Evas_Object *) ug_get_layout(ug);
1994 case UG_MODE_FULLVIEW:
1995 evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,
1997 evas_object_show(base);
2006 /* ***************************************************
2010 ***************************************************/
2012 void setting_main_click_list_item_reset_data(void *data,
2015 SETTING_TRACE_BEGIN;
2016 setting_main_appdata *ad = (setting_main_appdata *) data;
2018 ad->isInUGMode = FALSE;
2023 void /* obj is the layout clicked */
2024 setting_main_click_list_item_ug_cb(void *data, Evas_Object *obj,
2025 char *ug_to_load, service_h svc,
2028 SETTING_TRACE_BEGIN;
2029 setting_main_appdata *ad = (setting_main_appdata *) data;
2031 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
2035 char ug_file[PATH_MAX];
2037 (ug_file, PATH_MAX, "%s/libug-%s.so", SETTING_UG_PATH,
2040 SETTING_TRACE("ug_file:%s", ug_file);
2041 if (!ecore_file_exists(ug_file)) {
2042 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
2046 SETTING_TRACE("to create libug-%s.so", ug_to_load);
2047 ad->ug = ug_create(NULL, ug_to_load, UG_MODE_FULLVIEW, svc, cbs);
2049 ad->isInUGMode = TRUE;
2050 memset(ad->cur_loaded_ug, 0x00, MAX_DISPLAY_NAME_LEN_ON_UI);
2051 safeCopyStr(ad->cur_loaded_ug, ug_to_load, MAX_DISPLAY_NAME_LEN_ON_UI);
2054 evas_object_show(ad->ly_main);
2056 SETTING_TRACE_ERROR("errno:%d", errno);
2057 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
2063 setting_main_click_list_default_ug_cb(void *data, Evas_Object *obj,
2066 setting_main_appdata *ad = data;
2067 setting_create_simple_popup(ad, ad->win_main, NULL,
2072 setting_main_click_list_usb_cb(void *data, Evas_Object *obj, void *event_info)
2074 SETTING_TRACE_BEGIN;
2075 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2079 char *str_text = USB_NEED_OFF;
2081 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2083 setting_get_int_slp_key(INT_SLP_SETTING_MOBILE_AP_STATUS, &value, &err);
2086 SETTING_TRACE_ERROR("FAIL: VCONFKEY_MOBILE_HOTSPOT_MODE may not exist\n");
2087 setting_main_click_list_ex_ug_cb(data, obj, item);
2091 /* If mobile hotspot is on, going USB utilties is blocked by a popup*/
2092 if (value & VCONFKEY_MOBILE_HOTSPOT_MODE_USB)
2094 elm_genlist_item_selected_set(item, EINA_FALSE);
2095 setting_create_simple_popup(g_main_ad, g_main_ad->win_main, NULL, (str_text));
2099 setting_main_click_list_ex_ug_cb(data, obj, item);
2105 void setting_main_click_list_more_cb(void *data, Evas_Object *obj, void *event_info)
2107 SETTING_TRACE_BEGIN;
2108 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2109 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2110 elm_genlist_item_selected_set(item, EINA_FALSE);
2111 retm_if(data == NULL, "Invalid argument: data is NULL");
2112 setting_main_appdata *ad = data;
2113 Setting_GenGroupItem_Data *selected_item_data =
2114 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2115 SETTING_TRACE("selected_item_data->keyStr:%s", selected_item_data->keyStr);
2116 if (0 == safeStrCmp(selected_item_data->keyStr, KeyStr_MoreConnect))
2118 ad->view_load = SETTING_VIEW_CONNECTIVE_MORE;
2120 else if (0 == safeStrCmp(selected_item_data->keyStr, KeyStr_MoreSystem))
2122 ad->view_load = SETTING_VIEW_SYSTEM_MORE;
2128 setting_view_change(&setting_view_main, &setting_view_more_menu, ad);
2133 setting_main_click_list_ex_ug_cb(void *data, Evas_Object *obj,
2136 SETTING_TRACE_BEGIN;
2137 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2138 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2140 elm_genlist_item_selected_set(item, EINA_FALSE);
2142 if (g_main_ad->ug) {
2144 ("[ad->ug non-NULL]skip genlist click event!!");
2150 if (NULL == data) { /* pass NULL to ug_args when create setting.cfg. */
2151 setting_create_simple_popup(g_main_ad,
2152 g_main_ad->win_main,
2153 NULL, NO_UG_FOUND_MSG);
2158 setting_main_appdata *ad = g_main_ad;
2160 /* if UG is created by Setting app, setting_main_click_list_ex_ug_cb is diabled. */
2161 if (ad->isInUGMode) {
2162 SETTING_TRACE("isInUGMode : TRUE - another UG is running now.");
2163 ad->isInUGMode = FALSE;
2168 ("isInUGMode : FALSE - another UG is NOT running now.")
2171 Setting_GenGroupItem_Data *selected_item_data =
2172 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2173 setting_main_click_list_item_reset_data(ad, obj);
2174 const char *item_name = _(selected_item_data->keyStr);
2177 struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
2178 setting_retm_if(!cbs, "calloc failed");
2179 cbs->layout_cb = setting_main_layout_ug_cb;
2180 cbs->result_cb = setting_main_result_ug_cb;
2181 cbs->destroy_cb = setting_main_destroy_ug_cb;
2182 cbs->priv = (void *)ad;
2184 char *path = get_ug_path_from_ug_args(data);
2185 service_h svc = get_bundle_from_ug_args(data);
2186 setting_main_click_list_item_ug_cb(ad, obj, path, svc, cbs);
2193 service_destroy(svc);
2196 setting_main_click_list_plugin_cb(void *data, Evas_Object *obj,
2199 SETTING_TRACE_BEGIN;
2200 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2201 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2202 elm_genlist_item_selected_set(item, EINA_FALSE);
2203 Setting_GenGroupItem_Data *selected_item = (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2205 setting_main_appdata *ad = data;
2208 ad->plugin_path = strdup(selected_item->sub_desc);
2209 SETTING_TRACE(" >> SELECTED plugin name : %s \n", ad->plugin_path);
2211 setting_dbus_handler_init( ad );
2214 PluginNode* plugin_node = setting_plugin_create(ad);
2215 plugin_node->plugin_path = strdup(ad->plugin_path);
2216 setting_plugin_load(plugin_node, (const char *)plugin_node->plugin_path);
2218 ad->plugin_node = plugin_node; // the selected plugin name
2223 * @see [caller] setting_main_list_mouse_up_cb
2224 * @see [caller] setting_main_sel_list_mouse_up_cb
2226 static void __rotate_lock_handler(int chk_status, setting_main_appdata *ad )
2228 SETTING_TRACE_BEGIN;
2229 if( chk_status == 1)
2232 int angle = elm_win_rotation_get(ad->win_main);
2233 elm_win_rotation_with_resize_set(ad->win_main, angle);
2235 elm_win_rotation_with_resize_set(ad->win_main, 0);
2237 vconf_set_bool(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, chk_status);
2243 void setting_main_list_mouse_up_cb(void *data, Evas_Object *eo,
2246 SETTING_TRACE_BEGIN;
2247 retm_if(data == NULL, "Data parameter is NULL");
2248 Setting_GenGroupItem_Data *list_item =
2249 (Setting_GenGroupItem_Data *) data;
2250 SETTING_TRACE("process item [%s]", list_item->keyStr);
2251 list_item->chk_status = elm_check_state_get(eo); /* for update new state */
2253 SETTING_TRACE("change radio[%s], status is:%d", _(list_item->keyStr),
2254 list_item->chk_status);
2255 setting_main_appdata *ad = g_main_ad;
2257 if (!safeStrCmp(KeyStr_UsePacketData, list_item->keyStr)) {
2259 if (elm_check_state_get(eo)) {
2260 setting_set_bool_slp_key
2261 (BOOL_SLP_SETTING_USE_PACKET_DATA,
2262 SETTING_ON_OFF_BTN_ON, &err);
2264 setting_set_bool_slp_key
2265 (BOOL_SLP_SETTING_USE_PACKET_DATA,
2266 SETTING_ON_OFF_BTN_OFF, &err);
2269 } else if (!safeStrCmp(KeyStr_Landscape, list_item->keyStr)) {
2270 __rotate_lock_handler(list_item->chk_status, ad);
2279 void setting_main_sel_list_mouse_up_cb(void *data, Evas_Object *eo,
2282 SETTING_TRACE_BEGIN;
2283 setting_retm_if(data == NULL, "Data parameter is NULL");
2285 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2286 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2287 elm_genlist_item_selected_set(item, 0);
2288 Setting_GenGroupItem_Data *list_item =
2289 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2291 list_item->chk_status = elm_check_state_get(list_item->eo_check);
2294 list_item->chk_status = !list_item->chk_status;
2295 elm_check_state_set(list_item->eo_check, list_item->chk_status);
2297 setting_main_appdata *ad = (setting_main_appdata *) data;
2298 if (!safeStrCmp(KeyStr_UsePacketData, list_item->keyStr)) {
2299 /* setting_reset_slp_key_by_status(eo, BOOL_SLP_SETTING_USE_PACKET_DATA); */
2301 setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
2302 list_item->chk_status, &err);
2304 } else if (!safeStrCmp(KeyStr_Landscape, list_item->keyStr)) {
2305 __rotate_lock_handler(list_item->chk_status, ad);
2311 void __alternate_flight_mode(Evas_Object *check)
2313 SETTING_TRACE_BEGIN;
2315 Eina_Bool status = elm_check_state_get(check);
2316 SETTING_TRACE("flight mode status : %d", status);
2317 setting_main_appdata *ad = g_main_ad;
2319 //Check whether some requestion is processing by TAPI
2320 if (ad->b_fm_requesting)
2322 //Do nothing, just mark the lastest operation..
2323 SETTING_TRACE("Some requestion is processing by TAPI, wait to process");
2324 ad->fm_waiting_op = status ? FM_ENTER : FM_LEAVE;
2328 //otherwise, invalid waiting operation and send requsetion to TAPI:
2329 ad->fm_waiting_op = FM_INVALID;
2331 ret = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
2332 setting_retm_if(ret != TAPI_API_SUCCESS,
2333 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
2335 ret = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
2336 setting_retm_if(ret != TAPI_API_SUCCESS,
2337 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
2341 ad->b_fm_requesting = TRUE;
2345 void __alternate_wifi_mode(Evas_Object *check)
2347 SETTING_TRACE_BEGIN;
2349 Eina_Bool status = elm_check_state_get(check);
2350 SETTING_TRACE("wifi mode status : %d", status);
2352 ret = wifi_initialize();
2353 setting_retm_if(ret < 0, "*** [ERR] wifi_initialize() ***");
2357 ret = wifi_activate(NULL, NULL);
2358 setting_retm_if(ret < 0,
2359 "*** [ERR] wifi_activate() ***");
2361 ret = wifi_deactivate(NULL, NULL);
2362 setting_retm_if(ret < 0,
2363 "*** [ERR] wifi_deactivate() ***");
2365 ret = wifi_deinitialize();
2366 setting_retm_if(ret < 0, "*** [ERR] wifi_deinitialize() ***");
2371 void __alternate_bt_mode(Evas_Object *check)
2373 SETTING_TRACE_BEGIN;
2375 Eina_Bool status = elm_check_state_get(check);
2376 SETTING_TRACE("bt mode status : %d", status);
2378 ret = bt_initialize();
2379 setting_retm_if(ret < 0, "*** [ERR] bt_initialize() ***");
2383 ret = bt_adapter_enable();
2384 setting_retm_if(ret < 0,
2385 "*** [ERR] bt_adapter_enable() ***");
2387 ret = bt_adapter_disable();
2388 setting_retm_if(ret < 0,
2389 "*** [ERR] bt_adapter_disable() ***");
2392 ret = bt_deinitialize();
2393 setting_retm_if(ret < 0, "*** [ERR] bt_deinitialize() ***");
2398 void __alternate_nfc_mode(Evas_Object *check)
2400 SETTING_TRACE_BEGIN;
2402 Eina_Bool status = elm_check_state_get(check);
2403 SETTING_TRACE("nfc mode status : %d", status);
2405 ret = nfc_manager_initialize(NULL, NULL);
2406 setting_retm_if(ret < 0, "*** [ERR] nfc_manager_initialize() ***");
2409 ret = nfc_manager_set_activation(status, NULL, NULL);
2410 setting_retm_if(ret < 0,
2411 "*** [ERR] nfc_manager_set_activation() ***");
2413 ret = nfc_manager_deinitialize();
2414 setting_retm_if(ret < 0, "*** [ERR] nfc_manager_deinitialize() ***");
2419 void __alternate_sbeam_mode(Evas_Object *check)
2421 SETTING_TRACE_BEGIN;
2423 Eina_Bool status = elm_check_state_get(check);
2424 SETTING_TRACE("wifi mode status : %d", status);
2426 vconf_set_bool(VCONFKEY_NFC_SBEAM, status);
2432 setting_main_click_list_network_ug_cb(void *data, Evas_Object *obj,
2435 SETTING_TRACE_BEGIN;
2436 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2437 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2439 elm_genlist_item_selected_set(item, EINA_FALSE);
2441 if (g_main_ad->ug) {
2443 ("[ad->ug non-NULL]skip genlist click event!!");
2449 setting_main_appdata *ad = g_main_ad;
2450 setting_main_click_list_item_reset_data(ad, obj);
2454 setting_get_int_slp_key(INT_SLP_SETTING_SIM_SLOT, &value, &err);
2455 SETTING_TRACE("value:%d", value);
2457 case VCONFKEY_TELEPHONY_SIM_INSERTED:
2459 struct ug_cbs *cbs =
2460 (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
2461 setting_retm_if(!cbs, "calloc failed");
2462 cbs->layout_cb = setting_main_layout_ug_cb;
2463 cbs->result_cb = setting_main_result_ug_cb;
2464 cbs->destroy_cb = setting_main_destroy_ug_cb;
2465 cbs->priv = (void *)ad;
2466 setting_main_click_list_item_ug_cb(data, obj,
2467 "setting-network-efl",
2472 case VCONFKEY_TELEPHONY_SIM_NOT_PRESENT:
2473 setting_create_simple_popup(NULL, ad->win_main,
2474 NULL, _("IDS_ST_HEADER_INSERT_SIM_CARD_ABB"));
2475 SETTING_TRACE("%s*** [ERR] No SIM. sim_slot_type=%d ***%s",
2476 SETTING_FONT_RED, value, SETTING_FONT_BLACK);
2479 case VCONFKEY_TELEPHONY_SIM_CARD_ERROR:
2480 case VCONFKEY_TELEPHONY_SIM_UNKNOWN:
2481 setting_create_simple_popup(NULL, ad->win_main,
2482 NULL,_("IDS_COM_BODY_INVALID_SIM_CARD"));
2483 SETTING_TRACE("%s*** [ERR] Invalid SIM. sim_slot_type=%d ***%s",
2484 SETTING_FONT_RED, value, SETTING_FONT_BLACK);
2497 setting_main_click_Gendial_list_flight_mode_cb(void *data, Evas_Object *obj,
2501 setting_retm_if(data == NULL, "Data parameter is NULL");
2503 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2504 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2505 elm_genlist_item_selected_set(item, 0);
2506 Setting_GenGroupItem_Data *list_item =
2507 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2508 int old_status = elm_check_state_get(list_item->eo_check);
2510 list_item->chk_status = !old_status;
2511 elm_check_state_set(list_item->eo_check, list_item->chk_status);
2513 __alternate_flight_mode(list_item->eo_check);
2521 setting_main_click_list_flight_mode_cb(void *data, Evas_Object *obj,
2524 SETTING_TRACE_BEGIN;
2525 retm_if(data == NULL, "Data parameter is NULL");
2526 Setting_GenGroupItem_Data *list_item =
2527 (Setting_GenGroupItem_Data *) data;
2528 list_item->chk_status = elm_check_state_get(obj); /* for update new state */
2529 SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2530 list_item->chk_status);
2532 __alternate_flight_mode(obj);
2540 setting_main_click_list_wifi_mode_cb(void *data, Evas_Object *obj,
2543 SETTING_TRACE_BEGIN;
2544 retm_if(data == NULL, "Data parameter is NULL");
2545 Setting_GenGroupItem_Data *list_item =
2546 (Setting_GenGroupItem_Data *) data;
2547 list_item->chk_status = elm_check_state_get(obj); /* for update new state */
2548 SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2549 list_item->chk_status);
2551 __alternate_wifi_mode(obj);
2559 setting_main_click_list_bt_mode_cb(void *data, Evas_Object *obj,
2562 SETTING_TRACE_BEGIN;
2563 retm_if(data == NULL, "Data parameter is NULL");
2564 Setting_GenGroupItem_Data *list_item =
2565 (Setting_GenGroupItem_Data *) data;
2566 list_item->chk_status = elm_check_state_get(obj); /* for update new state */
2567 SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2568 list_item->chk_status);
2570 __alternate_bt_mode(obj);
2578 setting_main_click_list_nfc_mode_cb(void *data, Evas_Object *obj,
2581 SETTING_TRACE_BEGIN;
2582 retm_if(data == NULL, "Data parameter is NULL");
2583 Setting_GenGroupItem_Data *list_item =
2584 (Setting_GenGroupItem_Data *) data;
2585 list_item->chk_status = elm_check_state_get(obj); /* for update new state */
2586 SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2587 list_item->chk_status);
2589 __alternate_nfc_mode(obj);
2597 setting_main_click_list_sbeam_mode_cb(void *data, Evas_Object *obj,
2600 SETTING_TRACE_BEGIN;
2601 retm_if(data == NULL, "Data parameter is NULL");
2602 Setting_GenGroupItem_Data *list_item =
2603 (Setting_GenGroupItem_Data *) data;
2604 list_item->chk_status = elm_check_state_get(obj); /* for update new state */
2605 SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2606 list_item->chk_status);
2608 __alternate_sbeam_mode(obj);
2613 * store current selection in setting.cfg
2615 void setting_try_save_check_list(void *data)
2617 SETTING_TRACE_BEGIN;
2618 setting_main_appdata *ad = (setting_main_appdata *) data;
2620 Eina_List *check_list = ad->item_check_list;
2621 Setting_GenGroupItem_Data *list_item = NULL;
2622 int update_count = 0;
2624 while (check_list) {
2625 list_item = (Setting_GenGroupItem_Data *) eina_list_data_get(check_list);
2626 if (NULL == list_item) continue;
2629 if (list_item->chk_status) {
2630 /* to update config file */
2631 setting_cfg_set_pos(list_item->keyStr, Cfg_Item_Pos_Level0);
2633 /* to update config file */
2634 setting_cfg_set_pos(list_item->keyStr, Cfg_Item_Pos_Level1);
2636 check_list = eina_list_next(check_list);
2639 if (update_count == 0) {
2640 /* to popup tips notify */
2642 setting_cfg_file_update();
2648 setting_main_click_edit_preferred_cb(void *data, Evas_Object *obj, void *event_info)
2650 SETTING_TRACE_BEGIN;
2652 setting_main_appdata *ad = (setting_main_appdata *) data;
2653 ad->view_type = SETTING_VIEW_ALL_CHECK;
2654 __setting_create_prefered_view(ad);
2655 __load_check_list(ad, &(ad->edit_preferred_genlist), NULL);