[STORAGE] Ability to move apps to the internal storage sd card. 20/161120/6
authorMichal Skorupinski <m.skorupinsk@samsung.com>
Tue, 21 Nov 2017 14:53:27 +0000 (15:53 +0100)
committerMichal Skorupinski <m.skorupinsk@samsung.com>
Thu, 23 Nov 2017 14:48:22 +0000 (15:48 +0100)
Change-Id: Id0b76cc56c8771f637040c346f8b09b5bf8abaaa
Signed-off-by: Michal Skorupinski <m.skorupinsk@samsung.com>
setting-storage/include/setting-storage.h
setting-storage/src/setting-storage-SD.c
setting-storage/src/setting-storage-applications.c
setting-storage/src/setting-storage-main.c
setting-storage/src/setting-storage.c

index b0e4be194058cfee868246f51425efa0e40e69b7..8896a2f80a28bdfa062f411c77d3a1329a305b00 100755 (executable)
@@ -160,6 +160,8 @@ typedef struct _SettingStorage {
        int mmc_status;
 
        media_content_noti_h h_mcdb_noti;
+       char *launch_mode;
+       int apps_to_move;
 } SettingStorage;
 
 typedef struct {
index 680114b4db205cf832d3cbf75f55751f03fb7db8..10c0e19c25145f4062b3fad28242e2a9cc7bc600 100755 (executable)
@@ -311,6 +311,7 @@ static void storage_format_as_extended_storage(void *data, Evas_Object *obj,
 {
        Elm_Object_Item *item = event_info;
        app_control_h app_ctl = NULL;
+       int ret;
 
        ret_if(!event_info);
 
@@ -321,12 +322,13 @@ static void storage_format_as_extended_storage(void *data, Evas_Object *obj,
                return;
        }
        app_control_set_app_id(app_ctl, "org.tizen.extended-sd");
-       app_control_add_extra_data(app_ctl, "_SDCARD_SETUP_TYPE_",
-                                                                       "EXTENDED_STORAGE_SETUP");
+       app_control_add_extra_data(app_ctl, "_SDCARD_SETUP_TYPE_", "EXTENDED_STORAGE_SETUP");
        app_control_set_launch_mode(app_ctl, APP_CONTROL_LAUNCH_MODE_GROUP);
-       if (APP_CONTROL_ERROR_NONE !=
-                       app_control_send_launch_request(app_ctl, NULL, NULL))
-               SETTING_TRACE_ERROR("org.tizen.extended-sd launch request failed");
+
+       ret = app_control_send_launch_request(app_ctl, NULL, NULL);
+       if (ret != APP_CONTROL_ERROR_NONE) {
+               dlog_print(DLOG_ERROR, LOG_TAG, "\033[0;31m[%s:%d] app_control_send_launch_request() error: %s\033[0m", __FILE__, __LINE__, get_error_message(ret));
+       }
 
        app_control_destroy(app_ctl);
 }
index 6497f11c31430010731aa7a06d8ee5af0a7d63c4..dce5fc7fcf239bd687d6ec4c577fc76f10c7cac2 100755 (executable)
@@ -17,6 +17,7 @@
  *
  */
 #include <aul_svc.h>
+#include <package_manager.h>
 #include <pkgmgr-info.h>
 
 #include "setting-storage-utils.h"
@@ -66,6 +67,8 @@ static setting_view setting_view_storage_apps;
 
 static void _move_more_ctxpopup(Evas_Object *ctxpopup)
 {
+       SETTING_TRACE_BEGIN;
+
        Evas_Object *win = NULL;
        Evas_Coord w = 0;
        Evas_Coord h = 0;
@@ -87,16 +90,24 @@ static void _move_more_ctxpopup(Evas_Object *ctxpopup)
                evas_object_move(ctxpopup, (h / 2), w);
                break;
        }
+
+       SETTING_TRACE_END;
 }
 
 static void _naviframe_resize_cb(void *data, Evas *e, Evas_Object *obj,
                void *event_info)
 {
+       SETTING_TRACE_BEGIN;
+
        _move_more_ctxpopup((Evas_Object *)data);
+
+       SETTING_TRACE_END;
 }
 
 static void _genlist_check_hide(SettingStorage *ad, bool hide)
 {
+       SETTING_TRACE_BEGIN;
+
        Setting_GenGroupItem_Data *sel = NULL;
        Elm_Object_Item *it = elm_genlist_first_item_get(ad->misces_genlist);
 
@@ -112,6 +123,8 @@ static void _genlist_check_hide(SettingStorage *ad, bool hide)
                                ELM_GENLIST_ITEM_FIELD_CONTENT);
                it = elm_genlist_item_next_get(it);
        }
