tizen 2.3 release
[apps/home/settings.git] / setting-connectivity / src / setting-connectivity-usb.c
index 503d344..f7bd303 100755 (executable)
@@ -1,24 +1,48 @@
 /*
  * 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.
+ *
  */
+
 #include <setting-connectivity-usb.h>
 #include <app_manager.h>
 
-#define DEBUG_MODE_POPUP_TITLE "IDS_ST_HEADER_ALLOW_USB_DEBUGGING_Q_ABB"
-#define DEBUG_MODE_POPUP_TEXT "IDS_ST_BODY_USB_DEBUGGING_IS_INTENDED_FOR_DEVELOPMENT_PURPOSES_ONLY_MSG"
+
+#define GROUP_MAX      30
+#define USB_BTN_NO  0
+#define SETTING_CPU_USAGE_PKG_NAME "org.tizen.dispcpuinfo"
+
+#define DIAGNOSTICS_USAGE_STR                                          "IDS_ST_BODY_CRASH_VIEWER"
+#define DEBUG_MODE_POPUP_TITLE                                 "IDS_ST_HEADER_ALLOW_USB_DEBUGGING_Q_ABB"
+#define DEBUG_MODE_POPUP_TEXT                                  "IDS_ST_BODY_USB_DEBUGGING_IS_INTENDED_FOR_DEVELOPMENT_PURPOSES_ONLY_MSG"
+#define DEFAULT_RENDERING_ENGINE_STR                           "IDS_ST_BODY_DEFAULT_RENDERING_ENGINE"
+#define SOFTWARE_STR                                                           "IDS_ST_BODY_SOFTWARE"
+#define HARDWARE_STR                                                           "IDS_ST_BODY_HARDWARE"
+#define CONNECTTIVITY_SELECT_INFO_POPUP_STR            "IDS_COM_BODY_USB_DEBUGGING_CONNECTED"
+
+static char* bgprocess_list[] = {
+    "IDS_ST_HEADER_STANDARD_LIMIT_ABB",
+    "IDS_ST_HEADER_NO_BACKGROUND_PROCESSES_ABB",
+    "IDS_ST_HEADER_1_PROCESS_AT_MOST_ABB",
+    "IDS_ST_HEADER_2_PROCESSES_AT_MOST_ABB",
+    "IDS_ST_HEADER_3_PROCESSES_AT_MOST_ABB",
+    "IDS_ST_HEADER_4_PROCESSES_AT_MOST_ABB",
+};
 
 static int setting_connectivity_usb_create(void *cb);
 static int setting_connectivity_usb_destroy(void *cb);
@@ -31,11 +55,9 @@ static void unload_popup(void* data);
 void load_usb_connection_popup(void* data);
 
 /* This is pointer to indicate progressbars*/
-static button_status button[NUM_PROGRESSBAR];
+//static button_status button[NUM_PROGRESSBAR];
 
 /* These variables are for the popup */
