tizen 2.3 release
[apps/home/settings.git] / src / setting-main.c
index 2ec83c4..c76736a 100755 (executable)
@@ -1,42 +1,65 @@
 /*
  * setting
- * Copyright (c) 2012 Samsung Electronics Co., Ltd.
  *
- * Licensed under the Flora License, Version 1.1 (the License);
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
+ *
+ * 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.
+ *
+ */
+
+/**
+ * @file setting-cis-main2.c
+ * @brief implement first view of Setting application
+ *
+ * first view has tabbar and Gengrid
  */
-#include <tapi_common.h>
-#include <aul.h>
-#include <ail.h>
-#include <time.h>
+#define _GNU_SOURCE
+
 #include <setting-main.h>
-#include <wifi.h>
-#include <tethering.h>
-#include <bluetooth.h>
-#include <nfc.h>
+#include <setting-handler.h>
+#include <setting-helper.h>
 
-#include <pkgmgr-info.h>
+#include <setting-common-sound.h>
+#include <setting-common-alarmmgr.h>
 
-#include <setting-common-plugin.h>
+#include <sqlite3.h>
 
-#define PLUGIN_PREFIX "/opt"
+/**
+ * [UI] search bar
+ * plain list item style
+ */
+static char *s_grid_items[] = {
+       // 1
+       KeyStr_FlightMode,
+       KeyStr_HighTouchSens,
+       KeyStr_MultiWindowMode,
 
-typedef struct _DrawAppInfo
-{
-       int ncount;
-       //------------------------------------
-       void (*draw_app)(void* arg, char* name, char* pkgname);
-       void* data;
-} DrawAppInfo;
+       KeyStr_Storage,
+       KeyStr_Sounds,
+       KeyStr_Display,
+
+       KeyStr_Wallpaper,
+       KeyStr_LockedScreen,
+       KeyStr_Noti_Panel,
+
+       // 2
+       KeyStr_Motions,
+//     KeyStr_SafetyAssistance,
+       KeyStr_Powersaving,
+
+};
 
 static int setting_main_create(void *cb);
 static int setting_main_destroy(void *cb);
@@ -50,2132 +73,634 @@ setting_view setting_view_main = {
        .cleanup = setting_main_cleanup,
 };
 
-setting_main_appdata *g_main_ad = NULL;
-
-static void setting_main_tapi_event_cb(TapiHandle *handle, int result, void *data, void *user_data);
-static int setting_main_refresh(void *data);
-static void __alternate_flight_mode(Evas_Object *check);
-static void setting_main_click_Gendial_list_flight_mode_cb(void *data,
-                                                          Evas_Object *obj,
-                                                          void *event_info);
-static void __alternate_flight_mode(Evas_Object *check);
 
-void setting_main_click_list_item_ug_cb(void *data, Evas_Object *obj, char *ug_to_load, service_h svc, struct ug_cbs *cbs);
+//////////////////////////////////////////////////////////////////////////////////////////////
 
-static void
-__setting_chk_changed(void *data, Evas_Object *obj, void *event_info)
+void __all_gl_realized_cb(void *data, Evas_Object *obj, void *event_info)
 {
-       /* SETTING_TRACE_BEGIN; */
-       retm_if(data == NULL, "Data parameter is NULL");
-       Setting_GenGroupItem_Data *list_item =
-           (Setting_GenGroupItem_Data *) data;
-       /* SETTING_TRACE("process item [%s]", _(list_item->keyStr)); */
-       list_item->chk_status = elm_check_state_get(obj);
-
-       Eina_List *check_list = g_main_ad->item_check_list;
-       Setting_GenGroupItem_Data *item = NULL;
-       bool isFoundNotSelSomeone = FALSE;
-       bool isFoundSelSomeone = FALSE;
-       while (check_list) {
-               item = (Setting_GenGroupItem_Data *)
-                   eina_list_data_get(check_list);
-               if (NULL == item) {
-                       continue;
-               }
-               if (!(item->chk_status)) {
-                       isFoundNotSelSomeone = TRUE;
-               } else {
-                       isFoundSelSomeone = TRUE;
-               }
-               if (isFoundNotSelSomeone && isFoundSelSomeone) {
-                       break;
-               }
-               check_list = eina_list_next(check_list);
+       //SETTING_TRACE_BEGIN;
+       __gl_realized_cb(data, obj, event_info);
+       setting_retm_if(event_info == NULL, "invalid parameter: event_info is NULL");
+       Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+       //elm_object_item_signal_emit(item, "elm,state,default", "elm");//to cancel the 2depth color
+       Setting_GenGroupItem_Data *item_data = elm_object_item_data_get(item);
+       if(!item_data)
+       {
+               return;
        }
 
-       if (isFoundNotSelSomeone) {
-               g_main_ad->check_all_item->chk_status = 0;      /* for update new state */
-       } else {
-               g_main_ad->check_all_item->chk_status = 1;      /* for update new state */
-       }
-       elm_object_item_data_set(g_main_ad->check_all_item->item, g_main_ad->check_all_item);
-       elm_genlist_item_update(g_main_ad->check_all_item->item);
-
-       if (isFoundSelSomeone) {
-               /* SETTING_TRACE("Set it to active"); */
-               /*
-               elm_object_item_disabled_set(elm_toolbar_last_item_get
-                                                (g_main_ad->controllbar_all_check),
-                                                EINA_FALSE);*/
+       if (item_data->isPlaying) {
+               elm_object_item_signal_emit(item_data->item, "elm,state,expanded", "elm");
        }
 }
 
-static void __setting_list_changed(void *data, Evas_Object *obj,
-                                  void *event_info)
+static void __all_gl_group_clicked_cb(void *data, Evas_Object *obj, void *event_info)
 {
-
        SETTING_TRACE_BEGIN;
        /* error check */
-       retm_if(event_info == NULL, "Invalid argument: event info is NULL");
-
+       //setting_retm_if(data == NULL, "Data parameter is NULL");
+       int view_type = (int)data;
+       setting_main_appdata *ad = g_main_ad;
        Elm_Object_Item *item = (Elm_Object_Item *) event_info;
        elm_genlist_item_selected_set(item, 0);
-       Setting_GenGroupItem_Data *list_item =
-           (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
-
-       int old_status = elm_check_state_get(list_item->eo_check);
-       /* new status */
-       list_item->chk_status = !old_status;
-       elm_check_state_set(list_item->eo_check, list_item->chk_status);
-
-       Eina_List *check_list = g_main_ad->item_check_list;
-       Setting_GenGroupItem_Data *group_item = NULL;
-       bool isFoundNotSelSomeone = FALSE;
-       bool isFoundSelSomeone = FALSE;
-       while (check_list) {
-               group_item = (Setting_GenGroupItem_Data *)
-                   eina_list_data_get(check_list);
-               if (NULL == group_item) {
-                       continue;
-               }
-               if (!(group_item->chk_status)) {
-                       isFoundNotSelSomeone = TRUE;
-                       /* break; */
-               } else {
-                       isFoundSelSomeone = TRUE;
-               }
-               if (isFoundNotSelSomeone && isFoundSelSomeone) {
-                       break;
-               }
+       Setting_GenGroupItem_Data *data_parentItem = (Setting_GenGroupItem_Data *)elm_object_item_data_get(item);
+       setting_retm_if(data_parentItem == NULL, "data_parentItem is NULL");
 
-               check_list = eina_list_next(check_list);
-       }
 
-       if (isFoundNotSelSomeone) {
-               g_main_ad->check_all_item->chk_status = 0;      /* for update new state */
-       } else {
-               g_main_ad->check_all_item->chk_status = 1;      /* for update new state */
-       }
-       elm_object_item_data_set(g_main_ad->check_all_item->item, g_main_ad->check_all_item);
-       elm_genlist_item_update(g_main_ad->check_all_item->item);
-
-       if (isFoundSelSomeone) {
-               /* SETTING_TRACE("Set it to active"); */
-               /*
-               elm_object_item_disabled_set(elm_toolbar_last_item_get
-                                                (g_main_ad->controllbar_all_check),
-                                                EINA_FALSE);*/
-       }
+       Elm_Object_Item *start_item = NULL;
+       Elm_Object_Item *end_item = NULL;
+       Elm_Object_Item *it;
 
-}
+       data_parentItem->isPlaying = !data_parentItem->isPlaying;
+       int hide_flag = !(data_parentItem->isPlaying);
+       SETTING_TRACE("----------------------> expand list:%s, hide_flag:%d", _(data_parentItem->keyStr), hide_flag);
 
-static void
-__setting_chk_sel_all_changed(void *data, Evas_Object *obj, void *event_info)
-{
-       /* SETTING_TRACE_BEGIN; */
-       retm_if(data == NULL, "Data parameter is NULL");
-       Setting_GenGroupItem_Data *list_item =
-           (Setting_GenGroupItem_Data *) data;
-       bool is_all_checked = elm_check_state_get(obj);
-       list_item->chk_status = is_all_checked; /* for update new state */
-       /* SETTING_TRACE("is_all_checked:%d", is_all_checked); */
-
-       Eina_List *check_list = g_main_ad->item_check_list;
-
-       while (check_list) {
-               list_item = (Setting_GenGroupItem_Data *)
-                   eina_list_data_get(check_list);
-               if (NULL == list_item) {
-                       continue;
-               }
-               list_item->chk_status = is_all_checked;
-               elm_object_item_data_set(list_item->item, list_item);
-               elm_genlist_item_update(list_item->item);
-               check_list = eina_list_next(check_list);
+       //to controll the arrow
+       if (hide_flag)
+               elm_object_item_signal_emit(data_parentItem->item, "elm,state,contracted", "elm");
+       else
+               elm_object_item_signal_emit(data_parentItem->item, "elm,state,expanded", "elm");
+
+       int group_idx = data_parentItem->chk_status;
+
+       SETTING_TRACE("view_type:%d, group_idx:%d", view_type, group_idx);
+       start_item = ad->gl_data_item[view_type][group_idx]->item;
+       SETTING_TRACE("START:%s", _(ad->gl_data_item[view_type][group_idx]->keyStr));
+       if(group_idx != GL_Group_Apps)
+       {
+               end_item = ad->gl_data_item[view_type][group_idx+1]->item;
+               SETTING_TRACE("END:%s", _(ad->gl_data_item[view_type][group_idx+1]->keyStr));
        }
-       if (is_all_checked) {
-               /*
-               elm_object_item_disabled_set(elm_toolbar_last_item_get
-                                                (g_main_ad->controllbar_all_check),
-                                                EINA_FALSE);*/
+
+       for (it = elm_genlist_item_next_get(start_item);
+            it && it != end_item;it = elm_genlist_item_next_get(it))
+       {
+               Setting_GenGroupItem_Data *data_parentItem = (Setting_GenGroupItem_Data *)elm_object_item_data_get(it);
+               if(data_parentItem && data_parentItem->keyStr) SETTING_TRACE("data_parentItem:%s", data_parentItem->keyStr);
+               elm_genlist_item_hide_set(it, hide_flag);
+               if(!hide_flag && group_idx == GL_Group_Apps)
+               {
+                       elm_genlist_item_bring_in(it, ELM_GENLIST_ITEM_SCROLLTO_IN);
+               }
        }
 }
 
-static void __setting_list_sel_all_changed(void *data, Evas_Object *obj,
-                                          void *event_info)
+
+Evas_Object *_view_list_geter(void *data)
 {
-       /* error check */
        SETTING_TRACE_BEGIN;
-       SETTING_TRACE();
-       retm_if(event_info == NULL, "Invalid argument: event info is NULL");
-       Elm_Object_Item *item = (Elm_Object_Item *) event_info;
-       elm_genlist_item_selected_set(item, 0);
-       Setting_GenGroupItem_Data *list_item =
-           (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
-
-       int old_status = elm_check_state_get(list_item->eo_check);
-       /* new status */
-       int is_all_checked = list_item->chk_status = !old_status;
-       elm_check_state_set(list_item->eo_check, list_item->chk_status);
-
-       Eina_List *check_list = g_main_ad->item_check_list;
+       retvm_if(data == NULL, NULL, "Invalid argument: data is NULL");
+       setting_main_appdata *ad = (setting_main_appdata *)data;
+       SETTING_TRACE("ad->sc_gl[SC_All]:%p", ad->sc_gl[SC_All_List]);
 
-       while (check_list) {
-               list_item = (Setting_GenGroupItem_Data *)
-                   eina_list_data_get(check_list);
-               if (NULL == list_item) {
-                       continue;
-               }
-               list_item->chk_status = is_all_checked;
-               /* elm_check_state_set(list_item->eo_check, is_all_checked); */
-               elm_object_item_data_set(list_item->item, list_item);
-               elm_genlist_item_update(list_item->item);
-               check_list = eina_list_next(check_list);
-       }
-       if (is_all_checked) {
-               /*
-               elm_object_item_disabled_set(elm_toolbar_last_item_get
-                                                (g_main_ad->controllbar_all_check),
-                                                EINA_FALSE);*/
+       if (ad->sc_gl[SC_All_List])
+       {
+               evas_object_show(ad->sc_gl[SC_All_List]);
+               return ad->sc_gl[SC_All_List];
        }
 
-}
+       Evas_Object *genlist = elm_genlist_add(ad->win_main);
+       retvm_if(genlist == NULL, NULL, "Cannot set genlist object as contento of layout");
 
-static void __load_check_list(void *data, Evas_Object **genlist,
-                             char *menuNameKey)
-{
-       SETTING_TRACE_BEGIN;
-       setting_main_appdata *ad = (setting_main_appdata *) data;
+       ad->sc_gl[SC_All_List] = genlist;
+       elm_genlist_realization_mode_set(genlist, EINA_TRUE);
+       elm_object_style_set(genlist, "dialogue");
+       elm_genlist_clear(genlist);     /* first to clear list */
+       elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);       /* resolve abnormal height issue */
+       evas_object_smart_callback_add(genlist, "realized", __all_gl_realized_cb, ad);
+       evas_object_show(genlist);
 
-       bool state = FALSE;
+       Setting_GenGroupItem_Data *item_data = NULL;
+       Elm_Object_Item *item = NULL;
+       int group_dx = GL_Group_QuickSettings;
+       setting_main_genlist_handler_reset(ad);
+       //----------------------------------------------------------------------------------------
+       // 2.category name loop 
+       //----------------------------------------------------------------------------------------
+       int i,j;
        char *keyStr = NULL;
-       Cfg_Item_Position pos = Cfg_Item_Pos_Uninstall;
-       bool isFoundNonSelItem = FALSE;
-       bool isFoundSelSomeoneItem = FALSE;
-
-       int i, j;
        char *icon_path = NULL;
+       char *ug_args = NULL;
 
-       ad->check_all_item =
-           setting_create_Gendial_field_def(ad->gl_sel_all,
-                                            &(ad->itc[GENDIAL_Type_sel_all]),
-                                            __setting_list_sel_all_changed, ad,
-                                            SWALLOW_Type_1CHECK, NULL, NULL,
-                                            state, KeyStr_Select_All, NULL,
-                                            __setting_chk_sel_all_changed);
-       __BACK_POINTER_SET(ad->check_all_item);
-
-       Setting_GenGroupItem_Data *item = NULL;
-       Setting_GenGroupItem_Data *category_item = NULL;
+       char *group_name = NULL;
+       int index = 0;
        for (i = 0; i < setting_cfg_get_category_length(); i++) {
-               if (NULL == menuNameKey) {
-                       /* SETTING_TRACE("load all the items in config file"); */
-               } else
-                   if (safeStrCmp
-                       (setting_cfg_get_category_name(i), menuNameKey)) {
-                       continue;
+               group_name = setting_cfg_get_category_name(i);
+               group_dx++;//from the first
+               item_data = setting_create_Gendial_field_groupitem(
+                                                       genlist,
+                                                       &(ad->itc[GENDIAL_Type_expandable_proc]),
+                                                       NULL,
+                                                       __all_gl_group_clicked_cb,
+                                                       (void *)VIEW_All_List,
+                                                       SWALLOW_Type_INVALID,
+                                                       NULL, // l_icon
+                                                       NULL, // r_icon
+                                                       0,
+                                                       group_name,
+                                                       NULL, // r_icon
+                                                       NULL);
+               if (item_data)
+               {
+                       item_data->isPlaying = TRUE;//expandable ?
+                       item_data->chk_status = group_dx;//keep the group idx
+
+                       ad->gl_data_item[VIEW_All_List][group_dx] = item_data;
+                       __BACK_POINTER_SET(ad->gl_data_item[VIEW_All_List][group_dx]);
                }
-               char *category_name = setting_cfg_get_category_name(i);
-
-               category_item =
-                   setting_create_Gendial_field_group_titleItem(*genlist,
-                                                                &(ad->itc
-                                                                  [GENDIAL_Type_group_item]),
-                                                                NULL,
-                                                                ELM_GENLIST_ITEM_NONE,
-                                                                category_name,
-                                                                NULL);
-               if (category_item) {
-                       for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
-                               keyStr = setting_cfg_get_keyname_idx(i, j);
-                               pos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
-
-                               if (Cfg_Item_Pos_Level1 == pos) {
-                                       state = FALSE;
-                                       isFoundNonSelItem = TRUE;
-                               } else {
-                                       state = TRUE;
-                                       isFoundSelSomeoneItem = TRUE;
-                               }
 
+               index = 0;
+
+
+               //----------------------------------------------------------------------------------------
+               // 2. display each items, following category
+               //----------------------------------------------------------------------------------------
+               // add sub items
+               for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
+                       keyStr = setting_cfg_get_keyname_idx(i, j);
+
+                       ug_args = setting_cfg_get_ug_args_idx(i, j);
                        icon_path = setting_cfg_get_icon_path_idx(i, j);
-                       item =
-                           setting_create_Gendial_field_groupitem(*genlist,
-                                                                  &(ad->itc
-                                                                    [GENDIAL_Type_1text_2icon_2]),
-                                                                  category_item->item,
-                                                                  __setting_list_changed,
-                                                                  ad,
-                                                                  SWALLOW_Type_1CHECKICON,
-                                                                  NULL,
-                                                                  icon_path,
-                                                                  state,
-                                                                  keyStr, NULL,
-                                                                  __setting_chk_changed);
-
-                               ad->item_check_list =
-                                   eina_list_append(ad->item_check_list, item);
+
+                       mainlist_entry* entry =  settinig_drawer_hash_find(ad, keyStr);
+
+                       if (entry)
+                       {
+                               if (entry->type == UG_HANDLE)
+                               {
+                                       if (is_ug_installed_by_ug_args(ug_args))
+                                       {
+                                               item_data = entry->ui_handler(ad, keyStr, icon_path, ug_args, genlist, NULL);
+                                               entry->item_data = item_data;
+                                       }
+                               } else if (entry->type == UI_PROC) {
+                                       item_data = entry->ui_handler(ad, keyStr, icon_path, ug_args, genlist, NULL);
+                                       entry->item_data = item_data;
+                               }
+                       } else {
+                               entry = settinig_drawer_hash_find(ad, "Default");
+                               item_data = entry->ui_handler(ad, keyStr, icon_path, ug_args, genlist, NULL);
+                               entry->item_data = item_data;
                        }
-               } else {
-                       SETTING_TRACE_ERROR("category_item is NULL");
-               }
-       }
 
-       if (ad->check_all_item) {
-               if (isFoundNonSelItem) {
-                       ad->check_all_item->chk_status = 0;     /* for update new state */
-               } else {
-                       ad->check_all_item->chk_status = 1;     /* for update new state */
+                       // dupcated code (REFACTORING)
+                       if (item_data && item_data->item) {
+
+                               set_node_pointer(keyStr, item_data->item);
+                               setting_genlist_item_groupstyle_set(item_data, SETTING_GROUP_STYLE_CENTER);
+                               index++;
+                       }
                }
-               elm_object_item_data_set(ad->check_all_item->item, ad->check_all_item);
-               elm_genlist_item_update(ad->check_all_item->item);
-       } else {
-               SETTING_TRACE_ERROR("ad->check_all_item is NULL");
-       }
 
-       if (isFoundSelSomeoneItem) {
-       /*      elm_object_item_disabled_set(elm_toolbar_last_item_get
-                                                (ad->controllbar_all_check),
-                                                EINA_FALSE);
-                                                */
-       } else {
-       /*
-               elm_object_item_disabled_set(elm_toolbar_last_item_get
-                                                (ad->controllbar_all_check),
-                                                EINA_TRUE);*/
+               //if (item_data)
+                       //SETTING_TRACE("keyStr[%s] is being set to BOTTOM style",_(item_data->keyStr));
+               setting_genlist_item_groupstyle_set(item_data, index==1?SETTING_GROUP_STYLE_NONE : SETTING_GROUP_STYLE_BOTTOM);
        }
-       SETTING_TRACE_END;
+       setting_main_genlist_handler_set(ad, VIEW_All_List);
+       setting_main_genlist_handler_reset(ad);
+       return genlist;
 }
 
-
-static Setting_GenGroupItem_Data * __flightmode_handler(void* data, char* keyStr, char* icon_path, char* ug_name, Evas_Object *genlist)
+static void ___grid_select_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
 {
-       // NOT UG --> it's just UI drawing
+       //SETTING_TRACE_BEGIN;
+       Evas_Object *image = elm_object_part_content_get(obj, "elm.swallow.icon");
+       const char *file;
+       elm_image_file_get(image, &file, NULL);
+       //SETTING_TRACE("file:%s", file);
+       if (!safeStrCmp(IMG_SETTING, file))
+       {
+               return;
+       }
+       setting_dim_evas_object(elm_object_part_content_get(obj, "elm.swallow.icon"), FALSE);
+       elm_object_signal_emit(obj,"SELECTED","elm");
 
-       setting_main_appdata *ad = (setting_main_appdata *)data;
-       int value, err;
-       setting_get_bool_slp_key (BOOL_SLP_SETTING_FLIGHT_MODE, &value, &err);
-
-       /* create flight_mode */
-       ad->data_flight = setting_create_Gendial_field_groupitem(genlist,
-                                                  &(ad->itc[GENDIAL_Type_1text_2icon]),
-                                                  NULL,
-                                                  setting_main_click_Gendial_list_flight_mode_cb,
-                                                  ad,
-                                                  SWALLOW_Type_1ICON_1RADIO,
-                                                  icon_path,
-                                                  NULL,
-                                                  value,
-                                                  keyStr,
-                                                  NULL,
-                                                  setting_main_click_list_flight_mode_cb);
-       __BACK_POINTER_SET(ad->data_flight);
-
-       return ad->data_flight;
+       retm_if(event_info == NULL, "Invalid argument: event info is NULL");
+       retm_if(data == NULL, "Invalid argument: data is NULL");
+       Evas_Event_Mouse_Down *ev = (Evas_Event_Mouse_Down *)event_info;
+       Evas_Point *point_down = data;
+       point_down->x = ev->output.x;
+       point_down->y = ev->output.y;
 }
 
-static Setting_GenGroupItem_Data * __wifi_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
+static void ___grid_release_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
 {
-       setting_main_appdata *ad = (setting_main_appdata *)data;
-       int value, err;
-       setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err);
-
-       //char* pa_wifi = get_pa_Wi_Fi_on_off_str();
-       ad->data_wifi = setting_create_Gendial_field_groupitem(genlist,
-                                                  &(ad->itc[GENDIAL_Type_1text_2icon]),
-                                                  NULL,
-                                                  setting_main_click_list_ex_ug_cb,
-                                                  ug_args,
-                                                  SWALLOW_Type_1ICON_1RADIO,
-                                                  icon_path,
-                                                  NULL,
-                                                  value,
-                                                  keyStr,
-                                                  NULL,
-                                                  setting_main_click_list_wifi_mode_cb);
-       __BACK_POINTER_SET(ad->data_wifi);
-       if(ad->data_wifi)
-               ad->data_wifi->userdata = ad;
-       //G_FREE(pa_wifi);
-
-       return ad->data_wifi;
+       //SETTING_TRACE_BEGIN;
+       setting_undo_dim_evas_object(elm_object_part_content_get(obj, "elm.swallow.icon"), FALSE);
+       elm_object_signal_emit(obj,"UNSELECTED","elm");
 }
 
-static Setting_GenGroupItem_Data * __bluetooth_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
+static void ___grid_mouse_move_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
 {
-       setting_main_appdata *ad = (setting_main_appdata *)data;
-       int value, err;
-       setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err);
-
-       ad->data_bt = setting_create_Gendial_field_groupitem(genlist,
-                                                  &(ad->itc[GENDIAL_Type_1text_2icon]),
-                                                  NULL,
-                                                  setting_main_click_list_ex_ug_cb,
-                                                  ug_args,
-                                                  SWALLOW_Type_1ICON_1RADIO,
-                                                  icon_path,
-                                                  NULL,
-                                                  value,
-                                                  keyStr,
-                                                  NULL,
-                                                  setting_main_click_list_bt_mode_cb);
-       __BACK_POINTER_SET(ad->data_bt);
-       if(ad->data_bt)
-               ad->data_bt->userdata = ad;
-
-       return ad->data_bt;
+       //SETTING_TRACE_BEGIN;
+       retm_if(event_info == NULL, "Invalid argument: event info is NULL");
+       retm_if(data == NULL, "Invalid argument: data is NULL");
+       Evas_Point *point_down = data;
+       Evas_Event_Mouse_Move*ev = (Evas_Event_Mouse_Move*)event_info;
+       int x_offset = ev->cur.output.x - point_down->x;
+       int y_offset = ev->cur.output.y - point_down->y;
+       if(x_offset < 0) x_offset = -x_offset;
+       if(y_offset < 0) y_offset = -y_offset;
+       if (x_offset <= MIN_MOVE_DISTANCE && y_offset <= MIN_MOVE_DISTANCE)
+       {
+               return;
+       }
+       setting_undo_dim_evas_object(elm_object_part_content_get(obj, "elm.swallow.icon"), FALSE);
+       elm_object_signal_emit(obj,"UNSELECTED","elm");
 }
-
-static Setting_GenGroupItem_Data * __allshare_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
+static void ___grid_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
 {
-       setting_main_appdata *ad = (setting_main_appdata *)data;
-
-       Setting_GenGroupItem_Data * obj = setting_create_Gendial_field_groupitem(genlist,
-                                                                  &(ad->itc[GENDIAL_Type_1text_1icon_2]),
-                                                                  NULL,
-                                                                  setting_main_click_list_default_ug_cb,
-                                                                  ad,
-                                                                  SWALLOW_Type_INVALID,
-                                                                  icon_path,
-                                                                  NULL, 0,
-                                                                  keyStr,
-                                                                  NULL,
-                                                                  NULL);
-       return obj;
+       //SETTING_TRACE_BEGIN;
+       ret_if(!data);
+       Evas_Point *point_down = data;
+       FREE(point_down);//delete the date.
 }
 
-static Setting_GenGroupItem_Data * __network_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
+/**
+* To make an object looks clickable: if pressed, it is dim color;if unpressed, it is normal color;
+*
+* @param[in] obj
+*/
+EXPORT_PUBLIC
+void __grid_clickable_enable(Evas_Object *obj)
 {
-       setting_main_appdata *ad = (setting_main_appdata *)data;
-
-       ad->data_network = setting_create_Gendial_field_groupitem(genlist,
-                                                                      &(ad->itc[GENDIAL_Type_1text_1icon_2]),
-                                                                      NULL,
-                                                                      setting_main_click_list_network_ug_cb,
-                                                                      ad,
-                                                                      SWALLOW_Type_INVALID,
-                                                                      icon_path,
-                                                                      NULL, 0,
-                                                                      keyStr,
-                                                                      NULL,
-                                                                      NULL);
-
-       return ad->data_network;
+       if (obj) {
+               Evas_Point *point_down = calloc(1,sizeof(Evas_Point));
+               evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_DOWN, ___grid_select_cb, point_down);
+               evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_UP, ___grid_release_cb, NULL);
+               evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_MOVE, ___grid_mouse_move_cb, point_down);
+               evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL, ___grid_del_cb, point_down);
+       }
 }
 
-static Setting_GenGroupItem_Data * __nfc_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
+static void __grid_binded_vconf_cb(keynode_t *key, void *data)
 {
-       setting_main_appdata *ad = (setting_main_appdata *)data;
+       SETTING_TRACE_BEGIN;
+       char *vconf_name = vconf_keynode_get_name(key);
+       SETTING_TRACE("the value of [ %s ] just changed", vconf_name);
+       ret_if(!data);
+       Evas_Object *layout = data;
+       SETTING_TRACE("layout:%p", layout);
+       Evas_Object* image = elm_object_part_content_get(layout, "elm.swallow.icon");
+       ret_if(!image);
 
-       int value, err;
-       setting_get_bool_slp_key(BOOL_SLP_SETTING_NFC_STATUS, &value, &err);
-
-       ad->data_nfc = setting_create_Gendial_field_groupitem(genlist,
-                                                  &(ad->itc[GENDIAL_Type_1text_2icon]),
-                                                  NULL,
-                                                  setting_main_click_list_ex_ug_cb,
-                                                  ug_args,
-                                                  SWALLOW_Type_1ICON_1RADIO,
-                                                  icon_path,
-                                                  NULL,
-                                                  value,
-                                                  keyStr,
-                                                  NULL,
-                                                  setting_main_click_list_nfc_mode_cb);
-       __BACK_POINTER_SET(ad->data_nfc);
-       if(ad->data_nfc)
-               ad->data_nfc->userdata = ad;
-
-#if DISABLED_CODE
-       setting_create_Gendial_field_def(genlist, &itc_multiline_text, NULL,
-                ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
-                NULL, NULL, 0, SETTING_NFC_DESC, NULL, NULL);
-       elm_genlist_item_select_mode_set(elm_genlist_item_append(genlist, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
-                                        ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+       int status = 0;
+       char *icon_path = NULL;
+       if (!safeStrCmp(vconf_name, VCONFKEY_TELEPHONY_FLIGHT_MODE))
+       {
+               vconf_get_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, &status);
+               if (!status)
+               {
+                       icon_path = (char *)g_strdup(SETTING_ICON_PATH_CFG"settings_flightoff2.png");
+               }
+               else
+               {
+                       icon_path = (char *)g_strdup(SETTING_ICON_PATH_CFG"A01-1_icon_Flight_Mode.png");
+               }
+       }
+#if SUPPORT_NETWORK_RESTRICTION
+       else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_NETWORK_RESTRICT_MODE))
+       {
+               vconf_get_bool(VCONFKEY_SETAPPL_NETWORK_RESTRICT_MODE, &status);
+               if (!status)
+               {
+                       icon_path = (char *)g_strdup(IMG_NetRestrictionOffMode);
+               }
+               else
+               {
+                       icon_path = (char *)g_strdup(IMG_NetRestrictionMode);
+               }
+       }
 #endif
-       return ad->data_nfc;
-}
+       else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_ENHANCED_TOUCH))
+       {
+               vconf_get_bool(VCONFKEY_SETAPPL_ENHANCED_TOUCH, &status);
+               if (status)
+               {
+                       icon_path = (char *)g_strdup(IMG_HighTouch);
+               }
+               else
+               {
+                       icon_path = (char *)g_strdup(IMG_HighTouchOff);
+               }
+       }
+       else if (!safeStrCmp(vconf_name, VCONFKEY_QUICKSETTING_MULTIWINDOW_ENABLED))
+       {
+               #if 0
+               vconf_get_bool(VCONFKEY_QUICKSETTING_MULTIWINDOW_ENABLED, &status);
+               if (!status)
+               {
+                       icon_path = (char *)g_strdup(IMG_MutiWindowDisable);
+               }
+               else
+               {
+                       icon_path = (char *)g_strdup(IMG_MutiWindow);
+               }
+               #else
+               icon_path = (char *)g_strdup(IMG_MutiWindow);
+               #endif
+       }
 
