Fix sort popup in storage misces view 58/96658/2
authorPiotr Pruski <p.pruski@samsung.com>
Wed, 9 Nov 2016 10:58:45 +0000 (11:58 +0100)
committerPiotr Pruski <p.pruski@samsung.com>
Wed, 9 Nov 2016 16:09:42 +0000 (17:09 +0100)
Change-Id: I4f82b9c16acc2b6c8f98461614736a28975ee177
Signed-off-by: Piotr Pruski <p.pruski@samsung.com>
setting-storage/include/setting-storage-applications.h
setting-storage/include/setting-storage-utils.h
setting-storage/include/setting-storage.h
setting-storage/src/setting-storage-applications-utils.c
setting-storage/src/setting-storage-applications.c
setting-storage/src/setting-storage-main.c
setting-storage/src/setting-storage-miscellaneous.c
setting-storage/src/setting-storage-utils.c

index da6930c2562fbb98ef6a93dabadea34ed873f0d1..2565fa1b67bdcefc251740eb7088059c6325c5b1 100644 (file)
 
 #include "setting-storage.h"
 
-typedef struct {
-       char *id;
-       char *size_str;
-       char *name;
-       char *l_icon;
-       unsigned long long size;
-       int total_size;
-       time_t added_time;
-       Setting_GenGroupItem_Data *data;
-       SettingStorage *ad;
-       Ecore_Idler *size_idler;
-} Node_Info;
-
-typedef enum {
-       BY_SIZE,
-       BY_DATE,
-       BY_NAME,
-       BY_FREQUENCY
-} sort_type_t;
-
 void storage_apps_init(SettingStorage *ad);
 #endif /*__SETTING_STORAGE_APPLICAITONS_H__ */
 
index 32a27a12fdce343d90f5f15a97e9e5e16545d4f2..fc4f209ea3ac3ddd1cbe096fa0e495d3de8e78ef 100644 (file)
@@ -38,5 +38,29 @@ void storage_get_internal_detail_cb(int fn_result, SettingStorage *ad);
 void storage_genlist_text_update(Setting_GenGroupItem_Data *item_data,
                double size);
 
+/* Apps & Misces */
+
+void storage_gl_add_button_support(SettingStorage *ad,
+               Evas_Smart_Cb cancel_btn_cb,
+               Evas_Smart_Cb done_btn_cb,
+               Evas_Smart_Cb more_btn_cb,
+               unsigned int sort_type);
+
+void storage_back_click_cb(void *data, Evas_Object *obj,
+                               void *event_info);
+
+void storage_handle_select_list(SettingStorage *ad, char *id,
+               int checked);
+/* Add "Select all item to top of the list */
+void storage_append_select_all_item(SettingStorage *ad);
+void storage_select_all_items(SettingStorage *ad);
+void storage_select_all_check_cb(void *data, Evas_Object *obj,
+               void *event_info);
+void storage_select_all_chk_btn_cb(void *data, Evas_Object *obj,
+                                       void *event_info);
+void storage_update_naviframe_title(SettingStorage *ad,
+               const char *title, const char *new_title);
+void storage_naviframe_update_buttons(SettingStorage *ad);
+
 #endif /*__SETTING_STORAGE_UTILS_H__ */
 
index c409107927c7e682e7e766b4754ed4d0d5d9976c..7bf88529513486cb3d3b7af83415e357c6d50d34 100644 (file)
@@ -38,6 +38,8 @@
 extern const char *storage_MMC_stat;
 extern const char *storage_ENCRYPT_stat;
 
+#define SETTING_STORAGE_STR_SELECT_APPS "Select apps"
+#define SETTING_STORAGE_STR_SELECT_FILES "Select files"
 
 #define SETTING_STORAGE_DEFAULT_STORAGE_APP_DESP_SIZE \
        (240 * WIDGET_SCALE_FACTOR)
@@ -136,10 +138,8 @@ typedef struct _SettingStorage {
        unsigned int sort_type;
 
        Eina_Bool misces_is_select_all;
-       Eina_List *misces_list;
-       Eina_List *apps_list;
-       int apps_sz_all;
-       int misces_sz_all;
+       Eina_List *data_list;
+       int count_sz_all;
        int misces_checked;
        bool misces_ctx_popup_selected;
        void *del_worker;
@@ -150,6 +150,26 @@ typedef struct _SettingStorage {
        int mmc_status;
 } SettingStorage;
 
+typedef struct {
+       char *id;
+       char *size_str;
+       char *name;
+       char *l_icon;
+       unsigned long long size;
+       int total_size;
+       time_t added_time;
+       Setting_GenGroupItem_Data *data;
+       SettingStorage *ad;
+       Ecore_Idler *size_idler;
+} Node_Info;
+
+typedef enum {
+       BY_SIZE,
+       BY_DATE,
+       BY_NAME,
+       BY_FREQUENCY
+} sort_type_t;
+
 typedef struct {
        pthread_t tid;
 
index c189ad6673d0c3251805a1d6ad8d27266997119b..be776e497a380edc41c869fca8a1c11305cb6c40 100644 (file)
@@ -114,8 +114,8 @@ void _sort_apps(SettingStorage *ad)
        default:
                return;
        }
-       ad->apps_list = eina_list_sort(ad->apps_list,
-                               eina_list_count(ad->apps_list), compare_fn);
+       ad->data_list = eina_list_sort(ad->data_list,
+                               eina_list_count(ad->data_list), compare_fn);
 }
 
 /******************************************************************************/
@@ -136,9 +136,9 @@ void storage_apps_get_list(SettingStorage *ad)
        SETTING_TRACE("Entering storage_apps_get_list");
        ret_if(NULL == ad);
 
-       if (ad->apps_list) {
-               storage_apps_clear_list(ad->apps_list);
-               ad->apps_list = NULL;
+       if (ad->data_list) {
+               storage_apps_clear_list(ad->data_list);
+               ad->data_list = NULL;
        }
 
        package_manager_h manager = NULL;
@@ -152,7 +152,7 @@ void storage_apps_get_list(SettingStorage *ad)
        package_manager_filter_foreach_package_info(handle,
                        storage_get_pkg_list_iter, ad);
 
-       ad->apps_sz_all = eina_list_count(ad->apps_list);
+       ad->count_sz_all = eina_list_count(ad->data_list);
 
        package_manager_filter_destroy(handle);
        package_manager_destroy(manager);
@@ -177,8 +177,8 @@ bool storage_get_pkg_list_iter(package_info_h handle, void *data)
        storage_apps_get_node_info(handle, info);
 
        /* Add to list */
-       ad->apps_list = eina_list_append(ad->apps_list, info);
-       ad->apps_sz_all = eina_list_count(ad->apps_list);
+       ad->data_list = eina_list_append(ad->data_list, info);
+       ad->count_sz_all = eina_list_count(ad->data_list);
 
        return EINA_TRUE;
 }
index 6ce59e226e549656e4f7142eb3a7bd1635ac4704..642e8a9e3b7e6caf0b7ab57b7e130beb87b88908 100644 (file)
 
 #define STR_DELETE_ITEMS       "IDS_ST_HEADER_DELETE_ITEMS_ABB2"
 
-
-static void _select_all_check_cb(void *data, Evas_Object *obj,
-                               void *event_info);
 static void storage_apps_gl_remove_select_all_item(SettingStorage *ad);
 
-static void _update_naviframe_buttons(SettingStorage *ad);
-static void _update_naviframe_title(SettingStorage *ad);
-
-
 /* Create ctxpopup for menu button */
 static Evas_Object *_create_ctxpopup(SettingStorage *ad);
 /* First popup menu Uninstall/Sort by */
@@ -48,19 +41,14 @@ static void _create_sort_by_sub_menu(SettingStorage *ad);
 
 /* Callback for uninstal menu button */
 static void _ctx_uninstall_click_cb(void *data, Evas_Object *ctxpopup, void *event_info);
