From: Myungki Lee Date: Thu, 1 Jun 2017 09:08:30 +0000 (+0900) Subject: Support on demand launching for viewer app X-Git-Tag: submit/tizen/20170609.014738~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=566b0d4875adaa4ce59e97a2fd1fbad2088ccbc4;p=platform%2Fcore%2Fapi%2Fnotification.git Support on demand launching for viewer app - notification_get_default_viewer - notification_launch_default_viewer Change-Id: I66dcf3c740ff7d6f1be2f351a156ca24941c75a6 Signed-off-by: Myungki Lee --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 612825e1..8f079f6d 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -62,6 +62,7 @@ pkg_check_modules(pkgs REQUIRED libtzplatform-config glib-2.0 gio-2.0 + iniparser ) FOREACH(flag ${pkgs_CFLAGS}) diff --git a/include/notification_noti.h b/include/notification_noti.h index 4462c206..3e568775 100644 --- a/include/notification_noti.h +++ b/include/notification_noti.h @@ -67,5 +67,8 @@ int notification_noti_add_template(notification_h noti, char *template_name); int notification_noti_get_package_template(notification_h noti, char *pkgname, char *template_name); int notification_noti_delete_template(const char *pkgname); +int notification_get_default_viewer(const char *path, char **default_viewer); +int notification_launch_default_viewer(const char *default_viewer, int priv_id); + #endif /* __NOTIFICATION_NOTI_H__ */ diff --git a/packaging/notification.spec b/packaging/notification.spec index 7b14cc47..f9eb2b48 100755 --- a/packaging/notification.spec +++ b/packaging/notification.spec @@ -20,6 +20,7 @@ BuildRequires: pkgconfig(pkgmgr-info) BuildRequires: pkgconfig(libtzplatform-config) BuildRequires: pkgconfig(gio-2.0) BuildRequires: pkgconfig(glib-2.0) +BuildRequires: pkgconfig(iniparser) BuildRequires: cmake Requires(post): /sbin/ldconfig diff --git a/src/notification_noti.c b/src/notification_noti.c index 449de3c6..a722d560 100755 --- a/src/notification_noti.c +++ b/src/notification_noti.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include @@ -2273,3 +2274,67 @@ EXPORT_API int notification_noti_delete_template(const char *pkgname) return ret; } + +EXPORT_API int notification_get_default_viewer(const char *path, char **default_viewer) +{ + char *viewer = NULL; + dictionary *dict = NULL; + + if (access(path, F_OK) != 0) { + NOTIFICATION_ERR("can't access file_path(%s)", path); + return -1; + } + + dict = iniparser_load(path); + if (!dict) { + NOTIFICATION_ERR("can't load file"); + return -1; + } + + viewer = iniparser_getstring(dict, "Notification:DefaultViewer", NULL); + if (viewer != NULL) + *default_viewer = strdup(viewer); + + iniparser_freedict(dict); + + return 0; +} + +EXPORT_API int notification_launch_default_viewer(const char *default_viewer, int priv_id) +{ + int ret; + char buf[32] = {0,}; + app_control_h app_control = NULL; + + ret = app_control_create(&app_control); + if (ret != APP_CONTROL_ERROR_NONE) { + NOTIFICATION_ERR("app_control_create failed [%x]", ret); + goto out; + } + + ret = app_control_set_app_id(app_control, default_viewer); + if (ret != APP_CONTROL_ERROR_NONE) { + NOTIFICATION_ERR("app_control_set_app_id failed [%x]", ret); + goto out; + } + + snprintf(buf, sizeof(buf), "%d", priv_id); + + ret = app_control_add_extra_data(app_control, "NOTIFICATION_PRIVATE_ID", buf); + if (ret != APP_CONTROL_ERROR_NONE) { + NOTIFICATION_ERR("app_control_set_extra_data failed [%x]", ret); + goto out; + } + + ret = app_control_send_launch_request(app_control, NULL, NULL); + if (ret != APP_CONTROL_ERROR_NONE) { + NOTIFICATION_ERR("app_control_send_launch_request failed [%x]", ret); + goto out; + } + +out: + if (app_control) + app_control_destroy(app_control); + + return ret; +}