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));
70 node->id = strdup(media_id);
71 node->path = strdup(file_path);
72 node->name = strdup(display_name);
73 ad->misces_list = eina_list_append(ad->misces_list, node);
82 static void storageUg_misces_clear_list(Eina_List *list)
85 Node_Info *node = NULL;
87 EINA_LIST_FOREACH(list, l, node) {
96 static inline void storageUg_meisces_get_list(SettingStorageUG *ad)
100 filter_h filter = NULL;
104 if (ad->misces_list) {
105 storageUg_misces_clear_list(ad->misces_list);
106 ad->misces_list = NULL;
110 condition = "(MEDIA_TYPE=4) and MEDIA_PATH LIKE \'/opt/usr/media/%%\'";
112 condition = "(MEDIA_TYPE=4) and (MEDIA_PATH LIKE \'/opt/usr/media/.tmp_download/%%\'"
113 "or MEDIA_PATH LIKE \'/opt/usr/media/.video-hub/%%\'"
114 "or MEDIA_PATH LIKE \'/opt/usr/media/Camera/%%\'"
115 "or MEDIA_PATH LIKE \'/opt/usr/media/Downloads/%%\'"
116 "or MEDIA_PATH LIKE \'/opt/usr/media/Images/%%\'"
117 "or MEDIA_PATH LIKE \'/opt/usr/media/Others/%%\'"
118 "or MEDIA_PATH LIKE \'/opt/usr/media/Sounds/%%\'"
119 "or MEDIA_PATH LIKE \'/opt/usr/media/Videos/%%\'"
120 "or MEDIA_PATH LIKE \'/opt/usr/media/lost+found/%%\')";
124 ret = media_filter_create(&filter);
125 if (ret != MEDIA_CONTENT_ERROR_NONE) {
126 SETTING_TRACE_ERROR("media_filter_create() Fail(%d)", ret);
129 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
130 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) {
138 media_filter_destroy(filter);
139 SETTING_TRACE_ERROR("media_info_foreach_media_from_db() Fail(%d)", ret);
143 ret = media_filter_destroy(filter);
144 if (ret != MEDIA_CONTENT_ERROR_NONE) {
145 SETTING_TRACE_ERROR("media_filter_destroy() Fail(%d)", ret);
149 ad->misces_sz_all = eina_list_count(ad->misces_list);;
152 static void storageUg_misces_handle_selecting(SettingStorageUG *ad)
154 Evas_Object *toolbar;
158 if (ad->misces_checked == ad->misces_sz_all)
159 ad->misces_is_select_all = EINA_TRUE;
161 ad->misces_is_select_all = EINA_FALSE;
163 /* text set and timeout set */
164 if (0 < ad->misces_checked) {
165 char text[MAX_DISPLAY_NAME_LEN_ON_UI] = {0};
167 snprintf(text, sizeof(text), _(STORAGEUG_STR_N_SELECTED), ad->misces_checked);
168 elm_object_item_part_text_set(ad->misces_navi_it, "subtitle", text);
170 toolbar = elm_object_item_part_content_get(ad->misces_navi_it, "toolbar");
171 elm_object_item_disabled_set(elm_toolbar_last_item_get(toolbar), EINA_FALSE);
173 elm_object_item_part_text_set(ad->misces_navi_it, "subtitle", "");
174 elm_object_item_signal_emit(ad->misces_navi_it, "elm,state,subtitle,hide", "elm");
176 toolbar = elm_object_item_part_content_get(ad->misces_navi_it, "toolbar");
177 elm_object_item_disabled_set(elm_toolbar_last_item_get(toolbar), EINA_TRUE);
181 static int storageUg_compare_str(const void *data1, const void *data2)
183 return safeStrCmp(data1, data2);
186 static void storageUg_misces_handle_sel_list(SettingStorageUG *ad, char *id,
190 ad->misces_checked++;
191 ad->misces_sel_list = eina_list_append(ad->misces_sel_list, strdup(id));
195 ad->misces_checked--;
196 found = eina_list_search_unsorted_list(ad->misces_sel_list, storageUg_compare_str,
198 free(eina_list_data_get(found));
199 ad->misces_sel_list = eina_list_remove_list(ad->misces_sel_list, found);
202 /*update select all check state*/
203 Evas_Object *check = elm_object_part_content_get(ad->select_all_layout, "elm.icon");
204 if (ad->misces_checked >= ad->misces_sz_all) {
205 elm_check_state_set(check, EINA_TRUE);
207 elm_check_state_set(check, EINA_FALSE);
209 /*update delete item buttons*/
210 if (ad->misces_checked > 0) {
211 if (ad->misces_navi_it && elm_object_item_part_content_get(ad->misces_navi_it, "title_left_btn") == NULL) {
212 elm_object_item_part_content_set(ad->misces_navi_it, "title_left_btn", ad->title_left_btn);
214 if (ad->misces_navi_it && elm_object_item_part_content_get(ad->misces_navi_it, "title_right_btn") == NULL) {
215 elm_object_item_part_content_set(ad->misces_navi_it, "title_right_btn", ad->title_right_btn);
218 if (ad->misces_navi_it && elm_object_item_part_content_get(ad->misces_navi_it, "title_left_btn") != NULL) {
219 elm_object_item_part_content_unset(ad->misces_navi_it, "title_left_btn");
220 evas_object_hide(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_unset(ad->misces_navi_it, "title_right_btn");
224 evas_object_hide(ad->title_right_btn);
229 static void storageUg_misces_genlist_sel(void *data, Evas_Object *obj,
233 SettingStorageUG *ad = data;
234 Elm_Object_Item *item = event_info;
235 Setting_GenGroupItem_Data *d_item = NULL;
237 ret_if(data == NULL);
239 elm_genlist_item_selected_set(item, 0);
240 d_item = elm_object_item_data_get(item);
242 node = d_item->userdata;
244 setting_update_gl_item_chk_status(d_item, !(d_item->chk_status));
246 storageUg_misces_handle_sel_list(ad, node->id, d_item->chk_status);
247 storageUg_misces_handle_selecting(ad);
251 static void storageUg_misces_genlist_chk_cb(void *data, Evas_Object *obj,
255 SettingStorageUG *ad;
256 Setting_GenGroupItem_Data *d_item = data;
258 ret_if(data == NULL);
260 node = d_item->userdata;
262 d_item->chk_status = elm_check_state_get(obj);
264 storageUg_misces_handle_sel_list(ad, node->id, d_item->chk_status);
265 storageUg_misces_handle_selecting(ad);
268 static inline Evas_Object *storageUg_misces_no_item(Evas_Object *parent)
270 Evas_Object *layout, *icon;
272 layout = elm_layout_add(parent);
273 elm_layout_theme_set(layout, "layout", "nocontents", "default");
274 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
275 evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
277 icon = elm_image_add(layout);
278 elm_image_file_set(icon, SETTING_ICON_PATH_CFG "/00_nocontents_text.png", NULL);
279 elm_object_part_content_set(layout, "nocontents.image", icon);
281 elm_object_domain_translatable_part_text_set(layout, "elm.text", SETTING_PACKAGE,
282 STORAGEUG_STR_NO_FILES);
283 elm_layout_signal_emit(layout, "text,disabled", "");
288 static inline void storageUg_misces_clear_sel_list(Eina_List *list)
293 EINA_LIST_FOREACH(list, l, node)
295 eina_list_free(list);
298 static inline void storageUg_misces_gl_append_items(SettingStorageUG *ad)
302 Eina_List *found, *cur, *tmp_sel_list;
303 Setting_GenGroupItem_Data *item_data = NULL;
305 tmp_sel_list = ad->misces_sel_list;
306 ad->misces_sel_list = NULL;
308 EINA_LIST_FOREACH(ad->misces_list, cur, node) {
312 found = eina_list_search_unsorted_list(tmp_sel_list, storageUg_compare_str,
316 storageUg_misces_handle_sel_list(ad, node->id, 1);
321 item_data = setting_create_Gendial_field_def(ad->gl_misces,
322 &(itc_1text_1icon), storageUg_misces_genlist_sel, ad,
323 SWALLOW_Type_1CHECK_RIGHT, NULL, NULL, checked, node->name, node->path,
324 storageUg_misces_genlist_chk_cb);
327 item_data->userdata = node;
328 node->data = item_data;
331 SETTING_TRACE_ERROR("item_data is NULL");
334 storageUg_misces_handle_selecting(ad);
335 storageUg_misces_clear_sel_list(tmp_sel_list);
338 static inline Evas_Object *storageUg_misces_genlist(Evas_Object *parent)
340 Evas_Object *genlist;
342 genlist = elm_genlist_add(parent);
343 if (NULL == genlist) {
344 SETTING_TRACE_ERROR("elm_genlist_add() Fail");
348 evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
349 evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
350 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
351 elm_scroller_policy_set(genlist, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
352 evas_object_show(genlist);
354 evas_object_smart_callback_add(genlist, "realized", __gl_realized_cb, NULL);
359 static void storageUg_misces_delete_list(SettingStorageUG *ad)
361 SETTING_TRACE("Entering storageUg_misces_delete_list");
365 ad->misces_checked = 0;
366 Setting_GenGroupItem_Data *item_data = NULL;
367 Elm_Object_Item *it = elm_genlist_first_item_get(ad->gl_misces);
370 item_data = elm_object_item_data_get(it);
371 it = elm_genlist_item_next_get(it);
372 if (item_data != NULL) {
373 SETTING_TRACE("chk_status: %d", item_data->chk_status);
374 if (item_data->chk_status) {
375 elm_object_item_del(item_data->item);
376 Node_Info *node = item_data->userdata;
377 ad->misces_list = eina_list_remove(ad->misces_list, node);
386 ad->misces_sz_all = eina_list_count(ad->misces_list);
388 SETTING_TRACE("ad->misces_sz_all - %d", ad->misces_sz_all);
389 if (0 == ad->misces_sz_all) {
391 if (elm_object_item_part_content_get(ad->misces_navi_it, "title_right_btn")) {
392 Evas_Object *btn_done = elm_object_item_part_content_unset(ad->misces_navi_it, "title_right_btn");
393 evas_object_hide(btn_done);
396 if (elm_object_item_part_content_get(ad->misces_navi_it, "title_left_btn")) {
397 Evas_Object *btn_cancel = elm_object_item_part_content_unset(ad->misces_navi_it, "title_left_btn");
398 evas_object_hide(btn_cancel);
400 if (NULL == ad->misces_lo_noitem) {
401 ad->misces_lo_noitem = storageUg_misces_no_item(ad->navi);
405 ad->gl_misces = NULL;
407 if (ad->misces_lo_noitem) {
408 elm_object_item_part_content_set(ad->misces_navi_it, "elm.swallow.content", ad->misces_lo_noitem);
414 static void storageUg_misces_add_list(SettingStorageUG *ad)
416 Evas_Object *toolbar, *btn;
417 Evas_Object *lo_new = NULL;
419 SETTING_TRACE("Entering storageUg_misces_add_list");
423 ad->misces_checked = 0;
424 ad->misces_is_select_all = EINA_FALSE;
426 if (0 == ad->misces_sz_all) {
427 if (NULL == ad->misces_lo_noitem) {
428 lo_new = ad->misces_lo_noitem = storageUg_misces_no_item(ad->navi);
430 btn = elm_object_item_part_content_get(ad->misces_navi_it, "title_right_btn");
432 elm_object_disabled_set(btn, EINA_TRUE);
433 ad->gl_misces = NULL;
437 elm_genlist_clear(ad->gl_misces);
439 lo_new = ad->gl_misces = storageUg_misces_genlist(ad->navi);
441 storageUg_misces_gl_append_items(ad);
442 ad->misces_lo_noitem = NULL;
446 elm_object_item_part_content_set(ad->misces_navi_it, "elm.swallow.content", lo_new);
449 if (0 == ad->misces_checked) {
450 toolbar = elm_object_item_part_content_get(ad->misces_navi_it, "toolbar");
452 elm_object_item_disabled_set(elm_toolbar_last_item_get(toolbar), EINA_TRUE);
456 void storageUg_misces_delete_files_cb(int fn_result, SettingStorageUG *ad)
460 ad->del_worker = NULL;
463 SETTING_TRACE("After deleting, updating the file list");
464 /* storageUg_misces_add_list(ad); */
465 storageUg_misces_delete_list(ad);
467 if (SETTING_RETURN_SUCCESS != fn_result) {
468 SETTING_TRACE_ERROR("storageUg_misces_delete_files() Fail(%d)", fn_result);
469 storageUg_fail_popup(ad);
474 evas_object_del(ad->popup);
478 if (ad->misces_navi_it) {
479 elm_object_item_part_text_set(ad->misces_navi_it, "subtitle", "");
480 elm_object_item_signal_emit(ad->misces_navi_it, "elm,state,subtitle,hide", "elm");
484 static int storageUg_misces_delete_files(SettingStorageUG *ad)
487 Node_Info *node = NULL;
488 Setting_GenGroupItem_Data *item_data = NULL;
490 retv_if(NULL == ad, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
492 EINA_LIST_FOREACH(ad->misces_list, l, node) {
494 item_data = node->data;
496 if (!item_data->chk_status)
499 if (EINA_TRUE == ecore_file_remove(node->path)) {
500 media_content_scan_file(node->path);
502 SETTING_TRACE_ERROR("failed to ecore_file_remove");
503 return SETTING_RETURN_FAIL;
506 storageUG_STOP_POINT;
509 return SETTING_RETURN_SUCCESS;
512 static void storageUg_misces_delete_resp(void *data, Evas_Object *obj,
516 SettingStorageUG *ad = data;
518 ret_if(NULL == data);
521 response_type = btn_type(obj);
524 evas_object_del(ad->popup);
528 if (POPUP_RESPONSE_OK != response_type) {
529 SETTING_TRACE("CANCEL");
533 if (ad->misces_checked) {
534 ad->popup = setting_create_popup_with_progressbar(ad, ad->win, PROGRESSBAR_STYLE,
535 NULL, NULL, storageUg_popup_del, 0, TRUE, TRUE, 0);
538 storageUg_stop_async_worker(ad->del_worker);
539 ad->del_worker = storageUg_start_async_worker(storageUg_misces_delete_files,
540 storageUg_misces_delete_files_cb, ad);
542 ad->popup = setting_create_popup(ad, ad->win, NULL,
543 STORAGEUG_STR_NO_SELECTED, storageUg_popup_del,
544 SETTING_STORAGE_POPUP_TIMER, FALSE, FALSE, 0);
548 static void storageUg_misces_delete_cb(void *data, Evas_Object *obj,
551 SettingStorageUG *ad = (SettingStorageUG *) data;
553 ret_if(NULL == data);
555 ad->popup = setting_create_popup(ad, ad->win, NULL,
556 STORAGEUG_STR_DELETE_Q, storageUg_misces_delete_resp,
558 2, STORAGEUG_STR_DELETE, STORAGEUG_STR_CANCEL);
561 static void storageUg_misces_sel_all_clicked(void *data, Evas_Object *obj,
565 Evas_Object *toolbar;
566 Node_Info *node = NULL;
567 SettingStorageUG *ad = data;
568 Setting_GenGroupItem_Data *item_data = NULL;
570 ret_if(data == NULL);
572 ad->misces_is_select_all = elm_check_state_get(obj);
574 EINA_LIST_FOREACH(ad->misces_list, l, node) {
575 if (node && node->data) {
576 item_data = node->data;
578 item_data->chk_status = ad->misces_is_select_all;
579 elm_object_item_data_set(item_data->item, item_data);
580 storageUg_misces_handle_sel_list(ad, node->id, item_data->chk_status);
585 elm_genlist_realized_items_update(ad->gl_misces);
587 if (ad->misces_is_select_all) {
588 char text[MAX_DISPLAY_NAME_LEN_ON_UI] = {0};
590 snprintf(text, sizeof(text), _(STORAGEUG_STR_N_SELECTED), ad->misces_sz_all);
591 elm_object_item_part_text_set(ad->misces_navi_it, "subtitle", text);
593 toolbar = elm_object_item_part_content_get(ad->misces_navi_it, "toolbar");
594 elm_object_item_disabled_set(elm_toolbar_last_item_get(toolbar), EINA_FALSE);
595 ad->misces_checked = ad->misces_sz_all;
597 elm_object_item_part_text_set(ad->misces_navi_it, "subtitle", "");
598 elm_object_item_signal_emit(ad->misces_navi_it, "elm,state,subtitle,hide", "elm");
600 toolbar = elm_object_item_part_content_get(ad->misces_navi_it, "toolbar");
601 elm_object_item_disabled_set(elm_toolbar_last_item_get(toolbar), EINA_TRUE);
602 ad->misces_checked = 0;
606 static inline Evas_Object *storageUg_misces_create_sel_all(Evas_Object *parent,
607 SettingStorageUG *ad)
609 Evas_Object *btn, *icon;
611 btn = elm_button_add(parent);
612 elm_object_style_set(btn, "naviframe/title_icon");
614 icon = elm_icon_add(btn);
615 elm_image_file_set(icon, SETTING_ICON_PATH_CFG"select_all.png", NULL);
617 evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_BOTH, 1 , 1);
618 elm_image_resizable_set(icon, EINA_TRUE, EINA_TRUE);
620 elm_object_part_content_set(btn, "icon", icon);
621 evas_object_smart_callback_add(btn, "clicked", storageUg_misces_sel_all_clicked, ad);
623 evas_object_show(btn);
628 storageUg_misces_cancel_cb(void *data, Evas_Object *obj, void *event_info)
631 setting_retm_if(data == NULL, "data is NULL");
632 SettingStorageUG *ad = data;
633 elm_naviframe_item_pop(ad->navi);
637 layout_select_all_down_cb(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
639 Evas_Object *layout = obj;
640 SettingStorageUG *ad = data;
641 Evas_Object *check = elm_object_part_content_get(ad->select_all_layout, "elm.icon");
642 Eina_Bool state = elm_check_state_get(check);
643 elm_check_state_set(check, !state);
644 storageUg_misces_sel_all_clicked(ad, check, NULL);
647 static int storageUg_misces_create(void *data)
649 SettingStorageUG *ad = data;
650 Evas_Object *sel_all = NULL;
652 retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
654 /*first get misc file count*/
655 storageUg_meisces_get_list(ad);
657 if (ad->misces_sz_all > 0) {
658 Evas_Object *box = elm_box_add(ad->navi);
659 evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
660 evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
662 /*select all layout*/
663 Evas_Object *layout = elm_layout_add(box);
664 elm_layout_theme_set(layout, "genlist", "item", "select_all/default");
665 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
666 evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
667 evas_object_show(layout);
668 ad->select_all_layout = layout;
670 Evas_Object *check = elm_check_add(layout);
671 evas_object_propagate_events_set(check, EINA_FALSE);
672 elm_object_part_content_set(layout, "elm.icon", check);
673 elm_object_part_text_set(layout, "elm.text.main", _("IDS_ST_BODY_SELECT_ALL"));
674 evas_object_smart_callback_add(check, "changed", storageUg_misces_sel_all_clicked, ad);
675 evas_object_event_callback_add(layout, EVAS_CALLBACK_MOUSE_DOWN, layout_select_all_down_cb, ad);
676 evas_object_show(layout);
677 elm_box_pack_end(box, layout);
680 storageUg_misces_add_list(ad);
681 elm_object_focus_set(ad->gl_misces, EINA_TRUE);
682 evas_object_show(ad->gl_misces);
683 elm_box_pack_end(box, ad->gl_misces);
684 evas_object_show(box);
686 ad->misces_navi_it = setting_push_layout_navi_bar(_(STR_DELETE_ITEMS),
687 STORAGEUG_STR_BACK, NULL, NULL,
688 (setting_call_back_func)storageUg_misces_back_cb, storageUg_misces_delete_cb,
689 NULL, ad, box, ad->navi, NULL);
692 /* Title Cancel Button */
693 ad->title_left_btn = elm_button_add(ad->navi);
694 elm_object_style_set(ad->title_left_btn, "naviframe/title_cancel");
695 evas_object_smart_callback_add(ad->title_left_btn, "clicked", storageUg_misces_cancel_cb, ad);
697 /* Title Done Button */
698 ad->title_right_btn = elm_button_add(ad->navi);
699 elm_object_style_set(ad->title_right_btn, "naviframe/title_done");
700 evas_object_smart_callback_add(ad->title_right_btn, "clicked", storageUg_misces_delete_cb, ad);
702 ad->misces_navi_it = setting_push_layout_navi_bar(_(STR_DELETE_ITEMS),
703 STORAGEUG_STR_BACK, NULL, NULL,
704 (setting_call_back_func)storageUg_misces_back_cb, NULL,
705 NULL, ad, NULL, ad->navi, NULL);
706 if (NULL == ad->misces_lo_noitem) {
707 ad->misces_lo_noitem = storageUg_misces_no_item(ad->navi);
709 Evas_Object *btn = elm_object_item_part_content_get(ad->misces_navi_it, "title_right_btn");
710 elm_object_disabled_set(btn, EINA_TRUE);
711 ad->gl_misces = NULL;
713 if (ad->misces_lo_noitem) {
714 elm_object_item_part_content_set(ad->misces_navi_it, "elm.swallow.content", ad->misces_lo_noitem);
719 setting_view_storage_misc.is_create = 1;
721 return SETTING_RETURN_SUCCESS;
724 static int storageUg_misces_destroy(void *data)
726 SettingStorageUG *ad = data;
728 retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
731 evas_object_del(ad->popup);
735 if (ad->del_worker) {
736 storageUg_stop_async_worker(ad->del_worker);
737 ad->del_worker = NULL;
740 if (ad->misces_list) {
741 storageUg_misces_clear_list(ad->misces_list);
742 ad->misces_list = NULL;
745 if (ad->misces_sel_list) {
746 storageUg_misces_clear_sel_list(ad->misces_sel_list);
747 ad->misces_sel_list = NULL;
750 ad->misces_navi_it = NULL;
751 ad->gl_misces = NULL;
752 ad->misces_lo_noitem = NULL;
753 ad->misces_checked = 0;
755 setting_view_storage_misc.is_create = 0;
756 elm_naviframe_item_pop(ad->navi);
758 return SETTING_RETURN_SUCCESS;
761 static int storageUg_misces_update(void *data)
763 SettingStorageUG *ad = data;
765 retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
767 storageUg_misces_add_list(ad);
768 return SETTING_RETURN_SUCCESS;
771 static int storageUg_misces_cleanup(void *data)
773 return storageUg_misces_destroy(data);
777 void storageUg_misc_init(SettingStorageUG *ad)
780 ret_if(ad->misces_view);
782 setting_view_storage_misc.create = storageUg_misces_create;
783 setting_view_storage_misc.destroy = storageUg_misces_destroy;
784 setting_view_storage_misc.update = storageUg_misces_update;
785 setting_view_storage_misc.cleanup = storageUg_misces_cleanup;
787 ad->misces_view = &setting_view_storage_misc;