tizen 2.3 release
[apps/home/settings.git] / src / setting.c
index 31acef4..21b5137 100755 (executable)
 /*
  * 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 <mj2004.park@samsung.com>
+ *
+ * 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 <setting.h>
 #include <app.h>
+#include <sound_manager.h>
 
 #include <appcore-common.h>
 #include <Ecore_X.h>
 #include <sensor.h>
 #include <aul.h>
-#include "setting-common-plugin.h"
 #include "setting-main.h"
+
+
+#include <setting-cfg.h>
+
+#include <setting-common-search.h>
 #include <elm_object.h>
 #include <appsvc.h>
-#include <EWebKit2.h>
-#include <nfc.h>
+//#include <nfc.h>
 #include <signal.h>
-
-extern void setting_update_gl_item(void* data);
+#include <system_settings.h>
 
 #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 <app_service_private.h>. 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);