-static Evas_Object *win_main, *popup_eo;
-static char *popup_msg, *popup_title;
 
 setting_view setting_view_connectivity_usb = {
        .create = setting_connectivity_usb_create,
@@ -44,6 +66,156 @@ setting_view setting_view_connectivity_usb = {
        .cleanup = setting_connectivity_usb_cleanup,
 };
 
+static void __setting_processes_sub_list_sel_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");
+       Elm_Object_Item *subitem = (Elm_Object_Item *) event_info;
+       Elm_Object_Item *parentItem = elm_genlist_item_parent_get(subitem);
+       elm_genlist_item_selected_set(subitem, 0);
+       Setting_GenGroupItem_Data *data_subItem =
+           elm_object_item_data_get(subitem);
+       Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem);      /* parent data */
+       ret_if(NULL == data_subItem || NULL == data_parentItem);
+
+       elm_radio_value_set(data_subItem->rgd, data_subItem->chk_status);
+       int err;
+       setting_set_int_slp_key(data_parentItem->int_slp_setting_binded,
+                               data_subItem->chk_status, &err);
+       setting_retm_if(0 != err, "Set vconf error[%d]",data_parentItem->int_slp_setting_binded);
+
+       data_parentItem->sub_desc = (char *)g_strdup(_(data_subItem->keyStr));
+       elm_object_item_data_set(data_parentItem->item, data_parentItem);
+       elm_genlist_item_update(data_parentItem->item);
+       elm_object_item_signal_emit(data_parentItem->item, "elm,state,top", "");
+       data_parentItem->group_style = SETTING_GROUP_STYLE_TOP;
+       elm_genlist_item_expanded_set(parentItem, EINA_FALSE);
+}
+
+static void __setting_devoptions_main_sub_list_sel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       SETTING_TRACE_BEGIN;
+       setting_retm_if(event_info == NULL, "Invalid argument: event info is NULL");
+
+       Elm_Object_Item *subitem = (Elm_Object_Item *) event_info;
+       Elm_Object_Item *parentItem = elm_genlist_item_parent_get(subitem);
+       elm_genlist_item_selected_set(subitem, 0);
+       Setting_GenGroupItem_Data *data_subItem = elm_object_item_data_get(subitem);
+       Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem);      /* parent data */
+       ret_if(NULL == data_subItem || NULL == data_parentItem);
+
+       elm_radio_value_set(data_subItem->rgd, data_subItem->chk_status);
+
+       SETTING_TRACE("data_subItem->chk_status = %d", data_subItem->chk_status);
+       if (data_subItem->chk_status == 0) { // software
+               elm_config_engine_set("software_x11");
+               vconf_set_int(VCONFKEY_SETAPPL_DEFAULT_RENDERING_ENGINE_TYPE_INT, SETTING_RENDERING_ENGINE_SW);
+               elm_config_save();
+       } else if (data_subItem->chk_status == 1) { // hardware
+               elm_config_engine_set("opengl_x11");
+               vconf_set_int(VCONFKEY_SETAPPL_DEFAULT_RENDERING_ENGINE_TYPE_INT, SETTING_RENDERING_ENGINE_HW);
+               elm_config_save();
+       }
+
+       data_parentItem->sub_desc = (char *)g_strdup(_(data_subItem->keyStr));
+       elm_object_item_data_set(data_parentItem->item, data_parentItem);
+       elm_genlist_item_update(data_parentItem->item);
+       elm_object_item_signal_emit(data_parentItem->item, "elm,state,top", "");
+       data_parentItem->group_style = SETTING_GROUP_STYLE_TOP;
+       elm_genlist_item_expanded_set(parentItem, EINA_FALSE);
+}
+
+static void __setting_devoptions_main_exp_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       ret_if(NULL == data || NULL == event_info);
+       SETTING_TRACE_BEGIN;
+       SettingConnectivityUG *ad = (SettingConnectivityUG *) data;
+
+       Elm_Object_Item *parentItem = event_info;   //parent item
+       Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem);  //parent data
+       Evas_Object *scroller = elm_object_item_widget_get(parentItem);
+
+       Evas_Object *rgd;
+
+       if (data_parentItem == ad->bg_processes) {
+               //elm_object_item_signal_emit(parentItem, "elm,state,top", "");
+               rgd = elm_radio_add(scroller);
+               elm_radio_value_set(rgd, -1);
+
+               setting_create_Gendial_exp_sub_field_with_group_style(scroller,
+                                                       &itc_1text_1icon,
+                                                       __setting_processes_sub_list_sel_cb, ad, parentItem,
+                                                       SWALLOW_Type_1RADIO, rgd,
+                                                       0, _(bgprocess_list[0]),
+                                                       NULL, SETTING_GROUP_STYLE_CENTER);
+               setting_create_Gendial_exp_sub_field_with_group_style(scroller,
+                                                       &itc_1text_1icon,
+                                                       __setting_processes_sub_list_sel_cb, ad, parentItem,
+                                                       SWALLOW_Type_1RADIO, rgd,
+                                                       1, _(bgprocess_list[1]),
+                                                       NULL, SETTING_GROUP_STYLE_CENTER);
+               setting_create_Gendial_exp_sub_field_with_group_style(scroller,
+                                                       &itc_1text_1icon,
+                                                       __setting_processes_sub_list_sel_cb, ad, parentItem,
+                                                       SWALLOW_Type_1RADIO, rgd,
+                                                       2, _(bgprocess_list[2]),
+                                                       NULL, SETTING_GROUP_STYLE_CENTER);
+               setting_create_Gendial_exp_sub_field_with_group_style(scroller,
+                                                       &itc_1text_1icon,
+                                                       __setting_processes_sub_list_sel_cb, ad, parentItem,
+                                                       SWALLOW_Type_1RADIO, rgd,
+                                                       3, _(bgprocess_list[3]),
+                                                       NULL, SETTING_GROUP_STYLE_CENTER);
+               setting_create_Gendial_exp_sub_field_with_group_style(scroller,
+                                                       &itc_1text_1icon,
+                                                       __setting_processes_sub_list_sel_cb, ad, parentItem,
+                                                       SWALLOW_Type_1RADIO, rgd,
+                                                       4, _(bgprocess_list[4]),
+                                                       NULL, SETTING_GROUP_STYLE_CENTER);
+               setting_create_Gendial_exp_sub_field_with_group_style(scroller,
+                                                    &itc_1text_1icon,
+                                                    __setting_processes_sub_list_sel_cb, ad, parentItem,
+                                                    SWALLOW_Type_1RADIO, rgd,
+                                                    5, _(bgprocess_list[5]),
+                                                    NULL, SETTING_GROUP_STYLE_BOTTOM);
+
+               setting_update_chk_status(rgd, data_parentItem->int_slp_setting_binded);
+       } else if (data_parentItem == ad->gpu_render) {
+               //elm_object_item_signal_emit(parentItem, "elm,state,top", "");
+               rgd = elm_radio_add(scroller);
+               elm_radio_value_set(rgd, -1);
+
+               setting_create_Gendial_exp_sub_field_with_group_style(scroller,
+                                                       &itc_1text_1icon,
+                                                       __setting_devoptions_main_sub_list_sel_cb, ad, parentItem,
+                                                       SWALLOW_Type_1RADIO, rgd,
+                                                       0, _(SOFTWARE_STR),
+                                                       NULL, SETTING_GROUP_STYLE_CENTER);
+               setting_create_Gendial_exp_sub_field_with_group_style(scroller,
+                                                   &itc_1text_1icon,
+                                                   __setting_devoptions_main_sub_list_sel_cb, ad, parentItem,
+                                                   SWALLOW_Type_1RADIO, rgd,
+                                                   1, _(HARDWARE_STR),
+                                                   NULL, SETTING_GROUP_STYLE_BOTTOM);
+
+               setting_update_chk_status(rgd, data_parentItem->int_slp_setting_binded);
+               const char* engine_str = NULL;
+               engine_str = elm_config_engine_get();
+               if (engine_str) {
+                       if (0 == safeStrCmp(engine_str, "software_x11")) {
+                               elm_radio_value_set(rgd, 0);
+                       } else if (0 == safeStrCmp(engine_str, "opengl_x11")) {
+                               elm_radio_value_set(rgd, 1);
+                       } else {
+                               SETTING_TRACE_ERROR("engine_str is wrong");
+                       }
+               } else {
+                       SETTING_TRACE_ERROR("engine_str is NULL");
+               }
+       }
+}
+
 static int setting_connectivity_change_debug_mode_toggle(SettingConnectivityUG *ad)
 {
        SETTING_TRACE_BEGIN;
@@ -58,15 +230,31 @@ static int setting_connectivity_change_debug_mode_toggle(SettingConnectivityUG *
        }
        SETTING_TRACE("debugMode: %d", debugMode);
 
-       elm_check_state_set(ad->debug_mode->eo_check, EINA_FALSE);
+       setting_update_gl_item_chk_status(ad->debug_mode, EINA_FALSE);
        if (debugMode == 0) {
-               load_usb_connection_popup(ad);
+               if (USB_CONNECTED == check_usb_jack_status()) {
+                       ret = vconf_set_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL, 1);
+                       if (ret != 0) {
+                               SETTING_TRACE("FAIL: vconf_set_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL)");
+                               return -1;
+                       }
+
+                       setting_create_select_info_popup(&ad->selectioninfo_popup, ad->view_layout, 3.0,
+                                       _(CONNECTTIVITY_SELECT_INFO_POPUP_STR), "center_text");
+               } else {
+                       load_usb_connection_popup(ad);
+               }
        } else {
                ret = vconf_set_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL, 0);
                if (ret != 0) {
                        SETTING_TRACE("FAIL: vconf_set_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL)");
                        return -1;
                }
