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 #define PLUGIN_PATH_FORMAT "/opt/apps/%s/setting/setting.xml"
31 typedef struct DrawAppInfo DrawAppInfo;
32 typedef struct DrawAppInfo
35 //------------------------------------
36 void (*draw_app)(void* arg, char* name, char* pkgname);
40 static int setting_main_create(void *cb);
41 static int setting_main_destroy(void *cb);
42 static int setting_main_update(void *cb);
43 static int setting_main_cleanup(void *cb);
45 setting_view setting_view_main = {
46 .create = setting_main_create,
47 .update = setting_main_update,
48 .destroy = setting_main_destroy,
49 .cleanup = setting_main_cleanup,
52 static void setting_main_tapi_event_cb(TapiHandle *handle, int result, void *data, void *user_data);
53 static int setting_main_refresh(void *data);
54 static void __alternate_flight_mode(Evas_Object *check);
55 static void setting_main_click_Gendial_list_flight_mode_cb(void *data,
58 static void __alternate_flight_mode(Evas_Object *check);
60 void setting_main_click_list_item_ug_cb(void *data, Evas_Object *obj, char *ug_to_load, service_h svc, struct ug_cbs *cbs);
62 setting_main_appdata *g_main_ad;
64 __setting_chk_changed(void *data, Evas_Object *obj, void *event_info)
66 /* SETTING_TRACE_BEGIN; */
67 retm_if(data == NULL, "Data parameter is NULL");
68 Setting_GenGroupItem_Data *list_item =
69 (Setting_GenGroupItem_Data *) data;
70 /* SETTING_TRACE("process item [%s]", _(list_item->keyStr)); */
71 list_item->chk_status = elm_check_state_get(obj);
73 Eina_List *check_list = g_main_ad->item_check_list;
74 Setting_GenGroupItem_Data *item = NULL;
75 bool isFoundNotSelSomeone = FALSE;
76 bool isFoundSelSomeone = FALSE;
78 item = (Setting_GenGroupItem_Data *)
79 eina_list_data_get(check_list);
83 if (!(item->chk_status)) {
84 isFoundNotSelSomeone = TRUE;
86 isFoundSelSomeone = TRUE;
88 if (isFoundNotSelSomeone && isFoundSelSomeone) {
91 check_list = eina_list_next(check_list);
94 if (isFoundNotSelSomeone) {
95 g_main_ad->check_all_item->chk_status = 0; /* for update new state */
97 g_main_ad->check_all_item->chk_status = 1; /* for update new state */
99 elm_object_item_data_set(g_main_ad->check_all_item->item, g_main_ad->check_all_item);
100 elm_genlist_item_update(g_main_ad->check_all_item->item);
102 if (isFoundSelSomeone) {
103 /* SETTING_TRACE("Set it to active"); */
104 elm_object_item_disabled_set(elm_toolbar_last_item_get
105 (g_main_ad->controllbar_all_check),
110 static void __setting_list_changed(void *data, Evas_Object *obj,
116 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
118 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
119 elm_genlist_item_selected_set(item, 0);
120 Setting_GenGroupItem_Data *list_item =
121 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
123 int old_status = elm_check_state_get(list_item->eo_check);
125 list_item->chk_status = !old_status;
126 elm_check_state_set(list_item->eo_check, list_item->chk_status);
128 Eina_List *check_list = g_main_ad->item_check_list;
129 Setting_GenGroupItem_Data *group_item = NULL;
130 bool isFoundNotSelSomeone = FALSE;
131 bool isFoundSelSomeone = FALSE;
133 group_item = (Setting_GenGroupItem_Data *)
134 eina_list_data_get(check_list);
135 if (NULL == group_item) {
138 if (!(group_item->chk_status)) {
139 isFoundNotSelSomeone = TRUE;
142 isFoundSelSomeone = TRUE;
144 if (isFoundNotSelSomeone && isFoundSelSomeone) {
148 check_list = eina_list_next(check_list);
151 if (isFoundNotSelSomeone) {
152 g_main_ad->check_all_item->chk_status = 0; /* for update new state */
154 g_main_ad->check_all_item->chk_status = 1; /* for update new state */
156 elm_object_item_data_set(g_main_ad->check_all_item->item, g_main_ad->check_all_item);
157 elm_genlist_item_update(g_main_ad->check_all_item->item);
159 if (isFoundSelSomeone) {
160 /* SETTING_TRACE("Set it to active"); */
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) {
193 elm_object_item_disabled_set(elm_toolbar_last_item_get
194 (g_main_ad->controllbar_all_check),
199 static void __setting_list_sel_all_changed(void *data, Evas_Object *obj,
205 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
206 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
207 elm_genlist_item_selected_set(item, 0);
208 Setting_GenGroupItem_Data *list_item =
209 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
211 int old_status = elm_check_state_get(list_item->eo_check);
213 int is_all_checked = list_item->chk_status = !old_status;
214 elm_check_state_set(list_item->eo_check, list_item->chk_status);
216 Eina_List *check_list = g_main_ad->item_check_list;
219 list_item = (Setting_GenGroupItem_Data *)
220 eina_list_data_get(check_list);
221 if (NULL == list_item) {
224 list_item->chk_status = is_all_checked;
225 /* elm_check_state_set(list_item->eo_check, is_all_checked); */
226 elm_object_item_data_set(list_item->item, list_item);
227 elm_genlist_item_update(list_item->item);
228 check_list = eina_list_next(check_list);
230 if (is_all_checked) {
231 elm_object_item_disabled_set(elm_toolbar_last_item_get
232 (g_main_ad->controllbar_all_check),
238 static void __load_check_list(void *data, Evas_Object **genlist,
242 setting_main_appdata *ad = (setting_main_appdata *) data;
246 Cfg_Item_Position pos = Cfg_Item_Pos_Uninstall;
247 bool isFoundNonSelItem = FALSE;
248 bool isFoundSelSomeoneItem = FALSE;
251 char *icon_path = NULL;
254 setting_create_Gendial_field_def(ad->gl_sel_all,
255 &(ad->itc[GENDIAL_Type_sel_all]),
256 __setting_list_sel_all_changed, ad,
257 SWALLOW_Type_1CHECK, NULL, NULL,
258 state, KeyStr_Select_All, NULL,
259 __setting_chk_sel_all_changed);
260 __BACK_POINTER_SET(ad->check_all_item);
262 Setting_GenGroupItem_Data *item = NULL;
263 Setting_GenGroupItem_Data *category_item = NULL;
264 for (i = 0; i < setting_cfg_get_category_length(); i++) {
265 if (NULL == menuNameKey) {
266 /* SETTING_TRACE("load all the items in config file"); */
269 (setting_cfg_get_category_name(i), menuNameKey)) {
272 char *category_name = setting_cfg_get_category_name(i);
275 setting_create_Gendial_field_group_titleItem(*genlist,
277 [GENDIAL_Type_group_item]),
279 ELM_GENLIST_ITEM_NONE,
283 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
284 keyStr = setting_cfg_get_keyname_idx(i, j);
285 pos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
287 if (Cfg_Item_Pos_Level1 == pos) {
289 isFoundNonSelItem = TRUE;
292 isFoundSelSomeoneItem = TRUE;
295 icon_path = setting_cfg_get_icon_path_idx(i, j);
297 setting_create_Gendial_field_groupitem(*genlist,
299 [GENDIAL_Type_1text_2icon_2]),
301 __setting_list_changed,
303 SWALLOW_Type_1CHECKICON,
308 __setting_chk_changed);
310 ad->item_check_list =
311 eina_list_append(ad->item_check_list, item);
314 SETTING_TRACE_ERROR("category_item is NULL");
318 if (ad->check_all_item) {
319 if (isFoundNonSelItem) {
320 ad->check_all_item->chk_status = 0; /* for update new state */
322 ad->check_all_item->chk_status = 1; /* for update new state */
324 elm_object_item_data_set(ad->check_all_item->item, ad->check_all_item);
325 elm_genlist_item_update(ad->check_all_item->item);
327 SETTING_TRACE_ERROR("ad->check_all_item is NULL");
330 if (isFoundSelSomeoneItem) {
331 elm_object_item_disabled_set(elm_toolbar_last_item_get
332 (ad->controllbar_all_check),
335 elm_object_item_disabled_set(elm_toolbar_last_item_get
336 (ad->controllbar_all_check),
343 static Setting_GenGroupItem_Data * __flightmode_handler(void* data, char* keyStr, char* icon_path, char* ug_name, Evas_Object *genlist)
345 // NOT UG --> it's just UI drawing
347 setting_main_appdata *ad = (setting_main_appdata *)data;
349 setting_get_bool_slp_key (BOOL_SLP_SETTING_FLIGHT_MODE, &value, &err);
351 /* create flight_mode */
352 ad->data_flight = setting_create_Gendial_field_groupitem(genlist,
353 &(ad->itc[GENDIAL_Type_1text_2icon]),
355 setting_main_click_Gendial_list_flight_mode_cb,
357 SWALLOW_Type_1ICON_1RADIO,
363 setting_main_click_list_flight_mode_cb);
364 __BACK_POINTER_SET(ad->data_flight);
366 return ad->data_flight;
369 static Setting_GenGroupItem_Data * __wifi_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
371 setting_main_appdata *ad = (setting_main_appdata *)data;
373 char* pa_wifi = get_pa_Wi_Fi_on_off_str();
374 ad->data_wifi = setting_create_Gendial_field_groupitem(genlist,
375 &(ad->itc[GENDIAL_Type_1icon_2text]),
377 setting_main_click_list_ex_ug_cb,
379 SWALLOW_Type_INVALID,
386 __BACK_POINTER_SET(ad->data_wifi);
389 return ad->data_wifi;
392 static Setting_GenGroupItem_Data * __bluetooth_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
394 setting_main_appdata *ad = (setting_main_appdata *)data;
396 ad->data_bt = setting_create_Gendial_field_groupitem(genlist,
397 &(ad->itc[GENDIAL_Type_1icon_2text]),
399 setting_main_click_list_ex_ug_cb,
401 SWALLOW_Type_INVALID,
409 __BACK_POINTER_SET(ad->data_bt);
414 static Setting_GenGroupItem_Data * __allshare_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
416 setting_main_appdata *ad = (setting_main_appdata *)data;
418 Setting_GenGroupItem_Data * obj = setting_create_Gendial_field_groupitem(genlist,
419 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
421 setting_main_click_list_default_ug_cb,
423 SWALLOW_Type_INVALID,
432 static Setting_GenGroupItem_Data * __network_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
434 setting_main_appdata *ad = (setting_main_appdata *)data;
436 ad->data_network = setting_create_Gendial_field_groupitem(genlist,
437 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
439 setting_main_click_list_network_ug_cb,
441 SWALLOW_Type_INVALID,
448 return ad->data_network;
451 static Setting_GenGroupItem_Data * __nfc_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
453 setting_main_appdata *ad = (setting_main_appdata *)data;
455 ad->data_nfc = setting_create_Gendial_field_groupitem(genlist,
456 &(ad->itc[GENDIAL_Type_1icon_2text]),
458 setting_main_click_list_ex_ug_cb,
460 SWALLOW_Type_INVALID,
465 get_NFC_on_off_str(),
467 __BACK_POINTER_SET(ad->data_nfc);
469 setting_create_Gendial_field_def(genlist, &itc_multiline_text, NULL,
470 ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
471 NULL, NULL, 0, SETTING_NFC_DESC, NULL, NULL);
472 elm_genlist_item_select_mode_set(elm_genlist_item_append(genlist, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
473 ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
478 static Setting_GenGroupItem_Data * __default_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
480 setting_main_appdata *ad = (setting_main_appdata *)data;
481 Setting_GenGroupItem_Data * obj = setting_create_Gendial_field_groupitem(genlist,
482 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
484 setting_main_click_list_ex_ug_cb,
486 SWALLOW_Type_INVALID,
493 if (!safeStrCmp(KeyStr_WiFiDirect, keyStr)) {
494 setting_create_Gendial_field_def(genlist, &itc_multiline_text, NULL,
495 ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
496 NULL, NULL, 0, SETTING_WIFI_DIRECT_DESC, NULL, NULL);
497 elm_genlist_item_select_mode_set(elm_genlist_item_append(genlist, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
498 ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
506 typedef struct mainlist_entry mainlist_entry;
508 struct mainlist_entry {
510 Setting_GenGroupItem_Data* (*ui_handler)(void* data, char* title, char* iconpath, char* ugname, Evas_Object *genlist);
515 MAINLIST_ENTRY_FLIGHT_MODE = 0,
518 MAINLIST_ENTRY_ALLSHARE,
519 MAINLIST_ENTRY_NETWORK,
521 MAINLIST_ENTRY_DEFAULT,
525 static mainlist_entry mainlist_table[] = {
526 {KeyStr_FlightMode, __flightmode_handler}, // 0 --> NOT UG
527 {KeyStr_WiFi, __wifi_handler}, // 1 --> UG
528 {KeyStr_Bluetooth, __bluetooth_handler}, // 1 --> UG
529 {KeyStr_AllShare, __allshare_handler}, // NOT UG
530 {KeyStr_Network, __network_handler}, // 1 --> UG
531 {KeyStr_NFC, __nfc_handler}, // 1 --> UG
532 {"Default", __default_handler}, // 1 --> UG
534 //--------------------------------------------------------------
539 // Flight Mode - not UG
540 // All share - not UG
541 // WiFi - added toggle
547 void __load_connectivity_menu_list(void *data, Cfg_Item_Position inputPos, Evas_Object *genlist)
550 setting_main_appdata *ad = data;
551 //group title, only display in setting main view
552 if (SETTING_VIEW_MAIN == ad->view_load) {
553 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
554 &(ad->itc[GENDIAL_Type_group_item]),
556 ELM_GENLIST_ITEM_NONE,
557 KeyStr_Connectivity, NULL);
560 int idx_second_menu = 0;
563 char *icon_path = NULL;
564 char *ug_args = NULL;
565 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
568 bool is_emulator = isEmulBin();
570 for (i = 0; i < setting_cfg_get_category_length(); i++) {
572 (setting_cfg_get_category_name(i), KeyStr_Connectivity))
575 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
576 keyStr = setting_cfg_get_keyname_idx(i, j);
577 tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
578 ug_args = setting_cfg_get_ug_args_idx(i, j);
579 icon_path = setting_cfg_get_icon_path_idx(i, j);
580 /* SETTING_TRACE_DEBUG("Got an item[keyStr:%s, ug_args:%s, pos:%d]", */
581 /* keyStr, ug_args, tmpPos); */
584 if (!safeStrCmp(KeyStr_FlightMode, keyStr)) {
585 continue; /* hide Flight Mode in Emulator*/
586 } else if (!safeStrCmp(KeyStr_WiFi, keyStr)) {
587 continue; /* hide WIFI in Emulator*/
588 } else if (!safeStrCmp(KeyStr_WiFiDirect, keyStr)) {
589 continue; /* hide WiFiDirect in Emulator*/
590 } else if (!safeStrCmp(KeyStr_Network, keyStr)) {
591 continue; /* hide Network in Emulator*/
592 } else if (!safeStrCmp(KeyStr_Bluetooth, keyStr)) {
593 continue; /* hide Bluetooth in Emulator*/
594 } else if (!safeStrCmp(KeyStr_MobileAP, keyStr)) {
595 continue; /* hide Tethering in Emulator*/
601 if (idx_second_menu < MAX_MORE_MENU_NUM
602 && Cfg_Item_Pos_Level1 == tmpPos
603 && SETTING_VIEW_MAIN == ad->view_load
604 && MAIN_PROFILE_PREFERRED == ad->profile_type) {
606 if (is_ug_installed_by_ug_args(ug_args)) {
607 ad->more_connective_menus[idx_second_menu++] = keyStr;
611 if (Cfg_Item_Pos_Level_All == inputPos) {
612 } else if (inputPos != tmpPos) { /* not in the inputPos level */
616 if (!safeStrCmp(KeyStr_FlightMode, keyStr)) { /* load special radio */
618 mainlist_table[MAINLIST_ENTRY_FLIGHT_MODE].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
620 } else if (!safeStrCmp(KeyStr_AllShare, keyStr)) { /* NOT UG */
622 mainlist_table[MAINLIST_ENTRY_ALLSHARE].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
624 } else if (!safeStrCmp(KeyStr_WiFi, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
626 mainlist_table[MAINLIST_ENTRY_WIFI].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
628 } else if (!safeStrCmp(KeyStr_Bluetooth, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
630 mainlist_table[MAINLIST_ENTRY_BT].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
632 } else if (!safeStrCmp(KeyStr_Network, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special UG */
634 mainlist_table[MAINLIST_ENTRY_NETWORK].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
636 } else if (!safeStrCmp(KeyStr_NFC, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special icon */
637 int nfc_value = FALSE; //default
638 vconf_get_bool(VCONFKEY_NFC_FEATURE, &nfc_value);
639 if (VCONFKEY_NFC_FEATURE_ON == nfc_value)
641 mainlist_table[MAINLIST_ENTRY_NFC].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
643 } else { /* load other UGs */
644 if (is_ug_installed_by_ug_args(ug_args))
646 mainlist_table[MAINLIST_ENTRY_DEFAULT].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
652 //end group , only display in setting main view
653 #if SUPPORT_MORE_ITEM_FUNCTION
654 if (SETTING_VIEW_MAIN == ad->view_load && MAIN_PROFILE_PREFERRED == ad->profile_type && idx_second_menu > 0)
656 char sub_text[MAX_COMMON_BUFFER_LEN] = {0, };
658 while (idx < MAX_MORE_MENU_NUM && ad->more_connective_menus[idx])
662 safeStrNCat(sub_text, ", ", MAX_COMMON_BUFFER_LEN);
664 safeStrNCat(sub_text, _(ad->more_connective_menus[idx]), MAX_COMMON_BUFFER_LEN);
668 ad->data_moreConnect =
669 setting_create_Gendial_field_groupitem(ad->main_genlist,
670 &(ad->itc[GENDIAL_Type_2text_3]),
672 setting_main_click_list_more_cb,
674 SWALLOW_Type_INVALID,
681 __BACK_POINTER_SET(ad->data_moreConnect);
687 void __load_connectivity_level0_list(void *data)
689 setting_main_appdata *ad = data;
690 __load_connectivity_menu_list(ad, Cfg_Item_Pos_Level0, ad->main_genlist);
693 void __load_connectivity_level_all_list(void *data)
696 setting_main_appdata *ad = data;
697 __load_connectivity_menu_list(ad, Cfg_Item_Pos_Level_All, ad->main_genlist);
700 void __load_system_menu_list(void *data, Cfg_Item_Position inputPos, Evas_Object *genlist)
703 SETTING_TRACE_DEBUG("pos :%d", inputPos);
704 setting_main_appdata *ad = data;
705 //group title, only display in setting main view
706 if (SETTING_VIEW_MAIN == ad->view_load) {
707 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
708 &(ad->itc[GENDIAL_Type_group_item]),
710 ELM_GENLIST_ITEM_NONE,
711 KeyStr_System, NULL);
713 int idx_second_menu = 0;
716 char *icon_path = NULL;
717 char *ug_args = NULL;
719 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
724 bool is_emulator = isEmulBin();
726 //SETTING_TRACE("setting_cfg_get_category_length() :: %d ", setting_cfg_get_category_length());
727 for (i = 0; i < setting_cfg_get_category_length(); i++) {
728 if (safeStrCmp(setting_cfg_get_category_name(i), KeyStr_System))
731 //SETTING_TRACE(" setting_cfg_get_menu_length(%d) :: %d ",i, setting_cfg_get_menu_length(i) );
732 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
733 keyStr = setting_cfg_get_keyname_idx(i, j);
734 /* sg_path = setting_cfg_get_ugpath_idx(i, j); */
735 tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
736 icon_path = setting_cfg_get_icon_path_idx(i, j);
737 ug_args = setting_cfg_get_ug_args_idx(i, j);
739 //SETTING_TRACE("KeyString : %s , tmpPos : %d , inputPos : %d ", keyStr, tmpPos, inputPos );
742 if (!safeStrCmp(KeyStr_Security, keyStr)) {
743 continue; /* hide Security in Emulator*/
744 } else if (!safeStrCmp(KeyStr_Motions, keyStr)) {
745 continue; /* hide Motion in Emulator*/
746 } else if (!safeStrCmp(KeyStr_Accessibility, keyStr)) {
747 continue; /* hide Accessibility in Emulator*/
748 } else if (!safeStrCmp(KeyStr_Memory, keyStr)) {
749 continue; /* hide Memory in Emulator*/
750 } else if (!safeStrCmp(KeyStr_Powersaving, keyStr)) {
751 continue; /* hide Powersaving in Emulator*/
757 if (idx_second_menu < MAX_MORE_MENU_NUM
758 && Cfg_Item_Pos_Level1 == tmpPos
759 && SETTING_VIEW_MAIN == ad->view_load
760 && MAIN_PROFILE_PREFERRED == ad->profile_type) {
762 if (is_ug_installed_by_ug_args(ug_args)) {
763 ad->more_system_menus[idx_second_menu++] = keyStr;
767 if (Cfg_Item_Pos_Level_All == inputPos) {
769 //SETTING_TRACE("Cfg_Item_Pos_Level_All == inputPos ---> no draw --- WHY?? ");
770 } else if (inputPos != tmpPos) { /* not in the inputPos level */
771 //SETTING_TRACE("inputPos == tmp Pos ---> no draw --- WHY?? ");
775 if (!safeStrCmp(KeyStr_Landscape, keyStr)) { /* load special UG */
778 (VCONFKEY_SETAPPL_ROTATE_LOCK_BOOL, &value);
779 // true : auto rotation OFF
780 // false : auto rotation ON
783 ad->data_rotationMode =
784 setting_create_Gendial_field_groupitem(genlist,
785 &(ad->itc[GENDIAL_Type_1text_2icon]),
787 setting_main_sel_list_mouse_up_cb,
789 SWALLOW_Type_1ICON_1RADIO,
795 setting_main_list_mouse_up_cb);
796 __BACK_POINTER_SET(ad->data_rotationMode);
798 else if (!safeStrCmp(KeyStr_Brightness, keyStr)) {
800 char* pa_bright = get_brightness_mode_str();
802 setting_create_Gendial_field_groupitem(genlist,
803 &(ad->itc[GENDIAL_Type_1icon_2text]),
805 setting_main_click_list_ex_ug_cb,
807 SWALLOW_Type_INVALID,
814 __BACK_POINTER_SET(ad->data_bright);
817 else { /* load other UGs */
819 if (is_ug_installed_by_ug_args(ug_args))
821 setting_create_Gendial_field_groupitem(genlist,
822 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
824 setting_main_click_list_ex_ug_cb,
826 SWALLOW_Type_INVALID,
837 //end group, only display in setting main view
838 #if SUPPORT_MORE_ITEM_FUNCTION
839 if (SETTING_VIEW_MAIN == ad->view_load && MAIN_PROFILE_PREFERRED == ad->profile_type && idx_second_menu > 0)
841 char sub_text[MAX_COMMON_BUFFER_LEN] = {0, };
843 while (idx < MAX_MORE_MENU_NUM && ad->more_system_menus[idx])
847 safeStrNCat(sub_text, ", ", MAX_COMMON_BUFFER_LEN);
849 safeStrNCat(sub_text, _(ad->more_system_menus[idx]), MAX_COMMON_BUFFER_LEN);
853 ad->data_moreSystem =
854 setting_create_Gendial_field_groupitem(ad->main_genlist,
855 &(ad->itc[GENDIAL_Type_2text_3]),
857 setting_main_click_list_more_cb,
859 SWALLOW_Type_INVALID,
866 __BACK_POINTER_SET(ad->data_moreSystem);
871 static void __load_system_level0_list(void *data)
873 setting_main_appdata *ad = data;
874 __load_system_menu_list(ad, Cfg_Item_Pos_Level0, ad->main_genlist);
877 static void __load_system_level_all_list(void *data)
880 setting_main_appdata *ad = data;
881 __load_system_menu_list(ad, Cfg_Item_Pos_Level_All, ad->main_genlist);
884 static void __load_applications_menu_list(void *data,
885 Cfg_Item_Position inputPos)
888 SETTING_TRACE_DEBUG("pos :%d", inputPos);
889 setting_main_appdata *ad = data;
891 bool is_emulator = isEmulBin();
894 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
895 &(ad->itc[GENDIAL_Type_group_item]),
897 ELM_GENLIST_ITEM_NONE,
898 KeyStr_Applications, NULL);
900 char *icon_path = NULL;
901 char *ug_args = NULL;
902 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
905 for (i = 0; i < setting_cfg_get_category_length(); i++) {
907 (setting_cfg_get_category_name(i), KeyStr_Applications))
910 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
911 keyStr = setting_cfg_get_keyname_idx(i, j);
912 icon_path = setting_cfg_get_icon_path_idx(i, j);
913 ug_args = setting_cfg_get_ug_args_idx(i, j);
915 (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
917 if (Cfg_Item_Pos_Level_All == inputPos) {
918 } else if (inputPos != tmpPos) { /* not in the inputPos level */
923 /* hide all except Email */
924 if (safeStrCmp(KeyStr_Email, keyStr)) {
931 setting_create_Gendial_field_groupitem(ad->main_genlist,
932 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
934 setting_main_click_list_ex_ug_cb,
936 SWALLOW_Type_INVALID,
947 static void __load_applications_level0_list(void *data)
949 setting_main_appdata *ad = data;
950 __load_applications_menu_list(ad, Cfg_Item_Pos_Level0);
953 static void __load_applications_level_all_list(void *data)
956 setting_main_appdata *ad = data;
957 __load_applications_menu_list(ad, Cfg_Item_Pos_Level_All);
961 bool is_3rdapp_installed_setting_cfg(char* pkgname)
966 if (snprintf(path, 512, PLUGIN_PATH_FORMAT, pkgname) < 0)
970 bool result_opt = false;
972 if(stat(path, &st) == 0) {
975 SETTING_TRACE_ERROR(" %s is *NOT* present\n", path);
985 static void draw_3rdapp(void* data, char* name, char* pkgname)
988 SETTING_TRACE(" name : %s", name);
989 SETTING_TRACE(" pkgname : %s", pkgname);
991 setting_main_appdata *ad = data;
996 if (snprintf(fullpath, 512, PLUGIN_PATH_FORMAT, pkgname) < 0)
999 SETTING_TRACE(" fullpath : %s", fullpath);
1003 if (ad->plugin_path)
1005 free(ad->plugin_path);
1006 ad->plugin_path = NULL;
1008 ad->plugin_path = strdup(fullpath);
1010 setting_create_Gendial_field_groupitem(ad->main_genlist,
1011 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1013 setting_main_click_list_plugin_cb,
1015 SWALLOW_Type_INVALID,
1016 IMG_DefaultIcon, NULL,
1027 static ail_cb_ret_e __download_apps_cb(ail_appinfo_h ai, void* data)
1029 DrawAppInfo* pinfo = (DrawAppInfo*)data;
1032 if (AIL_ERROR_OK == ail_appinfo_get_str(ai, AIL_PROP_PACKAGE_STR, &id))
1034 //SETTING_TRACE(" 3rd party - app name : ----> %s ", id);
1037 ail_appinfo_h handle;
1042 bool nodisplay = false;
1043 bool removable = true;
1045 if (AIL_ERROR_OK == ail_package_get_appinfo(id, &handle))
1047 if (AIL_ERROR_OK != ail_appinfo_get_str(handle, AIL_PROP_NAME_STR, &name))
1048 SETTING_TRACE("cannot get name");
1050 if (AIL_ERROR_OK != ail_appinfo_get_str(handle, AIL_PROP_ICON_STR, &icon))
1051 SETTING_TRACE("cannot get icon");
1053 if (AIL_ERROR_OK != ail_appinfo_get_bool(handle, AIL_PROP_NODISPLAY_BOOL, &nodisplay))
1054 SETTING_TRACE("cannot get nodisplay");
1056 if (AIL_ERROR_OK != ail_appinfo_get_bool(handle, AIL_PROP_X_SLP_REMOVABLE_BOOL, &removable))
1057 SETTING_TRACE("cannot get removable");
1059 if (AIL_ERROR_OK != ail_appinfo_get_int(handle, AIL_PROP_X_SLP_INSTALLEDTIME_INT, &installed_time))
1060 SETTING_TRACE("cannot get installed_time");
1062 //SETTING_TRACE("installed_time = %d ", installed_time);
1063 if (installed_time != 0 && is_3rdapp_installed_setting_cfg(id) == true )
1065 SETTING_TRACE(" 3rd party - app name : ----> id : %s --- name : %s ", id, name);
1066 SETTING_TRACE(" 3rd party - icon : ----> %s ", icon);
1067 SETTING_TRACE(" 3rd party - nodisplay : ----> %d ", nodisplay);
1071 if (pinfo->draw_app != NULL)
1073 SETTING_TRACE(">>> pkg name --> %s ", id);
1074 pinfo->draw_app(pinfo->data, strdup(name)/* appname*/, strdup(id)/* pkg_name*/);
1079 return AIL_CB_RET_CONTINUE;
1084 * get 3rd party applist from AIL & searching dir/file by the defined rule
1086 * if data is NULL --> just get how many items are there
1087 * if data is NOT NULL --> draw UI code
1089 static int get_downloadapp_list(void* data)
1091 SETTING_TRACE_BEGIN;
1093 setting_main_appdata *ad = data;
1097 ail_appinfo_h handle;
1099 DrawAppInfo* pinfo = (DrawAppInfo*)malloc(sizeof(DrawAppInfo));
1101 pinfo->draw_app = draw_3rdapp;
1104 if (ail_filter_new(&f) == AIL_ERROR_OK)
1106 if (ail_filter_add_bool(f, AIL_PROP_NODISPLAY_BOOL, false) != AIL_ERROR_OK)
1108 SETTING_TRACE("ail filter error");
1112 ail_filter_list_appinfo_foreach(f, __download_apps_cb, pinfo);
1113 //---------------------------------------------------------------
1114 ail_filter_destroy(f);
1116 ncount = pinfo->ncount;
1127 static int __get_downloaded_apps_num(Cfg_Item_Position inputPos)
1129 SETTING_TRACE_BEGIN;
1130 SETTING_TRACE_DEBUG("pos :%d", inputPos);
1131 int downloaded_apps_num = 0;
1132 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
1134 for (i = 0; i < setting_cfg_get_category_length(); i++) {
1136 (setting_cfg_get_category_name(i), KeyStr_DownloadedAPPs))
1139 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
1140 tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
1141 if (Cfg_Item_Pos_Level_All == inputPos) {
1142 } else if (inputPos != tmpPos) { /* not in the inputPos level */
1146 downloaded_apps_num++;
1150 // draw UI with AUL code
1152 downloaded_apps_num = get_downloadapp_list(NULL);
1153 SETTING_TRACE("Exit %s with return[%d]",__FUNCTION__, downloaded_apps_num);
1156 return downloaded_apps_num;
1160 static void __load_downloaded_apps_menu_list(void *data,
1161 Cfg_Item_Position inputPos)
1163 SETTING_TRACE_BEGIN;
1164 SETTING_TRACE_DEBUG("pos :%d", inputPos);
1165 setting_main_appdata *ad = data;
1167 // if the number of download apps is zero, display a bottom seperator
1168 if (0 == __get_downloaded_apps_num(inputPos)) {
1169 Elm_Object_Item *item = NULL;
1170 item = elm_genlist_item_append(ad->main_genlist, &itc_bottom_seperator, NULL, NULL,
1171 ELM_GENLIST_ITEM_NONE, NULL, NULL);
1172 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1177 setting_create_Gendial_field_group_titleItem(ad->main_genlist,
1178 &(ad->itc[GENDIAL_Type_group_item]),
1180 ELM_GENLIST_ITEM_NONE,
1181 KeyStr_DownloadedAPPs,
1184 char *keyStr = NULL;
1185 char *icon_path = NULL;
1186 char *ug_args = NULL;
1188 Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
1190 for (i = 0; i < setting_cfg_get_category_length(); i++) {
1192 (setting_cfg_get_category_name(i), KeyStr_DownloadedAPPs))
1195 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
1196 keyStr = setting_cfg_get_keyname_idx(i, j);
1198 (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
1199 icon_path = setting_cfg_get_icon_path_idx(i, j);
1200 ug_args = setting_cfg_get_ug_args_idx(i, j);
1202 if (Cfg_Item_Pos_Level_All == inputPos) {
1203 } else if (inputPos != tmpPos) { /* not in the inputPos level */
1207 setting_create_Gendial_field_groupitem(ad->main_genlist,
1208 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1210 setting_main_click_list_ex_ug_cb,
1212 SWALLOW_Type_INVALID,
1225 DIR *dp = opendir (PLUGIN_CFG_DIR);
1232 while (ep = readdir (dp))
1234 memset(fullpath, 0x00, 256);
1235 strncpy(fullpath, PLUGIN_CFG_DIR, 256);
1236 strncat(fullpath, "/", 256);
1237 strncat(fullpath, ep->d_name, 256);
1239 //SETTING_TRACE("ep->d_name:%s", ep->d_name);
1240 if (0 == safeStrCmp(".", ep->d_name)
1241 || 0 == safeStrCmp("..", ep->d_name))
1245 SETTING_TRACE("fullpath: %s", fullpath);
1246 char *p = strrchr(ep->d_name, '.');
1248 setting_create_Gendial_field_groupitem(ad->main_genlist,
1249 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1251 setting_main_click_list_plugin_cb,
1253 SWALLOW_Type_INVALID,
1254 IMG_DefaultIcon, NULL,
1255 0, ep->d_name, NULL,
1259 (void) closedir (dp);
1262 // TODO: DRAW 3RD PARTY APPS LIST here with EFL code
1263 int downloaded_apps_num = get_downloadapp_list(ad);
1265 // loop condition : 0 ---> ncount
1272 static void __load_downloaded_apps_level0_list(void *data)
1274 setting_main_appdata *ad = data;
1275 __load_downloaded_apps_menu_list(ad, Cfg_Item_Pos_Level0);
1278 static void __load_downloaded_apps_level_all_list(void *data)
1280 SETTING_TRACE_BEGIN;
1281 setting_main_appdata *ad = data;
1282 __load_downloaded_apps_menu_list(ad, Cfg_Item_Pos_Level_All);
1285 static void __check_all_view_clear(void *data)
1287 SETTING_TRACE_BEGIN;
1289 setting_main_appdata *ad = data;
1290 if (ad->item_check_list) {
1291 eina_list_free(ad->item_check_list);
1292 ad->item_check_list = NULL;
1295 ad->gl_sel_all = NULL;
1296 ad->edit_preferred_genlist = NULL;
1297 ad->controllbar_all_check = NULL;
1298 ad->check_all_item =NULL;
1301 static void __prefered_buttons_cb(void *data, Evas_Object *obj, void *event_info)
1303 SETTING_TRACE_BEGIN;
1305 setting_main_appdata *ad = (setting_main_appdata *) data;
1306 const char *key = NULL;
1308 #if SUPPORT_BOTTOM_BTNS
1309 ret_if(!event_info);
1310 Elm_Object_Item *it = event_info;
1311 key = elm_object_item_text_get(it);
1313 key = elm_object_text_get(obj);
1315 setting_retm_if(data == NULL
1316 || key == NULL, "data == NULL || key == NULL");
1318 SETTING_TRACE_DEBUG("press button: %s", key);
1321 if (!safeStrCmp(key, dgettext("sys_string", "IDS_COM_SK_DONE"))) {
1323 if (ad->profile_type == MAIN_PROFILE_ALL) {
1324 SETTING_TRACE_DEBUG("Cancel to hide current view.");
1325 setting_try_save_check_list(ad); /* need to save too */
1326 __check_all_view_clear(ad);
1327 elm_naviframe_item_pop(ad->navibar_main); // pop(preferred) --> main
1331 // MAIN_PROFILE_PREFERRED and Etc
1332 // redraw setting-main
1333 setting_try_save_check_list(ad);
1334 elm_naviframe_item_pop(ad->navibar_main); // pop (preferred) -> main
1336 //After the view is popuped, all the object handlers should be reset NULL.
1337 __check_all_view_clear(ad);
1338 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1339 ad->load_fns[Func_Type_System] = __load_system_level0_list;
1340 ad->load_fns[Func_Type_Apps] = __load_applications_level0_list;
1341 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level0_list;
1342 int ret = setting_main_refresh(ad);
1343 ret_if(ret != SETTING_RETURN_SUCCESS);
1348 if (!safeStrCmp(key, setting_gettext("IDS_COM_SK_CANCEL"))
1349 || !safeStrCmp(key, dgettext("sys_string", "IDS_COM_BODY_BACK"))) {
1350 SETTING_TRACE_DEBUG("Cancel to hide current view.");
1351 elm_naviframe_item_pop(ad->navibar_main);
1352 //After the view is popuped, all the object handlers should be reset NULL.
1353 __check_all_view_clear(ad);
1358 static void __setting_contorlbar_clicked(void *data, Evas_Object *obj,
1361 SETTING_TRACE_BEGIN;
1362 ret_if(data == NULL || obj == NULL);
1363 setting_main_appdata *ad = (setting_main_appdata *) data;
1365 /* elm_segment_control_selected_segment_get(obj, &index); */
1366 Elm_Object_Item *sel_item = elm_segment_control_item_selected_get(obj);
1367 ret_if(sel_item == NULL);
1368 index = elm_segment_control_item_index_get(sel_item);
1373 SETTING_TRACE("Preferred");
1374 ad->profile_type = MAIN_PROFILE_PREFERRED;
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;
1384 SETTING_TRACE("All");
1385 ad->profile_type = MAIN_PROFILE_ALL;
1386 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level_all_list;
1387 ad->load_fns[Func_Type_System] = __load_system_level_all_list;
1388 ad->load_fns[Func_Type_Apps] = __load_applications_level_all_list;
1389 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level_all_list;
1397 int ret = setting_main_refresh(ad);
1398 ret_if(ret != SETTING_RETURN_SUCCESS);
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_item_text_set(item, _(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_item_text_set(item, _(PREFERRED_STR));
1457 ad->profile_type = MAIN_PROFILE_ALL;
1463 ad->refresh_idler = ecore_idler_add((Ecore_Task_Cb) __refresh_on_idle, ad);
1469 Evas_Object *__create_main_view_widgets(Evas_Object *win_main, void *cb,
1470 Evas_Object *content,
1472 bool isFoundPreferredItem,
1473 Evas_Object **navibar,
1474 Elm_Object_Item **edit_item,
1475 Elm_Object_Item **segment_all,
1476 Elm_Object_Item **segment_preferred)
1478 SETTING_TRACE_BEGIN;
1480 /* add layout to win_main */
1481 Evas_Object *ly = elm_layout_add(win_main);
1482 setting_retvm_if(ly == NULL, FALSE, "layout == NULL");
1483 elm_layout_theme_set(ly, "layout", "application", "default");
1484 evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND,
1486 elm_win_resize_object_add(win_main, ly);
1487 Evas_Object *bg = setting_create_bg(ly, win_main, "group_list");
1488 elm_object_part_content_set(ly, "elm.swallow.bg", bg);
1489 evas_object_show(ly);
1491 /* add navi_bar to the layout */
1492 Evas_Object *navi_bar = elm_naviframe_add(ly);
1494 elm_object_part_content_set(ly, "elm.swallow.content", navi_bar);
1495 evas_object_show(navi_bar);
1496 *navibar = navi_bar;
1498 // create 'back' button on navigaiton bar
1499 Evas_Object* btn_back = elm_button_add(navi_bar);
1500 evas_object_smart_callback_add(btn_back, "clicked", __btnback_clicked_cb, g_main_ad);
1502 Evas_Object *controlbar = elm_toolbar_add(navi_bar);
1503 setting_retvm_if(controlbar == NULL, FALSE, "controlbar == NULL");
1504 elm_toolbar_shrink_mode_set(controlbar, ELM_TOOLBAR_SHRINK_EXPAND);
1505 //elm_object_style_set(controlbar, NAVI_CONTROLBAR_STYLE);
1507 /* add segment control */
1508 Evas_Object *segment = elm_segment_control_add(controlbar);
1509 setting_retvm_if(segment == NULL, FALSE, "segment == NULL");
1511 Elm_Object_Item *seg_preferred = NULL, *seg_all = NULL;
1512 *segment_preferred = seg_preferred = elm_segment_control_item_add(segment, NULL, _(PREFERRED_STR));
1513 *segment_all = seg_all = elm_segment_control_item_add(segment, NULL, _(ALL_STR));
1515 evas_object_show(segment);
1516 evas_object_smart_callback_add(segment, "changed",
1517 __setting_contorlbar_clicked, cb);
1519 #if !SUPPORT_BOTTOM_BTNS
1520 Elm_Object_Item *item = NULL;
1521 Elm_Object_Item *navi_it = elm_naviframe_item_push(navi_bar, title_text, btn_back, NULL, content, NULL);
1522 elm_object_style_set(btn_back, NAVI_BACK_BUTTON_STYLE);
1523 /* add 'Edit preffered' button to controlbar */
1524 Evas_Object *btn_pref = setting_create_button(controlbar, _(EDIT_PREFERRED_STR),
1525 NAVI_DEF_BUTTON_STYLE,
1526 setting_main_click_edit_preferred_cb,cb);
1528 *edit_item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
1529 elm_object_item_part_content_set(*edit_item, "object", btn_pref);
1530 item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
1531 elm_object_item_part_content_set(item, "object", segment);
1532 elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
1534 elm_object_item_part_content_set(navi_it, "optionheader", controlbar);
1536 Elm_Object_Item *navi_it = elm_naviframe_item_push(navi_bar, title_text, btn_back, NULL, content, "segment/instant");
1537 elm_object_style_set(btn_back, NAVI_BACK_BUTTON_STYLE);
1539 elm_object_item_disabled_set(elm_toolbar_item_append(controlbar, NULL, "", NULL, NULL), EINA_TRUE);
1540 *edit_item = elm_toolbar_item_append(controlbar, NULL, _(EDIT_PREFERRED_STR), setting_main_click_edit_preferred_cb, cb);
1542 elm_object_item_part_content_set(navi_it, "controlbar", controlbar);
1543 elm_object_item_part_content_set(navi_it, "segment", segment);
1547 if (isFoundPreferredItem) {
1548 elm_segment_control_item_selected_set(seg_preferred, EINA_TRUE);
1550 elm_segment_control_item_selected_set(seg_all, EINA_TRUE);
1555 static bool __setting_create_main_view(void *data)
1557 SETTING_TRACE_BEGIN;
1559 setting_retvm_if(data == NULL, FALSE, "data == NULL");
1560 setting_main_appdata *ad = (setting_main_appdata *) data;
1561 #if SUPPORT_MORE_ITEM_FUNCTION
1562 ad->ly_main = setting_create_win_layout(ad->win_main, ad->win_main);
1563 ad->navibar_main = setting_create_navi_bar(ad->ly_main);
1564 /* add controlbar */
1565 Evas_Object *controlbar = elm_toolbar_add(ad->navibar_main);
1566 setting_retvm_if(controlbar == NULL, FALSE, "controlbar == NULL");
1567 elm_toolbar_shrink_mode_set(controlbar, ELM_TOOLBAR_SHRINK_EXPAND);
1569 ad->main_genlist = elm_genlist_add(ad->navibar_main);
1570 elm_object_style_set(ad->main_genlist, "dialogue");
1571 retvm_if(ad->main_genlist == NULL, FALSE,
1572 "Cannot set scroller object as contento of layout");
1573 elm_genlist_clear(ad->main_genlist); /* first to clear list */
1575 setting_create_navi_bar_buttons(_("IDS_COM_BODY_SETTINGS"),
1576 _("IDS_COM_BODY_BACK"), "", _("IDS_ST_OPT_ALL"),
1577 __btnback_clicked_cb, NULL,
1578 __allFrequent_btn_cb, ad, ad->main_genlist,
1579 ad->navibar_main, controlbar);
1580 elm_object_item_disabled_set(elm_toolbar_last_item_get(controlbar), EINA_TRUE);
1582 ad->controlbar = controlbar;
1584 ad->profile_type = MAIN_PROFILE_PREFERRED;
1585 ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
1586 ad->load_fns[Func_Type_System] = __load_system_level0_list;
1587 ad->load_fns[Func_Type_Apps] = __load_applications_level_all_list;
1588 ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level_all_list;
1589 setting_main_refresh(ad);
1593 ad->main_genlist = elm_genlist_add(ad->win_main);
1594 elm_object_style_set(ad->main_genlist, "dialogue");
1595 elm_genlist_clear(ad->main_genlist); /* first to clear list */
1597 int isFoundPreferredItem = FALSE;
1598 for (i = 0; i < setting_cfg_get_category_length(); i++) {
1599 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
1600 pos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
1601 if (Cfg_Item_Pos_Level0 == pos) {
1602 isFoundPreferredItem = TRUE;
1606 if (isFoundPreferredItem) {
1611 ad->ly_main = __create_main_view_widgets(ad->win_main, ad,
1613 _("IDS_COM_BODY_SETTINGS"),
1614 isFoundPreferredItem,
1618 &ad->segment_preferred);
1619 setting_retvm_if(ad->ly_main == NULL, FALSE, "ad->ly_main == NULL");
1625 static bool __setting_create_prefered_view(void *data)
1627 SETTING_TRACE_BEGIN;
1629 setting_retvm_if(data == NULL, FALSE, "data == NULL");
1630 setting_main_appdata *ad = (setting_main_appdata *) data;
1632 /* the genlist will be destroyed with its parent view, when using elm_naviframe_item_pop() to destroy the view. */
1633 ad->edit_preferred_genlist = elm_genlist_add(ad->win_main);
1634 elm_object_style_set(ad->edit_preferred_genlist, "dialogue");
1635 elm_genlist_clear(ad->edit_preferred_genlist); /* first to clear list */
1637 /* [UI] edit preffered view */
1638 Evas_Object *sub_layout = elm_layout_add(ad->win_main);
1639 elm_object_style_set(sub_layout, "dialogue");
1640 elm_layout_file_set(sub_layout, SETTING_THEME_EDJ_NAME, "search_layout");
1641 evas_object_size_hint_weight_set(sub_layout, EVAS_HINT_EXPAND, 0.0);
1642 evas_object_show(sub_layout);
1644 ad->gl_sel_all = elm_genlist_add(ad->win_main);
1645 elm_genlist_clear(ad->gl_sel_all); /* first to clear list */
1646 elm_genlist_bounce_set(ad->gl_sel_all, 0, 0);
1648 elm_object_part_content_set(sub_layout, "search_bar", ad->gl_sel_all); /* add 'Select all' */
1649 elm_object_part_content_set(sub_layout, "search_list", ad->edit_preferred_genlist); /* add Genlist */
1651 /* push, not create */
1652 setting_push_layout_navi_bar(_(EDIT_PREFERRED_STR),
1653 _("IDS_COM_SK_CANCEL"),
1654 _("IDS_COM_SK_DONE"), NULL,
1655 __prefered_buttons_cb, __prefered_buttons_cb, NULL, ad,
1656 sub_layout, ad->navibar_main,
1657 &(ad->controllbar_all_check));
1662 static void setting_main_tapi_event_cb(TapiHandle *handle, int result, void *data, void *user_data)
1664 SETTING_TRACE_BEGIN;
1666 setting_main_appdata *ad = user_data;
1667 ad->b_fm_requesting = FALSE;
1668 SETTING_TRACE("result:%d", result);
1672 case TAPI_POWER_FLIGHT_MODE_RESP_ON:
1674 setting_set_bool_slp_key(BOOL_SLP_SETTING_FLIGHT_MODE,
1675 SETTING_ON_OFF_BTN_ON, &err);
1677 //If Setting has validate operation (fm_waiting_op == FM_LEAVE) to process, process it.
1678 //Otherwise, do nothing
1679 if (FM_LEAVE == ad->fm_waiting_op)
1681 //Send the latest operation
1682 ad->fm_waiting_op = FM_INVALID;
1683 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
1684 setting_retm_if(err != TAPI_API_SUCCESS,
1685 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
1688 ad->b_fm_requesting = TRUE;
1693 case TAPI_POWER_FLIGHT_MODE_RESP_OFF:
1695 setting_set_bool_slp_key(BOOL_SLP_SETTING_FLIGHT_MODE,
1696 SETTING_ON_OFF_BTN_OFF, &err);
1698 //If Setting has validate operation (here, fm_waiting_op == FM_ENTER) to process,process it.
1699 //Otherwise, do nothing
1700 if (FM_ENTER == ad->fm_waiting_op)
1702 //Send the latest operation
1703 ad->fm_waiting_op = FM_INVALID;
1704 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
1705 setting_retm_if(err != TAPI_API_SUCCESS,
1706 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
1709 ad->b_fm_requesting = TRUE;
1714 case TAPI_POWER_FLIGHT_MODE_RESP_FAIL:
1715 //Setting has a validate operation to process, Send the operation request
1716 if (FM_ENTER == ad->fm_waiting_op)
1718 ad->fm_waiting_op = FM_INVALID;
1719 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
1721 setting_retm_if(err != TAPI_API_SUCCESS,
1722 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
1723 ad->b_fm_requesting = TRUE;
1725 else if (FM_LEAVE == ad->fm_waiting_op)
1727 ad->fm_waiting_op = FM_INVALID;
1728 err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
1730 setting_retm_if(err != TAPI_API_SUCCESS,
1731 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
1732 ad->b_fm_requesting = TRUE;
1734 else //Current requset is the last one, Setting needs to notify user
1736 setting_create_popup_without_btn(ad, ad->win_main,
1737 _("IDS_COM_POP_ERROR"),
1738 _("IDS_ST_POP_UNABLE_TO_TURN_ON_FLIGHT_MODE_VODA"),
1739 NULL, POPUP_INTERVAL,
1742 //It is need to rollback the status,
1743 if (ad->data_flight) {
1744 ad->data_flight->chk_status = !ad->data_flight->chk_status;
1745 elm_check_state_set(ad->data_flight->eo_check, ad->data_flight->chk_status);
1751 ad->b_fm_requesting = TRUE;
1755 case TAPI_POWER_FLIGHT_MODE_RESP_MAX:
1756 setting_create_popup_without_btn(ad, ad->win_main,
1757 _("IDS_COM_POP_ERROR"),
1758 _("IDS_COM_POP_UNEXPECTED_ERROR"),
1759 NULL, POPUP_INTERVAL, FALSE, FALSE);
1761 //It is need to rollback the status,
1762 if (ad->data_flight) {
1763 ad->data_flight->chk_status = !ad->data_flight->chk_status;
1764 elm_check_state_set(ad->data_flight->eo_check, ad->data_flight->chk_status);
1774 static int setting_main_refresh(void *data)
1776 SETTING_TRACE_BEGIN;
1777 setting_main_appdata *ad = (setting_main_appdata *) data;
1778 elm_genlist_clear(ad->main_genlist); /* first to clear list */
1780 if (is_ug_installed_by_ug_args("rcs-config"))
1782 Elm_Object_Item *item = elm_genlist_item_append(ad->main_genlist, &itc_seperator, NULL, NULL,
1783 ELM_GENLIST_ITEM_NONE, NULL, NULL);
1784 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1785 setting_create_Gendial_field_groupitem(ad->main_genlist,
1786 &(ad->itc[GENDIAL_Type_1text_1icon_2]),
1788 setting_main_click_list_ex_ug_cb,
1790 SWALLOW_Type_INVALID,
1792 0, KeyStr_Joyn, NULL,
1797 for(i = Func_Type_Connectivity; i < Func_Type_MAX; i++)
1798 (ad->load_fns[i]) (ad);
1800 memset(ad->load_fns, 0, Func_Type_MAX *sizeof(menu_list_load_fn));
1802 return SETTING_RETURN_SUCCESS;
1805 static int setting_main_create(void *cb)
1807 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1809 setting_main_appdata *ad = (setting_main_appdata *) cb;
1811 //pass NULL to let TAPI access default module
1812 ad->handle = tel_init(NULL);
1814 SETTING_TRACE_ERROR("*** [ERR] tel_init failed ***");
1816 SETTING_TRACE("tel_init ok[handle:%p]", ad->handle);
1818 setting_create_Gendial_itc("dialogue/1text.1icon.2",
1819 &(ad->itc[GENDIAL_Type_1text_1icon_2]));
1820 setting_create_Gendial_itc("dialogue/1text.2icon",
1821 &(ad->itc[GENDIAL_Type_1text_2icon]));
1822 setting_create_Gendial_itc("dialogue/2text.1icon.3",
1823 &(ad->itc[GENDIAL_Type_1icon_2text]));
1824 setting_create_Gendial_itc("dialogue/1text.1icon.2",
1825 &(ad->itc[GENDIAL_Type_1text_2icon_2]));
1826 setting_create_Gendial_itc("dialogue/title",
1827 &(ad->itc[GENDIAL_Type_group_item]));
1828 setting_create_Gendial_itc("select_all",
1829 &(ad->itc[GENDIAL_Type_sel_all]));
1831 setting_create_Gendial_itc("dialogue/2text.3", &(ad->itc[GENDIAL_Type_2text_3]));
1833 ad->view_type = SETTING_VIEW_MAIN;
1834 bool ret = __setting_create_main_view(ad);
1835 SETTING_TRACE(" >>>> ret = %d ", ret);
1836 setting_view_main.is_create = 1;
1838 return SETTING_RETURN_SUCCESS;
1841 static int setting_main_destroy(void *cb)
1843 SETTING_TRACE_BEGIN;
1845 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1847 setting_main_appdata *ad = (setting_main_appdata *) cb;
1848 if (0 == setting_view_main.is_create)
1851 return SETTING_RETURN_SUCCESS;
1853 if (ad->refresh_idler) {
1854 ecore_idler_del(ad->refresh_idler);
1855 ad->refresh_idler = NULL;
1859 int tapi_ret = tel_deinit(ad->handle);
1860 if (tapi_ret != TAPI_API_SUCCESS) {
1861 SETTING_TRACE_DEBUG("*** [ERR] tel_deinit. [%d] ***", tapi_ret);
1863 SETTING_TRACE("*** tel_deinit OK ");
1868 /* then destroy the UI object. */
1869 if (ad->item_check_list) {
1870 eina_list_free(ad->item_check_list);
1871 ad->item_check_list = NULL;
1873 SETTING_TRACE("*** ad->item_check_list is NULL - abnormal state ");
1877 evas_object_del(ad->ly_main);
1881 if (ad->flight_popup) {
1882 evas_object_del(ad->flight_popup);
1883 ad->flight_popup = NULL;
1887 if (ad->plugin_node)
1889 setting_plugin_destroy(ad->plugin_node);
1893 setting_view_main.is_create = 0;
1895 return SETTING_RETURN_SUCCESS;
1898 static int setting_main_update(void *cb)
1900 SETTING_TRACE_BEGIN;
1903 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1905 setting_main_appdata *ad = (setting_main_appdata *) cb;
1907 if (ad->ly_main != NULL) {
1908 //evas_object_show(ad->ly_main);
1911 return SETTING_RETURN_SUCCESS;
1914 static int setting_main_cleanup(void *cb)
1916 SETTING_TRACE_BEGIN;
1918 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1920 setting_main_appdata *ad = (setting_main_appdata *) cb;
1922 if (ad->ly_main != NULL) {
1923 //evas_object_hide(ad->ly_main);
1926 return SETTING_RETURN_SUCCESS;
1929 /* ***************************************************
1933 ***************************************************/
1935 void setting_update_gl_item(void* data)
1937 SETTING_TRACE_BEGIN;
1938 setting_main_appdata *ad = data;
1939 retm_if(!data, "Invalid argument: data is NULL");
1942 Eina_Bool bGlUpdate = EINA_FALSE;
1943 Setting_GenGroupItem_Data *item_to_update = NULL;
1945 for(;nDx<GL_ITEM_MAX; nDx++) {
1946 if(EINA_TRUE == ad->updateItems[nDx]) {
1950 item_to_update = ad->data_wifi;
1951 bGlUpdate = EINA_TRUE;
1954 item_to_update = ad->data_bt;
1955 bGlUpdate = EINA_TRUE;
1958 item_to_update = ad->data_nfc;
1959 bGlUpdate = EINA_TRUE;
1961 case GL_ITEM_FLIGHT:
1962 item_to_update = ad->data_flight;
1963 bGlUpdate = EINA_FALSE;
1969 default: // other case
1973 if (item_to_update) {
1974 SETTING_TRACE("gl update [%s], bGlUpdate:%d", _(item_to_update->keyStr), bGlUpdate);
1976 SETTING_TRACE("gl update:%d", nDx);
1977 elm_object_item_data_set(item_to_update->item, item_to_update);
1978 elm_genlist_item_update(item_to_update->item);
1980 SETTING_TRACE("chk update:%d", nDx);
1981 elm_check_state_set(item_to_update->eo_check, item_to_update->chk_status);
1985 ad->updateItems[nDx] = EINA_FALSE;
1986 } // if(EINA_TRUE == ad->updateItems[nDx])
1994 void setting_main_destroy_ug_cb(ui_gadget_h ug, void *priv)
1996 setting_main_appdata *ad = (setting_main_appdata *) priv;
1998 return; /* do nothing if ad is NULL */
2005 setting_main_click_list_item_reset_data(ad, NULL);
2007 // update main genlist in unloading UG
2008 SETTING_TRACE("update main genlist in unloading UG");
2009 setting_update_gl_item(ad);
2014 void setting_main_result_ug_cb(ui_gadget_h ug, service_h service,
2019 SETTING_TRACE_BEGIN;
2024 void setting_main_layout_ug_cb(ui_gadget_h ug, enum ug_mode mode,
2027 setting_main_appdata *ad = (setting_main_appdata *) priv;
2032 SETTING_TRACE_BEGIN;
2034 base = (Evas_Object *) ug_get_layout(ug);
2039 case UG_MODE_FULLVIEW:
2040 evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,
2042 elm_win_resize_object_add(ad->win_main, base);
2043 evas_object_show(base);
2052 /* ***************************************************
2056 ***************************************************/
2058 void setting_main_click_list_item_reset_data(void *data,
2061 SETTING_TRACE_BEGIN;
2062 setting_main_appdata *ad = (setting_main_appdata *) data;
2064 ad->isInUGMode = FALSE;
2069 void /* obj is the layout clicked */
2070 setting_main_click_list_item_ug_cb(void *data, Evas_Object *obj,
2071 char *ug_to_load, service_h svc,
2074 SETTING_TRACE_BEGIN;
2075 setting_main_appdata *ad = (setting_main_appdata *) data;
2077 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
2081 char ug_file[PATH_MAX];
2083 (ug_file, PATH_MAX, "%s/libug-%s.so", SETTING_UG_PATH,
2086 SETTING_TRACE("ug_file:%s", ug_file);
2087 if (!ecore_file_exists(ug_file)) {
2088 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
2092 SETTING_TRACE("to create libug-%s.so", ug_to_load);
2093 ad->ug = ug_create(NULL, ug_to_load, UG_MODE_FULLVIEW, svc, cbs);
2095 ad->isInUGMode = TRUE;
2098 evas_object_show(ad->ly_main);
2100 SETTING_TRACE_ERROR("errno:%d", errno);
2101 setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
2107 setting_main_click_list_default_ug_cb(void *data, Evas_Object *obj,
2110 setting_main_appdata *ad = data;
2111 setting_create_simple_popup(ad, ad->win_main, NULL,
2115 void setting_main_click_list_more_cb(void *data, Evas_Object *obj, void *event_info)
2117 SETTING_TRACE_BEGIN;
2118 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2119 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2120 elm_genlist_item_selected_set(item, EINA_FALSE);
2121 retm_if(data == NULL, "Invalid argument: data is NULL");
2122 setting_main_appdata *ad = data;
2123 Setting_GenGroupItem_Data *selected_item_data =
2124 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2125 SETTING_TRACE("selected_item_data->keyStr:%s", selected_item_data->keyStr);
2126 if (0 == safeStrCmp(selected_item_data->keyStr, KeyStr_MoreConnect))
2128 ad->view_load = SETTING_VIEW_CONNECTIVE_MORE;
2130 else if (0 == safeStrCmp(selected_item_data->keyStr, KeyStr_MoreSystem))
2132 ad->view_load = SETTING_VIEW_SYSTEM_MORE;
2138 setting_view_change(&setting_view_main, &setting_view_more_menu, ad);
2143 setting_main_click_list_ex_ug_cb(void *data, Evas_Object *obj,
2146 SETTING_TRACE_BEGIN;
2147 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2148 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2150 elm_genlist_item_selected_set(item, EINA_FALSE);
2152 if (g_main_ad->ug) {
2154 ("[ad->ug non-NULL]skip genlist click event!!");
2160 if (NULL == data) { /* pass NULL to ug_args when create setting.cfg. */
2161 setting_create_simple_popup(g_main_ad,
2162 g_main_ad->win_main,
2163 NULL, NO_UG_FOUND_MSG);
2168 setting_main_appdata *ad = g_main_ad;
2170 /* if UG is created by Setting app, setting_main_click_list_ex_ug_cb is diabled. */
2171 if (ad->isInUGMode) {
2172 SETTING_TRACE("isInUGMode : TRUE - another UG is running now.");
2173 ad->isInUGMode = FALSE;
2178 ("isInUGMode : FALSE - another UG is NOT running now.")
2181 Setting_GenGroupItem_Data *selected_item_data =
2182 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2183 setting_main_click_list_item_reset_data(ad, obj);
2184 const char *item_name = _(selected_item_data->keyStr);
2187 struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
2188 setting_retm_if(!cbs, "calloc failed");
2189 cbs->layout_cb = setting_main_layout_ug_cb;
2190 cbs->result_cb = setting_main_result_ug_cb;
2191 cbs->destroy_cb = setting_main_destroy_ug_cb;
2192 cbs->priv = (void *)ad;
2194 char *path = get_ug_path_from_ug_args(data);
2195 service_h svc = get_bundle_from_ug_args(data);
2196 setting_main_click_list_item_ug_cb(ad, obj, path, svc, cbs);
2203 service_destroy(svc);
2206 setting_main_click_list_plugin_cb(void *data, Evas_Object *obj,
2209 SETTING_TRACE_BEGIN;
2210 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2211 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2212 elm_genlist_item_selected_set(item, EINA_FALSE);
2214 setting_main_appdata *ad = data;
2216 if (ad->plugin_path)
2218 PluginNode* plugin_node = setting_plugin_create();
2220 plugin_node->plugin_path = strdup(ad->plugin_path);
2222 setting_plugin_load(plugin_node, (const char *)ad->plugin_path);
2223 ad->plugin_node = (void*)plugin_node;
2228 free(ad->plugin_path);
2229 ad->plugin_path = NULL;
2237 * @see [caller] setting_main_list_mouse_up_cb
2238 * @see [caller] setting_main_sel_list_mouse_up_cb
2240 static void __rotate_lock_handler(int chk_status, setting_main_appdata *ad )
2242 SETTING_TRACE_BEGIN;
2243 if( chk_status == 1)
2246 int angle = elm_win_rotation_get(ad->win_main);
2247 elm_win_rotation_with_resize_set(ad->win_main, angle);
2249 elm_win_rotation_with_resize_set(ad->win_main, 0);
2251 vconf_set_bool(VCONFKEY_SETAPPL_ROTATE_LOCK_BOOL, !chk_status);
2257 void setting_main_list_mouse_up_cb(void *data, Evas_Object *eo,
2260 SETTING_TRACE_BEGIN;
2261 retm_if(data == NULL, "Data parameter is NULL");
2262 Setting_GenGroupItem_Data *list_item =
2263 (Setting_GenGroupItem_Data *) data;
2264 SETTING_TRACE("process item [%s]", list_item->keyStr);
2265 list_item->chk_status = elm_check_state_get(eo); /* for update new state */
2267 SETTING_TRACE("change radio[%s], status is:%d", _(list_item->keyStr),
2268 list_item->chk_status);
2269 setting_main_appdata *ad = g_main_ad;
2271 if (!safeStrCmp(KeyStr_UsePacketData, list_item->keyStr)) {
2273 if (elm_check_state_get(eo)) {
2274 setting_set_bool_slp_key
2275 (BOOL_SLP_SETTING_USE_PACKET_DATA,
2276 SETTING_ON_OFF_BTN_ON, &err);
2278 setting_set_bool_slp_key
2279 (BOOL_SLP_SETTING_USE_PACKET_DATA,
2280 SETTING_ON_OFF_BTN_OFF, &err);
2283 } else if (!safeStrCmp(KeyStr_Landscape, list_item->keyStr)) {
2284 __rotate_lock_handler(list_item->chk_status, ad);
2293 void setting_main_sel_list_mouse_up_cb(void *data, Evas_Object *eo,
2296 SETTING_TRACE_BEGIN;
2297 setting_retm_if(data == NULL, "Data parameter is NULL");
2299 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2300 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2301 elm_genlist_item_selected_set(item, 0);
2302 Setting_GenGroupItem_Data *list_item =
2303 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2305 list_item->chk_status = elm_check_state_get(list_item->eo_check);
2308 list_item->chk_status = !list_item->chk_status;
2309 elm_check_state_set(list_item->eo_check, list_item->chk_status);
2311 setting_main_appdata *ad = (setting_main_appdata *) data;
2313 if (!safeStrCmp(KeyStr_UsePacketData, list_item->keyStr)) {
2314 /* setting_reset_slp_key_by_status(eo, BOOL_SLP_SETTING_USE_PACKET_DATA); */
2316 setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
2317 list_item->chk_status, &err);
2319 } else if (!safeStrCmp(KeyStr_Landscape, list_item->keyStr)) {
2320 __rotate_lock_handler(list_item->chk_status, ad);
2326 void __alternate_flight_mode(Evas_Object *check)
2328 SETTING_TRACE_BEGIN;
2330 Eina_Bool status = elm_check_state_get(check);
2331 SETTING_TRACE("flight mode status : %d", status);
2332 setting_main_appdata *ad = g_main_ad;
2334 //Check whether some requestion is processing by TAPI
2335 if (ad->b_fm_requesting)
2337 //Do nothing, just mark the lastest operation..
2338 SETTING_TRACE("Some requestion is processing by TAPI, wait to process");
2339 ad->fm_waiting_op = status ? FM_ENTER : FM_LEAVE;
2343 //otherwise, invalid waiting operation and send requsetion to TAPI:
2344 ad->fm_waiting_op = FM_INVALID;
2346 ret = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
2347 setting_retm_if(ret != TAPI_API_SUCCESS,
2348 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
2350 ret = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
2351 setting_retm_if(ret != TAPI_API_SUCCESS,
2352 "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
2356 ad->b_fm_requesting = TRUE;
2361 setting_main_click_list_network_ug_cb(void *data, Evas_Object *obj,
2364 SETTING_TRACE_BEGIN;
2365 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2366 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2368 elm_genlist_item_selected_set(item, EINA_FALSE);
2370 if (g_main_ad->ug) {
2372 ("[ad->ug non-NULL]skip genlist click event!!");
2378 setting_main_appdata *ad = g_main_ad;
2379 setting_main_click_list_item_reset_data(ad, obj);
2383 setting_get_int_slp_key(INT_SLP_SETTING_SIM_SLOT, &value, &err);
2384 SETTING_TRACE("value:%d", value);
2386 case VCONFKEY_TELEPHONY_SIM_INSERTED:
2388 struct ug_cbs *cbs =
2389 (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
2390 setting_retm_if(!cbs, "calloc failed");
2391 cbs->layout_cb = setting_main_layout_ug_cb;
2392 cbs->result_cb = setting_main_result_ug_cb;
2393 cbs->destroy_cb = setting_main_destroy_ug_cb;
2394 cbs->priv = (void *)ad;
2395 setting_main_click_list_item_ug_cb(data, obj,
2396 "setting-network-efl",
2401 case VCONFKEY_TELEPHONY_SIM_NOT_PRESENT:
2402 setting_create_simple_popup(NULL, ad->win_main,
2403 NULL, _("IDS_ST_HEADER_INSERT_SIM_CARD_ABB"));
2404 SETTING_TRACE("%s*** [ERR] No SIM. sim_slot_type=%d ***%s",
2405 SETTING_FONT_RED, value, SETTING_FONT_BLACK);
2408 case VCONFKEY_TELEPHONY_SIM_CARD_ERROR:
2409 case VCONFKEY_TELEPHONY_SIM_UNKNOWN:
2410 setting_create_simple_popup(NULL, ad->win_main,
2411 NULL,_("IDS_COM_BODY_INVALID_SIM_CARD"));
2412 SETTING_TRACE("%s*** [ERR] Invalid SIM. sim_slot_type=%d ***%s",
2413 SETTING_FONT_RED, value, SETTING_FONT_BLACK);
2423 setting_main_click_Gendial_list_flight_mode_cb(void *data, Evas_Object *obj,
2427 setting_retm_if(data == NULL, "Data parameter is NULL");
2429 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
2430 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
2431 elm_genlist_item_selected_set(item, 0);
2432 Setting_GenGroupItem_Data *list_item =
2433 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
2434 int old_status = elm_check_state_get(list_item->eo_check);
2436 list_item->chk_status = !old_status;
2437 elm_check_state_set(list_item->eo_check, list_item->chk_status);
2439 __alternate_flight_mode(list_item->eo_check);
2444 setting_main_click_list_flight_mode_cb(void *data, Evas_Object *obj,
2447 SETTING_TRACE_BEGIN;
2448 retm_if(data == NULL, "Data parameter is NULL");
2449 Setting_GenGroupItem_Data *list_item =
2450 (Setting_GenGroupItem_Data *) data;
2451 list_item->chk_status = elm_check_state_get(obj); /* for update new state */
2452 SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
2453 list_item->chk_status);
2455 __alternate_flight_mode(obj);
2461 * store current selection in setting.cfg
2463 void setting_try_save_check_list(void *data)
2465 SETTING_TRACE_BEGIN;
2466 setting_main_appdata *ad = (setting_main_appdata *) data;
2468 Eina_List *check_list = ad->item_check_list;
2469 Setting_GenGroupItem_Data *list_item = NULL;
2470 int update_count = 0;
2472 while (check_list) {
2473 list_item = (Setting_GenGroupItem_Data *) eina_list_data_get(check_list);
2474 if (NULL == list_item) continue;
2477 if (list_item->chk_status) {
2478 /* to update config file */
2479 setting_cfg_set_pos(list_item->keyStr, Cfg_Item_Pos_Level0);
2481 /* to update config file */
2482 setting_cfg_set_pos(list_item->keyStr, Cfg_Item_Pos_Level1);
2484 check_list = eina_list_next(check_list);
2487 if (update_count == 0) {
2488 /* to popup tips notify */
2490 setting_cfg_file_update();
2496 setting_main_click_edit_preferred_cb(void *data, Evas_Object *obj, void *event_info)
2498 SETTING_TRACE_BEGIN;
2500 setting_main_appdata *ad = (setting_main_appdata *) data;
2501 ad->view_type = SETTING_VIEW_ALL_CHECK;
2502 __setting_create_prefered_view(ad);
2503 __load_check_list(ad, &(ad->edit_preferred_genlist), NULL);