+
+       SETTING_TRACE_END;
 }
 
 /**
@@ -120,6 +133,8 @@ static void _genlist_check_hide(SettingStorage *ad, bool hide)
 static void _ctx_uninstall_click_cb(void *data, Evas_Object *ctxpopup,
                void *event_info)
 {
+       SETTING_TRACE_BEGIN;
+
        retm_if(data == NULL, "Data parameter is NULL");
        SettingStorage *ad = (SettingStorage *)data;
 
@@ -133,10 +148,14 @@ static void _ctx_uninstall_click_cb(void *data, Evas_Object *ctxpopup,
        storage_naviframe_update_buttons(ad);
        storage_update_naviframe_title(ad, _(IDS_ST_BODY_APPLICATION),
                        SETTING_STORAGE_STR_SELECT_APPS);
+
+       SETTING_TRACE_END;
 }
 
 static Evas_Object *_create_ctxpopup(SettingStorage *ad)
 {
+       SETTING_TRACE_BEGIN;
+
        Evas_Object *ctxpopup = elm_ctxpopup_add(ad->md.naviframe);
        elm_object_style_set(ctxpopup, "more/default");
 
@@ -153,12 +172,15 @@ static Evas_Object *_create_ctxpopup(SettingStorage *ad)
        evas_object_event_callback_add(ad->md.naviframe, EVAS_CALLBACK_RESIZE,
                                        _naviframe_resize_cb, ctxpopup);
        _move_more_ctxpopup(ctxpopup);
+
+       SETTING_TRACE_END;
        return ctxpopup;
 }
 
 static void _create_sort_by_sub_menu(SettingStorage *ad)
 {
        SETTING_TRACE_BEGIN;
+
        Evas_Object *check = NULL;
 
        Evas_Object *menu_glist = NULL;
@@ -197,11 +219,14 @@ static void _create_sort_by_sub_menu(SettingStorage *ad)
                        NULL);
 
        elm_radio_value_set(check, ad->sort_type_app_view);
+
+       SETTING_TRACE_END;
 }
 
 static void _create_more_main_menu(SettingStorage *ad)
 {
        SETTING_TRACE_BEGIN;
+
        ad->main_menu_popup = _create_ctxpopup(ad);
 
        ad->apps_uninstall_ctx_it = elm_ctxpopup_item_append(ad->main_menu_popup,
@@ -210,12 +235,15 @@ static void _create_more_main_menu(SettingStorage *ad)
        elm_ctxpopup_item_append(ad->main_menu_popup,
                                _("IDS_ST_HEADER_SORT_BY"), NULL,
                                _show_sort_by_menu_cb, ad);
+
+       SETTING_TRACE_END;
 }
 
 static void _show_more_menu_cb(void *data, Evas_Object *obj,
                void *event_info)
 {
        SETTING_TRACE_BEGIN;
+
        Node_Info *node = NULL;
        Eina_List *cur = NULL;
        int removable_count = 0;
@@ -233,21 +261,28 @@ static void _show_more_menu_cb(void *data, Evas_Object *obj,
                                                                (removable_count <= 0));
 
        evas_object_show(ad->main_menu_popup);
+
+       SETTING_TRACE_END;
 }
 
 static void _show_sort_by_menu_cb(void *data, Evas_Object *sub_menu_ctxpopup,
                void *event_info)
 {
        SETTING_TRACE_BEGIN;
+
        SettingStorage *ad = (SettingStorage *)data;
        ret_if(!ad);
        elm_ctxpopup_dismiss(ad->main_menu_popup);
        _create_sort_by_sub_menu(ad);
+
+       SETTING_TRACE_END;
 }
 
 static void _sort_by_check_change_cb(void *data, Evas_Object *obj,
                                        void *event_info)
 {
+       SETTING_TRACE_BEGIN;
+
        SettingStorage *ad = data;
        Elm_Object_Item *item = event_info;
 
@@ -262,12 +297,15 @@ static void _sort_by_check_change_cb(void *data, Evas_Object *obj,
        elm_radio_value_set(ad->sort_by_radio_group, ad->sort_type_app_view);
        _sort_apps(data);
        _update_ui_list(data);
+
+       SETTING_TRACE_END;
 }
 /*/////////////////////////////////////////////////////////////////////////// */
 
 static Eina_Bool _apps_view_pop_cb(void *data, Elm_Object_Item *it)
 {
        SETTING_TRACE_BEGIN;
+
        SettingStorage *ad = data;
        retv_if(data == NULL, EINA_FALSE);
 
@@ -296,11 +334,15 @@ static Eina_Bool _apps_view_pop_cb(void *data, Elm_Object_Item *it)
        }
 
        setting_view_change(ad->apps_view, ad->main_view, ad);