+
+               if (ad->selectioninfo_popup) {
+                       evas_object_del(ad->selectioninfo_popup);
+                       ad->selectioninfo_popup = NULL;
+               }
        }
 
        SETTING_TRACE_END;
@@ -106,6 +294,104 @@ static void setting_connectivity_usb_mouse_up_Gendial_list_cb(void *data,
        SETTING_TRACE_END;
 }
 
+static void setting_connectivity_main_chk_btn_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       SETTING_TRACE_BEGIN;
+       //error check
+       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 genlist update status
+
+       int opposite  = (list_item->chk_status == 1) ? SETTING_ON_OFF_BTN_ON : SETTING_ON_OFF_BTN_OFF;
+
+       SETTING_TRACE("list_item->keyStr = %s", list_item->keyStr);
+       if (!safeStrCmp("IDS_ST_MBODY_SHOW_CPU_USAGE", list_item->keyStr)) {
+               if (opposite) {
+                       app_launcher(SETTING_CPU_USAGE_PKG_NAME);
+               } else {
+                       bool running_flag = FALSE;
+                       int ret = app_manager_is_running(SETTING_CPU_USAGE_PKG_NAME, &running_flag);
+                       setting_retm_if(ret != 0, "fail to call app_manager_is_running");
+                       if (running_flag) {
+                               app_context_h context = NULL;
+                               ret = app_manager_get_app_context(SETTING_CPU_USAGE_PKG_NAME, &context);
+                               setting_retm_if(ret != 0, "fail to call app_manager_get_app_context");
+                               int ret = app_manager_terminate_app(context);
+                               if (ret == 0) {
+                                       SETTING_TRACE("===== app_manager_terminate_app successed.");
+                               } else {
+                                       SETTING_TRACE_ERROR("===== app_manager_terminate_app fail.");
+                               }
+                       }
+               }
+       } else {
+               /* do nothing */
+       }
+       //app_launcher("org.tizen.dispcpuinfo");
+}
+
+static void setting_connectivity_usb_mouse_up_Gendial_CPU_usage_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");
+       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);
+
+       setting_retm_if(data == NULL, "Data parameter is NULL");
+       //SettingConnectivityUG *ad = (SettingConnectivityUG *) data;
+
+       setting_update_gl_item_chk_status(list_item, !(list_item->chk_status));
+
+       if (list_item->chk_status) {
+               vconf_set_bool("db/setting/show_cpu_info", 1);
+               app_launcher(SETTING_CPU_USAGE_PKG_NAME);
+       } else {
+               vconf_set_bool("db/setting/show_cpu_info", 0);
+       }
+       //setting_create_simple_popup(NULL, ad->win_get, NULL, "NOT IMPLMENTED YET");
+       //app_launcher("org.tizen.dispcpuinfo");
+       SETTING_TRACE_END;
+}
+
+static void __setting_connectivity_usb_dia_usage_mouse_up_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       SETTING_TRACE_BEGIN;
+       /* 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);
+
+       /* SettingAboutUG *ad = (SettingAboutUG *) data; */
+
+       SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
+       app_launcher("org.tizen.crash-viewer");
+}
+
+char* get_bg_processes()
+{
+       int value;
+       int err;
+    int ret = setting_get_int_slp_key(INT_SLP_SETTING_DEVOPTION_BGPROCESS, &value, &err);
+    if (ret != 0) {
+        SETTING_TRACE_ERROR("get vconf failed");
+    }
+
+       if (value >=0 && value < sizeof(bgprocess_list)/sizeof(bgprocess_list[0]) )
+               return _(bgprocess_list[value]);
+       else
+       {
+               return _(bgprocess_list[0]);            /* error proc */
+       }
+}
+
 /**
  * To create the usb main view
  *
@@ -121,18 +407,22 @@ static int setting_connectivity_usb_create(void *cb)
        retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
 
        SettingConnectivityUG *ad = (SettingConnectivityUG *) cb;
-       Evas_Object *scroller;
+       Evas_Object *scroller = NULL;
 
        int vconf_ret = -1;
        int err = -1;
 
+       Evas_Object *view_layout = elm_layout_add(ad->win_main_layout);
+       elm_layout_file_set(view_layout, SETTING_THEME_EDJ_NAME, "selinfo_bottom");
+       evas_object_size_hint_weight_set(view_layout, EVAS_HINT_EXPAND, 0.0);
+       ad->view_layout = view_layout;
+
        /* win_main of the popup */
