4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
21 #include <media_content.h>
22 #include <package_manager.h>
24 #include "setting-common-general-func.h"
25 #include "setting-storage-SD.h"
26 #include "setting-storage-USB.h"
27 #include "setting-storage-utils.h"
28 #include "setting-storage-async-worker.h"
29 #include "setting-storage-main.h"
31 #define SETTING_STORAGE_PIE_RECT_WIDTH (432 * WIDGET_SCALE_FACTOR)
32 #define SETTING_STORAGE_PIE_RECT_HEIGHT (414 * WIDGET_SCALE_FACTOR)
33 #define SETTING_STORAGE_PIE_CYCLE_SIZE (294 * WIDGET_SCALE_FACTOR)
35 #define SETTING_STORAGE_PIE_RECT_WIDTH (ELM_SCALE_SIZE(432))
36 #define SETTING_STORAGE_PIE_RECT_HEIGHT (ELM_SCALE_SIZE(414))
37 #define SETTING_STORAGE_PIE_CYCLE_SIZE (ELM_SCALE_SIZE(294))
42 #define SETTING_STORAGE_APPS_ICON_PATH SETTING_ICON_PATH"/A01-1_icon_color_applications.png"
43 #define SETTING_STORAGE_PICS_ICON_PATH SETTING_ICON_PATH"/A01-1_icon_color_pictures.png"
44 #define SETTING_STORAGE_AUDIO_ICON_PATH SETTING_ICON_PATH"/A01-1_icon_color_Audio.png"
45 #define SETTING_STORAGE_MISCES_ICON_PATH SETTING_ICON_PATH"/A01-1_icon_color_miscellaneous_files.png"
46 #define SETTING_STORAGE_AVAIL_ICON_PATH SETTING_ICON_PATH"/A01-1_icon_color_available.png"
47 #define SETTING_STORAGE_SYS_ICON_PATH SETTING_ICON_PATH"/A01-1_icon_color_system.png"
49 const char *storageUg_MMC_stat = VCONFKEY_SYSMAN_MMC_STATUS;
51 static setting_view setting_view_storage_main;
53 static inline void storageUg_main_pie_graph_cairo(Evas_Object *pie_image,
59 double account_size = 0.0;
60 cairo_surface_t *cairo_surface;
61 double apps_sz = 0, pics_sz = 0, audio_size = 0, misces_sz = 0, internal_sz = 0, system_sz = 0, cache_sz = 0;;
65 cairo_h = cairo_w = SETTING_STORAGE_PIE_CYCLE_SIZE;
67 total_size = ad->sz_inter_total;
69 if (total_size == 0) {
78 system_sz = ad->sz_sys / total_size;
79 if (system_sz > 1 || system_sz < 0)
83 apps_sz = ad->sz_apps / total_size;
84 if (apps_sz > 1 || apps_sz < 0)
88 pics_sz = ad->sz_pics_videos / total_size;
89 if (pics_sz > 1 || pics_sz < 0)
93 audio_size = ad->sz_audio / total_size;
94 if (audio_size > 1 || audio_size < 0)
97 /* Miscellaneous Files */
98 misces_sz = ad->sz_misces / total_size;
99 if (misces_sz > 1 || misces_sz < 0)
103 cache_sz = (double)ad->sz_caches / total_size;
104 if (cache_sz > 1 || cache_sz < 0)
108 internal_sz = ad->sz_inter_avail / total_size;
109 if (internal_sz > 1 || internal_sz < 0)
114 cairo_destroy(ad->cr);
118 cairo_surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, cairo_w, cairo_h);
119 if (NULL == cairo_surface) {
120 SETTING_TRACE_ERROR("cairo_image_surface_create() Fail");
124 cr = cairo_create(cairo_surface);
125 cairo_surface_destroy(cairo_surface);
127 /*all, use avaliable color */
128 cairo_set_line_width(cr, 4);
129 cairo_arc(cr, cairo_w / 2, cairo_h / 2, cairo_w / 2, 0, 2 * M_PI);
130 cairo_set_source_rgba(cr, 230 / 255., 226 / 255., 218 / 255., 1);
135 cairo_line_to(cr, cairo_w / 2, cairo_h / 2);
136 cairo_arc_negative(cr, cairo_w / 2, cairo_h / 2, cairo_w / 2, account_size * 2 * M_PI,
137 (account_size - system_sz) * 2 * M_PI);
138 cairo_set_source_rgba(cr, 153 / 255., 66 / 255., 194 / 255., 1);
140 account_size -= system_sz;
143 cairo_line_to(cr, cairo_w / 2, cairo_h / 2);
144 cairo_arc_negative(cr, cairo_w / 2, cairo_h / 2, cairo_w / 2, account_size * 2 * M_PI,
145 (account_size - apps_sz) * 2 * M_PI);
146 cairo_set_source_rgba(cr, 255 / 255., 189 / 255., 8 / 255., 1);
148 account_size -= apps_sz;
151 cairo_line_to(cr, cairo_w / 2, cairo_h / 2);
152 cairo_arc_negative(cr, cairo_w / 2, cairo_h / 2, cairo_w / 2, account_size * 2 * M_PI,
153 (account_size - pics_sz) * 2 * M_PI);
154 cairo_set_source_rgba(cr, 119 / 255., 222 / 255., 60 / 255., 1);
156 account_size -= pics_sz;
159 cairo_line_to(cr, cairo_w / 2, cairo_h / 2);
160 cairo_arc_negative(cr, cairo_w / 2, cairo_h / 2, cairo_w / 2, account_size * 2 * M_PI,
161 (account_size - audio_size) * 2 * M_PI);
162 cairo_set_source_rgba(cr, 28 / 255., 140 / 255., 252 / 255., 1);
164 account_size -= audio_size;
166 /*miscellaneous files */
167 cairo_line_to(cr, cairo_w / 2, cairo_h / 2);
168 cairo_arc_negative(cr, cairo_w / 2, cairo_h / 2, cairo_w / 2, account_size * 2 * M_PI,
169 (account_size - misces_sz) * 2 * M_PI);
170 cairo_set_source_rgba(cr, 52 / 255., 220 / 255., 250 / 255., 1);
172 account_size -= misces_sz;
175 cairo_line_to(cr, cairo_w / 2, cairo_h / 2);
176 cairo_arc_negative(cr, cairo_w / 2, cairo_h / 2, cairo_w / 2, account_size * 2 * M_PI,
177 (account_size - cache_sz) * 2 * M_PI);
178 cairo_set_source_rgba(cr, 26 / 255., 49 / 255., 125 / 255., 1);
180 account_size -= cache_sz;
182 //evas_object_image_alpha_set(pie_image, EINA_FALSE);
183 evas_object_image_alpha_set(pie_image, EINA_TRUE);
184 evas_object_image_size_set(pie_image, cairo_w, cairo_h);
185 evas_object_image_data_set(pie_image, cairo_image_surface_get_data(cairo_surface));
186 evas_object_image_fill_set(pie_image, 0, 0, cairo_w, cairo_h);
187 evas_object_resize(pie_image, cairo_w, cairo_h);
191 static inline void storageUg_main_part_pie_graph_set(Evas_Object *parent,
192 const char *part, void *data)
195 int cairo_w, cairo_h;
197 Evas_Object *pie_image;
198 SettingStorageUG *ad = data;
200 ret_if(parent == NULL);
201 ret_if(data == NULL);
203 cairo_h = cairo_w = SETTING_STORAGE_PIE_CYCLE_SIZE;
205 evas = evas_object_evas_get(parent);
207 SETTING_TRACE_ERROR("evas_object_evas_get() Fail");
211 clip = evas_object_rectangle_add(evas);
212 evas_object_color_set(clip, 255, 255, 255, 255);
213 setting_resize_object(clip, cairo_w, cairo_h);
215 pie_image = evas_object_image_add(evas);
216 evas_object_color_set(pie_image, 255, 255, 255, 250);
217 evas_object_clip_set(pie_image, clip);
218 evas_object_show(pie_image);
219 elm_object_part_content_set(parent, part, pie_image);
221 storageUg_main_pie_graph_cairo(pie_image, ad);
224 Evas_Object *storageUg_main_pie_item_get_icon(void *data, Evas_Object *obj,
227 int layout_w, layout_h;
230 SettingStorageUG *ad = data;
231 char size_str[STORAGEUG_MAX_STR_LEN] = {0};
232 char final_str[STORAGEUG_MAX_STR_LEN] = {0};
234 retv_if(NULL == obj, NULL);
235 retv_if(NULL == data, NULL);
236 retvm_if(safeStrCmp(part, "elm.icon"), NULL, "part(%s) Invaild", part);
238 layout_w = SETTING_STORAGE_PIE_RECT_WIDTH;
239 layout_h = SETTING_STORAGE_PIE_RECT_HEIGHT;
241 layout = elm_layout_add(obj);
242 elm_layout_file_set(layout, SETTING_THEME_EDJ_NAME, "storage_pie");
244 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
247 elm_object_part_text_set(layout, "storage_title.text",
248 _(STORAGEUG_STR_INTERNAL_STORAGE));
250 storageUg_size_to_str(ad->sz_inter_avail, size_str, sizeof(size_str));
251 snprintf(final_str, sizeof(final_str), "%s %s", size_str,
252 _(STORAGEUG_STR_AVAIL));
253 elm_object_part_text_set(layout, "storage_total.text", final_str);
255 used_size = ad->sz_inter_total - ad->sz_inter_avail;
256 storageUg_size_to_str(used_size, size_str, sizeof(size_str));
257 snprintf(final_str, sizeof(final_str), "%s %s", size_str,
258 _(STORAGEUG_STR_USED));
259 elm_object_part_text_set(layout, "storage_used.text", final_str);
262 storageUg_main_part_pie_graph_set(layout, "pie_rect", ad);
263 /*setting_resize_object(layout, layout_w, layout_h); */
264 evas_object_show(layout);
269 Evas_Object *storageUg_color_item_content_get(void *data, Evas_Object *obj,
272 setting_retvm_if(data == NULL, NULL, "data is NULL");
273 Setting_GenGroupItem_Data *list_item = data;
274 int color = list_item->color;
275 if (!strcmp(part, "elm.icon.1")) {
276 Evas_Object *layout = elm_layout_add(obj);
277 elm_layout_file_set(layout, SETTING_THEME_EDJ_NAME, "storage_elem");
283 elm_object_signal_emit(layout, "elm,state,show,app", "elm");
286 elm_object_signal_emit(layout, "elm,state,show,pic", "elm");
289 elm_object_signal_emit(layout, "elm,state,show,audio", "elm");
292 elm_object_signal_emit(layout, "elm,state,show,misc", "elm");
295 elm_object_signal_emit(layout, "elm,state,show,cache", "elm");
298 elm_object_signal_emit(layout, "elm,state,show,avail", "elm");
303 evas_object_show(layout);
309 static void __storage_cache_file_clean_popup_no_cache_rsp_cb(void *data, Evas_Object *obj, void *event_info)
312 setting_retm_if(data == NULL, "data is NULL");
313 SettingStorageUG *ad = (SettingStorageUG *)data;
314 switch (btn_type(obj)) {
315 case POPUP_RESPONSE_OK: {
318 case POPUP_RESPONSE_CANCEL: {
324 evas_object_del(ad->popup);
331 static void __storage_cache_file_clean_popup_rsp_cb(void *data, Evas_Object *obj, void *event_info)
334 setting_retm_if(data == NULL, "data is NULL");
335 SettingStorageUG *ad = (SettingStorageUG *)data;
336 switch (btn_type(obj)) {
337 case POPUP_RESPONSE_OK: {
338 int ret = package_manager_clear_all_cache_dir();
339 if (PACKAGE_MANAGER_ERROR_NONE == ret) {
341 storageug_genlist_text_update(ad->caches, ad->sz_caches);
343 SETTING_TRACE_ERROR("Failed to call package_manager_clear_all_cache_dir() with error code-%d", ret);
348 case POPUP_RESPONSE_CANCEL: {
354 evas_object_del(ad->popup);
361 static void storageUg_main_sel(void *data, Evas_Object *obj, void *event_info)
363 SettingStorageUG *ad = data;
364 Elm_Object_Item *item = event_info;
366 ret_if(data == NULL);
368 elm_genlist_item_selected_set(item, 0);
369 Setting_GenGroupItem_Data *list_item = elm_object_item_data_get(item);
370 setting_retm_if(NULL == list_item, "list_item is NULL");
372 SETTING_TRACE("clicking item[%s]", list_item->keyStr);
374 if (!safeStrCmp(STORAGEUG_STR_APPS, list_item->keyStr)) {
375 storageUg_manage_app_ug(ad);
376 } else if (!safeStrCmp(STORAGEUG_STR_DEF_STORAGE, list_item->keyStr)) {
377 setting_view_change(ad->main_view, ad->default_view, ad);
378 } else if (!safeStrCmp(STORAGEUG_STR_PICS, list_item->keyStr)) {
379 app_launcher("org.tizen.gallery");
380 } else if (!safeStrCmp(STORAGEUG_STR_AUDIO, list_item->keyStr)) {
381 app_launcher("org.tizen.music-player");
382 } else if (!safeStrCmp(STORAGEUG_STR_MISCES, list_item->keyStr)) {
383 setting_view_change(ad->main_view, ad->misces_view, ad);
384 } else if (!safeStrCmp(STORAGEUG_STR_CACHE, list_item->keyStr)) {
385 if (ad->sz_caches <= 0) {
387 ad->popup = setting_create_popup(ad, ad->win,
388 "IDS_ST_HEADER_CLEAR_CACHE_ABB",
389 "IDS_ST_POP_THERE_IS_NO_CACHE_DATA_TO_CLEAR",
390 __storage_cache_file_clean_popup_no_cache_rsp_cb,
392 1, "IDS_ST_BUTTON_OK_ABB");
394 ad->popup = setting_create_popup(ad, ad->win,
395 "IDS_ST_HEADER_CLEAR_CACHE_ABB",
396 "IDS_ST_POP_ALL_THE_CACHE_DATA_WILL_BE_CLEARED",
397 __storage_cache_file_clean_popup_rsp_cb,
399 2, "IDS_ST_BUTTON_CLEAR_CACHE_ABB", "IDS_ST_BUTTON_CANCEL_ABB");
404 static Setting_GenGroupItem_Data *storageUg_main_append_group_mid_item(
405 SettingStorageUG *ad, int color, const char *key_str, const char *sub_str)
407 Setting_GenGroupItem_Data *item_data = NULL;
408 item_data = (Setting_GenGroupItem_Data *) calloc(1, sizeof(Setting_GenGroupItem_Data));
410 item_data->userdata = ad;
411 item_data->keyStr = (char *)g_strdup(key_str);
412 item_data->sub_desc = (char *)g_strdup(sub_str);
413 item_data->color = color;
414 item_data->item = elm_genlist_item_append(ad->gl_main, &(ad->itc_color_item), item_data, NULL,
415 ELM_GENLIST_ITEM_NONE, storageUg_main_sel, ad);
417 SETTING_TRACE_ERROR("item_data is NULL");
423 static inline void storageUg_main_dev_memory_detail(SettingStorageUG *ad)
425 char avail_desc[STORAGEUG_MAX_STR_LEN] = {0};
426 char total_desc[STORAGEUG_MAX_STR_LEN] = {0};
429 storageUg_size_to_str(ad->sz_inter_total, total_desc, sizeof(total_desc));
430 ad->total_space = setting_create_Gendial_field_def(ad->gl_main, &itc_2text_2,
431 NULL, ad, SWALLOW_Type_INVALID, NULL, NULL, 0, STORAGEUG_STR_TOTAL,
433 ret_if(NULL == ad->total_space);
434 ad->total_space->userdata = ad;
435 elm_genlist_item_select_mode_set(ad->total_space->item,
436 ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
439 ad->sys_mem = storageUg_main_append_group_mid_item(ad,
440 1, STORAGEUG_STR_SYS_MEM, STORAGEUG_STR_WAIT);
441 ret_if(NULL == ad->sys_mem);
442 elm_genlist_item_select_mode_set(ad->sys_mem->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
445 ad->apps = storageUg_main_append_group_mid_item(ad,
446 2, STORAGEUG_STR_APPS, STORAGEUG_STR_WAIT);
447 ret_if(NULL == ad->apps);
449 /* Pictures, Videos */
450 ad->pics_videos = storageUg_main_append_group_mid_item(ad,
451 3, STORAGEUG_STR_PICS, STORAGEUG_STR_WAIT);
452 ret_if(NULL == ad->pics_videos);
455 ad->audio = storageUg_main_append_group_mid_item(ad,
456 4, STORAGEUG_STR_AUDIO, STORAGEUG_STR_WAIT);
457 ret_if(NULL == ad->audio);
459 /* Miscellaneous files */
460 ad->misces = storageUg_main_append_group_mid_item(ad,
461 5, STORAGEUG_STR_MISCES, STORAGEUG_STR_WAIT);
462 ret_if(NULL == ad->misces);
465 ad->caches = storageUg_main_append_group_mid_item(ad,
466 6, STORAGEUG_STR_CACHE, STORAGEUG_STR_WAIT);
467 ret_if(NULL == ad->caches);
471 storageUg_size_to_str(ad->sz_inter_avail, avail_desc, sizeof(avail_desc));
472 ad->avail = storageUg_main_append_group_mid_item(ad,
473 7, STORAGEUG_STR_AVAIL, avail_desc);
474 ret_if(NULL == ad->avail);
475 elm_genlist_item_select_mode_set(ad->avail->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
478 static void storageUg_main_dev_memory_update(SettingStorageUG *ad)
480 char desc[STORAGEUG_MAX_STR_LEN] = {0};
484 storageUg_get_internal_storage_status(&ad->sz_inter_total, &ad->sz_inter_avail);
486 /* update internal total size */
487 storageUg_size_to_str(ad->sz_inter_total, desc, sizeof(desc));
488 G_FREE(ad->total_space->sub_desc);
489 ad->total_space->sub_desc = (char *)g_strdup(desc);
490 elm_genlist_item_fields_update(ad->total_space->item, "elm.text.sub",
491 ELM_GENLIST_ITEM_FIELD_TEXT);
493 /* update internal available size */
494 storageUg_size_to_str(ad->sz_inter_avail, desc, sizeof(desc));
495 G_FREE(ad->avail->sub_desc);
496 ad->avail->sub_desc = (char *)g_strdup(desc);
497 elm_genlist_item_fields_update(ad->avail->item, "elm.text.sub",
498 ELM_GENLIST_ITEM_FIELD_TEXT);
502 static Eina_Bool storageUg_update_timer(void *data)
505 SettingStorageUG *ad = data;
507 retv_if(NULL == data, ECORE_CALLBACK_CANCEL);
509 storageUg_main_dev_memory_update(ad);
510 SETTING_TRACE_DEBUG("ad->misces_view->is_create:%d", ad->misces_view->is_create);
511 if (ad->misces_view->is_create) {
512 /* setting_view_update(ad->misces_view, ad); */
515 storageUg_stop_async_worker(ad->size_worker);
516 ad->size_worker = storageUg_start_async_worker(storageUg_get_internal_detail,
517 storageUg_get_internal_detail_cb, ad);
520 ad->update_timer = NULL;
522 return ECORE_CALLBACK_CANCEL;
525 static void storageUg_main_update_media_data(SettingStorageUG *ad)
529 if (ad->update_timer) {
530 ecore_timer_del(ad->update_timer);
531 ad->update_timer = NULL;
534 ad->update_timer = ecore_timer_add(0.5, storageUg_update_timer, ad);
537 static void storageUg_media_filesys_changed_cb(
538 media_content_error_e error,
540 media_content_db_update_item_type_e update_item,
541 media_content_db_update_type_e update_type,
542 media_content_type_e media_type,
549 SettingStorageUG *ad = user_data;
551 ret_if(user_data == NULL);
553 storageUg_main_update_media_data(ad);
558 static Eina_Bool storageUg_main_back_cb(void *data, Elm_Object_Item *it)
561 SettingStorageUG *ad = data;
563 retv_if(data == NULL, EINA_TRUE);
565 if (ad->update_timer) {
566 ecore_timer_del(ad->update_timer);
567 ad->update_timer = NULL;
570 if (ad->size_worker) {
571 if (storageUg_worker_is_running(ad->size_worker)) {
572 SETTING_TRACE("DO NOT Close Storage UI!!!!! <<------------");
576 SETTING_TRACE("ad->size_worker is NULL <<--------");
579 ug_destroy_me(ad->ug);
584 static inline Evas_Object *storageUg_main_genlist(Evas_Object *parent)
586 Evas_Object *genlist;
588 genlist = elm_genlist_add(parent);
589 if (NULL == genlist) {
590 SETTING_TRACE_ERROR("elm_genlist_add() Fail");
594 elm_genlist_realization_mode_set(genlist, EINA_FALSE);
595 elm_genlist_block_count_set(genlist, 2);
597 elm_genlist_realization_mode_set(genlist, EINA_TRUE);
598 elm_genlist_block_count_set(genlist, 2);
600 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
601 evas_object_show(genlist);
603 evas_object_smart_callback_add(genlist, "realized", __gl_realized_cb, NULL);
608 static int storageUg_main_create(void *data)
611 Elm_Object_Item *pie_item;
612 SettingStorageUG *ad = data;
614 bindtextdomain(SETTING_PACKAGE, SETTING_LOCALEDIR);
617 ad->update_timer = NULL;
619 retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
620 retv_if(NULL == ad->lo_parent, SETTING_DRAW_ERR_FAIL_LOAD_EDJ);
622 ad->gl_main = storageUg_main_genlist (ad->navi);
623 setting_create_navi_bar_buttons(STORAGEUG_STR_STORAGE, NULL, /* arrow style */
624 (setting_call_back_func)storageUg_main_back_cb,
626 ad->gl_main, ad->navi, NULL);
628 storageUg_get_internal_storage_status(&ad->sz_inter_total, &ad->sz_inter_avail);
630 /* storage pie view */
631 pie_item = elm_genlist_item_append(ad->gl_main, &(ad->itc_pie),
632 ad, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
633 elm_genlist_item_select_mode_set(pie_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
634 ad->pie_it = pie_item;
636 storageUg_main_dev_memory_detail(ad);
639 storageUg_stop_async_worker(ad->size_worker);
640 ad->size_worker = storageUg_start_async_worker(storageUg_get_internal_detail,
641 storageUg_get_internal_detail_cb, ad);
643 storageUG_update_apps_info(ad);
644 storageUG_update_cache_info(ad);
646 storageUg_append_separator(ad->gl_main, ad);
648 ret = vconf_get_int(storageUg_MMC_stat, &ad->mmc_status);
649 retvm_if(ret, SETTING_RETURN_FAIL, "vconf_get_int(%s) Fail", storageUg_MMC_stat);
651 storageUg_append_separator(ad->gl_main, ad);
653 /* Default storage */
654 setting_create_Gendial_field_def(ad->gl_main, &itc_1text,
655 storageUg_main_sel, ad, SWALLOW_Type_INVALID, NULL, NULL, 0,
656 STORAGEUG_STR_DEF_STORAGE, NULL, NULL);
658 storageUg_append_separator(ad->gl_main, ad);
661 ad->sd_card = setting_create_Gendial_field_titleItem(ad->gl_main,
662 &itc_group_item, STORAGEUG_STR_SD_CARD, NULL);
664 storageUg_main_append_SD_info(ad);
666 storageUg_append_separator(ad->gl_main, ad);
668 ret = vconf_notify_key_changed(storageUg_MMC_stat, storageUg_SD_change_cb, ad);
669 warn_if(ret != 0, "vconf_notify_key_changed(%s) Fail", storageUg_MMC_stat);
673 ad->usb_otg_status = SETTING_STORAGE_USB_OTG_REMOVE;
675 storageUg_init_USB(ad);
677 setting_view_storage_main.is_create = 1;
679 media_content_set_db_updated_cb(storageUg_media_filesys_changed_cb, ad);
680 SETTING_TRACE("-----------------------------------------------");
681 SETTING_TRACE(" WIDGET_SCALE_FACTOR : %f", WIDGET_SCALE_FACTOR);
682 SETTING_TRACE("-----------------------------------------------");
684 return SETTING_RETURN_SUCCESS;
687 static int storageUg_main_destroy(void *data)
690 SettingStorageUG *ad = data;
692 retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
694 setting_view_destroy(ad->misces_view, ad);
696 media_content_unset_db_updated_cb();
698 storageUg_deinit_USB();
700 ret = vconf_ignore_key_changed(storageUg_MMC_stat, storageUg_SD_change_cb);
701 warn_if(ret, "vconf_ignore_key_changed(%s) Fail(%d)", storageUg_MMC_stat, ret);
703 storageUg_stop_async_worker_all();
705 if (ad->update_idler) {
706 ecore_idler_del(ad->update_idler);
707 ad->update_idler = NULL;
710 if (ad->update_timer) {
711 ecore_timer_del(ad->update_timer);
712 ad->update_timer = NULL;
716 evas_object_del(ad->popup);
720 cairo_destroy(ad->cr);
724 pkgmgr_client_free(ad->pc);
727 if (ad->pc_total_size) {
728 pkgmgr_client_free(ad->pc_total_size);
729 ad->pc_total_size = NULL;
732 setting_view_storage_main.is_create = 0;
734 return SETTING_RETURN_SUCCESS;
737 static int storageUg_main_update(void *data)
739 SettingStorageUG *ad = data;
741 retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
743 /*storageUg_main_update_media_data(ad); */
744 storageUG_update_apps_info(ad);
746 if (ad->misces_list) {
747 /*setting_view_update(ad->misces_view, ad); */
749 evas_object_show(ad->lo_main);
752 return SETTING_RETURN_SUCCESS;
755 static int storageUg_main_cleanup(void *data)
757 return SETTING_RETURN_SUCCESS;
760 void storageUg_main_init(SettingStorageUG *ad)
763 ret_if(ad->main_view);
765 setting_view_storage_main.create = storageUg_main_create;
766 setting_view_storage_main.destroy = storageUg_main_destroy;
767 setting_view_storage_main.update = storageUg_main_update;
768 setting_view_storage_main.cleanup = storageUg_main_cleanup;
770 ad->main_view = &setting_view_storage_main;