[App manager] 'Moved' toast added 91/159391/2
authorRadek Kintop <r.kintop@samsung.com>
Wed, 8 Nov 2017 13:07:26 +0000 (14:07 +0100)
committerRadek Kintop <r.kintop@samsung.com>
Wed, 8 Nov 2017 13:09:29 +0000 (13:09 +0000)
Change-Id: Ifc207e0ad0bb65890e69742b13e709bfbcc2ab9d
Signed-off-by: Radek Kintop <r.kintop@samsung.com>
setting-appmgr/include/setting-appmgr-utils.h
setting-appmgr/src/setting-appmgr-pkginfo.c
setting-appmgr/src/setting-appmgr-utils.c

index 4f50e00ace23be86dd3dae5de230a5e11481545c..2c79e431b95c132833a0a6893c7a9c76ec8058da 100644 (file)
@@ -52,4 +52,16 @@ void appmgr_utils_stop_apps_in_package(SettingAppMgr_PkgInfo *pkg);
  */
 bool appmgr_utils_SD_card_in_internal_mode(bool *in_internal_mode);
 
+/**
+ * Checks if a package is installed internally or on SD card
+ * regardless what mode SD is in (EXTENDEND or PORTABLE).
+ * This function uses internal API of pkgmgrinfo and should be removed in favor
+ * of public API once it is ready.
+ *
+ * @param pkg_id package.
+ * @param internal true if package location is on internal device storage.
+ * @return true if call was successful, false otherwise (like SD not present)
+ */
+bool appmgr_utils_get_pkg_storage_type(const char *pkg_id, bool *internal);
+
 #endif /*__SETTING_APPMGR_UTILS_H__ */
index 0c285e6a4697192a9a38e97c11f61b1691887e74..e6357bd71ac07324a71cbfc8362a2a96ae1434b8 100755 (executable)
@@ -519,8 +519,6 @@ static int _get_package_information(SettingAppMgr *ad)
        SettingAppMgr_PkgInfo *pkg = NULL;
        /* Public API call will be temporarily substituted with internal API call:*/
        /* package_info_installed_storage_type_e storage; */
-       pkgmgrinfo_installed_storage storage;
-       pkgmgrinfo_pkginfo_h internal_api_handle = NULL;
        package_manager_filter_h filter_supports_disable_h = NULL;
        package_manager_filter_h filter_is_disabled_h = NULL;
 
@@ -593,29 +591,17 @@ static int _get_package_information(SettingAppMgr *ad)
                success = false;
                goto finish;
        }
+       pkg->is_installed_internally = (PACKAGE_INFO_INTERNAL_STORAGE == storage);
 */
        /* Above public API call will be substituted by internal one,
         * because public one lacks support for the extended SD mode: */