-       win_main = ad->win_get;
 #ifdef HELP_UG_EXIST
        ad->ly_usb =
            setting_create_layout_navi_bar_genlist(ad->win_main_layout,
                                                   ad->win_get,
-                                                  _(KeyStr_DeveloperOption),
+                                                  KeyStr_DeveloperOption,
                                                   dgettext("sys_string", "IDS_COM_BODY_BACK"),
                                                   _("IDS_COM_BODY_HELP"),
                                                   setting_connectivity_usb_click_softkey_cancel_cb,
@@ -141,26 +431,34 @@ static int setting_connectivity_usb_create(void *cb)
                                                   &ad->navi_bar);
 #else
        ad->ly_usb =
-           setting_create_layout_navi_bar_genlist(ad->win_main_layout,
-                                                  ad->win_get,
-                                                  _(KeyStr_DeveloperOption),
-                                                  dgettext("sys_string", "IDS_COM_BODY_BACK"),
-                                                  NULL,
+               setting_create_layout_navi_bar(ad->win_main_layout, ad->win_get,
+                                                  KeyStr_DeveloperOption,
+                                                  _("IDS_COM_BODY_BACK"), NULL, NULL,
                                                   setting_connectivity_usb_click_softkey_cancel_cb,
-                                                  NULL,
-                                                  ad, &scroller,
-                                                  &ad->navi_bar);
+                                                  NULL, NULL, ad, view_layout,
+                                                  &ad->navi_bar, NULL);
 #endif
 
        SETTING_TRACE("before init\n");
 
