Appmanager(pkginfo view) 42/103242/2
authorRadek Kintop <r.kintop@samsung.com>
Wed, 7 Dec 2016 17:29:47 +0000 (18:29 +0100)
committerRadek Kintop <r.kintop@samsung.com>
Wed, 7 Dec 2016 17:32:06 +0000 (09:32 -0800)
- appcontrol operation added to be able to respond from Default apps module calls

Change-Id: I7274296472d2f32123fb5847d43e075d141537e9
Signed-off-by: Radek Kintop <r.kintop@samsung.com>
org.tizen.setting.xml.in
setting-appmgr/include/setting-appmgr.h
setting-appmgr/src/setting-appmgr-pkginfo.c
setting-appmgr/src/setting-appmgr-utils.c
setting-appmgr/src/setting-appmgr.c

index a235e945d6542ebb5f3afe4d82a15c9e8da2e2b4..6a4b05ad6826d2802e3661b9353bf4ac7ce98084 100755 (executable)
                <label xml:lang="ja-jp">アプリケーション管理</label>
                <label xml:lang="ko-kr">애플리케이션 관리자</label>
        </ui-application>
-       <ui-application appid="org.tizen.setting-appmgr" exec="@TZ_SYS_RO_APP@/org.tizen.setting/bin/setting-appmgr" type="capp" nodisplay="true" taskmanage="false" hw-acceleration="on" launch_mode="caller">
+       <ui-application appid="org.tizen.setting-appmgr" exec="@TZ_SYS_RO_APP@/org.tizen.setting/bin/setting-appmgr" type="capp" nodisplay="true" multiple="true" taskmanage="false" hw-acceleration="on" launch_mode="caller">
                <label>settings-appmgr</label>
                <label xml:lang="en-us">settings-appmgr</label>
        </ui-application>
index c134f83e1cc3bc6873a744793bc0ba674391c933..57634442ac706a6925b8858fbdf8222453e03160 100644 (file)
@@ -150,6 +150,12 @@ typedef struct {
        Evas_Object *popup;
 
        /*pkginfo_view*/
+       bool only_pkginfo; /* This application has been launched externally
+       using appctl mechanism with specific
+       'viewtype' parameter == "application-info"
+       It means, the app will start in the pkginfo_view and give only this
+       functionality  */
+
        setting_view *pkginfo_view;
        Ecore_Timer *pkginfo_getsize_timer;
        /* Items of package_info_gl that need to be updated: */
@@ -167,7 +173,6 @@ typedef struct {
 
        /*main view */
        setting_view *main_view;
-       pkgmgr_client *pc_main;
        Eina_List *pkg_list;
        Eina_List *apps_list;
 
@@ -176,15 +181,6 @@ typedef struct {
        Evas_Object *all_blank_page;
        Evas_Object *disabled_blank_page;
 
-       char *sel_label;
-       int sel_total;
-       int sel_data_size;
-       int sel_is_disabled;
-
-       char *selected_id;
-       char *selected_icon;
-       /* UI lists: */
-
        /* Running app view: */
        setting_view *runinfo_view;
        Ecore_Timer *running_app_update_timer;
@@ -197,9 +193,6 @@ typedef struct {
        Evas_Object *grid;
        Elm_Object_Item *toolbar_items[APPMGR_TAB_MAX];
 
-       /*Pkg info view */
-       bool support_taskmanager;
-
        Elm_Genlist_Item_Class itc_package_nodes_list;
        Elm_Genlist_Item_Class itc_app_nodes_list;
 
index 48f8e5760c021092a7b3bc24ca14b85e632d69aa..8f7312bc81e2b3e00d2822f792cd9c66b2884810 100755 (executable)
@@ -388,17 +388,6 @@ static int appmgr_pkg_destroy(void *data)
                ad->pkginfo_getsize_timer = NULL;
        }
 
-       if (ad->support_taskmanager && ad->pc_main != NULL) {
-
-               SETTING_TRACE("Load pkginfo view");
-               pkgmgr_client_free(ad->pc_main);
-               ad->pc_main = NULL;
-       }
-
-       FREE(ad->selected_id);
-       FREE(ad->sel_label);
-       FREE(ad->selected_icon);
-
        /* free package data: */
        free(ad->selected_pkg.id);
        ad->selected_pkg.id = NULL;
@@ -1502,6 +1491,11 @@ static Eina_Bool _pkginfo_back_cb(void *data, Elm_Object_Item *it)
 
        retv_if(data == NULL, EINA_FALSE);
 
+       if (ad->only_pkginfo) {
+               ui_app_exit();
+               return EINA_TRUE;
+       }
+
        setting_view_change(ad->pkginfo_view, ad->main_view, ad);
        return EINA_TRUE;
 }
index e29a13fc0563d4c750265c885e50ced3dbd8be88..9dfaa1facbdb6d76f1b0b6c6a5102f7b34f18e6c 100644 (file)
@@ -191,29 +191,6 @@ void appmgr_utils_stop_apps_in_package(SettingAppMgr_PkgInfo *pkg)
        }
 }
 
