tizen 2.3.1 release
[apps/home/settings.git] / setting-storage / src / setting-storage-main.c
old mode 100755 (executable)
new mode 100644 (file)
index 22b89e3..f87160a
 /*
  * setting
- * Copyright (c) 2012 Samsung Electronics Co., Ltd.
  *
- * Licensed under the Flora License, Version 1.0 (the License);
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
+ *
+ * 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-storage-main.h>
-#include <Ecore_X.h>
-#include <package-manager.h>
-#include <ail.h>
-
-static int setting_storage_main_create(void *cb);
-static int setting_storage_main_destroy(void *cb);
-static int setting_storage_main_update(void *cb);
-static int setting_storage_main_cleanup(void *cb);
-
-static void __setting_storage_main_click_softkey_back_cb(void *data, Evas_Object *obj,
-                                       void *event_info);
-
-setting_view setting_view_storage_main = {
-       .create = setting_storage_main_create,
-       .destroy = setting_storage_main_destroy,
-       .update = setting_storage_main_update,
-       .cleanup = setting_storage_main_cleanup,
-};
-
-static Evas_Object *__setting_storage_main_image_add(Evas *evas, char *icon_path, int width, int height)
-{
-       Evas_Object *image = NULL;
-       image = evas_object_image_add(evas);
-       evas_object_size_hint_weight_set(image, 0.0, EVAS_HINT_EXPAND);
-       evas_object_image_load_size_set(image, width, height);
-       evas_object_image_file_set(image, icon_path, NULL);
-       evas_object_image_fill_set(image, 0, 0, width, height);
-       evas_object_size_hint_min_set(image, width, height);
-       evas_object_show(image);
-
-       return image;
-}
-
-static char *__gl_text_get(void *data, Evas_Object *obj, const char *part)
-{
-       retv_if(!data, NULL);
-       Setting_GenGroupItem_Data *item_data = data;
-
-       if (!safeStrCmp(part, "elm.text.1")) {
-               return (char *)g_strdup(item_data->keyStr);
-       }
-       return NULL;
-}
-
-static Evas_Object *__gl_content_get(void *data, Evas_Object *obj, const char *part)
-{
-       retv_if(!data, NULL);
-       Setting_GenGroupItem_Data *item_data = data;
-       SettingStorageUG *ad = (SettingStorageUG *) item_data->userdata;
-
-       int width = SETTING_STORAGE_ICON_WIDTH;
-       int height = SETTING_STORAGE_ICON_HEIGHT;
-
-       app_device_orientation_e m = elm_win_rotation_get(ad->win_get);
-       if(APP_DEVICE_ORIENTATION_90 == m || APP_DEVICE_ORIENTATION_270 == m) {
-               width = SETTING_STORAGE_ICON_LANDSCAPE_WIDTH;
-       } else {
-               width = SETTING_STORAGE_ICON_WIDTH;
-       }
-       float temp_size = 0.0;
-
-       /* use size (applications + picture/videos + audio + miscellaneous + available) as 100% */
-       double total_size = ad->apps_status.dTotal + ad->pics_videos_status.dTotal +
-                                + ad->audio_status.dTotal +
-                               ad->others_status.dTotal + ad->internal_status.dAvail;
-
-       if (!safeStrCmp(part, "elm.icon")){
-               Evas_Object *status_box = NULL;
-               status_box = elm_box_add(obj);
-               retvm_if(status_box == NULL, NULL, "Cannot get box");
-               item_data->eo_check = status_box;
-               elm_box_horizontal_set(status_box, 1);
-               evas_object_size_hint_align_set(status_box, 0.0, EVAS_HINT_FILL);
-               evas_object_show(status_box);
-
-               Evas *evas = evas_object_evas_get(obj);
-
-               /* apps */
-               unsigned int apps_size = 0;
-               temp_size = ((float)ad->apps_status.dTotal / total_size) * width;
-               if (temp_size < 1 && temp_size > 0) {
-                       apps_size = 1;
-               } else {
-                       apps_size = (unsigned int)temp_size;
-               }
-               if (apps_size > 0) {
-                       Evas_Object *apps = __setting_storage_main_image_add(evas, SETTING_STORAGE_APPS_ICON_PATH, apps_size, height);
-                       elm_box_pack_end(status_box, apps);
-               }
-
-               /* pictures, videos */
-               unsigned int pics_videos_size = 0;
-               temp_size = ((float)ad->pics_videos_status.dTotal / total_size) * width;
-               if (temp_size < 1 && temp_size > 0) {
-                       pics_videos_size = 1;
-               } else {
-                       pics_videos_size = (unsigned int)temp_size;
-               }
-               if (pics_videos_size > 0) {
-                       Evas_Object *pics = __setting_storage_main_image_add(evas, SETTING_STORAGE_PICS_ICON_PATH, pics_videos_size, height);
-                       elm_box_pack_end(status_box, pics);
-               }
-
-               /* audio */
-               unsigned int audio_size = 0;
-               temp_size = ((float)ad->audio_status.dTotal / total_size) * width;
-               if (temp_size < 1 && temp_size > 0) {
-                       audio_size = 1;
-               } else {
-                       audio_size = (unsigned int)temp_size;
-               }
-               if (audio_size > 0) {
-                       Evas_Object *audio = __setting_storage_main_image_add(evas, SETTING_STORAGE_AUDIO_ICON_PATH, audio_size, height);
-                       elm_box_pack_end(status_box, audio);
-               }
-
-               /* Miscellaneous files */
-               unsigned int others_size = 0;
-               temp_size = ((float)ad->others_status.dTotal / total_size) * width;
-               if (temp_size < 1 && temp_size > 0) {
-                       others_size = 1;
-               } else {
-                       others_size = (unsigned int)temp_size;
-               }
-               if (others_size > 0) {
-                       Evas_Object *misc = __setting_storage_main_image_add(evas, SETTING_STORAGE_MISCES_ICON_PATH, others_size, height);
-                       elm_box_pack_end(status_box, misc);
-               }
-
-               /* available */
-               unsigned int avail_size = 0;
-               temp_size = ((float)ad->internal_status.dAvail / total_size) * width;
-               if (temp_size < 1 && temp_size > 0) {
-                       avail_size = 1;
-               } else {
-                       avail_size = (unsigned int)temp_size;
-
-                       int sum = apps_size + pics_videos_size + audio_size + others_size;
-                       if ((sum + avail_size) > width) {
-                               avail_size = width - sum;
-                       }
-               }
-               if (avail_size > 0) {
-                       Evas_Object *avail = __setting_storage_main_image_add(evas, SETTING_STORAGE_AVAIL_ICON_PATH, avail_size, height);
-                       elm_box_pack_end(status_box, avail);
-               }
-
-               return status_box;
-       }
-       return NULL;
-}
-
-static void __gl_del(void *data, Evas_Object *obj)
-{
-       /* SETTING_TRACE_BEGIN; */
-       Setting_GenGroupItem_Data *item_data = (Setting_GenGroupItem_Data *) data;
-       if (item_data) {
-               G_FREE(item_data->keyStr);
-               FREE(item_data);
-       }
-}
-
-static int __setting_storage_main_fs_stat(double *total, double *avail, const char *path)
-{
-       SETTING_TRACE_BEGIN;
-       setting_retvm_if(NULL == total || NULL == avail, SETTING_RETURN_FAIL, "Null output parameters");
-
-       struct statvfs s;
-
-       if (!statvfs(path, &s)) {
-               SETTING_TRACE("f_bsize = %ld f_blocks = %ld f_bavail = %ld f_frsize = %ld",
-                    s.f_bsize, s.f_blocks, s.f_bavail, s.f_frsize);
-               *total = (double)s.f_frsize * s.f_blocks;
-               *avail = (double)s.f_bsize * s.f_bavail;
-       } else {
-               return SETTING_RETURN_FAIL;
-       }
-
-       return SETTING_RETURN_SUCCESS;
-}
-
-static int __setting_storage_status_size_transition(double size, char *size_desc)
-{
-       //SETTING_TRACE_BEGIN;
-       //SETTING_TRACE("size = %f", size);
-       double tmp_size = 0.0;
-       int ret = 0;
-       if (size < SETTING_STORAGE_MEGABYTE_VALUE) {    // size < 1MB: show x.xKB
-               tmp_size = size / SETTING_STORAGE_KILOBYTE_VALUE;
-               ret = snprintf(size_desc, SETTING_STORAGE_MAX_STR_LEN, "%4.2lf%s", tmp_size, "KB");
-               retv_if(ret < 0, SETTING_RETURN_FAIL);
-       } else if (size < SETTING_STORAGE_GIGABYTE_VALUE) {     // size < 1GB: show x.xMB
-               tmp_size = size / SETTING_STORAGE_MEGABYTE_VALUE;
-               ret = snprintf(size_desc, SETTING_STORAGE_MAX_STR_LEN, "%4.2lf%s", tmp_size, "MB");
-               retv_if(ret < 0, SETTING_RETURN_FAIL);
-       } else { // 1G <= size: show x.xGB
-               tmp_size = size / SETTING_STORAGE_GIGABYTE_VALUE;
-               ret = snprintf(size_desc, SETTING_STORAGE_MAX_STR_LEN, "%4.2lf%s", tmp_size, "GB");
-               retv_if(ret < 0, SETTING_RETURN_FAIL);
-       }
-
-       return SETTING_RETURN_SUCCESS;
-}
-
-
-static void __setting_storage_main_internal_storage_status_get(void *data)
-{
-       SETTING_TRACE_BEGIN;
-       setting_retm_if(data == NULL, "Data parameter is NULL");
-       SettingStorageUG *ad = (SettingStorageUG *) data;
-
-       double dTotal = 0.0;
-       double dAvail = 0.0;
-       int ret = SETTING_RETURN_SUCCESS;
-       Setting_Storage_Status internal_status;
-
-       ret = __setting_storage_main_fs_stat(&dTotal, &dAvail, SETTING_STORAGE_OPT_USR_PATH);
-       setting_retm_if(ret == SETTING_RETURN_FAIL, "get opt status failed");
-       internal_status.dTotal = dTotal;
-       internal_status.dAvail = dAvail;
-
-       ad->internal_status = internal_status;
-}
-
-static bool __setting_storage_main_media_item_cb(media_info_h media, void *data)
-{
-       //SETTING_TRACE_BEGIN;
-       setting_retvm_if(media == NULL, true, "media is NULL");
-       setting_retvm_if(data == NULL, true, "Data parameter is NULL");
-       double *total_size = (double *) data;
-
-       unsigned long long size = 0;
-
-       char *file_path = NULL;
-       media_info_get_file_path(media, &file_path);
-
-       if (!ecore_file_exists(file_path)) {
-               FREE(file_path);
-               return true;
-       }
-       FREE(file_path);
-
-       media_info_get_size(media, &size);
-       //SETTING_TRACE("size : [%lld]", size);
-       *total_size += size;
-
-       return true;
-}
-
-static double __setting_storage_main_pictures_videos_status_get()
-{
-       SETTING_TRACE_BEGIN;
-       double total_size = 0.0;
-
-       int ret = MEDIA_CONTENT_ERROR_NONE;
-       filter_h filter = NULL;
-
-       /*Set Filter*/
-       char *condition = "(MEDIA_TYPE=0 OR MEDIA_TYPE=1) and MEDIA_PATH LIKE \'/opt/usr/%%\'"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
-
-       ret = media_filter_create(&filter);
-       if(ret != MEDIA_CONTENT_ERROR_NONE) {
-               SETTING_TRACE_ERROR("Fail to create filter");
-               return total_size;
-       }
-
-       ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
-       if(ret != MEDIA_CONTENT_ERROR_NONE) {
-               media_filter_destroy(filter);
-               SETTING_TRACE_ERROR("Fail to set condition");
-               return total_size;
-       }
-
-       ret = media_info_foreach_media_from_db(filter, __setting_storage_main_media_item_cb, &total_size);
-       if(ret != MEDIA_CONTENT_ERROR_NONE) {
-               media_filter_destroy(filter);
-               SETTING_TRACE_ERROR("Fail to get media");
-               return total_size;
-       }
-
-       ret = media_filter_destroy(filter);
-       if (ret != MEDIA_CONTENT_ERROR_NONE) {
-               SETTING_TRACE_ERROR("destroy filter failed\n\n");
-               return total_size;
-       }
+#include <glib.h>
 
-       return total_size;
-}
+#include <media_content.h>
 