-       button[SETTING_USB_DEBUG_MODE].item = NULL;
-       button[SETTING_USB_DEBUG_MODE].pstate = STATE_NONE;
+       scroller = elm_genlist_add(ad->win_main_layout);
+       retvm_if(scroller == NULL, SETTING_DRAW_ERR_FAIL_SCROLLER,
+                "Cannot set scroller object  as contento of layout");
+       elm_genlist_realization_mode_set(scroller, EINA_TRUE);
+       elm_object_style_set(scroller, "dialogue");
+       elm_genlist_clear(scroller);    /* first to clear list */
+       evas_object_smart_callback_add(scroller, "realized", __gl_realized_cb, NULL);
+
+       elm_object_part_content_set(view_layout, "elm.swallow.contents", scroller);
+
+       //button[SETTING_USB_DEBUG_MODE].item = NULL;
+       //button[SETTING_USB_DEBUG_MODE].pstate = STATE_NONE;
+       setting_enable_expandable_genlist(scroller, ad, __setting_devoptions_main_exp_cb, NULL);
 
        Elm_Object_Item *item = NULL;;
 #if 1
        // [UI] separator
-       item = elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
+       item = elm_genlist_item_append(scroller, &itc_seperator, NULL, NULL,
                                                                ELM_GENLIST_ITEM_NONE, NULL, NULL);
        elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
 
@@ -177,31 +475,130 @@ static int setting_connectivity_usb_create(void *cb)
        SETTING_TRACE("toggle_dbg: %d", toggle_dbg);
 
        ad->debug_mode =