-       ret = pkgmgrinfo_pkginfo_get_pkginfo(pkg->id, &internal_api_handle);
-       if (PMINFO_R_OK != ret) {
-               SETTING_TRACE_ERROR("pkgmgrinfo_pkginfo_get_pkginfo(): %s",
-                                                       get_error_message(ret));
-               success = false;
-               goto finish;
-       }
-       ret = pkgmgrinfo_pkginfo_get_installed_storage(internal_api_handle,
-                                                                                                       &storage);
-       if (PMINFO_R_OK != ret) {
-               SETTING_TRACE_ERROR("pkgmgrinfo_pkginfo_get_installed_storage(): %s",
-                                                       get_error_message(ret));
-               pkgmgrinfo_pkginfo_destroy_pkginfo(internal_api_handle);
+
+       if (!appmgr_utils_get_pkg_storage_type(pkg->id,
+                       &pkg->is_installed_internally)
+               ) {
                success = false;
                goto finish;
        }
-       pkgmgrinfo_pkginfo_destroy_pkginfo(internal_api_handle);
-       pkg->is_installed_internally = (PMINFO_INTERNAL_STORAGE == storage);
-                               /*(PACKAGE_INFO_INTERNAL_STORAGE == storage);*/
-
        pkg->is_removable = false;
        ret = package_info_is_removable_package(pkg->package_info,
                                                &pkg->is_removable);
@@ -900,6 +886,9 @@ static int __package_move_finished2(uid_t target_uid, int req_id,
                                const char *key, const char *val,
                                const void *pmsg, void *data)
 {
+       bool package_installed_internally = true;
+       bool sd_card_in_internal_mode = true;
+       char toast_text[256] = {'\0',};
        SettingAppMgr *ad = data;
 
        retv_if(!ad, -1);
@@ -917,6 +906,33 @@ static int __package_move_finished2(uid_t target_uid, int req_id,
        elm_object_item_disabled_set(ad->move_to_from_sd_item, EINA_FALSE);
        elm_genlist_item_update(ad->move_to_from_sd_item);
 
+       if (0 != safeStrCmp(val, "ok"))
+               return 0;
+
+       if (appmgr_utils_get_pkg_storage_type(pkgid, &package_installed_internally)
+               &&
+               appmgr_utils_SD_card_in_internal_mode(&sd_card_in_internal_mode)
+               ) {
+
+               if (package_installed_internally && sd_card_in_internal_mode)
+                       snprintf(toast_text, sizeof(toast_text), "%s %s", pkgid,
+                                       _("moved to internal storage."));
+               if (package_installed_internally && !sd_card_in_internal_mode)
+                       snprintf(toast_text, sizeof(toast_text), "%s %s", pkgid,
+                                       _("moved to device storage."));
+               if (!package_installed_internally && sd_card_in_internal_mode)
+                       snprintf(toast_text, sizeof(toast_text), "%s %s", pkgid,
+                                       _("moved to Extend SD card."));
+               if (!package_installed_internally && !sd_card_in_internal_mode)
+                       snprintf(toast_text, sizeof(toast_text), "%s %s", pkgid,
+                                       _("moved to SD card."));
+
+               setting_create_toast_popup(toast_text, ad->md.window);
+
+       } else {
+               SETTING_TRACE_ERROR("Can't obtain information on package location");
+       }
+
        return 0;
 }
 
index 8d3709e93abe3329d33196554bfa39d406af32e1..0a53b3a0b9ce3c8ec51c6477781c92561da2e03e 100755 (executable)
@@ -499,3 +499,34 @@ bool appmgr_utils_SD_card_in_internal_mode(bool *in_internal_mode)
 
        return true;
 }
+
+bool appmgr_utils_get_pkg_storage_type(const char *pkg_id, bool *internal)
+{
+       int ret = PMINFO_R_OK;
+       pkgmgrinfo_installed_storage storage;
+       pkgmgrinfo_pkginfo_h internal_api_handle = NULL;
+
+       if (!internal)
+               return false;
+
+       ret = pkgmgrinfo_pkginfo_get_pkginfo(pkg_id, &internal_api_handle);
+
+       if (PMINFO_R_OK != ret) {
+               SETTING_TRACE_ERROR("pkgmgrinfo_pkginfo_get_pkginfo(): %s",
+                                                       get_error_message(ret));
+               return false;
+       }
+       ret = pkgmgrinfo_pkginfo_get_installed_storage(internal_api_handle,
+                                                                                                       &storage);
+       if (PMINFO_R_OK != ret) {
+               SETTING_TRACE_ERROR("pkgmgrinfo_pkginfo_get_installed_storage(): %s",
+                                                       get_error_message(ret));
+               pkgmgrinfo_pkginfo_destroy_pkginfo(internal_api_handle);
+               return false;
+       }
+
+       pkgmgrinfo_pkginfo_destroy_pkginfo(internal_api_handle);
+       *internal = (PMINFO_INTERNAL_STORAGE == storage);
+
+       return true;
+}