+
+       SETTING_TRACE_END;
        return EINA_TRUE;
 }
 
 static void storage_misces_handle_selecting(SettingStorage *ad)
 {
+       SETTING_TRACE_BEGIN;
+
        Evas_Object *gl = NULL;
        Elm_Object_Item *it = NULL;
        Setting_GenGroupItem_Data *d_item = NULL;
@@ -328,12 +370,15 @@ static void storage_misces_handle_selecting(SettingStorage *ad)
 
        storage_update_naviframe_title(ad, _(IDS_ST_BODY_APPLICATION),
                        SETTING_STORAGE_STR_SELECT_APPS);
+
+       SETTING_TRACE_END;
 }
 
 static void storage_apps_genlist_sel(void *data, Evas_Object *obj,
                void *event_info)
 {
        SETTING_TRACE_BEGIN;
+
        Elm_Object_Item *item = event_info;
        SettingStorage *ad = data;
        Node_Info *node = NULL;
@@ -372,6 +417,8 @@ static void storage_apps_genlist_sel(void *data, Evas_Object *obj,
                app_control_send_launch_request(svc, NULL, NULL);
                app_control_destroy(svc);
        }
+
+       SETTING_TRACE_END;
 }
 
 static void storage_apps_genlist_chk_cb(void *data, Evas_Object *obj,
@@ -405,15 +452,20 @@ static inline void storage_apps_gl_remove_select_all_item(
                SettingStorage *ad)
 {
        SETTING_TRACE_BEGIN;
+
        Evas_Object *gl = ad->misces_genlist;
 
        Elm_Object_Item *it = elm_genlist_first_item_get(gl);
        if (it)
                elm_object_item_del(it);
+
+       SETTING_TRACE_END;
 }
 
 static void storage_apps_gl_append_removable_items(SettingStorage *ad)
 {
+       SETTING_TRACE_BEGIN;
+
        Node_Info *node;
        Eina_List *cur;
        Setting_GenGroupItem_Data *item_data = NULL;
@@ -440,12 +492,16 @@ static void storage_apps_gl_append_removable_items(SettingStorage *ad)
                        SETTING_TRACE_ERROR("item_data is NULL");
                }
        }
+
        storage_misces_handle_selecting(ad);
+
+       SETTING_TRACE_END;
 }
 
 static void storage_apps_gl_append_items(SettingStorage *ad)
 {
        SETTING_TRACE_BEGIN;
+
        Node_Info *node;
        Eina_List *cur;
        Setting_GenGroupItem_Data *item_data = NULL;
@@ -472,11 +528,16 @@ static void storage_apps_gl_append_items(SettingStorage *ad)
                        SETTING_TRACE_ERROR("item_data is NULL");
                }
        }
+
        storage_misces_handle_selecting(ad);
+
+       SETTING_TRACE_END;
 }
 
 static void _update_ui_list(SettingStorage *ad)
 {
+       SETTING_TRACE_BEGIN;
+
        Evas_Object *toolbar = NULL;
 
        SETTING_TRACE("Entering _update_ui_list");
@@ -513,12 +574,16 @@ static void _update_ui_list(SettingStorage *ad)
                                elm_toolbar_last_item_get(toolbar),
                                EINA_TRUE);
        }
