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)) {
65 media_info_get_media_id(media, &media_id);
66 media_info_get_display_name(media, &display_name);
68 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);
79 static void storageUg_misces_clear_list(Eina_List *list)
82 Node_Info *node = NULL;
84 EINA_LIST_FOREACH(list, l, node) {
93 static inline void storageUg_meisces_get_list(SettingStorageUG *ad)
97 filter_h filter = NULL;
101 if (ad->misces_list) {
102 storageUg_misces_clear_list(ad->misces_list);
103 ad->misces_list = NULL;
107 condition = "(MEDIA_TYPE=4) and MEDIA_PATH LIKE \'/opt/usr/media/%%\'";
109 condition = "(MEDIA_TYPE=4) and (MEDIA_PATH LIKE \'/opt/usr/media/.tmp_download/%%\'"
110 "or MEDIA_PATH LIKE \'/opt/usr/media/.video-hub/%%\'"
111 "or MEDIA_PATH LIKE \'/opt/usr/media/Camera/%%\'"
112 "or MEDIA_PATH LIKE \'/opt/usr/media/Downloads/%%\'"
113 "or MEDIA_PATH LIKE \'/opt/usr/media/Images/%%\'"
114 "or MEDIA_PATH LIKE \'/opt/usr/media/Others/%%\'"
115 "or MEDIA_PATH LIKE \'/opt/usr/media/Sounds/%%\'"
116 "or MEDIA_PATH LIKE \'/opt/usr/media/Videos/%%\'"
117 "or MEDIA_PATH LIKE \'/opt/usr/media/lost+found/%%\')";
121 ret = media_filter_create(&filter);
122 if (ret != MEDIA_CONTENT_ERROR_NONE) {
123 SETTING_TRACE_ERROR("media_filter_create() Fail(%d)", ret);
126 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
127 if (ret != MEDIA_CONTENT_ERROR_NONE) {
128 media_filter_destroy(filter);
129 SETTING_TRACE_ERROR("media_filter_set_condition() Fail(%d)", ret);
133 ret = media_info_foreach_media_from_db(filter, storageUg_misces_media_item_cb, ad);
134 if (ret != MEDIA_CONTENT_ERROR_NONE) {
135 media_filter_destroy(filter);
136 SETTING_TRACE_ERROR("media_info_foreach_media_from_db() Fail(%d)", ret);
140 ret = media_filter_destroy(filter);
141 if (ret != MEDIA_CONTENT_ERROR_NONE) {
142 SETTING_TRACE_ERROR("media_filter_destroy() Fail(%d)", ret);
146 ad->misces_sz_all = eina_list_count(ad->misces_list);;
149 static void storageUg_misces_handle_selecting(SettingStorageUG *ad)
151 Evas_Object *toolbar;
155 if (ad->misces_checked == ad->misces_sz_all)
156 ad->misces_is_select_all = EINA_TRUE;
158 ad->misces_is_select_all = EINA_FALSE;
160 /* text set and timeout set */
161 if (0 < ad->misces_checked) {
162 char text[MAX_DISPLAY_NAME_LEN_ON_UI] = {0};
164 snprintf(text, sizeof(text), _(STORAGEUG_STR_N_SELECTED), ad->misces_checked);
165 elm_object_item_part_text_set(ad->misces_navi_it, "subtitle", text);
167 toolbar = elm_object_item_part_content_get(ad->misces_navi_it, "toolbar");
168 elm_object_item_disabled_set(elm_toolbar_last_item_get(toolbar), EINA_FALSE);
170 elm_object_item_part_text_set(ad->misces_navi_it, "subtitle", "");
171 elm_object_item_signal_emit(ad->misces_navi_it, "elm,state,subtitle,hide", "elm");
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_TRUE);
178 static int storageUg_compare_str(const void *data1, const void *data2)
180 return safeStrCmp(data1, data2);
183 static void storageUg_misces_handle_sel_list(SettingStorageUG *ad, char *id,
187 ad->misces_checked++;
188 ad->misces_sel_list = eina_list_append(ad->misces_sel_list, strdup(id));
192 ad->misces_checked--;
193 found = eina_list_search_unsorted_list(ad->misces_sel_list, storageUg_compare_str,
195 free(eina_list_data_get(found));
196 ad->misces_sel_list = eina_list_remove_list(ad->misces_sel_list, found);
199 /*update select all check state*/
200 Evas_Object *check = elm_object_part_content_get(ad->select_all_layout, "elm.icon");
201 if (ad->misces_checked >= ad->misces_sz_all) {
202 elm_check_state_set(check, EINA_TRUE);
204 elm_check_state_set(check, EINA_FALSE);
206 /*update delete item buttons*/
207 if (ad->misces_checked > 0) {
208 if (ad->misces_navi_it && elm_object_item_part_content_get(ad->misces_navi_it, "title_left_btn") == NULL) {
209 elm_object_item_part_content_set(ad->misces_navi_it, "title_left_btn", ad->title_left_btn);
211 if (ad->misces_navi_it && elm_object_item_part_content_get(ad->misces_navi_it, "title_right_btn") == NULL) {
212 elm_object_item_part_content_set(ad->misces_navi_it, "title_right_btn", ad->title_right_btn);
215 if (ad->misces_navi_it && elm_object_item_part_content_get(ad->misces_navi_it, "title_left_btn") != NULL) {
216 elm_object_item_part_content_unset(ad->misces_navi_it, "title_left_btn");
217 evas_object_hide(ad->title_left_btn);
219 if (ad->misces_navi_it && elm_object_item_part_content_get(ad->misces_navi_it, "title_right_btn") != NULL) {
220 elm_object_item_part_content_unset(ad->misces_navi_it, "title_right_btn");
221 evas_object_hide(ad->title_right_btn);
226 static void storageUg_misces_genlist_sel(void *data, Evas_Object *obj,
230 SettingStorageUG *ad = data;
231 Elm_Object_Item *item = event_info;
232 Setting_GenGroupItem_Data *d_item;
234 ret_if(data == NULL);
236 elm_genlist_item_selected_set(item, 0);
237 d_item = elm_object_item_data_get(item);
238 node = d_item->userdata;
240 setting_update_gl_item_chk_status(d_item, !(d_item->chk_status));
242 storageUg_misces_handle_sel_list(ad, node->id, d_item->chk_status);
243 storageUg_misces_handle_selecting(ad);
246 static void storageUg_misces_genlist_chk_cb(void *data, Evas_Object *obj,
250 SettingStorageUG *ad;
251 Setting_GenGroupItem_Data *d_item = data;
253 ret_if(data == NULL);
255 node = d_item->userdata;
257 d_item->chk_status = elm_check_state_get(obj);
259 storageUg_misces_handle_sel_list(ad, node->id, d_item->chk_status);
260 storageUg_misces_handle_selecting(ad);
263 static inline Evas_Object *storageUg_misces_no_item(Evas_Object *parent)
265 Evas_Object *layout, *icon;
267 layout = elm_layout_add(parent);
268 elm_layout_theme_set(layout, "layout", "nocontents", "default");
269 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
270 evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
272 icon = elm_image_add(layout);
273 elm_image_file_set(icon, SETTING_ICON_PATH_CFG "/00_nocontents_text.png", NULL);
274 elm_object_part_content_set(layout, "nocontents.image", icon);
276 elm_object_domain_translatable_part_text_set(layout, "elm.text", SYSTEM_PACKAGE,
277 STORAGEUG_STR_NO_FILES);
278 elm_layout_signal_emit(layout, "text,disabled", "");
283 static inline void storageUg_misces_clear_sel_list(Eina_List *list)
288 EINA_LIST_FOREACH(list, l, node)
290 eina_list_free(list);
293 static inline void storageUg_misces_gl_append_items(SettingStorageUG *ad)
297 Eina_List *found, *cur, *tmp_sel_list;
298 Setting_GenGroupItem_Data *item_data = NULL;
300 tmp_sel_list = ad->misces_sel_list;
301 ad->misces_sel_list = NULL;
303 EINA_LIST_FOREACH(ad->misces_list, cur, node) {
307 found = eina_list_search_unsorted_list(tmp_sel_list, storageUg_compare_str,
311 storageUg_misces_handle_sel_list(ad, node->id, 1);
316 item_data = setting_create_Gendial_field_def(ad->gl_misces,
317 &(itc_1text_1icon), storageUg_misces_genlist_sel, ad,
318 SWALLOW_Type_1CHECK_RIGHT, NULL, NULL, checked, node->name, node->path,
319 storageUg_misces_genlist_chk_cb);
322 item_data->userdata = node;
323 node->data = item_data;
326 SETTING_TRACE_ERROR("item_data is NULL");
329 storageUg_misces_handle_selecting(ad);
330 storageUg_misces_clear_sel_list(tmp_sel_list);
333 static inline Evas_Object *storageUg_misces_genlist(Evas_Object *parent)
335 Evas_Object *genlist;
337 genlist = elm_genlist_add(parent);
338 if (NULL == genlist) {
339 SETTING_TRACE_ERROR("elm_genlist_add() Fail");
343 evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
344 evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
345 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
346 elm_scroller_policy_set(genlist, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
347 evas_object_show(genlist);
349 evas_object_smart_callback_add(genlist, "realized", __gl_realized_cb, NULL);
354 static void storageUg_misces_delete_list(SettingStorageUG *ad)
356 SETTING_TRACE("Entering storageUg_misces_delete_list");
360 ad->misces_checked = 0;
361 Setting_GenGroupItem_Data *item_data = NULL;
362 Elm_Object_Item *it = elm_genlist_first_item_get(ad->gl_misces);
365 item_data = elm_object_item_data_get(it);
366 it = elm_genlist_item_next_get(it);
367 if (item_data != NULL) {
368 SETTING_TRACE("chk_status: %d", item_data->chk_status);
369 if (item_data->chk_status) {
370 elm_object_item_del(item_data->item);
371 Node_Info *node = item_data->userdata;
372 ad->misces_list = eina_list_remove(ad->misces_list, node);
381 ad->misces_sz_all = eina_list_count(ad->misces_list);
383 SETTING_TRACE("ad->misces_sz_all - %d", ad->misces_sz_all);
384 if (0 == ad->misces_sz_all) {
386 if (elm_object_item_part_content_get(ad->misces_navi_it, "title_right_btn")) {
387 Evas_Object *btn_done = elm_object_item_part_content_unset(ad->misces_navi_it, "title_right_btn");
388 evas_object_hide(btn_done);
391 if (elm_object_item_part_content_get(ad->misces_navi_it, "title_left_btn")) {
392 Evas_Object *btn_cancel = elm_object_item_part_content_unset(ad->misces_navi_it, "title_left_btn");
393 evas_object_hide(btn_cancel);
395 if (NULL == ad->misces_lo_noitem) {
396 ad->misces_lo_noitem = storageUg_misces_no_item(ad->navi);
400 ad->gl_misces = NULL;
402 if (ad->misces_lo_noitem) {
403 elm_object_item_part_content_set(ad->misces_navi_it, "elm.swallow.content", ad->misces_lo_noitem);
409 static void storageUg_misces_add_list(SettingStorageUG *ad)
411 Evas_Object *toolbar, *btn;
412 Evas_Object *lo_new = NULL;
416 ad->misces_checked = 0;
417 ad->misces_is_select_all = EINA_FALSE;
419 if (0 == ad->misces_sz_all) {
420 if (NULL == ad->misces_lo_noitem) {
421 lo_new = ad->misces_lo_noitem = storageUg_misces_no_item(ad->navi);
423 btn = elm_object_item_part_content_get(ad->misces_navi_it, "title_right_btn");
424 elm_object_disabled_set(btn, EINA_TRUE);
425 ad->gl_misces = NULL;
429 elm_genlist_clear(ad->gl_misces);
431 lo_new = ad->gl_misces = storageUg_misces_genlist(ad->navi);
433 storageUg_misces_gl_append_items(ad);
434 ad->misces_lo_noitem = NULL;
438 elm_object_item_part_content_set(ad->misces_navi_it, "elm.swallow.content",
442 if (0 == ad->misces_checked) {
443 toolbar = elm_object_item_part_content_get(ad->misces_navi_it, "toolbar");
444 elm_object_item_disabled_set(elm_toolbar_last_item_get(toolbar), EINA_TRUE);
448 void storageUg_misces_delete_files_cb(int fn_result, SettingStorageUG *ad)
452 ad->del_worker = NULL;
455 SETTING_TRACE("After deleting, updating the file list");
456 /* storageUg_misces_add_list(ad); */
457 storageUg_misces_delete_list(ad);
459 if (SETTING_RETURN_SUCCESS != fn_result) {
460 SETTING_TRACE_ERROR("storageUg_misces_delete_files() Fail(%d)", fn_result);
461 storageUg_fail_popup(ad);
466 evas_object_del(ad->popup);
470 if (ad->misces_navi_it) {
471 elm_object_item_part_text_set(ad->misces_navi_it, "subtitle", "");
472 elm_object_item_signal_emit(ad->misces_navi_it, "elm,state,subtitle,hide", "elm");
476 static int storageUg_misces_delete_files(SettingStorageUG *ad)
479 Node_Info *node = NULL;
480 Setting_GenGroupItem_Data *item_data = NULL;
482 retv_if(NULL == ad, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
484 EINA_LIST_FOREACH(ad->misces_list, l, node) {
486 item_data = node->data;
488 if (!item_data->chk_status)
491 if (EINA_TRUE == ecore_file_remove(node->path)) {
492 media_content_scan_file(node->path);
494 SETTING_TRACE_ERROR("failed to ecore_file_remove");
495 return SETTING_RETURN_FAIL;
498 storageUG_STOP_POINT;
501 return SETTING_RETURN_SUCCESS;
504 static void storageUg_misces_delete_resp(void *data, Evas_Object *obj,
508 SettingStorageUG *ad = data;
510 ret_if(NULL == data);
513 response_type = btn_type(obj);
516 evas_object_del(ad->popup);
520 if (POPUP_RESPONSE_OK != response_type) {
521 SETTING_TRACE("CANCEL");
525 if (ad->misces_checked) {
526 ad->popup = setting_create_popup_with_progressbar(ad, ad->win, PROGRESSBAR_STYLE,
527 NULL, NULL, storageUg_popup_del, 0, TRUE, TRUE);
530 storageUg_stop_async_worker(ad->del_worker);
531 ad->del_worker = storageUg_start_async_worker(storageUg_misces_delete_files,
532 storageUg_misces_delete_files_cb, ad);
534 ad->popup = setting_create_popup_without_btn(ad, ad->win, NULL,
535 STORAGEUG_STR_NO_SELECTED, storageUg_popup_del,
536 SETTING_STORAGE_POPUP_TIMER, FALSE, FALSE);
540 static void storageUg_misces_delete_cb(void *data, Evas_Object *obj,
543 SettingStorageUG *ad = (SettingStorageUG *) data;
545 ret_if(NULL == data);
547 ad->popup = setting_create_popup_with_btn(ad, ad->win, NULL,
548 STORAGEUG_STR_DELETE_Q, storageUg_misces_delete_resp, 0,
549 2, STORAGEUG_STR_DELETE, STORAGEUG_STR_CANCEL);
552 static void storageUg_misces_sel_all_clicked(void *data, Evas_Object *obj,
556 Evas_Object *toolbar;
557 Node_Info *node = NULL;
558 SettingStorageUG *ad = data;
559 Setting_GenGroupItem_Data *item_data = NULL;
561 ret_if(data == NULL);
563 ad->misces_is_select_all = elm_check_state_get(obj);
565 EINA_LIST_FOREACH(ad->misces_list, l, node) {
566 if (node && node->data) {
567 item_data = node->data;
569 item_data->chk_status = ad->misces_is_select_all;
570 elm_object_item_data_set(item_data->item, item_data);
571 storageUg_misces_handle_sel_list(ad, node->id, item_data->chk_status);
576 elm_genlist_realized_items_update(ad->gl_misces);
578 if (ad->misces_is_select_all) {
579 char text[MAX_DISPLAY_NAME_LEN_ON_UI] = {0};
581 snprintf(text, sizeof(text), _(STORAGEUG_STR_N_SELECTED), ad->misces_sz_all);
582 elm_object_item_part_text_set(ad->misces_navi_it, "subtitle", text);
584 toolbar = elm_object_item_part_content_get(ad->misces_navi_it, "toolbar");
585 elm_object_item_disabled_set(elm_toolbar_last_item_get(toolbar), EINA_FALSE);
586 ad->misces_checked = ad->misces_sz_all;
588 elm_object_item_part_text_set(ad->misces_navi_it, "subtitle", "");
589 elm_object_item_signal_emit(ad->misces_navi_it, "elm,state,subtitle,hide", "elm");
591 toolbar = elm_object_item_part_content_get(ad->misces_navi_it, "toolbar");
592 elm_object_item_disabled_set(elm_toolbar_last_item_get(toolbar), EINA_TRUE);
593 ad->misces_checked = 0;
597 static inline Evas_Object *storageUg_misces_create_sel_all(Evas_Object *parent,
598 SettingStorageUG *ad)
600 Evas_Object *btn, *icon;
602 btn = elm_button_add(parent);
603 elm_object_style_set(btn, "naviframe/title_icon");
605 icon = elm_icon_add(btn);
606 elm_image_file_set(icon, SETTING_ICON_PATH_CFG"select_all.png", NULL);
608 evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_BOTH, 1 , 1);
609 elm_image_resizable_set(icon, EINA_TRUE, EINA_TRUE);
611 elm_object_part_content_set(btn, "icon", icon);
612 evas_object_smart_callback_add(btn, "clicked", storageUg_misces_sel_all_clicked, ad);
614 evas_object_show(btn);
619 storageUg_misces_cancel_cb(void *data, Evas_Object *obj, void *event_info)
622 setting_retm_if(data == NULL, "data is NULL");
623 SettingStorageUG *ad = data;
624 elm_naviframe_item_pop(ad->navi);
628 layout_select_all_down_cb(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
630 Evas_Object *layout = obj;
631 SettingStorageUG *ad = data;
632 Evas_Object *check = elm_object_part_content_get(ad->select_all_layout, "elm.icon");
633 Eina_Bool state = elm_check_state_get(check);
634 elm_check_state_set(check, !state);
635 storageUg_misces_sel_all_clicked(ad, check, NULL);
638 static int storageUg_misces_create(void *data)
640 SettingStorageUG *ad = data;
641 Evas_Object *sel_all = NULL;
643 retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
645 /*first get misc file count*/
646 storageUg_meisces_get_list(ad);
648 if (ad->misces_sz_all > 0) {
649 Evas_Object *box = elm_box_add(ad->navi);
650 evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
651 evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
653 /*select all layout*/
654 Evas_Object *layout = elm_layout_add(box);
655 elm_layout_theme_set(layout, "genlist", "item", "select_all/default");
656 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
657 evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
658 evas_object_show(layout);
659 ad->select_all_layout = layout;
661 Evas_Object *check = elm_check_add(layout);
662 evas_object_propagate_events_set(check, EINA_FALSE);
663 elm_object_part_content_set(layout, "elm.icon", check);
664 elm_object_part_text_set(layout, "elm.text.main", "Select All");
665 evas_object_smart_callback_add(check, "changed", storageUg_misces_sel_all_clicked, ad);
666 evas_object_event_callback_add(layout, EVAS_CALLBACK_MOUSE_DOWN, layout_select_all_down_cb, ad);
667 evas_object_show(layout);
668 elm_box_pack_end(box, layout);
671 storageUg_misces_add_list(ad);
672 elm_object_focus_set(ad->gl_misces, EINA_TRUE);
673 evas_object_show(ad->gl_misces);
674 elm_box_pack_end(box, ad->gl_misces);
675 evas_object_show(box);
677 ad->misces_navi_it = setting_push_layout_navi_bar(_(STR_DELETE_ITEMS),
678 STORAGEUG_STR_BACK, NULL, NULL,
679 (setting_call_back_func)storageUg_misces_back_cb, storageUg_misces_delete_cb,
680 NULL, ad, box, ad->navi, NULL);
683 /* Title Cancel Button */
684 ad->title_left_btn = elm_button_add(ad->navi);
685 elm_object_style_set(ad->title_left_btn, "naviframe/title_cancel");
686 evas_object_smart_callback_add(ad->title_left_btn, "clicked", storageUg_misces_cancel_cb, ad);
688 /* Title Done Button */
689 ad->title_right_btn = elm_button_add(ad->navi);
690 elm_object_style_set(ad->title_right_btn, "naviframe/title_done");
691 evas_object_smart_callback_add(ad->title_right_btn, "clicked", storageUg_misces_delete_cb, ad);
693 ad->misces_navi_it = setting_push_layout_navi_bar(_(STR_DELETE_ITEMS),
694 STORAGEUG_STR_BACK, NULL, NULL,
695 (setting_call_back_func)storageUg_misces_back_cb, NULL,
696 NULL, ad, NULL, ad->navi, NULL);
697 if (NULL == ad->misces_lo_noitem) {
698 ad->misces_lo_noitem = storageUg_misces_no_item(ad->navi);
700 Evas_Object *btn = elm_object_item_part_content_get(ad->misces_navi_it, "title_right_btn");
701 elm_object_disabled_set(btn, EINA_TRUE);
702 ad->gl_misces = NULL;
704 if (ad->misces_lo_noitem) {
705 elm_object_item_part_content_set(ad->misces_navi_it, "elm.swallow.content", ad->misces_lo_noitem);
710 setting_view_storage_misc.is_create = 1;
712 return SETTING_RETURN_SUCCESS;
715 static int storageUg_misces_destroy(void *data)
717 SettingStorageUG *ad = data;
719 retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
722 evas_object_del(ad->popup);
726 if (ad->del_worker) {
727 storageUg_stop_async_worker(ad->del_worker);
728 ad->del_worker = NULL;
731 if (ad->misces_list) {
732 storageUg_misces_clear_list(ad->misces_list);
733 ad->misces_list = NULL;
736 if (ad->misces_sel_list) {
737 storageUg_misces_clear_sel_list(ad->misces_sel_list);
738 ad->misces_sel_list = NULL;
741 ad->misces_navi_it = NULL;
742 ad->gl_misces = NULL;
743 ad->misces_lo_noitem = NULL;
744 ad->misces_checked = 0;
746 setting_view_storage_misc.is_create = 0;
748 return SETTING_RETURN_SUCCESS;
751 static int storageUg_misces_update(void *data)
753 SettingStorageUG *ad = data;
755 retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
757 storageUg_misces_add_list(ad);
759 return SETTING_RETURN_SUCCESS;
762 static int storageUg_misces_cleanup(void *data)
764 return storageUg_misces_destroy(data);
768 void storageUg_misc_init(SettingStorageUG *ad)
771 ret_if(ad->misces_view);
773 setting_view_storage_misc.create = storageUg_misces_create;
774 setting_view_storage_misc.destroy = storageUg_misces_destroy;
775 setting_view_storage_misc.update = storageUg_misces_update;
776 setting_view_storage_misc.cleanup = storageUg_misces_cleanup;
778 ad->misces_view = &setting_view_storage_misc;