-static double __setting_storage_main_audio_status_get()
-{
-       SETTING_TRACE_BEGIN;
+#include "setting-common-general-func.h"
+#include "setting-storage-SD.h"
+#include "setting-storage-USB.h"
+#include "setting-storage-utils.h"
+#include "setting-storage-async-worker.h"
+#include "setting-storage-main.h"
 
-       double total_size = 0.0;
+#define SETTING_STORAGE_PIE_RECT_WIDTH (300 * WIDGET_SCALE_FACTOR)
+#define SETTING_STORAGE_PIE_RECT_SIZE (300 * WIDGET_SCALE_FACTOR)
+/*#define SETTING_STORAGE_PIE_CYCLE_SIZE (294 * WIDGET_SCALE_FACTOR) */
+#define SETTING_STORAGE_PIE_CYCLE_SIZE (123 * WIDGET_SCALE_FACTOR)
+#define SETTING_STORAGE_ITEM_LIST_SIZE (180 * WIDGET_SCALE_FACTOR)
 
-       int ret = MEDIA_CONTENT_ERROR_NONE;
-       filter_h filter = NULL;
+#define SETTING_STORAGE_APPS_ICON_PATH SETTING_ICON_PATH"/A01-1_icon_color_applications.png"
+#define SETTING_STORAGE_PICS_ICON_PATH SETTING_ICON_PATH"/A01-1_icon_color_pictures.png"
+#define SETTING_STORAGE_AUDIO_ICON_PATH SETTING_ICON_PATH"/A01-1_icon_color_Audio.png"
+#define SETTING_STORAGE_MISCES_ICON_PATH SETTING_ICON_PATH"/A01-1_icon_color_miscellaneous_files.png"
+#define SETTING_STORAGE_AVAIL_ICON_PATH SETTING_ICON_PATH"/A01-1_icon_color_available.png"
+#define SETTING_STORAGE_SYS_ICON_PATH SETTING_ICON_PATH"/A01-1_icon_color_system.png"
 
-       /*Set Filter*/
-       char *condition = "MEDIA_TYPE=3 and MEDIA_PATH LIKE \'/opt/usr/%%\'";   /*0-image, 1-video, 2-sound, 3-music, 4-other*/
+const char *storageUg_MMC_stat = VCONFKEY_SYSMAN_MMC_STATUS;
+const char *storageUg_ENCRYPT_stat = VCONFKEY_SDE_CRYPTO_STATE;
 
-       ret = media_filter_create(&filter);
-       if(ret != MEDIA_CONTENT_ERROR_NONE) {
-               SETTING_TRACE("Fail to create filter");
-               return total_size;
-       }
-
-       ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
-       if(ret != MEDIA_CONTENT_ERROR_NONE) {
-               media_filter_destroy(filter);
-               SETTING_TRACE("Fail to set condition");
-               return total_size;
-       }
-
-       ret = media_info_foreach_media_from_db(filter, __setting_storage_main_media_item_cb, &total_size);
-       if(ret != MEDIA_CONTENT_ERROR_NONE) {
-               media_filter_destroy(filter);
-               SETTING_TRACE("Fail to get media");
-               return total_size;
-       }
-
-       ret = media_filter_destroy(filter);
-       if (ret != MEDIA_CONTENT_ERROR_NONE) {
-               SETTING_TRACE_ERROR("destroy filter failed\n\n");
-               return total_size;
-       }
-
-       return total_size;
-}
+static setting_view setting_view_storage_main;
 
-static bool __setting_storage_main_other_item_cb(media_info_h media, void *data)
+static inline void storageUg_main_pie_graph_cairo(Evas_Object *pie_image,
+                                                  SettingStorageUG *ad)
 {
-       //SETTING_TRACE_BEGIN;
-       setting_retvm_if(media == NULL, true, "media is NULL");
-       setting_retvm_if(data == NULL, true, "Data parameter is NULL");
-       double *total_size = (double *) data;
+       cairo_t *cr;
+       double total_size;
+       int cairo_w, cairo_h;
+       double account_size = 0.0;
+       cairo_surface_t *cairo_surface;
+       double apps_sz = 0, pics_sz = 0, audio_size = 0, misces_sz = 0, internal_sz = 0, system_sz = 0;
 
-       unsigned long long size = 0;
+       ret_if(NULL == ad);
 
-       char *file_path = NULL;
-       media_info_get_file_path(media, &file_path);
+       cairo_h = cairo_w = SETTING_STORAGE_PIE_CYCLE_SIZE;
 
-       if (!ecore_file_exists(file_path)) {
-               FREE(file_path);
-               return true;
-       }
-
-       if (!safeStrNCmp(file_path, PATH1, sizeof(PATH1)) ||
-               !safeStrNCmp(file_path, PATH2, sizeof(PATH2)) ||
-               !safeStrNCmp(file_path, PATH3, sizeof(PATH3)) ||
-               !safeStrNCmp(file_path, PATH4, sizeof(PATH4)) ||
-               !safeStrNCmp(file_path, PATH5, sizeof(PATH5)) ||
-               !safeStrNCmp(file_path, PATH6, sizeof(PATH6)) ||
-               !safeStrNCmp(file_path, PATH7, sizeof(PATH7)) ||
-               !safeStrNCmp(file_path, PATH8, sizeof(PATH8)) ||
-               !safeStrNCmp(file_path, PATH9, sizeof(PATH9)))
-       {
-               FREE(file_path);
-               return true;
-       }
-               
-       media_info_get_size(media, &size);
-       //SETTING_TRACE("size : [%lld]", size);
-       *total_size += size;
-       FREE(file_path);
-       return true;
-}
-
-/**
-  * Miscellaneous files is all directories files under /opt/usr/media/ except below default directories:
-  * ++++++++++++++++++++++++++++++++++++++++++++++++
-  *  -sh-4.1# ls -all
-  *  total 56
-  *  drwxrwxrwx 11 app  app   4096 Jan  4 12:42 .
-  *  drwxr-xr-x 20 root root  4096 Jan  7 10:09 ..
-  *  drwxr-xr-x  2 root root  4096 Jan  4 08:46 .tmp_download
-  *  drwxr-xr-x  2 app  app   4096 Jan  4 08:47 .video-hub
-  *  drwxrwxrwx  2 app  app   4096 Oct  5      2012 Camera
-  *  drwxrwxrwx  3 app  app   4096 Jan  4 08:46 Downloads
-  *  drwxrwxrwx  2 app  app   4096 Oct  5      2012 Images
-  *  drwxrwxrwx  2 app  app   4096 Oct  5      2012 Others
-  *  drwxrwxrwx  3 app  app   4096 Oct  5      2012 Sounds
-  *  drwxrwxrwx  2 app  app   4096 Oct  5      2012 Videos
-  *  drwxrwxrwx  2 app  app  16384 Oct  5      2012 lost+found
-  * ++++++++++++++++++++++++++++++++++++++++++++++++
-  */
-static double __setting_storage_main_miscellaneous_size_get()
-{
-       SETTING_TRACE_BEGIN;
-       double total_size = 0.0;
+       total_size = ad->sz_inter_total;
 
-       int ret = MEDIA_CONTENT_ERROR_NONE;
-       filter_h filter = NULL;
-
-       /*Set Filter*/
-       char *condition = "(MEDIA_TYPE=4) and MEDIA_PATH LIKE \'/opt/usr/media/%%\'";
-
-       ret = media_filter_create(&filter);
-       if(ret != MEDIA_CONTENT_ERROR_NONE) {
-               SETTING_TRACE_ERROR("Fail to create filter");
-               return total_size;
-       }
+       if (total_size == 0) {
+               apps_sz = 0;
+               pics_sz = 0;
+               audio_size = 0;
+               misces_sz = 0;
+               internal_sz = 0;
+       } else {
+               /* system memory */
+               system_sz = ad->sz_sys / total_size;
+               if (system_sz > 1 || system_sz < 0)
+                       system_sz = 1;
 
-       ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
-       if(ret != MEDIA_CONTENT_ERROR_NONE) {
-               media_filter_destroy(filter);
-               SETTING_TRACE_ERROR("Fail to set condition");
-               return total_size;
-       }
+               /* apps */
+               apps_sz = ad->sz_apps / total_size;
+               if (apps_sz > 1 || apps_sz < 0)
+                       apps_sz = 1;
 
-       ret = media_info_foreach_media_from_db(filter, __setting_storage_main_other_item_cb, &total_size);
-       if(ret != MEDIA_CONTENT_ERROR_NONE) {
-               media_filter_destroy(filter);
-               SETTING_TRACE_ERROR("Fail to get media");
-               return total_size;
-       }
+               /* pics */
+               pics_sz = ad->sz_pics_videos / total_size;
+               if (pics_sz > 1 || pics_sz < 0)
+                       pics_sz = 1;
 
-       ret = media_filter_destroy(filter);
-       if (ret != MEDIA_CONTENT_ERROR_NONE) {
-               SETTING_TRACE_ERROR("destroy filter failed");
-               return total_size;
-       }
+               /* audio */
+               audio_size = ad->sz_audio / total_size;
+               if (audio_size > 1 || audio_size < 0)
+                       audio_size = 1;
 
-       return total_size;
-}
+               /* Miscellaneous Files */
+               misces_sz = ad->sz_misces / total_size;
+               if (misces_sz > 1 || misces_sz < 0)
+                       misces_sz = 1;
 
-static void __setting_storage_main_launch_ug_destroy_cb(ui_gadget_h ug, void *priv)
-{
-       SETTING_TRACE_BEGIN;
-       /* restore the '<-' button on the navigate bar */
-       retm_if(priv == NULL, "priv is NULL");
-       SettingStorageUG *ad = (SettingStorageUG *) priv;
-       if (ug) {
-               ug_destroy(ug);
+               /* internal */
+               internal_sz = ad->sz_inter_avail / total_size;
+               if (internal_sz > 1 || internal_sz < 0)
+                       internal_sz = 1;
        }
-       Elm_Object_Item *navi_it = elm_naviframe_top_item_get(ad->navibar);
-       retm_if(navi_it == NULL, "navi_it is NULL");
-       Evas_Object *back_btn = elm_object_item_part_content_get(navi_it, "prev_btn");
 
-       if (back_btn != NULL) {
-               elm_object_style_set(back_btn, NAVI_BACK_BUTTON_STYLE); /* take into effect */
+       if (ad->cr) {
+               cairo_destroy(ad->cr);
+               ad->cr = NULL;
        }
 
-       setting_view_update(&setting_view_storage_main, ad);
-}
-
-static void __setting_storage_main_launch_ug_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv)
-{
-       SETTING_TRACE_BEGIN;
-       retm_if(priv == NULL, "priv is NULL");
-       SettingStorageUG *ad = (SettingStorageUG *) priv;
-       Evas_Object *base = NULL;
-       base = (Evas_Object *) ug_get_layout(ug);
-       retm_if(base == NULL, "base is NULL");
-
-       switch (mode) {
-       case UG_MODE_FULLVIEW:
-               evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-               //elm_win_resize_object_add(ad->win_get, base);
-               evas_object_show(base);
-               break;
-       default:
-               /* do nothing */
-               break;
+       cairo_surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, cairo_w, cairo_h);
+       if (NULL == cairo_surface) {
+               SETTING_TRACE_ERROR("cairo_image_surface_create() Fail");
+               return;
        }
-}
 
-static void __setting_storage_main_launch_manage_app_ug(void *data)
-{
-       SETTING_TRACE_BEGIN;
-       /* error check */
-       retm_if(data == NULL, "Data parameter is NULL");
+       cr = cairo_create(cairo_surface);
+       cairo_surface_destroy(cairo_surface);
+
+       /*all, use avaliable color */
+       cairo_set_line_width(cr, 4);
+       cairo_arc(cr, cairo_w / 2, cairo_h / 2, cairo_w / 2, 0, 2 * M_PI);
+       cairo_set_source_rgba(cr, 235 / 255., 235 / 255., 235 / 255., 1);
+       cairo_fill(cr);
+
+       /*system memory */
+       account_size = 0.75;
+       cairo_line_to(cr, cairo_w / 2, cairo_h / 2);
+       cairo_arc_negative(cr, cairo_w / 2, cairo_h / 2, cairo_w / 2, account_size * 2 * M_PI,
+                          (account_size - system_sz) * 2 * M_PI);
+       cairo_set_source_rgba(cr, 153 / 255., 66 / 255., 194 / 255., 1);
+       cairo_fill(cr);
+       account_size -= system_sz;
+
+       /*app */
+       cairo_line_to(cr, cairo_w / 2, cairo_h / 2);
+       cairo_arc_negative(cr, cairo_w / 2, cairo_h / 2, cairo_w / 2, account_size * 2 * M_PI,
+                          (account_size - apps_sz) * 2 * M_PI);
+       cairo_set_source_rgba(cr, 255 / 255., 189 / 255., 8 / 255., 1);
+       cairo_fill(cr);
+       account_size -= apps_sz;
+
+       /*pic */
+       cairo_line_to(cr, cairo_w / 2, cairo_h / 2);
+       cairo_arc_negative(cr, cairo_w / 2, cairo_h / 2, cairo_w / 2, account_size * 2 * M_PI,
+                          (account_size - pics_sz) * 2 * M_PI);
+       cairo_set_source_rgba(cr, 119 / 255., 222 / 255., 60 / 255., 1);
+       cairo_fill(cr);
+       account_size -= pics_sz;
+
+       /*audio */
+       cairo_line_to(cr, cairo_w / 2, cairo_h / 2);
+       cairo_arc_negative(cr, cairo_w / 2, cairo_h / 2, cairo_w / 2, account_size * 2 * M_PI,
+                          (account_size - audio_size) * 2 * M_PI);
+       cairo_set_source_rgba(cr, 28 / 255., 140 / 255., 252 / 255., 1);
+       cairo_fill(cr);
+       account_size -= audio_size;
+
+       /*miscellaneous files */
+       cairo_line_to(cr, cairo_w / 2, cairo_h / 2);
+       cairo_arc_negative(cr, cairo_w / 2, cairo_h / 2, cairo_w / 2, account_size * 2 * M_PI,
+                          (account_size - misces_sz) * 2 * M_PI);
+       cairo_set_source_rgba(cr, 52 / 255., 220 / 255., 250 / 255., 1);
+       cairo_fill(cr);
+       account_size -= misces_sz;
+
+       evas_object_image_size_set(pie_image, cairo_w, cairo_h);
+       evas_object_image_data_set(pie_image, cairo_image_surface_get_data(cairo_surface));
+       evas_object_image_fill_set(pie_image, 0, 0, cairo_w, cairo_h);
+       evas_object_resize(pie_image, cairo_w, cairo_h);
+       ad->cr = cr;
+}
+
+static inline void storageUg_main_part_pie_graph_set(Evas_Object *parent,
+                                                     const char *part, void *data)
+{
+       Evas *evas;
+       int cairo_w, cairo_h;
+       Evas_Object *clip;
+       Evas_Object *pie_image;
+       SettingStorageUG *ad = data;
+
+       ret_if(parent == NULL);
+       ret_if(data == NULL);
 
-       SettingStorageUG *ad = (SettingStorageUG *) data;
+       cairo_h = cairo_w = SETTING_STORAGE_PIE_CYCLE_SIZE;
 
-       service_h svc;
-       if (service_create(&svc)) {
+       evas = evas_object_evas_get(parent);
+       if (NULL == evas) {
+               SETTING_TRACE_ERROR("evas_object_evas_get() Fail");
                return;
        }
 
-       service_add_extra_data(svc, "viewtype", "manage-applications");
+       clip = evas_object_rectangle_add(evas);
+       evas_object_color_set(clip, 255, 255, 255, 255);
+       setting_resize_object(clip, cairo_w, cairo_h);
 
-       struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
-       if (!cbs) {
-               SETTING_TRACE_ERROR("calloc failed");
-               service_destroy(svc);
-               return;
-       }
-       cbs->layout_cb = __setting_storage_main_launch_ug_layout_cb;
-       cbs->result_cb = NULL;
-       cbs->destroy_cb = __setting_storage_main_launch_ug_destroy_cb;
-       cbs->priv = (void *)ad;
-
-       ui_gadget_h ug = ug_create(ad->ug, "setting-manage-applications-efl", UG_MODE_FULLVIEW, svc, cbs);
-       if (NULL == ug) {       /* error handling */
-               SETTING_TRACE_ERROR("NULL == ug");
-       }
+       pie_image = evas_object_image_add(evas);
+       evas_object_color_set(pie_image, 255, 255, 255, 250);
+       evas_object_clip_set(pie_image, clip);
+       evas_object_show(pie_image);
+       elm_object_part_content_set(parent, part, pie_image);
 
-       //bundle_free(b);
-       service_destroy(svc);
-       FREE(cbs);
+       storageUg_main_pie_graph_cairo(pie_image, ad);
 }
 
-static void __setting_storage_main_app_launch(char *app_name)
+Evas_Object *storageUg_main_pie_item_get_icon(void *data, Evas_Object *obj,
+                                              const char *part)
 {
-       SETTING_TRACE_BEGIN;
-       setting_retm_if(app_name == NULL, "app_name is NULL");
+       int layout_w, layout_h;
+       double used_size;
+       Evas_Object *layout;
+       SettingStorageUG *ad = data;
+       char size_str[STORAGEUG_MAX_STR_LEN] = {0};
+       char final_str[STORAGEUG_MAX_STR_LEN] = {0};
 
-       app_launcher(app_name);
-}
+       retv_if(NULL == obj, NULL);
+       retv_if(NULL == data, NULL);
+       retvm_if(safeStrCmp(part, "elm.icon"), NULL, "part(%s) Invaild", part);
 
-static void __setting_storage_main_Gendial_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");
-       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);
+       layout_w = -1;
+       layout_h = SETTING_STORAGE_PIE_RECT_SIZE;
 
-       SettingStorageUG *ad = (SettingStorageUG *) data;
+       layout = elm_layout_add(obj);
+       elm_layout_file_set(layout, SETTING_THEME_EDJ_NAME, "storage_pie");
 
-       SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, 0.0);
 