+
+       SETTING_TRACE_END;
 }
 
 /******************************************************************************/
 
 void _uninstall_app_thread_func_cb(int fn_result, SettingStorage *ad)
 {
+       SETTING_TRACE_BEGIN;
+
        ret_if(NULL == ad);
 
        ad->del_worker = NULL;
@@ -540,6 +605,8 @@ void _uninstall_app_thread_func_cb(int fn_result, SettingStorage *ad)
                                fn_result);
                storage_fail_popup(ad);
        }
+
+       SETTING_TRACE_END;
 }
 
 /**
@@ -549,6 +616,7 @@ void _uninstall_app_thread_func_cb(int fn_result, SettingStorage *ad)
 static int _uninstall_app_thread_func(SettingStorage *ad)
 {
        SETTING_TRACE_BEGIN;
+
        Node_Info *node = NULL;
        Setting_GenGroupItem_Data *item_data = NULL;
        Elm_Object_Item *it = NULL;
@@ -596,16 +664,18 @@ static int _uninstall_app_thread_func(SettingStorage *ad)
 
        sleep(4);
 
+       SETTING_TRACE_END;
+
        return SETTING_RETURN_SUCCESS;
 }
 
 /**
  * [UI] Done button -> create popup -> button handler
  */
-static void _apps_delete_popup_cb(void *data, Evas_Object *obj,
-               void *event_info)
+static void _apps_delete_popup_cb(void *data, Evas_Object *obj, void *event_info)
 {
        SETTING_TRACE_BEGIN;
+
        int response_type;
        SettingStorage *ad = data;
 
@@ -642,18 +712,206 @@ static void _apps_delete_popup_cb(void *data, Evas_Object *obj,
                STORAGE_STR_NO_SELECTED, storage_popup_del,
                SETTING_STORAGE_POPUP_TIMER, FALSE, FALSE, 0);
        }