-               setting_create_Gendial_field_def(scroller, &(ad->itc_1text_1icon_gen),
+               setting_create_Gendial_field_def(scroller, &itc_1text_1icon,
                        setting_connectivity_usb_mouse_up_Gendial_list_cb,
-                       ad, SWALLOW_Type_1TOGGLE, NULL,
+                       ad, SWALLOW_Type_1ICON_1RADIO, NULL,
                        NULL, toggle_dbg, "IDS_ST_BODY_USB_DEBUGGING",
                        NULL, setting_connectivity_main_chk_usb_debug_cb);
 
        if (ad->debug_mode) {
                ad->debug_mode->userdata = ad;
-               button[SETTING_USB_DEBUG_MODE].item = ad->debug_mode->item;
+               __BACK_POINTER_SET(ad->debug_mode);
+               //button[SETTING_USB_DEBUG_MODE].item = ad->debug_mode->item;
        } else {
                SETTING_TRACE_ERROR("ad->debug_mode is NULL");
                return SETTING_RETURN_FAIL;
        }
 
-       setting_create_Gendial_field_def(scroller, &(ad->itc_help_style), NULL,
-               ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
-               NULL, NULL, 0, SETTING_USB_DEBUGGING_DESC, NULL,
-               NULL);
-       elm_genlist_item_select_mode_set(elm_genlist_item_append(scroller, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
-                                        ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
-
+       ADD_GL_HELP(scroller, SETTING_USB_DEBUGGING_DESC);
 #endif
 
        SETTING_TRACE("Second item of Second group is set\n");
 
+
+       if (!isEmulBin()) {
+               // [UI] Show CPU Usage
+               bool running_flag = FALSE;
+               int ret = app_manager_is_running(SETTING_CPU_USAGE_PKG_NAME, &running_flag);
+               setting_retvm_if(ret != 0, SETTING_RETURN_FAIL, "fail to call app_manager_is_running");
+               if (running_flag) {
+                       vconf_val = 1;
+               } else {
+                       vconf_val = 0;
+               }
+
+               ad->cpu_usage =
+                       setting_create_Gendial_field_def(scroller, &itc_1text_1icon,
+                                setting_connectivity_usb_mouse_up_Gendial_CPU_usage_cb,
+                                ad, SWALLOW_Type_1ICON_1RADIO, NULL,
+                                NULL, vconf_val, "IDS_ST_MBODY_SHOW_CPU_USAGE",
+                                NULL, setting_connectivity_main_chk_btn_cb);
+               if (ad->cpu_usage) {
+                       ad->cpu_usage->userdata = ad;
+                       __BACK_POINTER_SET(ad->cpu_usage);
+                       //setting_disable_genlist_item(ad->cpu_usage->item);
+                       } else {
+                               SETTING_TRACE_ERROR("ad->cpu_usage is NULL");
+                               return SETTING_RETURN_FAIL;
+               }
+
+               // [UI] help text
+               ADD_GL_HELP(scroller, "IDS_ST_BODY_SCREEN_OVERLAY_SHOWING_CURRENT_CPU_USAGE_ABB");
+
+               // Get GPU Rendering state
+               const char* engine_str = NULL;
+               engine_str = elm_config_engine_get();
+               char *render_engine = NULL;
+               if (engine_str) {
+                       SETTING_TRACE("engine_str is %s", engine_str);
+                       if ( 0 == safeStrCmp(engine_str, "opengl_x11")) {
+                               render_engine = HARDWARE_STR;
+                       } else if ( 0 == safeStrCmp(engine_str, "software_x11")) {
+                               render_engine = SOFTWARE_STR;
+                       } else {
+                               SETTING_TRACE_ERROR("engine_str is wrong");
+                       }
+               } else {
+                       SETTING_TRACE_ERROR("engine_str is NULL");
+               }
+
+               // [UI] Force GPU rendering
+               ad->gpu_render = setting_create_Gendial_exp_parent_field(scroller,
+                                               &(ad->itc_2text_3_parent),
+                                               NULL, NULL, SWALLOW_Type_INVALID,
+                                               DEFAULT_RENDERING_ENGINE_STR, _(render_engine),
+                                               SETTING_GROUP_STYLE_TOP, SETTING_GROUP_STYLE_NONE);
+               if (ad->gpu_render) {
+                       __BACK_POINTER_SET(ad->gpu_render);
+                       ad->gpu_render->userdata = ad;
+                       //setting_disable_genlist_item(ad->gpu_render->item);
+               } else {
+                       SETTING_TRACE_ERROR("ad->gpu_render is NULL");
+                       return SETTING_RETURN_FAIL;
+               }
+
+               // [UI] help text
+               ADD_GL_HELP(scroller, "IDS_ST_POP_USE_2D_HARDWARE_OR_SOFTWARE_ACCELERATION_IN_APPLICATIONS");
+
+               // NEWCODE:
+
+               // [UI] expandble list - Automatic answering
+               char *bgproc = get_bg_processes();
+               ad->bg_processes =
+                       setting_create_Gendial_exp_parent_field(scroller,
+                               &(ad->itc_2text_3_parent),
+                               NULL, NULL,
+                               SWALLOW_Type_INVALID,
+                               "IDS_ST_BODY_LIMIT_BACKGROUND_PROCESSES",
+                               bgproc,
+                               SETTING_GROUP_STYLE_TOP, SETTING_GROUP_STYLE_NONE);
+
+               // [UI] Limit background processes
+               if (ad->bg_processes) {
+                       __BACK_POINTER_SET(ad->bg_processes);
+                       ad->bg_processes->userdata = ad;
+                       ad->bg_processes->int_slp_setting_binded = INT_SLP_SETTING_DEVOPTION_BGPROCESS;
+               } else {
+                       SETTING_TRACE_ERROR("ad->bg_processes is NULL");
+                       return SETTING_RETURN_FAIL;
+               }
+
+               item = elm_genlist_item_append(scroller, &itc_seperator, NULL, NULL,
+                                                       ELM_GENLIST_ITEM_NONE, NULL, NULL);
+               elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+               // [UI] Diagnostics and Usage
+               setting_create_Gendial_field_def(scroller, &(ad->itc_1text),
+                                        __setting_connectivity_usb_dia_usage_mouse_up_cb,
+                                        ad, SWALLOW_Type_INVALID, NULL, NULL,
+                                        0, DIAGNOSTICS_USAGE_STR,
+                                        NULL, NULL);
+       }
+
+       item = elm_genlist_item_append(scroller, &itc_bottom_seperator, NULL, NULL,
+                                                           ELM_GENLIST_ITEM_NONE, NULL, NULL);
+       elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
        //----------------------------------------------------------------------------------------------
        /* Registering callback function for VCONFKEY_SETAPPL_USB_MODE_INT */
        vconf_ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL,
@@ -292,9 +689,9 @@ static void debug_mode_change_vconf_cb(keynode_t *key, void *data)
        SETTING_TRACE("debugMode: %d", debugMode);
 
        if (debugMode == 1) {
-               elm_check_state_set(ad->debug_mode->eo_check, EINA_TRUE);
+               setting_update_gl_item_chk_status(ad->debug_mode, EINA_TRUE);
        } else if (debugMode == 0) {
-               elm_check_state_set(ad->debug_mode->eo_check, EINA_FALSE);
+               setting_update_gl_item_chk_status(ad->debug_mode, EINA_FALSE);
        } else {
                SETTING_TRACE("ERROR: debugMode value is improper");
        }
@@ -320,16 +717,26 @@ static int setting_connectivity_usb_destroy(void *cb)
        retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
 
        SettingConnectivityUG *ad = (SettingConnectivityUG *) cb;
+       if (!setting_view_connectivity_usb.is_create)
+               return SETTING_RETURN_SUCCESS;
+
+       setting_view_connectivity_usb.is_create = 0;
        int vconf_ret = -1;
        int num_err = 0;
 
        /* Removing the popup if the popup is loaded */
        unload_popup(ad);
-       win_main = NULL;
+
+       /*if (ad->selectioninfo_popup) {
+               evas_object_del(ad->selectioninfo_popup);
+               ad->selectioninfo_popup = NULL;
+       }*/
+
 
        /* Closing vconf trace */
        vconf_ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL,
                                                debug_mode_change_vconf_cb);
+
        if (vconf_ret != 0)
        {
                SETTING_TRACE("FAIL: vconf_ignore_key_changed(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL)");
@@ -337,15 +744,16 @@ static int setting_connectivity_usb_destroy(void *cb)
        }
 
        vconf_ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_USB_IN_MODE_CHANGE, in_mode_change_vconf_cb);
+
        if (vconf_ret != 0)
        {
                SETTING_TRACE("FAIL: vconf_ignore_key_changed(VCONFKEY_SETAPPL_USB_MODE_INT)\n");
                num_err++;
        }
 
+
        if (ad->ly_usb != NULL) {
                evas_object_del(ad->ly_usb);
-               setting_view_connectivity_usb.is_create = 0;
        }
 
        SETTING_TRACE_END;
@@ -378,6 +786,7 @@ static int setting_connectivity_usb_update(void *cb)
        if (ad->ly_usb != NULL) {
                evas_object_show(ad->ly_usb);
        }
+
        SETTING_TRACE_END;
        return SETTING_RETURN_SUCCESS;
 }