-static Setting_GenGroupItem_Data * __default_handler(void* data, char* keyStr, char* icon_path, char* ug_args, Evas_Object *genlist)
-{
-       setting_main_appdata *ad = (setting_main_appdata *)data;
-       Setting_GenGroupItem_Data * obj = setting_create_Gendial_field_groupitem(genlist,
-                                                          &(ad->itc[GENDIAL_Type_1text_1icon_2]),
-                                                          NULL,
-                                                          setting_main_click_list_ex_ug_cb,
-                                                          ug_args,
-                                                          SWALLOW_Type_INVALID,
-                                                          icon_path,
-                                                          NULL, 0,
-                                                          keyStr,
-                                                          NULL,
-                                                          NULL);
-
-
-       return obj;
+       if (icon_path) elm_image_file_set(image, icon_path, NULL);
 }
 
-typedef struct mainlist_entry mainlist_entry;
-
-struct mainlist_entry {
-       char* title;
-       Setting_GenGroupItem_Data* (*ui_handler)(void* data, char* title, char* iconpath, char* ugname, Evas_Object *genlist);
-};
-
-
-enum {
-       MAINLIST_ENTRY_FLIGHT_MODE = 0,
-       MAINLIST_ENTRY_WIFI,
-       MAINLIST_ENTRY_BT,
-       MAINLIST_ENTRY_ALLSHARE,
-       MAINLIST_ENTRY_NETWORK,
-       MAINLIST_ENTRY_NFC,
-       MAINLIST_ENTRY_DEFAULT,
-       MAINLIST_ENTRY_MAX,
-};
-
-static mainlist_entry mainlist_table[] = {
-               {KeyStr_FlightMode,     __flightmode_handler},                  // 0 --> NOT UG
-               {KeyStr_WiFi,                   __wifi_handler},                                // 1 --> UG
-               {KeyStr_Bluetooth,              __bluetooth_handler},                   // 1 --> UG
-               {KeyStr_AllShare,               __allshare_handler},                    // NOT UG
-               {KeyStr_Network,                __network_handler},                             // 1 --> UG
-               {KeyStr_NFC,                    __nfc_handler},                                 // 1 --> UG
-               {"Default",                     __default_handler},                             // 1 --> UG
-
-               //--------------------------------------------------------------
-               {NULL, NULL},
-       };
-
-
-void __gl_realized(void *data, Evas_Object *obj, void *event_info)
+//Duplicate one to give diff instance vconf cb to the two same name grids
+static void __grid_binded_vconf_cb2(keynode_t *key, void *data)
 {
-       //SETTING_TRACE_BEGIN;
-       setting_retm_if(data == NULL, "invalid parameter: data is NULL");
-       setting_retm_if(event_info == NULL, "invalid parameter: event_info is NULL");
-       setting_main_appdata *ad = (setting_main_appdata *)data;
-       Elm_Object_Item *item = (Elm_Object_Item *)event_info;
-       Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)elm_object_item_data_get(item);
-
-       //setting_retm_if(list_item == NULL, "list_item is NULL");
-
-       if (list_item) {
-               if (list_item->group_style == SETTING_GROUP_STYLE_TOP) {
-                       elm_object_item_signal_emit(item, "elm,state,top", "");
-               } else if (list_item->group_style == SETTING_GROUP_STYLE_BOTTOM) {
-                       elm_object_item_signal_emit(item, "elm,state,bottom", "");
-               } else if (list_item->group_style == SETTING_GROUP_STYLE_CENTER) {
-                       elm_object_item_signal_emit(item, "elm,state,center", "");
-               } else if (list_item->group_style == SETTING_GROUP_STYLE_NONE) {
-                       /* do nothing */
-               } else {
-                       SETTING_TRACE_ERROR("list_item->group_style is wrong");
-               }
-       } else {
-               /* item is used for description */
-               elm_object_item_signal_emit(item, "elm,state,center", "");
-       }
+       __grid_binded_vconf_cb(key, data);
 }
 