-/* Add "Select all item to top of the list */
-static void _append_select_all_item(SettingStorage *ad);
 /* Show/Hide check items on the list */
 static void _genlist_check_hide(SettingStorage *ad, bool hide);
 
-
 static void _show_more_menu_cb(void *data, Evas_Object *obj, void *event_info);
 static void _show_sort_by_menu_cb(void *data, Evas_Object *obj, void *event_info);
 static void _sort_by_check_change_cb(void *data, Evas_Object *obj, void *event_info);
 static void _update_ui_list(SettingStorage *ad);
 
-static void _add_button_support(SettingStorage *ad);
-static void _apps_back_click_cb(void *data, Evas_Object *obj, void *event_info);
 static void _apps_delete_click_cb(void *data, Evas_Object *obj, void *event_info);
 
 static setting_view setting_view_storage_apps;
@@ -117,36 +105,6 @@ static void _genlist_check_hide(SettingStorage *ad, bool hide)
        }
 }
 
-
-static void _add_button_support(SettingStorage *ad)
-{
-       retm_if(ad == NULL, "SettingStorage *ad parameter is NULL");
-
-       SETTING_TRACE_BEGIN;
-       Evas_Object *btn = NULL;
-       /* Cancel Button */
-       ad->cancel_delete_btn = setting_create_button(ad->md.naviframe,
-                       _("IDS_MSG_ACBUTTON_CANCEL_ABB"), "naviframe/title_left",
-                       _apps_back_click_cb, ad);
-       evas_object_hide(ad->cancel_delete_btn);
-
-       /* Delete Button */
-       ad->done_delete_btn = setting_create_button(ad->md.naviframe,
-                       _("IDS_MSG_ACBUTTON_DONE_ABB"), "naviframe/title_right",
-                       _apps_delete_click_cb, ad);
-       evas_object_hide(ad->done_delete_btn);
-
-       /* Add ctx popup handler */
-       btn = setting_create_button(ad->md.naviframe,
-                               NULL, "naviframe/more/default",
-                               _show_more_menu_cb, ad);
-       elm_object_item_part_content_set(ad->misces_navi_it, "toolbar_more_btn",
-                                       btn);
-
-       _create_more_main_menu(ad);
-       ad->sort_type = BY_NAME;
-}
-
 /**
  * [UI-CALLBACK] 'Delete' button handler on ctxpopup
  */
@@ -158,13 +116,13 @@ static void _ctx_uninstall_click_cb(void *data, Evas_Object *ctxpopup,
 
        ad->select_mode = true;
        elm_ctxpopup_dismiss(ctxpopup);
-       _append_select_all_item(ad);
+       storage_append_select_all_item(ad);
        _genlist_check_hide(ad, false);
-       _update_naviframe_buttons(ad);
-       _update_naviframe_title(ad);
+       storage_naviframe_update_buttons(ad);
+       storage_update_naviframe_title(ad, _(IDS_ST_BODY_APPLICATION),
+                       SETTING_STORAGE_STR_SELECT_APPS);
 }
 
-
 static Evas_Object *_create_ctxpopup(SettingStorage *ad)
 {
        Evas_Object *ctxpopup = elm_ctxpopup_add(ad->md.naviframe);
@@ -219,28 +177,14 @@ static void _create_sort_by_sub_menu(SettingStorage *ad)
                        check, 2,
                        _("IDS_ST_BODY_NAME"),
                        NULL);
+
        setting_create_Gendial_field_1radio(menu_glist, &(itc_1text_1icon),
                        _sort_by_check_change_cb, ad, SWALLOW_Type_1RADIO_RIGHT,
                        check, 3,
                        _("IDS_ST_BODY_FREQUENTLY_USED"),
                        NULL);
 
-       switch (ad->sort_type) {
-       case BY_SIZE:
-               elm_radio_value_set(check, 0);
-               break;
-       case BY_DATE:
-               elm_radio_value_set(check, 1);
-               break;
-       case BY_NAME:
-               elm_radio_value_set(check, 2);
-               break;
-       case BY_FREQUENCY:
-               elm_radio_value_set(check, 3);
-               break;
-       default:
-               return;
-       }
+       elm_radio_value_set(check, ad->sort_type);
 }
 
 static void _create_more_main_menu(SettingStorage *ad)
@@ -292,21 +236,6 @@ static void _sort_by_check_change_cb(void *data, Evas_Object *obj,
 }
 /*/////////////////////////////////////////////////////////////////////////// */
 
-/**
- * back button handler
- *
- * 1. "default" -> delete : back to default
- */
-
-static void _apps_back_click_cb(void *data, Evas_Object *obj,
-                               void *event_info)
-{
-       SettingStorage *ad = data;
-       ret_if(data == NULL);
-
-       elm_naviframe_item_pop(ad->md.naviframe);
-}
-
 static Eina_Bool _apps_view_pop_cb(void *data, Elm_Object_Item *it)
 {
        SettingStorage *ad = data;
@@ -316,7 +245,7 @@ static Eina_Bool _apps_view_pop_cb(void *data, Elm_Object_Item *it)
 
        if (ad->select_mode) {
                ad->select_mode = false;
-               _update_naviframe_buttons(ad);
+               storage_naviframe_update_buttons(ad);
                _genlist_check_hide(ad, true);
                _update_ui_list(ad);
                return EINA_FALSE;
@@ -329,8 +258,9 @@ static Eina_Bool _apps_view_pop_cb(void *data, Elm_Object_Item *it)
                _genlist_check_hide(ad, true);
 
                ad->misces_checked = 0;
-               _update_naviframe_buttons(ad);
-               _update_naviframe_title(ad);
+               storage_naviframe_update_buttons(ad);
+               storage_update_naviframe_title(ad, _(IDS_ST_BODY_APPLICATION),
+                               SETTING_STORAGE_STR_SELECT_APPS);
 
                return EINA_FALSE;
        }
@@ -339,59 +269,6 @@ static Eina_Bool _apps_view_pop_cb(void *data, Elm_Object_Item *it)
        return EINA_TRUE;
 }
 
-static void _update_naviframe_buttons(SettingStorage *ad)
-{
-       /*update delete item buttons*/
-       if (ad->select_mode) {
-               if (elm_object_item_part_content_get(
-                               ad->misces_navi_it, "title_left_btn") == NULL) {
-                       elm_object_item_part_content_set(ad->misces_navi_it,
-                               "title_left_btn", ad->cancel_delete_btn);
-               }
-               if (elm_object_item_part_content_get(
-                       ad->misces_navi_it, "title_right_btn") == NULL) {
-                       elm_object_item_part_content_set(ad->misces_navi_it,
-                                       "title_right_btn", ad->done_delete_btn);
-               }
-       } else {
-               if (elm_object_item_part_content_get(
-                               ad->misces_navi_it, "title_left_btn") != NULL) {
-                       elm_object_item_part_content_unset(ad->misces_navi_it,
-                                       "title_left_btn");
-                       evas_object_hide(ad->cancel_delete_btn);
-               }
-               if (elm_object_item_part_content_get(
-                       ad->misces_navi_it, "title_right_btn") != NULL) {
-                       elm_object_item_part_content_unset(ad->misces_navi_it,
-                                       "title_right_btn");
-                       evas_object_hide(ad->done_delete_btn);
-               }
-       }
-}
-
-static void _update_naviframe_title(SettingStorage *ad)
-{
-       char text[MAX_DISPLAY_NAME_LEN_ON_UI] = {'\0', };
-
-       ret_if(!ad);
-
-       if (!ad->select_mode) {
-               elm_object_item_part_text_set(ad->misces_navi_it, "default",
-                                       _(IDS_ST_BODY_APPLICATION));
-               return;
-       }
-
-       if (0 < ad->misces_checked) {
-               snprintf(text, sizeof(text), _(STORAGE_STR_N_SELECTED),
-                               ad->misces_checked);
-               elm_object_item_part_text_set(ad->misces_navi_it, "default",
-                               text);
-       } else {
-               elm_object_item_part_text_set(ad->misces_navi_it, "default",
-                               _("Select apps"));
-       }
-}
-
 //static bool storage_misces_media_item_cb(media_info_h media, void *data)
 //{
 //     Node_Info *node = NULL;