-       if (isEmulBin()) {
-               if (!safeStrCmp(SETTING_STORAGE_DEFAULT_STORAGE_STR, list_item->keyStr)) {
-                       setting_view_change(&setting_view_storage_main,
-                                           &setting_view_storage_default_storage, ad);
-               } else if (!safeStrCmp(SETTING_STORAGE_MISCES_STR, list_item->keyStr)) {
-                       setting_view_change(&setting_view_storage_main,
-                                           &setting_view_storage_miscellaneous_files, ad);
-               } else {
-                       // do nothing now
-               }
-       } else {
-               if (!safeStrCmp("IDS_ST_BODY_APPLICATIONS", list_item->keyStr)) {
-                       __setting_storage_main_launch_manage_app_ug(ad);
-               } else if (!safeStrCmp(SETTING_STORAGE_DEFAULT_STORAGE_STR, list_item->keyStr)) {
-                       setting_view_change(&setting_view_storage_main,
-                                           &setting_view_storage_default_storage, ad);
-               } else if (!safeStrCmp(SETTING_STORAGE_PICS_STR, list_item->keyStr)) {
-                       __setting_storage_main_app_launch("org.tizen.gallery");
-               } else if (!safeStrCmp(SETTING_STORAGE_AUDIO_STR, list_item->keyStr)) {
-                       __setting_storage_main_app_launch("org.tizen.music-player");
-               } else if (!safeStrCmp(SETTING_STORAGE_MISCES_STR, list_item->keyStr)) {
-                       setting_view_change(&setting_view_storage_main,
-                                           &setting_view_storage_miscellaneous_files, ad);
-               } else {
-                       // do nothing now
-               }
-       }
-}
+       /*title */
+       elm_object_part_text_set(layout, "storage_title.text",
+                                _(STORAGEUG_STR_INTERNAL_STORAGE));
 
-static int __setting_storage_main_check_mmc_status()
-{
-       int ret = 0;
-       struct stat parent_stat, mount_stat;
+       storageUg_size_to_str(ad->sz_inter_avail, size_str, sizeof(size_str));
+       snprintf(final_str, sizeof(final_str), "%s %s", size_str,
+                _(STORAGEUG_STR_AVAIL));
+       elm_object_part_text_set(layout, "storage_total.text", final_str);
 
-       ret = stat(SETTING_STORAGE_MMC_PATH, &mount_stat);
-       setting_retvm_if(ret != 0, -1, "get stat error : /opt/storage/sdcard");
+       used_size = ad->sz_inter_total - ad->sz_inter_avail;
+       storageUg_size_to_str(used_size, size_str, sizeof(size_str));
+       snprintf(final_str, sizeof(final_str), "%s %s", size_str,
+                _(STORAGEUG_STR_USED));
+       elm_object_part_text_set(layout, "storage_used.text", final_str);
 
-       ret = stat(SETTING_STORAGE_MMC_PARENT_PATH, &parent_stat);
-       setting_retvm_if(ret != 0, -1, "get stat error : /opt/storage/sdcard/..");
+       /*pie */
+       storageUg_main_part_pie_graph_set(layout, "pie_rect", ad);
+       setting_resize_object(layout, layout_w, layout_h);
+       evas_object_show(layout);
 
-       /* Does not mounted, same st_dev */
-       if(mount_stat.st_dev == parent_stat.st_dev) {
-               return 0;
-       } else {        /* MMC mounted, diff st_dev */
-               return 1;
-       }
+       return layout;
 }
 
