summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiwoong Im <jiwoong.im@samsung.com>2015-06-11 14:52:39 +0900
committerJiwoong Im <jiwoong.im@samsung.com>2015-06-11 14:52:39 +0900
commit626e0bddc304dc9ea22d561507f0964a9e93feb3 (patch)
tree689d78c3c281487534879aa61ada13e3fe3cfa1d
parentba3841dce24c90e1795436997fa408696ed21311 (diff)
downloadapplication-626e0bddc304dc9ea22d561507f0964a9e93feb3.tar.gz
application-626e0bddc304dc9ea22d561507f0964a9e93feb3.tar.bz2
application-626e0bddc304dc9ea22d561507f0964a9e93feb3.zip
Change-Id: Ia9219247433425735efc117d72bbe4f67c26913f Signed-off-by: Jiwoong Im <jiwoong.im@samsung.com>
-rw-r--r--app_control/app_control.c59
1 files changed, 59 insertions, 0 deletions
diff --git a/app_control/app_control.c b/app_control/app_control.c
index b1d7ee7..33c2352 100644
--- a/app_control/app_control.c
+++ b/app_control/app_control.c
@@ -48,6 +48,10 @@
#define BUNDLE_KEY_WINDOW "__APP_SVC_K_WIN_ID__"
#define BUNDLE_KEY_CATEGORY "__APP_SVC_CATEGORY__"
+#define LAUNCH_MODE_SIZE 8
+#define LAUNCH_MODE_SINGLE "single"
+#define LAUNCH_MODE_GROUP "group"
+
typedef enum {
APP_CONTROL_TYPE_REQUEST,
APP_CONTROL_TYPE_EVENT,
@@ -684,6 +688,61 @@ int app_control_clone(app_control_h *clone, app_control_h app_control)
return APP_CONTROL_ERROR_NONE;
}
+int app_control_set_launch_mode(app_control_h app_control,
+ app_control_launch_mode_e mode)
+{
+ char launch_mode[LAUNCH_MODE_SIZE] = { 0, };
+
+ if (app_control_validate(app_control)) {
+ return app_control_error(APP_CONTROL_ERROR_INVALID_PARAMETER,
+ __FUNCTION__, NULL);
+ }
+
+ switch (mode) {
+ case APP_CONTROL_LAUNCH_MODE_SINGLE:
+ strncpy(launch_mode, LAUNCH_MODE_SINGLE, strlen(LAUNCH_MODE_SINGLE));
+ break;
+ case APP_CONTROL_LAUNCH_MODE_GROUP:
+ strncpy(launch_mode, LAUNCH_MODE_GROUP, strlen(LAUNCH_MODE_GROUP));
+ break;
+ default:
+ return app_control_error(APP_CONTROL_ERROR_INVALID_PARAMETER,
+ __FUNCTION__, "invalid mode");
+ }
+
+ return appsvc_set_launch_mode(app_control->data, launch_mode);
+}
+
+int app_control_get_launch_mode(app_control_h app_control,
+ app_control_launch_mode_e *mode)
+{
+ const char *launch_mode;
+
+ if (app_control_validate(app_control)) {
+ return app_control_error(APP_CONTROL_ERROR_INVALID_PARAMETER,
+ __FUNCTION__, NULL);
+ }
+
+ launch_mode = appsvc_get_launch_mode(app_control->data);
+ if (launch_mode == NULL) {
+ *mode = APP_CONTROL_LAUNCH_MODE_SINGLE;
+ return app_control_error(APP_CONTROL_ERROR_INVALID_PARAMETER,
+ __FUNCTION__, "fail to get launch_mode");
+ } else {
+ if (!strcmp(launch_mode, LAUNCH_MODE_SINGLE)) {
+ *mode = APP_CONTROL_LAUNCH_MODE_SINGLE;
+ } else if (!strcmp(launch_mode, LAUNCH_MODE_GROUP)) {
+ *mode = APP_CONTROL_LAUNCH_MODE_GROUP;
+ } else {
+ *mode = APP_CONTROL_LAUNCH_MODE_SINGLE;
+ return app_control_error(APP_CONTROL_ERROR_INVALID_PARAMETER,
+ __FUNCTION__, "launch_mode is not matched");
+ }
+ }
+
+ return APP_CONTROL_ERROR_NONE;
+}
+
int app_control_send_launch_request(app_control_h app_control, app_control_reply_cb callback, void *user_data)
{
const char *operation;