@@ -467,16 +876,6 @@ static void unload_popup(void* data)
                SETTING_TRACE("ad->pop == NULL\n");
        }
 
-       if (popup_eo != NULL)
-       {
-               SETTING_TRACE("evas_object_del(popup_eo)\n");
-               evas_object_del(popup_eo);
-               popup_eo = NULL;
-       }
-       else
-       {
-               SETTING_TRACE("popup_eo == NULL\n");
-       }
 
        SETTING_TRACE_END;
 }
@@ -487,16 +886,28 @@ static void unload_popup(void* data)
 static void debug_mode_resp_cb(void *data, Evas_Object *obj, void *event_info)
 {
        SETTING_TRACE_BEGIN;
-       int ret = -1;
        SettingConnectivityUG *ad = (SettingConnectivityUG *)data;
 
        int resp_type = btn_type(obj);
        if (resp_type == POPUP_RESPONSE_OK) {
-               ret = vconf_set_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL, 1);
+               /* do nothing */
+               int ret = vconf_set_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL, 1);
                if (ret != 0) {
                        SETTING_TRACE("FAIL: vconf_set_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL)");
                        return;
                }
+
+               setting_create_select_info_popup(&ad->selectioninfo_popup, ad->view_layout, 3.0,
+                                       _(CONNECTTIVITY_SELECT_INFO_POPUP_STR), "center_text");
+       }
+       else if (resp_type == POPUP_RESPONSE_CANCEL) {
+               /* rollback */
+               //setting_update_gl_item_chk_status(ad->debug_mode, 0);
+               if (ad->debug_mode)
+               {
+                       ad->debug_mode->chk_status = 0;
+                       elm_genlist_item_fields_update(ad->debug_mode->item, "*", ELM_GENLIST_ITEM_FIELD_CONTENT);
+               }
        }
 
        unload_popup(ad);
