#define AIL_PROP_X_SLP_APPID_STR "AIL_PROP_X_SLP_APPID_STR"
#define AIL_PROP_X_SLP_PKGID_STR "AIL_PROP_X_SLP_PKGID_STR"
#define AIL_PROP_X_SLP_DOMAIN_STR "AIL_PROP_X_SLP_DOMAIN_STR"
-
+#define AIL_PROP_X_SLP_SUBMODEMAINID_STR "AIL_PROP_X_SLP_SUBMODEMAINID_STR"
/**
* @brief integer type properties
#define AIL_PROP_X_SLP_REMOVABLE_BOOL "AIL_PROP_X_SLP_REMOVABLE_BOOL"
#define AIL_PROP_X_SLP_ISHORIZONTALSCALE_BOOL "AIL_PROP_X_SLP_ISHORIZONTALSCALE_BOOL"
#define AIL_PROP_X_SLP_ENABLED_BOOL "AIL_PROP_X_SLP_ENABLED_BOOL"
-
+#define AIL_PROP_X_SLP_SUBMODE_BOOL "AIL_PROP_X_SLP_SUBMODE_BOOL"
/**
* @brief A handle for filters
*/
ail_error_e ail_desktop_clean(const char *pkgid);
+
+/**
+ * @fn ail_error_e ail_desktop_fota(const char *appid)
+ *
+ * @brief add a app information into Application Information Database.
+ A desktop file for this app has to be installed in the desktop directory before using this API.
+ If there is no database for Application Information Database, this API will create the DB.
+ If there is a DB, this function adds information for the app into the DB.
+ And a notification is not published to the applications who want to know about changing DB.
+ *
+ * @par Sync (or) Async : Synchronous API.
+ *
+ * @param[in] appid
+ *
+ * @return 0 if success, negative value(<0) if fail\n
+ * @retval AIL_ERROR_OK success
+ * @retval AIL_ERROR_FAIL internal error
+ * @retval AIL_ERROR_INVALID_PARAMETER invalid parameter
+ *
+ * @pre a desktop file for the app has to be installed in the desktop directory before using this API.
+ * @post app information is added into the Application Information Database.
+ *
+ * @see ail_desktop_update(), ail_desktop_remove()
+ *
+ * @par Prospective Clients:
+ * External Apps.
+ *
+ * @code
+static ail_error_e _add_desktop_fota(const char *appid)
+{
+ ail_error_e ret;
+
+ if (!appid) {
+ return AIL_ERROR_FAIL;
+ }
+
+ ret = ail_desktop_fota(appid);
+ if (ret != AIL_ERROR_OK) {
+ return AIL_ERROR_FAIL;
+ }
+
+ return AIL_ERROR_OK;
+}
+ * @endcode
+ */
+ail_error_e ail_desktop_fota(const char *appid);
+
/**
* @fn ail_error_e ail_desktop_appinfo_modify_str(const char *appid, const char *property, const char *value, bool broadcast)
*
char* x_slp_appid;
char* x_slp_pkgid;
char* x_slp_domain;
+ char* x_slp_submodemainid;
int x_slp_baselayoutwidth;
int x_slp_installedtime;
int nodisplay;
int x_slp_removable;
int x_slp_ishorizontalscale;
int x_slp_enabled;
+ int x_slp_submode;
char* desktop;
GSList* localname;
} desktop_info_s;
return AIL_ERROR_OK;
}
+static ail_error_e _read_x_slp_submodemainid(void *data, char *tag, char *value)
+{
+ desktop_info_s *info = data;
+
+ retv_if(!data, AIL_ERROR_INVALID_PARAMETER);
+ retv_if(!value, AIL_ERROR_INVALID_PARAMETER);
+
+ SAFE_FREE_AND_STRDUP(value, info->x_slp_submodemainid);
+ retv_if(!info->x_slp_submodemainid, AIL_ERROR_OUT_OF_MEMORY);
+
+ return AIL_ERROR_OK;
+}
static ail_error_e _read_x_slp_uri(void *data, char *tag, char *value)
}
+static ail_error_e _read_x_slp_submode(void *data, char *tag, char *value)
+{
+ desktop_info_s *info = data;
+
+ retv_if(!data, AIL_ERROR_INVALID_PARAMETER);
+ retv_if(!value, AIL_ERROR_INVALID_PARAMETER);
+
+ info->x_slp_submode = !strcasecmp(value, "true");
+
+ return AIL_ERROR_OK;
+}
+
static ail_error_e _read_x_slp_appid(void *data, char *tag, char *value)
{
desktop_info_s *info = data;
.value_cb = _read_x_slp_packageid,
},
{
+ .field = "x-tizen-submodemainid",
+ .value_cb = _read_x_slp_submodemainid,
+ },
+ {
.field = "x-tizen-uri",
.value_cb = _read_x_slp_uri,
},
.value_cb = _read_x_slp_enabled,
},
{
+ .field = "x-tizen-submode",
+ .value_cb = _read_x_slp_submode,
+ },
+ {
.field = "x-tizen-multiple",
.value_cb = _read_x_slp_multiple,
},
if (info->x_slp_exe_path) len += strlen(info->x_slp_exe_path);
if (info->x_slp_appid) len += strlen(info->x_slp_appid);
if (info->desktop) len += strlen(info->desktop);
+ if (info->x_slp_submodemainid) len += strlen(info->x_slp_submodemainid);
return len;
}
info->x_slp_taskmanage = 1;
info->x_slp_removable = 1;
+ info->x_slp_submode = 0;
if(is_initdb)
info->x_slp_installedtime = 0;
SAFE_FREE_AND_STRDUP(values[E_AIL_PROP_X_SLP_APPID_STR], info->x_slp_appid);
SAFE_FREE_AND_STRDUP(values[E_AIL_PROP_X_SLP_PKGID_STR], info->x_slp_pkgid);
SAFE_FREE_AND_STRDUP(values[E_AIL_PROP_X_SLP_DOMAIN_STR], info->x_slp_domain);
+ SAFE_FREE_AND_STRDUP(values[E_AIL_PROP_X_SLP_SUBMODEMAINID_STR], info->x_slp_submodemainid);
info->x_slp_installedtime = atoi(values[E_AIL_PROP_X_SLP_INSTALLEDTIME_INT]);
info->x_slp_removable = atoi(values[E_AIL_PROP_X_SLP_REMOVABLE_BOOL]);
info->x_slp_ishorizontalscale = atoi(values[E_AIL_PROP_X_SLP_ISHORIZONTALSCALE_BOOL]);
info->x_slp_enabled = atoi(values[E_AIL_PROP_X_SLP_ENABLED_BOOL]);
+ info->x_slp_submode = atoi(values[E_AIL_PROP_X_SLP_SUBMODE_BOOL]);
err = AIL_ERROR_OK;
"x_slp_appid TEXT, "
"x_slp_pkgid TEXT, "
"x_slp_domain TEXT, "
+ "x_slp_submodemainid TEXT, "
"x_slp_baselayoutwidth INTEGER DEFAULT 0, "
"x_slp_installedtime INTEGER DEFAULT 0, "
"nodisplay INTEGER DEFAULT 0, "
"x_slp_removable INTEGER DEFAULT 1, "
"x_slp_ishorizontalscale INTEGER DEFAULT 0, "
"x_slp_enabled INTEGER DEFAULT 1, "
+ "x_slp_submode INTEGER DEFAULT 0, "
"desktop TEXT UNIQUE NOT NULL);",
"CREATE TABLE localname (package TEXT NOT NULL, "
"locale TEXT NOT NULL, "
struct name_item *item = (struct name_item *)data;
desktop_info_s *info = (desktop_info_s *)user_data;
- snprintf(query, sizeof(query), "insert into localname (package, locale, name, x_slp_pkgid) "
- "values ('%s', '%s', '%s', '%s');",
+ sqlite3_snprintf(sizeof(query), query, "insert into localname (package, locale, name, x_slp_pkgid) "
+ "values ('%q', '%q', '%q', '%q');",
info->package, item->locale, item->name, info->x_slp_pkgid);
if (db_exec(query) < 0)
_E("Failed to insert local name of package[%s]",info->package);
"x_slp_appid, "
"x_slp_pkgid, "
"x_slp_domain, "
+ "x_slp_submodemainid, "
"x_slp_baselayoutwidth, "
"x_slp_installedtime, "
"nodisplay, "
"x_slp_removable, "
"x_slp_ishorizontalscale, "
"x_slp_enabled, "
+ "x_slp_submode, "
"desktop) "
"values "
"('%q', '%q', '%q', '%q', '%q', "
"'%q', '%q', '%q', '%q', '%q', "
"'%q', '%q', '%q', '%q', '%q', "
- "'%q', '%q', '%q', "
- "%d, %d, %d, %d, %d, %d, "
+ "'%q', '%q', '%q', '%q',"
+ "%d, %d, %d, %d, %d, %d, %d,"
"%d, %d, "
"'%q');",
info->package,
info->x_slp_appid,
info->x_slp_pkgid,
info->x_slp_domain,
+ info->x_slp_submodemainid,
info->x_slp_baselayoutwidth,
info->x_slp_installedtime,
info->nodisplay,
info->x_slp_removable,
info->x_slp_ishorizontalscale,
info->x_slp_enabled,
+ info->x_slp_submode,
info->desktop
);
"x_slp_appid='%q', "
"x_slp_pkgid='%q', "
"x_slp_domain='%q', "
+ "x_slp_submodemainid='%q', "
"x_slp_baselayoutwidth=%d, "
"x_slp_installedtime=%d, "
"nodisplay=%d, "
"x_slp_removable=%d, "
"x_slp_ishorizontalscale=%d, "
"x_slp_enabled=%d, "
+ "x_slp_submode=%d, "
"desktop='%q'"
"where package='%q'",
info->exec,
info->x_slp_appid,
info->x_slp_pkgid,
info->x_slp_domain,
+ info->x_slp_submodemainid,
info->x_slp_baselayoutwidth,
info->x_slp_installedtime,
info->nodisplay,
info->x_slp_removable,
info->x_slp_ishorizontalscale,
info->x_slp_enabled,
+ info->x_slp_submode,
info->desktop,
info->package);
SAFE_FREE(info->x_slp_appid);
SAFE_FREE(info->x_slp_pkgid);
SAFE_FREE(info->x_slp_domain);
+ SAFE_FREE(info->x_slp_submodemainid);
SAFE_FREE(info->desktop);
if (info->localname) {
g_slist_free_full(info->localname, _name_item_free_func);
}
+EXPORT_API ail_error_e ail_desktop_fota(const char *appid)
+{
+ desktop_info_s info = {0,};
+ ail_error_e ret;
+ int count;
+
+ retv_if(!appid, AIL_ERROR_INVALID_PARAMETER);
+ if (!__is_authorized()) {
+ _E("You are not an authorized user on adding!\n");
+ return -1;
+ }
+
+ count = _count_all();
+ if (count <= 0) {
+ ret = _create_table();
+ if (ret != AIL_ERROR_OK) {
+ _D("Cannot create a table. Maybe there is already a table.");
+ }
+ }
+
+ ret = _init_desktop_info(&info, appid);
+ retv_if(ret != AIL_ERROR_OK, AIL_ERROR_FAIL);
+
+ ret = _read_desktop_info(&info);
+ retv_if(ret != AIL_ERROR_OK, AIL_ERROR_FAIL);
+
+ ret = _insert_desktop_info(&info);
+ retv_if(ret != AIL_ERROR_OK, AIL_ERROR_FAIL);
+
+ _fini_desktop_info(&info);
+
+ return AIL_ERROR_OK;
+}
+
EXPORT_API ail_error_e ail_desktop_appinfo_modify_bool(const char *appid,
const char *property,
bool value,