diff options
-rwxr-xr-x | CMakeLists.txt | 27 | ||||
-rwxr-xr-x | include/notification_ipc.h | 2 | ||||
-rwxr-xr-x | include/notification_setting.h | 5 | ||||
-rwxr-xr-x | include/notification_setting_service.h | 37 | ||||
-rwxr-xr-x | include/notification_status.h | 2 | ||||
-rwxr-xr-x | notification-service.pc.in | 11 | ||||
-rwxr-xr-x | packaging/notification.spec | 39 | ||||
-rwxr-xr-x | src/notification.c | 488 | ||||
-rwxr-xr-x | src/notification_db.c | 29 | ||||
-rwxr-xr-x | src/notification_ipc.c | 9 | ||||
-rwxr-xr-x | src/notification_setting.c | 17 | ||||
-rwxr-xr-x | src/notification_status.c | 3 |
12 files changed, 399 insertions, 270 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index bf6772f..fe012ea 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,7 +11,8 @@ SET(DBFILE ".notification.db") SET(MAJOR_VER 0) SET(VERSION ${MAJOR_VER}.1.0) -SET(SRCS ./src/notification.c +SET(SRCS + ./src/notification.c ./src/notification_noti.c ./src/notification_ongoing.c ./src/notification_group.c @@ -20,14 +21,18 @@ SET(SRCS ./src/notification.c ./src/notification_status.c ./src/notification_ipc.c ./src/notification_setting.c) -SET(HEADERS ./include/notification.h - ./include/notification_error.h - ./include/notification_type.h +SET(HEADERS-DEVEL + ./include/notification.h + ./include/notification_error.h + ./include/notification_type.h ./include/notification_list.h ./include/notification_status.h + ./include/notification_setting.h) + +SET(HEADERS-SERVICE-DEVEL ./include/notification_ipc.h - ./include/notification_setting.h - ./include/notification_noti.h) + ./include/notification_noti.h + ./include/notification_setting_service.h) INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include) @@ -35,10 +40,12 @@ INCLUDE(FindPkgConfig) pkg_check_modules(pkgs REQUIRED sqlite3 db-util + vconf bundle dlog ail aul + appsvc dbus-1 dbus-glib-1 com-core @@ -69,7 +76,13 @@ CONFIGURE_FILE(${PROJECT_NAME}.pc.in ${PROJECT_NAME}.pc @ONLY) INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${LIB_INSTALL_DIR} COMPONENT RuntimeLibraries) INSTALL(FILES ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig) -FOREACH(hfile ${HEADERS}) +FOREACH(hfile ${HEADERS-DEVEL}) INSTALL(FILES ${CMAKE_SOURCE_DIR}/${hfile} DESTINATION include/${PROJECT_NAME}) ENDFOREACH(hfile) +CONFIGURE_FILE(${PROJECT_NAME}-service.pc.in ${PROJECT_NAME}-service.pc @ONLY) +INSTALL(FILES ${CMAKE_BINARY_DIR}/${PROJECT_NAME}-service.pc DESTINATION lib/pkgconfig) + +FOREACH(hfile ${HEADERS-SERVICE-DEVEL}) + INSTALL(FILES ${CMAKE_SOURCE_DIR}/${hfile} DESTINATION include/${PROJECT_NAME}/service) +ENDFOREACH(hfile) diff --git a/include/notification_ipc.h b/include/notification_ipc.h index 8c7681b..d55c264 100755 --- a/include/notification_ipc.h +++ b/include/notification_ipc.h @@ -3,7 +3,7 @@ * * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. * - * Contact: Seungtaek Chung <seungtaek.chung@samsung.com>, Mi-Ju Lee <miju52.lee@samsung.com>, Xi Zhichan <zhichan.xi@samsung.com> + * Contact: Seungtaek Chung <seungtaek.chung@samsung.com>, Mi-Ju Lee <miju52.lee@samsung.com>, Xi Zhichan <zhichan.xi@samsung.com>, Youngsub Ko <ys4610.ko@samsung.com> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/include/notification_setting.h b/include/notification_setting.h index 9e86d5b..4ab999d 100755 --- a/include/notification_setting.h +++ b/include/notification_setting.h @@ -3,7 +3,7 @@ * * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. * - * Contact: Seungtaek Chung <seungtaek.chung@samsung.com>, Mi-Ju Lee <miju52.lee@samsung.com>, Xi Zhichan <zhichan.xi@samsung.com> + * Contact: Seungtaek Chung <seungtaek.chung@samsung.com>, Mi-Ju Lee <miju52.lee@samsung.com>, Xi Zhichan <zhichan.xi@samsung.com>, Youngsub Ko <ys4610.ko@samsung.com> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,9 +30,6 @@ typedef struct _notification_setting_h notification_setting_h; extern "C" { #endif -notification_error_e notification_setting_db_set(const char *pkgname, const char *property, const char *value); -notification_error_e notification_setting_db_get(const char *pkgname, const char *property, char **value); - notification_error_e notification_setting_property_set(const char *pkgname, const char *property, const char *value); notification_error_e notification_setting_property_get(const char *pkgname, const char *property, char **value); diff --git a/include/notification_setting_service.h b/include/notification_setting_service.h new file mode 100755 index 0000000..1fea418 --- /dev/null +++ b/include/notification_setting_service.h @@ -0,0 +1,37 @@ +/* + * libnotification + * + * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. + * + * Contact: Seungtaek Chung <seungtaek.chung@samsung.com>, Mi-Ju Lee <miju52.lee@samsung.com>, Xi Zhichan <zhichan.xi@samsung.com>, Youngsub Ko <ys4610.ko@samsung.com> + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef __NOTIFICATION_SETTING_SERVICE_H__ +#define __NOTIFICATION_SETTING_SERVICE_H__ + +#include <notification.h> + +#ifdef __cplusplus +extern "C" { +#endif + +notification_error_e notification_setting_db_set(const char *pkgname, const char *property, const char *value); +notification_error_e notification_setting_db_get(const char *pkgname, const char *property, char **value); + +#ifdef __cplusplus +} +#endif +#endif /* __NOTIFICATION_SETTING_SERVICE_H__ */ diff --git a/include/notification_status.h b/include/notification_status.h index 2a05f48..84c4d02 100755 --- a/include/notification_status.h +++ b/include/notification_status.h @@ -3,7 +3,7 @@ * * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. * - * Contact: Seungtaek Chung <seungtaek.chung@samsung.com>, Mi-Ju Lee <miju52.lee@samsung.com>, Xi Zhichan <zhichan.xi@samsung.com> + * Contact: Seungtaek Chung <seungtaek.chung@samsung.com>, Mi-Ju Lee <miju52.lee@samsung.com>, Xi Zhichan <zhichan.xi@samsung.com>, Youngsub Ko <ys4610.ko@samsung.com> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/notification-service.pc.in b/notification-service.pc.in new file mode 100755 index 0000000..2708490 --- /dev/null +++ b/notification-service.pc.in @@ -0,0 +1,11 @@ +prefix=@PREFIX@ +exec_prefix=@EXEC_PREFIX@ +libdir=@LIBDIR@ +includedir=@INCLUDEDIR@/service + +Name: notification +Description: Notification Library +Version: @VERSION@ +Requires: bundle +Libs: -L${libdir} -lnotification +Cflags: -I${includedir} diff --git a/packaging/notification.spec b/packaging/notification.spec index 555c043..24a8523 100755 --- a/packaging/notification.spec +++ b/packaging/notification.spec @@ -9,11 +9,13 @@ Source1001: notification.manifest BuildRequires: pkgconfig(sqlite3) BuildRequires: pkgconfig(db-util) BuildRequires: pkgconfig(heynoti) +BuildRequires: pkgconfig(vconf) BuildRequires: pkgconfig(bundle) BuildRequires: pkgconfig(dbus-1) BuildRequires: pkgconfig(dlog) BuildRequires: pkgconfig(ail) BuildRequires: pkgconfig(aul) +BuildRequires: pkgconfig(appsvc) BuildRequires: pkgconfig(dbus-glib-1) BuildRequires: pkgconfig(com-core) BuildRequires: pkgconfig(ecore) @@ -25,7 +27,7 @@ Requires(post): /usr/bin/sqlite3 Requires(postun): /sbin/ldconfig %description -Client library for sending notifications. +Client/Server library for sending notifications. %prep %setup -q @@ -33,22 +35,34 @@ cp %{SOURCE1001} . %package devel Summary: Notification library (devel) -Group: Development/Applications +Group: Development/Libraries Requires: %{name} = %{version}-%{release} %description devel Development files needed to build software that needs to system a system notification. +%package service-devel +Summary: Notification library (service-devel) +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} + +%description service-devel +Development files needed to build notification service + %build %cmake . make %{?jobs:-j%jobs} %install +rm -rf %{buildroot} %make_install mkdir -p %{buildroot}/usr/share/license cp -f LICENSE.APLv2.0 %{buildroot}/usr/share/license/%{name} +%clean +rm -rf %{buildroot} + %post /sbin/ldconfig @@ -141,10 +155,11 @@ fi chown :5000 /opt/dbspace/.notification.db chown :5000 /opt/dbspace/.notification.db-journal -chmod 660 /opt/dbspace/.notification.db -chmod 660 /opt/dbspace/.notification.db-journal +chmod 640 /opt/dbspace/.notification.db +chmod 640 /opt/dbspace/.notification.db-journal chsmack -a 'notification::db' /opt/dbspace/.notification.db* -vconftool set -t string memory/private/libstatus/message "" -i -g 5000 +SMACK_OPTION="-s system::vconf_misc" +vconftool set -t string memory/private/libstatus/message "" -i -g 5000 -f $SMACK_OPTION %postun -p /sbin/ldconfig @@ -156,5 +171,17 @@ vconftool set -t string memory/private/libstatus/message "" -i -g 5000 %files devel %defattr(-,root,root,-) -%{_includedir}/notification/*.h +%{_includedir}/notification/notification.h +%{_includedir}/notification/notification_error.h +%{_includedir}/notification/notification_type.h +%{_includedir}/notification/notification_list.h +%{_includedir}/notification/notification_status.h +%{_includedir}/notification/notification_setting.h %{_libdir}/pkgconfig/notification.pc + +%files service-devel +%defattr(-,root,root,-) +%{_includedir}/notification/service/notification_ipc.h +%{_includedir}/notification/service/notification_noti.h +%{_includedir}/notification/service/notification_setting_service.h +%{_libdir}/pkgconfig/notification-service.pc diff --git a/src/notification.c b/src/notification.c index 27a440f..f11ac22 100755 --- a/src/notification.c +++ b/src/notification.c @@ -30,6 +30,7 @@ #include <aul.h> #include <ail.h> +#include <appsvc.h> #include <vconf-keys.h> #include <vconf.h> @@ -121,39 +122,6 @@ static void _notification_get_text_domain(notification_h noti) } } -/* notification_set_icon will be removed */ -EXPORT_API notification_error_e notification_set_icon(notification_h noti, - const char *icon_path) -{ - int ret_err = NOTIFICATION_ERROR_NONE; - - ret_err = - notification_set_image(noti, NOTIFICATION_IMAGE_TYPE_ICON, - icon_path); - - return ret_err; -} - -/* notification_get_icon will be removed */ -EXPORT_API notification_error_e notification_get_icon(notification_h noti, - char **icon_path) -{ - int ret_err = NOTIFICATION_ERROR_NONE; - char *ret_image_path = NULL; - - ret_err = - notification_get_image(noti, NOTIFICATION_IMAGE_TYPE_ICON, - &ret_image_path); - - if (ret_err == NOTIFICATION_ERROR_NONE && icon_path != NULL) { - *icon_path = ret_image_path; - - //NOTIFICATION_DBG("Get icon : %s", *icon_path); - } - - return ret_err; -} - EXPORT_API notification_error_e notification_set_image(notification_h noti, notification_image_type_e type, const char *image_path) @@ -305,92 +273,6 @@ EXPORT_API notification_error_e notification_get_insert_time(notification_h noti return NOTIFICATION_ERROR_NONE; } -EXPORT_API notification_error_e notification_set_title(notification_h noti, - const char *title, - const char *loc_title) -{ - int noti_err = NOTIFICATION_ERROR_NONE; - - noti_err = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_TITLE, - title, loc_title, - NOTIFICATION_VARIABLE_TYPE_NONE); - - return noti_err; -} - -EXPORT_API notification_error_e notification_get_title(notification_h noti, - char **title, - char **loc_title) -{ - int noti_err = NOTIFICATION_ERROR_NONE; - char *ret_text = NULL; - - noti_err = - notification_get_text(noti, NOTIFICATION_TEXT_TYPE_TITLE, - &ret_text); - - if (title != NULL) { - *title = ret_text; - } - - if (loc_title != NULL) { - *loc_title = NULL; - } - - return noti_err; -} - -EXPORT_API notification_error_e notification_set_content(notification_h noti, - const char *content, - const char *loc_content) -{ - int noti_err = NOTIFICATION_ERROR_NONE; - - noti_err = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT, - content, loc_content, - NOTIFICATION_VARIABLE_TYPE_NONE); - - return noti_err; -} - -EXPORT_API notification_error_e notification_get_content(notification_h noti, - char **content, - char **loc_content) -{ - int noti_err = NOTIFICATION_ERROR_NONE; - char *ret_text = NULL; - - noti_err = - notification_get_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT, - &ret_text); - - if (content != NULL) { - *content = ret_text; - } - - if (loc_content != NULL) { - *loc_content = NULL; - } - - return noti_err; - -#if 0 - ret = - vconf_get_bool - (VCONFKEY_SETAPPL_STATE_TICKER_NOTI_DISPLAY_CONTENT_BOOL, &boolval); - - if (ret == -1 || boolval == 0) { - if (content != NULL && noti->default_content != NULL) { - *content = noti->default_content; - } - - if (loc_content != NULL && noti->loc_default_content != NULL) { - *loc_content = noti->loc_default_content; - } - } -#endif -} - EXPORT_API notification_error_e notification_set_text(notification_h noti, notification_text_type_e type, const char *text, @@ -1342,53 +1224,6 @@ EXPORT_API notification_error_e notification_get_application(notification_h noti return NOTIFICATION_ERROR_NONE; } -EXPORT_API notification_error_e notification_set_args(notification_h noti, - bundle * args, - bundle * group_args) -{ - if (noti == NULL || args == NULL) { - return NOTIFICATION_ERROR_INVALID_DATA; - } - - if (noti->args) { - bundle_free(noti->args); - } - - noti->args = bundle_dup(args); - - if (noti->group_args) { - bundle_free(noti->group_args); - noti->group_args = NULL; - } - - if (group_args != NULL) { - noti->group_args = bundle_dup(group_args); - } - - return NOTIFICATION_ERROR_NONE; -} - -EXPORT_API notification_error_e notification_get_args(notification_h noti, - bundle ** args, - bundle ** group_args) -{ - if (noti == NULL || args == NULL) { - return NOTIFICATION_ERROR_INVALID_DATA; - } - - if (noti->args) { - *args = noti->args; - } else { - *args = NULL; - } - - if (group_args != NULL && noti->group_args) { - *group_args = noti->group_args; - } - - return NOTIFICATION_ERROR_NONE; -} - EXPORT_API notification_error_e notification_set_execute_option(notification_h noti, notification_execute_type_e type, const char *text, @@ -1447,7 +1282,7 @@ EXPORT_API notification_error_e notification_set_execute_option(notification_h n bundle_add(b, buf_key, key); } - switch (type) { + switch ((int)type) { case NOTIFICATION_EXECUTE_TYPE_RESPONDING: /* Remove previous data if exist */ if (noti->b_service_responding != NULL) { @@ -1486,10 +1321,6 @@ EXPORT_API notification_error_e notification_set_execute_option(notification_h n bundle_dup(service_handle); } break; - case NOTIFICATION_EXECUTE_TYPE_NONE: - case NOTIFICATION_EXECUTE_TYPE_MAX: - NOTIFICATION_ERR("invalid execution type"); - break; } return NOTIFICATION_ERROR_NONE; @@ -1915,60 +1746,6 @@ EXPORT_API notification_error_e notification_delete_all_by_type(const char *pkgn return NOTIFICATION_ERROR_NONE; } -EXPORT_API notification_error_e notification_delete_group_by_group_id(const char *pkgname, - notification_type_e type, - int group_id) -{ - int ret = 0; - char *caller_pkgname = NULL; - - if (pkgname == NULL) { - caller_pkgname = _notification_get_pkgname_by_pid(); - } else { - caller_pkgname = strdup(pkgname); - } - - ret = notification_ipc_request_delete_multiple(type, caller_pkgname); - if (ret != NOTIFICATION_ERROR_NONE) { - if (caller_pkgname) { - free(caller_pkgname); - } - return ret; - } - - if (caller_pkgname) { - free(caller_pkgname); - } - return NOTIFICATION_ERROR_NONE; -} - -EXPORT_API notification_error_e notification_delete_group_by_priv_id(const char *pkgname, - notification_type_e type, - int priv_id) -{ - int ret = 0; - char *caller_pkgname = NULL; - - if (pkgname == NULL) { - caller_pkgname = _notification_get_pkgname_by_pid(); - } else { - caller_pkgname = strdup(pkgname); - } - - ret = notification_ipc_request_delete_single(type, caller_pkgname, priv_id); - if (ret != NOTIFICATION_ERROR_NONE) { - if (caller_pkgname) { - free(caller_pkgname); - } - return ret; - } - - if (caller_pkgname) { - free(caller_pkgname); - } - return NOTIFICATION_ERROR_NONE; -} - EXPORT_API notification_error_e notification_delete_by_priv_id(const char *pkgname, notification_type_e type, int priv_id) @@ -2421,6 +2198,9 @@ notification_resister_changed_cb(void (*changed_cb) notification_cb_list_s *noti_cb_list_new = NULL; notification_cb_list_s *noti_cb_list = NULL; + if (changed_cb == NULL) { + return NOTIFICATION_ERROR_INVALID_DATA; + } if (notification_ipc_monitor_init() != NOTIFICATION_ERROR_NONE) { return NOTIFICATION_ERROR_IO; } @@ -2461,6 +2241,9 @@ notification_unresister_changed_cb(void (*changed_cb) noti_cb_list = g_notification_cb_list; + if (changed_cb == NULL) { + return NOTIFICATION_ERROR_INVALID_DATA; + } if (noti_cb_list == NULL) { return NOTIFICATION_ERROR_INVALID_DATA; } @@ -2509,6 +2292,9 @@ notification_register_detailed_changed_cb( notification_cb_list_s *noti_cb_list_new = NULL; notification_cb_list_s *noti_cb_list = NULL; + if (detailed_changed_cb == NULL) { + return NOTIFICATION_ERROR_INVALID_DATA; + } if (notification_ipc_monitor_init() != NOTIFICATION_ERROR_NONE) { return NOTIFICATION_ERROR_IO; } @@ -2550,6 +2336,9 @@ notification_unregister_detailed_changed_cb( noti_cb_list = g_notification_cb_list; + if (detailed_changed_cb == NULL) { + return NOTIFICATION_ERROR_INVALID_DATA; + } if (noti_cb_list == NULL) { return NOTIFICATION_ERROR_INVALID_DATA; } @@ -2598,6 +2387,10 @@ EXPORT_API notification_error_e notification_get_count(notification_type_e type, int ret = 0; int noti_count = 0; + if (count == NULL) { + return NOTIFICATION_ERROR_INVALID_DATA; + } + ret = notification_noti_get_count(type, pkgname, group_id, priv_id, ¬i_count); @@ -2605,9 +2398,7 @@ EXPORT_API notification_error_e notification_get_count(notification_type_e type, return ret; } - if (count != NULL) { - *count = noti_count; - } + *count = noti_count; return NOTIFICATION_ERROR_NONE; } @@ -2619,6 +2410,10 @@ EXPORT_API notification_error_e notification_get_list(notification_type_e type, notification_list_h get_list = NULL; int ret = 0; + if (list == NULL) { + return NOTIFICATION_ERROR_INVALID_DATA; + } + ret = notification_noti_get_grouping_list(type, count, &get_list); if (ret != NOTIFICATION_ERROR_NONE) { return ret; @@ -2636,6 +2431,10 @@ notification_get_grouping_list(notification_type_e type, int count, notification_list_h get_list = NULL; int ret = 0; + if (list == NULL) { + return NOTIFICATION_ERROR_INVALID_DATA; + } + ret = notification_noti_get_grouping_list(type, count, &get_list); if (ret != NOTIFICATION_ERROR_NONE) { return ret; @@ -2655,6 +2454,10 @@ EXPORT_API notification_error_e notification_get_detail_list(const char *pkgname notification_list_h get_list = NULL; int ret = 0; + if (list == NULL) { + return NOTIFICATION_ERROR_INVALID_DATA; + } + ret = notification_noti_get_detail_list(pkgname, group_id, priv_id, count, &get_list); @@ -2673,7 +2476,6 @@ EXPORT_API notification_error_e notification_free_list(notification_list_h list) notification_h noti = NULL; if (list == NULL) { - NOTIFICATION_ERR("INVALID DATA : list == NULL"); return NOTIFICATION_ERROR_INVALID_DATA; } @@ -2766,6 +2568,10 @@ EXPORT_API notification_error_e notification_add_deffered_task( void (*deffered_task_cb)(void *data), void *user_data) { + if (deffered_task_cb == NULL) { + return NOTIFICATION_ERROR_INVALID_DATA; + } + return notification_ipc_add_deffered_task(deffered_task_cb, user_data); } @@ -2773,5 +2579,229 @@ EXPORT_API notification_error_e notification_del_deffered_task( void (*deffered_task_cb)(void *data)) { + if (deffered_task_cb == NULL) { + return NOTIFICATION_ERROR_INVALID_DATA; + } + return notification_ipc_del_deffered_task(deffered_task_cb); } + +/* notification_set_icon will be removed */ +EXPORT_API notification_error_e notification_set_icon(notification_h noti, + const char *icon_path) +{ + int ret_err = NOTIFICATION_ERROR_NONE; + + ret_err = + notification_set_image(noti, NOTIFICATION_IMAGE_TYPE_ICON, + icon_path); + + return ret_err; +} + +/* notification_get_icon will be removed */ +EXPORT_API notification_error_e notification_get_icon(notification_h noti, + char **icon_path) +{ + int ret_err = NOTIFICATION_ERROR_NONE; + char *ret_image_path = NULL; + + ret_err = + notification_get_image(noti, NOTIFICATION_IMAGE_TYPE_ICON, + &ret_image_path); + + if (ret_err == NOTIFICATION_ERROR_NONE && icon_path != NULL) { + *icon_path = ret_image_path; + + //NOTIFICATION_DBG("Get icon : %s", *icon_path); + } + + return ret_err; +} + +EXPORT_API notification_error_e notification_set_title(notification_h noti, + const char *title, + const char *loc_title) +{ + int noti_err = NOTIFICATION_ERROR_NONE; + + noti_err = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_TITLE, + title, loc_title, + NOTIFICATION_VARIABLE_TYPE_NONE); + + return noti_err; +} + +EXPORT_API notification_error_e notification_get_title(notification_h noti, + char **title, + char **loc_title) +{ + int noti_err = NOTIFICATION_ERROR_NONE; + char *ret_text = NULL; + + noti_err = + notification_get_text(noti, NOTIFICATION_TEXT_TYPE_TITLE, + &ret_text); + + if (title != NULL) { + *title = ret_text; + } + + if (loc_title != NULL) { + *loc_title = NULL; + } + + return noti_err; +} + +EXPORT_API notification_error_e notification_set_content(notification_h noti, + const char *content, + const char *loc_content) +{ + int noti_err = NOTIFICATION_ERROR_NONE; + + noti_err = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT, + content, loc_content, + NOTIFICATION_VARIABLE_TYPE_NONE); + + return noti_err; +} + +EXPORT_API notification_error_e notification_get_content(notification_h noti, + char **content, + char **loc_content) +{ + int noti_err = NOTIFICATION_ERROR_NONE; + char *ret_text = NULL; + + noti_err = + notification_get_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT, + &ret_text); + + if (content != NULL) { + *content = ret_text; + } + + if (loc_content != NULL) { + *loc_content = NULL; + } + + return noti_err; + +#if 0 + ret = + vconf_get_bool + (VCONFKEY_SETAPPL_STATE_TICKER_NOTI_DISPLAY_CONTENT_BOOL, &boolval); + + if (ret == -1 || boolval == 0) { + if (content != NULL && noti->default_content != NULL) { + *content = noti->default_content; + } + + if (loc_content != NULL && noti->loc_default_content != NULL) { + *loc_content = noti->loc_default_content; + } + } +#endif +} + +EXPORT_API notification_error_e notification_set_args(notification_h noti, + bundle * args, + bundle * group_args) +{ + if (noti == NULL || args == NULL) { + return NOTIFICATION_ERROR_INVALID_DATA; + } + + if (noti->args) { + bundle_free(noti->args); + } + + noti->args = bundle_dup(args); + + if (noti->group_args) { + bundle_free(noti->group_args); + noti->group_args = NULL; + } + + if (group_args != NULL) { + noti->group_args = bundle_dup(group_args); + } + + return NOTIFICATION_ERROR_NONE; +} + +EXPORT_API notification_error_e notification_get_args(notification_h noti, + bundle ** args, + bundle ** group_args) +{ + if (noti == NULL || args == NULL) { + return NOTIFICATION_ERROR_INVALID_DATA; + } + + if (noti->args) { + *args = noti->args; + } else { + *args = NULL; + } + + if (group_args != NULL && noti->group_args) { + *group_args = noti->group_args; + } + + return NOTIFICATION_ERROR_NONE; +} + +EXPORT_API notification_error_e notification_delete_group_by_group_id(const char *pkgname, + notification_type_e type, + int group_id) +{ + int ret = 0; + char *caller_pkgname = NULL; + + if (pkgname == NULL) { + caller_pkgname = _notification_get_pkgname_by_pid(); + } else { + caller_pkgname = strdup(pkgname); + } + + ret = notification_ipc_request_delete_multiple(type, caller_pkgname); + if (ret != NOTIFICATION_ERROR_NONE) { + if (caller_pkgname) { + free(caller_pkgname); + } + return ret; + } + + if (caller_pkgname) { + free(caller_pkgname); + } + return NOTIFICATION_ERROR_NONE; +} + +EXPORT_API notification_error_e notification_delete_group_by_priv_id(const char *pkgname, + notification_type_e type, + int priv_id) +{ + int ret = 0; + char *caller_pkgname = NULL; + + if (pkgname == NULL) { + caller_pkgname = _notification_get_pkgname_by_pid(); + } else { + caller_pkgname = strdup(pkgname); + } + + ret = notification_ipc_request_delete_single(type, caller_pkgname, priv_id); + if (ret != NOTIFICATION_ERROR_NONE) { + if (caller_pkgname) { + free(caller_pkgname); + } + return ret; + } + + if (caller_pkgname) { + free(caller_pkgname); + } + return NOTIFICATION_ERROR_NONE; +} diff --git a/src/notification_db.c b/src/notification_db.c index 0bc01e7..7796fa5 100755 --- a/src/notification_db.c +++ b/src/notification_db.c @@ -67,20 +67,37 @@ int notification_db_close(sqlite3 ** db) int notification_db_exec(sqlite3 * db, const char *query, int *num_changes) { int ret = 0; - char *err_msg = NULL; + sqlite3_stmt *stmt = NULL; if (db == NULL) { return NOTIFICATION_ERROR_INVALID_DATA; } + if (query == NULL) { + return NOTIFICATION_ERROR_INVALID_DATA; + } - ret = sqlite3_exec(db, query, NULL, NULL, &err_msg); + ret = sqlite3_prepare_v2(db, query, strlen(query), &stmt, NULL); if (ret != SQLITE_OK) { - NOTIFICATION_ERR("SQL error(%d) : %s", ret, err_msg); - sqlite3_free(err_msg); + NOTIFICATION_ERR("DB err(%d) : %s", ret, + sqlite3_errmsg(db)); return NOTIFICATION_ERROR_FROM_DB; } - if (num_changes != NULL) { - *num_changes = sqlite3_changes(db); + + if (stmt != NULL) { + ret = sqlite3_step(stmt); + if (ret == SQLITE_OK || ret == SQLITE_DONE) { + if (num_changes != NULL) { + *num_changes = sqlite3_changes(db); + } + sqlite3_finalize(stmt); + } else { + NOTIFICATION_ERR("DB err(%d) : %s", ret, + sqlite3_errmsg(db)); + sqlite3_finalize(stmt); + return NOTIFICATION_ERROR_FROM_DB; + } + } else { + return NOTIFICATION_ERROR_FROM_DB; } return NOTIFICATION_ERROR_NONE; diff --git a/src/notification_ipc.c b/src/notification_ipc.c index 1ea374a..19af87c 100755 --- a/src/notification_ipc.c +++ b/src/notification_ipc.c @@ -3,7 +3,7 @@ * * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. * - * Contact: Seungtaek Chung <seungtaek.chung@samsung.com>, Mi-Ju Lee <miju52.lee@samsung.com>, Xi Zhichan <zhichan.xi@samsung.com> + * Contact: Seungtaek Chung <seungtaek.chung@samsung.com>, Mi-Ju Lee <miju52.lee@samsung.com>, Xi Zhichan <zhichan.xi@samsung.com>, Youngsub Ko <ys4610.ko@samsung.com> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -863,6 +863,7 @@ notification_error_e notification_ipc_request_insert(notification_h noti, int *p } packet_unref(result); } else { + NOTIFICATION_ERR("failed to receive answer(insert)"); return NOTIFICATION_ERROR_SERVICE_NOT_READY; } @@ -894,6 +895,7 @@ notification_error_e notification_ipc_request_delete_single(notification_type_e } packet_unref(result); } else { + NOTIFICATION_ERR("failed to receive answer(delete)"); return NOTIFICATION_ERROR_SERVICE_NOT_READY; } @@ -922,6 +924,7 @@ notification_error_e notification_ipc_request_delete_multiple(notification_type_ NOTIFICATION_ERR("num deleted:%d", num_deleted); packet_unref(result); } else { + NOTIFICATION_ERR("failed to receive answer(delete multiple)"); return NOTIFICATION_ERROR_SERVICE_NOT_READY; } @@ -949,6 +952,7 @@ notification_error_e notification_ipc_request_update(notification_h noti) } packet_unref(result); } else { + NOTIFICATION_ERR("failed to receive answer(update)"); return NOTIFICATION_ERROR_SERVICE_NOT_READY; } @@ -1075,6 +1079,7 @@ notification_error_e notification_ipc_request_refresh(void) } packet_unref(result); } else { + NOTIFICATION_ERR("failed to receive answer(refresh)"); return NOTIFICATION_ERROR_SERVICE_NOT_READY; } @@ -1102,6 +1107,7 @@ notification_error_e notification_ipc_noti_setting_property_set(const char *pkgn } packet_unref(result); } else { + NOTIFICATION_ERR("failed to receive answer(delete)"); return NOTIFICATION_ERROR_SERVICE_NOT_READY; } @@ -1132,6 +1138,7 @@ notification_error_e notification_ipc_noti_setting_property_get(const char *pkgn } packet_unref(result); } else { + NOTIFICATION_ERR("failed to receive answer(delete)"); return NOTIFICATION_ERROR_SERVICE_NOT_READY; } diff --git a/src/notification_setting.c b/src/notification_setting.c index 246f964..6fac097 100755 --- a/src/notification_setting.c +++ b/src/notification_setting.c @@ -3,7 +3,7 @@ * * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. * - * Contact: Seungtaek Chung <seungtaek.chung@samsung.com>, Mi-Ju Lee <miju52.lee@samsung.com>, Xi Zhichan <zhichan.xi@samsung.com> + * Contact: Seungtaek Chung <seungtaek.chung@samsung.com>, Mi-Ju Lee <miju52.lee@samsung.com>, Xi Zhichan <zhichan.xi@samsung.com>, Youngsub Ko <ys4610.ko@samsung.com> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -167,7 +167,6 @@ EXPORT_API notification_error_e notification_setting_db_set(const char *pkgname, sqlite3 *db = NULL; char *sqlbuf = NULL; int sqlret; - char *err_msg = NULL; const char *column = NULL; if (!pkgname) @@ -204,24 +203,16 @@ EXPORT_API notification_error_e notification_setting_db_set(const char *pkgname, goto return_close_db; } - sqlret = sqlite3_exec(db, sqlbuf, NULL, NULL, &err_msg); - if (sqlret != SQLITE_OK) { - NOTIFICATION_ERR("fail to set pkgname[%s] option[%s], value[%s], err[%d - %s]", - pkgname, value, property, sqlret, err_msg); - result = NOTIFICATION_ERROR_FROM_DB; - goto return_close_db; - } + result = notification_db_exec(db, sqlbuf, NULL); return_close_db: - if (err_msg) - sqlite3_free(err_msg); - if (sqlbuf) sqlite3_free(sqlbuf); sqlret = db_util_close(db); - if (sqlret != SQLITE_OK) + if (sqlret != SQLITE_OK) { NOTIFICATION_WARN("fail to db_util_close - [%d]", sqlret); + } return result; } diff --git a/src/notification_status.c b/src/notification_status.c index 97fbe41..b0a1d4e 100755 --- a/src/notification_status.c +++ b/src/notification_status.c @@ -3,7 +3,7 @@ * * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. * - * Contact: Seungtaek Chung <seungtaek.chung@samsung.com>, Mi-Ju Lee <miju52.lee@samsung.com>, Xi Zhichan <zhichan.xi@samsung.com> + * Contact: Seungtaek Chung <seungtaek.chung@samsung.com>, Mi-Ju Lee <miju52.lee@samsung.com>, Xi Zhichan <zhichan.xi@samsung.com>, Youngsub Ko <ys4610.ko@samsung.com> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -72,7 +72,6 @@ static void __notification_status_message_change_cb(keynode_t *node, void *user_ return; } - NOTIFICATION_DBG("message : %s", message); md.callback(message, md.data); } |