Update code to use APIs for USB storage 41/236141/2 accepted/tizen/unified/20200624.130207 submit/tizen/20200623.092644
authorKiseok Chang <kiso.chang@samsung.com>
Mon, 15 Jun 2020 07:23:53 +0000 (16:23 +0900)
committerKiseok Chang <kiso.chang@samsung.com>
Tue, 16 Jun 2020 09:11:05 +0000 (18:11 +0900)
Change-Id: I23168ecfc439259b8feabbe6c02ef2db8a3c6f90
Signed-off-by: Kiseok Chang <kiso.chang@samsung.com>
setting-storage/src/setting-storage-USB.c
setting-storage/src/setting-storage-applications.c
setting-storage/src/setting-storage-miscellaneous.c
setting-storage/src/setting-storage-utils.c

index d19a6181ddbef929906b01205ef80365644799cc..5cc9d3daf930e6cdbbd87799087eb279f22b168d 100644 (file)
  * limitations under the License.
  *
  */
-#include <dd-usbhost.h>
+#include <linux/limits.h>
 
 #include "setting-storage-utils.h"
 #include "setting-storage-USB.h"
 
-enum {
-       STORAGE_USB_REQ_NONE,
-       STORAGE_USB_REQ_MOUNT,
-       STORAGE_USB_REQ_UNMOUNT,
-       STORAGE_USB_REQ_UNMOUNT_BEFORE_FORMAT,
-       STORAGE_USB_REQ_FORMAT
+struct storage_stats {
+       unsigned long long total; // in bytes
+       unsigned long long available; // in bytes
 };
 
-static inline void storage_USB_unmount(SettingStorage *ad)
-{
-       int ret;
-       ret = unmount_usb_storage(ad->usb_otg_path);
-       if (ret < 0) {
-               SETTING_TRACE_ERROR("unmount_usb_storage(%s) Fail(%d)",
-                               ad->usb_otg_path, ret);
-               storage_fail_popup(ad);
-               ad->usb_request = STORAGE_USB_REQ_NONE;
-       } else {
-               ad->popup = setting_create_popup_with_progressbar(ad, ad->md.window,
-                               PROGRESSBAR_STYLE,
-                               NULL, STORAGE_STR_UNMOUNTING,
-                               storage_popup_del, 0, TRUE, TRUE, 0);
-       }
-}
-
-static inline void storage_USB_mount(SettingStorage *ad)
-{
-       int ret;
-
-       ret = mount_usb_storage(ad->usb_otg_path);
-       if (ret < 0) {
-               SETTING_TRACE_ERROR("mount_usb_storage(%s) Fail(%d)",
-                               ad->usb_otg_path, ret);
-               storage_fail_popup(ad);
-               ad->usb_request = STORAGE_USB_REQ_NONE;
-       } else {
-               ad->popup = setting_create_popup_with_progressbar(ad, ad->md.window,
-                               PROGRESSBAR_STYLE,
-                               NULL, NULL, storage_popup_del, 2, TRUE, TRUE,
-                               0);
-               ad->usb_request = STORAGE_USB_REQ_MOUNT;
-       }
-}
-
-static inline int storage_USB_format(SettingStorage *ad)
-{
-       int ret;
-
-       ret = format_usb_storage(ad->usb_otg_path);
-       if (ret < 0) {
-               SETTING_TRACE_ERROR("format_usb_storage(%s) Fail(%d)",
-                               ad->usb_otg_path, ret);
-               storage_fail_popup(ad);
-               return SETTING_RETURN_FAIL;
-       } else {
-               ad->popup = setting_create_popup_with_progressbar(ad, ad->md.window,
-                               PROGRESSBAR_STYLE,
-                               NULL, STORAGE_STR_FORMATTING,
-                               storage_popup_del, 0, TRUE, TRUE, 0);
-       }
-       return SETTING_RETURN_SUCCESS;
-}
-
-static void storage_USB_unmount_resp(void *data, Evas_Object *obj,
-               void *event_info)
-{
-       int response_type;
-       SettingStorage *ad = data;
-
-       ret_if(data == NULL);
-
-       response_type = btn_type(obj);
-
-       evas_object_del(ad->popup);
-       ad->popup = NULL;
-
-       if (POPUP_RESPONSE_OK == response_type) {
-               ad->usb_request = STORAGE_USB_REQ_UNMOUNT;
-               storage_USB_unmount(ad);
-       }
-}
-
-static void storage_USB_format_se_confirm(void *data, Evas_Object *obj,
-               void *event_info)
-{
-       int response_type;
-       SettingStorage *ad = data;
-
-       ret_if(data == NULL);
-
-       response_type = btn_type(obj);
-
-       evas_object_del(ad->popup);
-       ad->popup = NULL;
-
-       if (POPUP_RESPONSE_OK == response_type) {
-               ad->usb_request = STORAGE_USB_REQ_UNMOUNT_BEFORE_FORMAT;
-               storage_USB_unmount(ad);
-       }
-}
-
-static void storage_USB_format_first_confirm(void *data, Evas_Object *obj,
-               void *event_info)
-{
-       int response_type;
-       SettingStorage *ad = data;
-
-       ret_if(data == NULL);
-
-       response_type = btn_type(obj);
-       evas_object_del(ad->popup);
-       ad->popup = NULL;
-
-       if (POPUP_RESPONSE_OK == response_type) {
-               evas_object_del(ad->popup);
-
-               ad->popup = setting_create_popup(ad, ad->md.window, NULL,
-               STORAGE_STR_USB_FORMAT_SECOND_Q,
-                               storage_USB_format_se_confirm, 0, FALSE,
-                               FALSE, 2, STORAGE_STR_OK,
-                               STORAGE_STR_CANCEL);
-       }
-
-}
-
-static void storage_main_USB_sel(void *data, Evas_Object *obj,
-               void *event_info)
-{
-       SettingStorage *ad = data;
-       Elm_Object_Item *item = event_info;
-       Setting_GenGroupItem_Data *list_item;
-
-       ret_if(NULL == data);
-       ret_if(NULL == event_info);
-
-       elm_genlist_item_selected_set(item, 0);
-       list_item = elm_object_item_data_get(item);
-       setting_retm_if(NULL == list_item, "list_item is NULL");
-
-       SETTING_TRACE("clicking item[%s]", list_item->keyStr);
-
-       evas_object_del(ad->popup);
-       ad->popup = NULL;
-
-       if (list_item == ad->usb_mount) {
-               storage_USB_mount(ad);
-       } else if (list_item == ad->usb_unmount) {
-               ad->popup = setting_create_popup(ad, ad->md.window, NULL,
-               STORAGE_STR_USB_UNMOUNT_POPUP_MSG, storage_USB_unmount_resp,
-                               0, FALSE, FALSE, 2, STORAGE_STR_OK,
-                               STORAGE_STR_CANCEL);
-
-       } else if (list_item == ad->usb_format) {
-               ad->popup = setting_create_popup(ad, ad->md.window, NULL,
-               STORAGE_STR_USB_FORMAT_Q, storage_USB_format_first_confirm,
-                               0, FALSE, FALSE, 2, STORAGE_STR_OK,
-                               STORAGE_STR_CANCEL);
-       }
-}
-
-static inline void storage_USB_remove_info(SettingStorage *ad)
+static void storage_clear_ui(SettingStorage *ad)
 {
        if (ad->usb_card) {
                elm_object_item_del(ad->usb_card->item);
                ad->usb_card = NULL;
        }
-       if (ad->usb_mount) {
-               elm_object_item_del(ad->usb_mount->item);
-               ad->usb_mount = NULL;
-       }
        if (ad->usb_total) {
                elm_object_item_del(ad->usb_total->item);
                ad->usb_total = NULL;
@@ -199,27 +40,22 @@ static inline void storage_USB_remove_info(SettingStorage *ad)
                elm_object_item_del(ad->usb_available->item);
                ad->usb_available = NULL;
        }
-       if (ad->usb_unmount) {
-               elm_object_item_del(ad->usb_unmount->item);
-               ad->usb_unmount = NULL;
-       }
-       if (ad->usb_format) {
-               elm_object_item_del(ad->usb_format->item);
-               ad->usb_format = NULL;
-       }
 }
 
-static inline void storage_USB_append_mounted_info(SettingStorage *ad)
+static void storage_create_ui(SettingStorage *ad, struct storage_stats *stats)
 {
-       double total = 0.0;
-       double avail = 0.0;
+       double total = stats->total;
+       double avail = stats->available;
        char total_str[STORAGE_MAX_STR_LEN] = { 0 };
        char avail_str[STORAGE_MAX_STR_LEN] = { 0 };
 
-       storage_get_external_storage_status(ad->usb_otg_path, &total, &avail);
        storage_size_to_str(total, total_str, sizeof(total_str));
        storage_size_to_str(avail, avail_str, sizeof(avail_str));
 
+       /* USB OTG storage */
+       ad->usb_card = setting_create_Gendial_field_titleItem(ad->md.genlist,
+                       &(ad->itc_group_item), STORAGE_STR_USB, NULL);
+
        /* Total space */
        ad->usb_total = setting_create_Gendial_field_def(ad->md.genlist,
                        &(ad->itc_2text_2),
@@ -245,131 +81,86 @@ static inline void storage_USB_append_mounted_info(SettingStorage *ad)
        } else {
                SETTING_TRACE_ERROR("ad->usb_available is NULL");
        }
-
-       /* Usb Unmount*/
-       ad->usb_unmount = setting_create_Gendial_field_def(ad->md.genlist,
-                       &(ad->itc_1text), storage_main_USB_sel, ad,
-                       SWALLOW_Type_INVALID, NULL, NULL, 0,
-                       STORAGE_STR_UNMOUNT_USB, NULL, NULL);
-       if (ad->usb_unmount)
-               ad->usb_unmount->userdata = ad;
-       else
-               SETTING_TRACE_ERROR("ad->usb_unmount is NULL");
-
-       /* Usb Format*/
-       ad->usb_format = setting_create_Gendial_field_def(ad->md.genlist,
-                       &(ad->itc_1text), storage_main_USB_sel, ad,
-                       SWALLOW_Type_INVALID, NULL, NULL, 0,
-                       STORAGE_STR_FORMAT_USB, NULL, NULL);
-       if (ad->usb_format)
-               ad->usb_format->userdata = ad;
-       else
-               SETTING_TRACE_ERROR("ad->usb_format is NULL");
 }
 
-static inline void storage_main_append_USB_info(SettingStorage *ad)
+static bool storage_foreach_supported_cb(int storage_id, storage_type_e type, storage_state_e state, const char *path, void *user_data)
 {
-       ret_if(NULL == ad);
+       struct storage_stats *stats = user_data;
+       unsigned long long total, available;
+       int err;
 
-       if (ad->usb_card)
-               storage_USB_remove_info(ad);
+       if (type != STORAGE_TYPE_EXTERNAL)
+               return true;
 
-       if (ad->usb_otg_status == SETTING_STORAGE_USB_OTG_REMOVE)
-               return;
+       if ((state != STORAGE_STATE_MOUNTED) && (state != STORAGE_STATE_MOUNTED_READ_ONLY))
+               return true;
 
-       /* USB OTG storage */
-       ad->usb_card = setting_create_Gendial_field_titleItem(ad->md.genlist,
-                       &(ad->itc_group_item), STORAGE_STR_USB, NULL);
+       err = storage_get_total_space(storage_id, &total);
+       retvm_if(err != 0, err, "storage_get_total_space() Fail(%d)", err);
 
-       if (SETTING_STORAGE_USB_OTG_MOUNT == ad->usb_otg_status) {
-               storage_USB_append_mounted_info(ad);
-       } else {
-               /* Usb Mount*/
-               ad->usb_mount = setting_create_Gendial_field_def(ad->md.genlist,
-                               &(ad->itc_1text), storage_main_USB_sel, ad,
-                               SWALLOW_Type_INVALID, NULL, NULL, 0,
-                               STORAGE_STR_MOUNT_USB, NULL, NULL);
-               if (ad->usb_mount)
-                       ad->usb_mount->userdata = ad;
-               else
-                       SETTING_TRACE_ERROR("ad->usb_mount is NULL");
-       }
+       err = storage_get_available_space(storage_id, &available);
+       retvm_if(err != 0, true, "storage_get_available_space() Fail(%d)", err);
+
+       stats->total += total;
+       stats->available += available;
+
+       return true;
 }
 
-static void storage_USB_cb(char *type, char *path, int mount, void *data)
+static void storage_load_stats(struct storage_stats *stats)
 {
-       int ret;
-       SettingStorage *ad = data;
-
-       ret_if(NULL == type);
-       ret_if(NULL == path);
-       ret_if(NULL == data);
+       stats->total = 0;
+       stats->available = 0;
 
-       SETTING_TRACE_DEBUG("path:%s type:%s", path, type);
+       int ret = storage_foreach_device_supported(storage_foreach_supported_cb, stats);
+       retm_if(ret != STORAGE_ERROR_NONE, "storage_foreach_device_supported () Fail(%d)", ret);
+}
 
-       FREE(ad->usb_otg_path);
-       ad->usb_otg_path = SAFE_STRDUP(path);
+static void storage_refresh_ui(SettingStorage *ad, struct storage_stats *stats)
+{
+       storage_clear_ui(ad);
 
-       evas_object_del(ad->popup);
-       ad->popup = NULL;
+       if (stats->total == 0)
+               return;
 
-       if (!strcmp(type, "storage_remove")) {
-               ad->usb_otg_status = SETTING_STORAGE_USB_OTG_REMOVE;
-       } else if (!strcmp(type, "storage_mount")) {
-               ad->usb_otg_status = SETTING_STORAGE_USB_OTG_MOUNT;
-               if (STORAGE_USB_REQ_UNMOUNT == ad->usb_request) {
-                       SETTING_TRACE_ERROR("unmount_usb_storage() Fail");
-                       storage_fail_popup(ad);
-               }
-       } else if (!strcmp(type, "storage_unmount")) {
-               ad->usb_otg_status = SETTING_STORAGE_USB_OTG_UNMOUNT;
-               if (STORAGE_USB_REQ_UNMOUNT_BEFORE_FORMAT == ad->usb_request) {
-                       ret = storage_USB_format(ad);
-                       if (SETTING_RETURN_SUCCESS == ret) {
-                               ad->usb_request = STORAGE_USB_REQ_FORMAT;
-                       } else {
-                               ad->usb_request = STORAGE_USB_REQ_NONE;
-                               storage_USB_mount(ad);
-                       }
-                       return;
-               } else if (STORAGE_USB_REQ_FORMAT == ad->usb_request) {
-                       SETTING_TRACE_ERROR("format_usb_storage() Fail");
-                       storage_fail_popup(ad);
-               } else if (STORAGE_USB_REQ_MOUNT == ad->usb_request) {
-                       SETTING_TRACE_ERROR("mount_usb_storage() Fail");
-                       storage_fail_popup(ad);
-               }
-       } else if (!strcmp(type, "storage_updated")) {
-               if (mount == 0)
-                       ad->usb_otg_status = SETTING_STORAGE_USB_OTG_UNMOUNT;
-               else
-                       ad->usb_otg_status = SETTING_STORAGE_USB_OTG_MOUNT;
-       }
-       ad->usb_request = STORAGE_USB_REQ_NONE;
-       storage_main_append_USB_info(ad);
+       storage_create_ui(ad, stats);
 }
 
-void storage_init_USB(SettingStorage *ad)
+static void storage_refresh(SettingStorage *ad)
 {
-       int ret;
+       struct storage_stats stats;
 
-       ret = init_usbhost_signal();
-       retm_if(ret < 0, "init_usbhost_signal() Fail(%d)", ret);
+       storage_load_stats(&stats);
+       storage_refresh_ui(ad, &stats);
+}
+
+static void storage_storage_changed_cb(int storage_id, storage_dev_e dev, storage_state_e state, const char *fstype, const char *fsuuid, const char *mountpath, bool primary, int flags, void *user_data)
+{
+       SettingStorage *ad = user_data;
 
-       ret = register_usb_storage_change_handler(storage_USB_cb, ad);
-       if (ret < 0) {
-               SETTING_TRACE_ERROR(
-                               "register_usb_storage_change_handler() Fail(%d)",
-                               ret);
-               deinit_usbhost_signal();
+       if (dev != STORAGE_DEV_EXT_USB_MASS_STORAGE)
                return;
+
+       switch (state) {
+               case STORAGE_STATE_UNMOUNTABLE:
+                       break;
+               case STORAGE_STATE_REMOVED:
+               case STORAGE_STATE_MOUNTED:
+               case STORAGE_STATE_MOUNTED_READ_ONLY:
+                       storage_refresh(ad);
+                       break;
        }
+}
+
+void storage_init_USB(SettingStorage *ad)
+{
+       int ret = storage_set_changed_cb(STORAGE_TYPE_EXTERNAL, storage_storage_changed_cb, ad);
+       retm_if(ret != STORAGE_ERROR_NONE, "storage_set_changed_cb() Fail(%d)", ret);
 
-       ret = request_usb_storage_info();
-       warn_if(ret < 0, "request_usb_storage_info() Fail(%d)", ret);
+       storage_refresh(ad);
 }
 
 void storage_deinit_USB()
 {
-       deinit_usbhost_signal();
+       storage_unset_changed_cb(STORAGE_TYPE_EXTERNAL, storage_storage_changed_cb);
 }
index f23fff4df2b9eefed92096f34f279af76876f8b7..89b49d6a34865deb256b3950552e94058e3b1188 100755 (executable)
  */
 #include <aul_svc.h>
 #include <package_manager.h>
-#include <pkgmgr-info.h>
 
 #include "setting-storage-utils.h"
 #include "setting-storage-async-worker.h"
 #include "setting-storage-applications.h"
 #include "setting-storage-applications-utils.h"
 
-#include <tzplatform_config.h>
+//#include <tzplatform_config.h>
 #include <media_content.h>
 #include <efl_extension.h>
 
index c1de84cdd910b594ba16223ccff24b80d860fb5b..bf48ce2fbaacdea7fcae2936697ba33ba65d5169 100755 (executable)
@@ -20,7 +20,6 @@
 #include "setting-storage-async-worker.h"
 #include "setting-storage-miscellaneous.h"
 
-#include <tzplatform_config.h>
 #include <media_content.h>
 #include <efl_extension.h>
 
@@ -292,7 +291,7 @@ static bool __media_item_cb(media_info_h media, void *data)
                media_info_get_media_id(media, &node->id);
                node->size_str = strdup(file_path);
                ret = media_info_get_display_name(media, &node->name);
-               if(MEDIA_CONTENT_ERROR_NONE != ret)
+               if (MEDIA_CONTENT_ERROR_NONE != ret)
                        node->name = strdup("");
                media_info_get_size(media, &node->size);
                media_info_get_added_time(media, &node->added_time);
index 4e5465a62b5e15cce0e9ec05283d33d14888d36f..ffa3dc812a0d3cf7df5f3ee27877e7028705ba9f 100755 (executable)
@@ -19,7 +19,6 @@
 #include <glib.h>
 #include <storage.h>
 #include <media_content.h>
-#include <tzplatform_config.h>
 #include <package_manager.h>
 
 #include "setting-storage-async-worker.h"