Fixed Application Manager - app's capacity label 44/71244/2
authorPiotr Pruski <p.pruski@samsung.com>
Tue, 24 May 2016 15:32:48 +0000 (17:32 +0200)
committerPiotr Pruski <p.pruski@samsung.com>
Tue, 24 May 2016 15:43:02 +0000 (17:43 +0200)
Bug:  Instead of the app's capacity  "Computing..." is shown
Issue: There was deprecated API which wasa deleted
Fix: Used asynchronous API from package manager to obtain size info

Change-Id: I7f451c3cb19fe591e8ec377d441a6a46d03ad77d
Signed-off-by: Piotr Pruski <p.pruski@samsung.com>
setting-appmgr/include/setting-appmgr-utils.h
setting-appmgr/include/setting-appmgr.h
setting-appmgr/src/setting-appmgr-main.c
setting-appmgr/src/setting-appmgr-utils.c

index 065eae91465d90121c7cfd03d160a989607ca6b0..6c98b6b320f51e4448a3f3d355616784fd2b5577 100644 (file)
@@ -21,6 +21,8 @@
 
 #include "setting-appmgr.h"
 
+#include <package_manager.h>
+
 enum {
        APPMGRUG_SORT_ATOZ,
        APPMGRUG_SORT_ZTOA,
@@ -38,6 +40,8 @@ void appmgrUg_free_listinfos(SettingAppMgrUG *ad);
 /*Elm_Object_Item *appmgrUg_append_separator(Evas_Object *genlist,
                                                                                   SettingAppMgrUG *ad);*/
                                                                                   
+Eina_Bool appmgrUg_get_app_size(void *data);
+
 void appmgrUg_size_to_str(int size, char *desc, int desc_size);
 char *appmgrUg_info_title_gl_label_get(void *data, Evas_Object *obj,
                                                                           const char *part);
index 3a8406302b93ed40ae4ad137c9d3d55a38b4ce3d..4c9ccc104986b9d2b0bca6bc33e57d70fc31533a 100644 (file)
@@ -110,6 +110,7 @@ typedef struct _appmgr_listinfo {
        bool is_disabled;
        GList *runinfos;
        GList *def_appids;
+       Ecore_Idler *size_idler;
 } appmgr_listinfo;
 
 typedef struct _appmgr_runinfo {
index 939829674e4377c37aaecb95eb64bc29ae67b98b..b3cf4dc0d0c10aef75909172710fad55a1bd2f2f 100644 (file)
@@ -390,6 +390,8 @@ char *appmgrUg_main_gl_label_new_get(void *data, Evas_Object *obj, const char *p
                        label = strdup(desc);
                } else {
                        label = strdup(_(MGRAPP_STR_COMPUTING));
+                       info->size_idler = ecore_timer_add(0.6,
+                               (Ecore_Task_Cb)  appmgrUg_get_app_size, info);
                }
        }
 
index 8fcbf54f734808397f158be45077989a4e59d94d..6f8e08d86e63cae1feb3c3845aa396519c36eeee 100644 (file)
@@ -39,6 +39,45 @@ extern void appmgrUg_run_stop_click(void *data, Evas_Object *obj, void *event_in
 
 static void appmgrUg_free_listinfo(gpointer data);
 
+void _get_size_cb(const char *package_id, const package_size_info_h size_info, void *data)
+{
+       retm_if(data == NULL, "data == NULL");
+       appmgr_listinfo *info = data;
+
+       long long size = 0;
+       package_size_info_get_data_size(size_info, &size);
+       info->total_size = (int)size;
+
+       package_size_info_get_app_size(size_info, &size);
+       info->total_size += (int)size;
+
+       info->valid_size = true;
+       if (info->size_idler) {
+               ecore_timer_del(info->size_idler);
+               info->size_idler = NULL;
+       }
+       elm_genlist_item_fields_update(info->item, "elm.text.sub",
+               ELM_GENLIST_ITEM_FIELD_TEXT);
+}
+
+Eina_Bool appmgrUg_get_app_size(void *data)
+{
+       retvm_if(data == NULL, EINA_FALSE, "Data parameter is NULL");
+       appmgr_listinfo *info = data;
+       retv_if(info == NULL, 0);
+
+       elm_genlist_item_fields_update(info->item, "elm.text.sub",
+               ELM_GENLIST_ITEM_FIELD_TEXT);
+
+       int ret = package_manager_get_package_size_info(info->pkgid,
+               _get_size_cb, info);
+       if (ret != 0) {
+               SETTING_TRACE_ERROR("failed to invoke ret = %d", ret);
+       }
+
+       return EINA_FALSE;
+}
+
 void _free_GSList(GSList *list)
 {
        g_slist_foreach(list, (GFunc)g_free, NULL);
@@ -595,7 +634,6 @@ void appmgrUg_get_runlistinfos_cb(int fn_result, SettingAppMgrUG *ad)
 void appmgrUg_pkgmgr_subscribe(SettingAppMgrUG *ad)
 {
        int ret;
-
        ret_if(NULL == ad);
 
        ad->pc_main = pkgmgr_client_new(PC_LISTENING);
@@ -604,6 +642,13 @@ void appmgrUg_pkgmgr_subscribe(SettingAppMgrUG *ad)
                return;
        }
 
+       ret = pkgmgr_client_set_status_type(ad->pc_all_size, PKGMGR_CLIENT_STATUS_GET_SIZE);
+       if (ret < 0) {
+               SETTING_TRACE_ERROR("pkgmgr_client_set_status_type() Fail(%d)", ret);
+               pkgmgr_client_free(ad->pc_all_size);
+               ad->pc_main = NULL;
+       }
+
        ret = pkgmgr_client_listen_status(ad->pc_main, (pkgmgr_handler)appmgrUg_pkgmgr_changed_cb, ad);
        if (ret < 0) {
                SETTING_TRACE_ERROR("pkgmgr_client_listen_status() Fail(%d)", ret);