@@ -510,23 +921,18 @@ static void debug_mode_resp_cb(void *data, Evas_Object *obj, void *event_info)
 void load_usb_connection_popup(void* data)
 {
        SETTING_TRACE_BEGIN;
-       //int ret;
        SettingConnectivityUG *ad = (SettingConnectivityUG *)data;
 
        unload_popup(ad);
-       popup_msg = _(DEBUG_MODE_POPUP_TEXT);
-       popup_title = _(DEBUG_MODE_POPUP_TITLE);
-
-       ad->pop = setting_create_popup_with_btn(ad, win_main,//ad->win_get,
-                                       popup_title,
-                                       popup_msg,
+       ad->pop = setting_create_popup_with_label_and_reverse_btn( ad,
+                                       ad->win_get,
+                                       NULL,
+                                       _(DEBUG_MODE_POPUP_TEXT),
                                        debug_mode_resp_cb,
                                        0, 2,
-                                       _("IDS_COM_SK_OK"),
-                                       _("IDS_COM_SK_CANCEL"));
+                                       _("IDS_COM_SK_CANCEL"), _("IDS_ST_BUTTON_ENABLE") );
+
        if (!(ad->pop)) SETTING_TRACE("FAIL: setting_create_popup_with_btn()");
 
        SETTING_TRACE_END;
 }
-
-