@@ -413,7 +290,7 @@ static void _update_naviframe_title(SettingStorage *ad)
 //             media_info_get_display_name(media, &node->name);
 //             media_info_get_size(media, &node->size);
 //             media_info_get_added_time(media, &node->added_time);
-//             ad->apps_list = eina_list_append(ad->apps_list, node);
+//             ad->data_list = eina_list_append(ad->data_list, node);
 //     }
 //
 //     free(file_path);
@@ -432,7 +309,7 @@ static void storage_misces_handle_selecting(SettingStorage *ad)
        ret_if(NULL == ad);
 
        was_select_all = ad->misces_is_select_all;
-       if (ad->misces_checked == ad->apps_sz_all)
+       if (ad->misces_checked == ad->count_sz_all)
                ad->misces_is_select_all = EINA_TRUE;
        else
                ad->misces_is_select_all = EINA_FALSE;
@@ -450,20 +327,8 @@ static void storage_misces_handle_selecting(SettingStorage *ad)
                }
        }
 
-       _update_naviframe_title(ad);
-}
-
-static void _handle_select_list(SettingStorage *ad, char *id,
-               int checked)
-{
-       if (checked) {
-               SETTING_TRACE("----- checked : %d ", ad->misces_checked);
-               ad->misces_checked++;
-       } else {
-               SETTING_TRACE("----- un-checked : %d", ad->misces_checked);
-
-               ad->misces_checked--;
-       }
+       storage_update_naviframe_title(ad, _(IDS_ST_BODY_APPLICATION),
+                       SETTING_STORAGE_STR_SELECT_APPS);
 }
 
 static void storage_apps_genlist_sel(void *data, Evas_Object *obj,
@@ -487,13 +352,12 @@ static void storage_apps_genlist_sel(void *data, Evas_Object *obj,
                setting_update_gl_item_chk_status(d_item,
                                !(d_item->chk_status));
 
-               _handle_select_list(ad, node->id,
+               storage_handle_select_list(ad, node->id,
                                d_item->chk_status);
                storage_misces_handle_selecting(ad);
        } else {
-               /* Lauch Application information settings-appmgr */
+               /* Launch Application information view from settings-appmgr */
                SETTING_TRACE("Selected app_id [%s], app_name [%s]", node->id, node->name);
-//             app_launcher("org.tizen.setting-appmgr|viewtype:application-info", NULL, NULL) == 0)
 
                app_control_h svc;
                app_control_create(&svc);
@@ -505,7 +369,6 @@ static void storage_apps_genlist_sel(void *data, Evas_Object *obj,
 
                app_control_send_launch_request(svc, NULL, NULL);
                app_control_destroy(svc);
-
        }
 }
 
@@ -525,7 +388,7 @@ static void storage_apps_genlist_chk_cb(void *data, Evas_Object *obj,
                ad = node->ad;
                d_item->chk_status = elm_check_state_get(obj);
 
-               _handle_select_list(ad, node->id,
+               storage_handle_select_list(ad, node->id,
                                d_item->chk_status);
                storage_misces_handle_selecting(ad);
        } else {
@@ -533,61 +396,6 @@ static void storage_apps_genlist_chk_cb(void *data, Evas_Object *obj,
        }
 }
 
-static void _select_all_items(SettingStorage *ad)
-{
-       Eina_List *l = NULL;
-       Node_Info *node = NULL;
-       Setting_GenGroupItem_Data *item_data = NULL;
-
-       ret_if(!ad);
-
-       SETTING_TRACE_DEBUG("ad->misces_is_select_all--->%d",
-                               ad->misces_is_select_all);
-       SETTING_TRACE_DEBUG("ad->apps_list--->%x", ad->apps_list);
-       EINA_LIST_FOREACH(ad->apps_list, l, node)
-       {
-               if (node && node->data) {
-                       item_data = node->data;
-                       if (item_data) {
-                               item_data->chk_status =
-                                               ad->misces_is_select_all;
-                               elm_object_item_data_set(item_data->item,
-                                                       item_data);
-                               _handle_select_list(ad, node->id,
-                                               item_data->chk_status);
-                       }
-               }
-       }
-
-       elm_genlist_realized_items_update(ad->misces_genlist);
-
-       if (ad->misces_is_select_all) {
-               ad->misces_checked = ad->apps_sz_all;
-       } else {
-               ad->misces_checked = 0;
-       }
-       _update_naviframe_title(ad);
-}
-
-/**
- * "Select All" - check button handler
- */
-static inline void _select_all_chk_btn_cb(void *data, Evas_Object *obj,
-                                       void *event_info)
-{
-       SETTING_TRACE_BEGIN;
-       /* error check */
-       retm_if(data == NULL, "Data parameter is NULL");
-       Setting_GenGroupItem_Data *list_item =
-                       (Setting_GenGroupItem_Data *)data;
-       SettingStorage *ad = (SettingStorage *)list_item->userdata;
-
-       list_item->chk_status = elm_check_state_get(obj);
-       ad->misces_is_select_all = elm_check_state_get(obj);
-
-       _select_all_items(ad);
-}
-
 /**
  * Delete 'Select All' item in genlist
  */
@@ -609,7 +417,7 @@ static void storage_apps_gl_append_items(SettingStorage *ad)
        Eina_List *cur;
        Setting_GenGroupItem_Data *item_data = NULL;
 
-       EINA_LIST_FOREACH(ad->apps_list, cur, node)
+       EINA_LIST_FOREACH(ad->data_list, cur, node)
        {
                if (NULL == node)
                        continue;
@@ -648,7 +456,7 @@ static void storage_apps_gl_append_items(SettingStorage *ad)
 //     ret_if(NULL == ad);
 //
 //     ad->misces_checked = 0;
-//     ad->apps_sz_all = 0;
+//     ad->count_sz_all = 0;
 //
 //     /* Get second, because first is 'Check all' */
 //     it = elm_genlist_nth_item_get(ad->misces_genlist, 1);
@@ -661,24 +469,20 @@ static void storage_apps_gl_append_items(SettingStorage *ad)
 //             if (!node)
 //                     continue;
 //             /* delete data form model: */
-//             ad->apps_list = eina_list_remove(
-//                             ad->apps_list, node);
+//             ad->data_list = eina_list_remove(
+//                             ad->data_list, node);
 //             free(node->id);
 //             free(node->size_str);
 //             free(node->name);
 //             free(node);
 //             it = elm_genlist_item_next_get(it);
 //     }
-//     ad->apps_list = eina_list_free(ad->apps_list);
+//     ad->data_list = eina_list_free(ad->data_list);
 //
 //     /* delete UI elements: */
 //     elm_genlist_clear(ad->misces_genlist);
 //}
 
-/**
- *
- * int apps_sz_all
- */
 static void _update_ui_list(SettingStorage *ad)
 {
        Evas_Object *toolbar = NULL;
@@ -745,8 +549,9 @@ void _uninstall_app_thread_func_cb(int fn_result, SettingStorage *ad)
        storage_apps_get_list(ad);
        _update_ui_list(ad);
 
-       _update_naviframe_buttons(ad);
-       _update_naviframe_title(ad);
+       storage_naviframe_update_buttons(ad);
+       storage_update_naviframe_title(ad, _(IDS_ST_BODY_APPLICATION),
+                       SETTING_STORAGE_STR_SELECT_APPS);
 
        evas_object_del(ad->popup);
        ad->popup = NULL;
@@ -759,7 +564,7 @@ void _uninstall_app_thread_func_cb(int fn_result, SettingStorage *ad)
 }
 
 /**
- * [controller] delete actual files with ad->apps_list
+ * [controller] delete actual files with ad->data_list
  *
  */
 static int _uninstall_app_thread_func(SettingStorage *ad)
@@ -771,7 +576,7 @@ static int _uninstall_app_thread_func(SettingStorage *ad)
 
        retv_if(NULL == ad, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
 
-       EINA_LIST_FOREACH(ad->apps_list, l, node)
+       EINA_LIST_FOREACH(ad->data_list, l, node)
        {
                if (node) {
                        item_data = node->data;
@@ -853,64 +658,6 @@ static void _apps_delete_click_cb(void *data, Evas_Object *obj,
                        2, STORAGE_STR_DELETE, STORAGE_STR_CANCEL);
 }
 
-/**
- * "Select All" check button
- */
-static void _append_select_all_item(SettingStorage *ad)
-{
-       SETTING_TRACE_BEGIN;
-       Setting_GenGroupItem_Data *item_data = NULL;
-
-       evas_object_data_set(ad->misces_genlist, "InsertType", "Prepend");
-
-       item_data = setting_create_Gendial_field_def(ad->misces_genlist,
-                       &(itc_1text_1icon), _select_all_check_cb,
-                       ad, SWALLOW_Type_1ICON_1RADIO, NULL, NULL, 0,
-                       _("IDS_ST_BODY_SELECT_ALL"), NULL,
-                       _select_all_chk_btn_cb);
-
-       if (item_data) {
-               item_data->userdata = ad;
-               item_data->isItemHideFlag = true;
-               elm_genlist_item_select_mode_set(item_data->item,
-                               ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
-       } else {
-               SETTING_TRACE_ERROR("item_data is NULL");
-       }
-
-       evas_object_data_set(ad->misces_genlist, "InsertType", "");
-}
-
-
-/**
- * Genlist Touch handler
- * @todo _select_all_chk_btn_cb is similar to this function
- */
-static void _select_all_check_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       SETTING_TRACE_BEGIN;
-       Node_Info *node = NULL;
-       SettingStorage *ad = data;
-       Setting_GenGroupItem_Data *item_data = NULL;
-       Elm_Object_Item *item = event_info;
-
-       ret_if(data == NULL);
-
-       elm_genlist_item_selected_set(item, 0);
-       item_data = elm_object_item_data_get(item);
-       if (item_data) {
-               node = item_data->userdata;
-
-               setting_update_gl_item_chk_status(item_data,
-                                       !(item_data->chk_status));
-               _handle_select_list(ad, node->id, item_data->chk_status);
-               ad->misces_is_select_all = item_data->chk_status;
-               _select_all_items(ad);
-       }
-}
-
-
-
 /*****************************************************************************/
 /*-------------------------------------------------- */
 /* name: "storagelayout"; */
@@ -933,13 +680,16 @@ static int storage_apps_create(void *data)
                ad->md.naviframe
                );
 
-       _add_button_support(ad);
+       _create_more_main_menu(ad);
+
+       storage_gl_add_button_support(ad, storage_back_click_cb,
+                       _apps_delete_click_cb, _show_more_menu_cb, BY_NAME);
 
-       /* zbieranie elementow */
+       /* Gets apps items */
        storage_apps_get_list(ad);
-       /* sortowanie */
+       /* sorting */
        _sort_apps(ad);
-       /* update widoku */
+       /* view update */
        _update_ui_list(ad);
 
        setting_view_storage_apps.is_create = 1;
@@ -968,9 +718,9 @@ static int storage_apps_destroy(void *data)
                ad->del_worker = NULL;
        }
 
-       if (ad->apps_list) {
-               storage_apps_clear_list(ad->apps_list);
-               ad->apps_list = NULL;
+       if (ad->data_list) {
+               storage_apps_clear_list(ad->data_list);
+               ad->data_list = NULL;
        }
 
        ad->misces_navi_it = NULL;
index fa63b43140a5a551844dce3937eb07e1cc1e0bb1..1fab60bde207c168501b216212c65a6765ede3d2 100755 (executable)
@@ -640,7 +640,7 @@ static int _view_update(void *data)
        /*storage_main_update_media_data(ad); */
        storage_update_apps_cache_info(ad);
 
-       if (!ad->misces_list)
+       if (!ad->data_list)
                evas_object_show(ad->md.naviframe);
        /* else
                setting_view_update(ad->misces_view, ad); */
index 5d131fddf6795e11a294705d8935e09c748f3997..0a1912a12df78fcfa29cb98b195f7121a5222c5f 100644 (file)
 #include <efl_extension.h>
 
 #define STR_DELETE_ITEMS       "IDS_ST_HEADER_DELETE_ITEMS_ABB2"
-typedef struct {
-       char *id;
-       char *path;
-       char *name;
-       unsigned long long size;
-       time_t added_time;
-       Setting_GenGroupItem_Data *data;
-       SettingStorage *ad;
-} Node_Info;
-
-typedef enum {
-       BY_SIZE,
-       BY_DATE,
-       BY_NAME
-} sort_type_t;
-
-static void _select_all_check_cb(void *data, Evas_Object *obj,
-                               void *event_info);
-static void _append_select_all_item(SettingStorage *ad);
+
 static void storage_misces_gl_remove_select_all_item(SettingStorage *ad);
-static void _update_naviframe_buttons(SettingStorage *ad);
-static void _update_naviframe_title(SettingStorage *ad);
 static Evas_Object *_create_ctxpopup(SettingStorage *ad);
 static void _create_sort_by_sub_menu(SettingStorage *ad);
 static void _create_more_main_menu(SettingStorage *ad);
@@ -128,10 +108,11 @@ static void _ctx_delete_click_cb(void *data, Evas_Object *ctxpopup,
 
        ad->select_mode = true;
        elm_ctxpopup_dismiss(ctxpopup);
-       _append_select_all_item(ad);
+       storage_append_select_all_item(ad);
        _genlist_check_hide(ad, false);
-       _update_naviframe_buttons(ad);
-       _update_naviframe_title(ad);
+       storage_naviframe_update_buttons(ad);
+       storage_update_naviframe_title(ad, _(IDS_ST_BODY_MISCELLANEOUS_FILES),
+                       SETTING_STORAGE_STR_SELECT_FILES);
 }
 
 static Evas_Object *_create_ctxpopup(SettingStorage *ad)
@@ -158,34 +139,36 @@ static Evas_Object *_create_ctxpopup(SettingStorage *ad)
 static void _create_sort_by_sub_menu(SettingStorage *ad)
 {
        Evas_Object *check = NULL;
-       ad->sort_by_sub_menu_popup = _create_ctxpopup(ad);
-
-       check = elm_radio_add(ad->sort_by_sub_menu_popup);
-       elm_radio_state_value_set(check, BY_SIZE);
-       elm_radio_value_set(check, BY_SIZE);
+       Evas_Object *menu_glist = NULL;
+       ad->sort_by_sub_menu_popup = setting_create_popup_with_list(
+                       &menu_glist, ad, ad->md.window,
+                       NULL, NULL, 0,
+                       false, false, 0);
+
+       check = elm_radio_add(menu_glist);
+       elm_object_style_set(check, "list");
+       evas_object_propagate_events_set(check, EINA_TRUE);
+       elm_radio_state_value_set(check, -1);
+       evas_object_data_set(menu_glist, "radio", check);
        ad->sort_by_radio_group = check;
-       elm_ctxpopup_item_append(ad->sort_by_sub_menu_popup,
-                               _("IDS_ST_BODY_SIZE"), check, NULL, ad);
-
-       evas_object_smart_callback_add(check, "changed",
-                                       _sort_by_check_change_cb, ad);
-
-       check = elm_radio_add(ad->sort_by_sub_menu_popup);
-       elm_radio_state_value_set(check, BY_DATE);
-       elm_radio_group_add(check, ad->sort_by_radio_group);
-       elm_ctxpopup_item_append(ad->sort_by_sub_menu_popup,
-                               _("IDS_ST_BODY_DATE"), check, NULL, ad);
-       evas_object_smart_callback_add(check, "changed",
-                                       _sort_by_check_change_cb, ad);
-
-       check = elm_radio_add(ad->sort_by_sub_menu_popup);
-       elm_radio_state_value_set(check, BY_NAME);
-       elm_radio_group_add(check, ad->sort_by_radio_group);
-       elm_ctxpopup_item_append(ad->sort_by_sub_menu_popup,
-                               _("IDS_ST_BODY_NAME"), check, NULL, ad);
-       evas_object_smart_callback_add(check, "changed",
-                                       _sort_by_check_change_cb, ad);
 
+       setting_create_Gendial_field_1radio(menu_glist, &(itc_1text_1icon),
+                       _sort_by_check_change_cb, ad, SWALLOW_Type_1RADIO_RIGHT,
+                       check, 0,
+                       _("IDS_ST_BODY_SIZE"),
+                       NULL);
+       setting_create_Gendial_field_1radio(menu_glist, &(itc_1text_1icon),
+                       _sort_by_check_change_cb, ad, SWALLOW_Type_1RADIO_RIGHT,
+                       check, 1,
+                       _("IDS_ST_BODY_DATE"),
+                       NULL);
+       setting_create_Gendial_field_1radio(menu_glist, &(itc_1text_1icon),
+                       _sort_by_check_change_cb, ad, SWALLOW_Type_1RADIO_RIGHT,
+                       check, 2,
+                       _("IDS_ST_BODY_NAME"),
+                       NULL);
+
+       elm_radio_value_set(check, ad->sort_type);
 }
 
 static void _create_more_main_menu(SettingStorage *ad)
@@ -216,33 +199,28 @@ static void _show_sort_by_menu_cb(void *data, Evas_Object *sub_menu_ctxpopup,
 
        ret_if(!ad);
        elm_ctxpopup_dismiss(ad->main_menu_popup);
-       evas_object_show(ad->sort_by_sub_menu_popup);
+       _create_sort_by_sub_menu(ad);
 }
 
 static void _sort_by_check_change_cb(void *data, Evas_Object *obj,
                                        void *event_info)
 {
+       SettingStorage *ad = data;
+       Elm_Object_Item *item = event_info;
+
+       elm_genlist_item_selected_set(item, 0);
+       Setting_GenGroupItem_Data *list_item =
+                       (Setting_GenGroupItem_Data *)elm_object_item_data_get(
+                                       item);
+       ad->sort_type = list_item->chk_status;
+       elm_radio_value_set(ad->sort_by_radio_group, ad->sort_type);
+
        _sort_miscs(data);
        _update_ui_list(data);
 }
 
 /*/////////////////////////////////////////////////////////////////////////// */
 
-/**
- * back button handler
- *
- * 1. "default" -> delete : back to default
- */
-
-static void _misces_back_click_cb(void *data, Evas_Object *obj,
-                               void *event_info)
-{
-       SettingStorage *ad = data;
-       ret_if(data == NULL);
-
-       elm_naviframe_item_pop(ad->md.naviframe);
-}
-
 static Eina_Bool _misc_view_pop_cb(void *data, Elm_Object_Item *it)
 {
        SettingStorage *ad = data;
@@ -252,7 +230,7 @@ static Eina_Bool _misc_view_pop_cb(void *data, Elm_Object_Item *it)
 
        if (ad->select_mode) {
                ad->select_mode = false;
-               _update_naviframe_buttons(ad);
+               storage_naviframe_update_buttons(ad);
                _genlist_check_hide(ad, true);
                _update_ui_list(ad);
                return EINA_FALSE;
@@ -265,8 +243,9 @@ static Eina_Bool _misc_view_pop_cb(void *data, Elm_Object_Item *it)
                _genlist_check_hide(ad, true);
 
                ad->misces_checked = 0;
-               _update_naviframe_buttons(ad);
-               _update_naviframe_title(ad);
+               storage_naviframe_update_buttons(ad);
+               storage_update_naviframe_title(ad, _(IDS_ST_BODY_MISCELLANEOUS_FILES),
+                               SETTING_STORAGE_STR_SELECT_FILES);
 
                return EINA_FALSE;
        }
@@ -275,59 +254,6 @@ static Eina_Bool _misc_view_pop_cb(void *data, Elm_Object_Item *it)
        return EINA_TRUE;
 }
 
-static void _update_naviframe_buttons(SettingStorage *ad)
-{
-       /*update delete item buttons*/
-       if (ad->select_mode) {
-               if (elm_object_item_part_content_get(
-                               ad->misces_navi_it, "title_left_btn") == NULL) {
-                       elm_object_item_part_content_set(ad->misces_navi_it,
-                               "title_left_btn", ad->cancel_delete_btn);
-               }
-               if (elm_object_item_part_content_get(
-                       ad->misces_navi_it, "title_right_btn") == NULL) {
-                       elm_object_item_part_content_set(ad->misces_navi_it,
-                                       "title_right_btn", ad->done_delete_btn);
-               }
-       } else {
-               if (elm_object_item_part_content_get(
-                               ad->misces_navi_it, "title_left_btn") != NULL) {
-                       elm_object_item_part_content_unset(ad->misces_navi_it,
-                                       "title_left_btn");
-                       evas_object_hide(ad->cancel_delete_btn);
-               }
-               if (elm_object_item_part_content_get(
-                       ad->misces_navi_it, "title_right_btn") != NULL) {
-                       elm_object_item_part_content_unset(ad->misces_navi_it,
-                                       "title_right_btn");
-                       evas_object_hide(ad->done_delete_btn);
-               }
-       }
-}
-
-static void _update_naviframe_title(SettingStorage *ad)
-{
-       char text[MAX_DISPLAY_NAME_LEN_ON_UI] = {'\0', };
-
-       ret_if(!ad);
-
-       if (!ad->select_mode) {
-               elm_object_item_part_text_set(ad->misces_navi_it, "default",
-                                       _(IDS_ST_BODY_MISCELLANEOUS_FILES));
-               return;
-       }
-
-       if (0 < ad->misces_checked) {
-               snprintf(text, sizeof(text), _(STORAGE_STR_N_SELECTED),
-                               ad->misces_checked);
-               elm_object_item_part_text_set(ad->misces_navi_it, "default",
-                               text);
-       } else {
-               elm_object_item_part_text_set(ad->misces_navi_it, "default",
-                               _("Select files"));
-       }
-}
-
 static bool storage_misces_media_item_cb(media_info_h media, void *data)
 {
        Node_Info *node = NULL;
@@ -345,11 +271,11 @@ static bool storage_misces_media_item_cb(media_info_h media, void *data)
        node = calloc(1, sizeof(Node_Info));
        if (node) {
                media_info_get_media_id(media, &node->id);
-               node->path = strdup(file_path);
+               node->size_str = strdup(file_path);
                media_info_get_display_name(media, &node->name);
                media_info_get_size(media, &node->size);
                media_info_get_added_time(media, &node->added_time);
-               ad->misces_list = eina_list_append(ad->misces_list, node);
+               ad->data_list = eina_list_append(ad->data_list, node);
        }
 
        free(file_path);
@@ -365,7 +291,7 @@ static void storage_misces_clear_list(Eina_List *list)
        EINA_LIST_FOREACH(list, l, node)
        {
                free(node->id);
-               free(node->path);
+               free(node->size_str);
                free(node->name);
                free(node);
        }
@@ -374,16 +300,17 @@ static void storage_misces_clear_list(Eina_List *list)
 
 static inline void storage_meisces_get_list(SettingStorage *ad)
 {
+       SETTING_TRACE_BEGIN;
        int ret;
        char condition[1024];
-       const char *tz_user_content = tzplatform_getenv(TZ_USER_CONTENT);
+       const char *tz_user_content = "/opt/usr/home/owner/media";// = tzplatform_getenv(TZ_USER_CONTENT);
        filter_h filter = NULL;
 
        ret_if(NULL == ad);
 
-       if (ad->misces_list) {
-               storage_misces_clear_list(ad->misces_list);
-               ad->misces_list = NULL;
+       if (ad->data_list) {
+               storage_misces_clear_list(ad->data_list);
+               ad->data_list = NULL;
        }
 
        /*Set Filter*/
@@ -391,6 +318,8 @@ static inline void storage_meisces_get_list(SettingStorage *ad)
                        "(MEDIA_TYPE=4) and MEDIA_PATH LIKE \'%s/%%\'",
                        tz_user_content);
 
+       SETTING_TRACE_DEBUG("## media condition: [%s]", condition);
+
        /*Set Filter*/
        ret = media_filter_create(&filter);
        if (ret != MEDIA_CONTENT_ERROR_NONE) {
@@ -422,7 +351,7 @@ static inline void storage_meisces_get_list(SettingStorage *ad)
                return;
        }
 
-       ad->misces_sz_all = eina_list_count(ad->misces_list);
+       ad->count_sz_all = eina_list_count(ad->data_list);
 }
 
 static void storage_misces_handle_selecting(SettingStorage *ad)
@@ -435,7 +364,7 @@ static void storage_misces_handle_selecting(SettingStorage *ad)
        ret_if(NULL == ad);
 
        was_select_all = ad->misces_is_select_all;
-       if (ad->misces_checked == ad->misces_sz_all)
+       if (ad->misces_checked == ad->count_sz_all)
                ad->misces_is_select_all = EINA_TRUE;
        else
                ad->misces_is_select_all = EINA_FALSE;
@@ -453,21 +382,8 @@ static void storage_misces_handle_selecting(SettingStorage *ad)
                }
        }
 
-       _update_naviframe_title(ad);
-}
-
-static void _handle_select_list(SettingStorage *ad, char *id,
-               int checked)
-{
-
-       if (checked) {
-               SETTING_TRACE("----- checked : %d ", ad->misces_checked);
-               ad->misces_checked++;
-       } else {
-               SETTING_TRACE("----- un-checked : %d", ad->misces_checked);
-
-               ad->misces_checked--;
-       }
+       storage_update_naviframe_title(ad, _(IDS_ST_BODY_MISCELLANEOUS_FILES),
+                       SETTING_STORAGE_STR_SELECT_FILES);
 }
 
 static void storage_misces_genlist_sel(void *data, Evas_Object *obj,
@@ -489,7 +405,7 @@ static void storage_misces_genlist_sel(void *data, Evas_Object *obj,
                        setting_update_gl_item_chk_status(d_item,
                                        !(d_item->chk_status));
 
-                       _handle_select_list(ad, node->id,
+                       storage_handle_select_list(ad, node->id,
                                        d_item->chk_status);
                        storage_misces_handle_selecting(ad);
                }
@@ -512,7 +428,7 @@ static void storage_misces_genlist_chk_cb(void *data, Evas_Object *obj,
                ad = node->ad;
                d_item->chk_status = elm_check_state_get(obj);
 
-               _handle_select_list(ad, node->id,
+               storage_handle_select_list(ad, node->id,
                                d_item->chk_status);
                storage_misces_handle_selecting(ad);
        } else {
@@ -520,61 +436,6 @@ static void storage_misces_genlist_chk_cb(void *data, Evas_Object *obj,
        }
 }
 
-static void _select_all_items(SettingStorage *ad)
-{
-       Eina_List *l = NULL;
-       Node_Info *node = NULL;
-       Setting_GenGroupItem_Data *item_data = NULL;
-
-       ret_if(!ad);
-
-       SETTING_TRACE_DEBUG("ad->misces_is_select_all--->%d",
-                               ad->misces_is_select_all);
-       SETTING_TRACE_DEBUG("ad->misces_list--->%x", ad->misces_list);
-       EINA_LIST_FOREACH(ad->misces_list, l, node)
-       {
-               if (node && node->data) {
-                       item_data = node->data;
-                       if (item_data) {
-                               item_data->chk_status =
-                                               ad->misces_is_select_all;
-                               elm_object_item_data_set(item_data->item,
-                                                       item_data);
-                               _handle_select_list(ad, node->id,
-                                               item_data->chk_status);
-                       }
-               }
-       }
-
-       elm_genlist_realized_items_update(ad->misces_genlist);
-
-       if (ad->misces_is_select_all) {
-               ad->misces_checked = ad->misces_sz_all;
-       } else {
-               ad->misces_checked = 0;
-       }
-       _update_naviframe_title(ad);
-}
-
-/**
- * "Select All" - check button handler
- */
-static inline void _select_all_chk_btn_cb(void *data, Evas_Object *obj,
-                                       void *event_info)
-{
-       SETTING_TRACE_BEGIN;
-       /* error check */
-       retm_if(data == NULL, "Data parameter is NULL");
-       Setting_GenGroupItem_Data *list_item =
-                       (Setting_GenGroupItem_Data *)data;
-       SettingStorage *ad = (SettingStorage *)list_item->userdata;
-
-       list_item->chk_status = elm_check_state_get(obj);
-       ad->misces_is_select_all = elm_check_state_get(obj);
-
-       _select_all_items(ad);
-}
-
 /**
  * Delete 'Select All' item in genlist
  */
@@ -589,51 +450,21 @@ static inline void storage_misces_gl_remove_select_all_item(
                elm_object_item_del(it);
 }
 
-/**
- * "Select All" check button
- */
-static void _append_select_all_item(SettingStorage *ad)
-{
-       SETTING_TRACE_BEGIN;
-       Setting_GenGroupItem_Data *item_data = NULL;
-
-       evas_object_data_set(ad->misces_genlist, "InsertType", "Prepend");
-
-       item_data = setting_create_Gendial_field_def(ad->misces_genlist,
-                       &(itc_1text_1icon), _select_all_check_cb,
-                       ad, SWALLOW_Type_1ICON_1RADIO, NULL, NULL, 0,
-                       _("IDS_ST_BODY_SELECT_ALL"), NULL,
-                       _select_all_chk_btn_cb);
-
-       if (item_data) {
-               item_data->userdata = ad;
-               item_data->isItemHideFlag = true;
-               elm_genlist_item_select_mode_set(item_data->item,
-                               ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
-       } else {
-               SETTING_TRACE_ERROR("item_data is NULL");
-       }
-
-       evas_object_data_set(ad->misces_genlist, "InsertType", "");
-}
-
 static void storage_misces_gl_append_items(SettingStorage *ad)
 {
-       SETTING_TRACE_BEGIN;
-       Node_Info *node;
-       Eina_List *cur;
+       Node_Info *node = NULL;
+       Eina_List *cur = NULL;
        Setting_GenGroupItem_Data *item_data = NULL;
 
-       EINA_LIST_FOREACH(ad->misces_list, cur, node)
+       EINA_LIST_FOREACH(ad->data_list, cur, node)
        {
                if (NULL == node)
                        continue;
-
                item_data = setting_create_Gendial_field_def(ad->misces_genlist,
                                &(itc_1text_1icon),
                                storage_misces_genlist_sel, ad,
                                SWALLOW_Type_1CHECK_RIGHT_INVISIBLE, NULL, NULL,
-                               0, node->name, node->path,
+                               0, node->name, node->size_str,
                                storage_misces_genlist_chk_cb);
 
                if (item_data) {
@@ -660,7 +491,7 @@ static void _clear_model_and_ui_lists(SettingStorage *ad)
        ret_if(NULL == ad);
 
        ad->misces_checked = 0;
-       ad->misces_sz_all = 0;
+       ad->count_sz_all = 0;
 
        /* Get second, because first is 'Check all' */
        it = elm_genlist_nth_item_get(ad->misces_genlist, 1);
@@ -673,24 +504,20 @@ static void _clear_model_and_ui_lists(SettingStorage *ad)
                if (!node)
                        continue;
                /* delete data form model: */
-               ad->misces_list = eina_list_remove(
-                               ad->misces_list, node);
+               ad->data_list = eina_list_remove(
+                               ad->data_list, node);
                free(node->id);
-               free(node->path);
+               free(node->size_str);
                free(node->name);
                free(node);
                it = elm_genlist_item_next_get(it);
        }
-       ad->misces_list = eina_list_free(ad->misces_list);
+       ad->data_list = eina_list_free(ad->data_list);
 
        /* delete UI elements: */
        elm_genlist_clear(ad->misces_genlist);
 }
 
-/**
- *
- * int misces_sz_all
- */
 static void _update_ui_list(SettingStorage *ad)
 {
        Evas_Object *toolbar = NULL;
@@ -795,7 +622,6 @@ static void _sort_miscs(SettingStorage *ad)
        sort_type_t type = elm_radio_value_get(ad->sort_by_radio_group);
 
        ret_if(!ad);
-
        switch (type) {
        case BY_SIZE:
                compare_fn = _compare_by_size;
@@ -809,8 +635,8 @@ static void _sort_miscs(SettingStorage *ad)
        default:
                return;
        }
-       ad->misces_list = eina_list_sort(ad->misces_list,
-                               eina_list_count(ad->misces_list), compare_fn);
+       ad->data_list = eina_list_sort(ad->data_list,
+                               eina_list_count(ad->data_list), compare_fn);
 }
 
 void _delete_files_thread_func_cb(int fn_result, SettingStorage *ad)
@@ -826,8 +652,9 @@ void _delete_files_thread_func_cb(int fn_result, SettingStorage *ad)
        storage_meisces_get_list(ad);
        _update_ui_list(ad);
 
-       _update_naviframe_buttons(ad);
-       _update_naviframe_title(ad);
+       storage_naviframe_update_buttons(ad);
+       storage_update_naviframe_title(ad, _(IDS_ST_BODY_MISCELLANEOUS_FILES),
+                       SETTING_STORAGE_STR_SELECT_FILES);
 
        evas_object_del(ad->popup);
        ad->popup = NULL;
@@ -840,7 +667,7 @@ void _delete_files_thread_func_cb(int fn_result, SettingStorage *ad)
 }
 
 /**
- * [controller] delete actual files with ad->misces_list
+ * [controller] delete actual files with ad->data_list
  *
  */
 static int _delete_files_thread_func(SettingStorage *ad)
@@ -851,7 +678,7 @@ static int _delete_files_thread_func(SettingStorage *ad)
 
        retv_if(NULL == ad, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
 
-       EINA_LIST_FOREACH(ad->misces_list, l, node)
+       EINA_LIST_FOREACH(ad->data_list, l, node)
        {
                if (node) {
                        item_data = node->data;
@@ -859,8 +686,8 @@ static int _delete_files_thread_func(SettingStorage *ad)
                        if (!item_data->chk_status)
                                continue;
 
-                       if (EINA_TRUE == ecore_file_remove(node->path)) {
-                               media_content_scan_file(node->path);
+                       if (EINA_TRUE == ecore_file_remove(node->size_str)) {
+                               media_content_scan_file(node->size_str);
                        } else {
                                SETTING_TRACE_ERROR(
                                                "failed to ecore_file_remove");
@@ -931,32 +758,6 @@ static void _misces_delete_click_cb(void *data, Evas_Object *obj,
                        2, STORAGE_STR_DELETE, STORAGE_STR_CANCEL);
 }
 
-/**
- * Genlist Touch handler
- * @todo _select_all_chk_btn_cb is similar to this function
- */
-static void _select_all_check_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       SETTING_TRACE_BEGIN;
-       Node_Info *node = NULL;
-       SettingStorage *ad = data;
-       Setting_GenGroupItem_Data *item_data = NULL;
-       Elm_Object_Item *item = event_info;
-
-       ret_if(data == NULL);
-
-       elm_genlist_item_selected_set(item, 0);
-       item_data = elm_object_item_data_get(item);
-       if (item_data) {
-               node = item_data->userdata;
-
-               setting_update_gl_item_chk_status(item_data,
-                                       !(item_data->chk_status));
-               _handle_select_list(ad, node->id, item_data->chk_status);
-               ad->misces_is_select_all = item_data->chk_status;
-               _select_all_items(ad);
-       }
-}
 
 /*-------------------------------------------------- */
 /* name: "storagelayout"; */
@@ -964,7 +765,6 @@ static void _select_all_check_cb(void *data, Evas_Object *obj, void *event_info)
 static int storage_misces_create(void *data)
 {
        SettingStorage *ad = data;
-       Evas_Object *btn = NULL;
        retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
 
        /* This will create UI list: */
@@ -980,25 +780,10 @@ static int storage_misces_create(void *data)
                ad->md.naviframe
                );
 
-       /* Cancel Button */
-       ad->cancel_delete_btn = setting_create_button(ad->md.naviframe,
-                       _("IDS_ST_BUTTON_CANCEL_ABB"), "naviframe/title_left",
-                       _misces_back_click_cb, ad);
-
-       /* Delete Button */
-       ad->done_delete_btn = setting_create_button(ad->md.naviframe,
-                       _("IDS_ST_BODY_DELETE"), "naviframe/title_right",
-                       _misces_delete_click_cb, ad);
-
-       /* Add ctx popup handler */
-       btn = setting_create_button(ad->md.naviframe,
-                               NULL, "naviframe/more/default",
-                               _show_more_menu_cb, ad);
-       elm_object_item_part_content_set(ad->misces_navi_it, "toolbar_more_btn",
-                                       btn);
+       storage_gl_add_button_support(ad, storage_back_click_cb,
+                       _misces_delete_click_cb, _show_more_menu_cb, BY_SIZE);
 
        _create_more_main_menu(ad);
-       _create_sort_by_sub_menu(ad);
 
        storage_meisces_get_list(ad);
        _sort_miscs(ad);
@@ -1030,9 +815,9 @@ static int storage_misces_destroy(void *data)
                ad->del_worker = NULL;
        }
 
-       if (ad->misces_list) {
-               storage_misces_clear_list(ad->misces_list);
-               ad->misces_list = NULL;
+       if (ad->data_list) {
+               storage_misces_clear_list(ad->data_list);
+               ad->data_list = NULL;
        }
 
        ad->misces_navi_it = NULL;
index b98f963d5c19a3858b35058982bd010c4cd26bab..6027fcbca8265dab360e93d94a14bb53357e4519 100644 (file)
@@ -387,3 +387,234 @@ void storage_update_apps_cache_info(SettingStorage *ad)
 
 }
 
+
+void storage_gl_add_button_support(
+               SettingStorage *ad,
+               Evas_Smart_Cb cancel_btn_cb,
+               Evas_Smart_Cb done_btn_cb,
+               Evas_Smart_Cb more_btn_cb,
+               unsigned int sort_type)
+{
+       retm_if(ad == NULL, "SettingStorage *ad parameter is NULL");
+
+       SETTING_TRACE_BEGIN;
+       Evas_Object *btn = NULL;
+       /* Cancel Button */
+       ad->cancel_delete_btn = setting_create_button(ad->md.naviframe,
+                       _("IDS_MSG_ACBUTTON_CANCEL_ABB"), "naviframe/title_left",
+                       cancel_btn_cb, ad);
+       evas_object_hide(ad->cancel_delete_btn);
+
+       /* Delete Button */
+       ad->done_delete_btn = setting_create_button(ad->md.naviframe,
+                       _("IDS_MSG_ACBUTTON_DONE_ABB"), "naviframe/title_right",
+                       done_btn_cb, ad);
+       evas_object_hide(ad->done_delete_btn);
+
+       /* Add ctx popup handler */
+       btn = setting_create_button(ad->md.naviframe,
+                               NULL, "naviframe/more/default",
+                               more_btn_cb, ad);
+       elm_object_item_part_content_set(ad->misces_navi_it, "toolbar_more_btn",
+                                       btn);
+
+       ad->sort_type = sort_type;
+}
+
+void storage_naviframe_update_buttons(SettingStorage *ad)
+{
+       /*update delete item buttons*/
+       if (ad->select_mode) {
+               if (elm_object_item_part_content_get(
+                               ad->misces_navi_it, "title_left_btn") == NULL) {
+                       elm_object_item_part_content_set(ad->misces_navi_it,
+                               "title_left_btn", ad->cancel_delete_btn);
+               }
+               if (elm_object_item_part_content_get(
+                       ad->misces_navi_it, "title_right_btn") == NULL) {
+                       elm_object_item_part_content_set(ad->misces_navi_it,
+                                       "title_right_btn", ad->done_delete_btn);
+               }
+       } else {
+               if (elm_object_item_part_content_get(
+                               ad->misces_navi_it, "title_left_btn") != NULL) {
+                       elm_object_item_part_content_unset(ad->misces_navi_it,
+                                       "title_left_btn");
+                       evas_object_hide(ad->cancel_delete_btn);
+               }
+               if (elm_object_item_part_content_get(
+                       ad->misces_navi_it, "title_right_btn") != NULL) {
+                       elm_object_item_part_content_unset(ad->misces_navi_it,
+                                       "title_right_btn");
+                       evas_object_hide(ad->done_delete_btn);
+               }
+       }
+}
+
+/**
+ * back button handler
+ *
+ * 1. "default" -> delete : back to default
+ */
+void storage_back_click_cb(void *data, Evas_Object *obj,
+                               void *event_info)
+{
+       SettingStorage *ad = data;
+       ret_if(data == NULL);
+
+       elm_naviframe_item_pop(ad->md.naviframe);
+}
+
+/**
+ * Genlist Touch handler
+ * @todo _select_all_chk_btn_cb is similar to this function
+ */
+void storage_select_all_check_cb(void *data, Evas_Object *obj,
+               void *event_info)
+{
+       SETTING_TRACE_BEGIN;
+       Node_Info *node = NULL;
+       SettingStorage *ad = data;
+       Setting_GenGroupItem_Data *item_data = NULL;
+       Elm_Object_Item *item = event_info;
+
+       ret_if(data == NULL);
+
+       elm_genlist_item_selected_set(item, 0);
+       item_data = elm_object_item_data_get(item);
+       if (item_data) {
+               node = item_data->userdata;
+
+               setting_update_gl_item_chk_status(item_data,
+                                       !(item_data->chk_status));
+               storage_handle_select_list(ad, node->id, item_data->chk_status);
+               ad->misces_is_select_all = item_data->chk_status;
+               storage_select_all_items(ad);
+       }
+}
+
+///**
+// * "Select All" - check button handler
+// */
+void storage_select_all_chk_btn_cb(void *data, Evas_Object *obj,
+                                       void *event_info)
+{
+       SETTING_TRACE_BEGIN;
+       /* error check */
+       retm_if(data == NULL, "Data parameter is NULL");
+       Setting_GenGroupItem_Data *list_item =
+                       (Setting_GenGroupItem_Data *)data;
+       SettingStorage *ad = (SettingStorage *)list_item->userdata;
+
+       list_item->chk_status = elm_check_state_get(obj);
+       ad->misces_is_select_all = elm_check_state_get(obj);
+
+       storage_select_all_items(ad);
+}
+
+void storage_handle_select_list(SettingStorage *ad, char *id,
+               int checked)
+{
+       if (checked) {
+               SETTING_TRACE("----- checked : %d ", ad->misces_checked);
+               ad->misces_checked++;
+       } else {
+               SETTING_TRACE("----- un-checked : %d", ad->misces_checked);
+
+               ad->misces_checked--;
+       }
+}
+
+void storage_select_all_items(SettingStorage *ad)
+{
+       Eina_List *l = NULL;
+       Node_Info *node = NULL;
+       Setting_GenGroupItem_Data *item_data = NULL;
+
+       ret_if(!ad);
+
+       SETTING_TRACE_DEBUG("ad->misces_is_select_all--->%d",
+                               ad->misces_is_select_all);
+       SETTING_TRACE_DEBUG("ad->data_list--->%x", ad->data_list);
+       EINA_LIST_FOREACH(ad->data_list, l, node)
+       {
+               if (node && node->data) {
+                       item_data = node->data;
+                       if (item_data) {
+                               item_data->chk_status =
+                                               ad->misces_is_select_all;
+                               elm_object_item_data_set(item_data->item,
+                                                       item_data);
+                               storage_handle_select_list(ad, node->id,
+                                               item_data->chk_status);
+                       }
+               }
+       }
+
+       elm_genlist_realized_items_update(ad->misces_genlist);
+
+       if (ad->misces_is_select_all) {
+               ad->misces_checked = ad->count_sz_all;
+       } else {
+               ad->misces_checked = 0;
+       }
+       if (ad->misces_view->is_create)
+               storage_update_naviframe_title(ad, _(IDS_ST_BODY_MISCELLANEOUS_FILES),
+                               SETTING_STORAGE_STR_SELECT_FILES);
+       else
+               storage_update_naviframe_title(ad, _(IDS_ST_BODY_APPLICATION),
+                               SETTING_STORAGE_STR_SELECT_APPS);
+}
+
+void storage_update_naviframe_title(SettingStorage *ad,
+               const char *title, const char *new_title)
+{
+       char text[MAX_DISPLAY_NAME_LEN_ON_UI] = {'\0', };
+
+       ret_if(!ad);
+
+       if (!ad->select_mode) {
+               elm_object_item_part_text_set(ad->misces_navi_it, "default",
+                                       title);
+               return;
+       }
+
+       if (0 < ad->misces_checked) {
+               snprintf(text, sizeof(text), _(STORAGE_STR_N_SELECTED),
+                               ad->misces_checked);
+               elm_object_item_part_text_set(ad->misces_navi_it, "default",
+                               text);
+       } else {
+               elm_object_item_part_text_set(ad->misces_navi_it, "default",
+                               new_title);
+       }
+}
+
+/**
+ * "Select All" check button
+ */
+void storage_append_select_all_item(SettingStorage *ad)
+{
+       SETTING_TRACE_BEGIN;
+       Setting_GenGroupItem_Data *item_data = NULL;
+
+       evas_object_data_set(ad->misces_genlist, "InsertType", "Prepend");
+
+       item_data = setting_create_Gendial_field_def(ad->misces_genlist,
+                       &(itc_1text_1icon), storage_select_all_check_cb,
+                       ad, SWALLOW_Type_1ICON_1RADIO, NULL, NULL, 0,
+                       _("IDS_ST_BODY_SELECT_ALL"), NULL,
+                       storage_select_all_chk_btn_cb);
+
+       if (item_data) {
+               item_data->userdata = ad;
+               item_data->isItemHideFlag = true;
+               elm_genlist_item_select_mode_set(item_data->item,
+                               ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+       } else {
+               SETTING_TRACE_ERROR("item_data is NULL");
+       }
+
+       evas_object_data_set(ad->misces_genlist, "InsertType", "");
+}
+