+
+       SETTING_TRACE_END;
+}
+
+static void _move_request_cb(int id,
+               const char *type,
+               const char *package,
+               package_manager_event_type_e event_type,
+               package_manager_event_state_e event_state,
+               int progress,
+               package_manager_error_e error,
+               void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+
+       SettingStorage *ad = (SettingStorage *)user_data;
+       char *event_type_str = NULL;
+       char *event_state_str = NULL;
+
+       switch (event_type) {
+       case PACKAGE_MANAGER_EVENT_TYPE_INSTALL:
+               event_type_str = "TYPE_INSTALL";
+               break;
+       case PACKAGE_MANAGER_EVENT_TYPE_UNINSTALL:
+               event_type_str = "TYPE_UNINSTALL";
+               break;
+       case PACKAGE_MANAGER_EVENT_TYPE_UPDATE:
+               event_type_str = "TYPE_UPDATE";
+               break;
+       case PACKAGE_MANAGER_EVENT_TYPE_MOVE:
+               event_type_str = "TYPE_MOVE";
+               break;
+       case PACKAGE_MANAGER_EVENT_TYPE_CLEAR:
+               event_type_str = "TYPE_CLEAR";
+               break;
+       default:
+               event_type_str = "TYPE_UNKNOWN";
+               break;
+       }
+
+       switch (event_state) {
+       case PACKAGE_MANAGER_EVENT_STATE_STARTED:
+               event_state_str = "STATE_STARTED";
+               break;
+       case PACKAGE_MANAGER_EVENT_STATE_PROCESSING:
+               event_state_str = "STATE_PROCESSING";
+               break;
+       case PACKAGE_MANAGER_EVENT_STATE_COMPLETED:
+               event_state_str = "STATE_COMPLETED";
+               break;
+       case PACKAGE_MANAGER_EVENT_STATE_FAILED:
+               event_state_str = "STATE_FAILED";
+               break;
+       default:
+               event_state_str = "STATE_UNKNOWN";
+               break;
+       }
+
+       if (event_state == PACAKGE_MANAGER_EVENT_STATE_COMPLETED || event_state == PACAKGE_MANAGER_EVENT_STATE_FAILED || error != PACKAGE_MANAGER_ERROR_NONE)
+               ad->apps_to_move--;
+
+       if (ad->apps_to_move <= 0) {
+               dlog_print(DLOG_DEBUG, LOG_TAG, "\033[0;32m[%s:%d] Apps moved. Closing the popup.\033[0m", basename(__FILE__), __LINE__);
+
+               if (ad->popup) {
+                       evas_object_del(ad->popup);
+                       ad->popup = NULL;
+               }
+       }
+
+       dlog_print(DLOG_INFO, LOG_TAG, "[%s:%d]\033[0;35m ID:%d, pkg:{%s, %s} {%s, %s}, %d%%, ERR: %s,\033[0m",
+                       basename(__FILE__), __LINE__,
+                       id,
+                       type, package,
+                       event_type_str, event_state_str,
+                       progress,
+                       get_error_message(error));
+
+       SETTING_TRACE_END;
+}
+
+static void _move_to_sd(SettingStorage *ad)
+{
+       SETTING_TRACE_BEGIN;
+
+       Setting_GenGroupItem_Data *d_item = NULL;
+       Node_Info *node = NULL;
+       package_manager_move_type_e move_type;
+       int sd_card_status;
+       package_manager_request_h request = NULL;
+       int id = 0;
+       Elm_Genlist_Item *it = elm_genlist_first_item_get(ad->misces_genlist);
+
+       if (!it) {
+               dlog_print(DLOG_ERROR, LOG_TAG, "\033[0;31m[%s:%d] it == NULL\033[0m", __FILE__, __LINE__);
+               return;
+       }
+
+       int ret = package_manager_request_create(&request);
+       if (ret != PACKAGE_MANAGER_ERROR_NONE) {
+               dlog_print(DLOG_ERROR, LOG_TAG, "\033[0;31m[%s:%d] package_manager_request_create() error: %s\033[0m", __FILE__, __LINE__, get_error_message(ret));
+               return;
+       }
+
+       ret = vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &sd_card_status);
+       if (ret != 0) {
+               dlog_print(DLOG_ERROR, LOG_TAG, "\033[0;31m[%s:%d] vconf_get_int() error: %s\033[0m", __FILE__, __LINE__, get_error_message(ret));
+               return;
+       }
+
+       if (sd_card_status == VCONFKEY_SYSMAN_MMC_MOUNTED) {
+               move_type = PACKAGE_MANAGER_REQUEST_MOVE_TO_EXTERNAL;
+       } else if (sd_card_status == VCONFKEY_SYSMAN_MMC_EXTENDEDINTERNAL_MOUNTED) {
+               move_type = PACKAGE_MANAGER_REQUEST_MOVE_TO_INTERNAL;
+       } else {
+               dlog_print(DLOG_WARN, LOG_TAG, "[%s:%d] Wrong sd card state: %d", basename(__FILE__), __LINE__, sd_card_status);
+               return;
+       }
+
+       ad->popup = setting_create_popup_with_progressbar(ad, ad->md.window,
+                       PROGRESSBAR_STYLE,
+                       NULL, "Move to SD card", storage_popup_del,
+                       0, TRUE, TRUE, 0);
+
+       ad->apps_to_move = ad->misces_checked;
+
+
+       while (it) {
+               d_item = (Setting_GenGroupItem_Data *) elm_object_item_data_get(it);
+               if (!d_item) {
+                       dlog_print(DLOG_ERROR, LOG_TAG, "\033[0;31m[%s:%d] d_item == NULL\033[0m", __FILE__, __LINE__);
+                       it = elm_genlist_item_next_get(it);
+                       continue;
+               }
+
+               node = d_item->userdata;
+               if (!node) {
+                       dlog_print(DLOG_ERROR, LOG_TAG, "\033[0;31m[%s:%d] node == NULL\033[0m", __FILE__, __LINE__);
+                       it = elm_genlist_item_next_get(it);
+                       continue;
+               }
+
+               dlog_print(DLOG_DEBUG, LOG_TAG, "\033[0;32m[%s:%d] app: %s, chk_status: %d\033[0m",
+                                               basename(__FILE__), __LINE__,
+                                               node->id, d_item->chk_status);
+
+               if (!d_item->chk_status) {
+                       it = elm_genlist_item_next_get(it);
+                       continue;
+               }
+
+               dlog_print(DLOG_INFO, LOG_TAG, "[%s:%d] name: %s, move_type=%d", basename(__FILE__), __LINE__, node->name, move_type);
+
+               ret = package_manager_request_move_with_cb(request, node->id, move_type, _move_request_cb, ad, &id);
+               if (ret != PACKAGE_MANAGER_ERROR_NONE) {
+                       dlog_print(DLOG_ERROR, LOG_TAG, "\033[0;31m[%s:%d] cause error: %s\033[0m", __FILE__, __LINE__, get_error_message(ret));
+                       it = elm_genlist_item_next_get(it);
+                       ad->apps_to_move--;
+                       continue;
+               }
+
+               dlog_print(DLOG_DEBUG, LOG_TAG, "\033[0;32m[%s:%d] Apps moved: %d to move: %d\033[0m",
+                               basename(__FILE__), __LINE__, ad->apps_to_move, ad->misces_checked);
+
+
+               it = elm_genlist_item_next_get(it);
+       }
+
+       _update_ui_list(ad);
+
+       if (ad->apps_to_move <= 0) {
+               dlog_print(DLOG_DEBUG, LOG_TAG, "\033[0;32m[%s:%d] Apps moved. Closing the popup.\033[0m", basename(__FILE__), __LINE__);
+
+               if (ad->popup) {
+                       evas_object_del(ad->popup);
+                       ad->popup = NULL;
+               }
+       }
+
+
+       SETTING_TRACE_END;
 }
 
 /**
  * Done button handler for 'delete'
  */
