X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;ds=sidebyside;f=src%2Fsetting.c;h=21b5137e4155398a083b5de9eece3b2873a58dc6;hb=afc9714340b742a66c09da720927ab8720498f44;hp=31acef4c8408cb1db521a4846bcc572e4ae9853e;hpb=4b48d9af7add3f99c194be63aa0f97c8f0f19f76;p=apps%2Fhome%2Fsettings.git diff --git a/src/setting.c b/src/setting.c index 31acef4..21b5137 100755 --- a/src/setting.c +++ b/src/setting.c @@ -1,188 +1,117 @@ /* * setting - * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. * - * Licensed under the Flora License, Version 1.1 (the License); + * Contact: MyoungJune Park + * + * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://floralicense.org/license/ + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, + * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. + * */ #include #include +#include #include #include #include #include -#include "setting-common-plugin.h" #include "setting-main.h" + + +#include + +#include #include #include -#include -#include +//#include #include - -extern void setting_update_gl_item(void* data); +#include #define KEY_END "XF86Stop" -#define SUPPORT_UG_MESSAGE +//#define SUPPORT_UG_MESSAGE + + +#define SETTING_SOUND_VOL_MAX 15 +#define SETTING_DEFAULT_RINGTONE_VOL_INT 11 +#define SETTING_DEFAULT_NOTI_VOL_INT 11 +#define SETTING_DEFAULT_MEDIA_VOL_INT 9 + +const char *fixed_grid_pref_key[] = { + "PREFKEY_GRID0", + "PREFKEY_GRID1", + "PREFKEY_GRID2", + "PREFKEY_GRID3", + "PREFKEY_GRID4", + "PREFKEY_GRID5", + "PREFKEY_GRID6", + "PREFKEY_GRID7", + "PREFKEY_GRID8", + "PREFKEY_GRID9", + "PREFKEY_GRID10", + "PREFKEY_GRID11", +}; int g_geometry_x, g_geometry_y, g_geometry_w, g_geometry_h; +extern int aul_listen_app_dead_signal(int (*func)(int signal, void *data), void *data); -void termination_handler(int signum) -{ - SETTING_TRACE_BEGIN; - SETTING_TRACE(">>>>>>>>>>> SIGTERM >>>>>>>>>>>>>>> SETTING"); +/* This API is defined in . But, cannot include and it is not a managed API. + The way to resolve : 1. Add extern. + 2. Use bundle pointer originally + At first, choose No.1 */ +extern int app_control_create_request(bundle *data, app_control_h *service); - elm_exit(); -} -static void __main_motion_sensor_cb( unsigned long long timestamp, void *data) -{ - /* The code 'return ;' will be deleted after the defect of elm_genlist_item_top_show() is fixed */ +setting_main_appdata *g_main_ad; +const char *menu_group[] = {KeyStr_Connectivity, + KeyStr_ShareAndTransfer, + KeyStr_SoundDisplay, + KeyStr_Personal, + KeyStr_MotionControl, + KeyStr_BackupOption, + KeyStr_System, + KeyStr_DownloadedAPPs, +}; - setting_retm_if(NULL == data, "NULL == data"); - setting_main_appdata *ad = (setting_main_appdata *) data; +static Cfg_Item_Type setting_main_sfinder_handler(app_control_h service, void* data, int (*func)(void* d1)); - SETTING_TRACE(">>>>>>>Double tap event detected"); - //If it is in UG mode, Setting just send the event to the loaded UG - - if (ad->isInUGMode && ad->ug) { - #ifdef SUPPORT_UG_MESSAGE - SETTING_TRACE(">>>>>>>Send event to UG"); +static Ea_Theme_Color_Table *_changeable_colors_set() +{ + Ea_Theme_Color_Table *table; - service_h svc; - if(service_create(&svc)) - return; + table = ea_theme_color_table_new("/usr/apps/org.tizen.setting/shared/res/tables/org.tizen.setting.xml"); + ea_theme_colors_set(table, EA_THEME_STYLE_LIGHT); - service_add_extra_data(svc, "Detected", "Double_tap_event"); - if (ug_send_message(ad->ug, svc) != 0) { - SETTING_TRACE_ERROR("call ug_send_message fail"); - } + return table; +} - service_destroy(svc); - #else - //Methord: instead of send message to UG and its sub-UGs, - //1.To get the layout of UG ,and then - //2.To get the naviframe of the layout, and then, - //3.To get the toppest item of naviframe, and then - //4.To get the content of naviframe toppest item,that is content - //5.content ia mainly a genlist,but it is not fixed,it maybe a conformant or another layout - // if it is a genlist,directly show its top item - // if it is a conformant or another layout,to get all of its sub-objects,then ask turnly - // whether it is a genlist,if it is(some sub-object), topply show it. - //That's all - Evas_Object *layout = (Evas_Object *)ug_get_layout(ad->ug); - if (layout) { - Evas_Object *genlist = NULL; - Evas_Object *navi_bar = elm_object_part_content_get(layout, "elm.swallow.content"); - Elm_Object_Item *item = elm_naviframe_top_item_get(navi_bar); - Evas_Object *content = elm_object_item_content_get(item); - //SETTING_TRACE("content:%p", content); - - const char *type = elm_object_widget_type_get(content); - //SETTING_TRACE("content type:%s", type); - if (0 == safeStrCmp(type, "genlist")) { - genlist = content; - } else if (NULL != type) {//type="layout","conformant" etc.. - //layout - //genlist = elm_object_part_content_get(content, "elm.swallow.contents"); - const Eina_List *subobjs = elm_widget_sub_object_list_get(content); - ret_if(!subobjs); - Evas_Object *subobj; - const Eina_List *l; - - //just only search the first objects level - EINA_LIST_FOREACH(subobjs, l, subobj) { - if (!subobj) continue; - type = elm_object_widget_type_get(subobj); - if (0 == safeStrCmp(type, "genlist")) { - genlist = subobj; - Elm_Object_Item *first_item = elm_genlist_first_item_get(genlist); - if (first_item) { - elm_genlist_item_show(first_item, ELM_GENLIST_ITEM_SCROLLTO_TOP); - } - } - } - return;//to return,because for this case,we need special process. - } else { - //keep genlist to be NULL. - } - if (genlist && 0 == safeStrCmp(elm_object_widget_type_get(genlist), "genlist")) { - SETTING_TRACE("Get the genlist:%p", genlist); - Elm_Object_Item *first_item = elm_genlist_first_item_get(genlist); - if (first_item) { - elm_genlist_item_show(first_item, ELM_GENLIST_ITEM_SCROLLTO_TOP); - } - } - } - #endif - } else { - setting_go_to_navibar_list_top(ad->navibar_main); - } +static void _changeable_colors_free(Ea_Theme_Color_Table *table) +{ + // when the process is killed, you don’t need to call this + ea_theme_colors_unset(table, EA_THEME_STYLE_LIGHT); + ea_theme_color_table_free(table); } -/** -* The event process when hard key is pressed. -*/ -#if DISABLED_CODE -static int setting_main_keydown_cb(void *data, int type, void *event) + + +void termination_handler(int signum) { SETTING_TRACE_BEGIN; + // do something for signal handling + //SETTING_TRACE_DEBUG(">>>>>>>>>>>>>>>>> SIGTERM >>>>>>>>>>>>>>> SETTING "); - static int s_count = 0; - Ecore_Event_Key *ev = event; -#if APPLIED_BACK_KEY_UG - if (!safeStrCmp(ev->keyname, KEY_END)) { - Evas_Object *popup = get_toppest_popup_window(ad->evas); - if (popup) { - /* "progressbar"ÀàÐ͵Äpopup, ²»×÷´¦Àí */ - Evas_Object *content = elm_object_content_get(popup); - const char *type = elm_widget_type_get(content); - if (type && !safeStrCmp(type, "progressbar")) { - SETTING_TRACE_DEBUG ("Found popup[%p], but it respresent a progress bar, so skip it.", popup); - } else { - evas_object_smart_callback_call(popup, "timeout", NULL); - } - } - return; - } - - if (ad->isInUGMode) { /* have some ug being loaded, it was reset to be FALSE in setting_main_destroy_ug_cb() */ - SETTING_TRACE("Send UG_KEY_EVENT_END to ug"); - ug_send_key_event(UG_KEY_EVENT_END); - } else { - if (elm_naviframe_top_item_get(ad->navibar_main) - == elm_naviframe_bottom_item_get(ad->navibar_main)) { - SETTING_TRACE("To exit Setting App"); - elm_exit(); - } else { - SETTING_TRACE("To pre-view of Setting App"); - elm_naviframe_item_pop(ad->navibar_main); - } - } + elm_exit(); } -#else - if (ev && !safeStrCmp(ev->keyname, KEY_END)) { - /* do nothing except exit */ - SETTING_TRACE("before --- elm_exit "); - elm_exit(); - s_count = s_count + 1; - SETTING_TRACE("after --- elm_exit = %d ", s_count); - } -#endif - SETTING_TRACE_END; - return 1; -} -#endif #if LOW_BATTERY_DO_NOTHING @@ -197,80 +126,25 @@ static void setting_main_low_battery_cb(void *data) setting_main_appdata *ad = data; if (ad->ug) + { ug_send_event(UG_EVENT_LOW_BATTERY); + } } #endif -#if SUPPORT_APP_ROATION - -/** -* To active rotation effect in Setting App -*/ -static void setting_main_rotate(app_device_orientation_e m, void *data) -{ - SETTING_TRACE_BEGIN; - setting_main_appdata *ad = data; - if (ad == NULL || ad->win_main == NULL) - return; - -#if 0 - int value = 0; - vconf_get_bool - (VCONFKEY_SETAPPL_ROTATE_LOCK_BOOL, &value); - // true : aoto rotation OFF - // false : auto rotation ON - value = !value; -#else - //int hold_flag = 0; - //vconf_get_bool (VCONFKEY_SETAPPL_ROTATE_HOLD_BOOL, &hold_flag); - //SETTING_TRACE("hold_flag:%d", hold_flag); - //if (hold_flag) - //{ - //do nothing.. - // return; - //} - - int value = 0; - vconf_get_bool (VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, &value); - - if (value == 0) - m = 0; - - elm_win_rotation_with_resize_set(ad->win_main, m); - - /////Send the rotation event to UGs.. - enum ug_event event = UG_EVENT_ROTATE_PORTRAIT; - switch (m) { - case APP_DEVICE_ORIENTATION_0: - event = UG_EVENT_ROTATE_PORTRAIT; - break; - case APP_DEVICE_ORIENTATION_180: - event = UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN; - break; - case APP_DEVICE_ORIENTATION_90: - event = UG_EVENT_ROTATE_LANDSCAPE; - break; - case APP_DEVICE_ORIENTATION_270: - event = UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN; - break; - default: - return; - } - ug_send_event(event); - //elm_win_rotation_get -#endif - -} +#if SUPPORT_APP_ROATION static void _rot_changed_cb(void *data, Evas_Object *obj, void *event_info) { SETTING_TRACE_BEGIN; setting_main_appdata *ad = (setting_main_appdata *)data; if (ad == NULL || ad->win_main == NULL ) + { return; + } int change_ang = elm_win_rotation_get(ad->win_main); - SETTING_TRACE("....change_ang:%d",change_ang); - SETTING_TRACE("current_rotation:%d",ad->current_rotation); + SETTING_TRACE_DEBUG("....change_ang:%d",change_ang); + SETTING_TRACE_DEBUG("current_rotation:%d",ad->current_rotation); //Send the rotation event to UGs.. enum ug_event event = UG_EVENT_ROTATE_PORTRAIT; switch (change_ang) { @@ -289,16 +163,59 @@ static void _rot_changed_cb(void *data, Evas_Object *obj, void *event_info) default: return; } - SETTING_TRACE("diff:%d",elm_win_rotation_get(ad->win_main) - ad->current_rotation); + SETTING_TRACE_DEBUG("diff:%d",elm_win_rotation_get(ad->win_main) - ad->current_rotation); if (change_ang != ad->current_rotation) { + int diff = change_ang - ad->current_rotation; + if (diff < 0 ) + { + diff = -diff; + } + /** + * @todo if app didn't launch UG, is the call required to invoke? + */ ug_send_event(event); + if (diff == 180) + { + // do nothing + } + else + { + if (ad->list_type == SETTING_GRID_VIEW) + { + Elm_Object_Item *it; + Evas_Object *genlist = NULL; + + genlist = ad->sc_gl[SC_All_Grid]; + if(genlist) { + //elm_genlist_realized_items_update(ad->sc_gl[SC_All_Grid]); + //list = elm_genlist_realized_items_get(ad->sc_gl[SC_All_Grid]); + it = elm_genlist_first_item_get(genlist); + while (it) { + elm_genlist_item_update(it); + it = elm_genlist_item_next_get(it); + } + } + + genlist = ad->edit_genlist; + if (ad->edit_genlist) + { + //elm_genlist_realized_items_update(ad->edit_genlist); + it = elm_genlist_first_item_get(genlist); + while (it) { + elm_genlist_item_update(it); + it = elm_genlist_item_next_get(it); + } + } + } + } ad->current_rotation = change_ang; } } #endif + /** * The event process when region is changes. */ @@ -307,7 +224,9 @@ static void setting_main_region_changed_cb(void *data) setting_main_appdata *ad = data; if (ad->ug) + { ug_send_event(UG_EVENT_REGION_CHANGE); + } } /** @@ -323,9 +242,13 @@ void profile_changed_cb(void *data, Evas_Object * obj, void *event) const char *profile = elm_config_profile_get(); if (strcmp(profile, "desktop") == 0) + { elm_win_indicator_mode_set (obj, ELM_WIN_INDICATOR_HIDE); + } else + { elm_win_indicator_mode_set (obj, ELM_WIN_INDICATOR_SHOW); + } } /** @@ -334,11 +257,32 @@ void profile_changed_cb(void *data, Evas_Object * obj, void *event) static Evas_Object *setting_main_create_win(const char *name) { SETTING_TRACE_BEGIN; + LAUNCH_SETTING_IN(); Evas_Object *eo; int w, h; - //eo = elm_win_add(NULL, name, ELM_WIN_BASIC); - eo = elm_win_util_standard_add(name, name); + eo = (Evas_Object*) app_get_preinitialized_window(name); + if (!eo) + eo = elm_win_util_standard_add(name, name); + else { + // elm_win_util_standard_add creates bg inside + Evas_Object *bg; + + //bg = elm_bg_add(eo); + bg = app_get_preinitialized_background(); + if (!bg) + bg = elm_bg_add(eo); + + + if (!bg) + { + evas_object_del(eo); + return NULL; + } + evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_resize_object_add(eo, bg); + evas_object_show(bg); + } if (eo) { elm_win_title_set(eo, name); evas_object_smart_callback_add(eo, "delete,request", setting_main_del_win, NULL); @@ -348,114 +292,117 @@ static Evas_Object *setting_main_create_win(const char *name) &w, &h); evas_object_resize(eo, w, h); } - + LAUNCH_SETTING_OUT(); return eo; } + /** * exceptional process, reset the env vars by Setting vconf VCONFKEY_LANGSET */ static void setting_main_lang_changed_cb(void *data) { SETTING_TRACE_BEGIN; - setting_main_appdata *ad = data; + retm_if(!data, "Invalid argument: data is NULL"); + //FIX the crash when switch from Portrait mode to landscape mode, + //It is so strange the data is no longer correct + //and ....why it is invoked + //setting_main_appdata *ad = data; + setting_main_appdata *ad = g_main_ad; + + char *tab_str[] = { + Keystr_Connection, + KeyStr_Device, + KeyStr_MotionControl, + "IDS_ST_BODY_GENERAL", + KeyStr_DownloadedAPPs + }; + int i = 0; - char* str = NULL; - if (ad->data_wifi) { - str = (char *)get_pa_Wi_Fi_on_off_str(); - if ( ! str) str = g_strdup("err"); - ad->data_wifi->sub_desc = str; + for (;i < SETTING_TAB_VIEW_MAX; i++) + { + //SETTING_TRACE("_(tab_str[%d]):%s", i, _(tab_str[i])); + if (ad->ctrl_item[i]) + elm_object_item_text_set(ad->ctrl_item[i], _(tab_str[i])); } - if (ad->data_bt) { - str = (char *)g_strdup(get_BT_on_off_str()); - if ( ! str) str = g_strdup("err"); - ad->data_bt->sub_desc = str; + + char *tmp = NULL; + if (ad->data_bright) { + tmp = ad->data_bright->sub_desc; + ad->data_bright->sub_desc= (char*)g_strdup(get_brightness_mode_str()); + FREE(tmp) } - if (ad->data_nfc) { - str = (char *)g_strdup(get_NFC_on_off_str()); - if ( ! str) str = g_strdup("err"); - ad->data_nfc->sub_desc = str; + if (ad->data_backlight) { + tmp = ad->data_backlight->sub_desc; + ad->data_backlight->sub_desc= get_pa_backlight_time_str(); + FREE(tmp) } - if (ad->data_bright) { - str = (char*)g_strdup(get_brightness_mode_str()); - if ( ! str) str = g_strdup("err"); - ad->data_bright->sub_desc = str; + if (ad->data_screenmode) { + tmp = ad->data_screenmode->sub_desc; + ad->data_screenmode->sub_desc= get_pa_screen_mode_str(); + FREE(tmp) } - if (ad->data_moreConnect) { - char sub_text[MAX_COMMON_BUFFER_LEN] = {0, }; - int idx = 0; - while (idx < MAX_MORE_MENU_NUM && ad->more_connective_menus[idx]) - { - if (idx != 0) + Eina_List *list, *l; + Elm_Object_Item *it; + i = SETTING_TAB_VIEW_INVALID; + for (i = SETTING_TAB_VIEW_QUICK_SETTINGS; i < SETTING_TAB_VIEW_MAX; i++) + { + if(ad->sub_view[i]) { + list = elm_genlist_realized_items_get(ad->sub_view[i]); + EINA_LIST_FOREACH(list, l, it) { - safeStrNCat(sub_text, ", ", MAX_COMMON_BUFFER_LEN); + __add_gl_tts_feature(it); + elm_genlist_item_update(it); } - safeStrNCat(sub_text, _(ad->more_connective_menus[idx]), MAX_COMMON_BUFFER_LEN); - idx++; } - ad->data_moreConnect->sub_desc = g_strdup(sub_text); } - if (ad->data_moreSystem) { - char sub_text[MAX_COMMON_BUFFER_LEN] = {0, }; - int idx = 0; - while (idx < MAX_MORE_MENU_NUM && ad->more_system_menus[idx]) - { - if (idx != 0) + + // update all tabs + for (i = SC_All_List; i < SC_Max; i++) + { + //if (ad->sc_gl[i]) elm_genlist_realized_items_update(ad->sc_gl[i]); + if(ad->sc_gl[i]) { + list = elm_genlist_realized_items_get(ad->sc_gl[i]); + EINA_LIST_FOREACH(list, l, it) { - safeStrNCat(sub_text, ", ", MAX_COMMON_BUFFER_LEN); + __add_gl_tts_feature(it); + elm_genlist_item_update(it); } - safeStrNCat(sub_text, _(ad->more_system_menus[idx]), MAX_COMMON_BUFFER_LEN); - idx++; } - ad->data_moreSystem->sub_desc = g_strdup(sub_text); } + // For UGs - if (ad->main_genlist) elm_genlist_realized_items_update(ad->main_genlist); - if (ad->genlist_load) elm_genlist_realized_items_update(ad->genlist_load); - - Elm_Object_Item *navi_it = NULL; -#if SUPPORT_MORE_ITEM_FUNCTION - navi_it = elm_naviframe_top_item_get(ad->navibar_main); - if (navi_it) elm_object_item_text_set(navi_it, _(KeyStr_MoreSystem)); -#endif - - navi_it = elm_naviframe_bottom_item_get(ad->navibar_main); - if (navi_it) - elm_object_item_text_set(navi_it, _("IDS_COM_BODY_SETTINGS")); + elm_object_item_part_text_set(ad->main_navi_it, "elm.text.title", _("IDS_ST_OPT_SETTINGS")); + setting_navi_items_update(ad->navibar_main); - if (ad->edit_item) + if (ad->isInUGMode && ad->ug) { -#if SUPPORT_BOTTOM_BTNS - elm_object_item_text_set(ad->edit_item, _(EDIT_PREFERRED_STR)); -#else - Evas_Object *eo_btn = elm_object_item_part_content_get(ad->edit_item, "object"); - setting_retm_if(eo_btn == NULL, "get eo_lbtn failed"); - elm_object_text_set(eo_btn, _(EDIT_PREFERRED_STR)); -#endif - } - - if (ad->segment_all) - elm_object_item_text_set(ad->segment_all, _(ALL_STR)); - if (ad->segment_preferred) - elm_object_item_text_set(ad->segment_preferred, _(PREFERRED_STR)); - - // set toolbar text - char tmp_text[MAX_DISPLAY_NAME_LEN_ON_UI + 1] = {0,}; - if (MAIN_PROFILE_ALL == ad->profile_type) { - snprintf(tmp_text, MAX_DISPLAY_NAME_LEN_ON_UI, "%s", _(PREFERRED_STR)); - } else if (MAIN_PROFILE_PREFERRED == ad->profile_type) { - snprintf(tmp_text, MAX_DISPLAY_NAME_LEN_ON_UI, "%s", _(ALL_STR)); - } else { - /* do nothing */ + Evas_Object *layout = (Evas_Object *)ug_get_layout(ad->ug); + if (layout) + { + Evas_Object *navi_bar = NULL; + navi_bar = elm_object_part_content_get(layout, "elm.swallow.content"); + setting_navi_items_update(navi_bar); + } + ug_send_event(UG_EVENT_LANG_CHANGE); } - Evas_Object *btn = elm_object_item_part_content_get(navi_it, "toolbar_button1"); - elm_object_text_set(btn, tmp_text); +} - if (ad->ug) - ug_send_event(UG_EVENT_LANG_CHANGE); +static Eina_Bool __update_gengrid_delayer(void *data) +{ + SETTING_TRACE_BEGIN; + setting_main_appdata *ad = data; + retvm_if(!data, ECORE_CALLBACK_CANCEL, "Invalid argument: data is NULL"); + if (ad->gengrid) + { + elm_gengrid_realized_items_update(ad->gengrid); + } + //After return False, the idler will be deleted directly,so here set ad->set_idler as NULL directly. + ad->update_idler = NULL; + return ECORE_CALLBACK_CANCEL; } /** @@ -468,75 +415,264 @@ static void setting_other_vconf_change_cb(keynode_t *key, void *data) Setting_GenGroupItem_Data* item_to_update = NULL; char *vconf_name = vconf_keynode_get_name(key); - //SETTING_TRACE("the value of [ %s ] just changed", vconf_name); - - if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_WIDGET_THEME_STR)) { - return; - } else if (!safeStrCmp(vconf_name, VCONFKEY_TELEPHONY_FLIGHT_MODE)) { - item_to_update = ad->data_flight; - retm_if(!item_to_update, "ad->data_flight is NULL"); - - int status = 0; - vconf_get_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, &status); - item_to_update->chk_status = status; - //do not need delay for checks - elm_check_state_set(item_to_update->eo_check, item_to_update->chk_status); + SETTING_TRACE("the value of [ %s ] just changed", vconf_name); + int i = 0; + if (!safeStrCmp(vconf_name, VCONFKEY_TELEPHONY_FLIGHT_MODE)) { + int flightmode = 0; + vconf_get_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, &flightmode); //Flight mode is ON : Network menu dimmed - if (ad->data_network) + SETTING_TRACE("vconf flight [%d]", flightmode); + for (i = VIEW_All_List; i < VIEW_Max; i++) { - if (status) + setting_genlist_item_disabled_set(ad->gl_data_item[i][GL_Network], flightmode); + setting_genlist_item_disabled_set(ad->gl_data_item[i][GL_PM], flightmode); + item_to_update = ad->gl_data_item[i][GL_FlightMode]; + if (item_to_update) { - setting_disable_genlist_item(ad->data_network->item); - } - else - { - setting_enable_genlist_item(ad->data_network->item); + item_to_update->chk_status = flightmode; + const char *tmp = item_to_update->l_swallow_path; + SETTING_TRACE("status:%d", flightmode); + if (!flightmode) + { + item_to_update->l_swallow_path = (char *)g_strdup(SETTING_ICON_PATH_CFG"settings_flightoff1.png"); + } + else + { + item_to_update->l_swallow_path = (char *)g_strdup(SETTING_ICON_PATH_CFG"A01-1_icon_Flight_Mode.png"); + } + G_FREE(tmp); + + elm_genlist_item_fields_update(item_to_update->item, "*", ELM_GENLIST_ITEM_FIELD_CONTENT); } + } + + SETTING_TRACE_END; return; - } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL)) { - item_to_update = ad->data_rotationMode; - retm_if(!item_to_update, "ad->data_rotationMode is NULL"); +#if SUPPORT_NETWORK_RESTRICTION + } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_NETWORK_RESTRICT_MODE)) { + int status = 0; + vconf_get_bool( VCONFKEY_SETAPPL_NETWORK_RESTRICT_MODE, &status ); + + // Update network restriction mode UI + for (i = VIEW_All_List; i < VIEW_Max; i++) + { + setting_genlist_item_disabled_set(ad->gl_data_item[i][GL_MobileApp], status); + setting_genlist_item_disabled_set(ad->gl_data_item[i][GL_WiFi], status); + setting_force_update_gl_item_chk_status(ad->gl_data_item[i][GL_NetRestriction], status ); + } + return; +#endif + } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL)) { + SETTING_TRACE_DEBUG("%s updated", vconf_name); int status = 0; vconf_get_bool(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, &status); + for (i = VIEW_All_List; i < VIEW_Max; i++) + { + setting_force_update_gl_item_chk_status(ad->gl_data_item[i][GL_Landscape], status); + } - item_to_update->chk_status = status; - //do not need delay for checks - elm_check_state_set(item_to_update->eo_check, item_to_update->chk_status); - SETTING_TRACE("item_to_update->chk_status:%d", item_to_update->chk_status); - if (item_to_update->chk_status) //rotation function is not blocked + if(status) { - SETTING_TRACE("Rotation function is on, it is necessary to adjust the device orientation"); - //int mode = APP_DEVICE_ORIENTATION_0; - //mode = app_get_device_orientation(); - //elm_win_rotation_with_resize_set(ad->win_main, mode); + int angle = elm_win_rotation_get(ad->win_main); + elm_win_rotation_with_resize_set(ad->win_main, angle); } + else + { + elm_win_rotation_with_resize_set(ad->win_main, 0); + } + return; + } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_WALLPAPER_APPLY_COLORTHEME_BOOL)) { + #if 0 + SETTING_TRACE_DEBUG("%s updated", vconf_name); + int status = 0; + vconf_get_bool(VCONFKEY_SETAPPL_WALLPAPER_APPLY_COLORTHEME_BOOL, &status); + + // only work if status = 1, else it skip the procedure + if (status == 0) + return; + char *homescreen_path = NULL; + int ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN, &homescreen_path); + SETTING_TRACE("current homescreen_path : (%s) ", homescreen_path); + + //----------------------------------------------------------------------------------------------- + // homescreen_path + int i; + int theme_index = 0; // default = 0 + + int* pcolor = mp_collect_color_set_image(homescreen_path, 1); + SETTING_TRACE("******************************************************"); + SETTING_TRACE(" (homescreen: %s) -- mp_collect_color_set_image: (%d) ", homescreen_path, *pcolor); + int *rgb = mp_collect_color_get_RGB(pcolor, 1); + SETTING_TRACE("r=%d, g=%d, b=%d", rgb[0], rgb[1], rgb[2]); + FREE(pcolor); + theme_index = ea_theme_suitable_theme_get(rgb[0], rgb[1], rgb[2]); + SETTING_TRACE(" (theme index: %d) - ea_theme_suitable_theme_get", theme_index); + SETTING_TRACE("******************************************************"); + + //----------------------------------------------------------------------------------------------- + // function call with the index & vconf set + vconf_set_int(VCONFKEY_SETAPPL_CHANGE_UI_THEME_INT, theme_index); + // LOGIC HERE + Eina_Bool result = ea_theme_input_colors_set(theme_index); + if( result == EINA_TRUE ) { + ea_theme_system_colors_apply(); + } + #endif return; + } else if (!safeStrCmp(vconf_name, VCONFKEY_NFC_STATE)) { SETTING_TRACE_DEBUG("%s updated", vconf_name); - item_to_update = ad->data_nfc; - retm_if(!item_to_update, "ad->data_nfc is NULL"); + if (ad->nfc_timer) { + ecore_timer_del(ad->nfc_timer); + ad->nfc_timer = NULL; + } int status = 0; vconf_get_bool(VCONFKEY_NFC_STATE, &status); - item_to_update->swallow_type = SWALLOW_Type_1ICON_1RADIO; - item_to_update->chk_status = status; - //do not need delay for checks - elm_check_state_set(item_to_update->eo_check, item_to_update->chk_status); - SETTING_TRACE("item_to_update->chk_status:%d", item_to_update->chk_status); + for (i = VIEW_All_List; i < VIEW_Max; i++) + { + item_to_update = ad->gl_data_item[i][GL_NFC]; + if (item_to_update) + { + item_to_update->swallow_type = SWALLOW_Type_1ICON_1RADIO; + item_to_update->chk_status = status; + elm_object_item_data_set(item_to_update->item, item_to_update); + elm_genlist_item_fields_update(item_to_update->item, "elm.icon.2", ELM_GENLIST_ITEM_FIELD_CONTENT); + } + } + + if (!status) { + int sbeam_status = 0; + vconf_get_bool(VCONFKEY_NFC_SBEAM, &sbeam_status); + if (sbeam_status) { + vconf_set_bool(VCONFKEY_NFC_SBEAM, !sbeam_status); + } + } + } else if (!safeStrCmp(vconf_name, VCONFKEY_NFC_SBEAM)) { + SETTING_TRACE_DEBUG("%s updated", vconf_name); + + int status = 0; + vconf_get_bool(VCONFKEY_NFC_SBEAM, &status); + for (i = VIEW_All_List; i < VIEW_Max; i++) + { + item_to_update = ad->gl_data_item[i][GL_SBeam]; + if (item_to_update) + { + item_to_update->chk_status = status; + elm_genlist_item_fields_update(item_to_update->item, "elm.icon.2", ELM_GENLIST_ITEM_FIELD_CONTENT); + } + } + + } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_DM_DRIVING_MODE)) { + SETTING_TRACE_DEBUG("%s updated", vconf_name); + /* cfg set_item_state has do the work, need to del it, or it will be a issue */ + + int status = 0; + vconf_get_bool(VCONFKEY_SETAPPL_DM_DRIVING_MODE, &status); + for (i = VIEW_All_List; i < VIEW_Max; i++) + { + item_to_update = ad->gl_data_item[i][GL_DM]; + setting_force_update_gl_item_chk_status(item_to_update, status); + } +#if SUPPORT_POWERSAVING + } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_PWRSV_SYSMODE_STATUS)) { + SETTING_TRACE_DEBUG("%s updated", vconf_name); + int status = 0; + vconf_get_bool(VCONFKEY_SETAPPL_PWRSV_SYSMODE_STATUS, &status); + for (i = VIEW_All_List; i < VIEW_Max; i++) + { + item_to_update = ad->gl_data_item[i][GL_PM]; + setting_force_update_gl_item_chk_status(item_to_update, status); + } +#endif +#if SUPPORT_BLOCKINGMODE + } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_BLOCKINGMODE_BLOCKINGMODE)) { + SETTING_TRACE_DEBUG("%s updated", vconf_name); + int status = 0; + vconf_get_bool(VCONFKEY_SETAPPL_BLOCKINGMODE_BLOCKINGMODE, &status); + for (i = VIEW_All_List; i < VIEW_Max; i++) + { + item_to_update = ad->gl_data_item[i][GL_BM]; + setting_force_update_gl_item_chk_status(item_to_update, status); + } +#endif +#if SUPPORT_PERSONALPAGE + } else if(!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_PERSONAL_MODE_STATUS_BOOL)) { + SETTING_TRACE_DEBUG("%s updated", vconf_name); + + int status = 0; + vconf_get_bool(VCONFKEY_SETAPPL_PERSONAL_MODE_STATUS_BOOL, &status); + + for (i = VIEW_All_List; i < VIEW_Max; i++) + { + item_to_update = ad->gl_data_item[i][GL_PersonalPage]; + setting_force_update_gl_item_chk_status(item_to_update, status); + } +#endif +#if SUPPORT_GUESTMODE + } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_GM_GUEST_MODE)) { + SETTING_TRACE_DEBUG("%s updated", vconf_name); + int status = 0; + vconf_get_bool(VCONFKEY_SETAPPL_GM_GUEST_MODE, &status); + + for (i = VIEW_All_List; i < VIEW_Max; i++) + { + item_to_update = ad->gl_data_item[i][GL_GuestMode]; + setting_force_update_gl_item_chk_status(item_to_update, status); + } +#endif + } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_ACCESSIBILITY_TTS)) { + SETTING_TRACE_DEBUG("%s updated", vconf_name); + SETTING_TRACE_DEBUG(" TTS update genlist -------------- portrait "); + SETTING_TRACE_DEBUG(" TTS update genlist -------------- landscape "); + //ad->isTopUpdate = true; + SETTING_TRACE("..........."); + //elm_gengrid_realized_items_update(ad->gengrid); + + if (ad->update_idler) { + ecore_timer_del(ad->update_idler); + ad->update_idler = NULL; + } + ad->update_idler = ecore_timer_add(0.5, (Ecore_Task_Cb) __update_gengrid_delayer, ad); + + } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_SOUND_STATUS_BOOL) + || !safeStrCmp(vconf_name, VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL)) { + } else if (!safeStrCmp(vconf_name, VCONFKEY_QUICKSETTING_MULTIWINDOW_ENABLED)){ + int status = -1; + vconf_get_bool(VCONFKEY_QUICKSETTING_MULTIWINDOW_ENABLED, &status); + + for (i = VIEW_All_List; i < VIEW_Max; i++) + { + item_to_update = ad->gl_data_item[i][GL_MultiWin]; + setting_force_update_gl_item_chk_status(item_to_update, status); + } + } else if(!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_DEVELOPER_OPTION_STATE)){ + //int dev_op_state = 0; + #ifndef BINARY_RELEASE_TYPE_ENG + /*for user binary: need to check develop_option_state vconf value*/ + if (ad->sub_view[SETTING_TAB_VIEW_GENERAL]) { + SETTING_TRACE("redraw Gernel Tab"); + evas_object_del(ad->sub_view[SETTING_TAB_VIEW_GENERAL]); + ad->sub_view[SETTING_TAB_VIEW_GENERAL] = NULL; + } + + setting_search_genlist_update(ad); + #endif - //item_to_update->sub_desc = (char *)g_strdup(get_NFC_on_off_str()); - //SETTING_TRACE_DEBUG("%s", item_to_update->sub_desc); + } else if(!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_ENHANCED_TOUCH)){ + int status = 0; + vconf_get_bool(VCONFKEY_SETAPPL_ENHANCED_TOUCH, &status); - if (ad->bAppPause || ad->ug) { - ad->updateItems[GL_ITEM_NFC] = EINA_TRUE; - } else { // app is not in pause without ug - elm_object_item_data_set(item_to_update->item, item_to_update); - elm_genlist_item_update(item_to_update->item); + for (i = VIEW_All_List; i < VIEW_Max; i++) + { + SETTING_TRACE("ad->gl_data_item[%d][GL_TouchSens]:%p", i,ad->gl_data_item[i][GL_TouchSens]); + item_to_update = ad->gl_data_item[i][GL_TouchSens]; + setting_force_update_gl_item_chk_status(item_to_update, status); } } } @@ -555,106 +691,196 @@ static void setting_int_vconf_change_cb(keynode_t *key, void *data) SETTING_TRACE("Enter %s(%s=%d)", __FUNCTION__, vconf_name, status); Setting_GenGroupItem_Data* item_to_update = NULL; - + int i = 0; if (!safeStrCmp(vconf_name, VCONFKEY_WIFI_STATE)) { // do handling in case of VCONFKEY_WIFI_STATE - item_to_update = ad->data_wifi; - retm_if(!item_to_update, "ad->data_wifi is NULL"); - + SETTING_TRACE_DEBUG("%s updated", vconf_name); + SETTING_TRACE("status:%d", status); + int on_off_state = EINA_FALSE; switch (status) { case VCONFKEY_WIFI_OFF: - //item_to_update->sub_desc = (char *)g_strdup(_("IDS_COM_BODY_OFF_M_STATUS")); - - item_to_update->chk_status = EINA_FALSE; + on_off_state = EINA_FALSE; break; case VCONFKEY_WIFI_UNCONNECTED: + { + //item_to_update->chk_status = EINA_FALSE; + //item_to_update->swallow_type = SWALLOW_Type_1ICON_1PROCESS; + //elm_object_item_data_set(item_to_update->item, item_to_update); + //elm_genlist_item_update(item_to_update->item); + //return; + bool last_state = FALSE; + int r = preference_get_boolean(WIFI_LAST_ON_OFF_STATE, &last_state); + if (0 != r) + { + SETTING_TRACE("ERROR, r:%d", r); + } + char *ap_name = vconf_get_str(VCONFKEY_WIFI_CONNECTED_AP_NAME); + SETTING_TRACE("Connect AP:%s", ap_name); + if (last_state) + { + //on -> off + SETTING_TRACE("on -> off"); + if (isEmptyStr(ap_name)) + { + if (OP_WIFI_TURNING_ON == ad->wifi_op + || OP_WIFI_TURNING_OFF == ad->wifi_op) + { + SETTING_TRACE("Operating in Setting(ad->wifi_op:%d)", ad->wifi_op); + //ad->wifi_op = OP_WIFI_TURNING_INVALID; + //on_off_state = EINA_FALSE; + return; + } + else + { + SETTING_TRACE("Operating in Other App"); + return; + } + } + else + { + on_off_state = EINA_FALSE; + } + } + else + { + //off -> on + SETTING_TRACE("off -> on"); + on_off_state = EINA_TRUE; + } + break; + } case VCONFKEY_WIFI_CONNECTED: case VCONFKEY_WIFI_TRANSFER: - //pa_wifi_device = vconf_get_str(VCONFKEY_WIFI_CONNECTED_AP_NAME); - //if (NULL != pa_wifi_device && '\0' != pa_wifi_device[0]) { - // item_to_update->sub_desc = (char *)g_strdup(pa_wifi_device); - //} else { - // item_to_update->sub_desc = (char *)g_strdup(_("IDS_COM_BODY_ON_M_STATUS")); - //} - //FREE(pa_wifi_device); - - item_to_update->chk_status = EINA_TRUE; + + on_off_state = EINA_TRUE; break; default: SETTING_TRACE_ERROR("Invalid wifi status!"); return; } + ad->wifi_op = OP_WIFI_TURNING_INVALID; + if (ad->wifi_timer) { + ecore_timer_del(ad->wifi_timer); + ad->wifi_timer = NULL; + } - item_to_update->swallow_type = SWALLOW_Type_1ICON_1RADIO; - elm_check_state_set(item_to_update->eo_check, item_to_update->chk_status); + for (i = VIEW_All_List; i < VIEW_Max; i++) + { + item_to_update = ad->gl_data_item[i][GL_WiFi]; + if (item_to_update) + { - if (ad->bAppPause || ad->ug) { - ad->updateItems[GL_ITEM_WIFI] = EINA_TRUE; - } else { // app is not in pause without ug - elm_object_item_data_set(item_to_update->item, item_to_update); - elm_genlist_item_update(item_to_update->item); + item_to_update->chk_status = on_off_state; + item_to_update->swallow_type = SWALLOW_Type_1ICON_1RADIO; + elm_object_item_data_set(item_to_update->item, item_to_update); + elm_genlist_item_update(item_to_update->item); + } } + preference_set_boolean(WIFI_LAST_ON_OFF_STATE, on_off_state); } else if (!safeStrCmp(vconf_name, VCONFKEY_CALL_STATE)) { // do handling in case of VCONFKEY_CALL_STATE - // In call situation : Wi-fi / Tethering / Network menu dimmed - // -- Only Wi-fi should be dimmed (2013.04.04) -- - if (VCONFKEY_CALL_OFF != status) + //In call situation : Wi-fi / Tethering / Network menu dimmed + for (i = VIEW_All_List; i < VIEW_Max; i++) { - if (ad->data_network) - setting_disable_genlist_item(ad->data_network->item); - } - else - { - if (ad->data_network) - setting_enable_genlist_item(ad->data_network->item); + status = (VCONFKEY_CALL_OFF != status); + setting_genlist_item_disabled_set(ad->gl_data_item[i][GL_WiFi], status); + setting_genlist_item_disabled_set(ad->gl_data_item[i][GL_MobileApp], status); } } else if (!safeStrCmp(vconf_name, VCONFKEY_BT_STATUS)) { // do handling in case of VCONFKEY_BT_STATUS - item_to_update = ad->data_bt; - retm_if(!item_to_update, "ad->data_bt is NULL"); -/* - if (FALSE == status) { - // item_to_update->sub_desc = (char *)g_strdup(_("IDS_COM_BODY_OFF_M_STATUS")); - - item_to_update->chk_status = EINA_FALSE; - } else { - //item_to_update->sub_desc = (char *)g_strdup(_("IDS_COM_BODY_ON_M_STATUS")); + SETTING_TRACE_DEBUG("%s updated", vconf_name); + if (ad->bt_timer) { + ecore_timer_del(ad->bt_timer); + ad->bt_timer = NULL; + } - item_to_update->chk_status = EINA_TRUE; + for (i = VIEW_All_List; i < VIEW_Max; i++) + { + item_to_update = ad->gl_data_item[i][GL_BT]; + if (item_to_update) + { + item_to_update->swallow_type = SWALLOW_Type_1ICON_1RADIO; + item_to_update->chk_status = status; + elm_object_item_data_set(item_to_update->item, item_to_update); + elm_genlist_item_fields_update(item_to_update->item, "elm.icon.2", ELM_GENLIST_ITEM_FIELD_CONTENT); + } } -*/ - item_to_update->swallow_type = SWALLOW_Type_1ICON_1RADIO; - item_to_update->chk_status = status; - elm_check_state_set(item_to_update->eo_check, item_to_update->chk_status); - - if (ad->bAppPause || ad->ug) { - ad->updateItems[GL_ITEM_BT] = EINA_TRUE; - } else { // app is not in pause without ug - elm_object_item_data_set(item_to_update->item, item_to_update); - elm_genlist_item_update(item_to_update->item); + + } else if (!safeStrCmp(vconf_name, VCONFKEY_ALLSHARE_STATUS)) { + // do handling in case of VCONFKEY_BT_STATUS + SETTING_TRACE_DEBUG("%s updated", vconf_name); + + for (i = VIEW_All_List; i < VIEW_Max; i++) + { + item_to_update = ad->gl_data_item[i][GL_NearByDev]; + if (item_to_update) + { + item_to_update->swallow_type = SWALLOW_Type_1ICON_1RADIO; + item_to_update->chk_status = status; + elm_object_item_data_set(item_to_update->item, item_to_update); + elm_genlist_item_fields_update(item_to_update->item, "elm.icon.2", ELM_GENLIST_ITEM_FIELD_CONTENT); + } } + + } else if (!safeStrCmp(vconf_name, VCONFKEY_MOBILE_HOTSPOT_MODE)) { } else if (!safeStrCmp(vconf_name, VCONFKEY_SYSMAN_BATTERY_STATUS_LOW)) { - if (status <= VCONFKEY_SYSMAN_BAT_CRITICAL_LOW) { - if (ad->data_bright) { - setting_disable_genlist_item(ad->data_bright->item); - } - } else { - if (ad->data_bright) { - setting_enable_genlist_item(ad->data_bright->item); - } + // do handling in case of VCONFKEY_SYSMAN_BATTERY_STATUS_LOW + status = (status <= VCONFKEY_SYSMAN_BAT_CRITICAL_LOW); + for (i = VIEW_All_List; i < VIEW_Max; i++) + { + setting_genlist_item_disabled_set(ad->gl_data_item[i][GL_Bright], status); + } + } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT)) { + // do handling in case of VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT + //update directly + for (i = VIEW_All_List; i < VIEW_Max; i++) + { + item_to_update = ad->gl_data_item[i][GL_Bright]; + if (item_to_update) + { + G_FREE(item_to_update->sub_desc); + item_to_update->sub_desc = (char *)g_strdup(get_brightness_mode_str()); + elm_object_item_data_set(item_to_update->item, item_to_update); + elm_genlist_item_update(item_to_update->item); + } } - }else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT)) { + } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL)) { //update directly - if (ad->data_bright) + for (i = VIEW_All_List; i < VIEW_Max; i++) { - ad->data_bright->sub_desc = (char *)g_strdup(get_brightness_mode_str()); - elm_object_item_data_set(ad->data_bright->item, ad->data_bright); - elm_genlist_item_update(ad->data_bright->item); + item_to_update = ad->gl_data_item[i][GL_Backlight]; + if (item_to_update) + { + char backlight_time_str[MAX_DISPLAY_NAME_LEN_ON_UI]; + if (status == 0) { + snprintf(backlight_time_str, sizeof(backlight_time_str), "%s", + _("IDS_ST_BODY_ALWAYS_ON")); + } else if (status == 60) { + snprintf(backlight_time_str, sizeof(backlight_time_str), "%s", + _("IDS_COM_BODY_1_MINUTE")); + } else if (status > 60) { + snprintf(backlight_time_str, sizeof(backlight_time_str), + "%d %s", status / 60, (char *)(_("IDS_COM_BODY_MINUTES_LC"))); + } else { + snprintf(backlight_time_str, sizeof(backlight_time_str), + "%d %s", status, (char *)(_("IDS_COM_BODY_SECONDS_LC"))); + } + SETTING_TRACE("backlight_time_str:%s", backlight_time_str); + G_FREE(item_to_update->sub_desc); + item_to_update->sub_desc = (char *)g_strdup(backlight_time_str); + elm_object_item_data_set(item_to_update->item, item_to_update); + elm_genlist_item_update(item_to_update->item); + } } + } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE)) { + + // do nothing + + } else if (!safeStrCmp(vconf_name, VCONFKEY_SYSMAN_BATTERY_CAPACITY)) { } else { SETTING_TRACE_ERROR("vconf_name is bad[%s]", vconf_name); } @@ -662,158 +888,242 @@ static void setting_int_vconf_change_cb(keynode_t *key, void *data) return; } + /** * the event process when string VCONFS changes */ static void setting_string_vconf_change_cb(keynode_t *key, void *data) { - SETTING_TRACE_BEGIN; setting_main_appdata *ad = data; retm_if(!data, "Invalid argument: data is NULL"); char *value = vconf_keynode_get_str(key); char *vconf_name = vconf_keynode_get_name(key); - Setting_GenGroupItem_Data* item_to_update = NULL; + SETTING_TRACE("Enter %s(%s=%s)", __FUNCTION__, vconf_name, value); if (!safeStrCmp(vconf_name, VCONFKEY_WIFI_CONNECTED_AP_NAME)) { - int status; - item_to_update = ad->data_wifi; - retm_if(!item_to_update, "ad->data_wifi is NULL"); + } // vconf_name == VCONFKEY_WIFI_CONNECTED_AP_NAME + else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_MOST_RECENTLY_SETTING)) + { + } + else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_SCREENMODE_SELNAME)) + { + int i; + for (i = VIEW_All_List; i < VIEW_Max; i++) + { + Setting_GenGroupItem_Data *item_to_update = ad->gl_data_item[i][GL_Screenmode]; + if (item_to_update) + { + char *tmp = item_to_update->sub_desc; + item_to_update->sub_desc = get_pa_screen_mode_str(); - if (0 != vconf_get_int(VCONFKEY_WIFI_STATE, &status)) { - SETTING_TRACE_ERROR("vconf_get err: %s", VCONFKEY_WIFI_STATE); - return; + SETTING_TRACE("item_to_update->sub_desc:%s", item_to_update->sub_desc); + elm_object_item_data_set(item_to_update->item, item_to_update); + elm_genlist_item_update(item_to_update->item); + G_FREE(tmp); + } } - SETTING_TRACE("status:%d", status); - switch (status) { - case VCONFKEY_WIFI_OFF: - //item_to_update->sub_desc = - // (char *)g_strdup(setting_gettext ("IDS_COM_BODY_OFF_M_STATUS")); + } else if (!safeStrCmp(vconf_name, VCONFKEY_BGSET) + || !safeStrCmp(vconf_name, VCONFKEY_IDLE_LOCK_BGSET)) { + } +} - item_to_update->chk_status = EINA_FALSE; - item_to_update->swallow_type = SWALLOW_Type_1ICON_1RADIO; - elm_check_state_set(item_to_update->eo_check, item_to_update->chk_status); - break; +bool ___account_subscribe_cb(const char* event_type, int account_id, void* user_data) +{ + SETTING_TRACE_BEGIN; + setting_main_appdata *ad = user_data; + if (event_type) { + SETTING_TRACE("event_type = %s\n", event_type); + } + SETTING_TRACE("account id = %d\n", account_id); - case VCONFKEY_WIFI_UNCONNECTED: - case VCONFKEY_WIFI_CONNECTED: - case VCONFKEY_WIFI_TRANSFER: - if (NULL != value && '\0' != value[0]) { - SETTING_TRACE("wifi_device:%s", value); - //item_to_update->sub_desc = (char *)g_strdup(value); - } else { - //item_to_update->sub_desc = - // (char *) g_strdup(setting_gettext ("IDS_COM_BODY_ON_M_STATUS")); - } + int is_insert = 0; + int is_delete = 0; + + if (0 == safeStrCmp(event_type, ACCOUNT_NOTI_NAME_INSERT)) + is_insert = 1; + if (0 == safeStrCmp(event_type, ACCOUNT_NOTI_NAME_DELETE)) + is_delete = 1; - item_to_update->chk_status = EINA_TRUE; - item_to_update->swallow_type = SWALLOW_Type_1ICON_1RADIO; - elm_check_state_set(item_to_update->eo_check, item_to_update->chk_status); + if ( !(is_insert|is_delete)) + return TRUE; + + bool need_disconnect = FALSE; + char *package_name = NULL; + do { + int ret = 0; + ret = account_connect(); + if ( ret != ACCOUNT_ERROR_NONE ) break; + need_disconnect = TRUE; + + account_h account = NULL; + if ( account_create(&account) != ACCOUNT_ERROR_NONE ) break; - default: - SETTING_TRACE_ERROR("Invalid wifi status!"); - return; - } - if (ad->bAppPause || ad->ug) { - ad->updateItems[GL_ITEM_WIFI] = EINA_TRUE; - } else { // app is not in pause without ug - elm_object_item_data_set(item_to_update->item, item_to_update); - elm_genlist_item_update(item_to_update->item); + + if ( account_query_account_by_account_id(account_id, &account) != ACCOUNT_ERROR_NONE ) + break; + + if ( account_get_package_name(account, &package_name) == ACCOUNT_ERROR_NONE ) { + SETTING_TRACE("package_name : %s", package_name); + } else { + SETTING_TRACE("failed"); } - } // vconf_name == VCONFKEY_WIFI_CONNECTED_AP_NAME -} + if ( account_destroy(account) != ACCOUNT_ERROR_NONE ) + break; + } while (0); -/** -* Do the process which cost much time -*/ -static Eina_Bool setting_on_idle_lazy(void *data) -{ - SETTING_TRACE_BEGIN; - setting_main_appdata *ad = data; + if (need_disconnect) + account_disconnect(); - /* A. add system event callback */ - if (sensor_create(&ad->sf_handle) != SENSOR_ERROR_NONE) { - SETTING_TRACE_ERROR("sensor attach fail"); + if (0 != safeStrCmp(package_name, "ims-service")) //must from joyn service + { + //SETTING_TRACE(""); + FREE(package_name); + return TRUE; } + FREE(package_name); - if (sensor_motion_doubletap_set_cb(ad->sf_handle, __main_motion_sensor_cb, ad) != SENSOR_ERROR_NONE) { - SETTING_TRACE("sensor_motion_doubletap_set_cb fail to gather data"); - } - if (sensor_start(ad->sf_handle, SENSOR_MOTION_DOUBLETAP) != SENSOR_ERROR_NONE) { - SETTING_TRACE_ERROR("sensor_start fail"); - } + int i; + Setting_GenGroupItem_Data *item_to_update = NULL; + Setting_GenGroupItem_Data *item_parent = NULL; + for (i = VIEW_All_List; i < VIEW_Max; i += 3)//just for VIEW_All_List and VIEW_Common + { + item_to_update = ad->gl_data_item[i][GL_Joyn]; + item_parent = ad->gl_data_item[i][GL_WiFi]; + if(!item_parent) continue; -#if SUPPORT_APP_ROATION - evas_object_geometry_get(ad->win_main, &g_geometry_x, &g_geometry_y, &g_geometry_w, &g_geometry_h); -#endif + if (!safeStrCmp(event_type, ACCOUNT_NOTI_NAME_DELETE)) + { + if (item_to_update && item_to_update->item) + { + SETTING_TRACE("To remove joyn"); + elm_object_item_del(item_to_update->item); + } + item_to_update = NULL; + setting_genlist_item_groupstyle_set(item_parent, SETTING_GROUP_STYLE_TOP); + } + else if (!safeStrCmp(event_type, ACCOUNT_NOTI_NAME_INSERT)) + { + if (!item_to_update || !item_to_update->item) + { + SETTING_TRACE("To add joyn"); + item_to_update = (Setting_GenGroupItem_Data *) calloc(1, sizeof(Setting_GenGroupItem_Data)); + setting_retvm_if(item_to_update == NULL, TRUE, "calloc failed"); + item_to_update->keyStr = (char *)g_strdup(KeyStr_Joyn); + item_to_update->swallow_type = SWALLOW_Type_INVALID; + item_to_update->userdata = ad; + item_to_update->l_swallow_path = (char *)g_strdup(IMG_Joyn); + + item_to_update->item = elm_genlist_item_insert_before(ad->sub_view[SETTING_TAB_VIEW_CONNECTION], + &(ad->itc[GENDIAL_Type_1text_1icon_2]), + item_to_update, NULL, + item_parent->item, ELM_GENLIST_ITEM_NONE, + setting_main_click_list_ex_ug_cb, + "setting-joyn-efl"); + setting_genlist_item_groupstyle_set(item_to_update, SETTING_GROUP_STYLE_TOP); + setting_genlist_item_groupstyle_set(item_parent, SETTING_GROUP_STYLE_CENTER); + } + //set back + if (0 == i) + { + ad->data_joyn = item_to_update; + __BACK_POINTER_SET(ad->data_joyn); + } + else if (1 == i) + { + ad->gl_data_item[VIEW_All_List][GL_Joyn] = item_to_update; + __BACK_POINTER_SET(ad->gl_data_item[VIEW_All_List][GL_Joyn]); + } + else + { + ad->gl_data_item[VIEW_Common][GL_Joyn] = item_to_update; + __BACK_POINTER_SET(ad->gl_data_item[VIEW_All_List][GL_Joyn]); + } + } + } - return FALSE; + return TRUE; } - /** * The function is called to create Setting view widgets */ static bool setting_main_app_create(void *data) { SETTING_TRACE_BEGIN; - //fprintf(stderr, "[TIME] 3. it taked %d msec from main to setting_main_app_create \n", appcore_measure_time()); - //SETTING_TRACE("[TIME] 3. it taked %d msec from main to setting_main_app_create ", appcore_measure_time()); - //appcore_measure_start(); - setting_main_appdata *ad = data; + LAUNCH_SETTING_IN(); + SETTING_TRACE_DEBUG("[TIME] 3. it taked %d msec from main to setting_main_app_create ", appcore_measure_time()); + appcore_measure_start(); - // registering sigterm - if (signal(SIGTERM, termination_handler) == SIG_IGN) - { + //elm_config_preferred_engine_set("opengl_x11"); + ug_create_cb(setting_ug_create_cb, NULL); + +#ifdef TIZEN_BUILD_TARGET + SETTING_TRACE_DEBUG(" ------------------------> TIZEN_BUILD_TARGET is ON"); +#endif + +#ifdef TIZEN_BUILD_EMULATOR + SETTING_TRACE_DEBUG(" ------------------------> TIZEN_BUILD_EMULATOR is ON"); +#endif + +#if SUPPORT_DRI + setenv("EVAS_DRI_SWAPBUF", "1", 1); +#endif + + setting_main_appdata *ad = data; + // regitering sigterm + if (signal(SIGTERM, termination_handler) == SIG_IGN) { signal(SIGTERM, SIG_IGN); } + #if 1 + bundle* b = ad->b; + app_control_h svc; + app_control_create(&svc); + //app_control_create_request(b, &svc); + //ad->is_searchmode = setting_main_sfinder_handler(svc, ad, NULL); + app_control_destroy(svc); + svc = NULL; + #endif + //--------------------------------------------------------------------------------------------- ad->data_roaming_popup = NULL; + elm_app_base_scale_set(2.4); + /* create window */ ad->win_main = setting_main_create_win(SETTING_PACKAGE); setting_retvm_if(ad->win_main == NULL, SETTING_RETURN_FAIL, "window is null"); - evas_object_show(ad->win_main); UG_INIT_EFL(ad->win_main, UG_OPT_INDICATOR_ENABLE); ad->evas = evas_object_evas_get(ad->win_main); ad->current_rotation = elm_win_rotation_get(ad->win_main); - SETTING_TRACE("ad->current_rotation:%d",ad->current_rotation); + SETTING_TRACE_DEBUG("ad->current_rotation:%d",ad->current_rotation); if (elm_win_wm_rotation_supported_get(ad->win_main)) { int rots[4] = { 0, 90, 180, 270 }; // rotation value that app may want - elm_win_wm_rotation_available_rotations_set(ad->win_main, &rots, 4); + elm_win_wm_rotation_available_rotations_set(ad->win_main, rots, 4); } evas_object_smart_callback_add(ad->win_main, "wm,rotation,changed", _rot_changed_cb, ad); /* load config file */ int cfg_operation_ret = setting_cfg_init(); //PLUGIN_INIT(ad); - + //if ( ! ad->is_searchmode) + //{ elm_theme_extension_add(NULL, SETTING_THEME_EDJ_NAME); -#if SUPPORT_LCD_TIMEOUT_KEEPING - /* to keep according with each other */ - int origin_backlight_value; - if (0 != - vconf_get_int(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, - &origin_backlight_value)) { - /* error handle.. */ - vconf_set_int(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, 30); - origin_backlight_value = 30; - } - /* to set intial value */ - vconf_set_int(VCONFKEY_LCD_TIMEOUT_NORMAL_BACKUP, - origin_backlight_value); - - /* Firstly, Setting is running in foreground, LCD_TIMEOUT must be 600s(/10m) */ - vconf_set_int(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, 600); -#endif + elm_theme_extension_add(NULL, SETTING_NEWUX_EDJ_NAME); + elm_theme_extension_add(NULL, SETTING_GENLIST_EDJ_NAME); + elm_theme_extension_add(NULL, SETTING_NEW_GENLIST_EDJ_NAME); + elm_theme_extension_add(NULL, SETTING_SLIDER_EDJ_NAME); + //} elm_win_indicator_mode_set(ad->win_main, ELM_WIN_INDICATOR_SHOW); + elm_win_indicator_opacity_set(ad->win_main, ELM_WIN_INDICATOR_OPAQUE); + + evas_object_show(ad->win_main); + g_main_ad = ad; setting_view_create(&setting_view_main, ad); - setting_view_node_table_register(&setting_view_main, NULL); - setting_view_node_table_register(&setting_view_more_menu, &setting_view_main); /* error handling */ if (Cfg_Error_Type_Sucess != cfg_operation_ret) { @@ -861,40 +1171,49 @@ static bool setting_main_app_create(void *data) setting_create_popup_without_btn(ad, ad->win_main, NULL, (char *)notifyStr, NULL, 10, FALSE, FALSE); return SETTING_RETURN_FAIL; } - //fprintf(stderr, "[TIME] 4. setting_main_app_create taked %d msec \n", appcore_measure_time()); - //SETTING_TRACE("[TIME] 4. setting_main_app_create taked %d msec ", appcore_measure_time()); - //appcore_measure_start(); - // set default local automatically - set_defaultLangICU(); + + ad->theme_table = _changeable_colors_set(); + + SETTING_TRACE_DEBUG("[TIME] 4. setting_main_app_create taked %d msec ", appcore_measure_time()); + appcore_measure_start(); + LAUNCH_SETTING_OUT(); return true; } /** * The function is called when Setting is terminated */ -static int setting_main_app_terminate(void *data) +static void setting_main_app_terminate(void *data) { SETTING_TRACE_BEGIN; setting_main_appdata *ad = data; - //vconf_set_bool (VCONFKEY_SETAPPL_ROTATE_HOLD_BOOL, FALSE); + if (ad->account_subscribe_handle) + { + (void)account_unsubscribe_notification(ad->account_subscribe_handle); + } + vconf_set_bool (VCONFKEY_SETAPPL_ROTATE_HOLD_BOOL, FALSE); + evas_object_smart_callback_del(ad->win_main, "wm,rotation,changed", _rot_changed_cb); + + (void)preference_set_int(PREFKEY_VIEW_TYPE, ad->list_type); + (void)preference_set_int(PREFKEY_TAB_VIEW_TAB, ad->view_type); + + + _changeable_colors_free(ad->theme_table); + + //PLUGIN_FINI; setting_cfg_exit(); clear_system_service_data(); ug_destroy_all(); ad->ug = NULL; - SETTING_TRACE("%s*** SETTING APPLICATION CLOSED ***%s", - SETTING_FONT_BGREEN, SETTING_FONT_BLACK); + ug_create_cb(NULL , NULL); + SETTING_TRACE_DEBUG("%s*** SETTING APPLICATION CLOSED ***%s", SETTING_FONT_BGREEN, SETTING_FONT_BLACK); DEREGISTER_VCONFS(ad->listened_list); - if (sensor_motion_doubletap_unset_cb(ad->sf_handle) != SENSOR_ERROR_NONE) { - SETTING_TRACE("sensor_motion_doubletap_unset_cb fail to gather data"); - } - sensor_stop(ad->sf_handle, SENSOR_MOTION_DOUBLETAP); - sensor_destroy(ad->sf_handle); #if SUPPORT_LCD_TIMEOUT_KEEPING /* once Setting is not running, LCD_TIMEOUT must be backuped */ @@ -902,16 +1221,22 @@ static int setting_main_app_terminate(void *data) vconf_get_int(VCONFKEY_LCD_TIMEOUT_NORMAL_BACKUP, &back_value); vconf_set_int(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, back_value); #endif - setting_view_destroy(&setting_view_more_menu, ad); setting_view_destroy(&setting_view_main, ad); - SETTING_TRACE("!!! After setting_view_destroy"); + + SETTING_TRACE_DEBUG("!!! After setting_view_destroy"); if (ad->win_main) { evas_object_del(ad->win_main); ad->win_main = NULL; } + if (ad->b) + { + bundle_free(ad->b); + ad->b = NULL; + } + SETTING_TRACE_END; - return 0; + return; } /** @@ -921,10 +1246,10 @@ static void setting_main_app_pause(void *data) { SETTING_TRACE_BEGIN; setting_main_appdata *ad = data; - - ad->bAppPause = EINA_TRUE; if (ad->ug) + { ug_pause(); + } #if SUPPORT_LCD_TIMEOUT_KEEPING /* once Setting is running in background, LCD_TIMEOUT must be backuped */ @@ -933,8 +1258,6 @@ static void setting_main_app_pause(void *data) vconf_set_int(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, back_value); #endif - sensor_stop(ad->sf_handle, SENSOR_MOTION_DOUBLETAP); - } /** @@ -945,160 +1268,266 @@ static void setting_main_app_resume(void *data) SETTING_TRACE_BEGIN; setting_main_appdata *ad = data; - if (sensor_start(ad->sf_handle, SENSOR_MOTION_DOUBLETAP) != SENSOR_ERROR_NONE) { - SETTING_TRACE_ERROR("sf_start fail"); - } - - if (ad->ug) - ug_resume(); - #if SUPPORT_LCD_TIMEOUT_KEEPING /* once Setting is running in foreground, LCD_TIMEOUT must be reset to 600 */ vconf_set_int(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, 600); #endif + _rot_changed_cb(ad, ad->win_main, NULL);//to fix P131121-02103 + + if(ad->is_searchmode%10 == Cfg_Item_AppLauncher_Node) { + // app-launching exit + elm_exit(); + } - // update main genlist in resuming app. - ad->bAppPause = EINA_FALSE; - if(!ad->ug) { // top-level view is not on UG + if(!(ad->isInUGMode && ad->ug)) { // top-level view is not on UG SETTING_TRACE("update main genlist in resuming app without UG"); - setting_update_gl_item(ad); // update genlist sub-texts + Eina_Bool is_freezed = evas_object_freeze_events_get(ad->navibar_main); + SETTING_TRACE_DEBUG("is_freezed : %d", is_freezed); + if(is_freezed) + { + evas_object_freeze_events_set(ad->navibar_main, EINA_FALSE); + } + + // update personal mode toggle + Setting_GenGroupItem_Data *item_to_update; + int status = 0; + vconf_get_bool(VCONFKEY_SETAPPL_PERSONAL_MODE_STATUS_BOOL, &status); + int i; + for (i = VIEW_All_List; i < VIEW_Max; i++) + { + item_to_update = ad->gl_data_item[i][GL_PersonalPage]; + setting_force_update_gl_item_chk_status(item_to_update, status); + } + } else if (ad->ug) { + ug_resume(); } } +static Cfg_Item_Type setting_main_sfinder_handler(app_control_h service, void* data, int (*func)(void* d1)) +{ + SETTING_TRACE_BEGIN; + setting_main_appdata *ad = data; + Cfg_Item_Type ret_code = Cfg_Item_Node_Error; + + // s finder code + if (service) { + char* uri = NULL; + + char* type = NULL; + char* infostr = NULL; + char* viewname = NULL; + char* fieldname = NULL; + char* title = NULL; + char* check_value = NULL; + + //int ret_action = -1; + int ret = app_control_get_uri (service, &uri); + if (APP_CONTROL_ERROR_NONE == ret && uri && !safeStrCmp(uri, S_FINDER_SETTING_STR)) { + + app_control_get_extra_data(service, "type", &type); + app_control_get_extra_data(service, "infostr", &infostr); + app_control_get_extra_data(service, "viewname", &viewname); + app_control_get_extra_data(service, "fieldname", &fieldname); + app_control_get_extra_data(service, "title", &title); + app_control_get_extra_data(service, "s_finder_setting_check_value_set", &check_value); + + SETTING_TRACE("-------------------------------------"); + SETTING_TRACE("S-finder launched org.tizen.setting : %s", uri); + SETTING_TRACE("title %s", title); + SETTING_TRACE("type %s", type); + SETTING_TRACE("infostr %s", infostr); + SETTING_TRACE("viewname %s", viewname); + SETTING_TRACE("fieldname %s", fieldname); + SETTING_TRACE("s_finder_setting_check_value_set %s", check_value); + SETTING_TRACE("-------------------------------------"); + + ret_code = setting_search_type(type); + + ListItemObject* plistitem = calloc(1, sizeof(ListItemObject)); + + if (title) { + plistitem->title = strdup(title); + plistitem->title2 = strdup(title); + } + if (type) + plistitem->type = strdup(type); + if (infostr) + plistitem->infostr = strdup(infostr); + if (viewname) + plistitem->viewname = strdup(viewname); + if (fieldname) + plistitem->fieldname = strdup(fieldname); + if (check_value) + plistitem->check_value_set = strdup(check_value); + + plistitem->data = ad; + + if (func) { + func(plistitem); + + // toggle handler + // switch + int toggle_state = -1; + if(!safeStrCmp(check_value, "1")) { + toggle_state = 1; + } else if(!safeStrCmp(check_value, "0")) { + toggle_state = 0; + } + if(toggle_state >= 0) + { + Setting_Cfg_Node_T* pnode = get_cfg_node_by_keystr(_(plistitem->title2)); + if (pnode && pnode->tfunc && pnode->tfunc->set_item_state) { + pnode->tfunc->set_item_state(toggle_state, plistitem, ad); + SETTING_TRACE("OOOOOOOOOO CALL set_item_state from tfunc"); + } else if ( !pnode && plistitem->viewname) { + // if get_cfg_node_by_keystr returns NULL, search for UG's keyword + int ret = setting_search_set_module_item_state(plistitem->title2, plistitem->viewname, toggle_state, NULL); + SETTING_TRACE("---------------------------------------"); + SETTING_TRACE(" >>> ret : %d, state : %d <<< ", ret, toggle_state); + SETTING_TRACE("---------------------------------------"); + } + } + } + // free plistitem + FREE(plistitem); + } else { + // if svc == 0, return the previous status + ret_code = ad->is_searchmode; + SETTING_TRACE(" HERE !!!! >>>> previous ad->is_searchmode = %d ", ad->is_searchmode); + } + FREE(title); + FREE(type); + FREE(infostr); + FREE(viewname); + FREE(fieldname); + FREE(uri); + } else { + // if svc == 0, return the previous status + ret_code = ad->is_searchmode; + SETTING_TRACE(" >>>> previous ad->is_searchmode = %d ", ad->is_searchmode); + } + + return ret_code; +} + /** * The function is called by app-fwk after app_create. It always do the process which cost much time. */ -static void setting_main_app_reset(service_h service, void *data) +static void setting_main_app_reset(app_control_h service, void *data) { SETTING_TRACE_BEGIN; setting_main_appdata *ad = data; - int value = 0; - vconf_get_bool (VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, &value); - SETTING_TRACE("value:%d", value); - if (value) //rotation function is not blocked + if (is_searchmode_app(ad->is_searchmode)) { - SETTING_TRACE("Rotation function is on, it is necessary to adjust the device orientation"); - //int mode = APP_DEVICE_ORIENTATION_0; - //mode = app_get_device_orientation(); - //elm_win_rotation_with_resize_set(ad->win_main, mode); + evas_object_hide(ad->view_layout); + } else { + evas_object_show(ad->view_layout); } - vconf_callback_fn cb = NULL; cb = setting_int_vconf_change_cb; REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_BT_STATUS, cb, data); REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_WIFI_STATE, cb, ad); - REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_CALL_STATE, cb, ad); + //REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_MOBILE_HOTSPOT_MODE, cb, ad); + //REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_CALL_STATE, cb, ad); - //do need to disable 'Brightness' menu,just disable sub-items in 'Brightness' menu - //REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, cb, ad); REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT, cb, data); + REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, cb, data); + REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, cb, data); + REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_SYSMAN_BATTERY_CAPACITY, cb, data); + //REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_ALLSHARE_STATUS, cb, data); + cb = setting_string_vconf_change_cb; REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_WIFI_CONNECTED_AP_NAME, cb, ad); + REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_SETAPPL_MOST_RECENTLY_SETTING, cb, ad); + REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_SETAPPL_SCREENMODE_SELNAME, cb, ad); + REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_BGSET, cb, ad); + REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_IDLE_LOCK_BGSET, cb, ad); cb = setting_other_vconf_change_cb; REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_SETAPPL_USB_MODE_INT, cb, ad); - REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_SETAPPL_WIDGET_THEME_STR, cb, ad); - - REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_TELEPHONY_FLIGHT_MODE, cb, ad); REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, cb, ad); - REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_NFC_STATE, cb, ad); + REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_TELEPHONY_FLIGHT_MODE, cb, ad); +#if SUPPORT_NETWORK_RESTRICTION + REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_SETAPPL_NETWORK_RESTRICT_MODE, cb, ad); +#endif + //REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_NFC_STATE, cb, ad); + //REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_NFC_SBEAM, cb, ad); + //REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_SETAPPL_DM_DRIVING_MODE, cb, ad); +#if SUPPORT_POWERSAVING + REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_SETAPPL_PWRSV_SYSMODE_STATUS, cb, ad); +#endif + //REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_QUICKSETTING_MULTIWINDOW_ENABLED, cb, ad); - if (ad->win_main) - elm_win_activate(ad->win_main); + REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_SETAPPL_WALLPAPER_APPLY_COLORTHEME_BOOL, cb, ad); + +#if SUPPORT_BLOCKINGMODE + REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_SETAPPL_BLOCKINGMODE_BLOCKINGMODE, cb, ad); +#endif +#if SUPPORT_GUESTMODE + REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_SETAPPL_GM_GUEST_MODE, cb, ad); +#endif - ecore_idler_add(setting_on_idle_lazy, ad); + REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, cb, ad); + REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, cb, ad); +#if SUPPORT_PERSONALPAGE + REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_SETAPPL_PERSONAL_MODE_STATUS_BOOL, cb, ad); + REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_SETAPPL_PERSONAL_MODE_UNLOCK_METHOD_INT, cb, ad); +#endif + REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_SETAPPL_ACCESSIBILITY_TTS, cb, ad); +#ifndef BINARY_RELEASE_TYPE_ENG + REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_SETAPPL_DEVELOPER_OPTION_STATE, cb, ad); +#endif + REGISTER_VCONF_NODE(ad->listened_list, VCONFKEY_SETAPPL_ENHANCED_TOUCH, cb, ad); + //---------------------------------------------------------------------------------- + //---------------------------------------------------------------------------------- + + if (ad->win_main) { + elm_win_activate(ad->win_main); + } int flight_mode = 0; vconf_get_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, &flight_mode); if (flight_mode) { if (ad->data_network) setting_disable_genlist_item(ad->data_network->item); + if (ad->data_powersaving) setting_disable_genlist_item(ad->data_powersaving->item); } - int call_status = VCONFKEY_CALL_OFF; - vconf_get_int(VCONFKEY_CALL_STATE, &call_status); - if (VCONFKEY_CALL_OFF != call_status) - { - if (ad->data_network) setting_disable_genlist_item(ad->data_network->item); - if (ad->data_wifi) setting_disable_genlist_item(ad->data_wifi->item); - //if (ad->data_mobileApp) setting_disable_genlist_item(ad->data_mobileApp->item); - } - /* for jumping view */ - service_get_extra_data(service, "view_to_jump", &(ad->view_to_jump)); - if(ad->view_to_jump) - { - SETTING_TRACE_DEBUG("view to jump is %s", ad->view_to_jump); - /* Jumping */ - if(!safeStrCmp(ad->view_to_jump, KeyStr_Sounds)) - { + // account - Joyn + //account_subscribe_h account_subscribe_handle = NULL; - SETTING_TRACE_DEBUG("Kill launched ug."); - if(ad->isInUGMode == TRUE && (safeStrCmp(ad->cur_loaded_ug, "setting-profile-efl") != 0)) - { - ug_destroy_all(); - ad->ug = NULL; - } - if(ad->isInUGMode == TRUE && (safeStrCmp(ad->cur_loaded_ug, "setting-profile-efl") == 0)) - { - return; - } + //ad->is_searchmode = setting_main_sfinder_handler(service, ad, setting_search_move_action); - struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs)); - setting_retm_if(!cbs, "calloc failed"); - cbs->layout_cb = setting_main_layout_ug_cb; - cbs->result_cb = setting_main_result_ug_cb; - cbs->destroy_cb = setting_main_destroy_ug_cb; - cbs->priv = (void *)ad; - - SETTING_TRACE_DEBUG("call setting-profile-efl ug"); - ad->ug = ug_create(NULL, "setting-profile-efl", UG_MODE_FULLVIEW, 0, cbs); - if (ad->ug) { - ad->isInUGMode = TRUE; - memset(ad->cur_loaded_ug, 0x00, MAX_DISPLAY_NAME_LEN_ON_UI); - safeCopyStr(ad->cur_loaded_ug, "setting-profile-efl", MAX_DISPLAY_NAME_LEN_ON_UI); - } else { - evas_object_show(ad->ly_main); - - SETTING_TRACE_ERROR("errno:%d", errno); - setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG); - } - if (cbs) - FREE(cbs); - cbs = NULL; - ad->view_to_jump = NULL; - } - } - else + if (! is_searchmode_app(ad->is_searchmode)) { - SETTING_TRACE_DEBUG("No need to jump view. Draw main."); + if (ACCOUNT_ERROR_NONE == account_subscribe_create(&(ad->account_subscribe_handle)) + && ad->account_subscribe_handle) + { + (void)account_subscribe_notification(ad->account_subscribe_handle, ___account_subscribe_cb, ad); + } } } +EXPORT_PUBLIC int main(int argc, char *argv[]) { int r = 0; setting_main_appdata ad; - elm_init(argc, argv); -#if SUPPORT_GL_ENGINE - // opengl_x11 or software_x11 - elm_config_preferred_engine_set("software_x11"); -#endif + SETTING_TRACE_DEBUG("[TIME] 1. aul_launch -> main :: Setting main : %d msec ", appcore_measure_time_from("APP_START_TIME")); + appcore_measure_start(); - //fprintf(stderr, "[TIME] 1. aul_launch -> main :: Setting main : %d msec \n", appcore_measure_time_from("APP_START_TIME")); - //SETTING_TRACE("[TIME] 1. aul_launch -> main :: Setting main : %d msec ", appcore_measure_time_from("APP_START_TIME")); - //appcore_measure_start(); app_event_callback_s ops = { .create = setting_main_app_create, .terminate = setting_main_app_terminate, .pause = setting_main_app_pause, .resume = setting_main_app_resume, - .service = setting_main_app_reset, + .app_control = setting_main_app_reset, .low_battery = setting_main_low_battery_cb, .language_changed = setting_main_lang_changed_cb, .region_format_changed = setting_main_region_changed_cb, @@ -1108,9 +1537,12 @@ int main(int argc, char *argv[]) memset(&ad, 0x00, sizeof(setting_main_appdata)); - //fprintf(stderr, "[TIME] 2. main : %d msec \n", appcore_measure_time()); - //SETTING_TRACE("[TIME] 2. main : %d msec ", appcore_measure_time()); - //appcore_measure_start(); + bundle* b = NULL; + b = bundle_import_from_argv(argc, argv); + ad.b = b; + + SETTING_TRACE_DEBUG("[TIME] 2. main : %d msec ", appcore_measure_time()); + appcore_measure_start(); r = app_efl_main(&argc, &argv, &ops, &ad); retv_if(r == -1, -1);