-// Flight Mode         - not UG
-// All share    - not UG
-// WiFi                        - added toggle
-// Bluetooth
-// Mobile AP
-// Network
-// NFC
-// Other UGs
-void __load_connectivity_menu_list(void *data, Cfg_Item_Position inputPos, Evas_Object *genlist)
+static void _grid_del(void *data, Evas_Object *obj)
 {
-       SETTING_TRACE_BEGIN;
-       setting_main_appdata *ad = data;
-       //group title, only display in setting main view
-       if (SETTING_VIEW_MAIN == ad->view_load) {
-               setting_create_Gendial_field_group_titleItem(ad->main_genlist,
-                                                    &(ad->itc[GENDIAL_Type_group_item]),
-                                                    NULL,
-                                                    ELM_GENLIST_ITEM_NONE,
-                                                    KeyStr_Connectivity, NULL);
+       GridItem *item_data = (GridItem *) data;
+       if (item_data) {
+               G_FREE(item_data->name);
+               G_FREE(item_data->icon_path);
+               G_FREE((item_data->ug_name));
+               FREE(item_data);
        }
+}
 
-       int idx_second_menu = 0;
-
-       char *keyStr = NULL;
-       char *icon_path = NULL;
-       char *ug_args = NULL;
-       Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
-       int i, j;
-
-       bool is_emulator = isEmulBin();
-
-       Setting_GenGroupItem_Data *item_data = NULL;
-       int index = 0;
-
-       for (i = 0; i < setting_cfg_get_category_length(); i++) {
-               if (safeStrCmp
-                   (setting_cfg_get_category_name(i), KeyStr_Connectivity))
-                       continue;
-
-               for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
-                       keyStr = setting_cfg_get_keyname_idx(i, j);
-                       tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
-                       ug_args = setting_cfg_get_ug_args_idx(i, j);
-                       icon_path = setting_cfg_get_icon_path_idx(i, j);
-                       /* SETTING_TRACE_DEBUG("Got an item[keyStr:%s, ug_args:%s, pos:%d]", */
-                       /*                     keyStr, ug_args, tmpPos); */
-
-                       if (is_emulator) {
-                               if (!safeStrCmp(KeyStr_FlightMode, keyStr)) {
-                                       continue; /* hide Flight Mode in Emulator*/
-                               } else if (!safeStrCmp(KeyStr_WiFi, keyStr)) {
-                                       continue; /* hide WIFI in Emulator*/
-                               } else if (!safeStrCmp(KeyStr_WiFiDirect, keyStr)) {
-                                       continue; /* hide WiFiDirect in Emulator*/
-                               } else if (!safeStrCmp(KeyStr_Network, keyStr)) {
-                                       continue; /* hide Network in Emulator*/
-                               } else if (!safeStrCmp(KeyStr_Bluetooth, keyStr)) {
-                                       continue; /* hide Bluetooth in Emulator*/
-                               } else if (!safeStrCmp(KeyStr_MobileAP, keyStr)) {
-                                       continue; /* hide Tethering in Emulator*/
-                               } else {
-                                       /* do nothing */
-                               }
-                       }
 
-                       if (idx_second_menu < MAX_MORE_MENU_NUM
-                           && Cfg_Item_Pos_Level1 == tmpPos
-                           && SETTING_VIEW_MAIN == ad->view_load
-                           && MAIN_PROFILE_PREFERRED == ad->profile_type) {
 
-                               if (is_ug_installed_by_ug_args(ug_args)) {
-                                       ad->more_connective_menus[idx_second_menu++] = keyStr;
-                               }
-                       }
+/**
+* @brief update toggle state in Genlist
+*
+* when genGrid updates, the toggle states in Genlist should be updated too.
+*
+* @param data application context
+* @param obj NOT USED
+* @param event_info NOT USED
+*/
+static void ____gg_process_toogle_icon(void* data, Evas_Object* obj, void* event_info)
+{
+       SETTING_TRACE_BEGIN;
+       setting_retm_if(data == NULL, "data is NULL");
+       GridItem* pitem = (GridItem*)data;
+       // do nothing now
+       setting_main_appdata *ad = pitem->data;
+       setting_retm_if(ad == NULL, "ad is NULL");
+
+       if (safeStrCmp(pitem->name, KeyStr_FlightMode) == 0) {
+
+               int old_status, err;
+               setting_get_bool_slp_key (BOOL_SLP_SETTING_FLIGHT_MODE, &old_status, &err);
+               /* new status */
+               if(ad && !old_status) {
+                       ad->popup_flight_mode = setting_create_popup_with_btn(NULL,
+                                       ad->win_main, KeyStr_FlightMode,
+                                       ENABLE_FLIGHT_MODE_MSG,
+                                       setting_flightmode_turn_on_resp_cb,
+                                       0, 2, "IDS_ST_BUTTON_ENABLE", "IDS_COM_SK_CANCEL");
+               } else {
 
-                       if (Cfg_Item_Pos_Level_All == inputPos) {
-                       } else if (inputPos != tmpPos) {        /* not in the inputPos level */
-                               continue;
+                       Setting_GenGroupItem_Data *item_to_update;
+                       int i;
+                       for (i = VIEW_All_List; i < VIEW_Max; i++)
+                       {
+                               item_to_update = ad->gl_data_item[i][GL_FlightMode];
+                               setting_update_gl_item_chk_status(item_to_update, !old_status);
                        }
 
-                       if (!safeStrCmp(KeyStr_FlightMode, keyStr)) {   /* load special radio */
-                               // ug == NULL
-                               item_data = mainlist_table[MAINLIST_ENTRY_FLIGHT_MODE].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
-
-                       } else if (!safeStrCmp(KeyStr_AllShare, keyStr)) {      /* NOT UG */
-
-                               item_data = mainlist_table[MAINLIST_ENTRY_ALLSHARE].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
-
-                       } else if (!safeStrCmp(KeyStr_WiFi, keyStr) && is_ug_installed_by_ug_args(ug_args)) {   /* load special icon */
-
-                               item_data = mainlist_table[MAINLIST_ENTRY_WIFI].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
+                       setting_main_alternate_flight_mode(!old_status);
+               }
+               return;
+       }
+       else if(safeStrCmp(pitem->name, KeyStr_MultiWindowMode) == 0){
+               int ret = 0;
+               int value = 0;
+               ret = vconf_get_bool(VCONFKEY_QUICKSETTING_MULTIWINDOW_ENABLED,&value);
+               SETTING_TRACE_DEBUG("vconf_get_bool() returns %d", ret);
+
+               const char *tmp = pitem->icon_path;
+               if(!value){
+                       //OFF->ON
+                       pitem->icon_path = (char *)g_strdup(IMG_MutiWindow);
+               }else{
+                       //ON->OFF
+                       pitem->icon_path = (char *)g_strdup(IMG_MutiWindowDisable);
+               }
+               G_FREE(tmp);
+               //update the icon
+               Evas_Object *layout = NULL;
+               Evas_Object *image = NULL;
+               if ((layout =elm_object_item_part_content_get(pitem->item, "elm.swallow.icon"))
+                   && (image = elm_object_part_content_get(layout, "elm.swallow.icon")))
+               {
+                       elm_image_file_set(image, pitem->icon_path, NULL);
+               }
 
-                       } else if (!safeStrCmp(KeyStr_Bluetooth, keyStr) && is_ug_installed_by_ug_args(ug_args)) {      /* load special icon */
+               vconf_set_bool(VCONFKEY_QUICKSETTING_MULTIWINDOW_ENABLED,!value);
+       }
+       else if(safeStrCmp(pitem->name, KeyStr_NetRestrictionMode) == 0)
+       {
+               int status = SETTING_ON_OFF_BTN_OFF;
+               int err;
+               setting_get_bool_slp_key( BOOL_SLP_SETTING_NET_RESTRICTION_MODE, &status, &err );
 
-                               item_data = mainlist_table[MAINLIST_ENTRY_BT].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
+               if (!status)
+               {
+                       // Off -> On
+                       ad->popup_net_restriction_mode = setting_create_popup_with_btn(NULL,
+                                               ad->win_main,
+                                               "IDS_ST_HEADER_NETWORK_RESTRICTION_MODE_ABB_JPN",
+                                               "IDS_QP_POP_IN_NETWORK_RESTRICTION_MODE_YOU_CAN_USE_ALL_YOUR_APPLICATIONS_WITHOUT_CONNECTING_TO_THE_NETWORK_YOU_CAN_ALSO_RECEIVE_CALLS_AND_SMS_MESSAGES_MSG_JPN",
+                                               setting_main_net_restriction_mode_turn_on_resp_cb,
+                                               0,      // timer
+                                               2,      // button count
+                                               "IDS_COM_SK_OK",
+                                               "IDS_COM_SK_CANCEL");
+               }
+               else
+               {
+                       // On -> Off
+                       ad->popup_net_restriction_mode = setting_create_popup_with_btn(NULL,
+                                               ad->win_main,
+                                               "IDS_ST_HEADER_NETWORK_RESTRICTION_MODE_ABB_JPN" ,
+                                               "IDS_QP_POP_NETWORK_RESTRICTION_MODE_WILL_BE_DISABLED_JPN" ,
+                                               setting_main_net_restriction_mode_turn_off_resp_cb,
+                                               0,      // timer
+                                               2,      // button count
+                                               "IDS_COM_SK_OK",
+                                               "IDS_COM_SK_CANCEL" );
+               }
+               return;
+       }
+       else if(safeStrCmp(pitem->name, KeyStr_HighTouchSens) == 0)
+       {
+               int old_status = display_get_enhanced_touch();
+               display_set_enhanced_touch((!old_status));
+               int new_status = display_get_enhanced_touch();
+               SETTING_TRACE("old_status:%d, display_get_enhanced_touch():%d", old_status, new_status);
+               if (new_status >= 0)
+               {
+                       const char *tmp = pitem->icon_path;
+                       if (1 == new_status)
+                       {
 
+                               vconf_set_bool(VCONFKEY_SETAPPL_ENHANCED_TOUCH, 1); //sync to vconf
+                               pitem->icon_path = (char *)g_strdup(IMG_HighTouch);
                        }
-#if 0
- else if (!safeStrCmp(KeyStr_MobileAP, keyStr) && is_ug_installed_by_ug_args(ug_args)) {       /* load special icon */
-
-                               item_data = mainlist_table[MAINLIST_ENTRY_MOBILEAP].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
+                       else
+                       {
+                               vconf_set_bool(VCONFKEY_SETAPPL_ENHANCED_TOUCH, 0); //sync to vconf
+                               pitem->icon_path = (char *)g_strdup(IMG_HighTouchOff);
+                       }
+                       G_FREE(tmp);
 
+                       Evas_Object *layout = NULL;
+                       Evas_Object *image = NULL;
+                       if ((layout =elm_object_item_part_content_get(pitem->item, "elm.swallow.icon"))
+                           && (image = elm_object_part_content_get(layout, "elm.swallow.icon")))
+                       {
+                               elm_image_file_set(image, pitem->icon_path, NULL);
                        }
-#endif
-                        else if (!safeStrCmp(KeyStr_Network, keyStr) && is_ug_installed_by_ug_args(ug_args)) { /* load special UG */
+               }
+               else
+               {
+                       setting_create_simple_popup(NULL, ad->win_main,
+                                                   NULL, "IDS_COM_POP_UNEXPECTED_ERROR");
+               }
+               return;
+       }
+}
 
-                               item_data = mainlist_table[MAINLIST_ENTRY_NETWORK].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
 
-                       } else if (!safeStrCmp(KeyStr_NFC, keyStr) && is_ug_installed_by_ug_args(ug_args)) {    /* load special icon */
-                               int nfc_value = FALSE; //default
-                               vconf_get_bool(VCONFKEY_NFC_FEATURE, &nfc_value);
-                               if (VCONFKEY_NFC_FEATURE_ON == nfc_value)
-                               {
-                                       item_data = mainlist_table[MAINLIST_ENTRY_NFC].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
-                               }
-                       } else {        /* load other UGs */
-                               if (is_ug_installed_by_ug_args(ug_args))
-                               {
-                                       item_data = mainlist_table[MAINLIST_ENTRY_DEFAULT].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
-                               }
-                       }
+/**
+ * call event handler when touching each item on grid
+ @todo REMOVE THE IF_ELSE NESTED
+ */
+static void ___gg_item_selected(void* data, Evas_Object* obj, void* event_info)
+{
+       SETTING_TRACE_BEGIN;
+       setting_retm_if(data == NULL, "data is NULL");
+       GridItem* pitem = (GridItem*)data;
 
-                       if (item_data) {
-                               if (j == 0) {
-                                       item_data->group_style = SETTING_GROUP_STYLE_TOP;
-                               } else if (j == setting_cfg_get_menu_length(i) - 1) {
-                                       item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
-                               } else {
-                                       item_data->group_style = SETTING_GROUP_STYLE_CENTER;
-                               }
+       setting_main_appdata *ad = pitem->data;
+       setting_retm_if(ad == NULL, "ad is NULL");
 
-                               if (index == 0) {
-                                       item_data->group_style = SETTING_GROUP_STYLE_TOP;
-                               }
-                               index++;
-                       }
-               }
-       }
 
-       //end group , only display in setting main view
-#if SUPPORT_MORE_ITEM_FUNCTION
-               if (SETTING_VIEW_MAIN == ad->view_load && MAIN_PROFILE_PREFERRED == ad->profile_type && idx_second_menu > 0)
+       char * style = evas_object_data_get(obj, "style");
+       //SETTING_TRACE("style:%s", style);
+       if (!isEmptyStr(style))//has value "WithCheck", it indicates we are in edit mode
+       {
+               //in edit mode
+               Evas_Object *layout = elm_object_item_part_content_get(pitem->item, "elm.swallow.icon");
+               if (layout)
                {
-                       char sub_text[MAX_COMMON_BUFFER_LEN] = {0, };
-                       int idx = 0;
-                       while (idx < MAX_MORE_MENU_NUM && ad->more_connective_menus[idx])
+                       Evas_Object *check = elm_object_part_content_get(layout, "elm.swallow.check");
+                       if(check)
                        {
-                               if (idx != 0)
+                               int old = elm_check_state_get(check);
+                               SETTING_TRACE("old:%d", old);
+                               elm_check_state_set(check, !old);
+
+                               if(!old)
+                                       ad->edit_sel_list = eina_list_append(ad->edit_sel_list, pitem->name);
+                               else
                                {
-                                       safeStrNCat(sub_text, ", ", MAX_COMMON_BUFFER_LEN);
+                                       //NOTE!! DO NOT USE eina_list_remove()
+                                       //The API was based on eina_list_data_find_list(),
+                                       //which cannot statisfy ad->edit_sel_list's demanding(ad->edit_sel_list keep const strings,not addresses of memory)
+                                       //eina_list_data_find_list use memory address to compare: list_data == data
+                                       Eina_List *list = ad->edit_sel_list;
+                                       while (list) {
+                                               char *str = eina_list_data_get(list);
+                                               if (NULL == str)
+                                                       continue;
+                                               if(0 == safeStrCmp(str, pitem->name))
+                                                       break;
+                                               list = eina_list_next(list);
+                                       }
+                                       ad->edit_sel_list = eina_list_remove_list(ad->edit_sel_list, list);
                                }
-                               safeStrNCat(sub_text, _(ad->more_connective_menus[idx]), MAX_COMMON_BUFFER_LEN);
-                               idx++;
-                       }
 
-                       ad->data_moreConnect =
-                               setting_create_Gendial_field_groupitem(ad->main_genlist,
-                                                                      &(ad->itc[GENDIAL_Type_2text_3]),
-                                                                      NULL,
-                                                                      setting_main_click_list_more_cb,
-                                                                      ad,
-                                                                      SWALLOW_Type_INVALID,
-                                                                      NULL,
-                                                                      NULL,
-                                                                      0,
-                                                                      KeyStr_MoreConnect,
-                                                                      sub_text,
-                                                                      NULL);
-                       __BACK_POINTER_SET(ad->data_moreConnect);
-
-                       /* if has <more ..> item , change the last item_date to SETTING_GROUP_STYLE_CENTER*/
-                       if (item_data && index > 1) {
-                               item_data->group_style = SETTING_GROUP_STYLE_CENTER;
+                               char text[MAX_DISPLAY_NAME_LEN_ON_UI +1] = {0, };
+                               snprintf(text, MAX_DISPLAY_NAME_LEN_ON_UI, _("IDS_ST_HEADER_PD_SELECTED"),eina_list_count(ad->edit_sel_list));
+                               elm_object_item_part_text_set(ad->edit_navi_it, "elm.text.title", text);
                        }
-                       ad->data_moreConnect->group_style = SETTING_GROUP_STYLE_BOTTOM;
-
-                       item_data = ad->data_moreConnect;
-                       index++;
                }
-#endif
+               return;
+       }
 
-       if (index == 1) {
-               item_data->group_style = SETTING_GROUP_STYLE_NONE;
-       } else if (index == 2) {
-               item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
+       if(ad->isInUGMode && ad->ug)
+       {
+               SETTING_TRACE(" UG is already loaded - do nothing ");
+               return;         // do nothing
        }
-       SETTING_TRACE_END;
-}
 
-void __load_connectivity_level0_list(void *data)
-{
-       setting_main_appdata *ad = data;
-       __load_connectivity_menu_list(ad, Cfg_Item_Pos_Level0, ad->main_genlist);
-}
+       effect_playsound_play();// make sound (touch)
 
-void __load_connectivity_level_all_list(void *data)
-{
-       SETTING_TRACE_BEGIN;
-       setting_main_appdata *ad = data;
-       __load_connectivity_menu_list(ad, Cfg_Item_Pos_Level_All, ad->main_genlist);
-}
-
-void __load_system_menu_list(void *data, Cfg_Item_Position inputPos, Evas_Object *genlist)
-{
-       SETTING_TRACE_BEGIN;
-       SETTING_TRACE_DEBUG("pos :%d", inputPos);
-       setting_main_appdata *ad = data;
-       //group title, only display in setting main view
-       if (SETTING_VIEW_MAIN == ad->view_load) {
-               setting_create_Gendial_field_group_titleItem(ad->main_genlist,
-                                                    &(ad->itc[GENDIAL_Type_group_item]),
-                                                    NULL,
-                                                    ELM_GENLIST_ITEM_NONE,
-                                                    KeyStr_System, NULL);
-       }
-       int idx_second_menu = 0;
-
-       char *keyStr = NULL;
-       char *icon_path = NULL;
-       char *ug_args = NULL;
-
-       Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
-
-       int ncount = 0;
-       int i, j;
-
-       bool is_emulator = isEmulBin();
-
-       Setting_GenGroupItem_Data *item_data = NULL;
-       int index = 0;
-
-       //SETTING_TRACE("setting_cfg_get_category_length() :: %d ", setting_cfg_get_category_length());
-       for (i = 0; i < setting_cfg_get_category_length(); i++) {
-               if (safeStrCmp(setting_cfg_get_category_name(i), KeyStr_System))
-                       continue;
-
-               //SETTING_TRACE(" setting_cfg_get_menu_length(%d) :: %d ",i, setting_cfg_get_menu_length(i) );
-               for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
-                       keyStr = setting_cfg_get_keyname_idx(i, j);
-                       /* sg_path = setting_cfg_get_ugpath_idx(i, j); */
-                       tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
-                       icon_path = setting_cfg_get_icon_path_idx(i, j);
-                       ug_args = setting_cfg_get_ug_args_idx(i, j);
-
-                       //SETTING_TRACE("KeyString :  %s , tmpPos : %d , inputPos : %d ", keyStr, tmpPos, inputPos );
-
-                       if (is_emulator) {
-                               if (!safeStrCmp(KeyStr_Security, keyStr)) {
-                                       continue; /* hide Security in Emulator*/
-                               } else if (!safeStrCmp(KeyStr_Memory, keyStr)) {
-                                       continue; /* hide Memory in Emulator*/
-                               } else if (!safeStrCmp(KeyStr_Powersaving, keyStr)) {
-                                       continue; /* hide Powersaving in Emulator*/
-                               } else if (!safeStrCmp(KeyStr_FlightMode, keyStr)) {
-                                       continue; /* hide Powersaving in Emulator*/
-                               } else {
-                                       /* do nothing */
-                               }
-                       }
-
-                       if (idx_second_menu < MAX_MORE_MENU_NUM
-                           && Cfg_Item_Pos_Level1 == tmpPos
-                           && SETTING_VIEW_MAIN == ad->view_load
-                           && MAIN_PROFILE_PREFERRED == ad->profile_type) {
-
-                           if (is_ug_installed_by_ug_args(ug_args)) {
-                               ad->more_system_menus[idx_second_menu++] = keyStr;
-                           }
-                       }
-
-                       if (Cfg_Item_Pos_Level_All == inputPos) {
-                               // do nothing
-                               //SETTING_TRACE("Cfg_Item_Pos_Level_All == inputPos ---> no draw --- WHY?? ");
-                       } else if (inputPos != tmpPos) {        /* not in the inputPos level */
-                               //SETTING_TRACE("inputPos == tmp Pos ---> no draw --- WHY?? ");
-                               continue;
-                       }
-
-                       if (!safeStrCmp(KeyStr_FlightMode, keyStr)) {   /* load special radio */
-                               // ug == NULL
-                               item_data = mainlist_table[MAINLIST_ENTRY_FLIGHT_MODE].ui_handler(ad, keyStr, icon_path, ug_args, genlist);
-
-                       }
-                       else if (!safeStrCmp(KeyStr_Landscape, keyStr)) {       /* load special UG */
-                               int value = 0;
-                               vconf_get_bool
-                                   (VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, &value);
-
-                               ad->data_rotationMode =
-                                   setting_create_Gendial_field_groupitem(genlist,
-                                                                          &(ad->itc[GENDIAL_Type_1text_2icon]),
-                                                                          NULL,
-                                                                          setting_main_sel_list_mouse_up_cb,
-                                                                          ad,
-                                                                          SWALLOW_Type_1ICON_1RADIO,
-                                                                          icon_path,
-                                                                          NULL,
-                                                                          value,
-                                                                          keyStr,
-                                                                          NULL,
-                                                                          setting_main_list_mouse_up_cb);
-                               __BACK_POINTER_SET(ad->data_rotationMode);
-                               item_data = ad->data_rotationMode;
-                       }
-                       else if (!safeStrCmp(KeyStr_Brightness, keyStr)) {
-
-                               char* pa_bright = get_brightness_mode_str();
-                               ad->data_bright=
-                                   setting_create_Gendial_field_groupitem(genlist,
-                                                                          &(ad->itc[GENDIAL_Type_1icon_2text]),
-                                                                          NULL,
-                                                                          setting_main_click_list_ex_ug_cb,
-                                                                          ug_args,
-                                                                          SWALLOW_Type_INVALID,
-                                                                          icon_path,
-                                                                          NULL,
-                                                                          0,
-                                                                          keyStr,
-                                                                          pa_bright,
-                                                                          NULL);
-                               __BACK_POINTER_SET(ad->data_bright);
-                               item_data = ad->data_bright;
-                               ncount++;
-                       }
-                       else {  /* load other UGs */
-                               item_data = setting_create_Gendial_field_groupitem(genlist,
-                                                                      &(ad->itc[GENDIAL_Type_1text_1icon_2]),
-                                                                      NULL,
-                                                                      setting_main_click_list_ex_ug_cb,
-                                                                      ug_args,
-                                                                      SWALLOW_Type_INVALID,
-                                                                      icon_path,
-                                                                      NULL, 0,
-                                                                      keyStr,
-                                                                      NULL,
-                                                                      NULL);
-                               ncount++;
-                       }
-
-                       if (item_data) {
-                               if (j == 0) {
-                                       item_data->group_style = SETTING_GROUP_STYLE_TOP;
-                               } else if (j == setting_cfg_get_menu_length(i) - 1) {
-                                       item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
-                               } else {
-                                       item_data->group_style = SETTING_GROUP_STYLE_CENTER;
-                               }
-
-                               if (index == 0) {
-                                       item_data->group_style = SETTING_GROUP_STYLE_TOP;
-                               }
-                               index++;
-                       }
-               }
+       if (!safeStrCmp(pitem->name, KeyStr_FlightMode)
+           || !safeStrCmp(pitem->name, KeyStr_NetRestrictionMode)
+           || !safeStrCmp(pitem->name, KeyStr_HighTouchSens)
+           /*|| !safeStrCmp(pitem->name, KeyStr_MultiWindowMode)*/)
+       {
+               ____gg_process_toogle_icon(data, obj, event_info);
+               return;
        }
-       //end group, only display in setting main view
-#if SUPPORT_MORE_ITEM_FUNCTION
-               if (SETTING_VIEW_MAIN == ad->view_load && MAIN_PROFILE_PREFERRED == ad->profile_type && idx_second_menu > 0)
-               {
-                       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)
-                               {
-                                       safeStrNCat(sub_text, ", ", MAX_COMMON_BUFFER_LEN);
-                               }
-                               safeStrNCat(sub_text, _(ad->more_system_menus[idx]), MAX_COMMON_BUFFER_LEN);
-                               idx++;
-                       }
-
-                       ad->data_moreSystem =
-                               setting_create_Gendial_field_groupitem(ad->main_genlist,
-                                                                      &(ad->itc[GENDIAL_Type_2text_3]),
-                                                                      NULL,
-                                                                      setting_main_click_list_more_cb,
-                                                                      ad,
-                                                                      SWALLOW_Type_INVALID,
-                                                                      NULL,
-                                                                      NULL,
-                                                                      0,
-                                                                      KeyStr_MoreSystem,
-                                                                      sub_text,
-                                                                      NULL);
-                       __BACK_POINTER_SET(ad->data_moreSystem);
-
-                       /* if has <more ..> item , change the last item_date to SETTING_GROUP_STYLE_CENTER*/
-                       if (item_data && index > 1) {
-                               item_data->group_style = SETTING_GROUP_STYLE_CENTER;
-                       }
-                       ad->data_moreSystem->group_style = SETTING_GROUP_STYLE_BOTTOM;
-
-                       item_data = ad->data_moreSystem;
-                       index++;
-               }
+       else if (!safeStrCmp(pitem->name, KeyStr_Call)
+           || !safeStrCmp(pitem->name, keystr_Blockingmode)
+#if SUPPORT_DRIVINGMODE
+           || !safeStrCmp(pitem->name, keystr_Drivingmode)
 #endif
-       if (index == 1) {
-               item_data->group_style = SETTING_GROUP_STYLE_NONE;
-       } else if (index == 2) {
-               item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
-       }
-}
-
-static void __load_system_level0_list(void *data)
-{
-       setting_main_appdata *ad = data;
-       __load_system_menu_list(ad, Cfg_Item_Pos_Level0, ad->main_genlist);
-}
-
-static void __load_system_level_all_list(void *data)
-{
-       SETTING_TRACE_BEGIN;
-       setting_main_appdata *ad = data;
-       __load_system_menu_list(ad, Cfg_Item_Pos_Level_All, ad->main_genlist);
-}
-
-static void __load_applications_menu_list(void *data,
-                                         Cfg_Item_Position inputPos)
-{
-       SETTING_TRACE_BEGIN;
-       SETTING_TRACE_DEBUG("pos :%d", inputPos);
-       setting_main_appdata *ad = data;
-
-       bool is_emulator = isEmulBin();
-
-       //group title
-       setting_create_Gendial_field_group_titleItem(ad->main_genlist,
-                                                    &(ad->itc[GENDIAL_Type_group_item]),
-                                                    NULL,
-                                                    ELM_GENLIST_ITEM_NONE,
-                                                    KeyStr_Applications, NULL);
-       char *keyStr = NULL;
-       char *icon_path = NULL;
-       char *ug_args = NULL;
-       Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
-       int i, j;
-
-       Setting_GenGroupItem_Data *item_data = NULL;
-       int index = 0;
-       for (i = 0; i < setting_cfg_get_category_length(); i++) {
-               if (safeStrCmp
-                   (setting_cfg_get_category_name(i), KeyStr_Applications))
-                       continue;
-
-               for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
-                       keyStr = setting_cfg_get_keyname_idx(i, j);
-                       icon_path = setting_cfg_get_icon_path_idx(i, j);
-                       ug_args = setting_cfg_get_ug_args_idx(i, j);
-                       tmpPos =
-                           (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
-
-                       if (Cfg_Item_Pos_Level_All == inputPos) {
-                       } else if (inputPos != tmpPos) {        /* not in the inputPos level */
-                               continue;
-                       }
-
-                       if (is_emulator) {
-                                /* hide all except Email */
-                               if (safeStrCmp(KeyStr_Email, keyStr)) {
-                                       continue;
-                               } else {
-                                       /* do nothing */
-                               }
-                       }
-
-                       item_data = setting_create_Gendial_field_groupitem(ad->main_genlist,
-                                                              &(ad->itc[GENDIAL_Type_1text_1icon_2]),
-                                                              NULL,
-                                                              setting_main_click_list_ex_ug_cb,
-                                                              ug_args,
-                                                              SWALLOW_Type_INVALID,
-                                                              icon_path, NULL,
-                                                              0, keyStr, NULL,
-                                                              NULL);
-
-                       if (item_data) {
-                               if (j == 0) {
-                                       item_data->group_style = SETTING_GROUP_STYLE_TOP;
-                               } else if (j == setting_cfg_get_menu_length(i) - 1) {
-                                       item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
-                               } else {
-                                       item_data->group_style = SETTING_GROUP_STYLE_CENTER;
-                               }
-
-                               if (index == 0) {
-                                       item_data->group_style = SETTING_GROUP_STYLE_TOP;
-                               }
-                               index++;
-                       }
-               }
-       }
-
-       if (index == 1) {
-               item_data->group_style = SETTING_GROUP_STYLE_NONE;
-       } else if (index == 2) {
-               item_data->group_style = SETTING_GROUP_STYLE_BOTTOM;
-       }
-
-       SETTING_TRACE_END;
-}
-
-static void __load_applications_level0_list(void *data)
-{
-       setting_main_appdata *ad = data;
-       __load_applications_menu_list(ad, Cfg_Item_Pos_Level0);
-}
-
-static void __load_applications_level_all_list(void *data)
-{
-       SETTING_TRACE_BEGIN;
-       setting_main_appdata *ad = data;
-       __load_applications_menu_list(ad, Cfg_Item_Pos_Level_All);
-}
-
-bool is_3rdapp_installed_setting_cfg(char* pkgname)
-{
-       SETTING_TRACE_BEGIN;
-       char path[512];
-
-       SETTING_TRACE("1");
-       if (snprintf(path, 512, PLUGIN_PREFIX"/apps/%s/setting/setting.xml", pkgname) < 0)
-               return false;
-
-       struct stat st;
-       bool result_opt = false;
-
-       if(stat(path, &st) == 0) {
-               result_opt = true;
-       } else {
-               SETTING_TRACE_ERROR(" %s is *NOT* present\n", path);
-               result_opt = false;
-       }
-
-       return result_opt;
-}
-
-static int __pkg_list_cb (const pkgmgrinfo_pkginfo_h handle, void *data)
-{
-       SETTING_TRACE_BEGIN;
-
-       DrawAppInfo* pinfo = (DrawAppInfo*)data;
-
-       int ret = -1;
-       char *pkgid;
-       ret = pkgmgr_pkginfo_get_pkgid(handle, &pkgid);
-       if(ret < 0) {
-               SETTING_TRACE(">>>>> pkgmgr_pkginfo_get_pkgid() failed\n");
-       }
-
-       char *label;
-       ret = pkgmgr_pkginfo_get_label(handle, &label);
-       if(ret < 0) {
-               SETTING_TRACE(">>>>> pkgmgr_pkginfo_get_pkg_name() failed\n");
-       }
-       SETTING_TRACE(" 3rd party - pkg id : ----> %s,  pkg name ----> %s ", pkgid, label);
-
-       // appid - 1234567890.AppSetting2
-       // pkgid - 1234567890
-    char *name = pkgid;
-
-       if (is_3rdapp_installed_setting_cfg(pkgid) == true )
+          )
        {
-               pinfo->ncount++;
-               // draw code here
-               if (pinfo->draw_app != NULL)
+               SETTING_TRACE("pitem->ug_name:%s", pitem->ug_name);
+               if(app_launcher(pitem->ug_name) == 0)
                {
-                       SETTING_TRACE(">>> pkg name --> %s ", pkgid);
-                       pinfo->draw_app(pinfo->data, strdup(label)/* appname*/, strdup(pkgid)/* pkg_name*/);
+                       // add timer
+                       ad->event_freeze_timer = ecore_timer_add(1, setting_main_freeze_event_timer_cb, ad);
+                       evas_object_freeze_events_set(ad->navibar_main, EINA_TRUE);
                }
-       }
-
-       SETTING_TRACE_END;
-    return 0;
-
-}
-
-static void get_3rdapp_installed_setting_list()
-{
-       SETTING_TRACE_BEGIN;
-       int val = 1;
-
-       pkgmgrinfo_pkginfo_filter_h handle;
-       pkgmgrinfo_pkginfo_filter_create(&handle);
-       pkgmgrinfo_pkginfo_filter_add_bool(handle, PMINFO_PKGINFO_PROP_PACKAGE_APPSETTING, val);
-
-       pkgmgrinfo_pkginfo_filter_foreach_pkginfo(handle, __pkg_list_cb, NULL);
-}
-
-
-
-/**
- * @param data
- * ex) name : AppSetting4
- * ex) pkgname : UBKFwQidax.AppSetting4
- */
-static void draw_3rdapp(void* data, char* name, char* pkgname)
-{
-       SETTING_TRACE_BEGIN;
-       SETTING_TRACE(" name : %s", name);
-       SETTING_TRACE(" pkgname : %s", pkgname);
-
-       setting_main_appdata *ad = data;
-
-       //3rd cfg
-       char fullpath[512];
-       if (snprintf(fullpath, 512,  PLUGIN_PREFIX"/apps/%s/setting/setting.xml", pkgname) < 0)
+               int click_times = setting_cfg_get_click_times((char *)(pitem->name));
+               setting_cfg_set_click_times((char *)(pitem->name), ++click_times);
+               setting_cfg_file_update();
                return;
-
-       SETTING_TRACE(" fullpath : %s", fullpath);
-
-       if (ad)
-       {
-               char* plugin_path =  strdup(fullpath);
-               Setting_GenGroupItem_Data * plugin_node = setting_create_Gendial_field_groupitem(ad->main_genlist,
-                                                          &(ad->itc[GENDIAL_Type_1text_1icon_2]),
-                                                          NULL,
-                                                          setting_main_click_list_plugin_cb,
-                                                          ad,
-                                                          SWALLOW_Type_INVALID,
-                                                          IMG_DefaultIcon, NULL,
-                                                          0, name, plugin_path,        // <<-- refactoring
-                                                          NULL);
-       }
-       SETTING_TRACE_END;
-}
-
-/**
- * get 3rd party applist from AIL & searching dir/file by the defined rule
- * @param data ad
- * if data is NULL --> just get how many items are there
- * if data is NOT NULL --> draw UI code
- */
-static int get_downloadapp_list(void* data)
-{
-       SETTING_TRACE_BEGIN;
-
-       setting_main_appdata *ad = data;
-
-       int val = 1;
-       pkgmgrinfo_pkginfo_filter_h handle;
-       pkgmgrinfo_pkginfo_filter_create(&handle);
-       pkgmgrinfo_pkginfo_filter_add_bool(handle, PMINFO_PKGINFO_PROP_PACKAGE_APPSETTING, val);
-
-
-       int ncount = 0;
-       DrawAppInfo* pinfo = (DrawAppInfo*)malloc(sizeof(DrawAppInfo));
-
-       if (pinfo) {
-               pinfo->ncount = 0;
-               pinfo->draw_app = draw_3rdapp;
-               pinfo->data = ad;
-               pkgmgrinfo_pkginfo_filter_foreach_pkginfo(handle, __pkg_list_cb, pinfo);
-
-               ncount = pinfo->ncount;
-
-               free(pinfo);
-               pinfo = NULL;
-       }
-
-       if (handle) {
-               if (PMINFO_R_OK == pkgmgrinfo_pkginfo_filter_destroy(handle)) {
-                       SETTING_TRACE("remove pkginfo successfully");
-               } else {
-                       SETTING_TRACE("failed removing pkginfo");
-               }
-               handle = NULL;
        }
 
-       SETTING_TRACE_END;
-       return ncount;
-}
-
-static int __get_downloaded_apps_num(Cfg_Item_Position inputPos)
-{
-       SETTING_TRACE_BEGIN;
-       SETTING_TRACE_DEBUG("pos :%d", inputPos);
-       int downloaded_apps_num = 0;
-       Cfg_Item_Position tmpPos = Cfg_Item_Pos_Uninstall;
-       int i, j;
-       for (i = 0; i < setting_cfg_get_category_length(); i++) {
-               if (safeStrCmp
-                   (setting_cfg_get_category_name(i), KeyStr_DownloadedAPPs))
-                       continue;
-
-               for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
-                       tmpPos = (Cfg_Item_Position) setting_cfg_get_pos_idx(i, j);
-                       if (Cfg_Item_Pos_Level_All == inputPos) {
-                       } else if (inputPos != tmpPos) {        /* not in the inputPos level */
-                               continue;
-                       }
-
-                       downloaded_apps_num++;
+       //special checking:
+       //1.Network cannot work when SIM card is not prepared
+       if (safeStrCmp(pitem->name, KeyStr_Network) == 0) {
+               int err = 0;
+               int value;
+               setting_get_int_slp_key(INT_SLP_SETTING_SIM_SLOT, &value, &err);
+               if (VCONFKEY_TELEPHONY_SIM_INSERTED != value)
+               {
+                       setting_create_simple_popup(NULL, ad->win_main, NULL,
+                                                   "IDS_ST_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES");
+                       SETTING_TRACE_ERROR("*** [ERR] Invalid SIM. sim_slot_type=%d ***",value);
+                       return;
                }
        }
-
-       // draw UI with AUL code
-#ifdef PLUGIN
-       downloaded_apps_num = get_downloadapp_list(NULL);
-       SETTING_TRACE("Exit %s with return[%d]",__FUNCTION__, downloaded_apps_num);
-#endif
-
-       SETTING_TRACE("Exit %s with return[%d]",__FUNCTION__, downloaded_apps_num);
-       return downloaded_apps_num;
-}
-
-
-static void __load_downloaded_apps_menu_list(void *data,
-                                            Cfg_Item_Position inputPos)
-{
-       SETTING_TRACE_BEGIN;
-       SETTING_TRACE_DEBUG("pos :%d", inputPos);
-       setting_main_appdata *ad = data;
-
-       // if the number of download apps is zero, display a bottom seperator
-       if (0 == __get_downloaded_apps_num(inputPos)) {
-               Elm_Object_Item *item = NULL;
-               item = elm_genlist_item_append(ad->main_genlist, &itc_bottom_seperator, NULL, NULL,
-                                       ELM_GENLIST_ITEM_NONE, NULL, NULL);
-               elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
-               return;
-       }
-
-       //group title
-       setting_create_Gendial_field_group_titleItem(ad->main_genlist,
-                                                    &(ad->itc[GENDIAL_Type_group_item]),
-                                                    NULL,
-                                                    ELM_GENLIST_ITEM_NONE,
-                                                    KeyStr_DownloadedAPPs,
-                                                    NULL);
-       get_downloadapp_list(ad);
-       //SETTING_TRACE("Exit %s with return[%d]",__FUNCTION__, downloaded_apps_num);
-       SETTING_TRACE_END;
-}
-
-static void __load_downloaded_apps_level0_list(void *data)
-{
-       setting_main_appdata *ad = data;
-       __load_downloaded_apps_menu_list(ad, Cfg_Item_Pos_Level0);
-}
-
-static void __load_downloaded_apps_level_all_list(void *data)
-{
-       SETTING_TRACE_BEGIN;
-       setting_main_appdata *ad = data;
-       __load_downloaded_apps_menu_list(ad, Cfg_Item_Pos_Level_All);
-}
-
-static void __check_all_view_clear(void *data)
-{
-       SETTING_TRACE_BEGIN;
-       ret_if(!data);
-       setting_main_appdata *ad = data;
-       if (ad->item_check_list) {
-               eina_list_free(ad->item_check_list);
-               ad->item_check_list = NULL;
-       }
-
-       ad->gl_sel_all = NULL;
-       ad->edit_preferred_genlist  = NULL;
-       //ad->controllbar_all_check = NULL;
-       ad->check_all_item =NULL;
-}
-
-static void __prefered_buttons_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       SETTING_TRACE_BEGIN;
-       ret_if(!data);
-       setting_main_appdata *ad = (setting_main_appdata *) data;
-       const char *key = NULL;
-
-       key = elm_object_text_get(obj);
-       setting_retm_if(data == NULL
-                       || key == NULL, "data == NULL || key == NULL");
-
-       SETTING_TRACE_DEBUG("press button: %s", key);
-
-       // "Done"
-       if (!safeStrCmp(key, dgettext("sys_string", "IDS_COM_SK_DONE"))) {
-
-               if (ad->profile_type == MAIN_PROFILE_ALL) {
-                       SETTING_TRACE_DEBUG("Cancel to hide current view.");
-                       setting_try_save_check_list(ad);        /* need to save too */
-                       __check_all_view_clear(ad);
-                       elm_naviframe_item_pop(ad->navibar_main);       // pop(preferred) --> main
+       //2.powersaving cannot work when Flightmode on
+       if (safeStrCmp(pitem->name, KeyStr_Powersaving) == 0) {
+               int status = 0;
+               vconf_get_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, &status);
+               if (status)
+               {
+                       setting_create_simple_popup(NULL, ad->win_main,
+                                                   NULL, "IDS_IM_POP_THIS_FEATURE_IS_NOT_AVAILABLE_WHILE_FLIGHT_MODE_IS_ON");
                        return;
                }
-
-               // MAIN_PROFILE_PREFERRED and Etc
-               // redraw setting-main
-               setting_try_save_check_list(ad);
-               elm_naviframe_item_pop(ad->navibar_main);  // pop (preferred) -> main
-
-               //After the view is popuped, all the object handlers should be reset NULL.
-               __check_all_view_clear(ad);
-               ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
-               ad->load_fns[Func_Type_System] = __load_system_level0_list;
-               ad->load_fns[Func_Type_Apps] = __load_applications_level0_list;
-               ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level0_list;
-               int ret = setting_main_refresh(ad);
-               ret_if(ret != SETTING_RETURN_SUCCESS);
-               return;
-       }
-
-       // "Cancel"
-       if (!safeStrCmp(key, setting_gettext("IDS_COM_SK_CANCEL"))
-           || !safeStrCmp(key, dgettext("sys_string", "IDS_COM_BODY_BACK"))) {
-               SETTING_TRACE_DEBUG("Cancel to hide current view.");
-               elm_naviframe_item_pop(ad->navibar_main);
-               //After the view is popuped, all the object handlers should be reset NULL.
-               __check_all_view_clear(ad);
-               return;
-       }
-}
-
-
-static void __btnback_clicked_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       SETTING_TRACE_BEGIN;
-       ret_if(!data);
-       setting_main_appdata *ad = (setting_main_appdata *) data;
-       elm_win_lower(ad->win_main);
-}
-
-static Eina_Bool __refresh_on_idle(void *data)
-{
-       SETTING_TRACE_BEGIN;
-       retv_if(!data, FALSE);
-       setting_main_appdata *ad = data;
-       if (MAIN_PROFILE_ALL == ad->profile_type)
-       {
-               ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level_all_list;
-               ad->load_fns[Func_Type_System] = __load_system_level_all_list;
-               ad->load_fns[Func_Type_Apps] = __load_applications_level_all_list;
-               ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level_all_list;
-               setting_main_refresh(ad);
-       }
-       else if (MAIN_PROFILE_PREFERRED == ad->profile_type)
-       {
-               ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
-               ad->load_fns[Func_Type_System] = __load_system_level0_list;
-               ad->load_fns[Func_Type_Apps] = __load_applications_level0_list;
-               ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level0_list;
-               setting_main_refresh(ad);
-       }
-       ad->refresh_idler = NULL;
-       return FALSE;
-}
-
-static void __allFrequent_btn_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       SETTING_TRACE_BEGIN;
-       ret_if(!data || !obj);
-       setting_main_appdata *ad = (setting_main_appdata *) data;
-       //if already has the task,cancel the old task with ecore_idler_del,then add new idler task.
-       if (ad->refresh_idler) {
-               ecore_idler_del(ad->refresh_idler);
-               ad->refresh_idler = NULL;
-       }
-
-       //Elm_Object_Item *item = elm_toolbar_first_item_get(obj);
-       //ret_if(!item);
-       if (MAIN_PROFILE_ALL == ad->profile_type)
-       {
-               SETTING_TRACE("Change to Preferred view");
-               elm_object_text_set(obj, _(ALL_STR));
-               ad->profile_type = MAIN_PROFILE_PREFERRED;
-       }
-       else if (MAIN_PROFILE_PREFERRED == ad->profile_type)
-       {
-               SETTING_TRACE("Change to ALL view");
-               elm_object_text_set(obj, _(PREFERRED_STR));
-               ad->profile_type = MAIN_PROFILE_ALL;
-       }
-       else
-       {
-               return;
-       }
-       ad->refresh_idler = ecore_idler_add((Ecore_Task_Cb) __refresh_on_idle, ad);
-}
-
-static void __setting_show_title_toolbar(void *data, Evas_Object *obj, void *event_info)
-{
-    SETTING_TRACE_BEGIN;
-    //elm_object_item_signal_emit(data, "elm,state,sip,shown", "");
-    setting_main_appdata *ad = (setting_main_appdata *) data;
-
-    Evas_Object *navi_bar = NULL;
-
-    if (ad->isInUGMode && ad->ug) {
-        Evas_Object *layout = (Evas_Object *)ug_get_layout(ad->ug);
-        if (layout)
-            navi_bar = elm_object_part_content_get(layout, "elm.swallow.content");
-    } else {
-        navi_bar = ad->navibar_main;
-    }
-
-    const char *support = evas_object_data_get(navi_bar, "sip.naviframe.title_obj");
-    SETTING_TRACE("support:%s", support);
-    Elm_Object_Item *top_item = elm_naviframe_top_item_get(navi_bar);
-    if (0 == safeStrCmp("SEARCH", support))
-    {
-           /* if (top_item)
-                   elm_object_item_signal_emit(top_item, "elm,state,toolbar,instant_open", ""); */
-    } else if (support)
-    {
-           if (top_item)
-                   elm_object_item_signal_emit(top_item, "elm,state,sip,shown", "");
-    }
-
-}
-
-static void __setting_hide_title_toolbar(void *data, Evas_Object *obj, void *event_info)
-{
-    SETTING_TRACE_BEGIN;
-    //elm_object_item_signal_emit(data, "elm,state,sip,hidden", "");
-    setting_main_appdata *ad = (setting_main_appdata *) data;
-
-    Evas_Object *navi_bar = NULL;
-
-    if (ad->isInUGMode && ad->ug) {
-        Evas_Object *layout = (Evas_Object *)ug_get_layout(ad->ug);
-        if (layout)
-            navi_bar = elm_object_part_content_get(layout, "elm.swallow.content");
-    } else {
-        navi_bar = ad->navibar_main;
-    }
-
-    const char *support = evas_object_data_get(navi_bar, "sip.naviframe.title_obj");
-
-    SETTING_TRACE("support:%s", support);
-    Elm_Object_Item *top_item = elm_naviframe_top_item_get(navi_bar);
-    if (0 == safeStrCmp("SEARCH", support))
-    {
-           /* if (top_item)
-                   elm_object_item_signal_emit(top_item, "elm,state,toolbar,instant_close", ""); */
-    }
-    else if (support)
-    {
-           if (top_item)
-                   elm_object_item_signal_emit(top_item, "elm,state,sip,hidden", "");
-    }
-
-}
-
-static bool __setting_create_main_view(void *data)
-{
-       SETTING_TRACE_BEGIN;
-       /* error check */
-       setting_retvm_if(data == NULL, FALSE, "data == NULL");
-       setting_main_appdata *ad = (setting_main_appdata *) data;
-
-       Evas_Object *conform = elm_conformant_add(ad->win_main);
-       ad->ly_main = setting_create_win_layout(ad->win_main, ad->win_main);
-       evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       evas_object_size_hint_align_set(conform, EVAS_HINT_FILL, EVAS_HINT_FILL);
-       elm_win_resize_object_add(ad->win_main, conform);
-       elm_object_content_set(conform, ad->ly_main);
-       evas_object_show(conform);
-
-    evas_object_smart_callback_add(conform, "virtualkeypad,state,on", __setting_show_title_toolbar, ad);
-    evas_object_smart_callback_add(conform, "virtualkeypad,state,off", __setting_hide_title_toolbar, ad);
-
-       elm_win_conformant_set(ad->win_main, EINA_TRUE);
-
-       ad->conform = conform;
-
-       ad->navibar_main = setting_create_navi_bar(ad->ly_main);
-
-       ad->main_genlist = elm_genlist_add(ad->navibar_main);
-       elm_object_style_set(ad->main_genlist, "dialogue");
-       retvm_if(ad->main_genlist == NULL, FALSE,
-                "Cannot set scroller object as contento of layout");
-
-       //elm_genlist_homogeneous_set(ad->main_genlist, EINA_TRUE);
-       elm_genlist_clear(ad->main_genlist);    /* first to clear list */
-       evas_object_smart_callback_add(ad->main_genlist, "realized", __gl_realized, ad);
-
-       setting_create_navi_bar_buttons(_("IDS_COM_BODY_SETTINGS"),
-                                       _("IDS_COM_BODY_BACK"), NULL, _("IDS_ST_OPT_ALL"),
-                                       __btnback_clicked_cb, NULL,
-                                       __allFrequent_btn_cb, ad, ad->main_genlist,
-                                       ad->navibar_main, NULL);
-
-       ad->profile_type = MAIN_PROFILE_PREFERRED;
-       ad->load_fns[Func_Type_Connectivity] = __load_connectivity_level0_list;
-       ad->load_fns[Func_Type_System] = __load_system_level0_list;
-       ad->load_fns[Func_Type_Apps] = __load_applications_level_all_list;
-       ad->load_fns[Func_Type_DownApp] = __load_downloaded_apps_level_all_list;
-       setting_main_refresh(ad);
-       return TRUE;
-}
-
-static bool __setting_create_prefered_view(void *data)
-{
-       SETTING_TRACE_BEGIN;
-       /* error check */
-       setting_retvm_if(data == NULL, FALSE, "data == NULL");
-       setting_main_appdata *ad = (setting_main_appdata *) data;
-
-       /* the genlist will be destroyed with its parent view, when using elm_naviframe_item_pop() to destroy the view. */
-       ad->edit_preferred_genlist = elm_genlist_add(ad->win_main);
-       elm_object_style_set(ad->edit_preferred_genlist, "dialogue");
-       elm_genlist_clear(ad->edit_preferred_genlist);  /* first to clear list */
-
-       /*  [UI] edit preffered view */
-       Evas_Object *sub_layout = elm_layout_add(ad->win_main);
-       elm_object_style_set(sub_layout, "dialogue");
-       elm_layout_file_set(sub_layout, SETTING_THEME_EDJ_NAME, "search_layout");
-       evas_object_size_hint_weight_set(sub_layout, EVAS_HINT_EXPAND, 0.0);
-       evas_object_show(sub_layout);
-
-       ad->gl_sel_all = elm_genlist_add(ad->win_main);
-       elm_genlist_clear(ad->gl_sel_all);      /* first to clear list */
-       elm_genlist_bounce_set(ad->gl_sel_all, 0, 0);
-
-       elm_object_part_content_set(sub_layout, "search_bar", ad->gl_sel_all);  /*  add 'Select all' */
-       elm_object_part_content_set(sub_layout, "search_list", ad->edit_preferred_genlist);     /*  add Genlist */
-
-       /*  push, not create */
-       setting_push_layout_navi_bar(_(EDIT_PREFERRED_STR),
-                                    _("IDS_COM_SK_CANCEL"),
-                                    _("IDS_COM_SK_DONE"), NULL,
-                                    __prefered_buttons_cb, __prefered_buttons_cb, NULL, ad,
-                                    sub_layout, ad->navibar_main,
-                                    NULL);
-       SETTING_TRACE_END;
-       return TRUE;
-}
-
-static void setting_main_tapi_event_cb(TapiHandle *handle, int result, void *data, void *user_data)
-{
-       SETTING_TRACE_BEGIN;
-       ret_if(!user_data);
-       setting_main_appdata *ad = user_data;
-       ad->b_fm_requesting = FALSE;
-       SETTING_TRACE("result:%d", result);
-
-       int err = 0;
-       switch (result) {
-       case TAPI_POWER_FLIGHT_MODE_RESP_ON:
-
-               setting_set_bool_slp_key(BOOL_SLP_SETTING_FLIGHT_MODE,
-                                        SETTING_ON_OFF_BTN_ON, &err);
-
-               //If Setting has validate operation (fm_waiting_op == FM_LEAVE) to process, process it.
-               //Otherwise, do nothing
-               if (FM_LEAVE == ad->fm_waiting_op)
-               {
-                       //Send the latest operation
-                       ad->fm_waiting_op = FM_INVALID;
-                       err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
-                       setting_retm_if(err != TAPI_API_SUCCESS,
-                                       "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
-
-                       //sucessfully sent,
-                       ad->b_fm_requesting = TRUE;
-
-               }
-               break;
-
-       case TAPI_POWER_FLIGHT_MODE_RESP_OFF:
-
-               setting_set_bool_slp_key(BOOL_SLP_SETTING_FLIGHT_MODE,
-                                        SETTING_ON_OFF_BTN_OFF, &err);
-
-               //If Setting has validate operation (here, fm_waiting_op == FM_ENTER) to process,process it.
-               //Otherwise, do nothing
-               if (FM_ENTER == ad->fm_waiting_op)
-               {
-                       //Send the latest operation
-                       ad->fm_waiting_op = FM_INVALID;
-                       err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
-                       setting_retm_if(err != TAPI_API_SUCCESS,
-                                       "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
-
-                       //sucessfully sent,
-                       ad->b_fm_requesting = TRUE;
-               }
-
-               break;
-
-       case TAPI_POWER_FLIGHT_MODE_RESP_FAIL:
-               //Setting has a validate operation to process, Send the operation request
-               if (FM_ENTER == ad->fm_waiting_op)
-               {
-                       ad->fm_waiting_op = FM_INVALID;
-                       err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
-
-                       setting_retm_if(err != TAPI_API_SUCCESS,
-                                       "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
-                       ad->b_fm_requesting = TRUE;
-               }
-               else if (FM_LEAVE == ad->fm_waiting_op)
-               {
-                       ad->fm_waiting_op = FM_INVALID;
-                       err = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
-
-                       setting_retm_if(err != TAPI_API_SUCCESS,
-                                       "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
-                       ad->b_fm_requesting = TRUE;
-               }
-               else //Current requset is the last one, Setting needs to notify user
-               {
-                       setting_create_popup_without_btn(ad, ad->win_main,
-                                            _("IDS_COM_POP_ERROR"),
-                                            _("IDS_ST_POP_UNABLE_TO_TURN_ON_FLIGHT_MODE_VODA"),
-                                            NULL, POPUP_INTERVAL,
-                                            FALSE, FALSE);
-
-                       //It is need to rollback the status,
-                       if (ad->data_flight) {
-                               ad->data_flight->chk_status = !ad->data_flight->chk_status;
-                               elm_check_state_set(ad->data_flight->eo_check, ad->data_flight->chk_status);
-                       }
-                       return;
-               }
-
-               //sucessfully sent,
-               ad->b_fm_requesting = TRUE;
-
-               break;
-
-       case TAPI_POWER_FLIGHT_MODE_RESP_MAX:
-               setting_create_popup_without_btn(ad, ad->win_main,
-                                    _("IDS_COM_POP_ERROR"),
-                                    _("IDS_COM_POP_UNEXPECTED_ERROR"),
-                                    NULL, POPUP_INTERVAL, FALSE, FALSE);
-
-               //It is need to rollback the status,
-               if (ad->data_flight) {
-                       ad->data_flight->chk_status = !ad->data_flight->chk_status;
-                       elm_check_state_set(ad->data_flight->eo_check, ad->data_flight->chk_status);
-               }
-               break;
-       default:
-               /* do nothing */
-               SETTING_TRACE_DEBUG("default");
-               if(ad->data_flight)
-                       setting_set_bool_slp_key(BOOL_SLP_SETTING_FLIGHT_MODE,
-                                        ad->data_flight->chk_status, &err);
-               break;
-       }
-       return;
-}
-
-static int setting_main_refresh(void *data)
-{
-       SETTING_TRACE_BEGIN;
-       setting_main_appdata *ad = (setting_main_appdata *) data;
-       elm_genlist_clear(ad->main_genlist);    /* first to clear list */
-
-#if 0
-       if (is_ug_installed_by_ug_args("rcs-config"))
-       {
-               Elm_Object_Item *item = elm_genlist_item_append(ad->main_genlist, &itc_seperator, NULL, NULL,
-                                           ELM_GENLIST_ITEM_NONE, NULL, NULL);
-               elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
-               setting_create_Gendial_field_groupitem(ad->main_genlist,
-                                                      &(ad->itc[GENDIAL_Type_1text_1icon_2]),
-                                                      NULL,
-                                                      setting_main_click_list_ex_ug_cb,
-                                                      "rcs-config",
-                                                      SWALLOW_Type_INVALID,
-                                                      IMG_Joyn, NULL,
-                                                      0, KeyStr_Joyn, NULL,
-                                                      NULL);
-       }
-#endif
-
-       int i;
-       for(i = Func_Type_Connectivity; i < Func_Type_MAX; i++)
-               (ad->load_fns[i]) (ad);
-
-       memset(ad->load_fns, 0, Func_Type_MAX *sizeof(menu_list_load_fn));
-       SETTING_TRACE_END;
-       return SETTING_RETURN_SUCCESS;
-}
-
-static int setting_main_create(void *cb)
-{
-       retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
-
-       setting_main_appdata *ad = (setting_main_appdata *) cb;
-       g_main_ad = ad;
-       //pass NULL to let TAPI access default module
-       ad->handle = tel_init(NULL);
-       if (!ad->handle) {
-               SETTING_TRACE_ERROR("*** [ERR] tel_init failed ***");
-       } else {
-               SETTING_TRACE("tel_init ok[handle:%p]", ad->handle);
-       }
-       setting_create_Gendial_itc("dialogue/1text.1icon.2",
-                                  &(ad->itc[GENDIAL_Type_1text_1icon_2]));
-       setting_create_Gendial_itc("dialogue/1text.2icon",
-                                  &(ad->itc[GENDIAL_Type_1text_2icon]));
-       setting_create_Gendial_itc("dialogue/2text.1icon.3",
-                                  &(ad->itc[GENDIAL_Type_1icon_2text]));
-       setting_create_Gendial_itc("dialogue/1text.1icon.2",
-                                  &(ad->itc[GENDIAL_Type_1text_2icon_2]));
-       setting_create_Gendial_itc("dialogue/2text.2icon.3",
-                                  &(ad->itc[GENDIAL_Type_2text_2icon_3]));
-       setting_create_Gendial_itc("dialogue/title",
-                                  &(ad->itc[GENDIAL_Type_group_item]));
-       setting_create_Gendial_itc("select_all",
-                                  &(ad->itc[GENDIAL_Type_sel_all]));
-
-       setting_create_Gendial_itc("dialogue/2text.3", &(ad->itc[GENDIAL_Type_2text_3]));
-
-       ad->view_type = SETTING_VIEW_MAIN;
-       __setting_create_main_view(ad);
-
-       setting_view_main.is_create = 1;
-
-       setting_drawer_list_init();
-       return SETTING_RETURN_SUCCESS;
-}
-
-static int setting_main_destroy(void *cb)
-{
-       SETTING_TRACE_BEGIN;
-       /* error check */
-       retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
-
-       setting_main_appdata *ad = (setting_main_appdata *) cb;
-       if (0 == setting_view_main.is_create)
-       {
-               //already not exsit
-               return SETTING_RETURN_SUCCESS;
-       }
-
-    evas_object_smart_callback_del(ad->conform, "virtualkeypad,state,on", __setting_show_title_toolbar);
-    evas_object_smart_callback_del(ad->conform, "virtualkeypad,state,off", __setting_hide_title_toolbar);
-
-       if (ad->refresh_idler) {
-               ecore_idler_del(ad->refresh_idler);
-               ad->refresh_idler = NULL;
-       }
-
-       if (ad->handle) {
-               int tapi_ret = tel_deinit(ad->handle);
-               if (tapi_ret != TAPI_API_SUCCESS) {
-                       SETTING_TRACE_DEBUG("*** [ERR] tel_deinit. [%d] ***", tapi_ret);
-               } else {
-                       SETTING_TRACE("***  tel_deinit OK ");
-               }
-               ad->handle = NULL;
-       }
-
-       /* then destroy the UI object. */
-       if (ad->item_check_list) {
-               eina_list_free(ad->item_check_list);
-               ad->item_check_list = NULL;
-       } else {
-               SETTING_TRACE("*** ad->item_check_list is NULL - abnormal state ");
-       }
-
-       if (ad->ly_main) {
-               evas_object_del(ad->ly_main);
-               ad->ly_main = NULL;
-       }
-
-       if (ad->flight_popup) {
-               evas_object_del(ad->flight_popup);
-               ad->flight_popup = NULL;
-       }
-
-       evas_object_smart_callback_del(ad->main_genlist, "realized", __gl_realized);
-
-       setting_dbus_handler_fini();
-       setting_drawer_list_fini();
-
-       setting_view_main.is_create = 0;
-       SETTING_TRACE_END;
-       return SETTING_RETURN_SUCCESS;
-}
-
-static int setting_main_update(void *cb)
-{
-       SETTING_TRACE_BEGIN;
-
-       /* error check */
-       retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
-
-       setting_main_appdata *ad = (setting_main_appdata *) cb;
-
-       if (ad->ly_main != NULL) {
-               //evas_object_show(ad->ly_main);
-       }
-
-       return SETTING_RETURN_SUCCESS;
-}
-
-static int setting_main_cleanup(void *cb)
-{
-       SETTING_TRACE_BEGIN;
-       /* error check */
-       retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
-
-       setting_main_appdata *ad = (setting_main_appdata *) cb;
-
-       if (ad->ly_main != NULL) {
-               //evas_object_hide(ad->ly_main);
-       }
-
-       return SETTING_RETURN_SUCCESS;
-}
-
-/* ***************************************************
- *
- *general func
- *
- ***************************************************/
-
-void setting_update_gl_item(void* data)
-{
-       SETTING_TRACE_BEGIN;
-       setting_main_appdata *ad = data;
-       retm_if(!data, "Invalid argument: data is NULL");
-
-       int nDx = 0;
-       Eina_Bool bGlUpdate = EINA_FALSE;
-       Setting_GenGroupItem_Data *item_to_update = NULL;
-
-       for(;nDx<GL_ITEM_MAX; nDx++) {
-               if(EINA_TRUE == ad->updateItems[nDx]) {
-                       switch (nDx)
-                       {
-                       case GL_ITEM_WIFI:
-                               item_to_update = ad->data_wifi;
-                               bGlUpdate = EINA_TRUE;
-                               break;
-                       case GL_ITEM_BT:
-                               item_to_update = ad->data_bt;
-                               bGlUpdate = EINA_TRUE;
-                               break;
-                       case GL_ITEM_NFC:
-                               item_to_update = ad->data_nfc;
-                               bGlUpdate = EINA_TRUE;
-                               break;
-                       case GL_ITEM_FLIGHT:
-                               item_to_update = ad->data_flight;
-                               bGlUpdate = EINA_FALSE;
-                               break;
-
-
-
-
-                       default: // other case
-                               continue;
-                       }
-
-                       if (item_to_update) {
-                               SETTING_TRACE("gl update [%s], bGlUpdate:%d", _(item_to_update->keyStr), bGlUpdate);
-                               if(bGlUpdate) {
-                                       SETTING_TRACE("gl update:%d", nDx);
-                                       elm_object_item_data_set(item_to_update->item, item_to_update);
-                                       elm_genlist_item_update(item_to_update->item);
-                               } else {
-                                       SETTING_TRACE("chk update:%d", nDx);
-                                       elm_check_state_set(item_to_update->eo_check, item_to_update->chk_status);
-                               }
-                       }
-
-                       ad->updateItems[nDx] = EINA_FALSE;
-               } // if(EINA_TRUE == ad->updateItems[nDx])
-
-       }
-
-       SETTING_TRACE_END;
-       return;
-}
-
-void setting_main_destroy_ug_cb(ui_gadget_h ug, void *priv)
-{
-       setting_main_appdata *ad = (setting_main_appdata *) priv;
-       if (!ad)
-               return;         /*  do nothing if ad is NULL */
-
-       if (ug) {
-               ug_destroy(ug);
-               ad->ug = NULL;
-       }
-
-       setting_main_click_list_item_reset_data(ad, NULL);
-
-       // update main genlist in unloading UG
-       SETTING_TRACE("update main genlist in unloading UG");
-       setting_update_gl_item(ad);
-
-       SETTING_TRACE_END;
-}
-
-void setting_main_result_ug_cb(ui_gadget_h ug, service_h service,
-                                     void *priv)
-{
-       if (!priv) return;
-
-       // set default local automatically
-       set_defaultLangICU();
-}
-
-void setting_main_layout_ug_cb(ui_gadget_h ug, enum ug_mode mode,
-                                     void *priv)
-{
-       setting_main_appdata *ad = (setting_main_appdata *) priv;
-       Evas_Object *base;
-
-       if (!priv)
-               return;
-       SETTING_TRACE_BEGIN;
-
-       base = (Evas_Object *) ug_get_layout(ug);
-       if (!base)
-               return;
-
-       switch (mode) {
-       case UG_MODE_FULLVIEW:
-               evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,
-                                                EVAS_HINT_EXPAND);
-               evas_object_show(base);
-               break;
-       default:
-               break;
-       }
-
-       SETTING_TRACE_END;
-}
-
-/* ***************************************************
- *
- *call back func
- *
- ***************************************************/
-
-void setting_main_click_list_item_reset_data(void *data,
-                                                   Evas_Object *obj)
-{
-       SETTING_TRACE_BEGIN;
-       setting_main_appdata *ad = (setting_main_appdata *) data;
-
-       ad->isInUGMode = FALSE;
-
-       SETTING_TRACE_END;
-}
-
-void /* obj is the layout clicked */
-setting_main_click_list_item_ug_cb(void *data, Evas_Object *obj,
-                                  char *ug_to_load, service_h svc,
-                                  struct ug_cbs *cbs)
-{
-       SETTING_TRACE_BEGIN;
-       setting_main_appdata *ad = (setting_main_appdata *) data;
-       if (!ug_to_load) {
-               setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
-               return;
-       }
-#if DISABLED_CODE
-       char ug_file[PATH_MAX];
-       if (snprintf
-           (ug_file, PATH_MAX, "%s/libug-%s.so", SETTING_UG_PATH,
-            ug_to_load) < 0)
-               return;
-       SETTING_TRACE("ug_file:%s", ug_file);
-       if (!ecore_file_exists(ug_file)) {
-               setting_create_simple_popup(ad, ad->win_main, NULL, NO_UG_FOUND_MSG);
-               return;
-       }
-#endif
-       SETTING_TRACE("to create libug-%s.so", ug_to_load);
-       ad->ug = ug_create(NULL, ug_to_load, UG_MODE_FULLVIEW, svc, cbs);
-       if (ad->ug) {
-               ad->isInUGMode = TRUE;
-               memset(ad->cur_loaded_ug, 0x00, MAX_DISPLAY_NAME_LEN_ON_UI);
-               safeCopyStr(ad->cur_loaded_ug, ug_to_load, 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);
-       }
-       SETTING_TRACE_END;
-}
-
-void
-setting_main_click_list_default_ug_cb(void *data, Evas_Object *obj,
-                                     void *event_info)
-{
-       setting_main_appdata *ad = data;
-       setting_create_simple_popup(ad, ad->win_main, NULL,
-                                         NO_UG_FOUND_MSG);
-}
-
-void
-setting_main_click_list_usb_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       SETTING_TRACE_BEGIN;
-       retm_if(event_info == NULL, "Invalid argument: event info is NULL");
-
-       int err;
-       int value = -1;
-       char *str_text = USB_NEED_OFF;
-
-       Elm_Object_Item *item = (Elm_Object_Item *) event_info;
-#if 0
-       setting_get_int_slp_key(INT_SLP_SETTING_MOBILE_AP_STATUS, &value, &err);
-       if (err != 0)
-       {
-               SETTING_TRACE_ERROR("FAIL: VCONFKEY_MOBILE_HOTSPOT_MODE may not exist\n");
-               setting_main_click_list_ex_ug_cb(data, obj, item);
-               return;
-       }
-#endif
-       /* If mobile hotspot is on, going USB utilties is blocked by a popup*/
-       if (value & VCONFKEY_MOBILE_HOTSPOT_MODE_USB)
-       {
-               elm_genlist_item_selected_set(item, EINA_FALSE);
-               setting_create_simple_popup(g_main_ad, g_main_ad->win_main, NULL, (str_text));
-       }
-       else
-       {
-               setting_main_click_list_ex_ug_cb(data, obj, item);
-       }
-
-       SETTING_TRACE_END;
-}
-
-void setting_main_click_list_more_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       SETTING_TRACE_BEGIN;
-       retm_if(event_info == NULL, "Invalid argument: event info is NULL");
-       Elm_Object_Item *item = (Elm_Object_Item *) event_info;
-       elm_genlist_item_selected_set(item, EINA_FALSE);
-       retm_if(data == NULL, "Invalid argument: data is NULL");
-       setting_main_appdata *ad = data;
-       Setting_GenGroupItem_Data *selected_item_data =
-                   (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
-       SETTING_TRACE("selected_item_data->keyStr:%s", selected_item_data->keyStr);
-       if (0 == safeStrCmp(selected_item_data->keyStr, KeyStr_MoreConnect))
-       {
-               ad->view_load = SETTING_VIEW_CONNECTIVE_MORE;
-       }
-       else if (0 == safeStrCmp(selected_item_data->keyStr, KeyStr_MoreSystem))
-       {
-               ad->view_load = SETTING_VIEW_SYSTEM_MORE;
-       }
-       else
-       {
-               return;
-       }
-       setting_view_change(&setting_view_main, &setting_view_more_menu, ad);
-}
-
-
-void
-setting_main_click_list_ex_ug_cb(void *data, Evas_Object *obj,
-                                void *event_info)
-{
-       SETTING_TRACE_BEGIN;
-       retm_if(event_info == NULL, "Invalid argument: event info is NULL");
-       Elm_Object_Item *item = (Elm_Object_Item *) event_info;
-
-       elm_genlist_item_selected_set(item, EINA_FALSE);
-
-       if (g_main_ad->ug) {
-               SETTING_TRACE
-                   ("[ad->ug non-NULL]skip genlist click event!!");
-
-               SETTING_TRACE_END;
-               return;
-       }
-
-       if (NULL == data) {     /* pass NULL to ug_args when create setting.cfg. */
-               setting_create_simple_popup(g_main_ad,
-                                         g_main_ad->win_main,
-                                         NULL, NO_UG_FOUND_MSG);
-               SETTING_TRACE_END;
-               return;
        }
 
-       setting_main_appdata *ad = g_main_ad;
-
-       /*  if UG is created by Setting app, setting_main_click_list_ex_ug_cb is diabled. */
-       if (ad->isInUGMode) {
-               SETTING_TRACE("isInUGMode : TRUE - another UG is running now.");
-               ad->isInUGMode = FALSE;
-               SETTING_TRACE_END;
-               return;
-       } else {
-               SETTING_TRACE
-                   ("isInUGMode : FALSE - another UG is NOT running now.")
+       //3.Quick command cannot work when TTS on
+       int tts_state = 0;
+       vconf_get_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS, &tts_state);
+       if (tts_state)
+       {
+               if (!safeStrCmp(pitem->name, KeyStr_QUICK_CMD))
+               {
+                       char noti_str[MAX_SPECIALIZITION_LEN + 1] = { 0, };
+                       snprintf(noti_str, sizeof(noti_str), _(FEATURE_UNAVALIABLE_WHILE_TTS_ON), _(KeyStr_QUICK_CMD));
+                       setting_create_popup_without_btn(NULL, ad->win_main, NULL, _(noti_str),
+                                                        NULL, 0.0, TRUE, FALSE);
+                       return;
+               }
        }
 
-       Setting_GenGroupItem_Data *selected_item_data =
-           (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
-       setting_main_click_list_item_reset_data(ad, obj);
-       const char *item_name = _(selected_item_data->keyStr);
-       ret_if(!item_name);
-
+       // initialize UG module
        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;
@@ -2183,640 +708,445 @@ setting_main_click_list_ex_ug_cb(void *data, Evas_Object *obj,
        cbs->destroy_cb = setting_main_destroy_ug_cb;
        cbs->priv = (void *)ad;
 
-       char *path = get_ug_path_from_ug_args(data);
-       service_h svc = get_bundle_from_ug_args(data);
-       setting_main_click_list_item_ug_cb(ad, obj, path, svc, cbs);
-       if (path)
-               FREE(path);
-       if (cbs)
-               FREE(cbs);
-       path = NULL;
-       cbs = NULL;
-       service_destroy(svc);
+       char *path = get_ug_path_from_ug_args((void *)(pitem->ug_name));        // void* -> char*
+       app_control_h svc = get_bundle_from_ug_args((void *)(pitem->ug_name));  // void* -> char*
+       setting_main_click_grid_item_ug_cb(ad, obj, path, svc, cbs);
+
+       FREE(path);
+       FREE(cbs);
+       app_control_destroy(svc);
+
+       int click_times = setting_cfg_get_click_times((char *)(pitem->name));
+       setting_cfg_set_click_times((char *)(pitem->name), ++click_times);
+       setting_cfg_file_update();
 }
-void
-setting_main_click_list_plugin_cb(void *data, Evas_Object *obj,
-                                void *event_info)
+
+static Eina_Bool _navibar_back_pop_cb(void *data, Elm_Object_Item *it)
 {
        SETTING_TRACE_BEGIN;
-       retm_if(event_info == NULL, "Invalid argument: event info is NULL");
-       Elm_Object_Item *item = (Elm_Object_Item *) event_info;
-       elm_genlist_item_selected_set(item, EINA_FALSE);
-       Setting_GenGroupItem_Data *selected_item = (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
+       retv_if(!data, EINA_FALSE);
+       setting_main_appdata *ad = (setting_main_appdata *) data;
+
+       if (ad && ad->win_main)
+       {
+               elm_win_lower(ad->win_main);
+       }
+
+       SETTING_TRACE_END;
+       return EINA_FALSE;
+}
 
-       setting_main_appdata *ad = data;
 
-       ad->plugin_path = strdup(selected_item->sub_desc);
-       SETTING_TRACE(" >> SELECTED plugin name : %s \n", ad->plugin_path);
+void _setting_genlist_itc_init(void *cb)
+{
+       setting_main_appdata *ad = (setting_main_appdata *) cb;
 
-       PluginNode* plugin_node = setting_plugin_create(g_main_ad->navibar_main, g_main_ad->win_main);
-       plugin_node->plugin_path = strdup(selected_item->sub_desc);
-       ad->plugin_node = plugin_node; // the selected plugin name
+       // [UI] create structures for genlist style
+       setting_create_Gendial_itc("1line", &(ad->itc[GENDIAL_Type_1text_1icon_2]));
+       setting_create_Gendial_itc("1line", &(ad->itc[GENDIAL_Type_1text_2icon]));
+       setting_create_Gendial_itc("1line", &(ad->itc[GENDIAL_Type_1icon_2text]));
+       setting_create_Gendial_itc("dialogue/1text.1icon.2", &(ad->itc[GENDIAL_Type_1text_2icon_2]));
+       setting_create_Gendial_itc("dialogue/2text.2icon.3", &(ad->itc[GENDIAL_Type_2text_2icon_3]));
+       setting_create_Gendial_itc("groupindex", &(ad->itc[GENDIAL_Type_group_item]));
+       setting_create_Gendial_itc("searchbar", &(ad->itc[GENDIAL_Type_sel_all]));
+       setting_create_Gendial_itc("setting.1text.2icon", &(ad->itc[GENDIAL_Type_1text_2icon_9]));
+       setting_create_Gendial_itc("setting.1text.2icon.1", &(ad->itc[GENDIAL_Type_1text_2icon_10]));
+       setting_create_Gendial_itc("dialogue/2text", &(ad->itc[GENDIAL_Type_2text_3]));
 
-       setting_drawer_list_init();
-       setting_dbus_handler_init( ad->plugin_node );
+       setting_create_Gendial_itc("1line", &(ad->itc[GENDIAL_Type_1text_2icon_divider]));
+       setting_create_Gendial_itc("groupindex", &(ad->itc[GENDIAL_Type_expandable_proc]));
 
-       setting_plugin_load(plugin_node, (const char *)plugin_node->plugin_path);
+       ad->itc_expand_grid.func.del = NULL;    /* _gl_Gendial_del; */
 }
 
-/**
- * @see [caller] setting_main_list_mouse_up_cb
- * @see [caller] setting_main_sel_list_mouse_up_cb
- */
-static void __rotate_lock_handler(int chk_status, setting_main_appdata *ad )
+static void _setting_tapi_init(void *cb)
 {
-       SETTING_TRACE_BEGIN;
-       if( chk_status == 1)
-       {
-               // toggle : 0 --> 1
-               int angle = elm_win_rotation_get(ad->win_main);
-               elm_win_rotation_with_resize_set(ad->win_main, angle);
+       setting_main_appdata *ad = (setting_main_appdata *) cb;
+       //pass NULL to let TAPI access default module
+       ad->handle = tel_init(NULL);
+       if (!ad->handle) {
+               SETTING_TRACE_ERROR("*** [ERR] tel_init failed ***");
        } else {
-               elm_win_rotation_with_resize_set(ad->win_main, 0);
+               SETTING_TRACE("tel_init ok[handle:%p]", ad->handle);
        }
-       vconf_set_bool(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, chk_status);
 }
 
-/**
- * toggle cb
- */
-void setting_main_list_mouse_up_cb(void *data, Evas_Object *eo,
-                                         void *event_info)
+static void _setting_tapi_deinit(void *cb)
 {
-       SETTING_TRACE_BEGIN;
-       retm_if(data == NULL, "Data parameter is NULL");
-       Setting_GenGroupItem_Data *list_item =
-           (Setting_GenGroupItem_Data *) data;
-       SETTING_TRACE("process item [%s]", list_item->keyStr);
-       list_item->chk_status = elm_check_state_get(eo);        /* for update new state */
-
-       SETTING_TRACE("change radio[%s], status is:%d", _(list_item->keyStr),
-                     list_item->chk_status);
-       setting_main_appdata *ad = g_main_ad;
+       setting_main_appdata *ad = (setting_main_appdata *) cb;
 
-       if (!safeStrCmp(KeyStr_UsePacketData, list_item->keyStr)) {
-               int err;
-               if (elm_check_state_get(eo)) {
-                       setting_set_bool_slp_key
-                           (BOOL_SLP_SETTING_USE_PACKET_DATA,
-                            SETTING_ON_OFF_BTN_ON, &err);
+       if (ad->handle) {
+               int tapi_ret = tel_deinit(ad->handle);
+               if (tapi_ret != TAPI_API_SUCCESS) {
+                       SETTING_TRACE_DEBUG("*** [ERR] tel_deinit. [%d] ***", tapi_ret);
                } else {
-                       setting_set_bool_slp_key
-                           (BOOL_SLP_SETTING_USE_PACKET_DATA,
-                            SETTING_ON_OFF_BTN_OFF, &err);
+                       SETTING_TRACE("***  tel_deinit OK ");
                }
-
-       } else if (!safeStrCmp(KeyStr_Landscape, list_item->keyStr)) {
-               __rotate_lock_handler(list_item->chk_status, ad);
+               ad->handle = NULL;
        }
-
-       return;
 }
 
-/**
- * genlist touch cb
- */
-void setting_main_sel_list_mouse_up_cb(void *data, Evas_Object *eo,
-                                             void *event_info)
+// "virtualkeypad,state,on"
+static void ___title_toolbar_show(void *data, Evas_Object *obj, void *event_info)
 {
        SETTING_TRACE_BEGIN;
-       setting_retm_if(data == NULL, "Data parameter is NULL");
+       setting_main_appdata *ad = (setting_main_appdata *) data;
 
-       retm_if(event_info == NULL, "Invalid argument: event info is NULL");
-       Elm_Object_Item *item = (Elm_Object_Item *) event_info;
-       elm_genlist_item_selected_set(item, 0);
-       Setting_GenGroupItem_Data *list_item =
-           (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
+       Evas_Object *navi_bar = NULL;
 
-       list_item->chk_status = elm_check_state_get(list_item->eo_check);
+       if (ad->isInUGMode && ad->ug) {
+               Evas_Object *layout = (Evas_Object *)ug_get_layout(ad->ug);
+               if (layout)
+               {
+                       navi_bar = elm_object_part_content_get(layout, "elm.swallow.content");
+               }
+       } else {
+               navi_bar = ad->navibar_main;
+       }
 
-       /* new status */
-    list_item->chk_status = !list_item->chk_status;
-    elm_check_state_set(list_item->eo_check, list_item->chk_status);
+       const char *support = evas_object_data_get(navi_bar, "sip.naviframe.title_obj");
+       SETTING_TRACE("support:%s", support);
+       Elm_Object_Item *top_item = elm_naviframe_top_item_get(navi_bar);
+       if (0 == safeStrCmp("SEARCH", support))
+       {
+               // do nothing
+       } else if (support)
+       {
+               if (top_item)
+               {
+                       elm_object_item_signal_emit(top_item, "elm,state,sip,shown", "");
+               }
+       }
+}
 
+// "virtualkeypad,state,off"
+static void ___title_toolbar_hide(void *data, Evas_Object *obj, void *event_info)
+{
+       SETTING_TRACE_BEGIN;
        setting_main_appdata *ad = (setting_main_appdata *) data;
-       if (!safeStrCmp(KeyStr_UsePacketData, list_item->keyStr)) {
-               /* setting_reset_slp_key_by_status(eo, BOOL_SLP_SETTING_USE_PACKET_DATA); */
-               int err;
-               setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
-                                        list_item->chk_status, &err);
 
-       } else if (!safeStrCmp(KeyStr_Landscape, list_item->keyStr)) {
-               __rotate_lock_handler(list_item->chk_status, ad);
+       Evas_Object *navi_bar = NULL;
+
+       if (ad->isInUGMode && ad->ug) {
+               Evas_Object *layout = (Evas_Object *)ug_get_layout(ad->ug);
+               if (layout)
+               {
+                       navi_bar = elm_object_part_content_get(layout, "elm.swallow.content");
+               }
+       } else {
+               navi_bar = ad->navibar_main;
        }
 
-       return;
+       const char *support = evas_object_data_get(navi_bar, "sip.naviframe.title_obj");
+
+       SETTING_TRACE("support:%s", support);
+       Elm_Object_Item *top_item = elm_naviframe_top_item_get(navi_bar);
+       if (0 == safeStrCmp("SEARCH", support))
+       {
+               // do nothing
+       }
+       else if (support)
+       {
+               if (top_item)
+               {
+                       elm_object_item_signal_emit(top_item, "elm,state,sip,hidden", "");
+               }
+       }
 }
 
-void __alternate_flight_mode(Evas_Object *check)
+Evas_Object *setting_main_layout_conform_create(Evas_Object *win_layout, Evas_Object *win_obj, void* data)
 {
        SETTING_TRACE_BEGIN;
-       int ret;
-       Eina_Bool status =  elm_check_state_get(check);
-       SETTING_TRACE("flight mode status : %d", status);
-       setting_main_appdata *ad = g_main_ad;
+       LAUNCH_SETTING_IN();
+       Evas_Object *layout = NULL;
 
-       //Check whether some requestion is processing by TAPI
-       if (ad->b_fm_requesting)
+       Evas_Object *conform = NULL;
+       //conform = elm_conformant_add(win_obj);
+       conform = (Evas_Object*) app_get_preinitialized_conformant();
+       if (!conform)
+               conform = elm_conformant_add(win_obj);
+
+       setting_main_appdata *ad = (setting_main_appdata *) data;
+       if(!conform)
        {
-               //Do nothing, just mark the lastest operation..
-               SETTING_TRACE("Some requestion is processing by TAPI, wait to process");
-               ad->fm_waiting_op = status ? FM_ENTER : FM_LEAVE;
-               return;
+               return NULL;
        }
 
-       //otherwise, invalid waiting operation and send requsetion to TAPI:
-       ad->fm_waiting_op = FM_INVALID;
-       if (status) {
-               ret = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_ENTER,setting_main_tapi_event_cb,ad);
-               setting_retm_if(ret != TAPI_API_SUCCESS,
-                               "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER) ***");
-       } else {
-               ret = tel_set_flight_mode(ad->handle, TAPI_POWER_FLIGHT_MODE_LEAVE,setting_main_tapi_event_cb,ad);
-               setting_retm_if(ret != TAPI_API_SUCCESS,
-                               "*** [ERR] tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE) ***");
-       }
+       SETTING_TRACE_DEBUG("Add conformant!!!!!");
 
-       //sucessfully sent,
-       ad->b_fm_requesting = TRUE;
-       SETTING_TRACE_END;
-}
+       /*  Base Layout */
+       layout = elm_layout_add(conform);
+       setting_retvm_if(layout == NULL, FALSE, "layout == NULL");
 
-static void __tethering_disabled_cb(tethering_error_e error, tethering_type_e type, tethering_disabled_cause_e code, void *data)
-{
-       int ret;
+       elm_layout_theme_set(layout, "layout", "application", "default");
+       evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(conform, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       //elm_win_resize_object_add(win_obj, layout);
+       elm_win_resize_object_add(win_obj, conform);
+       elm_object_content_set(conform, layout);
 
-       if (data) {
-               tethering_h th = (tethering_h)data;
-               tethering_destroy(th);
-       }
+       Evas_Object *bg = setting_create_bg(layout, win_obj, "group_list");
+       elm_object_part_content_set(layout, "elm.swallow.bg", bg);
+       evas_object_show(layout);
 
-       ret = wifi_initialize();
-       setting_retm_if(ret < 0, "*** [ERR] wifi_initialize() ***");
+       evas_object_smart_callback_add(conform, "virtualkeypad,state,on", ___title_toolbar_show, ad);
+       evas_object_smart_callback_add(conform, "virtualkeypad,state,off", ___title_toolbar_hide, ad);
 
-       ret = wifi_activate(NULL, NULL);
-       if (ret < 0) {
-               wifi_deinitialize();
-       }
-       setting_retm_if(ret < 0, "*** [ERR] wifi_activate() ***");
+       elm_win_conformant_set(ad->win_main, EINA_TRUE);
+       evas_object_show(conform);
 
-       ret = wifi_deinitialize();
-       setting_retm_if(ret < 0, "*** [ERR] wifi_deinitialize() ***");
+       /* Indicator bg */
+       Evas_Object *indicator_bg = elm_bg_add(conform);
+       elm_object_style_set(indicator_bg, "indicator/headerbg");
+       elm_object_part_content_set(conform, "elm.swallow.indicator_bg", indicator_bg);
+       evas_object_show(indicator_bg);
+
+       ad->conform = conform;
+       evas_object_data_set(win_obj, "conformant", conform);
+       LAUNCH_SETTING_OUT();
+       return layout;
 }
 
-static void __tethering_turn_off_resp_cb(void *data, Evas_Object *obj, void *event_info)
+/**
+* @brief create all view layout
+*
+* win_main
+* conformant
+* ly_main
+* navibar <- view_layout       <- "elm.swallow.bg"             : bg
+*                                                      <- "elm.swallow.content"        : all_list
+*                              <- "elm.swallow.left"           : left_panel
+*/
+static int setting_main_create(void *cb)
 {
-       setting_retm_if(NULL == obj, "NULL == obj");
-       int response_type = btn_type(obj);
-       Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)data;
+       SETTING_TRACE_BEGIN;
+       LAUNCH_SETTING_IN();
+       retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
+       setting_main_appdata *ad = (setting_main_appdata *) cb;
 
-       if (g_main_ad)
-       {
-               evas_object_del(g_main_ad->popup);
-               g_main_ad->popup = NULL;
-       }
+       _setting_tapi_init(ad);
+       _setting_genlist_itc_init(ad);
+       settinig_drawer_hash_init(ad);
 
-       if (POPUP_RESPONSE_OK == response_type)
-       {
-               tethering_h th = NULL;
-               tethering_error_e ret = TETHERING_ERROR_NONE;
-
-               ret = tethering_create(&th);
-               if (ret != TETHERING_ERROR_NONE) {
-                       list_item->swallow_type = SWALLOW_Type_1ICON_1RADIO;
-                       list_item->chk_status = EINA_FALSE;
-                       elm_object_item_data_set(list_item->item, list_item);
-                       elm_genlist_item_update(list_item->item);
-               }
+       // create a layout conformant
+       ad->ly_main = setting_main_layout_conform_create(ad->win_main, ad->win_main, ad);
+       setting_retvm_if(ad->ly_main == NULL, FALSE, "ly_main == NULL");
 
-               ret = tethering_set_disabled_cb(th, TETHERING_TYPE_WIFI, __tethering_disabled_cb, th);
-               if (ret != TETHERING_ERROR_NONE) {
-                       list_item->swallow_type = SWALLOW_Type_1ICON_1RADIO;
-                       list_item->chk_status = EINA_FALSE;
-                       elm_object_item_data_set(list_item->item, list_item);
-                       elm_genlist_item_update(list_item->item);
+       // create a navibar
+       ad->navibar_main = setting_create_navi_bar(ad->ly_main);
+       setting_retvm_if(ad->navibar_main == NULL, FALSE, "navibar_main == NULL");
+       setting_conformant_keypad_state(ad->win_main, TRUE);
 
-                       tethering_destroy(th);
-                       return;
-               }
 
-               tethering_disable(th, TETHERING_TYPE_WIFI);
-       }
-       else if (POPUP_RESPONSE_CANCEL == response_type)
-       {
-               list_item->swallow_type = SWALLOW_Type_1ICON_1RADIO;
-               list_item->chk_status = EINA_FALSE;
-               elm_object_item_data_set(list_item->item, list_item);
-               elm_genlist_item_update(list_item->item);
-       }
-}
+       // LAYOUT
+       Evas_Object* view_layout = elm_layout_add(ad->navibar_main);
+       setting_retvm_if(view_layout == NULL, FALSE, "view_layout == NULL");
+       elm_layout_theme_set(view_layout, "layout", "application", "default");
+       evas_object_show(view_layout);
+       ad->view_layout = view_layout;
 
-void __alternate_wifi_mode(Setting_GenGroupItem_Data *list_item, Evas_Object *check)
-{
-       SETTING_TRACE_BEGIN;
-       int ret;
-       Eina_Bool status =  elm_check_state_get(check);
-       SETTING_TRACE("wifi mode status : %d", status);
-
-       int value, err;
-
-       if (tethering_is_enabled(NULL, TETHERING_TYPE_WIFI) == TRUE) {
-               list_item->swallow_type = SWALLOW_Type_1ICON_1PROCESS;
-               elm_object_item_data_set(list_item->item, list_item);
-               elm_genlist_item_update(list_item->item);
-
-               g_main_ad->popup = setting_create_popup_with_btn(list_item,
-                               g_main_ad->win_main, NULL,
-                               _("Connecting Wi-Fi will turn off Mobile hotspot. Continue?"),
-                               __tethering_turn_off_resp_cb,
-                               0, 2, _("IDS_COM_SK_OK"), _("IDS_COM_SK_CANCEL"));
-       } else {
-               ret = wifi_initialize();
-               if (ret < 0) {
-                       setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err);
-                       list_item->chk_status = value;
-                       elm_object_item_data_set(list_item->item, list_item);
-                       elm_genlist_item_update(list_item->item);
-               }
-               setting_retm_if(ret < 0, "*** [ERR] wifi_initialize() ***");
-
-               if (status) {
-                       ret = wifi_activate(NULL, NULL);
-                       if (ret < 0) {
-                               setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err);
-                               list_item->chk_status = value;
-                               elm_object_item_data_set(list_item->item, list_item);
-                               elm_genlist_item_update(list_item->item);
-                               wifi_deinitialize();
-                       }
-                       setting_retm_if(ret < 0, "*** [ERR] wifi_activate() ***");
-               } else {
-                       ret = wifi_deactivate(NULL, NULL);
-                       if (ret < 0) {
-                               setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err);
-                               list_item->chk_status = value;
-                               elm_object_item_data_set(list_item->item, list_item);
-                               elm_genlist_item_update(list_item->item);
-                               wifi_deinitialize();
-                       }
-                       setting_retm_if(ret < 0, "*** [ERR] wifi_deactivate() ***");
-               }
+       // push a view to the naviframe
+       Elm_Object_Item *navi_it = elm_naviframe_item_push(ad->navibar_main, "IDS_ST_OPT_SETTINGS", NULL, NULL, view_layout, NULL);
+       elm_naviframe_item_title_enabled_set(navi_it, EINA_TRUE, EINA_TRUE);
+       ad->main_navi_it = navi_it;
+       elm_object_item_domain_text_translatable_set(navi_it, SETTING_PACKAGE, EINA_TRUE);
+       elm_naviframe_item_pop_cb_set(navi_it, _navibar_back_pop_cb, ad);
 
-               ret = wifi_deinitialize();
-               if (ret < 0) {
-                       setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err);
-                       list_item->chk_status = value;
-                       elm_object_item_data_set(list_item->item, list_item);
-                       elm_genlist_item_update(list_item->item);
-               }
-               setting_retm_if(ret < 0, "*** [ERR] wifi_deinitialize() ***");
+       if ( ! is_searchmode_app(ad->is_searchmode)) {
+               ad->list_type = SETTING_LIST_VIEW;
+               ad->view_type = SETTING_TAB_VIEW_QUICK_SETTINGS;
+               (void)preference_get_int(PREFKEY_VIEW_TYPE, &ad->list_type);
+               (void)preference_get_int(PREFKEY_TAB_VIEW_TAB, &ad->view_type);
+               SETTING_TRACE("ad->list_type:%d", ad->list_type);
+               SETTING_TRACE("ad->view_type:%d", ad->view_type);
+
+               Evas_Object *all_list = NULL;
 
-               list_item->swallow_type = SWALLOW_Type_1ICON_1PROCESS;
-               elm_object_item_data_set(list_item->item, list_item);
-               elm_genlist_item_update(list_item->item);
+               all_list = _view_list_geter(ad);
+
+               setting_retvm_if(all_list == NULL, FALSE, "all_list == NULL");
+               elm_object_part_content_set(view_layout, "elm.swallow.content", all_list);
 
        }
+
+       setting_view_main.is_create = 1;
+       LAUNCH_SETTING_OUT();
        SETTING_TRACE_END;
+       return SETTING_RETURN_SUCCESS;
 }
 
-void __alternate_bt_mode(Setting_GenGroupItem_Data *list_item, Evas_Object *check)
+static int setting_main_destroy(void *cb)
 {
        SETTING_TRACE_BEGIN;
-       int ret;
-       Eina_Bool status =  elm_check_state_get(check);
-       SETTING_TRACE("bt mode status : %d", status);
-
-       int value, err;
-
-       ret = bt_initialize();
-       if (ret < 0) {
-               setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err);
-               list_item->chk_status = value;
-               elm_object_item_data_set(list_item->item, list_item);
-               elm_genlist_item_update(list_item->item);
-       }
-       setting_retm_if(ret < 0, "*** [ERR] bt_initialize() ***");
-
+       /* error check */
+       retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
 
-       if (status) {
-               ret = bt_adapter_enable();
-               if (ret < 0) {
-                       setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err);
-                       list_item->chk_status = value;
-                       elm_object_item_data_set(list_item->item, list_item);
-                       elm_genlist_item_update(list_item->item);
-                       bt_deinitialize();
-               }
-               setting_retm_if(ret < 0, "*** [ERR] bt_adapter_enable() ***");
-       } else {
-               ret = bt_adapter_disable();
-               if (ret < 0) {
-                       setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err);
-                       list_item->chk_status = value;
-                       elm_object_item_data_set(list_item->item, list_item);
-                       elm_genlist_item_update(list_item->item);
-                       bt_deinitialize();
-               }
-               setting_retm_if(ret < 0, "*** [ERR] bt_adapter_disable() ***");
+       setting_main_appdata *ad = (setting_main_appdata *) cb;
+       if (0 == setting_view_main.is_create)
+       {
+               //already not exsit
+               return SETTING_RETURN_SUCCESS;
        }
+       evas_object_smart_callback_del(ad->conform, "virtualkeypad,state,on", ___title_toolbar_show);
+       evas_object_smart_callback_del(ad->conform, "virtualkeypad,state,off", ___title_toolbar_hide);
+       evas_object_data_set(ad->win_main, "conformant", NULL);
+       _setting_tapi_deinit(ad);
 
-       ret = bt_deinitialize();
-       if (ret < 0) {
-               setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err);
-               list_item->chk_status = value;
-               elm_object_item_data_set(list_item->item, list_item);
-               elm_genlist_item_update(list_item->item);
+       if(ad->event_freeze_timer)
+       {
+               ecore_timer_del(ad->event_freeze_timer);
+               ad->event_freeze_timer = NULL;
+       }
+       evas_object_smart_callback_del(ad->main_genlist, "realized", __gl_realized_cb);
+       if (ad->save_idler) {
+               ecore_timer_del(ad->save_idler);
+               ad->save_idler = NULL;
        }
-       setting_retm_if(ret < 0, "*** [ERR] bt_deinitialize() ***");
-
-       list_item->swallow_type = SWALLOW_Type_1ICON_1PROCESS;
-       elm_object_item_data_set(list_item->item, list_item);
-       elm_genlist_item_update(list_item->item);
 
-       SETTING_TRACE_END;
-}
+       if (ad->update_idler) {
+               ecore_timer_del(ad->update_idler);
+               ad->update_idler = NULL;
+       }
 
-void __alternate_nfc_mode(Setting_GenGroupItem_Data *list_item, Evas_Object *check)
-{
-       SETTING_TRACE_BEGIN;
-       int ret;
-       Eina_Bool status =  elm_check_state_get(check);
-       SETTING_TRACE("nfc mode status : %d", status);
-
-       int value, err;
-
-       ret = nfc_manager_initialize(NULL, NULL);
-       if (ret < 0) {
-               setting_get_bool_slp_key(BOOL_SLP_SETTING_NFC_STATUS, &value, &err);
-               list_item->chk_status = value;
-               elm_object_item_data_set(list_item->item, list_item);
-               elm_genlist_item_update(list_item->item);
+       if (ad->bt_timer) {
+               ecore_timer_del(ad->bt_timer);
+               ad->bt_timer = NULL;
        }
-       setting_retm_if(ret < 0, "*** [ERR] nfc_manager_initialize() ***");
-
-       ret = nfc_manager_set_activation(status, NULL, NULL);
-       if (ret < 0) {
-               setting_get_bool_slp_key(BOOL_SLP_SETTING_NFC_STATUS, &value, &err);
-               list_item->chk_status = value;
-               elm_object_item_data_set(list_item->item, list_item);
-               elm_genlist_item_update(list_item->item);
-               nfc_manager_deinitialize();
+       if (ad->wifi_timer) {
+               ecore_timer_del(ad->wifi_timer);
+               ad->wifi_timer = NULL;
        }
-       setting_retm_if(ret < 0, "*** [ERR] nfc_manager_set_activation() ***");
-
-       ret = nfc_manager_deinitialize();
-       if (ret < 0) {
-               setting_get_bool_slp_key(BOOL_SLP_SETTING_NFC_STATUS, &value, &err);
-               list_item->chk_status = value;
-               elm_object_item_data_set(list_item->item, list_item);
-               elm_genlist_item_update(list_item->item);
+       if (ad->nfc_timer) {
+               ecore_timer_del(ad->nfc_timer);
+               ad->nfc_timer = NULL;
        }
-       setting_retm_if(ret < 0, "*** [ERR] nfc_manager_deinitialize() ***");
-
-       list_item->swallow_type = SWALLOW_Type_1ICON_1PROCESS;
-       elm_object_item_data_set(list_item->item, list_item);
-       elm_genlist_item_update(list_item->item);
 
-       SETTING_TRACE_END;
-}
+       if(ad->update_font_idler){
+               ecore_idler_del(ad->update_font_idler);
+               ad->update_font_idler = NULL;
+       }
 
-void __alternate_sbeam_mode(Evas_Object *check)
-{
-       SETTING_TRACE_BEGIN;
-       int ret;
-       Eina_Bool status =  elm_check_state_get(check);
-       SETTING_TRACE("wifi mode status : %d", status);
+       if (ad->driving_mode_popup) {
+               evas_object_del(ad->driving_mode_popup);
+               ad->driving_mode_popup = NULL;
+       }
 
-       vconf_set_bool(VCONFKEY_NFC_SBEAM, status);
+       elm_object_part_content_unset(ad->view_layout, "elm.swallow.content");
+       elm_object_item_part_content_unset(ad->main_navi_it, "tabbar");
+       if (ad->sc_gl[SC_All_List])
+       {
+               evas_object_del(ad->sc_gl[SC_All_List]);
+               ad->sc_gl[SC_All_List] = NULL;
+       }
+       if (ad->sc_gl[SC_All_Grid])
+       {
+               evas_object_del(ad->sc_gl[SC_All_Grid]);
+               ad->sc_gl[SC_All_Grid] = NULL;
+       }
 
-       SETTING_TRACE_END;
-}
+       if(ad->ctrl_bar)
+       {
+               evas_object_del(ad->ctrl_bar);
+               ad->ctrl_bar = NULL;
+       }
+       int i = SETTING_TAB_VIEW_QUICK_SETTINGS;
+       for(; i < SETTING_TAB_VIEW_MAX; i++)
+       {
+               if (ad->sub_view[i]) {
+                       evas_object_del(ad->sub_view[i]);
+                       ad->sub_view[i] = NULL;
+               }
+       }
 
-void
-setting_main_click_list_network_ug_cb(void *data, Evas_Object *obj,
-                                     void *event_info)
-{
-       SETTING_TRACE_BEGIN;
-       retm_if(event_info == NULL, "Invalid argument: event info is NULL");
-       Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+       if (ad->save_idler) {
+               ecore_timer_del(ad->save_idler);
+               ad->save_idler = NULL;
+       }
 
-       elm_genlist_item_selected_set(item, EINA_FALSE);
+       if (ad->update_idler) {
+               ecore_timer_del(ad->update_idler);
+               ad->update_idler = NULL;
+       }
 
-       if (g_main_ad->ug) {
-               SETTING_TRACE
-                   ("[ad->ug non-NULL]skip genlist click event!!");
+       if (ad->bt_timer) {
+               ecore_timer_del(ad->bt_timer);
+               ad->bt_timer = NULL;
+       }
+       if (ad->wifi_timer) {
+               ecore_timer_del(ad->wifi_timer);
+               ad->wifi_timer = NULL;
+       }
+       if (ad->nfc_timer) {
+               ecore_timer_del(ad->nfc_timer);
+               ad->nfc_timer = NULL;
+       }
 
-               SETTING_TRACE_END;
-               return;
+       if(ad->update_font_idler){
+               ecore_idler_del(ad->update_font_idler);
+               ad->update_font_idler = NULL;
        }
 
-       setting_main_appdata *ad = g_main_ad;
-       setting_main_click_list_item_reset_data(ad, obj);
-
-       int err = 0;
-       int value;
-       setting_get_int_slp_key(INT_SLP_SETTING_SIM_SLOT, &value, &err);
-       SETTING_TRACE("value:%d", value);
-       switch (value) {
-       case VCONFKEY_TELEPHONY_SIM_INSERTED:
-               {
-                       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_main_click_list_item_ug_cb(data, obj,
-                                                          "setting-network-efl",
-                                                          NULL, cbs);
-                       FREE(cbs);
-                       break;
-               }
-       case VCONFKEY_TELEPHONY_SIM_NOT_PRESENT:
-               setting_create_simple_popup(NULL, ad->win_main,
-                                           NULL, _("IDS_ST_HEADER_INSERT_SIM_CARD_ABB"));
-               SETTING_TRACE("%s*** [ERR] No SIM. sim_slot_type=%d ***%s",
-                             SETTING_FONT_RED, value, SETTING_FONT_BLACK);
-               return;
-               break;
-       case VCONFKEY_TELEPHONY_SIM_CARD_ERROR:
-       case VCONFKEY_TELEPHONY_SIM_UNKNOWN:
-               setting_create_simple_popup(NULL, ad->win_main,
-                                           NULL,_("IDS_COM_BODY_INVALID_SIM_CARD"));
-               SETTING_TRACE("%s*** [ERR] Invalid SIM. sim_slot_type=%d ***%s",
-                             SETTING_FONT_RED, value, SETTING_FONT_BLACK);
-               return;
-               break;
-       default:
-               break;
+       // sound
+       effect_playsound_close();
+
+       /* then destroy the UI object. */
+       if (ad->ly_main) {
+               evas_object_del(ad->ly_main);
+               ad->ly_main = NULL;
        }
 
-}
 
-/**
- * genlist touch cb
- */
-static void
-setting_main_click_Gendial_list_flight_mode_cb(void *data, Evas_Object *obj,
-                                               void *event_info)
-{
-    /* error check */
-    setting_retm_if(data == NULL, "Data parameter is NULL");
-
-    retm_if(event_info == NULL, "Invalid argument: event info is NULL");
-    Elm_Object_Item *item = (Elm_Object_Item *) event_info;
-    elm_genlist_item_selected_set(item, 0);
-    Setting_GenGroupItem_Data *list_item =
-        (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
-    int old_status = elm_check_state_get(list_item->eo_check);
-    /* new status */
-    list_item->chk_status = !old_status;
-    elm_check_state_set(list_item->eo_check, list_item->chk_status);
-
-    __alternate_flight_mode(list_item->eo_check);
-    SETTING_TRACE_END;
-}
+       /*
+       int ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, __vconf_change_cb);
+       if (ret != 0) {
+               SETTING_TRACE_ERROR("call vconf_ignore_key_changed failed");
+       }
+       */
 
-/**
- * toggle cb
- */
-void
-setting_main_click_list_flight_mode_cb(void *data, Evas_Object *obj,
-                                      void *event_info)
-{
-       SETTING_TRACE_BEGIN;
-       retm_if(data == NULL, "Data parameter is NULL");
-       Setting_GenGroupItem_Data *list_item =
-           (Setting_GenGroupItem_Data *) data;
-       list_item->chk_status = elm_check_state_get(obj);       /* for update new state */
-       SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
-                     list_item->chk_status);
-
-       __alternate_flight_mode(obj);
+       setting_view_main.is_create = 0;
        SETTING_TRACE_END;
+       return SETTING_RETURN_SUCCESS;
 }
 
-/**
- * toggle cb
- */
-void
-setting_main_click_list_wifi_mode_cb(void *data, Evas_Object *obj,
-                                      void *event_info)
+static int setting_main_update(void *cb)
 {
        SETTING_TRACE_BEGIN;
-       retm_if(data == NULL, "Data parameter is NULL");
-       Setting_GenGroupItem_Data *list_item =
-           (Setting_GenGroupItem_Data *) data;
-       list_item->chk_status = elm_check_state_get(obj);       /* for update new state */
-       SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
-                     list_item->chk_status);
-
-       __alternate_wifi_mode(list_item, obj);
-       SETTING_TRACE_END;
-}
 
-/**
- * toggle cb
- */
-void
-setting_main_click_list_bt_mode_cb(void *data, Evas_Object *obj,
-                                      void *event_info)
-{
-       SETTING_TRACE_BEGIN;
-       retm_if(data == NULL, "Data parameter is NULL");
-       Setting_GenGroupItem_Data *list_item =
-           (Setting_GenGroupItem_Data *) data;
-       list_item->chk_status = elm_check_state_get(obj);       /* for update new state */
-       SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
-                     list_item->chk_status);
-
-       __alternate_bt_mode(list_item, obj);
-       SETTING_TRACE_END;
-}
+       /* error check */
+       retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
 
-/**
- * toggle cb
- */
-void
-setting_main_click_list_nfc_mode_cb(void *data, Evas_Object *obj,
-                                      void *event_info)
-{
-       SETTING_TRACE_BEGIN;
-       retm_if(data == NULL, "Data parameter is NULL");
-       Setting_GenGroupItem_Data *list_item =
-           (Setting_GenGroupItem_Data *) data;
-       list_item->chk_status = elm_check_state_get(obj);       /* for update new state */
-       SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
-                     list_item->chk_status);
-
-       __alternate_nfc_mode(list_item, obj);
-       SETTING_TRACE_END;
-}
+       setting_main_appdata *ad = (setting_main_appdata *) cb;
 
-/**
- * toggle cb
- */
-void
-setting_main_click_list_sbeam_mode_cb(void *data, Evas_Object *obj,
-                                      void *event_info)
-{
-       SETTING_TRACE_BEGIN;
-       retm_if(data == NULL, "Data parameter is NULL");
-       Setting_GenGroupItem_Data *list_item =
-           (Setting_GenGroupItem_Data *) data;
-       list_item->chk_status = elm_check_state_get(obj);       /* for update new state */
-       SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr),
-                     list_item->chk_status);
-
-       __alternate_sbeam_mode(obj);
-       SETTING_TRACE_END;
+       if (ad->ly_main != NULL) {
+               //evas_object_show(ad->ly_main);
+       }
+
+       return SETTING_RETURN_SUCCESS;
 }
 
-/**
- * store current selection in setting.cfg
- */
-void setting_try_save_check_list(void *data)
+
+
+static int setting_main_cleanup(void *cb)
 {
        SETTING_TRACE_BEGIN;
-       setting_main_appdata *ad = (setting_main_appdata *) data;
-
-       Eina_List *check_list = ad->item_check_list;
-       Setting_GenGroupItem_Data *list_item = NULL;
-       int update_count = 0;
+       /* error check */
+       retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
 
-       while (check_list) {
-               list_item = (Setting_GenGroupItem_Data *) eina_list_data_get(check_list);
-               if (NULL == list_item) continue;
+       setting_main_appdata *ad = (setting_main_appdata *) cb;
 
-               update_count++;
-               if (list_item->chk_status) {
-                       /* to update config file */
-                       setting_cfg_set_pos(list_item->keyStr, Cfg_Item_Pos_Level0);
-               } else {
-                       /* to update config file */
-                       setting_cfg_set_pos(list_item->keyStr, Cfg_Item_Pos_Level1);
-               }
-               check_list = eina_list_next(check_list);
+       if (ad->ly_main != NULL) {
+               //evas_object_hide(ad->ly_main);
        }
 
-       if (update_count == 0) {
-               /* to popup tips notify */
-       } else {
-               setting_cfg_file_update();
-       }
-       SETTING_TRACE_END;
+       return SETTING_RETURN_SUCCESS;
 }
 
-void
-setting_main_click_edit_preferred_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       SETTING_TRACE_BEGIN;
 
-       setting_main_appdata *ad = (setting_main_appdata *) data;
-       ad->view_type = SETTING_VIEW_ALL_CHECK;
-       __setting_create_prefered_view(ad);
-       __load_check_list(ad, &(ad->edit_preferred_genlist), NULL);
+/* ***************************************************
+ *
+ *general func
+ *
+ ***************************************************/
+/////////////////////////////////////////////////////////////////////////////////////
+
 
-       SETTING_TRACE_END;
-}