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.
19 #include <media_content.h>
21 #include "setting-storage-utils.h"
22 #include "setting-storage-async-worker.h"
23 #include "setting-storage-miscellaneous.h"
25 #define STR_DELETE_ITEMS "IDS_ST_HEADER_DELETE_ITEMS_ABB2"
30 Setting_GenGroupItem_Data *data;
34 static setting_view setting_view_storage_misc;
36 static Eina_Bool storageUg_misces_back_cb(void *data, Elm_Object_Item *it)
38 SettingStorageUG *ad = data;
40 retv_if(data == NULL, EINA_TRUE);
41 retv_if(NULL != ad->del_worker, EINA_FALSE);
43 setting_view_change(ad->misces_view, ad->main_view, ad);
48 static bool storageUg_misces_media_item_cb(media_info_h media, void *data)
51 char *media_id = NULL;
52 char *file_path = NULL;
53 char *display_name = NULL;
54 SettingStorageUG *ad = data;
56 retv_if(NULL == media, true);
57 retv_if(NULL == data, false);
59 media_info_get_file_path(media, &file_path);
60 if (!ecore_file_exists(file_path))
66 media_info_get_media_id(media, &media_id);
67 media_info_get_display_name(media, &display_name);
69 node = calloc(1, sizeof(Node_Info));
71 node->path = file_path;
72 node->name = display_name;
73 ad->misces_list = eina_list_append(ad->misces_list, node);
78 static void storageUg_misces_clear_list(Eina_List *list)
81 Node_Info *node = NULL;
83 EINA_LIST_FOREACH(list, l, node)
93 static inline void storageUg_meisces_get_list(SettingStorageUG *ad)
97 filter_h filter = NULL;
103 storageUg_misces_clear_list(ad->misces_list);
104 ad->misces_list = NULL;
108 condition = "(MEDIA_TYPE=4) and MEDIA_PATH LIKE \'/opt/usr/media/%%\'";
110 condition = "(MEDIA_TYPE=4) and (MEDIA_PATH LIKE \'/opt/usr/media/.tmp_download/%%\'"
111 "or MEDIA_PATH LIKE \'/opt/usr/media/.video-hub/%%\'"
112 "or MEDIA_PATH LIKE \'/opt/usr/media/Camera/%%\'"
113 "or MEDIA_PATH LIKE \'/opt/usr/media/Downloads/%%\'"
114 "or MEDIA_PATH LIKE \'/opt/usr/media/Images/%%\'"
115 "or MEDIA_PATH LIKE \'/opt/usr/media/Others/%%\'"
116 "or MEDIA_PATH LIKE \'/opt/usr/media/Sounds/%%\'"
117 "or MEDIA_PATH LIKE \'/opt/usr/media/Videos/%%\'"
118 "or MEDIA_PATH LIKE \'/opt/usr/media/lost+found/%%\')";
122 ret = media_filter_create(&filter);
123 if(ret != MEDIA_CONTENT_ERROR_NONE)
125 SETTING_TRACE_ERROR("media_filter_create() Fail(%d)", ret);
128 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
129 if(ret != MEDIA_CONTENT_ERROR_NONE)
131 media_filter_destroy(filter);
132 SETTING_TRACE_ERROR("media_filter_set_condition() Fail(%d)", ret);
136 ret = media_info_foreach_media_from_db(filter, storageUg_misces_media_item_cb, ad);
137 if(ret != MEDIA_CONTENT_ERROR_NONE)
139 media_filter_destroy(filter);
140 SETTING_TRACE_ERROR("media_info_foreach_media_from_db() Fail(%d)", ret);
144 ret = media_filter_destroy(filter);
145 if (ret != MEDIA_CONTENT_ERROR_NONE)
147 SETTING_TRACE_ERROR("media_filter_destroy() Fail(%d)", ret);
151 ad->misces_sz_all = eina_list_count(ad->misces_list);;
154 static void storageUg_misces_handle_selecting(SettingStorageUG *ad)
156 Evas_Object *toolbar;
160 if (ad->misces_checked == ad->misces_sz_all)
161 ad->misces_is_select_all = EINA_TRUE;
163 ad->misces_is_select_all = EINA_FALSE;
165 /* text set and timeout set */
166 if (0 < ad->misces_checked)
168 char text[MAX_DISPLAY_NAME_LEN_ON_UI] = {0};
170 snprintf(text, sizeof(text), _(STORAGEUG_STR_N_SELECTED), ad->misces_checked);
171 elm_object_item_part_text_set(ad->misces_navi_it, "subtitle", text);
173 toolbar = elm_object_item_part_content_get(ad->misces_navi_it, "toolbar");
174 elm_object_item_disabled_set(elm_toolbar_last_item_get(toolbar), EINA_FALSE);
178 elm_object_item_part_text_set(ad->misces_navi_it, "subtitle", "");
179 elm_object_item_signal_emit(ad->misces_navi_it, "elm,state,subtitle,hide", "elm");
181 toolbar = elm_object_item_part_content_get(ad->misces_navi_it, "toolbar");
182 elm_object_item_disabled_set(elm_toolbar_last_item_get(toolbar), EINA_TRUE);
186 static int storageUg_compare_str(const void *data1, const void *data2)
188 return safeStrCmp(data1, data2);
191 static void storageUg_misces_handle_sel_list(SettingStorageUG *ad, char *id,
196 ad->misces_checked++;
197 ad->misces_sel_list = eina_list_append(ad->misces_sel_list, strdup(id));
203 ad->misces_checked--;
204 found = eina_list_search_unsorted_list(ad->misces_sel_list, storageUg_compare_str,
206 free(eina_list_data_get(found));
207 ad->misces_sel_list = eina_list_remove_list(ad->misces_sel_list, found);
210 /*update select all check state*/
211 Evas_Object *check = elm_object_part_content_get(ad->select_all_layout, "elm.icon");
212 if( ad->misces_checked>=ad->misces_sz_all){
213 elm_check_state_set(check, EINA_TRUE);
215 elm_check_state_set(check, EINA_FALSE);
217 /*update delete item buttons*/
218 if( ad->misces_checked>0){
219 if(ad->misces_navi_it && elm_object_item_part_content_get(ad->misces_navi_it, "title_left_btn")==NULL){
220 elm_object_item_part_content_set(ad->misces_navi_it, "title_left_btn",ad->title_left_btn);
222 if(ad->misces_navi_it && elm_object_item_part_content_get(ad->misces_navi_it, "title_right_btn")==NULL){
223 elm_object_item_part_content_set(ad->misces_navi_it, "title_right_btn",ad->title_right_btn);
226 if(ad->misces_navi_it && elm_object_item_part_content_get(ad->misces_navi_it, "title_left_btn")!=NULL){
227 elm_object_item_part_content_unset(ad->misces_navi_it, "title_left_btn");
228 evas_object_hide(ad->title_left_btn);
230 if(ad->misces_navi_it && elm_object_item_part_content_get(ad->misces_navi_it, "title_right_btn")!=NULL){
231 elm_object_item_part_content_unset(ad->misces_navi_it, "title_right_btn");
232 evas_object_hide(ad->title_right_btn);
237 static void storageUg_misces_genlist_sel(void *data, Evas_Object *obj,
241 SettingStorageUG *ad = data;
242 Elm_Object_Item *item = event_info;
243 Setting_GenGroupItem_Data *d_item;
245 ret_if(data == NULL);
247 elm_genlist_item_selected_set(item, 0);
248 d_item = elm_object_item_data_get(item);
249 node = d_item->userdata;
251 setting_update_gl_item_chk_status(d_item, !(d_item->chk_status));
253 storageUg_misces_handle_sel_list(ad, node->id, d_item->chk_status);
254 storageUg_misces_handle_selecting(ad);
257 static void storageUg_misces_genlist_chk_cb(void *data, Evas_Object *obj,
261 SettingStorageUG *ad;
262 Setting_GenGroupItem_Data *d_item = data;
264 ret_if(data == NULL);
266 node = d_item->userdata;
268 d_item->chk_status = elm_check_state_get(obj);
270 storageUg_misces_handle_sel_list(ad, node->id, d_item->chk_status);
271 storageUg_misces_handle_selecting(ad);
274 static inline Evas_Object* storageUg_misces_no_item(Evas_Object *parent)
276 Evas_Object *layout, *icon;
278 layout = elm_layout_add(parent);
279 elm_layout_theme_set(layout, "layout", "nocontents", "default");
280 evas_object_size_hint_weight_set (layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
281 evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
283 icon = elm_image_add(layout);
284 elm_image_file_set(icon, SETTING_ICON_PATH_CFG "/00_nocontents_text.png", NULL);
285 elm_object_part_content_set(layout, "nocontents.image", icon);
287 elm_object_domain_translatable_part_text_set(layout, "elm.text", SYSTEM_PACKAGE,
288 STORAGEUG_STR_NO_FILES);
289 elm_layout_signal_emit(layout, "text,disabled", "");
294 static inline void storageUg_misces_clear_sel_list(Eina_List *list)
299 EINA_LIST_FOREACH(list, l, node)
301 eina_list_free(list);
304 static inline void storageUg_misces_gl_append_items(SettingStorageUG *ad)
308 Eina_List *found, *cur, *tmp_sel_list;
309 Setting_GenGroupItem_Data *item_data = NULL;
311 tmp_sel_list = ad->misces_sel_list;
312 ad->misces_sel_list = NULL;
314 EINA_LIST_FOREACH(ad->misces_list, cur, node)
319 found = eina_list_search_unsorted_list(tmp_sel_list, storageUg_compare_str,
324 storageUg_misces_handle_sel_list(ad, node->id, 1);
331 item_data = setting_create_Gendial_field_def(ad->gl_misces,
332 &(itc_1text_1icon), storageUg_misces_genlist_sel, ad,
333 SWALLOW_Type_1CHECK_RIGHT, NULL, NULL, checked, node->name, node->path,
334 storageUg_misces_genlist_chk_cb);
338 item_data->userdata = node;
339 node->data = item_data;
344 SETTING_TRACE_ERROR("item_data is NULL");
347 storageUg_misces_handle_selecting(ad);
348 storageUg_misces_clear_sel_list(tmp_sel_list);
351 static inline Evas_Object* storageUg_misces_genlist(Evas_Object *parent)
353 Evas_Object *genlist;
355 genlist = elm_genlist_add(parent);
358 SETTING_TRACE_ERROR("elm_genlist_add() Fail");
362 evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
363 evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
364 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
365 elm_scroller_policy_set(genlist, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
366 evas_object_show(genlist);
368 evas_object_smart_callback_add(genlist, "realized", __gl_realized_cb, NULL);
373 static void storageUg_misces_delete_list(SettingStorageUG *ad)
375 SETTING_TRACE("Entering storageUg_misces_delete_list");
379 ad->misces_checked = 0;
380 Setting_GenGroupItem_Data *item_data = NULL;
381 Elm_Object_Item *it = elm_genlist_first_item_get(ad->gl_misces);
384 item_data = elm_object_item_data_get(it);
385 it = elm_genlist_item_next_get(it);
386 if (item_data != NULL){
387 SETTING_TRACE("chk_status: %d", item_data->chk_status);
388 if (item_data->chk_status){
389 elm_object_item_del(item_data->item);
390 Node_Info *node = item_data->userdata;
391 ad->misces_list = eina_list_remove(ad->misces_list, node);
400 ad->misces_sz_all = eina_list_count(ad->misces_list);
402 SETTING_TRACE("ad->misces_sz_all - %d", ad->misces_sz_all);
403 if (0 == ad->misces_sz_all){
405 if(elm_object_item_part_content_get(ad->misces_navi_it, "title_right_btn")){
406 Evas_Object *btn_done = elm_object_item_part_content_unset(ad->misces_navi_it, "title_right_btn");
407 evas_object_hide(btn_done);
410 if(elm_object_item_part_content_get(ad->misces_navi_it, "title_left_btn")){
411 Evas_Object *btn_cancel = elm_object_item_part_content_unset(ad->misces_navi_it, "title_left_btn");
412 evas_object_hide(btn_cancel);
414 if (NULL == ad->misces_lo_noitem){
415 ad->misces_lo_noitem = storageUg_misces_no_item(ad->navi);
419 ad->gl_misces = NULL;
421 if(ad->misces_lo_noitem){
422 elm_object_item_part_content_set(ad->misces_navi_it, "elm.swallow.content", ad->misces_lo_noitem);
428 static void storageUg_misces_add_list(SettingStorageUG *ad)
430 Evas_Object *toolbar, *btn;
431 Evas_Object *lo_new = NULL;
435 ad->misces_checked = 0;
436 ad->misces_is_select_all = EINA_FALSE;
438 if (0 == ad->misces_sz_all)
440 if (NULL == ad->misces_lo_noitem)
442 lo_new = ad->misces_lo_noitem = storageUg_misces_no_item(ad->navi);
444 btn = elm_object_item_part_content_get(ad->misces_navi_it, "title_right_btn");
445 elm_object_disabled_set(btn, EINA_TRUE);
446 ad->gl_misces = NULL;
452 elm_genlist_clear(ad->gl_misces);
454 lo_new = ad->gl_misces = storageUg_misces_genlist(ad->navi);
456 storageUg_misces_gl_append_items(ad);
457 ad->misces_lo_noitem = NULL;
462 elm_object_item_part_content_set(ad->misces_navi_it, "elm.swallow.content",
466 if (0 == ad->misces_checked)
468 toolbar = elm_object_item_part_content_get(ad->misces_navi_it, "toolbar");
469 elm_object_item_disabled_set(elm_toolbar_last_item_get(toolbar), EINA_TRUE);
473 void storageUg_misces_delete_files_cb(int fn_result, SettingStorageUG *ad)
477 ad->del_worker = NULL;
480 SETTING_TRACE("After deleting, updating the file list");
481 // storageUg_misces_add_list(ad);
482 storageUg_misces_delete_list(ad);
484 if (SETTING_RETURN_SUCCESS != fn_result)
486 SETTING_TRACE_ERROR("storageUg_misces_delete_files() Fail(%d)", fn_result);
487 storageUg_fail_popup(ad);
493 evas_object_del(ad->popup);
497 if(ad->misces_navi_it)
499 elm_object_item_part_text_set(ad->misces_navi_it, "subtitle", "");
500 elm_object_item_signal_emit(ad->misces_navi_it, "elm,state,subtitle,hide", "elm");
504 static int storageUg_misces_delete_files(SettingStorageUG *ad)
507 Node_Info *node = NULL;
508 Setting_GenGroupItem_Data *item_data = NULL;
510 retv_if(NULL == ad, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
512 EINA_LIST_FOREACH(ad->misces_list, l, node)
516 item_data = node->data;
518 if (!item_data->chk_status)
521 if (EINA_TRUE == ecore_file_remove(node->path))
523 media_content_scan_file(node->path);
527 SETTING_TRACE_ERROR("failed to ecore_file_remove");
528 return SETTING_RETURN_FAIL;
531 storageUG_STOP_POINT;
534 return SETTING_RETURN_SUCCESS;
537 static void storageUg_misces_delete_resp(void *data, Evas_Object *obj,
541 SettingStorageUG *ad = data;
543 ret_if(NULL == data);
546 response_type = btn_type(obj);
550 evas_object_del(ad->popup);
554 if (POPUP_RESPONSE_OK != response_type)
556 SETTING_TRACE("CANCEL");
560 if (ad->misces_checked)
562 ad->popup = setting_create_popup_with_progressbar(ad, ad->win, PROGRESSBAR_STYLE,
563 NULL, NULL, storageUg_popup_del, 0, TRUE, TRUE);
566 storageUg_stop_async_worker(ad->del_worker);
567 ad->del_worker = storageUg_start_async_worker(storageUg_misces_delete_files,
568 storageUg_misces_delete_files_cb, ad);
572 ad->popup = setting_create_popup_without_btn(ad, ad->win, NULL,
573 STORAGEUG_STR_NO_SELECTED, storageUg_popup_del,
574 SETTING_STORAGE_POPUP_TIMER, FALSE, FALSE);
578 static void storageUg_misces_delete_cb(void *data, Evas_Object *obj,
581 SettingStorageUG *ad = (SettingStorageUG *) data;
583 ret_if(NULL == data);
585 ad->popup = setting_create_popup_with_btn(ad, ad->win, NULL,
586 STORAGEUG_STR_DELETE_Q, storageUg_misces_delete_resp, 0,
587 2, STORAGEUG_STR_DELETE, STORAGEUG_STR_CANCEL);
590 static void storageUg_misces_sel_all_clicked(void *data, Evas_Object *obj,
594 Evas_Object *toolbar;
595 Node_Info *node = NULL;
596 SettingStorageUG *ad = data;
597 Setting_GenGroupItem_Data *item_data = NULL;
599 ret_if(data == NULL);
601 ad->misces_is_select_all = elm_check_state_get(obj);
603 EINA_LIST_FOREACH(ad->misces_list, l, node)
605 if (node && node->data)
607 item_data = node->data;
610 item_data->chk_status = ad->misces_is_select_all;
611 elm_object_item_data_set(item_data->item, item_data);
612 storageUg_misces_handle_sel_list(ad, node->id, item_data->chk_status);
617 elm_genlist_realized_items_update(ad->gl_misces);
619 if (ad->misces_is_select_all)
621 char text[MAX_DISPLAY_NAME_LEN_ON_UI] = {0};
623 snprintf(text, sizeof(text), _(STORAGEUG_STR_N_SELECTED), ad->misces_sz_all);
624 elm_object_item_part_text_set(ad->misces_navi_it, "subtitle", text);
626 toolbar = elm_object_item_part_content_get(ad->misces_navi_it, "toolbar");
627 elm_object_item_disabled_set(elm_toolbar_last_item_get(toolbar), EINA_FALSE);
628 ad->misces_checked = ad->misces_sz_all;
632 elm_object_item_part_text_set(ad->misces_navi_it, "subtitle", "");
633 elm_object_item_signal_emit(ad->misces_navi_it, "elm,state,subtitle,hide", "elm");
635 toolbar = elm_object_item_part_content_get(ad->misces_navi_it, "toolbar");
636 elm_object_item_disabled_set(elm_toolbar_last_item_get(toolbar), EINA_TRUE);
637 ad->misces_checked = 0;
641 static inline Evas_Object* storageUg_misces_create_sel_all(Evas_Object *parent,
642 SettingStorageUG *ad)
644 Evas_Object *btn, *icon;
646 btn = elm_button_add(parent);
647 elm_object_style_set(btn, "naviframe/title_icon");
649 icon = elm_icon_add(btn);
650 elm_image_file_set(icon, SETTING_ICON_PATH_CFG"select_all.png", NULL);
652 evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_BOTH, 1 , 1);
653 elm_image_resizable_set(icon, EINA_TRUE, EINA_TRUE);
655 elm_object_part_content_set(btn, "icon", icon);
656 evas_object_smart_callback_add(btn, "clicked", storageUg_misces_sel_all_clicked, ad);
658 evas_object_show(btn);
663 storageUg_misces_cancel_cb(void *data, Evas_Object *obj, void *event_info)
666 setting_retm_if(data == NULL,"data is NULL");
667 SettingStorageUG *ad = data;
668 elm_naviframe_item_pop(ad->navi);
672 layout_select_all_down_cb(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
674 Evas_Object *layout = obj;
675 SettingStorageUG *ad = data;
676 Evas_Object *check = elm_object_part_content_get(ad->select_all_layout, "elm.icon");
677 Eina_Bool state = elm_check_state_get(check);
678 elm_check_state_set(check, !state);
679 storageUg_misces_sel_all_clicked(ad, check, NULL);
682 static int storageUg_misces_create(void *data)
684 SettingStorageUG *ad = data;
685 Evas_Object *sel_all = NULL;
687 retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
689 /*first get misc file count*/
690 storageUg_meisces_get_list(ad);
692 if(ad->misces_sz_all>0){
693 Evas_Object *box = elm_box_add(ad->navi);
694 evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
695 evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
697 /*select all layout*/
698 Evas_Object *layout = elm_layout_add(box);
699 elm_layout_theme_set(layout, "genlist", "item", "select_all/default");
700 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
701 evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
702 evas_object_show(layout);
703 ad->select_all_layout = layout;
705 Evas_Object *check = elm_check_add(layout);
706 evas_object_propagate_events_set(check, EINA_FALSE);
707 elm_object_part_content_set(layout, "elm.icon", check);
708 elm_object_part_text_set(layout, "elm.text.main", "Select All");
709 evas_object_smart_callback_add(check, "changed", storageUg_misces_sel_all_clicked, ad);
710 evas_object_event_callback_add(layout, EVAS_CALLBACK_MOUSE_DOWN, layout_select_all_down_cb, ad);
711 evas_object_show(layout);
712 elm_box_pack_end(box,layout);
715 storageUg_misces_add_list(ad);
716 elm_object_focus_set(ad->gl_misces, EINA_TRUE);
717 evas_object_show(ad->gl_misces);
718 elm_box_pack_end(box, ad->gl_misces);
719 evas_object_show(box);
721 ad->misces_navi_it = setting_push_layout_navi_bar(_(STR_DELETE_ITEMS),
722 STORAGEUG_STR_BACK, NULL, NULL,
723 (setting_call_back_func)storageUg_misces_back_cb, storageUg_misces_delete_cb,
724 NULL, ad, box, ad->navi, NULL);
727 /* Title Cancel Button */
728 ad->title_left_btn = elm_button_add(ad->navi);
729 elm_object_style_set(ad->title_left_btn, "naviframe/title_cancel");
730 evas_object_smart_callback_add(ad->title_left_btn, "clicked", storageUg_misces_cancel_cb, ad);
732 /* Title Done Button */
733 ad->title_right_btn = elm_button_add(ad->navi);
734 elm_object_style_set(ad->title_right_btn, "naviframe/title_done");
735 evas_object_smart_callback_add(ad->title_right_btn, "clicked", storageUg_misces_delete_cb, ad);
737 ad->misces_navi_it = setting_push_layout_navi_bar(_(STR_DELETE_ITEMS),
738 STORAGEUG_STR_BACK, NULL, NULL,
739 (setting_call_back_func)storageUg_misces_back_cb, NULL,
740 NULL, ad, NULL, ad->navi, NULL);
741 if (NULL == ad->misces_lo_noitem){
742 ad->misces_lo_noitem = storageUg_misces_no_item(ad->navi);
744 Evas_Object *btn = elm_object_item_part_content_get(ad->misces_navi_it, "title_right_btn");
745 elm_object_disabled_set(btn, EINA_TRUE);
746 ad->gl_misces = NULL;
748 if(ad->misces_lo_noitem){
749 elm_object_item_part_content_set(ad->misces_navi_it, "elm.swallow.content", ad->misces_lo_noitem);
754 setting_view_storage_misc.is_create = 1;
756 return SETTING_RETURN_SUCCESS;
759 static int storageUg_misces_destroy(void *data)
761 SettingStorageUG *ad = data;
763 retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
767 evas_object_del(ad->popup);
773 storageUg_stop_async_worker(ad->del_worker);
774 ad->del_worker = NULL;
779 storageUg_misces_clear_list(ad->misces_list);
780 ad->misces_list = NULL;
783 if (ad->misces_sel_list)
785 storageUg_misces_clear_sel_list(ad->misces_sel_list);
786 ad->misces_sel_list = NULL;
789 ad->misces_navi_it = NULL;
790 ad->gl_misces = NULL;
791 ad->misces_lo_noitem = NULL;
792 ad->misces_checked = 0;
794 setting_view_storage_misc.is_create = 0;
796 return SETTING_RETURN_SUCCESS;
799 static int storageUg_misces_update(void *data)
801 SettingStorageUG *ad = data;
803 retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
805 storageUg_misces_add_list(ad);
807 return SETTING_RETURN_SUCCESS;
810 static int storageUg_misces_cleanup(void *data)
812 return storageUg_misces_destroy(data);
816 void storageUg_misc_init(SettingStorageUG *ad)
819 ret_if(ad->misces_view);
821 setting_view_storage_misc.create = storageUg_misces_create;
822 setting_view_storage_misc.destroy = storageUg_misces_destroy;
823 setting_view_storage_misc.update = storageUg_misces_update;
824 setting_view_storage_misc.cleanup = storageUg_misces_cleanup;
826 ad->misces_view = &setting_view_storage_misc;