summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjongmyeongko <jongmyeong.ko@samsung.com>2017-05-30 16:40:40 +0900
committerjongmyeongko <jongmyeong.ko@samsung.com>2017-06-09 12:52:32 +0900
commite34bb3889082d6058b6368ba2d73dd68a9c764ab (patch)
treeaa446efb1486b0c9105bcd26fa601aaf45528760
parentd7e8fe8aedfae8686217e50b3738495fbd55a44c (diff)
downloadapp-manager-e34bb3889082d6058b6368ba2d73dd68a9c764ab.tar.gz
app-manager-e34bb3889082d6058b6368ba2d73dd68a9c764ab.tar.bz2
app-manager-e34bb3889082d6058b6368ba2d73dd68a9c764ab.zip
Add new APIs related to application componentsubmit/tizen/20170612.120624accepted/tizen/unified/20170612.171541
A getter function and a filter property are added. // API usage ret = app_info_create(test_appid, &app_info); ret = app_info_get_app_component_type(app_info, &component_type); app_info_destroy(app_info); // filter usage app_info_filter_h handle; ret = app_info_filter_create(&handle); ret = app_info_filter_add_string(handle, PACKAGE_INFO_PROP_APP_COMPONENT_TYPE, "uiapp"); ret = app_info_filter_foreach_appinfo(handle, appinfo_cb, NULL); app_info_filter_destroy(handle); Change-Id: I109912534378364dc244bdec027db5808116b7b6 Signed-off-by: jongmyeongko <jongmyeong.ko@samsung.com>
-rw-r--r--include/app_info.h42
-rw-r--r--src/app_info.c40
2 files changed, 82 insertions, 0 deletions
diff --git a/include/app_info.h b/include/app_info.h
index 765514a..190db03 100644
--- a/include/app_info.h
+++ b/include/app_info.h
@@ -77,6 +77,33 @@ extern "C" {
#define PACKAGE_INFO_PROP_APP_DISABLED "PACKAGE_INFO_PROP_APP_DISABLED"
/**
+ * @brief Definition for string property for filtering based on app info: String property for
+ * filtering with the application component type.
+ * Value related with this property should be one of "uiapp", "svcapp", "widgetapp"
+ * and "watchapp".
+ * @since_tizen 4.0
+ * @see app_info_app_component_e
+ * @see app_info_get_app_component_type()
+ */
+#define PACKAGE_INFO_PROP_APP_COMPONENT_TYPE "PACKAGE_INFO_PROP_APP_COMPONENT_TYPE"
+
+/**
+ * @brief Enumeration for application component type.
+ * @since_tizen 4.0
+ * @details A component is an application considered as a part of a package.
+ * The application component type indicates what type of
+ * a component an application is in a package.
+ * @see PACKAGE_INFO_PROP_APP_COMPONENT_TYPE
+ * @see app_info_get_app_component_type()
+ */
+typedef enum {
+ APP_INFO_APP_COMPONENT_TYPE_UI_APP, /**< UI application */
+ APP_INFO_APP_COMPONENT_TYPE_SERVICE_APP, /**< Service application */
+ APP_INFO_APP_COMPONENT_TYPE_WIDGET_APP, /**< Widget application */
+ APP_INFO_APP_COMPONENT_TYPE_WATCH_APP, /**< Watch application */
+} app_info_app_component_type_e;
+
+/**
* @brief Application information handle.
* @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
*/
@@ -262,6 +289,21 @@ int app_info_get_package(app_info_h app_info, char **package);
int app_info_get_type(app_info_h app_info, char **type);
/**
+ * @brief Gets the application component type.
+ * @since_tizen 4.0
+ * @param[in] app_info The application information
+ * @param[out] component The application component type
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ * @retval #APP_MANAGER_ERROR_NONE Successful
+ * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #APP_MANAGER_ERROR_IO_ERROR I/O error
+ * @see PACKAGE_INFO_PROP_APP_COMPONENT_TYPE
+ * @see app_info_app_component_type_e
+ */
+int app_info_get_app_component_type(app_info_h app_info, app_info_app_component_type_e *type);
+
+/**
* @brief Gets the list of metadata for a particular application.
* @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
* @param[in] app_info The application information
diff --git a/src/app_info.c b/src/app_info.c
index 76cc6d1..c4f0c1a 100644
--- a/src/app_info.c
+++ b/src/app_info.c
@@ -79,6 +79,8 @@ static int app_info_convert_str_property(const char *property, char **converted_
*converted_property = PMINFO_APPINFO_PROP_APP_CATEGORY;
else if (strcmp(property, PACKAGE_INFO_PROP_APP_INSTALLED_STORAGE) == 0)
*converted_property = PMINFO_APPINFO_PROP_APP_INSTALLED_STORAGE;
+ else if (strcmp(property, PACKAGE_INFO_PROP_APP_COMPONENT_TYPE) == 0)
+ *converted_property = PMINFO_APPINFO_PROP_APP_COMPONENT;
else
return -1;
@@ -102,6 +104,22 @@ static int app_info_convert_bool_property(const char *property, char **converted
return 0;
}
+static int app_info_convert_app_component(pkgmgrinfo_app_component component, app_info_app_component_type_e *converted_component)
+{
+ if (component == PMINFO_UI_APP)
+ *converted_component = APP_INFO_APP_COMPONENT_TYPE_UI_APP;
+ else if (component == PMINFO_SVC_APP)
+ *converted_component = APP_INFO_APP_COMPONENT_TYPE_SERVICE_APP;
+ else if (component == PMINFO_WIDGET_APP)
+ *converted_component = APP_INFO_APP_COMPONENT_TYPE_WIDGET_APP;
+ else if (component == PMINFO_WATCH_APP)
+ *converted_component = APP_INFO_APP_COMPONENT_TYPE_WATCH_APP;
+ else
+ return -1;
+
+ return 0;
+}
+
static int app_info_foreach_app_filter_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
{
int retval = 0;
@@ -518,6 +536,28 @@ API int app_info_get_type(app_info_h app_info, char **type)
return APP_MANAGER_ERROR_NONE;
}
+API int app_info_get_app_component_type(app_info_h app_info, app_info_app_component_type_e *type)
+{
+ pkgmgrinfo_app_component comp_val;
+ app_info_app_component_type_e converted_comp_val;
+ int ret = 0;
+
+ if (app_info == NULL || type == NULL)
+ return app_manager_error(APP_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
+
+ ret = pkgmgrinfo_appinfo_get_component(app_info->pkg_app_info, &comp_val);
+ if (ret < 0)
+ return app_manager_error(APP_MANAGER_ERROR_IO_ERROR, __FUNCTION__, NULL);
+
+ ret = app_info_convert_app_component(comp_val, &converted_comp_val);
+ if (ret < 0)
+ return app_manager_error(APP_MANAGER_ERROR_IO_ERROR, __FUNCTION__, NULL);
+
+ *type = converted_comp_val;
+
+ return APP_MANAGER_ERROR_NONE;
+}
+
API int app_info_foreach_metadata(app_info_h app_info, app_info_metadata_cb callback, void *user_data)
{
int retval = 0;