-static void _apps_delete_click_cb(void *data, Evas_Object *obj,
-               void *event_info)
+static void _apps_delete_click_cb(void *data, Evas_Object *obj, void *event_info)
 {
-       SettingStorage *ad = (SettingStorage *)data;
+       SETTING_TRACE_BEGIN;
 
+       SettingStorage *ad = (SettingStorage *)data;
        ret_if(NULL == data);
 
+       dlog_print(DLOG_INFO, LOG_TAG, "[%s:%d] Launch mode: %s", basename(__FILE__), __LINE__, ad->launch_mode);
+
+       if (safeStrCmp(ad->launch_mode, "appselect") == 0) {
+               _move_to_sd(ad);
+               return;
+       }
+
        if (ad->launched_by_external_app) {
                /* TODO: add the code to handle external launch case: */
                ui_app_exit();
@@ -663,6 +921,8 @@ static void _apps_delete_click_cb(void *data, Evas_Object *obj,
        ad->popup = setting_create_popup(ad, ad->md.window, NULL,
        STORAGE_STR_DELETE_Q, _apps_delete_popup_cb, 0, FALSE, FALSE,
                        2, STORAGE_STR_DELETE, STORAGE_STR_CANCEL);
+
+       SETTING_TRACE_END;
 }
 
 /*****************************************************************************/
@@ -671,6 +931,12 @@ static void _apps_delete_click_cb(void *data, Evas_Object *obj,
 /*-------------------------------------------------- */
 static int storage_apps_create(void *data)
 {
+       SETTING_TRACE_BEGIN;
+
+       dlog_print(DLOG_INFO, LOG_TAG, "[%s:%d] ********** Compiled: %s %s **********",
+                       basename(__FILE__), __LINE__,
+                       __DATE__, __TIME__);
+
        SettingStorage *ad = data;
        retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
 
@@ -706,13 +972,15 @@ static int storage_apps_create(void *data)
        }
        setting_view_storage_apps.is_create = 1;
 
+       SETTING_TRACE_END;
        return SETTING_RETURN_SUCCESS;
 }
 
 static int storage_apps_destroy(void *data)
 {
-       SettingStorage *ad = data;
+       SETTING_TRACE_BEGIN;
 
+       SettingStorage *ad = data;
        retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
 
        evas_object_event_callback_del_full(ad->md.naviframe,
@@ -737,16 +1005,21 @@ static int storage_apps_destroy(void *data)
 
        setting_view_storage_apps.is_create = 0;
 
+       SETTING_TRACE_END;
        return SETTING_RETURN_SUCCESS;
 }
 
 static int storage_apps_cleanup(void *data)
 {
+       SETTING_TRACE_BEGIN;
+
        return storage_apps_destroy(data);
 }
 
 void storage_apps_init(SettingStorage *ad)
 {
+       SETTING_TRACE_BEGIN;
+
        ret_if(NULL == ad);
        ret_if(ad->apps_view);
 
@@ -756,10 +1029,14 @@ void storage_apps_init(SettingStorage *ad)
        setting_view_storage_apps.cleanup = storage_apps_cleanup;
        ad->sort_type_app_view = BY_NAME;
        ad->apps_view = &setting_view_storage_apps;
+
+       SETTING_TRACE_END;
 }
 
 static void __select_all(SettingStorage *ad)
 {
+       SETTING_TRACE_BEGIN;
+
        Eina_List *cur = NULL;
        int removable_count = 0;
        Node_Info *node = NULL;
@@ -796,10 +1073,14 @@ static void __select_all(SettingStorage *ad)
        else
                storage_update_naviframe_title(ad, _(IDS_ST_BODY_APPLICATION),
                                SETTING_STORAGE_STR_SELECT_APPS);
+
+       SETTING_TRACE_END;
 }
 
 static void __select_all_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;
@@ -818,12 +1099,15 @@ static void __select_all_cb(void *data, Evas_Object *obj, void *event_info)
                ad->misces_is_select_all = item_data->chk_status;
                __select_all(ad);
        }
+
+       SETTING_TRACE_END;
 }
 
 static 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 =
@@ -834,5 +1118,7 @@ static void __select_all_chk_btn_cb(void *data, Evas_Object *obj,
        ad->misces_is_select_all = elm_check_state_get(obj);
 
        __select_all(ad);
+
+       SETTING_TRACE_END;
 }
 
index 386a6f5859d645df7ea251252cde3afef9c88f9d..633b8c9293601df611d7e968cb3f142fa3eb253a 100755 (executable)
@@ -537,6 +537,7 @@ static int _view_create(void *data)
        storage_update_apps_cache_info(ad);
 
        if (!isEmulBin()) {
+
                ret = vconf_get_int(storage_MMC_stat, &ad->mmc_status);
                retvm_if(ret, SETTING_RETURN_FAIL, "vconf_get_int(%s) Fail",
                                storage_MMC_stat);
index 8f819c07d6c7c8cbf96afacc44328c5e9d9cd4be..308d6e68c4c9d2b9ba990f365265a3abbd225910 100755 (executable)
@@ -206,6 +206,10 @@ static void _setting_storage_app_terminate(void *data)
        int ret = 0;
        SettingStorage *ad = data;
 
+       dlog_print(DLOG_INFO, LOG_TAG, "[%s:%d] ********** Compiled: %s %s **********",
+                       basename(__FILE__), __LINE__,
+                       __DATE__, __TIME__);
+
        retm_if(NULL == data, "data=%p is Invalid", data);
 
        FREE(ad->usb_otg_path);
@@ -247,9 +251,13 @@ static void _setting_storage_app_on_resume(void *data)
 
 }
 
-static void _setting_storage_app_on_app_ctl(app_control_h app_control,
-                                                                                       void *data)
+static void _setting_storage_app_on_app_ctl(app_control_h app_control, void *data)
 {
+
+       dlog_print(DLOG_INFO, LOG_TAG, "[%s:%d] COMPILED TIME: %s %s",
+                       basename(__FILE__), __LINE__, __DATE__, __TIME__);
+
+
        char *value = NULL;
        SettingStorage *ad = data;
 
@@ -261,21 +269,22 @@ static void _setting_storage_app_on_app_ctl(app_control_h app_control,
        ad->launched_by_external_app = false;
        (void)app_control_get_extra_data(app_control, "viewtype", &value);
 
+       ad->launch_mode = value;
+
+       dlog_print(DLOG_INFO, LOG_TAG, "[%s:%d] App_launch extra data: %s", basename(__FILE__), __LINE__, value);
+
        if (0 == safeStrCmp(value, "appselect")) {
-               free(value);
+               dlog_print(DLOG_INFO, LOG_TAG, "[%s:%d] appselect used", basename(__FILE__), __LINE__);
                ad->launched_by_external_app = true;
                setting_view_create(ad->apps_view, ad);
                return;
-       }
-
-       if (0 == safeStrCmp(value, "defstorage")) {
-               free(value);
+       } else if (0 == safeStrCmp(value, "defstorage")) {
+               dlog_print(DLOG_INFO, LOG_TAG, "[%s:%d] defstorage used", basename(__FILE__), __LINE__);
                ad->launched_by_external_app = true;
                setting_view_create(ad->default_view, ad);
                return;
        }
 
-       free(value);
        setting_view_create(ad->main_view, ad);
 }