-static void __setting_storage_main_sd_card_info_get(char* szTotal, char* szAvail)
+Evas_Object *storageUg_color_item_content_get(void *data, Evas_Object *obj,
+                                              const char *part)
 {
-       int mmc_status = __setting_storage_main_check_mmc_status();
-       setting_retm_if(mmc_status == -1, "check mmc status failed");
-
-       /* Does not mounted, same st_dev */
-       if (mmc_status == 0) {
-               snprintf(szTotal, SETTING_STORAGE_MAX_STR_LEN, "%s", _("IDS_ST_HEADER_UNAVAILABLE"));
-               snprintf(szAvail, SETTING_STORAGE_MAX_STR_LEN, "%s", _("IDS_ST_HEADER_UNAVAILABLE"));
-       }
-       /*  MMC mounted, diff st_dev */
-       else {
-               double dTotal = 0.0;
-               double dAvail = 0.0;
-
-               int ret = SETTING_RETURN_SUCCESS;
-               ret = __setting_storage_main_fs_stat(&dTotal, &dAvail, SETTING_STORAGE_MMC_PATH);
-               setting_retm_if(ret == SETTING_RETURN_FAIL, "get sd card size detail failed");
-
-               ret = __setting_storage_status_size_transition(dTotal, szTotal);
-               setting_retm_if(ret == SETTING_RETURN_FAIL, "__setting_storage_status_size_transition failed");
-
-               ret = __setting_storage_status_size_transition(dAvail, szAvail);
-               setting_retm_if(ret == SETTING_RETURN_FAIL, "__setting_storage_status_size_transition failed");
-
-               SETTING_TRACE("Total[%s], Avail[%s]", szTotal, szAvail);
-       }
-}
+       setting_retvm_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER, "data is NULL");
+       Setting_GenGroupItem_Data *list_item = data;
+       int color = list_item->color;
+       if (!strcmp(part, "elm.icon.1")) {
+               Evas_Object *layout = elm_layout_add(obj);
+               elm_layout_file_set(layout, SETTING_THEME_EDJ_NAME, "storage_elem");
 
-static int __setting_storage_main_mmc_content_init(void *data, setting_storage_mmc_cb cb)
-{
-       SETTING_TRACE_BEGIN;
-       setting_retvm_if(NULL == data, SETTING_RETURN_FAIL, "data is NULL");
-       setting_retvm_if(NULL == cb, SETTING_RETURN_FAIL, "cb is NULL");
-       SettingStorageUG *ad = (SettingStorageUG *)data;
-       if (ad->mmc_content == NULL) {
-               ad->mmc_content = (struct mmc_contents *)calloc(1, sizeof(struct mmc_contents));
-               if (ad->mmc_content == NULL ) {
-                       SETTING_TRACE_ERROR("calloc failed");
-                       return SETTING_RETURN_FAIL;
+               switch (color) {
+                       case 1:
+                               break;
+                       case 2:
+                               elm_object_signal_emit(layout, "elm,state,show,app", "elm");
+                               break;
+                       case 3:
+                               elm_object_signal_emit(layout, "elm,state,show,pic", "elm");
+                               break;
+                       case 4:
+                               elm_object_signal_emit(layout, "elm,state,show,audio", "elm");
+                               break;
+                       case 5:
+                               elm_object_signal_emit(layout, "elm,state,show,misc", "elm");
+                               break;
+                       case 6:
+                               elm_object_signal_emit(layout, "elm,state,show,avail", "elm");
+                               break;
+                       default:
+                               break;
                }
+               evas_object_show(layout);
+               return layout;
        }
-       ad->mmc_content->mmc_cb = cb;
-       ad->mmc_content->user_data = ad;
-       return SETTING_RETURN_SUCCESS;
-}
-
-#if SUPPORT_SD_CARD_FORMAT
-static void __setting_storage_status_sd_card_popup_format_response_cb(void *data,
-                                                        Evas_Object *obj, void *event_info)
-{
-       SETTING_TRACE_BEGIN;
-       setting_retm_if(data == NULL, "Data parameter is NULL");
-       SettingStorageUG *ad = (SettingStorageUG *)data;
-
-       if (ad->popup) {
-               evas_object_del(ad->popup);
-               ad->popup = NULL;
-       }
-
-       char sd_total[SETTING_STORAGE_MAX_STR_LEN] = { 0, };
-       char sd_available[SETTING_STORAGE_MAX_STR_LEN] = { 0, };
-       __setting_storage_main_sd_card_info_get(sd_total, sd_available);
 
-       if (ad->sd_total) {
-               G_FREE(ad->sd_total->sub_desc);
-               ad->sd_total->sub_desc = (char *)g_strdup(sd_total);
-               elm_object_item_data_set(ad->sd_total->item, ad->sd_total);
-               elm_genlist_item_update(ad->sd_total->item);
-       }
-       if (ad->sd_available) {
-               G_FREE(ad->sd_available->sub_desc);
-               ad->sd_available->sub_desc = (char *)g_strdup(sd_available);
-               elm_object_item_data_set(ad->sd_available->item, ad->sd_available);
-               elm_genlist_item_update(ad->sd_available->item);
-       }
+       return NULL;
 }
-#endif
 
-static void __setting_storage_status_sd_card_popup_response_cb(void *data,
-                                                        Evas_Object *obj, void *event_info)
+static void storageUg_main_sel(void *data, Evas_Object *obj, void *event_info)
 {
-       SETTING_TRACE_BEGIN;
-       setting_retm_if(data == NULL, "Data parameter is NULL");
-       SettingStorageUG *ad = (SettingStorageUG *)data;
+       SettingStorageUG *ad = data;
+       Elm_Object_Item *item = event_info;
 
-       if (ad->popup) {
-               evas_object_del(ad->popup);
-               ad->popup = NULL;
-       }
-}
-
-static void __setting_storage_main_sd_card_mount_cb(int val, void *data)
-{
-       SETTING_TRACE_BEGIN;
-       setting_retm_if(data == NULL, "Data parameter is NULL");
-       SettingStorageUG *ad = (SettingStorageUG *) data;
+       ret_if(data == NULL);
 
-       if (ad->popup) {
-               evas_object_del(ad->popup);
-               ad->popup = NULL;
-       }
+       elm_genlist_item_selected_set(item, 0);
+       Setting_GenGroupItem_Data *list_item = elm_object_item_data_get(item);
 
-       char *desc = NULL;
-       if (val == SETTING_STORAGE_SYSMAN_REQUEST_SUCCESS) {
-               /* do nothing */
-               SETTING_TRACE("mount success");
-               return;
-       } else if (val == SETTING_STORAGE_SYSMAN_REQUEST_MOUNT_ALREADY) {
-               desc = _(SETTING_STORAGE_SD_CARD_MOUNT_ALREADY_DESC);
-       } else {
-               desc = _("IDS_COM_POP_FAILED");
-       }
+       SETTING_TRACE("clicking item[%s]", list_item->keyStr);
 
-       ad->popup = setting_create_popup_without_btn(ad, ad->win_get, NULL, desc,
-                                __setting_storage_status_sd_card_popup_response_cb,
-                                SETTING_STORAGE_POPUP_TIMER, FALSE, FALSE);
+       if (!safeStrCmp(STORAGEUG_STR_APPS, list_item->keyStr))
+               storageUg_manage_app_ug(ad);
+       else if (!safeStrCmp(STORAGEUG_STR_DEF_STORAGE, list_item->keyStr))
+               setting_view_change(ad->main_view, ad->default_view, ad);
+       else if (!safeStrCmp(STORAGEUG_STR_PICS, list_item->keyStr))
+               app_launcher("org.tizen.gallery");
+       else if (!safeStrCmp(STORAGEUG_STR_AUDIO, list_item->keyStr))
+               app_launcher("org.tizen.music-player-lite");
+       else if (!safeStrCmp(STORAGEUG_STR_MISCES, list_item->keyStr))
+               setting_view_change(ad->main_view, ad->misces_view, ad);
 }
 
-static void __setting_storage_main_sd_card_unmount_cb(int val, void *data)
+static Setting_GenGroupItem_Data *storageUg_main_append_group_mid_item(
+    SettingStorageUG *ad, int color, const char *key_str, const char *sub_str)
 {
-       SETTING_TRACE_BEGIN;
-       setting_retm_if(data == NULL, "Data parameter is NULL");
-       SettingStorageUG *ad = (SettingStorageUG *) data;
-
-       if (ad->popup) {
-               evas_object_del(ad->popup);
-               ad->popup = NULL;
-       }
-
-       if (val == SETTING_STORAGE_SYSMAN_REQUEST_SUCCESS) {
-               /* do nothing */
-               SETTING_TRACE("unmount success");
-               return;
+       Setting_GenGroupItem_Data *item_data = NULL;
+       item_data = (Setting_GenGroupItem_Data *) calloc(1, sizeof(Setting_GenGroupItem_Data));
+       if (item_data) {
+               item_data->userdata = ad;
+               item_data->keyStr = (char *)g_strdup(key_str);
+               item_data->sub_desc = (char *)g_strdup(sub_str);
+               item_data->color = color;
+               item_data->item = elm_genlist_item_append(ad->gl_main, &(ad->itc_color_item), item_data, NULL,
+                                                         ELM_GENLIST_ITEM_NONE, storageUg_main_sel, ad);
        } else {
-               ad->popup = setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_FAILED"),
-                                        __setting_storage_status_sd_card_popup_response_cb,
-                                        SETTING_STORAGE_POPUP_TIMER, FALSE, FALSE);
+               SETTING_TRACE_ERROR("item_data is NULL");
        }
+
+       return item_data;
 }
 
-static void __setting_storage_main_sd_card_mount_unmount(void *data)
+static inline void storageUg_main_dev_memory_detail(SettingStorageUG *ad)
 {
-       SETTING_TRACE_BEGIN;
-       setting_retm_if(data == NULL, "Data parameter is NULL");
-       SettingStorageUG *ad = (SettingStorageUG *)data;
+       char avail_desc[STORAGEUG_MAX_STR_LEN] = {0};
+       char total_desc[STORAGEUG_MAX_STR_LEN] = {0};
 
-       int mmc_status = __setting_storage_main_check_mmc_status();
-       setting_retm_if(mmc_status == -1, "check mmc status failed");
+       /* memory total */
+       storageUg_size_to_str(ad->sz_inter_total, total_desc, sizeof(total_desc));
+       ad->total_space = setting_create_Gendial_field_def(ad->gl_main, &itc_2text_2,
+                                                          NULL, ad, SWALLOW_Type_INVALID, NULL, NULL, 0, STORAGEUG_STR_TOTAL,
+                                                          total_desc, NULL);
+       ret_if(NULL == ad->total_space);
+       ad->total_space->userdata = ad;
+       ad->total_space->group_style = SETTING_GROUP_STYLE_TOP;
+       elm_genlist_item_select_mode_set(ad->total_space->item,
+                                        ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
 
-       if (ad->popup) {
-               evas_object_del(ad->popup);
-               ad->popup = NULL;
-       }
+       /* system memory */
+       ad->sys_mem = storageUg_main_append_group_mid_item(ad,
+                                                          1, STORAGEUG_STR_SYS_MEM, STORAGEUG_STR_WAIT);
+       ret_if(NULL == ad->sys_mem);
+       elm_genlist_item_select_mode_set(ad->sys_mem->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
 
-       /* Show progressbar popup */
-       ad->popup = setting_create_popup_with_progressbar(ad, ad->win_get,
-                                                "pending_list", NULL, NULL,
-                                                __setting_storage_status_sd_card_popup_response_cb,
-                                                SETTING_STORAGE_PROGRESSBAR_TIMEOUT, TRUE, TRUE);
-
-       int ret = -1;
-       /* Does not mounted, same st_dev */
-       if (mmc_status == 0) {
-               ret = __setting_storage_main_mmc_content_init(ad, __setting_storage_main_sd_card_mount_cb);
-               if (ret == SETTING_RETURN_FAIL) {
-                       SETTING_TRACE_ERROR("__setting_storage_main_mmc_content_init fail");
-                       if (ad->popup) {
-                               evas_object_del(ad->popup);
-                               ad->popup = NULL;
-                       }
-                       ad->popup = setting_create_popup_without_btn(ad, ad->win_get,
-                                                NULL, _("IDS_COM_POP_FAILED"),
-                                                __setting_storage_status_sd_card_popup_response_cb,
-                                                SETTING_STORAGE_POPUP_TIMER, FALSE, FALSE);
-                       return;
-               }
-               ret = sysman_request_mount_mmc(ad->mmc_content);
-               if (ret == -1) {
-                       SETTING_TRACE_ERROR("fail to call sysman_request_mount_mmc");
-               }
-       }
-       /*  MMC mounted, diff st_dev */
-       else {
-               ret = __setting_storage_main_mmc_content_init(ad, __setting_storage_main_sd_card_unmount_cb);
-               if (ret == SETTING_RETURN_FAIL) {
-                       SETTING_TRACE_ERROR("__setting_storage_main_sd_card_unmount_cb fail");
-                       if (ad->popup) {
-                               evas_object_del(ad->popup);
-                               ad->popup = NULL;
-                       }
-                       ad->popup = setting_create_popup_without_btn(ad, ad->win_get,
-                                                NULL, _("IDS_COM_POP_FAILED"),
-                                                __setting_storage_status_sd_card_popup_response_cb,
-                                                SETTING_STORAGE_POPUP_TIMER, FALSE, FALSE);
-                       return;
-               }
-
-               ret = sysman_request_unmount_mmc(ad->mmc_content,
-                                                MNT_FORCE);    /*  1 = MNT_FORCE */
-               if (ret == -1) {
-                       SETTING_TRACE_ERROR("fail to call sysman_request_unmount_mmc");
-               }
-       }
-
-       /*  if fail, popup failed info */
-       if (ret == -1) {
-               if (ad->popup) {
-                       evas_object_del(ad->popup);
-                       ad->popup = NULL;
-               }
-               ad->popup = setting_create_popup_without_btn(ad, ad->win_get,
-                                                NULL, _("IDS_COM_POP_FAILED"),
-                                                __setting_storage_status_sd_card_popup_response_cb,
-                                                SETTING_STORAGE_POPUP_TIMER, FALSE, FALSE);
-       }
-}
-
-#if SUPPORT_SD_CARD_FORMAT
-static void __setting_storage_main_sd_card_scan_cb(media_content_error_e err, void *data)
-{
-       SETTING_TRACE_BEGIN;
-       setting_retm_if(data == NULL, "Data parameter is NULL");
-       SettingStorageUG *ad = (SettingStorageUG *) data;
+       /* Applications */
+       ad->apps = storageUg_main_append_group_mid_item(ad,
+                                                       2, STORAGEUG_STR_APPS, STORAGEUG_STR_WAIT);
+       ret_if(NULL == ad->apps);
 
-       SETTING_TRACE("scan_cb result = %d", err);
+       /* Pictures, Videos */
+       ad->pics_videos = storageUg_main_append_group_mid_item(ad,
+                                                              3, STORAGEUG_STR_PICS, STORAGEUG_STR_WAIT);
+       ret_if(NULL == ad->pics_videos);
 
-       if (ad->popup) {
-               evas_object_del(ad->popup);
-               ad->popup = NULL;
-       }
+       /* Audio */
+       ad->audio = storageUg_main_append_group_mid_item(ad,
+                                                        4, STORAGEUG_STR_AUDIO, STORAGEUG_STR_WAIT);
+       ret_if(NULL == ad->audio);
 
-       if (err == MEDIA_CONTENT_ERROR_NONE) {
-               ad->popup = setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_SUCCESS"),
-                                        __setting_storage_status_sd_card_popup_format_response_cb,
-                                        SETTING_STORAGE_POPUP_TIMER, FALSE, FALSE);
+       /* Miscellaneous files */
+       ad->misces = storageUg_main_append_group_mid_item(ad,
+                                                         5, STORAGEUG_STR_MISCES, STORAGEUG_STR_WAIT);
+       ret_if(NULL == ad->misces);
 
-       } else {
-               ad->popup = setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_FAILED"),
-                                        __setting_storage_status_sd_card_popup_response_cb,
-                                        SETTING_STORAGE_POPUP_TIMER, FALSE, FALSE);
-       }
+       /* Available */
+       storageUg_size_to_str(ad->sz_inter_avail, avail_desc, sizeof(avail_desc));
+       ad->avail = storageUg_main_append_group_mid_item(ad,
+                                                        6, STORAGEUG_STR_AVAIL, avail_desc);
+       ret_if(NULL == ad->avail);
+       elm_genlist_item_select_mode_set(ad->avail->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
 }
 
-static void __setting_storage_main_sd_card_format_cb(int val, void *data)
+static void storageUg_encrypt_change_cb(keynode_t *node, void *user_data)
 {
-       SETTING_TRACE_BEGIN;
-       setting_retm_if(data == NULL, "Data parameter is NULL");
-       SettingStorageUG *ad = (SettingStorageUG *) data;
+       char *str;
+       SettingStorageUG *ad = user_data;
 
-       if (val == SETTING_STORAGE_SYSMAN_REQUEST_SUCCESS) {
-               int ret = media_content_scan_folder(SETTING_STORAGE_MMC_PATH, __setting_storage_main_sd_card_scan_cb, ad);
+       ret_if(NULL == user_data);
 
-               if(ret != MEDIA_CONTENT_ERROR_NONE) {
-                       SETTING_TRACE_ERROR("Fail to media_content_scan_file : %d", ret);
-                       return;
-               }
+       str = vconf_keynode_get_str(node);
+       if (!safeStrCmp(str, "encryption_start") || !safeStrCmp(str, "decryption_start")) {
+               if (ad->sd_mount) setting_disable_genlist_item(ad->sd_mount->item);
+               if (ad->sd_format) setting_disable_genlist_item(ad->sd_format->item);
        } else {
-               if (ad->popup) {
-                       evas_object_del(ad->popup);
-                       ad->popup = NULL;
-               }
-               ad->popup = setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_FAILED"),
-                                        __setting_storage_status_sd_card_popup_response_cb,
-                                        SETTING_STORAGE_POPUP_TIMER, FALSE, FALSE);
+               if (ad->sd_mount) setting_enable_genlist_item(ad->sd_mount->item);
+               if (ad->sd_format) setting_enable_genlist_item(ad->sd_format->item);
        }
 }
 
-static void __setting_storage_main_sd_card_format_popup_yes(void *data)
+static void storageUg_main_dev_memory_update(SettingStorageUG *ad)
 {
-       SETTING_TRACE_BEGIN;
-       setting_retm_if(data == NULL, "Data parameter is NULL");
-       SettingStorageUG *ad = (SettingStorageUG *) data;
+       char desc[STORAGEUG_MAX_STR_LEN] = {0};
 
-       if (ad->popup) {
-               evas_object_del(ad->popup);
-               ad->popup = NULL;
-       }
+       ret_if(NULL == ad);
 
-       /* Show Formatting..... popup */
-       ad->popup = setting_create_popup_with_progressbar(ad, ad->win_get,
-                                                "pending_list", NULL,
-                                                NULL, NULL,
-                                                0, TRUE, TRUE);
-
-       int ret = __setting_storage_main_mmc_content_init(ad, __setting_storage_main_sd_card_format_cb);
-       if (ret == SETTING_RETURN_FAIL) {
-               SETTING_TRACE_ERROR("__setting_storage_main_mmc_content_init fail");
-               if (ad->popup) {
-                       evas_object_del(ad->popup);
-                       ad->popup = NULL;
-               }
-               ad->popup = setting_create_popup_without_btn(ad, ad->win_get,
-                                                NULL, _("IDS_COM_POP_FAILED"),
-                                                __setting_storage_status_sd_card_popup_response_cb,
-                                                SETTING_STORAGE_POPUP_TIMER, FALSE, FALSE);
-               return;
-       }
+       storageUg_get_internal_storage_status(&ad->sz_inter_total, &ad->sz_inter_avail);
 
-       ret = sysman_request_format_mmc(ad->mmc_content);
-       /*  if fail, destory popup */
-       if (ret == -1) {
-               SETTING_TRACE_ERROR("fail to call sysman_request_format_mmc");
-               if (ad->popup) {
-                       evas_object_del(ad->popup);
-                       ad->popup = NULL;
-               }
-               ad->popup = setting_create_popup_without_btn(ad, ad->win_get,
-                                                NULL, _("IDS_COM_POP_FAILED"),
-                                                __setting_storage_status_sd_card_popup_response_cb,
-                                                SETTING_STORAGE_POPUP_TIMER, FALSE, FALSE);
-       }
-}
+       /* update internal total size */
+       storageUg_size_to_str(ad->sz_inter_total, desc, sizeof(desc));
+       G_FREE(ad->total_space->sub_desc);
+       ad->total_space->sub_desc = (char *)g_strdup(desc);
+       elm_genlist_item_fields_update(ad->total_space->item, "elm.text.sub.left.bottom",
+                                      ELM_GENLIST_ITEM_FIELD_TEXT);
 
-static void __setting_storage_main_sd_card_format_popup_no(void *data)
-{
-       SETTING_TRACE_BEGIN;
-       setting_retm_if(data == NULL, "Data parameter is NULL");
-       SettingStorageUG *ad = (SettingStorageUG *) data;
+       /* update internal available size */
+       storageUg_size_to_str(ad->sz_inter_avail, desc, sizeof(desc));
+       G_FREE(ad->avail->sub_desc);
+       ad->avail->sub_desc = (char *)g_strdup(desc);
+       elm_genlist_item_fields_update(ad->avail->item, "elm.text.sub.left.bottom",
+                                      ELM_GENLIST_ITEM_FIELD_TEXT);
 
-       if (ad->popup) {
-               evas_object_del(ad->popup);
-               ad->popup = NULL;
-       }
 }
 
-static void __setting_storage_main_sd_card_ask_format_resp_cb(void *data, Evas_Object *obj, void *event_info)
+static Eina_Bool storageUg_update_timer(void *data)
 {
        SETTING_TRACE_BEGIN;
-       setting_retm_if(data == NULL, "Data parameter is NULL");
-       int response_type = btn_type(obj);
-       if (POPUP_RESPONSE_OK == response_type) {
-               __setting_storage_main_sd_card_format_popup_yes(data);
-       } else if (POPUP_RESPONSE_CANCEL == response_type) {
-               __setting_storage_main_sd_card_format_popup_no(data);
-       }
-}
+       SettingStorageUG *ad = data;
 
-static void __setting_storage_main_sd_card_format_popup_create(void *data)
-{
-       SETTING_TRACE_BEGIN;
-       setting_retm_if(data == NULL, "Data parameter is NULL");
-       SettingStorageUG *ad = (SettingStorageUG *) data;
+       retv_if(NULL == data, ECORE_CALLBACK_CANCEL);
 
-       if (ad->popup) {
-               evas_object_del(ad->popup);
-               ad->popup = NULL;
+       storageUg_main_dev_memory_update(ad);
+       SETTING_TRACE_DEBUG("ad->misces_view->is_create:%d", ad->misces_view->is_create);
+       if (ad->misces_view->is_create) {
+               setting_view_update(ad->misces_view, ad);
        }
+       if (ad->size_worker)
+               storageUg_stop_async_worker(ad->size_worker);
+       ad->size_worker = storageUg_start_async_worker(storageUg_get_internal_detail,
+                                                      storageUg_get_internal_detail_cb, ad);
 
-       ad->popup = setting_create_popup_with_btn(ad, ad->win_get, NULL,
-                                        _(SETTING_STORAGE_FORMAT_ASK_MSG),
-                                        __setting_storage_main_sd_card_ask_format_resp_cb, 0,
-                                        2, _("IDS_COM_SK_YES"),_("IDS_COM_SK_NO"));
-}
-#endif
-
-static void __setting_storage_main_mouse_up_Gendial_list_cb(void *data, Evas_Object *obj,
-                                              void *event_info)
-{
-       SETTING_TRACE_BEGIN;
-       setting_retm_if(data == NULL, "Data parameter is NULL");
-       setting_retm_if(event_info == NULL, "Invalid argument: event info is NULL");
-
-       SettingStorageUG *ad = (SettingStorageUG *) data;
-       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_TRACE("clicking item[%s]", _(list_item->keyStr));
 
-       int db_status = 0;
-       int ret = vconf_get_int(VCONFKEY_FILEMANAGER_DB_STATUS, &db_status);
-       setting_retm_if(ret != 0, "fail to get vconf");
-
-       /* if SD card is busy, show popup */
-       if (db_status != VCONFKEY_FILEMANAGER_DB_UPDATED) {
-               if (ad->popup) {
-                       evas_object_del(ad->popup);
-                       ad->popup = NULL;
-               }
-               ad->popup = setting_create_popup_without_btn(ad, ad->win_get,
-                                        NULL, _("IDS_ST_BODY_SORRY_YOUR_SD_CARD_IS_BUSY"),
-                                        __setting_storage_status_sd_card_popup_response_cb,
-                                        SETTING_STORAGE_POPUP_TIMER, FALSE, FALSE);
-               return;
-       }
-
-       if (list_item == ad->sd_mount) {
-               __setting_storage_main_sd_card_mount_unmount(ad);
-       }
-#if SUPPORT_SD_CARD_FORMAT
-       else if (list_item == ad->sd_format) {
-               __setting_storage_main_sd_card_format_popup_create(ad);
-       }
-#endif
+       ad->update_timer = NULL;
+       SETTING_TRACE_END;
+       return ECORE_CALLBACK_CANCEL;
 }
 
-static void __setting_storage_main_sd_card_info_append(void* data)
+static void storageUg_main_update_media_data(SettingStorageUG *ad)
 {
-       SETTING_TRACE_BEGIN;
-       setting_retm_if(data == NULL, "Data parameter is NULL");
-       SettingStorageUG *ad = (SettingStorageUG *) data;
-
-       /* remove the sd info items */
-       if (ad->sd_mount) {
-               elm_object_item_del(ad->sd_mount->item);
-               ad->sd_mount = NULL;
-       }
-       if (ad->sd_total) {
-               elm_object_item_del(ad->sd_total->item);
-               ad->sd_total = NULL;
-       }
-       if (ad->sd_available) {
-               elm_object_item_del(ad->sd_available->item);
-               ad->sd_available = NULL;
-       }
-#if SUPPORT_SD_CARD_FORMAT
-       if (ad->sd_format) {
-               elm_object_item_del(ad->sd_format->item);
-               ad->sd_format = NULL;
-       }
-#endif
-       int mmc_mode = VCONFKEY_SYSMAN_MMC_REMOVED;
-       int ret = vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &mmc_mode);
-       setting_retm_if(ret != 0, "Get vconf failed");
-
-       if (mmc_mode == VCONFKEY_SYSMAN_MMC_REMOVED) {
-               ad->sd_mount = setting_create_Gendial_field_def(ad->genlist, &(ad->itc_2text_2), NULL,
-                                            ad, SWALLOW_Type_INVALID, NULL,
-                                            NULL, 0, SETTING_STORAGE_MOUNT_STR,
-                                            _(SETTING_STORAGE_INSERT_STR),
-                                            NULL);
-               if (ad->sd_mount) {
-                       setting_disable_genlist_item(ad->sd_mount->item);
-               }
-       } else if (mmc_mode == VCONFKEY_SYSMAN_MMC_INSERTED_NOT_MOUNTED) {
-               ad->sd_mount = setting_create_Gendial_field_def(ad->genlist, &(ad->itc_2text_2),
-                                            __setting_storage_main_mouse_up_Gendial_list_cb,
-                                            ad, SWALLOW_Type_INVALID, NULL,
-                                            NULL, 0, SETTING_STORAGE_MOUNT_STR,
-                                            _(SETTING_STORAGE_INSERT_STR),
-                                            NULL);
-       } else if (mmc_mode == VCONFKEY_SYSMAN_MMC_MOUNTED) {
-               char sd_total[SETTING_STORAGE_MAX_STR_LEN] = { 0, };
-               char sd_available[SETTING_STORAGE_MAX_STR_LEN] = { 0, };
-               __setting_storage_main_sd_card_info_get(sd_total, sd_available);
-
-               ad->sd_total = setting_create_Gendial_field_def(ad->genlist, &(ad->itc_2text_2), NULL,
-                                                    ad, SWALLOW_Type_INVALID, NULL,
-                                                    NULL, 0, "IDS_ST_BODY_TOTAL_SPACE",
-                                                    sd_total,
-                                                    NULL);
-               if (ad->sd_total) {
-                       ad->sd_total->userdata = ad;
-                       elm_genlist_item_select_mode_set(ad->sd_total->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
-               } else {
-                       SETTING_TRACE_ERROR("ad->sd_total is NULL");
-               }
-
-               ad->sd_available = setting_create_Gendial_field_def(ad->genlist, &(ad->itc_2text_2), NULL,
-                                                    ad, SWALLOW_Type_INVALID, NULL,
-                                                    NULL, 0, "IDS_ST_BODY_AVAILABLE_SPACE",
-                                                    sd_available,
-                                                    NULL);
-               if (ad->sd_available) {
-                       ad->sd_available->userdata = ad;
-                       elm_genlist_item_select_mode_set(ad->sd_available->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
-               } else {
-                       SETTING_TRACE_ERROR("ad->sd_available is NULL");
-               }
-
-               ad->sd_mount = setting_create_Gendial_field_def(ad->genlist, &(ad->itc_1text),
-                                                    __setting_storage_main_mouse_up_Gendial_list_cb,
-                                                    ad, SWALLOW_Type_INVALID, NULL,
-                                                    NULL, 0, "IDS_ST_BODY_UNMOUNT_SD_CARD", NULL,
-                                                    NULL);
-               if (ad->sd_mount) {
-                       ad->sd_mount->userdata = ad;
-               } else {
-                       SETTING_TRACE_ERROR("ad->sd_mount is NULL");
-               }
+       ret_if(NULL == ad);
 
-#if SUPPORT_SD_CARD_FORMAT
-               ad->sd_format = setting_create_Gendial_field_def(ad->genlist, &(ad->itc_1text),
-                                                    __setting_storage_main_mouse_up_Gendial_list_cb,
-                                                    ad, SWALLOW_Type_INVALID, NULL,
-                                                    NULL, 0,
-                                                    "IDS_ST_BODY_FORMAT_SD_CARD",
-                                                    NULL, NULL);
-               if (ad->sd_format) {
-                       ad->sd_format->userdata = ad;
-               } else {
-                       SETTING_TRACE_ERROR("ad->sd_format is NULL");
-               }
-#endif
-       } else {
-               SETTING_TRACE_ERROR("error status of sd card");
+       if (ad->update_timer) {
+               ecore_timer_del(ad->update_timer);
+               ad->update_timer = NULL;
        }
 
-       Elm_Object_Item *item = NULL;
-       item = elm_genlist_item_append(ad->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);
+       ad->update_timer = ecore_timer_add(0.5, storageUg_update_timer, ad);
 }
 
-static void __setting_storage_vconf_change_cb(keynode_t *key, void *data)
+static void storageUg_media_filesys_changed_cb(
+    media_content_error_e error,
+    int pid,
+    media_content_db_update_item_type_e update_item,
+    media_content_db_update_type_e update_type,
+    media_content_type_e media_type,
+    char *uuid,
+    char *path,
+    char *mime_type,
+    void *user_data)
 {
        SETTING_TRACE_BEGIN;
-       setting_retm_if(NULL == key, "key is NULL");
-       setting_retm_if(NULL == data, "data is NULL");
-       SettingStorageUG *ad = (SettingStorageUG *)data;
-       int status = vconf_keynode_get_int(key);
-       char *vconf_name = vconf_keynode_get_name(key);
-
-       if (!safeStrCmp(vconf_name, VCONFKEY_SYSMAN_MMC_STATUS)) {
-               SETTING_TRACE("status:%d", status);
-               /* remove last item -> seperator */
-               Elm_Object_Item *last_item = NULL;
-               last_item = elm_genlist_last_item_get(ad->genlist);
-               if (last_item) {
-                       elm_object_item_del(last_item);
-               }
-               __setting_storage_main_sd_card_info_append(ad);
-       }
-}
-
-static void __setting_storage_main_genlist_update(Setting_GenGroupItem_Data *data, Setting_Storage_Status status)
-{
-       //SETTING_TRACE_BEGIN;
-       setting_retm_if(data == NULL, "Data parameter is NULL");
-       Setting_GenGroupItem_Data *item_data = (Setting_GenGroupItem_Data *) data;
-
-       char desc[SETTING_STORAGE_MAX_STR_LEN + 1] = {0,};
-       int ret = __setting_storage_status_size_transition(status.dTotal, desc);
-       setting_retm_if(ret == SETTING_RETURN_FAIL, "failed to transform")
-
-       G_FREE(item_data->sub_desc);
-       item_data->sub_desc = (char *)g_strdup(desc);
-       elm_object_item_data_set(item_data->item, item_data);
-       elm_genlist_item_update(item_data->item);
-}
-
-static ail_cb_ret_e __setting_storage_main_appinfo_func_cb(const ail_appinfo_h ail_info, void *data)
-{
-       Eina_List **apps_list = (Eina_List **) data;
-
-       char *pkg_name = NULL;
-       char *pkg_type = NULL;
-
-       ail_appinfo_get_str(ail_info, AIL_PROP_PACKAGE_STR, &pkg_name);
-       setting_retvm_if(pkg_name == NULL, AIL_CB_RET_CONTINUE, "get pkg_name failed");
+       SettingStorageUG *ad = user_data;
 
-       ail_appinfo_get_str(ail_info, AIL_PROP_X_SLP_PACKAGETYPE_STR, &pkg_type);
-       setting_retvm_if(pkg_type == NULL, AIL_CB_RET_CONTINUE, "get pkg_type failed");
+       ret_if(user_data == NULL);
 
-       App_Info *app_info = (App_Info*)calloc(1, sizeof(App_Info));
-       setting_retvm_if(app_info == NULL, AIL_CB_RET_CONTINUE, "failed to calloc");
+       storageUg_main_update_media_data(ad);
 
-       app_info->pkg_name = (char *)g_strdup(pkg_name);
-       app_info->pkg_type = (char *)g_strdup(pkg_type);
-       *apps_list = eina_list_append(*apps_list, app_info);
-       return AIL_CB_RET_CONTINUE;
-}
-
-static void __setting_storage_main_applications_list_get(Eina_List **apps_list)
-{
-       SETTING_TRACE_BEGIN;
-       /* get app_info from AIL */
-       ail_filter_h filter_rpm = NULL;
-       ail_filter_h filter_wrt = NULL;
-       ail_filter_h filter_tpk = NULL;
-
-       ail_filter_new(&filter_rpm);
-       ail_filter_new(&filter_wrt);
-       ail_filter_new(&filter_tpk);
-
-       ail_filter_add_str(filter_rpm, AIL_PROP_X_SLP_PACKAGETYPE_STR, RPM_PREFIX);
-       ail_filter_add_str(filter_wrt, AIL_PROP_X_SLP_PACKAGETYPE_STR, WRT_PREFIX);
-       ail_filter_add_str(filter_tpk, AIL_PROP_X_SLP_PACKAGETYPE_STR, TPK_PREFIX);
-
-       ail_filter_list_appinfo_foreach(filter_rpm, __setting_storage_main_appinfo_func_cb, (void*)apps_list);
-       ail_filter_list_appinfo_foreach(filter_wrt, __setting_storage_main_appinfo_func_cb, (void*)apps_list);
-       ail_filter_list_appinfo_foreach(filter_tpk, __setting_storage_main_appinfo_func_cb, (void*)apps_list);
-
-       ail_filter_destroy(filter_rpm);
-       ail_filter_destroy(filter_wrt);
-       ail_filter_destroy(filter_tpk);
+       SETTING_TRACE_END;
 }
 
-static double __setting_storage_main_applications_status_get(void *data)
+static Eina_Bool storageUg_main_back_cb(void *data, Elm_Object_Item *it)
 {
        SETTING_TRACE_BEGIN;
-       setting_retvm_if(data == NULL, 0.0, "Data parameter is NULL");
-       SettingStorageUG *ad = (SettingStorageUG *)data;
-
-       Eina_List *apps_list = NULL;
-       __setting_storage_main_applications_list_get(&apps_list);
-
-       SETTING_TRACE("count = %d", eina_list_count(apps_list));
+       SettingStorageUG *ad = data;
 
-       double total_size = 0.0;
+       retv_if(data == NULL, EINA_TRUE);
 
-       Eina_List *l = NULL;
-       App_Info *app_info = NULL;
-       EINA_LIST_FOREACH (apps_list, l, app_info)
-       {
-               int exit_flag = 0;
-               pthread_mutex_lock(&ad->exit_mutex);
-               exit_flag = ad->exit_flag;
-               pthread_mutex_unlock(&ad->exit_mutex);
-
-               if (exit_flag == 1) {
-                       SETTING_TRACE("exit_flag is 1");
-                       break;
-               }
-
-               //SETTING_TRACE("pkg_name: %s ", app_info->pkg_name);
-               //SETTING_TRACE("pkg_type: %s", app_info->pkg_type);
-               pkgmgr_info *pkg_info = pkgmgr_info_new(app_info->pkg_type, app_info->pkg_name);
-               if (!pkg_info) {
-                       //SETTING_TRACE("pkg_info is null, couldn't get the sizes");
-                       app_info->total_size = 0;
-               } else {
-                       char *buf = NULL;
-                       buf = pkgmgr_info_get_string(pkg_info, STR_INSTALLED_SIZE);
-                       if (buf) {
-                               //SETTING_TRACE("size : %s", buf);
-                               app_info->total_size = atoi(buf);
-                               G_FREE(buf);
-                       } else {
-                               app_info->total_size = 0;
-                       }
-                       pkgmgr_info_free(pkg_info);
-               }
-
-               total_size += app_info->total_size;
+       if (ad->update_timer) {
+               ecore_timer_del(ad->update_timer);
+               ad->update_timer = NULL;
        }
 
-       /* free the list */
-       Eina_List *tmp = NULL;
-       app_info = NULL;
-       EINA_LIST_FOREACH(apps_list, tmp, app_info)
-       {
-               G_FREE(app_info->pkg_name);
-               G_FREE(app_info->pkg_type);
-               FREE(app_info);
-       }
-       eina_list_free(apps_list);
-       apps_list = NULL;
-
-       return total_size;
-}
-
-void __setting_storage_main_pipe_cb(void *data, void *buffer, unsigned int nbyte)
-{
-       SETTING_TRACE_BEGIN;
-       setting_retm_if(data == NULL, "Data parameter is NULL");
-       setting_retm_if(buffer == NULL, "buffer parameter is NULL");
-       SettingStorageUG *ad = (SettingStorageUG *)data;
-
-       Update_Info *update_info = (Update_Info *) buffer;
-
-       SETTING_TRACE("update_info : %d", update_info->type);
-
-       switch (update_info->type) {
-       case SETTING_STORAGE_APPLICATIONS:
-               {
-                       ad->apps_status.dTotal = update_info->total_size;
-                       __setting_storage_main_genlist_update(ad->apps, ad->apps_status);
-               }
-               break;
-       case SETTING_STORAGE_PICTURES_VIDEO:
-               {
-                       ad->pics_videos_status.dTotal = update_info->total_size;
-                       __setting_storage_main_genlist_update(ad->pics_videos, ad->pics_videos_status);
-               }
-               break;
-       case SETTING_STORAGE_AUDIO:
-               {
-                       ad->audio_status.dTotal = update_info->total_size;
-                       __setting_storage_main_genlist_update(ad->audio, ad->audio_status);
+       if (ad->size_worker) {
+               if (storageUg_worker_is_running(ad->size_worker)) {
+                       SETTING_TRACE("DO NOT Close Storage UI!!!!! <<------------");
+                       return EINA_FALSE;
                }
-               break;
-       case SETTING_STORAGE_MISCELLANEOUS:
-               {
-                       ad->others_status.dTotal = update_info->total_size;
-                       __setting_storage_main_genlist_update(ad->others, ad->others_status);
-               }
-               break;
-       default:
-               /* do nothing*/
-               SETTING_TRACE_ERROR("wrong update type");
-               break;
+       } else {
+               SETTING_TRACE("ad->size_worker is NULL <<--------");
        }
 
-       __setting_storage_main_genlist_update(ad->internal, ad->internal_status);
-
+       ug_destroy_me(ad->ug);
        SETTING_TRACE_END;
+       return EINA_TRUE;
 }
 
-static void *__setting_storage_main_thread_start_routine(void *data)
+static inline Evas_Object *storageUg_main_genlist(Evas_Object *parent)
 {
-       SETTING_TRACE("==== sub thread id = %d =====", (int)pthread_self());
-       SETTING_TRACE_BEGIN;
-       setting_retvm_if(data == NULL, NULL, "Data parameter is NULL");
-       SettingStorageUG *ad = (SettingStorageUG *)data;
-
-       //Ecore_Pipe *pipe = ad->pipe;
-       update_type type = SETTING_STORAGE_PICTURES_VIDEO;
-       while (1) {
-               pthread_mutex_lock(&ad->update_mutex);
-               while (ad->type == SETTING_STORAGE_SLEEP) {
-                       /* wait to be waked up*/
-                       pthread_cond_wait(&ad->wait_cond, &ad->update_mutex);
-               }
-               type = ad->type;
-               pthread_mutex_unlock(&ad->update_mutex);
-
-               SETTING_TRACE("thread start to work, update type = %d", type);
-
-               int exit_flag = 0;
-
-               pthread_mutex_lock(&ad->exit_mutex);
-               exit_flag = ad->exit_flag;
-               pthread_mutex_unlock(&ad->exit_mutex);
-
-               if (exit_flag == 1) {
-                       SETTING_TRACE("exit_flag is 1");
-                       break;
-               }
-
-               if (type >= SETTING_STORAGE_MAX) {
-                       SETTING_TRACE("work is done, thread will sleep");
-                       pthread_mutex_lock(&ad->update_mutex);
-                       ad->type = SETTING_STORAGE_SLEEP;
-                       pthread_mutex_unlock(&ad->update_mutex);
-                       continue;
-               }
-
-               switch (type) {
-               case SETTING_STORAGE_PICTURES_VIDEO:
-               {
-                       /* get pictures and videos info */
-                       double pics_videos_size = __setting_storage_main_pictures_videos_status_get();
-                       SETTING_TRACE("pics_videos_size = %f", pics_videos_size);
-
-                       Update_Info pics_videos_info;
-                       memset(&pics_videos_info, 0, sizeof(Update_Info));
-                       pics_videos_info.type = SETTING_STORAGE_PICTURES_VIDEO;
-                       pics_videos_info.total_size = pics_videos_size;
-                       if (ad->pipe)
-                               ecore_pipe_write(ad->pipe, &pics_videos_info, sizeof(pics_videos_info));
-               }
-               break;
-               case SETTING_STORAGE_AUDIO:
-               {
-                       /* get audio info */
-                       double audio_size = __setting_storage_main_audio_status_get();
-                       SETTING_TRACE("audio_size = %f", audio_size);
-
-                       Update_Info audio_info;
-                       memset(&audio_info, 0, sizeof(Update_Info));
-                       audio_info.type = SETTING_STORAGE_AUDIO;
-                       audio_info.total_size = audio_size;
-                       if (ad->pipe)
-                               ecore_pipe_write(ad->pipe, &audio_info, sizeof(audio_info));
-               }
-               break;
-               case SETTING_STORAGE_MISCELLANEOUS:
-               {
-                       /* get miscellaneous files info */
-                       double misc_size = __setting_storage_main_miscellaneous_size_get();
-                       SETTING_TRACE("misc_size = %f", misc_size);
-
-                       Update_Info misc_info;
-                       memset(&misc_info, 0, sizeof(Update_Info));
-                       misc_info.type = SETTING_STORAGE_MISCELLANEOUS;
-                       misc_info.total_size = misc_size;
-                       if (ad->pipe)
-                               ecore_pipe_write(ad->pipe, &misc_info, sizeof(misc_info));
-               }
-               break;
-               case SETTING_STORAGE_APPLICATIONS:
-               {
-                       /* get apps info */
-                       double apps_size = __setting_storage_main_applications_status_get(ad);
-                       SETTING_TRACE("apps_size = %f", apps_size);
-
-                       Update_Info apps_info;
-                       memset(&apps_info, 0, sizeof(Update_Info));
-                       apps_info.type = SETTING_STORAGE_APPLICATIONS;
-                       apps_info.total_size = apps_size;
-                       if (ad->pipe)
-                               ecore_pipe_write(ad->pipe, &apps_info, sizeof(apps_info));
-               }
-               break;
-               default:
-               {
-                       SETTING_TRACE("type = %d", type);
-                       break;
-               }
-               }
+       Evas_Object *genlist;
 
-               pthread_mutex_lock(&ad->update_mutex);
-               ad->type++;
-               SETTING_TRACE("ad->type = %d", ad->type);
-               pthread_mutex_unlock(&ad->update_mutex);
+       genlist = elm_genlist_add(parent);
+       if (NULL == genlist) {
+               SETTING_TRACE_ERROR("elm_genlist_add() Fail");
+               return NULL;
        }
-       SETTING_TRACE_END;
-       pthread_exit((void *) 0);
-       ad->tid = 0;
-}
-
-static void __setting_storage_main_init(void *data)
-{
-       SETTING_TRACE_BEGIN;
-       setting_retm_if(data == NULL, "Data parameter is NULL");
-       SettingStorageUG *ad = (SettingStorageUG *)data;
-
-       pthread_mutex_init(&ad->exit_mutex, NULL);
-       pthread_mutex_init(&ad->update_mutex, NULL);
-       pthread_cond_init(&ad->wait_cond, NULL);
-
-       pthread_mutex_lock(&ad->exit_mutex);
-       ad->exit_flag = EINA_FALSE;
-       pthread_mutex_unlock(&ad->exit_mutex);
-
-       pthread_mutex_lock(&ad->update_mutex);
-       ad->type = SETTING_STORAGE_PICTURES_VIDEO;
-       pthread_mutex_unlock(&ad->update_mutex);
-
-       ad->internal_status.dAvail = 0.0;
-       ad->internal_status.dTotal= 0.0;
 
-       ad->apps_status.dAvail = 0.0;
-       ad->apps_status.dTotal= 0.0;
+       /*elm_object_style_set(genlist, "dialogue"); */
+       elm_genlist_block_count_set(genlist, 3);
+       elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
+       evas_object_show(genlist);
 
-       ad->pics_videos_status.dAvail = 0.0;
-       ad->pics_videos_status.dTotal= 0.0;
+       evas_object_smart_callback_add(genlist, "realized", __gl_realized_cb, NULL);
 
-       ad->audio_status.dAvail = 0.0;
-       ad->audio_status.dTotal= 0.0;
-
-       ad->others_status.dAvail = 0.0;
-       ad->others_status.dTotal= 0.0;
+       return genlist;
 }
 
-/* ***************************************************
- *
- *basic func
- *
- ***************************************************/
-static int setting_storage_main_create(void *cb)
+static int storageUg_main_create(void *data)
 {
-       SETTING_TRACE_BEGIN;
-       /* error check */
-       retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
+       int ret;
+       Elm_Object_Item *pie_item;
+       SettingStorageUG *ad = data;
 
-       SettingStorageUG *ad = (SettingStorageUG *) cb;
+       bindtextdomain(SETTING_PACKAGE, SETTING_LOCALEDIR);
 
-       __setting_storage_main_init(ad);
+       retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
+       retv_if(NULL == ad->lo_parent, SETTING_DRAW_ERR_FAIL_LOAD_EDJ);
 
-       int ret = SETTING_RETURN_SUCCESS;
+       ad->gl_main = storageUg_main_genlist(ad->navi);
+       setting_create_navi_bar_buttons(STORAGEUG_STR_STORAGE, STORAGEUG_STR_BACK, NULL,
+                                       NULL, (setting_call_back_func)storageUg_main_back_cb, NULL, NULL, ad,
+                                       ad->gl_main, ad->navi, NULL);
 
-       retvm_if(ad->win_main_layout == NULL, SETTING_DRAW_ERR_FAIL_LOAD_EDJ,
-                "win_main_layout is NULL");
+       storageUg_get_internal_storage_status(&ad->sz_inter_total, &ad->sz_inter_avail);
 
-       ad->ly_main =
-           setting_create_layout_navi_bar_genlist(ad->win_main_layout,
-                                                  ad->win_get,
-                                                  _(KeyStr_Storage),
-                                                  _("IDS_COM_BODY_BACK"),
-                                                  NULL,
-                                                  __setting_storage_main_click_softkey_back_cb,
-                                                  NULL,
-                                                  ad, &ad->genlist, &ad->navibar);
+       /* storage pie view */
+       pie_item = elm_genlist_item_append(ad->gl_main, &(ad->itc_pie),
+                                          ad, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+       elm_genlist_item_select_mode_set(pie_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+       ad->pie_it = pie_item;
 
-       ad->itc_2text_1icon_4.item_style = "dialogue/2text.1icon.4";
-       ad->itc_2text_1icon_4.func.text_get = __gl_text_get;
-       ad->itc_2text_1icon_4.func.content_get = __gl_content_get;
-       ad->itc_2text_1icon_4.func.state_get = NULL;
-       ad->itc_2text_1icon_4.func.del = __gl_del;
+       storageUg_main_dev_memory_detail(ad);
 
-       __setting_storage_main_internal_storage_status_get(ad);
+       if (ad->size_worker)
+               storageUg_stop_async_worker(ad->size_worker);
+       ad->size_worker = storageUg_start_async_worker(storageUg_get_internal_detail,
+                                                      storageUg_get_internal_detail_cb, ad);
 
-       Elm_Object_Item *item = NULL;
+       storageUG_update_apps_info(ad);
 
-       bool is_emulator = isEmulBin();
+       storageUg_append_separator(ad->gl_main, ad);
+       if (!isEmulBin()) {
+               ret = vconf_get_int(storageUg_MMC_stat, &ad->mmc_status);
+               retvm_if(ret, SETTING_RETURN_FAIL, "vconf_get_int(%s) Fail", storageUg_MMC_stat);
 
-       if (!is_emulator) {
-               item = elm_genlist_item_append(ad->genlist, &itc_seperator, NULL, NULL,
-                                       ELM_GENLIST_ITEM_NONE, NULL, NULL);
-               elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+               storageUg_append_separator(ad->gl_main, ad);
 
                /* Default storage */
-               setting_create_Gendial_field_def(ad->genlist, &(ad->itc_1text),
-                                        __setting_storage_main_Gendial_mouse_up_cb,
-                                        ad, SWALLOW_Type_INVALID, NULL, NULL,
-                                        0, SETTING_STORAGE_DEFAULT_STORAGE_STR,
-                                        NULL, NULL);
-       }
+               setting_create_Gendial_field_def(ad->gl_main, &itc_1text,
+                                                storageUg_main_sel, ad, SWALLOW_Type_INVALID, NULL, NULL, 0,
+                                                STORAGEUG_STR_DEF_STORAGE, NULL, NULL);
 
-       setting_create_Gendial_field_titleItem(ad->genlist, &(ad->itc_group_item),
-                                              SETTING_STORAGE_INTERNAL_STORAGE_STR,
-                                              NULL);
-
-       /* Total space */
-       char total_desc[SETTING_STORAGE_MAX_STR_LEN + 1] = {0,};
-       ret = __setting_storage_status_size_transition(ad->internal_status.dTotal, total_desc);
-       setting_retvm_if(ret == SETTING_RETURN_FAIL, SETTING_RETURN_FAIL, "failed to transform")
-
-       /* status */
-       ad->internal = (Setting_GenGroupItem_Data *) calloc(1, sizeof(Setting_GenGroupItem_Data));
-       setting_retvm_if(!ad->internal, SETTING_RETURN_FAIL, "calloc failed");
-
-       if (ad->internal) {
-               ad->internal->userdata = ad;
-               ad->internal->keyStr = (char *)g_strdup(total_desc);
-               ad->internal->item = elm_genlist_item_append(ad->genlist, &(ad->itc_2text_1icon_4), ad->internal, NULL,
-                                           ELM_GENLIST_ITEM_NONE, NULL, NULL);
-               elm_genlist_item_select_mode_set(ad->internal->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
-       } else {
-               SETTING_TRACE_ERROR("ad->internal is NULL");
-               return SETTING_RETURN_FAIL;
-       }
+               storageUg_append_separator(ad->gl_main, ad);
 
-       /* Applications */
-       ad->apps = setting_create_Gendial_field_def(ad->genlist, &(ad->itc_2text_1icon_3),
-                                            __setting_storage_main_Gendial_mouse_up_cb,
-                                            ad, SWALLOW_Type_INVALID, SETTING_STORAGE_APPS_ICON_PATH,
-                                            NULL, 0, "IDS_ST_BODY_APPLICATIONS",
-                                            _("IDS_ST_HEADER_PLEASE_WAIT"), NULL);
-       if (ad->apps) {
-               ad->apps->userdata = ad;
-               if (is_emulator) {
-                       elm_genlist_item_select_mode_set(ad->apps->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
-               }
-       } else {
-               SETTING_TRACE_ERROR("ad->apps is NULL");
-               return SETTING_RETURN_FAIL;
-       }
+               /* SD */
+               ad->sd_card = setting_create_Gendial_field_titleItem(ad->gl_main,
+                                                                    &itc_group_item, STORAGEUG_STR_SD_CARD, NULL);
+               storageUg_main_append_SD_info(ad);
 
-       /* Pictures, Videos */
-       ad->pics_videos = setting_create_Gendial_field_def(ad->genlist, &(ad->itc_2text_1icon_3),
-                                            __setting_storage_main_Gendial_mouse_up_cb,
-                                            ad, SWALLOW_Type_INVALID, SETTING_STORAGE_PICS_ICON_PATH,
-                                            NULL, 0, SETTING_STORAGE_PICS_STR,
-                                            _("IDS_ST_HEADER_PLEASE_WAIT"), NULL);
-       if (ad->pics_videos) {
-               ad->pics_videos->userdata = ad;
-               if (is_emulator) {
-                       elm_genlist_item_select_mode_set(ad->pics_videos->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
-               }
-       } else {
-               SETTING_TRACE_ERROR("ad->pics_videos is NULL");
-               return SETTING_RETURN_FAIL;
-       }
+               storageUg_append_separator(ad->gl_main, ad);
 
-       /* Audio */
-       ad->audio = setting_create_Gendial_field_def(ad->genlist, &(ad->itc_2text_1icon_3),
-                                            __setting_storage_main_Gendial_mouse_up_cb,
-                                            ad, SWALLOW_Type_INVALID, SETTING_STORAGE_AUDIO_ICON_PATH,
-                                            NULL, 0, SETTING_STORAGE_AUDIO_STR,
-                                            _("IDS_ST_HEADER_PLEASE_WAIT"), NULL);
-       if (ad->audio) {
-               ad->audio->userdata = ad;
-
-               if (is_emulator) {
-                       elm_genlist_item_select_mode_set(ad->audio->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
-               }
-       } else {
-               SETTING_TRACE_ERROR("ad->audio is NULL");
-               return SETTING_RETURN_FAIL;
-       }
+               ret = vconf_notify_key_changed(storageUg_MMC_stat, storageUg_SD_change_cb, ad);
+               warn_if(ret != 0, "vconf_notify_key_changed(%s) Fail", storageUg_MMC_stat);
 
-       /* Miscellaneous files */
-       ad->others = setting_create_Gendial_field_def(ad->genlist, &(ad->itc_2text_1icon_3),
-                                            __setting_storage_main_Gendial_mouse_up_cb,
-                                            ad, SWALLOW_Type_INVALID, SETTING_STORAGE_MISCES_ICON_PATH,
-                                            NULL, 0, SETTING_STORAGE_MISCES_STR,
-                                            _("IDS_ST_HEADER_PLEASE_WAIT"), NULL);
-       if (ad->others) {
-               ad->others->userdata = ad;
-       } else {
-               SETTING_TRACE_ERROR("ad->others is NULL");
-               return SETTING_RETURN_FAIL;
+               ret = vconf_notify_key_changed(storageUg_ENCRYPT_stat,
+                                              storageUg_encrypt_change_cb, ad);
+               warn_if(ret != 0, "vconf_notify_key_changed(%s) Fail", storageUg_ENCRYPT_stat);
        }
 
-       /* Available */
-       char avail_desc[SETTING_STORAGE_MAX_STR_LEN + 1] = {0,};
-       ret = __setting_storage_status_size_transition(ad->internal_status.dAvail, avail_desc);
-       setting_retvm_if(ret == SETTING_RETURN_FAIL, SETTING_RETURN_FAIL, "failed to transform")
-
-       ad->avail = setting_create_Gendial_field_def(ad->genlist, &(ad->itc_2text_1icon_3), NULL,
-                                            ad, SWALLOW_Type_INVALID, SETTING_STORAGE_AVAIL_ICON_PATH,
-                                            NULL, 0, SETTING_STORAGE_AVAIL_STR,
-                                            avail_desc, NULL);
-       if (ad->avail) {
-               ad->avail->userdata = ad;
-               elm_genlist_item_select_mode_set(ad->avail->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
-       } else {
-               SETTING_TRACE_ERROR("ad->avail is NULL");
-               return SETTING_RETURN_FAIL;
-       }
+       /* usb otg storage*/
+       ad->usb_otg_status = SETTING_STORAGE_USB_OTG_REMOVE;
 
-       if (!is_emulator) {
-#if DISABLED_CODE
-               /* Format USB storage */
-               setting_create_Gendial_field_def(ad->genlist, &(ad->itc_1text), NULL,
-                                                    ad, SWALLOW_Type_INVALID, NULL,
-                                                    NULL, 0,
-                                                    SETTING_STORAGE_FORMAT_STR,
-                                                    NULL, NULL);
-
-               setting_create_Gendial_field_def(ad->genlist, &(ad->itc_bg_1icon), NULL,
-                                                ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
-                                                NULL, NULL, 0, SETTING_STORAGE_FORMAT_DESC_STR, NULL,
-                                                NULL);
-#endif
-
-               /* SD card info */
-               setting_create_Gendial_field_titleItem(ad->genlist, &(ad->itc_group_item),
-                                              "IDS_ST_BODY_SD_CARD", NULL);
-               __setting_storage_main_sd_card_info_append(ad);
-
-               ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_MMC_STATUS,
-                               __setting_storage_vconf_change_cb, ad);
-               if (ret != 0) {
-                       SETTING_TRACE_ERROR("call vconf_notify_key_changed failed");
-               }
-       } else {
-               item = elm_genlist_item_append(ad->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);
-       }
+       storageUg_init_USB(ad);
 
        setting_view_storage_main.is_create = 1;
 
-       if (ad->pipe) {
-               ecore_pipe_del(ad->pipe);
-               ad->pipe = NULL;
-       }
-       ad->pipe = ecore_pipe_add(__setting_storage_main_pipe_cb, ad);
-       if (ad->pipe)
-       {
-               ret = pthread_create(&ad->tid, NULL, __setting_storage_main_thread_start_routine, ad);
-               if (ret != 0) {
-                       SETTING_TRACE_ERROR("fail to pthread_create");
-               }
-               SETTING_TRACE("thread id = %d", ad->tid);
-       }
-       else
-       {
-               SETTING_TRACE_ERROR("fail to ecore_pipe_add");
-       }
+       media_content_set_db_updated_cb(storageUg_media_filesys_changed_cb, ad);
+       SETTING_TRACE("-----------------------------------------------");
+       SETTING_TRACE(" WIDGET_SCALE_FACTOR : %f", WIDGET_SCALE_FACTOR);
+       SETTING_TRACE("-----------------------------------------------");
 
        return SETTING_RETURN_SUCCESS;
 }
 
-static int setting_storage_main_destroy(void *cb)
+static int storageUg_main_destroy(void *data)
 {
-       /* error check */
-       retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
+       int ret;
+       SettingStorageUG *ad = data;
 
-       SettingStorageUG *ad = (SettingStorageUG *) cb;
+       retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
 
-       int ret = 0;
+       setting_view_destroy(ad->misces_view, ad);
 
-       pthread_mutex_lock(&ad->exit_mutex);
-       ad->exit_flag = 1;
-       pthread_mutex_unlock(&ad->exit_mutex);
+       media_content_unset_db_updated_cb();
 
-       /* wake up thread */
-       pthread_mutex_lock(&ad->update_mutex);
-       ad->type = SETTING_STORAGE_REUPDATE;
-       pthread_cond_signal(&ad->wait_cond);
-       pthread_mutex_unlock(&ad->update_mutex);
+       storageUg_deinit_USB();
 
-       if (ad->tid > 0)
-       {
-               void *thread_ret = NULL;
-               ret = pthread_join(ad->tid, &thread_ret);
-               if(ret != 0) {
-                       SETTING_TRACE_ERROR("fail to join with thread");
-               }
-               SETTING_TRACE("thread exit code %d", (int)thread_ret);
-       }
+       ret = vconf_ignore_key_changed(storageUg_MMC_stat, storageUg_SD_change_cb);
+       warn_if(ret, "vconf_ignore_key_changed(%s) Fail(%d)", storageUg_MMC_stat, ret);
+       ret = vconf_ignore_key_changed(storageUg_ENCRYPT_stat, storageUg_encrypt_change_cb);
+       warn_if(ret, "vconf_ignore_key_changed(%s) Fail(%d)", storageUg_ENCRYPT_stat, ret);
 
-       pthread_mutex_destroy(&ad->exit_mutex);
-       pthread_mutex_destroy(&ad->update_mutex);
-       pthread_cond_destroy(&ad->wait_cond);
+       storageUg_stop_async_worker_all();
 
-       if (ad->pipe) {
-               ecore_pipe_del(ad->pipe);
-               ad->pipe = NULL;
+       if (ad->update_idler) {
+               ecore_idler_del(ad->update_idler);
+               ad->update_idler = NULL;
        }
 
-       if (!isEmulBin()) {
-               ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_MMC_STATUS,
-                               __setting_storage_vconf_change_cb);
-               if (ret != 0) {
-                       SETTING_TRACE_ERROR("call vconf_ignore_key_changed failed");
-               }
+       if (ad->update_timer) {
+               ecore_timer_del(ad->update_timer);
+               ad->update_timer = NULL;
        }
 
        if (ad->popup) {
                evas_object_del(ad->popup);
                ad->popup = NULL;
        }
-
-       if (ad->ly_main != NULL) {
-               evas_object_del(ad->ly_main);
-               setting_view_storage_main.is_create = 0;
+       if (ad->cr) {
+               cairo_destroy(ad->cr);
+               ad->cr = NULL;
+       }
+       if (ad->pc) {
+               pkgmgr_client_free(ad->pc);
+               ad->pc = NULL;
        }
 
+       setting_view_storage_main.is_create = 0;
+
        return SETTING_RETURN_SUCCESS;
 }
 
-static int setting_storage_main_update(void *cb)
+static int storageUg_main_update(void *data)
 {
-       SETTING_TRACE_BEGIN;
-       /* error check */
-       retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
-       SettingStorageUG *ad = (SettingStorageUG *) cb;
-
-       int ret = 0;
-
-       __setting_storage_main_internal_storage_status_get(ad);
-
-       /* update internal total size */
-       char total_desc[SETTING_STORAGE_MAX_STR_LEN + 1] = {0,};
-       ret = __setting_storage_status_size_transition(ad->internal_status.dTotal, total_desc);
-       setting_retvm_if(ret == SETTING_RETURN_FAIL, SETTING_RETURN_FAIL, "failed to transform")
-
-       G_FREE(ad->internal->keyStr);
-       ad->internal->keyStr = (char *)g_strdup(total_desc);
-       elm_object_item_data_set(ad->internal->item, ad->internal);
-       elm_genlist_item_update(ad->internal->item);
+       SettingStorageUG *ad = data;
 
-       /* update internal available size */
-       char avail_desc[SETTING_STORAGE_MAX_STR_LEN + 1] = {0,};
-       ret = __setting_storage_status_size_transition(ad->internal_status.dAvail, avail_desc);
-       setting_retvm_if(ret == SETTING_RETURN_FAIL, SETTING_RETURN_FAIL, "failed to transform")
-
-       G_FREE(ad->avail->sub_desc);
-       ad->avail->sub_desc = (char *)g_strdup(avail_desc);
-       elm_object_item_data_set(ad->avail->item, ad->avail);
-       elm_genlist_item_update(ad->avail->item);
-
-       /* update miscellaneous */
-       if (ad->back_from_misc) {
-               double misc_size = __setting_storage_main_miscellaneous_size_get();
-
-               ad->others_status.dTotal = misc_size;
-               __setting_storage_main_genlist_update(ad->others, ad->others_status);
-       }
+       retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
 
-       /* wake up thread */
-       pthread_mutex_lock(&ad->update_mutex);
-       ad->type = SETTING_STORAGE_REUPDATE;
-       pthread_cond_signal(&ad->wait_cond);
-       pthread_mutex_unlock(&ad->update_mutex);
+       storageUg_main_update_media_data(ad);
+       storageUG_update_apps_info(ad);
 
-       if (ad->ly_main != NULL) {
-               evas_object_show(ad->ly_main);
-       }
+       if (ad->misces_list)
+               setting_view_update(ad->misces_view, ad);
+       else
+               evas_object_show(ad->lo_main);
 
        return SETTING_RETURN_SUCCESS;
 }
 
-static int setting_storage_main_cleanup(void *cb)
+static int storageUg_main_cleanup(void *data)
 {
-       /* error check */
-       retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
-
-       SettingStorageUG *ad = (SettingStorageUG *) cb;
-
-       if (ad->ly_main != NULL) {
-               evas_object_hide(ad->ly_main);
-       }
-
        return SETTING_RETURN_SUCCESS;
 }
 
-/* ***************************************************
- *
- *call back func
- *
- ***************************************************/
-
-static void __setting_storage_main_click_softkey_back_cb(void *data, Evas_Object *obj,
-                                       void *event_info)
+void storageUg_main_init(SettingStorageUG *ad)
 {
-       /* error check */
-       ret_if(data == NULL);
+       ret_if(NULL == ad);
+       ret_if(ad->main_view);
 
-       SettingStorageUG *ad = (SettingStorageUG *) data;
-       /* Send destroy request */
-       ug_destroy_me(ad->ug);
+       setting_view_storage_main.create = storageUg_main_create;
+       setting_view_storage_main.destroy = storageUg_main_destroy;
+       setting_view_storage_main.update = storageUg_main_update;
+       setting_view_storage_main.cleanup = storageUg_main_cleanup;
+
+       ad->main_view = &setting_view_storage_main;
 }