-Evas_Object *_create_new_runinfo_item(void *data, Evas_Object *parent)
-{
-       Evas_Object *layout = NULL;
-       Evas_Object *icon = NULL;
-       SettingAppMgr *ad = data;
-
-       /* Set custom layout style */
-       layout = elm_layout_add(parent);
-       char *gl_style = "gl_custom_item_app_run";
-       elm_layout_file_set(layout, EDJDIR"/setting-theme.edj", gl_style);
-       evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
-       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND,
-                       EVAS_HINT_EXPAND);
-
-       icon = elm_icon_add(layout);
-       elm_image_file_set(icon, ad->selected_icon, NULL);
-       elm_image_resizable_set(icon, EINA_TRUE, EINA_TRUE);
-       evas_object_size_hint_min_set(icon, 98, 98);
-       elm_object_part_content_set(layout, "elm.swallow.icon", icon);
-
-       return layout;
-}
-
 void free_app_node_internals(app_node *node)
 {
        if (!node)
index 55a91b78976ceb4a0f155d78dd7310482bc0a6e1..96c68ff2e7f38213765102f0650be68520cca56d 100755 (executable)
@@ -118,25 +118,68 @@ static void _setting_appmgr_app_control_cb(app_control_h app_control,
                void *data)
 {
        SETTING_TRACE_BEGIN;
+       int ret = 0;
        SettingAppMgr *ad = (SettingAppMgr *)data;
        char *pkgid = NULL;
        char *viewtype = NULL;
+       package_info_h package_info = NULL;
+       ad->only_pkginfo = false;
        app_control_get_extra_data(app_control, "viewtype", &viewtype);
        if (0 == safeStrCmp(viewtype, "application-info"))
        {
+               ad->only_pkginfo = true;
                app_control_get_extra_data(app_control, "pkgid", &pkgid);
+               ad->selected_pkg.id = pkgid;
+
+               app_control_init(&ad->md, app_control);
+
+               ret = package_manager_get_package_info(pkgid, &package_info);
+               if (PACKAGE_MANAGER_ERROR_NONE != ret) {
+                       free(pkgid);
+                       app_control_reply_to_launch_request(
+                                                       ad->md.app_reply_svc,
+                                                       ad->md.app_caller_svc,
+                                               APP_CONTROL_RESULT_FAILED);
+                       ui_app_exit();
+               }
+
+               ret =
+               package_info_get_label(package_info, &ad->selected_pkg.label);
+               if (PACKAGE_MANAGER_ERROR_NONE != ret) {
+                       package_info_destroy(package_info);
+                       free(pkgid);
+                       app_control_reply_to_launch_request(
+                                                       ad->md.app_reply_svc,
+                                                       ad->md.app_caller_svc,
+                                               APP_CONTROL_RESULT_FAILED);
+
+                       ui_app_exit();
+               }
+
+               ret =
+               package_info_get_icon(package_info, &ad->selected_pkg.icon);
+               if (PACKAGE_MANAGER_ERROR_NONE != ret) {
+                       package_info_destroy(package_info);
+                       free(pkgid);
+                       free(ad->selected_pkg.label);
+                       app_control_reply_to_launch_request(
+                                                       ad->md.app_reply_svc,
+                                                       ad->md.app_caller_svc,
+                                               APP_CONTROL_RESULT_FAILED);
+
+                       ui_app_exit();
+               }
+
+               if (EINA_TRUE != ecore_file_exists(ad->selected_pkg.icon)) {
+                       free(ad->selected_pkg.icon);
+                       ad->selected_pkg.icon =
+                               strdup(SETTING_ICON_PATH"/mainmenu.png");
+               }
                /* register view table */
                setting_view_node_table_register(&setting_view_appmgr_pkginfo, NULL);
 
                SETTING_TRACE("viewtype : %s", viewtype);
                SETTING_TRACE("pkgname : %s", pkgid);
-               ad->selected_id = pkgid;
-               ad->sel_total = -1;
-               ad->sel_data_size = -1;
-               ad->support_taskmanager = TRUE;
-               ad->sel_is_disabled = FALSE;
-               ad->selected_icon = NULL;
-               ad->sel_label = NULL;
 
                setting_view_create(ad->pkginfo_view, ad);
                setting_view_node_set_cur_view(ad->pkginfo_view);