Unfortunately, we should overwrite whole code for notification now.
This will be repalced with Tizen 2.3/2.4 code.
Change-Id: I407f81d144fd0603c6cbc1d847452f2038e768b8
Signed-off-by: Sung-jae Park <nicesj.park@samsung.com>
+++ /dev/null
-youngsub ko <ys4610.ko at samsung dot com>
-seung taek jung <seungtaek.chung at samsung dot com>
+++ /dev/null
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-PROJECT(notification C)
-
-SET(PREFIX ${CMAKE_INSTALL_PREFIX})
-SET(EXEC_PREFIX "\${prefix}")
-SET(LIBDIR ${LIB_INSTALL_DIR})
-SET(INCLUDEDIR "\${prefix}/include/${PROJECT_NAME}")
-SET(ICONDIR "${PREFIX}/share/${PROJECT_NAME}")
-SET(DBFILE ".notification.db")
-SET(MAJOR_VER 0)
-SET(VERSION ${MAJOR_VER}.1.0)
-
-SET(SRCS
- ./src/notification.c
- ./src/notification_noti.c
- ./src/notification_ongoing.c
- ./src/notification_group.c
- ./src/notification_db.c
- ./src/notification_list.c
- ./src/notification_status.c
- ./src/notification_ipc.c
- ./src/notification_setting.c)
-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_noti.h
- ./include/notification_setting_service.h)
-
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
-
-INCLUDE(FindPkgConfig)
-pkg_check_modules(pkgs REQUIRED
- sqlite3
- db-util
- vconf
- bundle
- dlog
- ail
- aul
- appsvc
- dbus-1
- dbus-glib-1
- com-core
- capi-appfw-application
- ecore
- eina
- libtzplatform-config
-)
-
-FOREACH(flag ${pkgs_CFLAGS})
- SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
-ENDFOREACH(flag)
-
-SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden -g -Wall -Wno-unused-result")
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
-
-SET(CMAKE_SKIP_BUILD_RPATH TRUE)
-
-ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"")
-ADD_DEFINITIONS("-DICONDIR=\"${ICONDIR}\"")
-ADD_DEFINITIONS("-DDBFILE=\"${DBFILE}\"")
-
-ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS})
-SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${MAJOR_VER})
-SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES VERSION ${VERSION})
-TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS})
-
-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-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_INSTALL_DIR}/pkgconfig)
-
-FOREACH(hfile ${HEADERS-SERVICE-DEVEL})
- INSTALL(FILES ${CMAKE_SOURCE_DIR}/${hfile} DESTINATION include/${PROJECT_NAME}/service)
-ENDFOREACH(hfile)
-INSTALL(FILES ${CMAKE_SOURCE_DIR}/notification_DB_init.sh DESTINATION ${SHARE_INSTALL_PREFIX}/${PROJECT_NAME})
+++ /dev/null
-Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
-
+++ /dev/null
-Copyright (c) Samsung Electronics Co., Ltd. All rights reserved.
-Except as noted, this software is licensed under Apache License, Version 2.
-Please, see the LICENSE file for Apache License terms and conditions.
+++ /dev/null
-/*
- * 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>
- *
- * 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.
- *
- */
-
-/**
- *
- * @ingroup NOTIFICATION_LIBRARY
- * @defgroup NOTIFICATION_MODULE notification APIs
- * @brief Notification APIs
- *
- * @section NOTIFICATION_MODULE_HEADER Required Header
- * \#include <notification.h>
- * @section NOTIFICATION_MODULE_OVERVIEW Overview
- * It provides functions for creating and inserting and updating notification.
- *
- * @ingroup NOTIFICATION_LIBRARY
- * @defgroup NOTIFICATION_LIST notification list APIs
- * @brief linked list of notification data
- *
- * @section NOTIFICATION_LIST_MODULE_HEADER Required Header
- * \#include <notification_list.h>
- * @section NOTIFICATION_LIST_MODULE_OVERVIEW Overview
- * It provides functions for handling
- *
- * @ingroup NOTIFICATION_LIBRARY
- * @defgroup NOTIFICATION_STATUS notification status APIs
- * @brief APIs displaying plain text message on the indicator area
- *
- * @section NOTIFICATION_STATUS_MODULE_HEADER Required Header
- * \#include <notification_status.h>
- * @section NOTIFICATION_STATUS_MODULE_OVERVIEW Overview
- * Notification status APIs
- *
- * @ingroup NOTIFICATION_LIBRARY
- * @defgroup NOTIFICATION_TYPE notification type
- * @brief Type for notification APIs
- *
- * @section NOTIFICATION_TYPE_MODULE_HEADER Required Header
- * \#include <notification_type.h>
- * @section NOTIFICATION_TYPE_MODULE_OVERVIEW Overview
- * Type defines and enumerations for Notification APIs
- *
- * @ingroup NOTIFICATION_LIBRARY
- * @defgroup NOTIFICATION_DEPRECATED deprecated APIs
- * @brief deprecated APIs
- *
- */
+++ /dev/null
-/*
- * 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_H__
-#define __NOTIFICATION_H__
-
-#include <time.h>
-#include <bundle.h>
-
-#include <notification_error.h>
-#include <notification_type.h>
-#include <notification_list.h>
-#include <notification_status.h>
-#include <notification_setting.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @file notification.h
- * @brief This file contains the notification APIs
- */
-
-/**
- * @addtogroup NOTIFICATION_MODULE
- * @{
- */
-
-/**
- * @brief Set absolute path for image file to display on notification view
- * @details
- * @remarks
- * @param[in] noti notification handle
- * @param[in] type notification image type
- * @param[in] image_path image file full path
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid parameter
- * @pre Notification handle should be created by notification_new()
- * @post
- * @see #notification_image_type_e
- * @see notification_new()
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti = notification_new(NOTIFICATION_TYPE_NOTI, APP_GROUP_ID, NOTIFICATION_PRIV_ID_NONE);
- if(noti == NULL) {
- return;
- }
-
- noti_err = notification_set_image(noti, NOTIFICATION_IMAGE_TYPE_ICON, APP_IMAGE_FULL_PATH);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- notification_free(noti);
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_set_image(notification_h noti,
- notification_image_type_e type,
- const char *image_path);
-
-/**
- * @brief Get absolute path for image file
- * @details
- * @remarks Do not free image_path. It will be freed when notification_free() or notification_free_list().
- * @param[in] noti notification handle
- * @param[in] type notification image type
- * @param[out] image_path image file full path
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid parameter
- * @pre Notification handle should be created by notification_new()
- * @post
- * @see #notification_image_type_e
- * @see notification_new()
- * @par Sample code:
- * @code
- #include <notification.h>
- ...
- {
- char *image_path = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti_err = notification_get_image(noti, NOTIFICATION_IMAGE_TYPE_ICON, &image_path);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_get_image(notification_h noti,
- notification_image_type_e type,
- char **image_path);
-
-/**
- * @brief Set a timestamp
- * @details If input_time is 0, time information is set by current time.
- * @remarks
- * @param[in] noti notification handle
- * @param[in] input_time input time
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid parameter
- * @pre Notification handle should be created by notification_new()
- * @post
- * @see notification_new()
- * @par Sample code:
- * @code
-#include <notification.h>
- ...
- {
- notification_h noti = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti = notification_new(NOTIFICATION_TYPE_NOTI, APP_GROUP_ID, NOTIFICATION_PRIV_ID_NONE);
- if(noti == NULL) {
- return;
- }
-
- noti_err = notification_set_time(noti, time(NULL));
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- notification_free(noti);
- return;
- }
- }
- * @endcode
- */
-notification_error_e notification_set_time(notification_h noti,
- time_t input_time);
-
-/**
- * @brief Get a timestamp
- * @details If ret_time is 0, time information is not set before.
- * @remarks
- * @param[in] noti notification handle
- * @param[out] ret_time return time value
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid parameter
- * @pre Notification handle should be created by notification_new()
- * @post
- * @see notification_new()
- * @par Sample code:
- * @code
- #include <notification.h>
- ...
- {
- time_t ret_time;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti_err = notification_get_time(noti, &ret_time);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_get_time(notification_h noti,
- time_t * ret_time);
-
-/**
- * @brief Get timestamp that the notification is inserted
- * @details If ret_time is 0, this notification data is not inserted before.
- * @remarks
- * @param[in] noti notification handle
- * @param[out] ret_time return time value
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid parameter
- * @pre
- * @post
- * @see
- * @par Sample code:
- * @code
- #include <notification.h>
- ...
- {
- time_t ret_time;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti_err = notification_get_insert_time(noti, &ret_time);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
- }
- * @endcode
- */
-notification_error_e notification_get_insert_time(notification_h noti,
- time_t * ret_time);
-
-/**
- * @brief Set text to display on the notification view
- * @details Set title, content string. If text is formated data(only support %d, %f, %s), type - value pair should be set.
- * If %d, type NOTIFICATION_VARIABLE_TYPE_INT and value is integer value.
- * If %f, type NOTIFICATION_VARIABLE_TYPE_DOUBLE and value is double value.
- * If %s, type NOTIFICATION_VARIABLE_TYPE_STRING and value is character string.
- * If type is NOTIFICATION_VARIABLE_TYPE_COUNT, notification count is displaying with text.
- * If value is NOTIFICATION_COUNT_POS_LEFT, count is displaying at the left of the text.
- * If value is NOTIFICATION_COUNT_POS_IN, count is displaying in the text that text has %d format.
- * If value is NOTIFICATION_COUNT_POS_RIGHT, count is displaying at the right of the text.
- * Variable parameter should be terminated NOTIFICATION_VARIABLE_TYPE_NONE.
- * @remarks
- * @param[in] noti notification handle
- * @param[in] type notification text type
- * @param[in] text basic text
- * @param[in] key text key for localization
- * @param[in] args_type variable parameter that type - value pair.
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid parameter
- * @pre notification handle should be created by notification_new().
- * @post
- * @see
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti = notification_new(NOTIFICATION_TYPE_NOTI, APP_GROUP_ID, NOTIFICATION_PRIV_ID_NONE);
- if(noti == NULL) {
- return;
- }
-
- noti_err = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_TITLE, "I'm Title", "IDS_APP_BODY_IM_TITLE", NOTIFICATION_VARIABLE_TYPE_NONE);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- notification_free(noti);
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_set_text(notification_h noti,
- notification_text_type_e type,
- const char *text,
- const char *key,
- int args_type, ...);
-
-/**
- * @brief Get the text from the notification handle
- * @details
- * @remarks
- * @param[in] noti notification handle
- * @param[in] type notification text type.
- * @param[out] text text
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid parameter
- * @pre
- * @post
- * @see
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
- char *text = NULL;
-
- noti_err = notification_get_text(noti, NOTIFICATION_TEXT_TYPE_TITLE, &text);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_get_text(notification_h noti,
- notification_text_type_e type,
- char **text);
-
-/**
- * @brief Set a timestamp to display on the notification view
- * @details the timestamp will be converted to formatted string and it will be displayed on the setted text area
- * @remarks
- * @param[in] noti notification handle
- * @param[in] type notification text type
- * @param[in] time time stamp
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid parameter
- * @pre notification handle should be created by notification_new().
- * @post
- * @see
- */
-notification_error_e notification_set_time_to_text(notification_h noti, notification_text_type_e type,
- time_t time);
-
-/**
- * @brief Get a timestamp from the notification handle
- * @details
- * @remarks
- * @param[in] noti notification handle
- * @param[in] type notification text type
- * @param[in] time pointer of time stamp
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid parameter
- * @pre notification handle should be created by notification_new().
- * @post
- * @see
- */
-notification_error_e notification_get_time_from_text(notification_h noti, notification_text_type_e type,
- time_t *time);
-
-/**
- * @brief Set text domain to localize the notification
- * @details
- * @remarks
- * @param[in] noti notification handle
- * @param[in] domain text domain
- * @param[in] dir text dir
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid parameter
- * @pre
- * @post
- * @see
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti = notification_new(NOTIFICATION_TYPE_NOTI, APP_GROUP_ID, NOTIFICATION_PRIV_ID_NONE);
- if(noti == NULL) {
- return;
- }
-
- noti_err = notification_set_text_domain(noti, PACKAGE, LOCALEDIR);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- notification_free(noti);
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_set_text_domain(notification_h noti,
- const char *domain,
- const char *dir);
-
-/**
- * @brief Get text domain from the notification handle
- * @details
- * @remarks Do not free returned domain and dir. These are freed when notification_free or notification_free_list.
- * @param[in] noti notification handle
- * @param[out] domain domain
- * @param[out] dir locale dir
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid parameter
- * @pre
- * @post
- * @see
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
- char *domain = NULL;
- char *dir = NULL;
-
- noti_err = notification_get_text_domain(noti, &domain, &dir);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_get_text_domain(notification_h noti,
- char **domain,
- char **dir);
-
-/**
- * @brief Set sound option for the notification
- * @details
- * @remarks
- * @param[in] noti notification handle
- * @param[in] type notification sound type
- * @param[in] path user sound file path
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid parameter
- * @pre
- * @post
- * @see
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti_err = notification_set_sound(noti, NOTIFICATION_SOUND_TYPE_DEFAULT, NULL);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_set_sound(notification_h noti,
- notification_sound_type_e type,
- const char *path);
-
-/**
- * @brief Get sound option from the notification handle
- * @details
- * @remarks
- * @param[in] noti notification handle
- * @param[out] type notification sound type
- * @param[out] path user sound file path
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid parameter
- * @pre
- * @post
- * @see
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
- notification_sound_type_e type = NOTIFICATION_SOUND_TYPE_NONE;
-
- noti_err = notification_get_sound(noti, &type, NULL);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_get_sound(notification_h noti,
- notification_sound_type_e *type,
- const char **path);
-
-/**
- * @brief Set vibrate option for the notification
- * @details
- * @remarks
- * @param[in] noti notification handle
- * @param[in] type notification vibration type
- * @param[in] path user vibration file path
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid parameter
- * @pre
- * @post
- * @see
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti_err = notification_set_vibration(noti, NOTIFICATION_VIBRATION_TYPE_DEFAULT, NULL);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_set_vibration(notification_h noti,
- notification_vibration_type_e type,
- const char *path);
-
-/**
- * @brief Get vibrate option from the notification handle
- * @details
- * @remarks
- * @param[in] noti notification handle
- * @param[out] type notification sound type
- * @param[out] path user vibration file path
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid parameter
- * @pre
- * @post
- * @see
- * @par Sample code:
- * @code
-#include <notification.h>
-...
- {
- notification_h noti = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
- notification_vibration_type_e type = NOTIFICATION_VIBRATION_TYPE_NONE;
-
- noti_err = notification_get_vibration(noti, &type, NULL);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_get_vibration(notification_h noti,
- notification_vibration_type_e *type,
- const char **path);
-
-/**
- * @brief Set option of displaying the LED
- * @details
- * @remarks
- * @param[in] noti notification handle
- * @param[in] operation led notification operation
- * @param[in] led_argb notification led color
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid parameter
- * @pre
- * @post
- * @see
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti_err = notification_set_led(noti, NOTIFICATION_LED_TYPE_DEFAULT, NULL);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_set_led(notification_h noti,
- notification_led_op_e operation,
- int led_argb);
-
-/**
- * @brief Get option of displaying the LED from the notification handle
- * @details
- * @remarks
- * @param[in] noti notification handle
- * @param[out] operation led notification operation
- * @param[out] led_argb notification led color
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid parameter
- * @pre
- * @post
- * @see
- * @par Sample code:
- * @code
-#include <notification.h>
-...
- {
- notification_h noti = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
- notification_led_type_e type = NOTIFICATION_LED_TYPE_NONE;
-
- noti_err = notification_get_led(noti, &type, NULL);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_get_led(notification_h noti,
- notification_led_op_e *operation,
- int *led_argb);
-
-/**
- * @brief Set time period of flashing the LED
- * @details
- * @remarks
- * @param[in] noti notification handle
- * @param[in] on_ms time for turning on the LED
- * @param[in] off_ms time for turning on the LED
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid parameter
- * @pre
- * @post
- * @see
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti_err = notification_set_led_time_period(noti, 100, 100);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_set_led_time_period(notification_h noti,
- int on_ms, int off_ms);
-
-/**
- * @brief Get time period of flashing the LED from the notification handle
- * @details
- * @remarks
- * @param[in] noti notification handle
- * @param[out] on_ms time for turning on the LED
- * @param[out] off_ms time for turning on the LED
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid parameter
- * @pre
- * @post
- * @see
- * @par Sample code:
- * @code
-#include <notification.h>
-...
- {
- notification_h noti = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
- int led_on_ms = 0;
- int led_off_ms = 0;
-
- noti_err = notification_get_led_time_period(noti, &led_on_ms, &led_off_ms);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_get_led_time_period(notification_h noti,
- int *on_ms, int *off_ms);
-
-/**
- * @brief Sets the launch option for a notification.
- * @details When notification data selected in display application, application launched by app_control_send_launch_request with app_control handle.
- * @since_tizen 2.3
- * @param[in] noti The notification handle
- * @param[in] type Launching option type
- * @param[in] option App Control handler
- * @return #NOTIFICATION_ERROR_NONE on success,
- * otherwise any other value on failure
- * @retval #NOTIFICATION_ERROR_NONE Success
- * @retval #NOTIFICATION_ERROR_INVALID_PARAMETER Invalid parameter
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
- app_control_h app_control = NULL;
- int noti_err = NOTIFICATION_ERROR_NONE;
-
- ...
-
- app_control_create(&app_control);
- app_control_set_app_id(app_control, "org.tizen.app");
-
- ...
-
- noti_err = notification_set_launch_option(noti, NOTIFICATION_LAUNCH_OPTION_APP_CONTROL, (void *)app_control);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- notification_free(noti);
- return;
- }
-
- app_control_destroy(app_control);
-}
- * @endcode
- */
-int notification_set_launch_option(notification_h noti,
- notification_launch_option_type type, void *option);
-
-/**
- * @brief Gets the launch option from the notification handle.
- * @since_tizen 2.3
- * @remarks You must release @a app_control using app_control_destroy().
- * @param[in] noti The notification handle
- * @param[in] type Launching option type
- * @param[out] option The pointer of App Control handler
- * @return #NOTIFICATION_ERROR_NONE on success,
- * otherwise any other value on failure
- * @retval #NOTIFICATION_ERROR_NONE Success
- * @retval #NOTIFICATION_ERROR_INVALID_PARAMETER Invalid parameter
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- app_control_h app_control = NULL;
- app_control_create(&app_control);
-
- ...
-
- noti_err = notification_get_launch_option(noti, NOTIFICATION_LAUNCH_OPTION_APP_CONTROL, (void *)&app_control);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- notification_free(noti);
- return;
- }
-}
- * @endcode
- */
-int notification_get_launch_option(notification_h noti,
- notification_launch_option_type type, void *option);
-
-/**
- * @brief Set execution option for a notification
- * @details When notification data selected in display application, application launched by appsvc_run_service with service_handle.
- * @remarks
- * @param[in] noti notification handle
- * @param[in] type notification execute type
- * @param[in] text basic text for button
- * @param[in] key value for localizaed text
- * @param[in] service_handle appsvc bundle data
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid parameter
- * @pre
- * @post
- * @see
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
- bundle *b = NULL;
-
- ...
-
- b = bundle_create();
- appsvc_set_operation(b, APPSVC_OPERATION_VIEW);
- appsvc_set_uri(b,"http://www.samsung.com");
-
- noti_err = notification_set_execute_option(noti, NOTIFICATION_EXECUTE_TYPE_SINGLE_LAUNCH, NULL, NULL, b);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- notification_free(noti);
- return;
- }
-
- bundle_free(b);
-}
- * @endcode
- */
-notification_error_e notification_set_execute_option(notification_h noti,
- notification_execute_type_e type,
- const char *text,
- const char *key,
- bundle *service_handle);
-
-/**
- * @brief Get execution option from the notification handle
- * @details
- * @remarks
- * @param[in] noti notification handle
- * @param[in] type notification execute type
- * @param[out] text text for button
- * @param[out] service_handle appsvc bundle data
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid parameter
- * @pre
- * @post
- * @see
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
- bundle *b = NULL;
-
- ...
-
- noti_err = notification_get_execute_option(noti, NOTIFICATION_EXECUTE_TYPE_SINGLE_LAUNCH, NULL, NULL, &b);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- notification_free(noti);
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_get_execute_option(notification_h noti,
- notification_execute_type_e type,
- const char **text,
- bundle **service_handle);
-
-/**
- * @brief Set the property of the notification
- * @details
- * @remarks
- * @param[in] noti notification handle
- * @param[in] flags property with | operation
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid input value
- * @pre
- * @post
- * @see
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
- bundle *b = NULL;
-
- noti = notification_new(NOTIFICATION_TYPE_NOTI, APP_GROUP_ID, NOTIFICATION_PRIV_ID_NONE);
- if(noti == NULL) {
- return;
- }
-
- noti_err = notification_set_property(noti, NOTIFICATION_PROP_DISPLAY_ONLY_SIMMODE | NOTIFICATION_PROP_DISABLE_APP_LAUNCH);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- notification_free(noti);
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_set_property(notification_h noti,
- int flags);
-
-/**
- * @brief Get the property of the notification from the notification handle
- * @details
- * @remarks
- * @param[in] noti notification handle
- * @param[out] flags notification property
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid input value
- * @pre
- * @post
- * @see
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
- int flags = 0;
-
- noti_err = notification_get_property(noti, &flags);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_get_property(notification_h noti,
- int *flags);
-
-/**
- * @brief Set applications to display the notification
- * @details All display application is enable(NOTIFICATION_DISPLAY_APP_ALL) if you are not call this API.
- * @remarks
- * @param[in] noti notification handle
- * @param[in] applist with | operation
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid input value
- * @pre
- * @post
- * @see
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
- bundle *b = NULL;
-
- noti = notification_new(NOTIFICATION_TYPE_NOTI, APP_GROUP_ID, NOTIFICATION_PRIV_ID_NONE);
- if(noti == NULL) {
- return;
- }
-
- noti_err = notification_set_display_applist(noti, NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY | NOTIFICATION_DISPLAY_APP_TICKER);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- notification_free(noti);
- return;
- }
-}
-}
- * @endcode
- */
-notification_error_e notification_set_display_applist(notification_h noti,
- int applist);
-
-/**
- * @brief Get application list to display the notification from the notification handle
- * @details
- * @remarks
- * @param[in] noti notification handle
- * @param[out] applist display application list.
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid input value
- * @pre
- * @post
- * @see
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
- int applist = 0;
-
- noti_err = notification_get_display_applist(noti, &applist);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_get_display_applist(notification_h noti,
- int *applist);
-
-/**
- * @brief Set initial size for ongoing type.
- * @details After notification_insert, it does not upate size. If you want to update size, please call notification_update_size().
- * @remarks
- * @param[in] noti notification handle
- * @param[in] size double type size.
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid input value
- * @pre
- * @post
- * @see
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti = notification_new(NOTIFICATION_TYPE_NOTI, APP_GROUP_ID, NOTIFICATION_PRIV_ID_NONE);
- if(noti == NULL) {
- return;
- }
-
- noti_err = notification_set_size(noti, 0.0);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- notification_free(noti);
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_set_size(notification_h noti,
- double size);
-
-/**
- * @brief Get progress size.
- * @details
- * @remarks
- * @param[in] noti notification handle
- * @param[out] size progress size
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid input value
- * @pre
- * @post
- * @see
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
- double size = 0.0;
-
- noti_err = notification_get_size(noti, &size);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_get_size(notification_h noti,
- double *size);
-
-/**
- * @brief Set initial progress for ongoing type.
- * @details After notification_insert, it does not upate progress. If you want to update progress, please call notification_update_progress().
- * @remarks
- * @param[in] noti notification handle
- * @param[in] percentage progress percentage
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid input value
- * @pre
- * @post
- * @see
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti = notification_new(NOTIFICATION_TYPE_NOTI, APP_GROUP_ID, NOTIFICATION_PRIV_ID_NONE);
- if(noti == NULL) {
- return;
- }
-
- noti_err = notification_set_progress(noti, 0.0);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- notification_free(noti);
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_set_progress(notification_h noti,
- double percentage);
-
-/**
- * @brief Get progress from the notification handle
- * @details
- * @remarks At the end of the operation, progress should be 1.0
- * @param[in] noti notification handle
- * @param[out] percentage progress percentage
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid input value
- * @pre
- * @post
- * @see
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
- double percentage = 0.0;
-
- noti_err = notification_get_progress(noti, &percentage);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_get_progress(notification_h noti,
- double *percentage);
-
-/**
- * @brief Set the package name of caller
- * @details caller_pkgname is set automatically when notification_new. We are not recommend to use this API.
- * @remarks
- * @param[in] noti notification handle
- * @param[in] pkgname caller package name
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid input value
- * @pre
- * @post
- * @see
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti = notification_new(NOTIFICATION_TYPE_NOTI, APP_GROUP_ID, NOTIFICATION_PRIV_ID_NONE);
- if(noti == NULL) {
- return;
- }
-
- noti_err = notification_set_pkgname(noti, "com.samsung.phone");
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- notification_free(noti);
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_set_pkgname(notification_h noti,
- const char *pkgname);
-
-/**
- * @brief Get the package name of caller from the notification handle
- * @details
- * @remarks
- * @param[in] noti notification handle
- * @param[out] pkgname caller package name
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid input value
- * @pre
- * @post
- * @see
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
- char *pkgname = NULL;
-
- noti_err = notification_get_pkgname(noti, &pkgname);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_get_pkgname(notification_h noti,
- char **pkgname);
-
-/**
- * @brief Set the layout of the notification view
- * @details caller can set displaying layout of notification
- * @remarks
- * @param[in] noti notification handle
- * @param[in] type of layout
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid input value
- * @pre
- * @post
- * @see #notification_ly_type_e
- */
-notification_error_e notification_set_layout(notification_h noti,
- notification_ly_type_e layout);
-
-/**
- * @brief Get the layout of the notification view from the notification handle
- * @details
- * @remarks
- * @param[in] noti notification handle
- * @param[out] type of layout
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid input value
- * @pre
- * @post
- * @see #notification_ly_type_e
- */
-notification_error_e notification_get_layout(notification_h noti,
- notification_ly_type_e *layout);
-
-/**
- * @brief Get Group ID and Private ID
- * @details
- * @remarks ID is valid only after inserting the notification
- * @param[in] noti notification handle
- * @param[out] group_id Group ID
- * @param[out] priv_id Private ID
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid parameter
- * @pre
- * @post
- * @see
- * @par Sample code:
- * @code
-#include <notification.h>
- ...
- {
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
- int group_id, priv_id;
-
- noti_err = notification_get_id(noti, &group_id, &priv_id);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
- }
- * @endcode
- */
-notification_error_e notification_get_id(notification_h noti,
- int *group_id, int *priv_id);
-
-/**
- * @brief Get the type of notification
- * @details
- * @remarks
- * @param[in] noti notification handle
- * @param[out] type notification type
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid parameter
- * @pre
- * @post
- * @see
- * @par Sample code:
- * @code
-#include <notification.h>
-...
- {
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
- notification_type_e type;
-
- noti_err = notification_get_type(noti, &type);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_get_type(notification_h noti,
- notification_type_e * type);
-
-/**
- * @brief Insert a notification
- * @details A notification will be inserted to DB and then it will be appeared on the notification area
- * When notification_new() call, if priv_id is NOTIFICATION_PRIV_ID_NONE, priv_id is return internally set priv_id.
- * @remarks
- * @param[in] noti notification handle
- * @param[out] priv_id private ID
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - invalid parameter
- * @pre notification_new()
- * @post notification_free()
- * @see #notification_h
- * @par Sample code:
- * @code
-#include <notification.h>
-...
- {
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti_err = notification_insert(noti, NULL);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_insert(notification_h noti,
- int *priv_id);
-
-/**
- * @brief Update notification data.
- * @details The updated notification will be appeared on the notification area
- * @remarks
- * @param[in] noti notification handle that is created by notification_new().
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid input value
- * @retval NOTIFICATION_ERROR_NOT_EXIST_ID - not exist priv id
- * @pre
- * @post
- * @see #notification_h
- * @par Sample code:
- * @code
-#include <notification.h>
-...
- {
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti_err = notification_update(NULL);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_update(notification_h noti);
-
-/**
- * @brief Update a notification
- * @details The updated notification will be appeared on the notification area
- * @remarks This function update a notification in async manner
- * @param[in] noti notification handle that is created by notification_new().
- * @param[in] result_cb callback called when update completed
- * @param[in] user_data user data which you want to use in callback
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid input value
- * @retval NOTIFICATION_ERROR_NOT_EXIST_ID - not exist priv id
- * @pre
- * @post
- * @see #notification_h
- * @par Sample code:
- * @code
-#include <notification.h>
-...
- {
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti_err = notification_update_async(NULL, result_cb, data);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_update_async(notification_h noti,
- void (*result_cb)(int priv_id, int result, void *data), void *user_data);
-
-/**
- * @brief This function clear all notification of type.
- * @details Not recommand API. Only for notification tray's clear button operation.
- * @remarks
- * @param[in] type notification type
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid input value
- * @pre
- * @post
- * @see #notification_type_e
- * @par Sample code:
- * @code
-#include <notification.h>
-...
- {
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti_err = notifiation_clear(NOTIFICATION_TYPE_NOTI);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notifiation_clear(notification_type_e type);
-
-/**
- * @brief Delete all the notifications of the type.
- * @details If pkgname is NULL, caller_pkgname is set internally.
- * @remarks
- * @param[in] pkgname caller application package name or NULL
- * @param[in] type notification type
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid input value
- * @pre
- * @post
- * @see
- * @par Sample code:
- * @code
-#include <notification.h>
-...
- {
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti_err = notification_delete_all_by_type(NULL, NOTIFICATION_TYPE_NOTI);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_delete_all_by_type(const char *pkgname,
- notification_type_e type);
-
-/**
- * @brief Delete a notification by priv_id.
- * @details If pkgname is NULL, caller_pkgname is set internally.
- * @remarks
- * @param[in] pkgname caller application package name or NULL
- * @param[in] type notification type
- * @param[in] priv_id priv ID
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid input value
- * @pre
- * @post
- * @see
- * @par Sample code:
- * @code
-#include <notification.h>
-...
- {
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti_err = notification_delete_by_priv_id(NULL, NOTIFICATION_TYPE_NOTI, APP_PRIV_ID);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_delete_by_priv_id(const char *pkgname,
- notification_type_e type,
- int priv_id);
-
-/**
- * @brief Delete a notification with the given handle
- * @details notification_delete() remove notification data from DB and notification_free release menory of notification data.
- * @remarks
- * @param[in] noti notification handle
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid input value
- * @pre
- * @post
- * @see #notification_h
- * @par Sample code:
- * @code
-#include <notification.h>
-...
- {
- notificaton_h noti = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- ...
-
- noti_err = notification_delete(noti);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-
-}
- * @endcode
- */
-notification_error_e notification_delete(notification_h noti);
-
-/**
- * @brief Update progress of inserted notification. Only for the ongoing notification(NOTIFICATION_TYPE_ONGOING)
- * @details notification view on notification area could be updated
- * @remarks
- * @param[in] noti notification handle or NULL if priv_id is valid
- * @param[in] priv_id private ID
- * @param[in] progress % value of progressive data
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid input value
- * @pre
- * @post
- * @par Sample code:
- * @code
-#include <notification.h>
-...
- {
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti_err = notification_update_progress(NULL, APP_NOTI_PRIV_ID, 0.6);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_update_progress(notification_h noti,
- int priv_id,
- double progress);
-
-/**
- * @brief Update size of inserted notification data. Only for the ongoing notification(NOTIFICATION_TYPE_ONGOING)
- * @details notification view on notification area could be updated
- * @remarks
- * @param[in] noti notification handle or NULL if priv_id is valid
- * @param[in] priv_id private ID
- * @param[in] size bytes of progressive data
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid input value
- * @pre
- * @post
- * @par Sample code:
- * @code
-#include <notification.h>
-...
- {
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti_err = notification_update_size(NULL, APP_NOTI_PRIV_ID, 3000000);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_update_size(notification_h noti,
- int priv_id, double size);
-
-/**
- * @brief Update content of inserted notification data. Only for the ongoing notification(NOTIFICATION_TYPE_ONGOING)
- * @details notification view on notification area could be updated
- * @remarks
- * @param[in] noti notification handle or NULL if priv_id is valid
- * @param[in] priv_id private ID
- * @param[in] content text to update
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - Invalid input value
- * @pre
- * @post
- * @par Sample code:
- * @code
-#include <notification.h>
-...
- {
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti_err = notification_update_content(NULL, APP_NOTI_PRIV_ID, "updated string");
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_update_content(notification_h noti,
- int priv_id,
- const char *content);
-
-/**
- * @brief Create internal structure data and return notification handle.
- * @details Available type is #NOTIFICATION_TYPE_NOTI and #NOTIFICATION_TYPE_ONGOING.
- * #NOTIFICATION_TYPE_NOTI is remaining notification data evenif device is restarted.
- * #NOTIFICATION_TYPE_ONGOING can display progressive feather, but notification data is removed after device is restarted.
- * If group_id is #NOTIFICATION_GROUP_ID_NONE, notification data is not grouping. #NOTIFICATION_GROUP_ID_DEFAULT,
- * notification data is grouping with same title. Positive number ( > 0 ) is grouping with same number.
- * If priv_id is #NOTIFICATION_PRIV_ID_NONE, priv_id is set internally and return it when notification_insert() call.
- * Positive number and zero ( >= 0 ) is application set private ID. These ID should have be unique each application package.
- * @remarks
- * @param[in] type notification type
- * @param[in] group_id Group ID
- * @param[in] priv_id Priv ID
- * @return notification handle(#notification_h) if success, NULL if failure.
- * @retval #notification_h - success
- * @retval NULL - failure
- * @pre
- * @post
- * @see #notification_type_e
- * @see #notification_h
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
-
- noti = notification_new(NOTIFICATION_TYPE_NOTI, APP_GROUP_ID, NOTIFICATION_PRIV_ID_NONE);
- if(noti == NULL) {
- return;
- }
- ...
-}
- * @endcode
- */
-notification_h notification_new(notification_type_e type, int group_id,
- int priv_id);
-
-/**
- * @brief This function create internal structure data and return notification handle.
- * @details Available type is #NOTIFICATION_TYPE_NOTI and #NOTIFICATION_TYPE_ONGOING.
- * #NOTIFICATION_TYPE_NOTI is remaining notification data evenif device is restarted.
- * #NOTIFICATION_TYPE_ONGOING can display progressive feather, but notification data is removed after device is restarted.
- * @remarks
- * @param[in] type notification type
- * @return notification handle(#notification_h) if success, NULL if failure.
- * @retval #notification_h - success
- * @retval NULL - failure
- * @pre
- * @post
- * @see #notification_type_e
- * @see #notification_h
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
-
- noti = notification_create(NOTIFICATION_TYPE_NOTI);
- if(noti == NULL) {
- return;
- }
- ...
-}
- * @endcode
- */
-notification_h notification_create(notification_type_e type);
-
-/**
- * @brief load a notification from the notification DB with private id
- * @details
- * @remarks
- * @param[in] type notification type
- * @param[in] group_id Group ID
- * @param[in] priv_id Priv ID
- * @return notification handle(#notification_h) if success, NULL if failure.
- * @retval #notification_h - success
- * @retval NULL - failure
- * @pre
- * @post
- * @see #notification_type_e
- * @see #notification_h
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
-
- noti = notification_load("org.tizen.app", priv_id);
- if(noti == NULL) {
- return;
- }
- ...
-}
- * @endcode
- */
-notification_h notification_load(char *pkgname,
- int priv_id);
-
-/**
- * @brief Create a notification clone
- * @details Newly created notification handle is returned.
- * @remarks This clone notification handle should be call notification_free().
- * @param[in] noti notification handle
- * @param[out] clone newly created notification handle that has same with input noti.
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure.
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - invalid parameter
- * @pre
- * @post
- * @see #notification_type_e
- * @see #notification_h
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = notification_new(NOTIFICATION_TYPE_NOTI, APP_GROUP_ID, NOTIFICATION_PRIV_ID_NONE);
- notification_h clone = NULL;
-
- notification_clone(noti, &clone);
- ...
-}
- * @endcode
- */
-notification_error_e notification_clone(notification_h noti, notification_h *clone);
-
-/**
- * @brief Free internal structure data of notification handle.
- * @details Internal data of notification handle is released. Notification data that inserted is not deleted.
- * @remarks
- * @param[in] noti notification handle
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure.
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - invalid parameter
- * @pre notification_new()
- * @post
- * @see #notification_h
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti = notification_new(NOTIFICATION_TYPE_NOTI, APP_GROUP_ID, NOTIFICATION_PRIV_ID_NONE);
- if(noti == NULL) {
- return;
- }
- ...
-
- noti_err = notification_free(noti);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_free(notification_h noti);
-
-/**
- * @}
- */
-
-/**
- * @addtogroup NOTIFICATION_LIST
- * @{
- */
-
-/**
- * @brief This function return notification list handle.
- * @details If count is -1, all of notification list is returned.
- * @remarks
- * @param[in] type notification type
- * @param[in] count returned notification data number
- * @param[out] NOTIFICATION_ERROR_NONE if success, other value if failure.
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure.
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - invalid parameter
- * @pre
- * @post
- * @see #notification_list_h
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_list_h noti_list = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti_err = notification_get_list(NOTIFICATION_TYPE_NONE, -1, ¬i_list);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_get_list(notification_type_e type,
- int count,
- notification_list_h * list);
-
-/**
- * @brief This function will be deprecated.
- * @see notification_get_grouping_list()
- *
- */
-notification_error_e notification_get_grouping_list(notification_type_e type,
- int count,
- notification_list_h *list);
-
-/**
- * @brief This function return notification detail list handle of grouping data.
- * @details If count is -1, all of notification list is returned.
- * @remarks
- * @param[in] pkgname caller application package name
- * @param[in] group_id group id
- * @param[in] priv_id private id
- * @param[in] count returned notification data number
- * @param[out] list notification list handle
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure.
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - invalid parameter
- * @pre
- * @post
- * @see #notification_list_h
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_list_h noti_list = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti_err = notification_get_detail_list(pkgname, group_id, priv_id, -1, ¬i_list);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_get_detail_list(const char *pkgname,
- int group_id,
- int priv_id,
- int count,
- notification_list_h *list);
-
-/**
- * @brief Free notification list
- * @details
- * @remarks
- * @param[in] list notification list handle
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure.
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - invalid parameter
- * @pre notification_get_grouping_list() or notification_get_detail_list ()
- * @post
- * @see #notification_list_h
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_list_h noti_list = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- ...
-
- noti_err = notification_free_list(noti_list);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e notification_free_list(notification_list_h list);
-
-/**
- * @}
- */
-
-/**
- * @brief Register a callback for all notification events
- * @details The registered callback could be called for all notification events
- * @remarks
- * @param[in] changed_cb callback function
- * @param[in] user_data user data
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure.
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - invalid parameter
- * @pre notification_new()
- * @post
- * @see notification_unresister_changed_cb()
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- noti_err = notification_resister_changed_cb(app_changed_cb, user_data);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e
-notification_resister_changed_cb(
- void (*changed_cb)(void *data, notification_type_e type),
- void *user_data);
-
-/**
- * @brief Unregister a callback for all notification events
- * @details
- * @remarks
- * @param[in] changed_cb callback function
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure.
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - invalid parameter
- * @pre
- * @post
- * @see notification_resister_changed_cb()
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- noti_err = notification_unresister_changed_cb(app_changed_cb);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e
-notification_unresister_changed_cb(
- void (*changed_cb)(void *data, notification_type_e type));
-
-/**
- * @brief Register a callback for all notification events
- * @details The registered callback could be called for all notification events
- * @remarks
- * @param[in] changed_cb callback function
- * @param[in] user_data user data
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure.
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - invalid parameter
- * @pre
- * @post
- * @see notification_unregister_detailed_changed_cb()
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- noti_err = notification_resister_changed_cb(app_changed_cb, user_data);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e
-notification_register_detailed_changed_cb(
- void (*detailed_changed_cb)(void *data, notification_type_e type, notification_op *op_list, int num_op),
- void *user_data);
-
-/**
- * @brief Unregister a callback for all notification events
- * @details
- * @remarks
- * @param[in] changed_cb callback function
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure.
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - invalid parameter
- * @pre
- * @post
- * @see notification_register_detailed_changed_cb()
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- noti_err = notification_unresister_changed_cb(app_changed_cb);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-notification_error_e
-notification_unregister_detailed_changed_cb(
- void (*detailed_changed_cb)(void *data, notification_type_e type, notification_op *op_list, int num_op),
- void *user_data);
-
-/**
- * @brief Sets the tag of the notification handle.
- * @since_tizen 2.3
- * @param[in] noti Notification handle
- * @param[in] tag tag for loading notification handle
- * @return #NOTIFICATION_ERROR_NONE on success, other value on failure
- * @retval #NOTIFICATION_ERROR_NONE Success
- * @retval #NOTIFICATION_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #NOTIFICATION_ERROR_PERMISSION_DENIED The application does not have the privilege to call this method
- * @see notification_get_tag()
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
- int noti_err = NOTIFICATION_ERROR_NONE;
-
- noti = notification_create(NOTIFICATION_TYPE_NOTI);
- if(noti == NULL) {
- return;
- }
- ...
-
- noti_err = notification_set_tag(noti, tag);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-int notification_set_tag(notification_h noti, const char *tag);
-
-/**
- * @brief Gets the tag of the notification handle.
- * @since_tizen 2.3
- * @param[in] noti Notification handle
- * @param[out] tag tag for loading notification handle
- * @return #NOTIFICATION_ERROR_NONE on success, other value on failure
- * @retval #NOTIFICATION_ERROR_NONE Success
- * @retval #NOTIFICATION_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #NOTIFICATION_ERROR_PERMISSION_DENIED The application does not have the privilege to call this method
- * @see notification_set_tag()
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- int noti_err = NOTIFICATION_ERROR_NONE;
- const char *tag = NULL;
-
- ...
-
- noti_err = notification_get_tag(noti, &tag);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-int notification_get_tag(notification_h noti, const char **tag);
-
-/**
- * @brief Loads a notification from the notification's database with the tag.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/notification
- * @remarks The specific error code can be obtained using the get_last_result() method. Error codes are described in Exception section.
- * @param[in] tag tag for loading notification handle
- * @return Notification handle(notification_h) on success, NULL on failure
- * @retval notification_h Success
- * @retval NULL Failure
- * @exception #NOTIFICATION_ERROR_NONE Success
- * @exception #NOTIFICATION_ERROR_INVALID_PARAMETER Invalid input value
- * @exception #NOTIFICATION_ERROR_OUT_OF_MEMORY Out of memory
- * @exception #NOTIFICATION_ERROR_PERMISSION_DENIED The application does not have the privilege to call this method
- * @see #notification_type_e
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
-
- noti = notification_load_by_tag(tag);
- if(noti == NULL) {
- return;
- }
- ...
-}
- * @endcode
- */
-notification_h notification_load_by_tag(const char *tag);
-
-/**
- * @brief Posts a notification.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/notification
- * @param[in] noti Notification handle
- * @return #NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval #NOTIFICATION_ERROR_NONE Success
- * @retval #NOTIFICATION_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #NOTIFICATION_ERROR_PERMISSION_DENIED The application does not have the privilege to call this method
- * @pre Notification handle should be created by notification_create().
- * @post notification_free().
- * @par Sample code:
- * @code
-#include <notification.h>
-...
- {
- int noti_err = NOTIFICATION_ERROR_NONE;
-
- noti_err = notification_post(noti);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-}
- * @endcode
- */
-int notification_post(notification_h noti);
-
-/**
- * @brief Get the information of notification event
- * @details
- * @remarks
- * @param[in] list notification list handle
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure.
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - invalid parameter
- * @pre notification_get_grouping_list() or notification_get_detail_list ()
- * @post
- * @see #notification_op
- */
-notification_error_e notification_op_get_data(notification_op *noti_op,
- notification_op_data_type_e type,
- void *data);
-
-/**
- * @brief Wait for a response coming for this notification
- * @details The notification should have the EXECUTE_TYPE_RESPONDING flag
- * @remarks
- * @param[in] noti notification handle
- * @param[in] timeout in seconds - 0 for infinite
- * @param[out] integer response
- * @param[out] text response
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - invalid parameter
- * @retval NOTIFICATION_ERROR_OUT_OF_MEMORY - not enough memory
- * @pre notification handle should be created by notification_new().
- * @post
- * @see
- */
-notification_error_e notification_wait_response(notification_h noti,
- int timeout,
- int *respi,
- char **respc);
-
-/**
- * @brief Send a response for a waiting notification
- * @details
- * @remarks
- * @param[in] noti notification handle
- * @param[in] integer response
- * @param[in] text response
- * @return NOTIFICATION_ERROR_NONE if success, other value if failure
- * @retval NOTIFICATION_ERROR_NONE - success
- * @retval NOTIFICATION_ERROR_INVALID_PARAMETER - invalid parameter
- * @retval NOTIFICATION_ERROR_OUT_OF_MEMORY - not enough memory
- * @pre notification handle should be created by notification_new().
- * @post
- * @see
- */
-notification_error_e notification_send_response(notification_h noti,
- int respi,
- char *respc);
-
-/**
- * @}
- */
-
-void notification_call_changed_cb(notification_op *op_list, int op_num);
-
-int notification_is_service_ready(void);
-
-notification_error_e notification_add_deffered_task(
- void (*deffered_task_cb)(void *data), void *user_data);
-
-notification_error_e notification_del_deffered_task(
- void (*deffered_task_cb)(void *data));
-
-/**
- * @addtogroup NOTIFICATION_DEPRECATED
- * @{
- */
-
-/**
- * @brief This function will be deprecated.
- * @see notification_set_image()
- *
- */
-notification_error_e notification_set_icon(notification_h noti,
- const char *icon_path);
-
-/**
- * @brief This function will be deprecated.
- * @see notification_get_image()
- *
- */
-notification_error_e notification_get_icon(notification_h noti,
- char **icon_path);
-
-/**
- * @brief This function will be deprecated.
- * @see notification_set_text()
- *
- */
-notification_error_e notification_set_title(notification_h noti,
- const char *title,
- const char *loc_title);
-
-/**
- * @brief This function will be deprecated.
- * @see notification_get_text()
- *
- */
-notification_error_e notification_get_title(notification_h noti,
- char **title,
- char **loc_title);
-
-/**
- * @brief This function will be deprecated.
- * @see notification_set_text()
- *
- */
-notification_error_e notification_set_content(notification_h noti,
- const char *content,
- const char *loc_content);
-
-/**
- * @brief This function will be deprecated.
- * @see notification_get_text()
- *
- */
-notification_error_e notification_get_content(notification_h noti,
- char **content,
- char **loc_content);
-
-/**
- * @brief This function will be deprecated.
- * @see notification_set_execute_option()
- *
- */
-notification_error_e notification_set_application(notification_h noti, const char *pkgname); /* Do not use this */
-
-/**
- * @brief This function will be deprecated.
- * @see notification_get_execute_option()
- *
- */
-notification_error_e notification_get_application(notification_h noti, char **pkgname); /* Do not use this */
-
-/**
- * @brief This function will be deprecated.
- * @see notification_set_execute_option()
- *
- */
-notification_error_e notification_set_args(notification_h noti, bundle * args, bundle * group_args); /* Do not use this */
-
-/**
- * @brief This function will be deprecated.
- * @see notification_get_execute_option()
- *
- */
-notification_error_e notification_get_args(notification_h noti, bundle ** args, bundle ** group_args); /* Do not use this */
-
-/**
- * @brief This function will be deprecated.
- * @see notification_delete_by_priv_id()
- *
- */
-notification_error_e notification_delete_group_by_group_id(const char *pkgname,
- notification_type_e type,
- int group_id);
-
-/**
- * @brief This function will be deprecated.
- * @see notification_delete_by_priv_id()
- *
- */
-notification_error_e notification_delete_group_by_priv_id(const char *pkgname,
- notification_type_e type,
- int priv_id);
-/**
- * @brief This function will be deprecated.
- *
- */
-notification_error_e notification_get_count(notification_type_e type,
- const char *pkgname,
- int group_id, int priv_id,
- int *count);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* __NOTIFICATION_H__ */
+++ /dev/null
-/*
- * 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_DB_H__
-#define __NOTIFICATION_DB_H__
-
-#include <bundle.h>
-#include <sqlite3.h>
-#include <tzplatform_config.h>
-
-#ifndef DBFILE
-#error "DBFILE not defined"
-#endif
-
-#define DBPATH tzplatform_mkpath(TZ_SYS_DB,DBFILE)
-
-#define NOTIFICATION_QUERY_MAX 4096
-
-#define NOTIFICATION_EMPTY_STR ""
-#define NOTIFICATION_CHECK_STR(p) ((p)?(p):NOTIFICATION_EMPTY_STR)
-
-sqlite3 *notification_db_open(const char *dbfile);
-
-int notification_db_close(sqlite3 ** db);
-
-int notification_db_exec(sqlite3 * db, const char *query, int *num_changes);
-
-char *notification_db_column_text(sqlite3_stmt * stmt, int col);
-
-bundle *notification_db_column_bundle(sqlite3_stmt * stmt, int col);
-
-#endif /* __NOTIFICATION_DB_H__ */
+++ /dev/null
-/*
- * 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_DEBUG_H__
-#define __NOTIFICATION_DEBUG_H__
-
-#define LOG_TAG "NOTIFICATION"
-#include <dlog.h>
-
-#ifndef EXPORT_API
-#define EXPORT_API __attribute__ ((visibility("default")))
-#endif
-
-#ifndef _DLOG_H_
-#include <stdio.h>
-
-#define NOTIFICATION_DBG(fmt , args...) \
- do{ \
- printf("[D][%s : %d] "fmt"\n", __func__,__LINE__,##args ); \
- } while(0)
-
-#define NOTIFICATION_INFO(fmt , args...) \
- do{ \
- printf("[I][%s : %d] "fmt"\n", __func__,__LINE__,##args ); \
- } while(0)
-
-#define NOTIFICATION_WARN(fmt , args...) \
- do{ \
- printf("[W][%s : %d] "fmt"\n", __func__,__LINE__,##args ); \
- } while(0)
-
-#define NOTIFICATION_ERR(fmt , args...) \
- do{ \
- printf("[E][%s : %d] "fmt"\n", __func__,__LINE__,##args ); \
- } while(0)
-
-#else /* _DLOG_H_ */
-
-#define NOTIFICATION_DBG(fmt , args...) \
- do{ \
- LOGD("[%s : %d] "fmt"\n",__func__,__LINE__,##args ); \
- } while(0)
-
-#define NOTIFICATION_INFO(fmt , args...) \
- do{ \
- LOGI("[%s : %d] "fmt"\n",__func__,__LINE__,##args ); \
- } while(0)
-
-#define NOTIFICATION_WARN(fmt , args...) \
- do{ \
- LOGW("[%s : %d] "fmt"\n",__func__,__LINE__,##args ); \
- } while(0)
-
-#define NOTIFICATION_ERR(fmt , args...) \
- do{ \
- LOGE("[%s : %d] "fmt"\n",__func__,__LINE__,##args ); \
- } while(0)
-
-#endif /* _DLOG_H_ */
-
-#endif /* __NOTIFICATION_DEBUG_H__ */
+++ /dev/null
-/*
- * 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_ERROR_H__
-#define __NOTIFICATION_ERROR_H__
-
-#include <tizen.h>
-
-/* FIXME: Temporary patch to prevent build break.
- * This MUST be removed after packages using the belows are modified. */
-#define NOTIFICATION_ERROR_INVALID_DATA NOTIFICATION_ERROR_INVALID_PARAMETER
-#define NOTIFICATION_ERROR_NO_MEMORY NOTIFICATION_ERROR_OUT_OF_MEMORY
-#define NOTIFICATION_ERROR_IO NOTIFICATION_ERROR_IO_ERROR
-
-/**
- * @file notification_error.h
- */
-
-/**
- * @addtogroup NOTIFICATION_MODULE
- * @{
- */
-
-/**
- * @brief Enumeration for notification errors.
- * @since_tizen 2.3
- */
-typedef enum _notification_error {
- NOTIFICATION_ERROR_NONE = TIZEN_ERROR_NONE, /**< Success */
- NOTIFICATION_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER, /**< Invalid parameter */
- NOTIFICATION_ERROR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY, /**< out of memory */
- NOTIFICATION_ERROR_IO_ERROR = TIZEN_ERROR_IO_ERROR, /**< I/O error */
- NOTIFICATION_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED, /**< Permission denied */
- NOTIFICATION_ERROR_FROM_DB = TIZEN_ERROR_NOTIFICATION | 0x01, /**< Error from DB query */
- NOTIFICATION_ERROR_ALREADY_EXIST_ID = TIZEN_ERROR_NOTIFICATION | 0x02, /**< Already exist private ID */
- NOTIFICATION_ERROR_FROM_DBUS = TIZEN_ERROR_NOTIFICATION | 0x03, /**< Error from DBus */
- NOTIFICATION_ERROR_NOT_EXIST_ID = TIZEN_ERROR_NOTIFICATION | 0x04, /**< Not exist private ID */
- NOTIFICATION_ERROR_SERVICE_NOT_READY = TIZEN_ERROR_NOTIFICATION | 0x05, /**< No response from notification service */
-} notification_error_e;
-
-/**
- * @}
- */
-
-#endif /* __NOTIFICATION_ERROR_H__ */
+++ /dev/null
-/*
- * 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_GROUP_H__
-#define __NOTIFICATION_GROUP_H__
-
-#include <notification.h>
-
-notification_error_e notification_group_set_title(const char *pkgname,
- int group_id,
- const char *title,
- const char *loc_title,
- notification_count_display_type_e count_display);
-
-notification_error_e notification_group_get_title(const char *pkgname,
- int group_id,
- char **ret_title,
- char **ret_loc_title,
- notification_count_display_type_e *count_display);
-
-notification_error_e notification_group_set_content(const char *pkgname,
- int group_id,
- const char *content,
- const char *loc_content,
- notification_count_display_type_e count_display);
-
-notification_error_e notification_group_get_content(const char *pkgname,
- int group_id,
- char **ret_content,
- char **ret_loc_content,
- notification_count_display_type_e *count_display);
-
-notification_error_e notification_group_set_badge(const char *pkgname,
- int group_id, int count);
-
-notification_error_e notification_group_get_badge(const char *pkgname,
- int group_id, int *count);
-
-#endif /* __NOTIFICATION_GROUP_H__ */
+++ /dev/null
-/*
- * 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_INTERNAL_H__
-#define __NOTIFICATION_INTERNAL_H__
-
-#ifndef EXPORT_API
-#define EXPORT_API __attribute__ ((visibility("default")))
-#endif
-
-struct _notification {
- notification_type_e type;
- notification_ly_type_e layout;
-
- int group_id; /* Group ID */
- int internal_group_id; /* Internal Group ID */
- int priv_id; /* Private ID */
-
- char *caller_pkgname; /* Caller App package name */
- char *launch_pkgname; /* Launch App package name. It will be from appsvc_set_pkgname */
- bundle *args; /* Will be removed. */
- bundle *group_args; /* Will be removed. */
-
- bundle *b_execute_option;
- bundle *b_service_responding;
- bundle *b_service_single_launch;
- bundle *b_service_multi_launch;
-
- char *domain; /* Text domain for localization */
- char *dir; /* Text dir for localization */
-
- bundle *b_text; /* basic text */
- bundle *b_key; /* key for localized text */
- bundle *b_format_args; /* args type and value for format string */
- int num_format_args; /* number of format string args */
-
- bundle *b_image_path; /* image path */
-
- notification_sound_type_e sound_type;
- char *sound_path;
- notification_vibration_type_e vibration_type;
- char *vibration_path;
- notification_led_op_e led_operation;
- int led_argb;
- int led_on_ms;
- int led_off_ms;
-
- time_t time; /* time set by application */
- time_t insert_time; /* insert time */
-
- int flags_for_property; /* property NOTIFICATION_PROP_XXX */
- int display_applist; /* display app list NOTIFICATION_DISPLAY_APP_XXX */
-
- double progress_size; /* size of progress */
- double progress_percentage; /* percentage of progress */
-
- char *app_icon_path; /* Temporary stored app icon path from AIL */
- char *app_name; /* Temporary stored app name from AIL */
- char *temp_title;
- char *temp_content;
- char *tag;
-};
-
-#endif /* __NOTIFICATION_INTERNAL_H__ */
+++ /dev/null
-/*
- * 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_IPC_H__
-#define __NOTIFICATION_IPC_H__
-
-#include <notification.h>
-
-#define NOTIFICATION_ADDR "/tmp/.notification.service"
-#define NOTIFICATION_DEL_PACKET_UNIT 10
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct packet;
-
-notification_error_e notification_ipc_monitor_init(void);
-notification_error_e notification_ipc_monitor_fini(void);
-
-notification_error_e notification_ipc_make_noti_from_packet(notification_h noti, const struct packet *packet);
-struct packet *notification_ipc_make_packet_from_noti(notification_h noti, const char *command, int packet_type);
-
-notification_error_e notification_ipc_request_insert(notification_h noti, int *priv_id);
-notification_error_e notification_ipc_request_update(notification_h noti);
-notification_error_e notification_ipc_request_update_async(notification_h noti,
- void (*result_cb)(int priv_id, int result, void *data), void *user_data);
-notification_error_e notification_ipc_request_refresh(void);
-notification_error_e notification_ipc_request_delete_single(notification_type_e type, char *pkgname, int priv_id);
-notification_error_e notification_ipc_request_delete_multiple(notification_type_e type, char *pkgname);
-
-int notification_ipc_is_master_ready(void);
-notification_error_e notification_ipc_add_deffered_task(void (*deffered_task_cb)(void *data), void *user_data);
-notification_error_e notification_ipc_del_deffered_task(void (*deffered_task_cb)(void *data));
-
-notification_error_e notification_ipc_noti_setting_property_set(const char *pkgname, const char *property, const char *value);
-notification_error_e notification_ipc_noti_setting_property_get(const char *pkgname, const char *property, char **value);
-
-int notification_ipc_request_load_noti_by_tag(notification_h noti, const char *pkgname, const char *tag);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
+++ /dev/null
-/*
- * 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_LIST_H__
-#define __NOTIFICATION_LIST_H__
-
-#include <notification.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @file notification.h
- * @brief This file contains the notification list APIs
- */
-
-/**
- * @addtogroup NOTIFICATION_LIST
- * @{
- */
-
-/**
- * @breief Notification list handle
- */
-typedef struct _notification_list *notification_list_h;
-
-/**
- * @brief This function get head pointer of the notification list.
- * @details
- * @remarks
- * @param[in] list notification list handle
- * @return notification list handle if success, NULL if failure.
- * @retval notification list handle(#notification_list_h) - success
- * @retval NULL - failure
- * @pre
- * @post
- * @see #notification_list_h
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_list_h noti_list = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti_err = notification_get_grouping_list(NOTIFICATION_TYPE_NONE, -1, ¬i_list);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-
- noti_list = notification_list_get_head(noti_list);
-}
- * @endcode
- */
-notification_list_h notification_list_get_head(notification_list_h list);
-
-/**
- * @brief This function get tail pointer of the notification list.
- * @details
- * @remarks
- * @param[in] list notification list handle
- * @return notification list handle if success, NULL if failure.
- * @retval notification list handle(#notification_list_h) - success
- * @retval NULL - failure
- * @pre
- * @post
- * @see #notification_list_h
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_list_h noti_list = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti_err = notification_get_grouping_list(NOTIFICATION_TYPE_NONE, -1, ¬i_list);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-
- noti_list = notification_list_get_tail(noti_list);
-}
- * @endcode
- */
-notification_list_h notification_list_get_tail(notification_list_h list);
-
-/**
- * @brief This function get previous pointer of the current notification list.
- * @details
- * @remarks
- * @param[in] list notification list handle
- * @return notification list handle if success, NULL if failure.
- * @retval notification list handle(#notification_list_h) - success
- * @retval NULL - failure
- * @pre
- * @post
- * @see #notification_list_h
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_list_h noti_list = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti_err = notification_get_grouping_list(NOTIFICATION_TYPE_NONE, -1, ¬i_list);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-
- noti_list = notification_list_get_prev(noti_list);
-}
- * @endcode
- */
-notification_list_h notification_list_get_prev(notification_list_h list);
-
-/**
- * @brief This function get next pointer of the current notification list.
- * @details
- * @remarks
- * @param[in] list notification list handle
- * @return notification list handle if success, NULL if failure.
- * @retval notification list handle(#notification_list_h) - success
- * @retval NULL - failure
- * @pre
- * @post
- * @see #notification_list_h
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_list_h noti_list = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti_err = notification_get_grouping_list(NOTIFICATION_TYPE_NONE, -1, ¬i_list);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-
- noti_list = notification_list_get_next(noti_list);
-}
- * @endcode
- */
-notification_list_h notification_list_get_next(notification_list_h list);
-
-/**
- * @brief This function get notification handle that list has.
- * @details
- * @remarks
- * @param[in] list notification list handle
- * @return notification handle if success, NULL if failure.
- * @retval notification handle(#notification_h) - success
- * @retval NULL - failure
- * @pre
- * @post
- * @see #notification_list_h
- * @see #notification_h
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
- notification_list_h noti_list = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti_err = notification_get_grouping_list(NOTIFICATION_TYPE_NONE, -1, ¬i_list);
- if(noti_err != NOTIFICATION_ERROR_NONE) {
- return;
- }
-
- noti = notification_list_get_data(noti_list);
-}
- * @endcode
- */
-notification_h notification_list_get_data(notification_list_h list);
-
-/**
- * @brief This function append notification data in notification list.
- * @details
- * @remarks
- * @param[in] list notification list handle
- * @param[in] noti notification handle
- * @return notification handle if success, NULL if failure.
- * @retval notification handle(#notification_h) - success
- * @retval NULL - failure
- * @pre
- * @post
- * @see #notification_list_h
- * @see #notification_h
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
- notification_list_h noti_list = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- noti = notification_new(NOTIFICATION_TYPE_NOTI, NOTIFICATION_GROUP_ID_NONE, NOTIFICATION_PRIV_ID_NONE);
- if(noti == NULL) {
- return;
- }
-
- noti_list = notification_list_append(noti_list, noti);
-}
- * @endcode
- */
-notification_list_h notification_list_append(notification_list_h list,
- notification_h noti);
-
-/**
- * @brief This function remove notification data from notification list.
- * @details
- * @remarks
- * @param[in] list notification list handle
- * @param[in] noti notification handle
- * @return notification handle if success, NULL if failure.
- * @retval notification handle(#notification_h) - success
- * @retval NULL - failure
- * @pre
- * @post
- * @see #notification_list_h
- * @see #notification_h
- * @par Sample code:
- * @code
-#include <notification.h>
-...
-{
- notification_h noti = NULL;
- notification_list_h noti_list = NULL;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
- ...
-
- noti_list = notification_list_remove(noti_list, noti);
-}
- * @endcode
- */
-notification_list_h notification_list_remove(notification_list_h list,
- notification_h noti);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* __NOTIFICATION_LIST_H__ */
+++ /dev/null
-/*
- * 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_NOTI_H__
-#define __NOTIFICATION_NOTI_H__
-
-#include <notification.h>
-
-#define TAG_TIME "TIME"
-#define TAG_TYPE_INVALID -1
-#define TAG_TYPE_TIME 1
-
-int notification_noti_set_tag(const char *tag, char *value, char *buf, int buf_len);
-
-char *notification_noti_strip_tag(const char *tagged_str);
-
-int notification_noti_get_tag_type(const char *tagged_str);
-
-int notification_noti_insert(notification_h noti);
-
-int notification_noti_update(notification_h noti);
-
-int notification_noti_delete_all(notification_type_e type, const char *pkgname, int *num_deleted, int **list_deleted_rowid);
-
-int notification_noti_delete_group_by_group_id(const char *pkgname,
- int group_id, int *num_deleted, int **list_deleted_rowid);
-
-int notification_noti_delete_group_by_priv_id(const char *pkgname, int priv_id);
-
-int notification_noti_get_by_priv_id(notification_h noti, char *pkgname, int priv_id);
-
-int notification_noti_delete_by_priv_id(const char *pkgname, int priv_id);
-int notification_noti_delete_by_priv_id_get_changes(const char *pkgname, int priv_id, int *num_changes);
-
-notification_error_e notification_noti_get_count(notification_type_e type,
- const char *pkgname,
- int group_id, int priv_id,
- int *count);
-
-notification_error_e notification_noti_get_grouping_list(notification_type_e type,
- int count,
- notification_list_h *list);
-
-notification_error_e notification_noti_get_detail_list(const char *pkgname,
- int group_id,
- int priv_id, int count,
- notification_list_h *list);
-
-#endif /* __NOTIFICATION_NOTI_H__ */
+++ /dev/null
-/*
- * 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_ONGOING_H__
-#define __NOTIFICATION_ONGOING_H__
-
-#include <notification.h>
-notification_error_e notification_ongoing_update_progress(const char *caller_pkgname,
- int priv_id,
- double progress);
-
-notification_error_e notification_ongoing_update_size(const char *caller_pkgname,
- int priv_id, double size);
-
-notification_error_e notification_ongoing_update_content(const char *caller_pkgname,
- int priv_id, const char *content);
-
-#endif /* __NOTIFICATION_ONGOING_H__ */
+++ /dev/null
-/*
- * 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_H__
-#define __NOTIFICATION_SETTING_H__
-
-#include <notification.h>
-
-typedef struct _notification_setting_h notification_setting_h;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-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);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* __NOTIFICATION_SETTING_H__ */
+++ /dev/null
-/*
- * 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__ */
+++ /dev/null
-/*
- * 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_STATUS_DEF_H__
-#define __NOTIFICATION_STATUS_DEF_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/**
-* @brief Called when new message is posted
-* @param[in] message The message posted
-* @param[in] data user data
-* @pre notification_status_monitor_message_cb_set() used to register this callback
-* @see notification_status_monitor_message_cb_set()
-*/
-typedef void (*notification_status_message_cb)(const char *message, void *data);
-
-/**
-* @brief register callback for receiving message
-* @param[in] callback The callback function
-* @param[in] data user_data
-*/
-int notification_status_monitor_message_cb_set(notification_status_message_cb callback, void *user_data);
-
-/**
-* @brief unregister callback for receiving message
-* @param[in] callback The callback function
-* @param[in] data user_data
-*/
-int notification_status_monitor_message_cb_unset(void);
-
-/**
- * @addtogroup NOTIFICATION_STATUS
- * @{
- */
-
-/**
- * @brief This function send string(message) to notification status monitor
- * @details Send the message to notification status monitor.
- * @param[in] message messages you want to post
- * @return #NOTIFICATION_ERROR_NONE if success, other value if failure
- * @see #notification_error_e
- */
-int notification_status_message_post(const char *message);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-#endif /* __NOTIFICATION_STATUS_DEF_H__ */
+++ /dev/null
-/*
- * 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_TYPE_H__
-#define __NOTIFICATION_TYPE_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @file notification_type.h
- * @brief This file contains type definitions and enumerations for Notification API.
- */
-
-/**
- * @addtogroup NOTIFICATION_MODULE
- * @{
- */
-
-/**
- * @brief Enumeration for notification layout type.
- * @since_tizen 2.3
- */
-typedef enum _notification_ly_type {
- NOTIFICATION_LY_NONE = 0, /**< Default */
- NOTIFICATION_LY_NOTI_EVENT_SINGLE, /**< Layout for notification. Used to inform single event*/
- NOTIFICATION_LY_NOTI_EVENT_MULTIPLE, /**< Layout for notification. Used to inform multiple event*/
- NOTIFICATION_LY_NOTI_THUMBNAIL, /**< Layout for notification. Used to display images*/
- NOTIFICATION_LY_ONGOING_EVENT, /**< Layout for ongoing notification. Used to display text message*/
- NOTIFICATION_LY_ONGOING_PROGRESS, /**< Layout for ongoing notification. Used to display progress*/
- NOTIFICATION_LY_MAX, /**< TBD */
-} notification_ly_type_e;
-
-/**
- * @brief Enumeration for notification launch option type.
- * @since_tizen 2.3
- */
-typedef enum _notification_launch_option_type {
- NOTIFICATION_LAUNCH_OPTION_APP_CONTROL = 1, /**< launching with app control */
-} notification_launch_option_type;
-
-/**
- * @brief Enumeration for notification sound type.
- * @since_tizen 2.3
- */
-typedef enum _notification_sound_type {
- NOTIFICATION_SOUND_TYPE_NONE = -1, /**< Default value. no sound */
- NOTIFICATION_SOUND_TYPE_DEFAULT = 0, /**< Default sound */
- NOTIFICATION_SOUND_TYPE_USER_DATA, /**< User sound data */
- NOTIFICATION_SOUND_TYPE_MAX, /**< Max flag */
-} notification_sound_type_e;
-
-/**
- * @brief Enumeration for notification vibration type.
- * @since_tizen 2.3
- */
-typedef enum _notification_vibration_type {
- NOTIFICATION_VIBRATION_TYPE_NONE = -1, /**< Default value. No vibration */
- NOTIFICATION_VIBRATION_TYPE_DEFAULT = 0, /**< Default vibrate pattern */
- NOTIFICATION_VIBRATION_TYPE_USER_DATA, /**< User vibration data */
- NOTIFICATION_VIBRATION_TYPE_MAX, /**< Max flag */
-} notification_vibration_type_e;
-
-/**
- * @brief Enumeration for notification LED operation.
- * @since_tizen 2.3
- */
-typedef enum _notification_led_op {
- NOTIFICATION_LED_OP_OFF = -1, /**< Default value. Disable the LED notification */
- NOTIFICATION_LED_OP_ON = 0, /**< Turn on the LED with default color */
- NOTIFICATION_LED_OP_ON_CUSTOM_COLOR, /**< Turn on the LED with custom color */
- NOTIFICATION_LED_OP_MAX, /**< Max flag */
-} notification_led_op_e;
-
-/**
- * @brief This will be deprecated.
- * @since_tizen 2.3
- */
-typedef enum _notification_count_display_type {
- NOTIFICATION_COUNT_DISPLAY_TYPE_NONE = -1, /**< None */
- NOTIFICATION_COUNT_DISPLAY_TYPE_LEFT = 0, /**< The number is placed to left */
- NOTIFICATION_COUNT_DISPLAY_TYPE_IN, /**< The number is placed to center */
- NOTIFICATION_COUNT_DISPLAY_TYPE_RIGHT, /**< The number is placed to right */
- NOTIFICATION_COUNT_DISPLAY_TYPE_MAX, /**< Max flag */
-} notification_count_display_type_e;
-
-/**
- * @brief Enumeration for notification text type.
- * @since_tizen 2.3
- */
-typedef enum _notification_text_type {
- NOTIFICATION_TEXT_TYPE_NONE = -1, /**< NONE */
- NOTIFICATION_TEXT_TYPE_TITLE = 0, /**< Title */
- NOTIFICATION_TEXT_TYPE_CONTENT, /**< Content */
- NOTIFICATION_TEXT_TYPE_CONTENT_FOR_DISPLAY_OPTION_IS_OFF, /**< Content for content display option is off of the Settings */
- NOTIFICATION_TEXT_TYPE_EVENT_COUNT, /**< Text to display event count */
- NOTIFICATION_TEXT_TYPE_INFO_1, /**< Box contents 1 */
- NOTIFICATION_TEXT_TYPE_INFO_SUB_1, /**< Box contents 1-1 */
- NOTIFICATION_TEXT_TYPE_INFO_2, /**< Box contents 2 */
- NOTIFICATION_TEXT_TYPE_INFO_SUB_2, /**< Box contents 2-1 */
- NOTIFICATION_TEXT_TYPE_INFO_3, /**< Box contents 3 */
- NOTIFICATION_TEXT_TYPE_INFO_SUB_3, /**< Box contents 3-1 */
- NOTIFICATION_TEXT_TYPE_GROUP_TITLE, /**< Group title */
- NOTIFICATION_TEXT_TYPE_GROUP_CONTENT, /**< Group content */
- NOTIFICATION_TEXT_TYPE_GROUP_CONTENT_FOR_DISPLAY_OPTION_IS_OFF, /**< Group content for content display option is off of the Settings */
- NOTIFICATION_TEXT_TYPE_MAX, /**< Max flag */
-} notification_text_type_e;
-
-/**
- * @brief Enumeration for image type.
- * @since_tizen 2.3
- */
-typedef enum _notification_image_type {
- NOTIFICATION_IMAGE_TYPE_NONE = -1, /**< NONE */
- NOTIFICATION_IMAGE_TYPE_ICON = 0, /**< Icon */
- NOTIFICATION_IMAGE_TYPE_ICON_FOR_INDICATOR, /**< Indicator icon */
- NOTIFICATION_IMAGE_TYPE_ICON_FOR_LOCK, /**< Lock screen icon */
- NOTIFICATION_IMAGE_TYPE_THUMBNAIL, /**< Thumbnail */
- NOTIFICATION_IMAGE_TYPE_THUMBNAIL_FOR_LOCK, /**< Lock screen thumbnail */
- NOTIFICATION_IMAGE_TYPE_ICON_SUB, /**< Icon */
- NOTIFICATION_IMAGE_TYPE_BACKGROUND, /**< image displayed on background */
- NOTIFICATION_IMAGE_TYPE_LIST_1, /**< Image for thumbnail list */
- NOTIFICATION_IMAGE_TYPE_LIST_2, /**< Image for thumbnail list */
- NOTIFICATION_IMAGE_TYPE_LIST_3, /**< Image for thumbnail list */
- NOTIFICATION_IMAGE_TYPE_LIST_4, /**< Image for thumbnail list */
- NOTIFICATION_IMAGE_TYPE_LIST_5, /**< Image for thumbnail list */
- NOTIFICATION_IMAGE_TYPE_MAX, /**< Max flag */
-} notification_image_type_e;
-
-/*typedef enum _notification_button_type {
- NOTIFICATION_BUTTON_TYPE_NONE = -1,
- NOTIFICATION_BUTTON_TYPE_RUN = 0,
- NOTIFICATION_BUTTON_TYPE_VIEW,
- NOTIFICATION_BUTTON_TYPE_DISMISS,
- NOTIFICATION_BUTTON_TYPE_MAX,
-}notification_button_type_e;*/
-
-/**
- * @brief Enumeration for application execution type.
- * @since_tizen 2.3
- */
-typedef enum _notification_execute_type {
- NOTIFICATION_EXECUTE_TYPE_NONE = -1, /**< No operation */
- NOTIFICATION_EXECUTE_TYPE_RESPONDING = 0, /**< Responding action*/
- NOTIFICATION_EXECUTE_TYPE_SINGLE_LAUNCH, /**< Launching when notification data is single */
- NOTIFICATION_EXECUTE_TYPE_MULTI_LAUNCH, /**< Launching when notification data is grouping(multi) */
- NOTIFICATION_EXECUTE_TYPE_MAX, /**< Max flag */
-} notification_execute_type_e;
-
-/**
- * @brief Enumeration for notification type.
- * @since_tizen 2.3
- */
-typedef enum _notification_type {
- NOTIFICATION_TYPE_NONE = -1, /**< None */
- NOTIFICATION_TYPE_NOTI = 0, /**< Notification type */
- NOTIFICATION_TYPE_ONGOING, /**< Ongoing type */
- NOTIFICATION_TYPE_MAX, /**< Max flag */
-} notification_type_e;
-
-/**
- * @brief Enumeration for Group ID.
- * @since_tizen 2.3
- */
-enum _notification_group_id {
- NOTIFICATION_GROUP_ID_NONE = -1, /**< Not Grouping */
- NOTIFICATION_GROUP_ID_DEFAULT = 0, /**< Notification that has same title is grouping */
-};
-
-/**
- * @brief Enumeration for Private ID.
- * @since_tizen 2.3
- */
-enum _notification_priv_id {
- NOTIFICATION_PRIV_ID_NONE = -1, /**< Internally set priv_id */
-};
-
-/**
- * @brief Enumeration for notification property.
- * @since_tizen 2.3
- */
-enum _notification_property {
- NOTIFICATION_PROP_DISPLAY_ONLY_SIMMODE = 0x00000001, /**< Display only SIM card inserted */
- NOTIFICATION_PROP_DISABLE_APP_LAUNCH = 0x00000002, /**< Disable application launch when it selected */
- NOTIFICATION_PROP_DISABLE_AUTO_DELETE = 0x00000004, /**< Disable auto delete when it selected */
- NOTIFICATION_PROP_LAUNCH_UG = 0x00000008, /**< Will be deprecated. Notification Tray should launch application using appsvc API */
- NOTIFICATION_PROP_DISABLE_TICKERNOTI = 0x00000010, /**< Will be deprecated. Use notification_set_display_applist API */
- NOTIFICATION_PROP_PERMANENT_DISPLAY = 0x00000020, /**< Will be deprecated. */
- NOTIFICATION_PROP_DISABLE_UPDATE_ON_INSERT = 0x00000040, /**< Disable update when it inserted. */
- NOTIFICATION_PROP_DISABLE_UPDATE_ON_DELETE = 0x00000080, /**< Disable update when it deleted. */
- NOTIFICATION_PROP_VOLATILE_DISPLAY = 0x00000100, /**< Deleted when device is rebooted eventhough NOTIFICATION_TYPE_NOTI type */
-};
-
-/**
- * @brief Enumeration for display application list.
- * @since_tizen 2.3
- */
-enum _notificaton_display_applist {
- NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY = 0x00000001,/**< Notification Tray(Quickpanel) */
- NOTIFICATION_DISPLAY_APP_TICKER = 0x00000002,/**< Ticker notification */
- NOTIFICATION_DISPLAY_APP_LOCK = 0x00000004,/**< Lock screen */
- NOTIFICATION_DISPLAY_APP_INDICATOR = 0x00000008,/**< Indicator */
- NOTIFICATION_DISPLAY_APP_ALL = 0xffffffff,/**< All display application */
-};
-
-/**
- * @brief Enumeration for notification operation code.
- * @since_tizen 2.3
- */
-typedef enum _notification_op_type {
- NOTIFICATION_OP_NONE = 0, /**< Default */
- NOTIFICATION_OP_INSERT = 1, /**< Notification inserted */
- NOTIFICATION_OP_UPDATE, /**< Notification updated */
- NOTIFICATION_OP_DELETE, /**< Notification deleted */
- NOTIFICATION_OP_DELETE_ALL, /**< Notifications deleted */
- NOTIFICATION_OP_REFRESH, /**< Deprecated */
- NOTIFICATION_OP_SERVICE_READY, /**< Notification service is ready */
-} notification_op_type_e;
-
-/**
- * @brief Enumeration for notification operation data code
- * @since_tizen 2.3
- */
-typedef enum _notification_op_data_type {
- NOTIFICATION_OP_DATA_MIN = 0, /**< Default */
- NOTIFICATION_OP_DATA_TYPE, /**< Operation type */
- NOTIFICATION_OP_DATA_PRIV_ID, /**< Private ID */
- NOTIFICATION_OP_DATA_NOTI, /**< Notification handler */
- NOTIFICATION_OP_DATA_EXTRA_INFO_1, /**< Reserved */
- NOTIFICATION_OP_DATA_EXTRA_INFO_2, /**< Reserved */
- NOTIFICATION_OP_DATA_MAX, /**< Max flag */
-} notification_op_data_type_e;
-
-/**
- * @brief Enumeration for notification count position in the text.
- * @since_tizen 2.3
- */
-typedef enum _notifcation_count_pos_type {
- NOTIFICATION_COUNT_POS_NONE = -1, /**< Count data is not displaying in the text */
- NOTIFICATION_COUNT_POS_LEFT = 0, /**< Count data is displaying at the left of the text */
- NOTIFICATION_COUNT_POS_IN, /**< Count data is displaying in the text */
- NOTIFICATION_COUNT_POS_RIGHT, /**< Count data is displaying at the right of the text */
- NOTIFICATION_COUNT_POS_MAX, /**< Max flag */
-} notification_count_pos_type_e;
-
-/**
- * @brief Enumeration for notification variable parameter type.
- * @since_tizen 2.3
- */
-typedef enum _notification_variable_type {
- NOTIFICATION_VARIABLE_TYPE_NONE = -1, /**< Variable parameter type is NONE */
- NOTIFICATION_VARIABLE_TYPE_INT = 0, /**< Variable parameter type is int */
- NOTIFICATION_VARIABLE_TYPE_DOUBLE, /**< Variable parameter type is double */
- NOTIFICATION_VARIABLE_TYPE_STRING, /**< Variable parameter type is string */
- NOTIFICATION_VARIABLE_TYPE_COUNT, /**< Variable parameter type is count */
- NOTIFICATION_VARIABLE_TYPE_MAX, /**< Max flag */
-} notification_variable_type_e;
-
-/**
- * @brief Notification handle.
- * @since_tizen 2.3
- */
-typedef struct _notification *notification_h;
-
-/**
- * @brief The structure for notification operation.
- * @since_tizen 2.3
- */
-typedef struct _notification_op {
- notification_op_type_e type; /**< Notification operation type */
- int priv_id; /**< private ID */
- int extra_info_1; /**< Reserved */
- int extra_info_2; /**< Reserved */
- notification_h noti; /**< Notification handler */
-} notification_op;
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __NOTIFICATION_TYPE_H__ */
+++ /dev/null
-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}
+++ /dev/null
-prefix=@PREFIX@
-exec_prefix=@EXEC_PREFIX@
-libdir=@LIBDIR@
-includedir=@INCLUDEDIR@
-
-Name: notification
-Description: Notification Library
-Version: @VERSION@
-Requires: bundle capi-base-common
-Libs: -L${libdir} -lnotification
-Cflags: -I${includedir}
+++ /dev/null
-#!/bin/sh
-
-source /etc/tizen-platform.conf
-
-if [ ! -d $TZ_SYS_DB ]
-then
- mkdir $TZ_SYS_DB
-fi
-
-if [ ! -f $TZ_SYS_DB/.notification.db ]
-then
- sqlite3 $TZ_SYS_DB/.notification.db 'PRAGMA journal_mode = PERSIST;
- create table if not exists noti_list (
- type INTEGER NOT NULL,
- layout INTEGER NOT NULL default 0,
- caller_pkgname TEXT NOT NULL,
- launch_pkgname TEXT,
- image_path TEXT,
- group_id INTEGER default 0,
- internal_group_id INTEGER default 0,
- priv_id INTERGER NOT NULL,
- title_key TEXT,
- b_text TEXT,
- b_key TEXT,
- b_format_args TEXT,
- num_format_args INTEGER default 0,
- text_domain TEXT,
- text_dir TEXT,
- time INTEGER default 0,
- insert_time INTEGER default 0,
- args TEXT,
- group_args TEXT,
- b_execute_option TEXT,
- b_service_responding TEXT,
- b_service_single_launch TEXT,
- b_service_multi_launch TEXT,
- sound_type INTEGER default 0,
- sound_path TEXT,
- vibration_type INTEGER default 0,
- vibration_path TEXT,
- led_operation INTEGER default 0,
- led_argb INTEGER default 0,
- led_on_ms INTEGER default -1,
- led_off_ms INTEGER default -1,
- flags_for_property INTEGER default 0,
- flag_simmode INTEGER default 0,
- display_applist INTEGER,
- progress_size DOUBLE default 0,
- progress_percentage DOUBLE default 0,
- rowid INTEGER PRIMARY KEY AUTOINCREMENT,
- UNIQUE (caller_pkgname, priv_id)
- );
- create table if not exists noti_group_data (
- caller_pkgname TEXT NOT NULL,
- group_id INTEGER default 0,
- badge INTEGER default 0,
- title TEXT,
- content TEXT,
- loc_title TEXT,
- loc_content TEXT,
- count_display_title INTEGER,
- count_display_content INTEGER,
- rowid INTEGER PRIMARY KEY AUTOINCREMENT,
- UNIQUE (caller_pkgname, group_id)
- );
- create table if not exists ongoing_list (
- caller_pkgname TEXT NOT NULL,
- launch_pkgname TEXT,
- icon_path TEXT,
- group_id INTEGER default 0,
- internal_group_id INTEGER default 0,
- priv_id INTERGER NOT NULL,
- title TEXT,
- content TEXT,
- default_content TEXT,
- loc_title TEXT,
- loc_content TEXT,
- loc_default_content TEXT,
- text_domain TEXT,
- text_dir TEXT,
- args TEXT,
- group_args TEXT,
- flag INTEGER default 0,
- progress_size DOUBLE default 0,
- progress_percentage DOUBLE default 0,
- rowid INTEGER PRIMARY KEY AUTOINCREMENT,
- UNIQUE (caller_pkgname, priv_id)
- );
- '
-fi
-
-users_gid=$(getent group $TZ_SYS_USER_GROUP | cut -f3 -d':')
-
-chown :$TZ_SYS_USER_GROUP $TZ_SYS_DB/.notification.db
-chown :$TZ_SYS_USER_GROUP $TZ_SYS_DB/.notification.db-journal
-chmod 640 $TZ_SYS_DB/.notification.db
-chmod 640 $TZ_SYS_DB/.notification.db-journal
-chsmack -a 'User' $TZ_SYS_DB/.notification.db*
-SMACK_OPTION="-s system::vconf_misc"
-vconftool set -t string memory/private/libstatus/message "" -i -g $users_gid -f $SMACK_OPTION
+++ /dev/null
-* Wed Sep 18 2013 Rusty Lynch <rusty.lynch@intel.com> accepted/tizen/20130918.224851@3d7a770
-- Remove vconf ipc based logic for syncronizing with master
-- Fix rpm-lint errors
-
-* Wed Jun 12 2013 Baptiste DURAND <baptiste.durand@eurogiciel.fr> accepted/tizen/20130602.020356@59093a0
-- Replace manifest with default floor
-
-* Sat Jun 01 2013 Anas Nashif <anas.nashif@intel.com> accepted/tizen/20130530.164729@c181132
-- Remove license/group placeholders
-
+++ /dev/null
-<manifest>
- <request>
- <domain name="_"/>
- </request>
-</manifest>
+++ /dev/null
-Name: notification
-Summary: Notification Library
-Version: 0.2.3
-Release: 1
-Group: System/API
-License: Apache-2.0
-Source0: %{name}-%{version}.tar.gz
-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(capi-appfw-application)
-BuildRequires: pkgconfig(ecore)
-BuildRequires: pkgconfig(eina)
-BuildRequires: pkgconfig(libtzplatform-config)
-Requires: libtzplatform-config
-
-BuildRequires: cmake
-Requires(post): /sbin/ldconfig
-Requires(post): /usr/bin/sqlite3
-Requires(postun): /sbin/ldconfig
-
-%description
-Client/Server library for sending notifications.
-
-%prep
-%setup -q
-cp %{SOURCE1001} .
-
-%package devel
-Summary: Notification library (devel)
-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
-%{_datadir}/%{name}/notification_DB_init.sh
-
-%postun -p /sbin/ldconfig
-
-%files
-%manifest notification.manifest
-%defattr(-,root,root,-)
-%{_libdir}/libnotification.so*
-%attr(0755,root,root) %{_datadir}/%{name}/notification_DB_init.sh
-/usr/share/license/%{name}
-
-%files devel
-%defattr(-,root,root,-)
-%{_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
+++ /dev/null
-/*
- * 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.
- *
- */
-
-#define _GNU_SOURCE
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/socket.h>
-#include <sys/syscall.h>
-#include <sys/time.h>
-#include <sys/un.h>
-#include <libintl.h>
-#include <dbus/dbus.h>
-#include <dbus/dbus-glib-lowlevel.h>
-
-#include <app_control.h>
-#include <app_control_internal.h>
-#include <aul.h>
-#include <ail.h>
-#include <appsvc.h>
-#include <vconf-keys.h>
-#include <vconf.h>
-
-#include <notification.h>
-#include <notification_list.h>
-#include <notification_debug.h>
-#include <notification_internal.h>
-#include <notification_noti.h>
-#include <notification_ongoing.h>
-#include <notification_group.h>
-#include <notification_ipc.h>
-
-typedef struct _notification_cb_list notification_cb_list_s;
-
-typedef enum __notification_cb_type {
- NOTIFICATION_CB_NORMAL = 1,
- NOTIFICATION_CB_DETAILED,
-} _notification_cb_type_e;
-
-struct _notification_cb_list {
- notification_cb_list_s *prev;
- notification_cb_list_s *next;
-
- _notification_cb_type_e cb_type;
- void (*changed_cb) (void *data, notification_type_e type);
- void (*detailed_changed_cb) (void *data, notification_type_e type, notification_op *op_list, int num_op);
- void *data;
-};
-
-static notification_cb_list_s *g_notification_cb_list = NULL;
-
-#define NOTI_TEXT_RESULT_LEN 2048
-#define NOTI_PKGNAME_LEN 512
-
-static char *_notification_get_pkgname_by_pid(void)
-{
- char pkgname[NOTI_PKGNAME_LEN + 1] = { 0, };
- int pid = 0, ret = AUL_R_OK;
- int fd;
- char *dup_pkgname;
-
- pid = getpid();
-
- ret = aul_app_get_pkgname_bypid(pid, pkgname, sizeof(pkgname));
- if (ret != AUL_R_OK) {
- char buf[NOTI_PKGNAME_LEN + 1] = { 0, };
-
- snprintf(buf, sizeof(buf), "/proc/%d/cmdline", pid);
-
- fd = open(buf, O_RDONLY);
- if (fd < 0) {
- return NULL;
- }
-
- ret = read(fd, pkgname, sizeof(pkgname) - 1);
- close(fd);
-
- if (ret <= 0) {
- return NULL;
- }
-
- pkgname[ret] = '\0';
- /*!
- * \NOTE
- * "ret" is not able to be larger than "sizeof(pkgname) - 1",
- * if the system is not going wrong.
- */
- } else {
- if (strlen(pkgname) <= 0) {
- return NULL;
- }
- }
-
- dup_pkgname = strdup(pkgname);
- if (!dup_pkgname)
- NOTIFICATION_ERR("Heap: %s\n", strerror(errno));
-
- return dup_pkgname;
-}
-
-static void _notification_get_text_domain(notification_h noti)
-{
- if (noti->domain != NULL) {
-
- }
-
- if (noti->dir != NULL) {
-
- }
-}
-
-EXPORT_API notification_error_e notification_set_image(notification_h noti,
- notification_image_type_e type,
- const char *image_path)
-{
- bundle *b = NULL;
- char buf_key[32] = { 0, };
- const char *ret_val = NULL;
-
- /* Check noti and image_path are valid data */
- if (noti == NULL || image_path == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Check image type is valid type */
- if (type <= NOTIFICATION_IMAGE_TYPE_NONE
- || type >= NOTIFICATION_IMAGE_TYPE_MAX) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Check image path bundle is exist */
- if (noti->b_image_path) {
- /* If image path bundle is exist, store local bundle value */
- b = noti->b_image_path;
-
- /* Set image type to key as char string type */
- snprintf(buf_key, sizeof(buf_key), "%d", type);
-
- /* Get value using key */
- ret_val = bundle_get_val(b, buf_key);
- if (ret_val != NULL) {
- /* If key is exist, remove this value to store new image path */
- bundle_del(b, buf_key);
- }
-
- /* Add new image path with type key */
- bundle_add(b, buf_key, image_path);
- } else {
- /* If image path bundle is not exist, create new one */
- b = bundle_create();
-
- /* Set image type to key as char string type */
- snprintf(buf_key, sizeof(buf_key), "%d", type);
-
- /* Add new image path with type key */
- bundle_add(b, buf_key, image_path);
-
- /* Save to image path bundle */
- noti->b_image_path = b;
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_get_image(notification_h noti,
- notification_image_type_e type,
- char **image_path)
-{
- bundle *b = NULL;
- char buf_key[32] = { 0, };
- const char *ret_val = NULL;
-
- /* Check noti and image_path is valid data */
- if (noti == NULL || image_path == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Check image type is valid data */
- if (type <= NOTIFICATION_IMAGE_TYPE_NONE
- || type >= NOTIFICATION_IMAGE_TYPE_MAX) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Check image path bundle exist */
- if (noti->b_image_path) {
- /* If image path bundle exist, store local bundle data */
- b = noti->b_image_path;
-
- /* Set image type to key as char string type */
- snprintf(buf_key, sizeof(buf_key), "%d", type);
-
- /* Get value of key */
- ret_val = bundle_get_val(b, buf_key);
-
- *image_path = (char *)ret_val;
- } else {
- /* If image path bundle does not exist, image path is NULL */
- *image_path = NULL;
- }
-
- /* If image path is NULL and type is ICON, icon path set from AIL */
- /* order : user icon -> launch_pkgname icon -> caller_pkgname icon -> service app icon */
- if (*image_path == NULL && type == NOTIFICATION_IMAGE_TYPE_ICON) {
- /* Check App icon path is already set */
- if (noti->app_icon_path != NULL) {
- /* image path will be app icon path */
- *image_path = noti->app_icon_path;
- } else {
- *image_path = NULL;
- }
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_set_time(notification_h noti,
- time_t input_time)
-{
- /* Check noti is valid data */
- if (noti == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- if (input_time == 0) {
- /* If input time is 0, set current time */
- noti->time = time(NULL);
- } else {
- /* save input time */
- noti->time = input_time;
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_get_time(notification_h noti,
- time_t * ret_time)
-{
- /* Check noti and time is valid data */
- if (noti == NULL || ret_time == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Set time infomation */
- *ret_time = noti->time;
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_get_insert_time(notification_h noti,
- time_t * ret_time)
-{
- /* Check noti and ret_time is valid data */
- if (noti == NULL || ret_time == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Set insert time information */
- *ret_time = noti->insert_time;
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_set_text(notification_h noti,
- notification_text_type_e type,
- const char *text,
- const char *key,
- int args_type, ...)
-{
- bundle *b = NULL;
- char buf_key[32] = { 0, };
- char buf_val[1024] = { 0, };
- const char *ret_val = NULL;
- va_list var_args;
- notification_variable_type_e var_type;
- int num_args = 0;
- notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
- int var_value_int = 0;
- double var_value_double = 0.0;
- char *var_value_string = NULL;
- notification_count_pos_type_e var_value_count =
- NOTIFICATION_COUNT_POS_NONE;
-
- /* Check noti is valid data */
- if (noti == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Check text type is valid type */
- if (type <= NOTIFICATION_TEXT_TYPE_NONE
- || type >= NOTIFICATION_TEXT_TYPE_MAX) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Check text bundle exist */
- if (text != NULL) {
- if (noti->b_text != NULL) {
- /* If text bundle exist, store local bundle data */
- b = noti->b_text;
-
- /* Make type to key as char string */
- snprintf(buf_key, sizeof(buf_key), "%d", type);
-
- /* Get value using type key */
- ret_val = bundle_get_val(b, buf_key);
- if (ret_val != NULL) {
- /* If value exist, remove this to add new value */
- bundle_del(b, buf_key);
- }
-
- snprintf(buf_val, sizeof(buf_val), "%s", text);
-
- /* Add new text value */
- bundle_add(b, buf_key, buf_val);
- } else {
- /* If text bundle does not exist, create new one */
- b = bundle_create();
-
- /* Make type to key as char string */
- snprintf(buf_key, sizeof(buf_key), "%d", type);
-
- snprintf(buf_val, sizeof(buf_val), "%s", text);
-
- /* Add new text value */
- bundle_add(b, buf_key, buf_val);
-
- /* Save text bundle */
- noti->b_text = b;
- }
- } else {
- /* Reset if text is NULL */
- if (noti->b_text != NULL) {
- /* If text bundle exist, store local bundle data */
- b = noti->b_text;
-
- /* Make type to key as char string */
- snprintf(buf_key, sizeof(buf_key), "%d", type);
-
- /* Get value using type key */
- ret_val = bundle_get_val(b, buf_key);
- if (ret_val != NULL) {
- /* If value exist, remove this */
- bundle_del(b, buf_key);
- }
- }
- }
-
- /* Save key if key is valid data */
- if (key != NULL) {
- /* Check key bundle exist */
- if (noti->b_key != NULL) {
- /* If key bundle exist, store local bundle data */
- b = noti->b_key;
-
- /* Make type to key as char string */
- snprintf(buf_key, sizeof(buf_key), "%d", type);
-
- /* Get value using type key */
- ret_val = bundle_get_val(b, buf_key);
- if (ret_val != NULL) {
- /* If value exist, remove this to add new value */
- bundle_del(b, buf_key);
- }
-
- snprintf(buf_val, sizeof(buf_val), "%s", key);
-
- /* Add new key value */
- bundle_add(b, buf_key, buf_val);
- } else {
- /* If key bundle does not exist, create new one */
- b = bundle_create();
-
- /* Make type to key as char string */
- snprintf(buf_key, sizeof(buf_key), "%d", type);
-
- snprintf(buf_val, sizeof(buf_val), "%s", key);
-
- /* Add new key value */
- bundle_add(b, buf_key, buf_val);
-
- /* Save key bundle */
- noti->b_key = b;
- }
- } else {
- /* Reset if key is NULL */
- if (noti->b_key != NULL) {
- /* If key bundle exist, store local bundle data */
- b = noti->b_key;
-
- /* Make type to key as char string */
- snprintf(buf_key, sizeof(buf_key), "%d", type);
-
- /* Get value using type key */
- ret_val = bundle_get_val(b, buf_key);
- if (ret_val != NULL) {
- /* If value exist, remove this */
- bundle_del(b, buf_key);
- }
- }
- }
-
- if (noti->b_format_args != NULL) {
- b = noti->b_format_args;
- } else {
- b = bundle_create();
- }
-
- va_start(var_args, args_type);
-
- var_type = args_type;
- num_args = 0;
-
- while (var_type != NOTIFICATION_VARIABLE_TYPE_NONE) {
- /* Type */
- snprintf(buf_key, sizeof(buf_key), "%dtype%d", type, num_args);
- snprintf(buf_val, sizeof(buf_val), "%d", var_type);
-
- ret_val = bundle_get_val(b, buf_key);
- if (ret_val != NULL) {
- bundle_del(b, buf_key);
- }
-
- bundle_add(b, buf_key, buf_val);
-
- switch (var_type) {
- case NOTIFICATION_VARIABLE_TYPE_INT:
- var_value_int = va_arg(var_args, int);
-
- /* Value */
- snprintf(buf_key, sizeof(buf_key), "%dvalue%d", type,
- num_args);
- snprintf(buf_val, sizeof(buf_val), "%d", var_value_int);
-
- ret_val = bundle_get_val(b, buf_key);
- if (ret_val != NULL) {
- bundle_del(b, buf_key);
- }
-
- bundle_add(b, buf_key, buf_val);
- break;
- case NOTIFICATION_VARIABLE_TYPE_DOUBLE:
- var_value_double = va_arg(var_args, double);
-
- /* Value */
- snprintf(buf_key, sizeof(buf_key), "%dvalue%d", type,
- num_args);
- snprintf(buf_val, sizeof(buf_val), "%.2f",
- var_value_double);
-
- ret_val = bundle_get_val(b, buf_key);
- if (ret_val != NULL) {
- bundle_del(b, buf_key);
- }
-
- bundle_add(b, buf_key, buf_val);
- break;
- case NOTIFICATION_VARIABLE_TYPE_STRING:
- var_value_string = va_arg(var_args, char *);
-
- /* Value */
- snprintf(buf_key, sizeof(buf_key), "%dvalue%d", type,
- num_args);
- snprintf(buf_val, sizeof(buf_val), "%s",
- var_value_string);
-
- ret_val = bundle_get_val(b, buf_key);
- if (ret_val != NULL) {
- bundle_del(b, buf_key);
- }
-
- bundle_add(b, buf_key, buf_val);
- break;
- case NOTIFICATION_VARIABLE_TYPE_COUNT:
- var_value_count =
- va_arg(var_args, notification_count_pos_type_e);
-
- /* Value */
- snprintf(buf_key, sizeof(buf_key), "%dvalue%d", type,
- num_args);
- snprintf(buf_val, sizeof(buf_val), "%d",
- var_value_count);
-
- ret_val = bundle_get_val(b, buf_key);
- if (ret_val != NULL) {
- bundle_del(b, buf_key);
- }
-
- bundle_add(b, buf_key, buf_val);
- break;
- default:
- NOTIFICATION_ERR("Error. invalid variable type. : %d",
- var_type);
- noti_err = NOTIFICATION_ERROR_INVALID_PARAMETER;
- break;
- }
-
- num_args++;
- var_type = va_arg(var_args, notification_variable_type_e);
- }
- va_end(var_args);
-
- if (noti_err == NOTIFICATION_ERROR_NONE) {
- noti->num_format_args = num_args;
- } else {
- noti->num_format_args = 0;
- }
-
- snprintf(buf_key, sizeof(buf_key), "num%d", type);
- snprintf(buf_val, sizeof(buf_val), "%d", noti->num_format_args);
-
- ret_val = bundle_get_val(b, buf_key);
- if (ret_val != NULL) {
- bundle_del(b, buf_key);
- }
-
- bundle_add(b, buf_key, buf_val);
-
- noti->b_format_args = b;
-
- return noti_err;
-}
-
-EXPORT_API notification_error_e notification_get_text(notification_h noti,
- notification_text_type_e type,
- char **text)
-{
- bundle *b = NULL;
- char buf_key[32] = { 0, };
- const char *ret_val = NULL;
- const char *get_str = NULL;
- const char *get_check_type_str = NULL;
- notification_text_type_e check_type = NOTIFICATION_TEXT_TYPE_NONE;
- int display_option_flag = 0;
-
- char *temp_str = NULL;
- char result_str[NOTI_TEXT_RESULT_LEN] = { 0, };
- char buf_str[1024] = { 0, };
- int num_args = 0;
- notification_variable_type_e ret_var_type = 0;
- int ret_variable_int = 0;
- double ret_variable_double = 0.0;
-
- /* Check noti is valid data */
- if (noti == NULL || text == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Check text type is valid type */
- if (type <= NOTIFICATION_TEXT_TYPE_NONE
- || type >= NOTIFICATION_TEXT_TYPE_MAX) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Check key */
- if (noti->b_key != NULL) {
- b = noti->b_key;
-
- /* Get text domain and dir */
- _notification_get_text_domain(noti);
-
- snprintf(buf_key, sizeof(buf_key), "%d", type);
-
- ret_val = bundle_get_val(b, buf_key);
- if (ret_val != NULL && noti->domain != NULL
- && noti->dir != NULL) {
- /* Get application string */
- bindtextdomain(noti->domain, noti->dir);
-
- get_str = dgettext(noti->domain, ret_val);
- } else if (ret_val != NULL) {
- /* Get system string */
- get_str = dgettext("sys_string", ret_val);
- } else {
- get_str = NULL;
- }
- }
-
- if (get_str == NULL && noti->b_text != NULL) {
- b = noti->b_text;
- /* Get basic text */
- snprintf(buf_key, sizeof(buf_key), "%d", type);
-
- get_str = bundle_get_val(b, buf_key);
- }
-
- check_type = type;
-
- /* Set display option is off type when option is off, type is noti */
- if (get_str != NULL && display_option_flag == 1
- && noti->type == NOTIFICATION_TYPE_NOTI) {
- if (type == NOTIFICATION_TEXT_TYPE_CONTENT
- || type == NOTIFICATION_TEXT_TYPE_GROUP_CONTENT) {
- /* Set check_type to option content string */
- if (type == NOTIFICATION_TEXT_TYPE_CONTENT) {
- check_type =
- NOTIFICATION_TEXT_TYPE_CONTENT_FOR_DISPLAY_OPTION_IS_OFF;
- } else if (type == NOTIFICATION_TEXT_TYPE_GROUP_CONTENT) {
- check_type =
- NOTIFICATION_TEXT_TYPE_GROUP_CONTENT_FOR_DISPLAY_OPTION_IS_OFF;
- }
-
- /* Check key */
- if (noti->b_key != NULL) {
- b = noti->b_key;
-
- /* Get text domain and dir */
- _notification_get_text_domain(noti);
-
- snprintf(buf_key, sizeof(buf_key), "%d",
- check_type);
-
- ret_val = bundle_get_val(b, buf_key);
- if (ret_val != NULL && noti->domain != NULL
- && noti->dir != NULL) {
- /* Get application string */
- bindtextdomain(noti->domain, noti->dir);
-
- get_check_type_str =
- dgettext(noti->domain, ret_val);
- } else if (ret_val != NULL) {
- /* Get system string */
- get_check_type_str =
- dgettext("sys_string", ret_val);
- } else {
- get_check_type_str = NULL;
- }
- }
-
- if (get_check_type_str == NULL && noti->b_text != NULL) {
- b = noti->b_text;
- /* Get basic text */
- snprintf(buf_key, sizeof(buf_key), "%d",
- check_type);
-
- get_check_type_str = bundle_get_val(b, buf_key);
- }
- }
-
- if (get_check_type_str != NULL) {
- /* Replace option off type string */
- get_str = get_check_type_str;
- } else {
- /* Set default string */
- get_str =
- dgettext("sys_string", "IDS_COM_POP_MISSED_EVENT");
- }
- }
-
- if (get_str != NULL) {
- /* Get number format args */
- b = noti->b_format_args;
- noti->num_format_args = 0;
-
- if (b != NULL) {
- snprintf(buf_key, sizeof(buf_key), "num%d", check_type);
- ret_val = bundle_get_val(b, buf_key);
- if (ret_val != NULL) {
- noti->num_format_args = atoi(ret_val);
- }
- }
-
- if (noti->num_format_args == 0) {
- *text = (char *)get_str;
- } else {
- /* Check first variable is count, LEFT pos */
- snprintf(buf_key, sizeof(buf_key), "%dtype%d",
- check_type, num_args);
- ret_val = bundle_get_val(b, buf_key);
- ret_var_type = atoi(ret_val);
-
- if (ret_var_type == NOTIFICATION_VARIABLE_TYPE_COUNT) {
- /* Get var Value */
- snprintf(buf_key, sizeof(buf_key), "%dvalue%d",
- check_type, num_args);
- ret_val = bundle_get_val(b, buf_key);
- ret_variable_int = atoi(ret_val);
-
- if (ret_variable_int ==
- NOTIFICATION_COUNT_POS_LEFT) {
- notification_noti_get_count(noti->type,
- noti->caller_pkgname,
- noti->group_id,
- noti->priv_id,
- &ret_variable_int);
- snprintf(buf_str, sizeof(buf_str),
- "%d ", ret_variable_int);
-
- int src_len = strlen(result_str);
- int max_len = NOTI_TEXT_RESULT_LEN - src_len - 1;
-
- strncat(result_str, buf_str,
- max_len);
-
- num_args++;
- }
-
- }
-
- /* Check variable IN pos */
- for (temp_str = (char *)get_str; *temp_str != '\0';
- temp_str++) {
- if (*temp_str != '%') {
- strncat(result_str, temp_str, 1);
- } else {
- if (*(temp_str + 1) == '%') {
- strncat(result_str, temp_str,
- 1);
- } else if (*(temp_str + 1) == 'd') {
- /* Get var Type */
- ret_variable_int = 0;
-
- snprintf(buf_key,
- sizeof(buf_key),
- "%dtype%d", check_type,
- num_args);
- ret_val =
- bundle_get_val(b, buf_key);
- ret_var_type = atoi(ret_val);
- if (ret_var_type ==
- NOTIFICATION_VARIABLE_TYPE_COUNT)
- {
- /* Get notification count */
- notification_noti_get_count
- (noti->type,
- noti->caller_pkgname,
- noti->group_id,
- noti->priv_id,
- &ret_variable_int);
- } else {
- /* Get var Value */
- snprintf(buf_key,
- sizeof
- (buf_key),
- "%dvalue%d",
- check_type,
- num_args);
- ret_val =
- bundle_get_val(b,
- buf_key);
- ret_variable_int =
- atoi(ret_val);
- }
-
- snprintf(buf_str,
- sizeof(buf_str), "%d",
- ret_variable_int);
-
- int src_len = strlen(result_str);
- int max_len = NOTI_TEXT_RESULT_LEN - src_len - 1;
-
- strncat(result_str, buf_str,
- max_len);
-
- temp_str++;
-
- num_args++;
- } else if (*(temp_str + 1) == 's') {
- /* Get var Value */
- snprintf(buf_key,
- sizeof(buf_key),
- "%dvalue%d",
- check_type, num_args);
- ret_val =
- bundle_get_val(b, buf_key);
-
- snprintf(buf_str,
- sizeof(buf_str), "%s",
- ret_val);
-
- int src_len = strlen(result_str);
- int max_len = NOTI_TEXT_RESULT_LEN - src_len - 1;
-
- strncat(result_str, buf_str,
- max_len);
-
- temp_str++;
-
- num_args++;
- } else if (*(temp_str + 1) == 'f') {
- /* Get var Value */
- snprintf(buf_key,
- sizeof(buf_key),
- "%dvalue%d",
- check_type, num_args);
- ret_val =
- bundle_get_val(b, buf_key);
- ret_variable_double =
- atof(ret_val);
-
- snprintf(buf_str,
- sizeof(buf_str),
- "%.2f",
- ret_variable_double);
-
- int src_len = strlen(result_str);
- int max_len = NOTI_TEXT_RESULT_LEN - src_len - 1;
-
- strncat(result_str, buf_str,
- max_len);
-
- temp_str++;
-
- num_args++;
- }
- }
-
- }
-
- /* Check last variable is count, LEFT pos */
- if (num_args < noti->num_format_args) {
- snprintf(buf_key, sizeof(buf_key), "%dtype%d",
- check_type, num_args);
- ret_val = bundle_get_val(b, buf_key);
- ret_var_type = atoi(ret_val);
- if (ret_var_type ==
- NOTIFICATION_VARIABLE_TYPE_COUNT) {
- /* Get var Value */
- snprintf(buf_key, sizeof(buf_key),
- "%dvalue%d", check_type,
- num_args);
- ret_val = bundle_get_val(b, buf_key);
- ret_variable_int = atoi(ret_val);
-
- if (ret_variable_int ==
- NOTIFICATION_COUNT_POS_RIGHT) {
- notification_noti_get_count
- (noti->type,
- noti->caller_pkgname,
- noti->group_id,
- noti->priv_id,
- &ret_variable_int);
- snprintf(buf_str,
- sizeof(buf_str), " %d",
- ret_variable_int);
-
- int src_len = strlen(result_str);
- int max_len = NOTI_TEXT_RESULT_LEN - src_len - 1;
-
- strncat(result_str, buf_str,
- max_len);
-
- num_args++;
- }
-
- }
- }
-
- switch (check_type) {
- case NOTIFICATION_TEXT_TYPE_TITLE:
- case NOTIFICATION_TEXT_TYPE_GROUP_TITLE:
- if (noti->temp_title != NULL)
- free(noti->temp_title);
-
- noti->temp_title = strdup(result_str);
-
- *text = noti->temp_title;
- break;
- case NOTIFICATION_TEXT_TYPE_CONTENT:
- case NOTIFICATION_TEXT_TYPE_CONTENT_FOR_DISPLAY_OPTION_IS_OFF:
- case NOTIFICATION_TEXT_TYPE_GROUP_CONTENT:
- case NOTIFICATION_TEXT_TYPE_GROUP_CONTENT_FOR_DISPLAY_OPTION_IS_OFF:
- if (noti->temp_content !=
- NULL)
- free(noti->temp_content);
-
- noti->temp_content = strdup(result_str);
-
- *text = noti->temp_content;
- break;
- default:
- break;
- }
-
- }
-
- } else {
- *text = NULL;
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_set_text_domain(notification_h noti,
- const char *domain,
- const char *dir)
-{
- /* check noti and domain is valid data */
- if (noti == NULL || domain == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Check domain */
- if (noti->domain) {
- /* Remove previous domain */
- free(noti->domain);
- }
- /* Copy domain */
- noti->domain = strdup(domain);
-
- /* Check locale dir */
- if (noti->dir) {
- /* Remove previous locale dir */
- free(noti->dir);
- }
- /* Copy locale dir */
- noti->dir = strdup(dir);
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_get_text_domain(notification_h noti,
- char **domain,
- char **dir)
-{
- /* Check noti is valid data */
- if (noti == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Get domain */
- if (domain != NULL && noti->domain != NULL) {
- *domain = noti->domain;
- }
-
- /* Get locale dir */
- if (dir != NULL && noti->dir != NULL) {
- *dir = noti->dir;
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_set_time_to_text(notification_h noti, notification_text_type_e type,
- time_t time)
-{
- notification_error_e ret = NOTIFICATION_ERROR_NONE;
- char buf[256] = { 0, };
- char buf_tag[512] = { 0, };
-
- if (noti == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
- if (time <= 0) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- snprintf(buf, sizeof(buf), "%lu", time);
- ret = notification_noti_set_tag(TAG_TIME, buf, buf_tag, sizeof(buf_tag));
-
- if (ret != NOTIFICATION_ERROR_NONE) {
- return ret;
- }
-
- return notification_set_text(noti, type, buf_tag, NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
-}
-
-EXPORT_API notification_error_e notification_get_time_from_text(notification_h noti, notification_text_type_e type,
- time_t *time)
-{
- notification_error_e ret = NOTIFICATION_ERROR_NONE;
-
- if (noti == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
- if (time == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- char *ret_text = NULL;
- ret = notification_get_text(noti, type, &ret_text);
-
- if (ret != NOTIFICATION_ERROR_NONE || ret_text == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- if (notification_noti_get_tag_type(ret_text) == TAG_TYPE_INVALID) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- char *tag_value = NULL;
- tag_value = notification_noti_strip_tag(ret_text);
- if (tag_value == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- *time = atol(tag_value);
- free(tag_value);
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_set_sound(notification_h noti,
- notification_sound_type_e type,
- const char *path)
-{
- /* Check noti is valid data */
- if (noti == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Check type is valid */
- if (type < NOTIFICATION_SOUND_TYPE_NONE
- || type >= NOTIFICATION_SOUND_TYPE_MAX) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Save sound type */
- noti->sound_type = type;
-
- /* Save sound path if user data type */
- if (type == NOTIFICATION_SOUND_TYPE_USER_DATA && path != NULL) {
- if (noti->sound_path != NULL) {
- free(noti->sound_path);
- }
-
- noti->sound_path = strdup(path);
- } else {
- if (noti->sound_path != NULL) {
- free(noti->sound_path);
- noti->sound_path = NULL;
- }
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_get_sound(notification_h noti,
- notification_sound_type_e *type,
- const char **path)
-{
- /* check noti and type is valid data */
- if (noti == NULL || type == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Set sound type */
- *type = noti->sound_type;
-
- /* Set sound path if user data type */
- if (noti->sound_type == NOTIFICATION_SOUND_TYPE_USER_DATA
- && path != NULL) {
- *path = noti->sound_path;
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_set_vibration(notification_h noti,
- notification_vibration_type_e type,
- const char *path)
-{
- /* Check noti is valid data */
- if (noti == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Check type is valid */
- if (type < NOTIFICATION_VIBRATION_TYPE_NONE
- || type >= NOTIFICATION_VIBRATION_TYPE_MAX) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Save vibration type */
- noti->vibration_type = type;
-
- /* Save sound path if user data type */
- if (type == NOTIFICATION_VIBRATION_TYPE_USER_DATA && path != NULL) {
- if (noti->vibration_path != NULL) {
- free(noti->vibration_path);
- }
-
- noti->vibration_path = strdup(path);
- } else {
- if (noti->vibration_path != NULL) {
- free(noti->vibration_path);
- noti->vibration_path = NULL;
- }
- }
-
- return NOTIFICATION_ERROR_NONE;
-
-}
-
-EXPORT_API notification_error_e notification_get_vibration(notification_h noti,
- notification_vibration_type_e *type,
- const char **path)
-{
- /* check noti and type is valid data */
- if (noti == NULL || type == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Set vibration type */
- *type = noti->vibration_type;
-
- /* Set sound path if user data type */
- if (noti->vibration_type == NOTIFICATION_VIBRATION_TYPE_USER_DATA
- && path != NULL) {
- *path = noti->vibration_path;
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_set_led(notification_h noti,
- notification_led_op_e operation,
- int led_argb)
-{
- /* Check noti is valid data */
- if (noti == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Check operation is valid */
- if (operation < NOTIFICATION_LED_OP_OFF
- || operation >= NOTIFICATION_LED_OP_MAX) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Save led operation */
- noti->led_operation = operation;
-
- /* Save led argb if operation is turning on LED with custom color */
- if (operation == NOTIFICATION_LED_OP_ON_CUSTOM_COLOR) {
- noti->led_argb = led_argb;
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_get_led(notification_h noti,
- notification_led_op_e *operation,
- int *led_argb)
-{
- /* check noti and operation is valid data */
- if (noti == NULL || operation == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Set led operation */
- *operation = noti->led_operation;
-
- /* Save led argb if operation is turning on LED with custom color */
- if (noti->led_operation == NOTIFICATION_LED_OP_ON_CUSTOM_COLOR
- && led_argb != NULL) {
- *led_argb = noti->led_argb;
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_set_led_time_period(notification_h noti,
- int on_ms, int off_ms)
-{
- /* Check noti is valid data */
- if (noti == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Save led operation */
- noti->led_on_ms = on_ms;
- noti->led_off_ms = off_ms;
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_get_led_time_period(notification_h noti,
- int *on_ms, int *off_ms)
-{
- /* check noti and operation is valid data */
- if (noti == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- if (on_ms)
- *(on_ms) = noti->led_on_ms;
- if (off_ms)
- *(off_ms) = noti->led_off_ms;
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_set_application(notification_h noti,
- const char *pkgname)
-{
- if (noti == NULL || pkgname == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- if (noti->launch_pkgname) {
- free(noti->launch_pkgname);
- }
-
- noti->launch_pkgname = strdup(pkgname);
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_get_application(notification_h noti,
- char **pkgname)
-{
- if (noti == NULL || pkgname == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- if (noti->launch_pkgname) {
- *pkgname = noti->launch_pkgname;
- } else {
- *pkgname = noti->caller_pkgname;
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API int notification_set_launch_option(notification_h noti,
- notification_launch_option_type type, void *option)
-{
- int ret = 0;
- bundle *b = NULL;
- app_control_h app_control = option;
-
- if (noti == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
- if (app_control == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
- if (type != NOTIFICATION_LAUNCH_OPTION_APP_CONTROL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- if ((ret = app_control_to_bundle(app_control, &b)) == APP_CONTROL_ERROR_NONE) {
- return notification_set_execute_option(noti,
- NOTIFICATION_EXECUTE_TYPE_SINGLE_LAUNCH,
- NULL, NULL,
- b);
- } else {
- NOTIFICATION_ERR("Failed to convert appcontrol to bundle:%d", ret);
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-}
-
-EXPORT_API int notification_get_launch_option(notification_h noti,
- notification_launch_option_type type, void *option)
-{
- int ret = 0;
- bundle *b = NULL;
- app_control_h *app_control = (app_control_h *)option;
- app_control_h app_control_new = NULL;
-
- if (noti == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
- if (app_control == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
- if (type != NOTIFICATION_LAUNCH_OPTION_APP_CONTROL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- ret = notification_get_execute_option(noti,
- NOTIFICATION_EXECUTE_TYPE_SINGLE_LAUNCH,
- NULL,
- &b);
- if (ret == NOTIFICATION_ERROR_NONE && b != NULL) {
- ret = app_control_create(&app_control_new);
- if (ret == APP_CONTROL_ERROR_NONE && app_control_new != NULL) {
- ret = app_control_import_from_bundle(app_control_new, b);
- if (ret == APP_CONTROL_ERROR_NONE) {
- *app_control = app_control_new;
- } else {
- app_control_destroy(app_control_new);
- NOTIFICATION_ERR("Failed to import app control from bundle:%d", ret);
- return NOTIFICATION_ERROR_IO_ERROR;
- }
- } else {
- NOTIFICATION_ERR("Failed to create app control:%d", ret);
- return NOTIFICATION_ERROR_IO_ERROR;
- }
- } else {
- NOTIFICATION_ERR("Failed to get execute option:%d", ret);
- return ret;
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_set_execute_option(notification_h noti,
- notification_execute_type_e type,
- const char *text,
- const char *key,
- bundle *service_handle)
-{
- char buf_key[32] = { 0, };
- const char *ret_val = NULL;
- bundle *b = NULL;
-
- if (noti == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- if (type <= NOTIFICATION_EXECUTE_TYPE_NONE
- || type >= NOTIFICATION_EXECUTE_TYPE_MAX) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Create execute option bundle if does not exist */
- if (noti->b_execute_option != NULL) {
- noti->b_execute_option = bundle_create();
- }
-
- b = noti->b_execute_option;
-
- /* Save text */
- if (text != NULL) {
- /* Make text key */
- snprintf(buf_key, sizeof(buf_key), "text%d", type);
-
- /* Check text key exist */
- ret_val = bundle_get_val(b, buf_key);
- if (ret_val != NULL) {
- /* Remove previous data */
- bundle_del(b, buf_key);
- }
-
- /* Add text data */
- bundle_add(b, buf_key, text);
- }
-
- /* Save key */
- if (key != NULL) {
- /* Make key key */
- snprintf(buf_key, sizeof(buf_key), "key%d", type);
-
- /* Check key key exist */
- ret_val = bundle_get_val(b, buf_key);
- if (ret_val != NULL) {
- /* Remove previous data */
- bundle_del(b, buf_key);
- }
-
- /* Add text data */
- bundle_add(b, buf_key, key);
- }
-
- switch ((int)type) {
- case NOTIFICATION_EXECUTE_TYPE_RESPONDING:
- /* Remove previous data if exist */
- if (noti->b_service_responding != NULL) {
- bundle_free(noti->b_service_responding);
- noti->b_service_responding = NULL;
- }
-
- /* Save service handle */
- if (service_handle != NULL) {
- noti->b_service_responding = bundle_dup(service_handle);
- }
- break;
- case NOTIFICATION_EXECUTE_TYPE_SINGLE_LAUNCH:
- /* Remove previous data if exist */
- if (noti->b_service_single_launch != NULL) {
- bundle_free(noti->b_service_single_launch);
- noti->b_service_single_launch = NULL;
- }
-
- /* Save service handle */
- if (service_handle != NULL) {
- noti->b_service_single_launch =
- bundle_dup(service_handle);
- }
- break;
- case NOTIFICATION_EXECUTE_TYPE_MULTI_LAUNCH:
- /* Remove previous data if exist */
- if (noti->b_service_multi_launch != NULL) {
- bundle_free(noti->b_service_multi_launch);
- noti->b_service_multi_launch = NULL;
- }
-
- /* Save service handle */
- if (service_handle != NULL) {
- noti->b_service_multi_launch =
- bundle_dup(service_handle);
- }
- break;
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_get_execute_option(notification_h noti,
- notification_execute_type_e type,
- const char **text,
- bundle **service_handle)
-{
- char buf_key[32] = { 0, };
- const char *ret_val = NULL;
- char *get_str = NULL;
- bundle *b = NULL;
-
- if (noti == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- if (type <= NOTIFICATION_EXECUTE_TYPE_NONE
- || type >= NOTIFICATION_EXECUTE_TYPE_MAX) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- switch (type) {
- case NOTIFICATION_EXECUTE_TYPE_RESPONDING:
- b = noti->b_service_responding;
- break;
- case NOTIFICATION_EXECUTE_TYPE_SINGLE_LAUNCH:
- b = noti->b_service_single_launch;
- break;
- case NOTIFICATION_EXECUTE_TYPE_MULTI_LAUNCH:
- b = noti->b_service_multi_launch;
- break;
- default:
- b = NULL;
- break;
- }
-
- if (b != NULL) {
- // Return text
- if (text != NULL) {
- // Get text domain and dir
- if (noti->domain == NULL || noti->dir == NULL) {
- _notification_get_text_domain(noti);
- }
-
- /* Make key */
- snprintf(buf_key, sizeof(buf_key), "key%d", type);
-
- /* Check key key exist */
- ret_val = bundle_get_val(b, buf_key);
- if (ret_val != NULL && noti->domain != NULL
- && noti->dir != NULL) {
- /* Get application string */
- bindtextdomain(noti->domain, noti->dir);
-
- get_str = dgettext(noti->domain, ret_val);
-
- *text = get_str;
- } else if (ret_val != NULL) {
- /* Get system string */
- get_str = dgettext("sys_string", ret_val);
-
- *text = get_str;
- } else {
- /* Get basic text */
- snprintf(buf_key, sizeof(buf_key), "text%d",
- type);
-
- ret_val = bundle_get_val(b, buf_key);
-
- *text = ret_val;
- }
- }
- }
-
- switch (type) {
- case NOTIFICATION_EXECUTE_TYPE_RESPONDING:
- b = noti->b_service_responding;
- break;
- case NOTIFICATION_EXECUTE_TYPE_SINGLE_LAUNCH:
- b = noti->b_service_single_launch;
- break;
- case NOTIFICATION_EXECUTE_TYPE_MULTI_LAUNCH:
- b = noti->b_service_multi_launch;
- break;
- default:
- b = NULL;
- break;
- }
-
- if (service_handle != NULL) {
- *service_handle = b;
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_set_property(notification_h noti,
- int flags)
-{
- /* Check noti is valid data */
- if (noti == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Set flags */
- noti->flags_for_property = flags;
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_get_property(notification_h noti,
- int *flags)
-{
- /* Check noti and flags are valid data */
- if (noti == NULL || flags == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Set flags */
- *flags = noti->flags_for_property;
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_set_display_applist(notification_h noti,
- int applist)
-{
- /* Check noti is valid data */
- if (noti == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Set app list */
- noti->display_applist = applist;
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_get_display_applist(notification_h noti,
- int *applist)
-{
- /* Check noti and applist are valid data */
- if (noti == NULL || applist == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Set app list */
- *applist = noti->display_applist;
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_set_size(notification_h noti,
- double size)
-{
- /* Check noti is valid data */
- if (noti == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Save progress size */
- noti->progress_size = size;
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_get_size(notification_h noti,
- double *size)
-{
- /* Check noti and size is valid data */
- if (noti == NULL || size == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Set progress size */
- *size = noti->progress_size;
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_set_progress(notification_h noti,
- double percentage)
-{
- /* Check noti is valid data */
- if (noti == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Save progress percentage */
- noti->progress_percentage = percentage;
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_get_progress(notification_h noti,
- double *percentage)
-{
- /* Check noti and percentage are valid data */
- if (noti == NULL || percentage == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Set progress percentage */
- *percentage = noti->progress_percentage;
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_set_pkgname(notification_h noti,
- const char *pkgname)
-{
- /* check noti and pkgname are valid data */
- if (noti == NULL || pkgname == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Remove previous caller pkgname */
- if (noti->caller_pkgname) {
- free(noti->caller_pkgname);
- noti->caller_pkgname = NULL;
- }
-
- noti->caller_pkgname = strdup(pkgname);
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_get_pkgname(notification_h noti,
- char **pkgname)
-{
- /* Check noti and pkgname are valid data */
- if (noti == NULL || pkgname == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Get caller pkgname */
- if (noti->caller_pkgname) {
- *pkgname = noti->caller_pkgname;
- } else {
- *pkgname = NULL;
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_set_layout(notification_h noti,
- notification_ly_type_e layout)
-{
- /* check noti and pkgname are valid data */
- if (noti == NULL || (layout < NOTIFICATION_LY_NONE || layout >= NOTIFICATION_LY_MAX)) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- noti->layout = layout;
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_get_layout(notification_h noti,
- notification_ly_type_e *layout)
-{
- /* Check noti and pkgname are valid data */
- if (noti == NULL || layout == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- *layout = noti->layout;
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_get_id(notification_h noti,
- int *group_id, int *priv_id)
-{
- /* check noti is valid data */
- if (noti == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Check group_id is valid data */
- if (group_id) {
- /* Set group id */
- if (noti->group_id < NOTIFICATION_GROUP_ID_NONE) {
- *group_id = NOTIFICATION_GROUP_ID_NONE;
- } else {
- *group_id = noti->group_id;
- }
- }
-
- /* Check priv_id is valid data */
- if (priv_id) {
- /* Set priv_id */
- *priv_id = noti->priv_id;
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_get_type(notification_h noti,
- notification_type_e *type)
-{
- /* Check noti and type is valid data */
- if (noti == NULL || type == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Set noti type */
- *type = noti->type;
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API int notification_post(notification_h noti)
-{
- int ret = 0;
- int id = 0;
-
- /* Check noti is valid data */
- if (noti == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Check noti type is valid type */
- if (noti->type <= NOTIFICATION_TYPE_NONE
- || noti->type >= NOTIFICATION_TYPE_MAX) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Save insert time */
- noti->insert_time = time(NULL);
-
- ret = notification_ipc_request_insert(noti, &id);
- if (ret != NOTIFICATION_ERROR_NONE) {
- return ret;
- }
- noti->priv_id = id;
- NOTIFICATION_DBG("from master:%d", id);
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_insert(notification_h noti,
- int *priv_id)
-{
- int ret = 0;
- int id = 0;
-
- /* Check noti is valid data */
- if (noti == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Check noti type is valid type */
- if (noti->type <= NOTIFICATION_TYPE_NONE
- || noti->type >= NOTIFICATION_TYPE_MAX) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Save insert time */
- noti->insert_time = time(NULL);
- ret = notification_ipc_request_insert(noti, &id);
- if (ret != NOTIFICATION_ERROR_NONE) {
- return ret;
- }
- noti->priv_id = id;
- NOTIFICATION_DBG("from master:%d", id);
-
- /* If priv_id is valid data, set priv_id */
- if (priv_id != NULL) {
- *priv_id = noti->priv_id;
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_update(notification_h noti)
-{
- int ret = 0;
-
- /* Check noti is valid data */
- if (noti != NULL) {
- /* Update insert time ? */
- noti->insert_time = time(NULL);
- ret = notification_ipc_request_update(noti);
- if (ret != NOTIFICATION_ERROR_NONE) {
- return ret;
- }
- } else {
- ret = notification_ipc_request_refresh();
- if (ret != NOTIFICATION_ERROR_NONE) {
- return ret;
- }
- }
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_update_async(notification_h noti,
- void (*result_cb)(int priv_id, int result, void *data), void *user_data)
-{
- int ret = 0;
-
- /* Check noti is valid data */
- if (noti != NULL) {
- /* Update insert time ? */
- noti->insert_time = time(NULL);
- ret = notification_ipc_request_update_async(noti, result_cb, user_data);
- if (ret != NOTIFICATION_ERROR_NONE) {
- return ret;
- }
- }
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notifiation_clear(notification_type_e type)
-{
- int ret = 0;
-
- ret = notification_ipc_request_delete_multiple(type, NULL);
- if (ret != NOTIFICATION_ERROR_NONE) {
- return ret;
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_delete_all_by_type(const char *pkgname,
- notification_type_e type)
-{
- 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_by_priv_id(const char *pkgname,
- notification_type_e type,
- int priv_id)
-{
- int ret = 0;
- char *caller_pkgname = NULL;
-
- if (priv_id <= NOTIFICATION_PRIV_ID_NONE) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- 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 ret;
-}
-
-EXPORT_API notification_error_e notification_delete(notification_h noti)
-{
- int ret = 0;
-
- if (noti == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- ret = notification_ipc_request_delete_single(NOTIFICATION_TYPE_NONE, noti->caller_pkgname, noti->priv_id);
- if (ret != NOTIFICATION_ERROR_NONE) {
- return ret;
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_update_progress(notification_h noti,
- int priv_id,
- double progress)
-{
- char *caller_pkgname = NULL;
- int input_priv_id = 0;
- double input_progress = 0.0;
-
- if (priv_id <= NOTIFICATION_PRIV_ID_NONE) {
- if (noti == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- } else {
- input_priv_id = noti->priv_id;
- }
- } else {
- input_priv_id = priv_id;
- }
-
- if (noti == NULL) {
- caller_pkgname = _notification_get_pkgname_by_pid();
- } else {
- caller_pkgname = strdup(noti->caller_pkgname);
- }
-
- if (progress < 0.0) {
- input_progress = 0.0;
- } else if (progress > 1.0) {
- input_progress = 1.0;
- } else {
- input_progress = progress;
- }
-
- notification_ongoing_update_progress(caller_pkgname, input_priv_id,
- input_progress);
-
- if (caller_pkgname) {
- free(caller_pkgname);
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_update_size(notification_h noti,
- int priv_id,
- double size)
-{
- char *caller_pkgname = NULL;
- int input_priv_id = 0;
- double input_size = 0.0;
-
- if (priv_id <= NOTIFICATION_PRIV_ID_NONE) {
- if (noti == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- } else {
- input_priv_id = noti->priv_id;
- }
- } else {
- input_priv_id = priv_id;
- }
-
- if (noti == NULL) {
- caller_pkgname = _notification_get_pkgname_by_pid();
- } else {
- caller_pkgname = strdup(noti->caller_pkgname);
- }
-
- if (size < 0.0) {
- input_size = 0.0;
- } else {
- input_size = size;
- }
-
- notification_ongoing_update_size(caller_pkgname, input_priv_id,
- input_size);
-
- if (caller_pkgname) {
- free(caller_pkgname);
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_update_content(notification_h noti,
- int priv_id,
- const char *content)
-{
- char *caller_pkgname = NULL;
- int input_priv_id = 0;
-
- if (priv_id <= NOTIFICATION_PRIV_ID_NONE) {
- if (noti == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- } else {
- input_priv_id = noti->priv_id;
- }
- } else {
- input_priv_id = priv_id;
- }
-
- if (noti == NULL) {
- caller_pkgname = _notification_get_pkgname_by_pid();
- } else {
- caller_pkgname = strdup(noti->caller_pkgname);
- }
-
- notification_ongoing_update_content(caller_pkgname, input_priv_id,
- content);
-
- if (caller_pkgname) {
- free(caller_pkgname);
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-static notification_h _notification_create(notification_type_e type)
-{
- notification_h noti = NULL;
-
- if (type <= NOTIFICATION_TYPE_NONE || type >= NOTIFICATION_TYPE_MAX) {
- NOTIFICATION_ERR("INVALID TYPE : %d", type);
- return NULL;
- }
-
- noti = (notification_h) calloc(1, sizeof(struct _notification));
- if (noti == NULL) {
- NOTIFICATION_ERR("NO MEMORY : noti == NULL");
- return NULL;
- }
-
- noti->type = type;
-
- if (type == NOTIFICATION_TYPE_NOTI)
- noti->layout = NOTIFICATION_LY_NOTI_EVENT_SINGLE;
- else if (type == NOTIFICATION_TYPE_ONGOING)
- noti->layout = NOTIFICATION_LY_ONGOING_PROGRESS;
-
- noti->caller_pkgname = _notification_get_pkgname_by_pid();
- noti->group_id = NOTIFICATION_GROUP_ID_NONE;
- noti->priv_id = NOTIFICATION_PRIV_ID_NONE;
- noti->sound_type = NOTIFICATION_SOUND_TYPE_NONE;
- noti->vibration_type = NOTIFICATION_VIBRATION_TYPE_NONE;
- noti->led_operation = NOTIFICATION_LED_OP_OFF;
- noti->display_applist = NOTIFICATION_DISPLAY_APP_ALL;
- /*!
- * \NOTE
- * Other fields are already initialized with ZERO.
- */
- return noti;
-}
-
-EXPORT_API notification_h notification_new(notification_type_e type,
- int group_id, int priv_id)
-{
- return _notification_create(type);
-}
-
-EXPORT_API notification_h notification_create(notification_type_e type)
-{
- return _notification_create(type);
-}
-
-EXPORT_API notification_h notification_load(char *pkgname,
- int priv_id)
-{
- int ret = 0;
- notification_h noti = NULL;
-
- noti = (notification_h) calloc(1, sizeof(struct _notification));
- if (noti == NULL) {
- NOTIFICATION_ERR("NO MEMORY : noti == NULL");
- return NULL;
- }
-
- ret = notification_noti_get_by_priv_id(noti, pkgname, priv_id);
- if (ret != NOTIFICATION_ERROR_NONE) {
- notification_free(noti);
- return NULL;
- }
-
- return noti;
-}
-
-EXPORT_API notification_h notification_load_by_tag(const char *tag)
-{
- int ret = 0;
- notification_h noti = NULL;
- char *caller_pkgname = NULL;
-
- if (tag == NULL) {
- NOTIFICATION_ERR("Invalid parameter");
- set_last_result(NOTIFICATION_ERROR_INVALID_PARAMETER);
- return NULL;
- }
-
- caller_pkgname = _notification_get_pkgname_by_pid();
- if (!caller_pkgname) {
- NOTIFICATION_ERR("Failed to get a package name");
- set_last_result(NOTIFICATION_ERROR_OUT_OF_MEMORY);
-
- return NULL;
- }
-
- noti = (notification_h) calloc(1, sizeof(struct _notification));
- if (noti == NULL) {
- NOTIFICATION_ERR("Failed to alloc a new notification");
- set_last_result(NOTIFICATION_ERROR_OUT_OF_MEMORY);
- free(caller_pkgname);
-
- return NULL;
- }
-
- ret = notification_ipc_request_load_noti_by_tag(noti, caller_pkgname, tag);
-
- free(caller_pkgname);
-
- set_last_result(ret);
-
- if (ret != NOTIFICATION_ERROR_NONE) {
- notification_free(noti);
- return NULL;
- }
-
- return noti;
-}
-
-EXPORT_API notification_error_e notification_clone(notification_h noti, notification_h *clone)
-{
- notification_h new_noti = NULL;
-
- if (noti == NULL || clone == NULL) {
- NOTIFICATION_ERR("INVALID PARAMETER.");
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- new_noti = (notification_h) calloc(1, sizeof(struct _notification));
- if (new_noti == NULL) {
- NOTIFICATION_ERR("NO MEMORY : noti == NULL");
- return NOTIFICATION_ERROR_OUT_OF_MEMORY;
- }
-
- new_noti->type = noti->type;
- new_noti->layout = noti->layout;
-
- new_noti->group_id = noti->group_id;
- new_noti->internal_group_id = noti->internal_group_id;
- new_noti->priv_id = noti->priv_id;
-
- if(noti->caller_pkgname != NULL) {
- new_noti->caller_pkgname = strdup(noti->caller_pkgname);
- } else {
- new_noti->caller_pkgname = _notification_get_pkgname_by_pid();
- }
- if(noti->launch_pkgname != NULL) {
- new_noti->launch_pkgname = strdup(noti->launch_pkgname);
- } else {
- new_noti->launch_pkgname = NULL;
- }
-
- if(noti->args != NULL) {
- new_noti->args = bundle_dup(noti->args);
- } else {
- new_noti->args = NULL;
- }
- if(noti->group_args != NULL) {
- new_noti->group_args = bundle_dup(noti->group_args);
- } else {
- new_noti->group_args = NULL;
- }
-
- if(noti->b_execute_option != NULL) {
- new_noti->b_execute_option = bundle_dup(noti->b_execute_option);
- } else {
- new_noti->b_execute_option = NULL;
- }
- if(noti->b_service_responding != NULL) {
- new_noti->b_service_responding = bundle_dup(noti->b_service_responding);
- } else {
- new_noti->b_service_responding = NULL;
- }
- if(noti->b_service_single_launch != NULL) {
- new_noti->b_service_single_launch = bundle_dup(noti->b_service_single_launch);
- } else {
- new_noti->b_service_single_launch = NULL;
- }
- if(noti->b_service_multi_launch != NULL) {
- new_noti->b_service_multi_launch = bundle_dup(noti->b_service_multi_launch);
- } else {
- new_noti->b_service_multi_launch = NULL;
- }
-
- new_noti->sound_type = noti->sound_type;
- if(noti->sound_path != NULL) {
- new_noti->sound_path = strdup(noti->sound_path);
- } else {
- new_noti->sound_path = NULL;
- }
- new_noti->vibration_type = noti->vibration_type;
- if(noti->vibration_path != NULL) {
- new_noti->vibration_path = strdup(noti->vibration_path);
- } else {
- new_noti->vibration_path = NULL;
- }
- new_noti->led_operation = noti->led_operation;
- new_noti->led_argb = noti->led_argb;
- new_noti->led_on_ms = noti->led_on_ms;
- new_noti->led_off_ms = noti->led_off_ms;
-
- if(noti->domain != NULL) {
- new_noti->domain = strdup(noti->domain);
- } else {
- new_noti->domain = NULL;
- }
- if(noti->dir != NULL) {
- new_noti->dir = strdup(noti->dir);
- } else {
- new_noti->dir = NULL;
- }
-
- if(noti->b_text != NULL) {
- new_noti->b_text = bundle_dup(noti->b_text);
- } else {
- new_noti->b_text = NULL;
- }
- if(noti->b_key != NULL) {
- new_noti->b_key = bundle_dup(noti->b_key);
- } else {
- new_noti->b_key = NULL;
- }
- if(noti->b_format_args != NULL) {
- new_noti->b_format_args = bundle_dup(noti->b_format_args);
- } else {
- new_noti->b_format_args = NULL;
- }
- new_noti->num_format_args = noti->num_format_args;
-
- if(noti->b_image_path != NULL) {
- new_noti->b_image_path = bundle_dup(noti->b_image_path);
- } else {
- new_noti->b_image_path = NULL;
- }
-
- new_noti->time = noti->time;
- new_noti->insert_time = noti->insert_time;
-
- new_noti->flags_for_property = noti->flags_for_property;
- new_noti->display_applist = noti->display_applist;
-
- new_noti->progress_size = noti->progress_size;
- new_noti->progress_percentage = noti->progress_percentage;
-
- new_noti->app_icon_path = NULL;
- new_noti->app_name = NULL;
- new_noti->temp_title = NULL;
- new_noti->temp_content = NULL;
-
- *clone = new_noti;
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-
-EXPORT_API notification_error_e notification_free(notification_h noti)
-{
- if (noti == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- if (noti->caller_pkgname) {
- free(noti->caller_pkgname);
- }
- if (noti->launch_pkgname) {
- free(noti->launch_pkgname);
- }
- if (noti->args) {
- bundle_free(noti->args);
- }
- if (noti->group_args) {
- bundle_free(noti->group_args);
- }
-
- if (noti->b_execute_option) {
- bundle_free(noti->b_execute_option);
- }
- if (noti->b_service_responding) {
- bundle_free(noti->b_service_responding);
- }
- if (noti->b_service_single_launch) {
- bundle_free(noti->b_service_single_launch);
- }
- if (noti->b_service_multi_launch) {
- bundle_free(noti->b_service_multi_launch);
- }
-
- if (noti->sound_path) {
- free(noti->sound_path);
- }
- if (noti->vibration_path) {
- free(noti->vibration_path);
- }
-
- if (noti->domain) {
- free(noti->domain);
- }
- if (noti->dir) {
- free(noti->dir);
- }
-
- if (noti->b_text) {
- bundle_free(noti->b_text);
- }
- if (noti->b_key) {
- bundle_free(noti->b_key);
- }
- if (noti->b_format_args) {
- bundle_free(noti->b_format_args);
- }
-
- if (noti->b_image_path) {
- bundle_free(noti->b_image_path);
- }
-
- if (noti->app_icon_path) {
- free(noti->app_icon_path);
- }
- if (noti->app_name) {
- free(noti->app_name);
- }
- if (noti->temp_title) {
- free(noti->temp_title);
- }
- if (noti->temp_content) {
- free(noti->temp_content);
- }
-
- free(noti);
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e
-notification_resister_changed_cb(void (*changed_cb)
- (void *data, notification_type_e type),
- void *user_data)
-{
- 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_PARAMETER;
- }
- if (notification_ipc_monitor_init() != NOTIFICATION_ERROR_NONE) {
- return NOTIFICATION_ERROR_IO_ERROR;
- }
-
- noti_cb_list_new =
- (notification_cb_list_s *) malloc(sizeof(notification_cb_list_s));
-
- noti_cb_list_new->next = NULL;
- noti_cb_list_new->prev = NULL;
-
- noti_cb_list_new->cb_type = NOTIFICATION_CB_NORMAL;
- noti_cb_list_new->changed_cb = changed_cb;
- noti_cb_list_new->detailed_changed_cb = NULL;
- noti_cb_list_new->data = user_data;
-
- if (g_notification_cb_list == NULL) {
- g_notification_cb_list = noti_cb_list_new;
- } else {
- noti_cb_list = g_notification_cb_list;
-
- while (noti_cb_list->next != NULL) {
- noti_cb_list = noti_cb_list->next;
- }
-
- noti_cb_list->next = noti_cb_list_new;
- noti_cb_list_new->prev = noti_cb_list;
- }
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e
-notification_unresister_changed_cb(void (*changed_cb)
- (void *data, notification_type_e type))
-{
- notification_cb_list_s *noti_cb_list = NULL;
- notification_cb_list_s *noti_cb_list_prev = NULL;
- notification_cb_list_s *noti_cb_list_next = NULL;
-
- noti_cb_list = g_notification_cb_list;
-
- if (changed_cb == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
- if (noti_cb_list == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- while (noti_cb_list->prev != NULL) {
- noti_cb_list = noti_cb_list->prev;
- }
-
- do {
- if (noti_cb_list->changed_cb == changed_cb) {
- noti_cb_list_prev = noti_cb_list->prev;
- noti_cb_list_next = noti_cb_list->next;
-
- if (noti_cb_list_prev == NULL) {
- g_notification_cb_list = noti_cb_list_next;
- } else {
- noti_cb_list_prev->next = noti_cb_list_next;
- }
-
- if (noti_cb_list_next == NULL) {
- if (noti_cb_list_prev != NULL) {
- noti_cb_list_prev->next = NULL;
- }
- } else {
- noti_cb_list_next->prev = noti_cb_list_prev;
- }
-
- free(noti_cb_list);
-
- if (g_notification_cb_list == NULL)
- notification_ipc_monitor_fini();
-
- return NOTIFICATION_ERROR_NONE;
- }
- noti_cb_list = noti_cb_list->next;
- } while (noti_cb_list != NULL);
-
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
-}
-
-EXPORT_API notification_error_e
-notification_register_detailed_changed_cb(
- void (*detailed_changed_cb)(void *data, notification_type_e type, notification_op *op_list, int num_op),
- void *user_data)
-{
- 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_PARAMETER;
- }
- if (notification_ipc_monitor_init() != NOTIFICATION_ERROR_NONE) {
- return NOTIFICATION_ERROR_IO_ERROR;
- }
-
- noti_cb_list_new =
- (notification_cb_list_s *) malloc(sizeof(notification_cb_list_s));
-
- noti_cb_list_new->next = NULL;
- noti_cb_list_new->prev = NULL;
-
- noti_cb_list_new->cb_type = NOTIFICATION_CB_DETAILED;
- noti_cb_list_new->changed_cb = NULL;
- noti_cb_list_new->detailed_changed_cb = detailed_changed_cb;
- noti_cb_list_new->data = user_data;
-
- if (g_notification_cb_list == NULL) {
- g_notification_cb_list = noti_cb_list_new;
- } else {
- noti_cb_list = g_notification_cb_list;
-
- while (noti_cb_list->next != NULL) {
- noti_cb_list = noti_cb_list->next;
- }
-
- noti_cb_list->next = noti_cb_list_new;
- noti_cb_list_new->prev = noti_cb_list;
- }
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e
-notification_unregister_detailed_changed_cb(
- void (*detailed_changed_cb)(void *data, notification_type_e type, notification_op *op_list, int num_op),
- void *user_data)
-{
- notification_cb_list_s *noti_cb_list = NULL;
- notification_cb_list_s *noti_cb_list_prev = NULL;
- notification_cb_list_s *noti_cb_list_next = NULL;
-
- noti_cb_list = g_notification_cb_list;
-
- if (detailed_changed_cb == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
- if (noti_cb_list == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- while (noti_cb_list->prev != NULL) {
- noti_cb_list = noti_cb_list->prev;
- }
-
- do {
- if (noti_cb_list->detailed_changed_cb == detailed_changed_cb) {
- noti_cb_list_prev = noti_cb_list->prev;
- noti_cb_list_next = noti_cb_list->next;
-
- if (noti_cb_list_prev == NULL) {
- g_notification_cb_list = noti_cb_list_next;
- } else {
- noti_cb_list_prev->next = noti_cb_list_next;
- }
-
- if (noti_cb_list_next == NULL) {
- if (noti_cb_list_prev != NULL) {
- noti_cb_list_prev->next = NULL;
- }
- } else {
- noti_cb_list_next->prev = noti_cb_list_prev;
- }
-
- free(noti_cb_list);
-
- if (g_notification_cb_list == NULL)
- notification_ipc_monitor_fini();
-
- return NOTIFICATION_ERROR_NONE;
- }
- noti_cb_list = noti_cb_list->next;
- } while (noti_cb_list != NULL);
-
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
-}
-
-EXPORT_API notification_error_e notification_get_count(notification_type_e type,
- const char *pkgname,
- int group_id,
- int priv_id, int *count)
-{
- int ret = 0;
- int noti_count = 0;
-
- if (count == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- ret =
- notification_noti_get_count(type, pkgname, group_id, priv_id,
- ¬i_count);
- if (ret != NOTIFICATION_ERROR_NONE) {
- return ret;
- }
-
- *count = noti_count;
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_get_list(notification_type_e type,
- int count,
- notification_list_h *list)
-{
- notification_list_h get_list = NULL;
- int ret = 0;
-
- if (list == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- ret = notification_noti_get_grouping_list(type, count, &get_list);
- if (ret != NOTIFICATION_ERROR_NONE) {
- return ret;
- }
-
- *list = get_list;
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e
-notification_get_grouping_list(notification_type_e type, int count,
- notification_list_h * list)
-{
- notification_list_h get_list = NULL;
- int ret = 0;
-
- if (list == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- ret = notification_noti_get_grouping_list(type, count, &get_list);
- if (ret != NOTIFICATION_ERROR_NONE) {
- return ret;
- }
-
- *list = get_list;
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_get_detail_list(const char *pkgname,
- int group_id,
- int priv_id,
- int count,
- notification_list_h *list)
-{
- notification_list_h get_list = NULL;
- int ret = 0;
-
- if (list == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- ret =
- notification_noti_get_detail_list(pkgname, group_id, priv_id, count,
- &get_list);
- if (ret != NOTIFICATION_ERROR_NONE) {
- return ret;
- }
-
- *list = get_list;
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_free_list(notification_list_h list)
-{
- notification_list_h cur_list = NULL;
- notification_h noti = NULL;
-
- if (list == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- cur_list = notification_list_get_head(list);
-
- while (cur_list != NULL) {
- noti = notification_list_get_data(cur_list);
- cur_list = notification_list_remove(cur_list, noti);
-
- notification_free(noti);
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_op_get_data(notification_op *noti_op, notification_op_data_type_e type,
- void *data)
-{
- if (noti_op == NULL || data == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- switch (type) {
- case NOTIFICATION_OP_DATA_TYPE:
- *((int*)data) = noti_op->type;
- break;
- case NOTIFICATION_OP_DATA_PRIV_ID:
- *((int*)data) = noti_op->priv_id;
- break;
- case NOTIFICATION_OP_DATA_NOTI:
- *((notification_h *)data) = noti_op->noti;
- break;
- case NOTIFICATION_OP_DATA_EXTRA_INFO_1:
- *((int*)data) = noti_op->extra_info_1;
- break;
- case NOTIFICATION_OP_DATA_EXTRA_INFO_2:
- *((int*)data) = noti_op->extra_info_2;
- break;
- default:
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- break;
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-void notification_call_changed_cb(notification_op *op_list, int op_num)
-{
- notification_cb_list_s *noti_cb_list = NULL;
-
-
- if (g_notification_cb_list == NULL) {
- return;
- }
- noti_cb_list = g_notification_cb_list;
-
- while (noti_cb_list->prev != NULL) {
- noti_cb_list = noti_cb_list->prev;
- }
-
- if (op_list == NULL) {
- NOTIFICATION_ERR("invalid data");
- return ;
- }
-
- while (noti_cb_list != NULL) {
- if (noti_cb_list->cb_type == NOTIFICATION_CB_NORMAL && noti_cb_list->changed_cb) {
- noti_cb_list->changed_cb(noti_cb_list->data,
- NOTIFICATION_TYPE_NOTI);
- }
- if (noti_cb_list->cb_type == NOTIFICATION_CB_DETAILED && noti_cb_list->detailed_changed_cb) {
- noti_cb_list->detailed_changed_cb(noti_cb_list->data,
- NOTIFICATION_TYPE_NOTI, op_list, op_num);
- }
-
- noti_cb_list = noti_cb_list->next;
- }
-}
-
-EXPORT_API int notification_is_service_ready(void)
-{
- /*
- * The notification service is now socket activated so as far
- * as clients are concerned it is always ready
- */
- return 1;
-}
-
-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_PARAMETER;
- }
-
- return notification_ipc_add_deffered_task(deffered_task_cb, user_data);
-}
-
-EXPORT_API notification_error_e
-notification_del_deffered_task(
- void (*deffered_task_cb)(void *data))
-{
- if (deffered_task_cb == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- 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_PARAMETER;
- }
-
- 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_PARAMETER;
- }
-
- 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;
-}
-
-EXPORT_API int notification_set_tag(notification_h noti, const char *tag)
-{
- /* Check noti is valid data */
- if (noti == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- if (tag != NULL) {
- /* save input TAG */
- if (noti->tag != NULL) {
- free(noti->tag);
- }
- noti->tag = strdup(tag);
- }
-
- return NOTIFICATION_ERROR_NONE;
-
-}
-
-EXPORT_API int notification_get_tag(notification_h noti, const char **tag)
-{
- /* Check noti is valid data */
- if (noti == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Set sound type */
- *tag = noti->tag;
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_wait_response(notification_h noti,
- int timeout,
- int *respi,
- char **respc)
-{
- bundle *b, *bc = NULL;
- pid_t tid;
- const char *tid_c;
- int sock_fd, msg_fd;
- char *sock_path;
- struct sockaddr_un sock_addr;
- char msg_buffer[1024];
- ssize_t msg_size;
- struct timeval timeout_tv;
- char *resp;
-
- memset(msg_buffer, 0, sizeof(msg_buffer));
-
- /* a response packet *must* have an execute option TYPE_RESPONDING
- with an associated bundle.
- If its bundle does not already contain a "tid" hint (which
- complex applications such as xwalk may overwrite), we will
- try to find the TID and set it in the bundle ourselves. */
- notification_get_execute_option (noti, NOTIFICATION_EXECUTE_TYPE_RESPONDING,
- NULL, &b);
-
- if (b == NULL)
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
-
- tid_c = bundle_get_val(b, "tid");
- if (tid_c == NULL) {
- tid = syscall(SYS_gettid);
- asprintf((char **)&tid_c, "%d", tid);
- bc = bundle_dup(b);
- bundle_add(bc, "tid", tid_c);
- notification_set_execute_option (noti, NOTIFICATION_EXECUTE_TYPE_RESPONDING,
- NULL, NULL, bc);
- bundle_free(bc);
- notification_update(noti);
- }
-
- sock_fd = socket(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0);
- if (sock_fd == -1)
- return NOTIFICATION_ERROR_OUT_OF_MEMORY;
-
- sock_addr.sun_family = AF_UNIX;
- asprintf(&sock_path, "/tmp/.notification-%s", tid_c);
- strncpy(sock_addr.sun_path, sock_path, sizeof(sock_addr.sun_path) - 1);
- if (bind(sock_fd, (struct sockaddr *)&sock_addr, sizeof(sock_addr)) == -1) {
- close(sock_fd);
- free(sock_path);
- free((char *)tid_c);
- return NOTIFICATION_ERROR_OUT_OF_MEMORY;
- }
-
- if (timeout > 0) {
- timeout_tv.tv_sec = timeout;
- timeout_tv.tv_usec = 0;
- setsockopt(sock_fd, SOL_SOCKET, SO_RCVTIMEO, (char *)&timeout_tv, sizeof(timeout_tv));
- setsockopt(sock_fd, SOL_SOCKET, SO_SNDTIMEO, (char *)&timeout_tv, sizeof(timeout_tv));
- }
-
- listen(sock_fd, 1);
- msg_fd = accept(sock_fd, NULL, 0);
- do {
- msg_size = read(msg_fd, msg_buffer, 1024);
- } while (msg_size > 0);
-
- resp = strtok(msg_buffer, "\n");
- if (resp) {
- *respi = atoi(resp);
- if (respc != NULL) {
- resp = strtok(NULL, "\n");
- if (resp)
- *respc = resp;
- else
- *respc = NULL;
- }
- } else {
- *respi = 0;
- if (respc != NULL)
- *respc = NULL;
- }
-
- close(sock_fd);
- unlink(sock_path);
- free(sock_path);
- free((char *)tid_c);
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_send_response(notification_h noti,
- int respi,
- char *respc)
-{
- bundle *b = NULL;
- notification_h notic;
- int notic_id;
- char *notic_pkgname;
- int tid;
- const char *tid_c;
- int sock_fd;
- char *sock_path;
- struct sockaddr_un sock_addr;
- char *msg_buffer;
-
- notification_get_id(noti, NULL, ¬ic_id);
- notification_get_pkgname(noti, ¬ic_pkgname);
- notic = notification_load(notic_pkgname, notic_id);
- notification_get_execute_option (notic, NOTIFICATION_EXECUTE_TYPE_RESPONDING,
- NULL, &b);
-
- if (b == NULL)
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
-
- tid_c = bundle_get_val(b, "tid");
- if (tid_c == NULL)
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- tid = atoi(tid_c);
-
- sock_fd = socket(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0);
- if (sock_fd == -1)
- return NOTIFICATION_ERROR_OUT_OF_MEMORY;
-
- sock_addr.sun_family = AF_UNIX;
- asprintf(&sock_path, "/tmp/.notification-%d", tid);
- strncpy(sock_addr.sun_path, sock_path, sizeof(sock_addr.sun_path) - 1);
- if (connect(sock_fd, (struct sockaddr *)&sock_addr, sizeof(sock_addr)) == -1) {
- close(sock_fd);
- free(sock_path);
- return NOTIFICATION_ERROR_OUT_OF_MEMORY;
- }
-
- if (respc)
- asprintf(&msg_buffer, "%d\n%s\n", respi, respc);
- else
- asprintf(&msg_buffer, "%d\n", respi);
- write(sock_fd, msg_buffer, strlen(msg_buffer) + 1);
-
- close(sock_fd);
- free(sock_path);
- free(msg_buffer);
-
- return NOTIFICATION_ERROR_NONE;
-}
+++ /dev/null
-/*
- * 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.
- *
- */
-
-#include <errno.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-
-#include <sqlite3.h>
-#include <db-util.h>
-
-#include <notification_error.h>
-#include <notification_debug.h>
-#include <notification_db.h>
-
-sqlite3 *notification_db_open(const char *dbfile)
-{
- int ret = 0;
- sqlite3 *db;
-
- ret = db_util_open(dbfile, &db, 0);
- if (ret != SQLITE_OK) {
- NOTIFICATION_ERR("DB open error(%d), %s", ret, dbfile);
- return NULL;
- }
-
- return db;
-}
-
-int notification_db_close(sqlite3 ** db)
-{
- int ret = 0;
-
- if (db == NULL || *db == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- ret = db_util_close(*db);
- if (ret != SQLITE_OK) {
- NOTIFICATION_ERR("DB close error(%d)", ret);
- return NOTIFICATION_ERROR_FROM_DB;
- }
-
- *db = NULL;
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-int notification_db_exec(sqlite3 * db, const char *query, int *num_changes)
-{
- int ret = 0;
- sqlite3_stmt *stmt = NULL;
-
- if (db == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
- if (query == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- ret = sqlite3_prepare_v2(db, query, strlen(query), &stmt, NULL);
- if (ret != SQLITE_OK) {
- NOTIFICATION_ERR("DB err(%d) : %s", ret,
- sqlite3_errmsg(db));
- return NOTIFICATION_ERROR_FROM_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;
-}
-
-char *notification_db_column_text(sqlite3_stmt * stmt, int col)
-{
- const unsigned char *col_text = NULL;
-
- col_text = sqlite3_column_text(stmt, col);
- if (col_text == NULL || col_text[0] == '\0') {
- return NULL;
- }
-
- return strdup((char *)col_text);
-}
-
-bundle *notification_db_column_bundle(sqlite3_stmt * stmt, int col)
-{
- const unsigned char *col_bundle = NULL;
-
- col_bundle = sqlite3_column_text(stmt, col);
- if (col_bundle == NULL || col_bundle[0] == '\0') {
- return NULL;
- }
-
- return bundle_decode(col_bundle, strlen((char *)col_bundle));
-}
+++ /dev/null
-/*
- * 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.
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <notification_debug.h>
-#include <notification_group.h>
-#include <notification_db.h>
-
-static int _notification_group_check_data_inserted(const char *pkgname,
- int group_id, sqlite3 * db)
-{
- sqlite3_stmt *stmt = NULL;
- char query[NOTIFICATION_QUERY_MAX] = { 0, };
- int ret = NOTIFICATION_ERROR_NONE, result = 0;
-
- snprintf(query, sizeof(query),
- "select count(*) from noti_group_data where caller_pkgname = '%s' and group_id = %d",
- pkgname, group_id);
-
- ret = sqlite3_prepare(db, query, strlen(query), &stmt, NULL);
- if (ret != SQLITE_OK) {
- NOTIFICATION_ERR("Get count DB err(%d) : %s", ret,
- sqlite3_errmsg(db));
- return NOTIFICATION_ERROR_FROM_DB;
- }
-
- ret = sqlite3_step(stmt);
- if (ret == SQLITE_ROW) {
- result = sqlite3_column_int(stmt, 0);
- } else {
- result = 0;
- }
-
- NOTIFICATION_INFO("Check Data Inserted : query[%s], result : [%d]",
- query, result);
-
- sqlite3_finalize(stmt);
-
- if (result > 0) {
- return NOTIFICATION_ERROR_ALREADY_EXIST_ID;
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-notification_error_e notification_group_set_badge(const char *pkgname,
- int group_id, int count)
-{
- sqlite3 *db;
- sqlite3_stmt *stmt = NULL;
- char query[NOTIFICATION_QUERY_MAX] = { 0, };
- int ret = 0;
- int result = NOTIFICATION_ERROR_NONE;
-
- /* Open DB */
- db = notification_db_open(DBPATH);
-
- /* Check pkgname & group_id */
- ret = _notification_group_check_data_inserted(pkgname, group_id, db);
-
- /* Make query */
- if (ret == NOTIFICATION_ERROR_NONE) {
- /* Insert if does not exist */
- snprintf(query, sizeof(query), "insert into noti_group_data ("
- "caller_pkgname, group_id, badge, content, loc_content) values ("
- "'%s', %d, %d, '', '')", pkgname, group_id, count);
-
- } else {
- /* Update if exist */
- snprintf(query, sizeof(query), "update noti_group_data "
- "set badge = %d "
- "where caller_pkgname = '%s' and group_id = %d",
- count, pkgname, group_id);
- }
-
- ret = sqlite3_prepare_v2(db, query, -1, &stmt, NULL);
- if (ret != SQLITE_OK) {
- NOTIFICATION_ERR("Insert Query : %s", query);
- NOTIFICATION_ERR("Insert DB error(%d) : %s", ret,
- sqlite3_errmsg(db));
- if (stmt) {
- sqlite3_finalize(stmt);
- }
-
- if (db) {
- notification_db_close(&db);
- }
- return NOTIFICATION_ERROR_FROM_DB;
- }
-
- ret = sqlite3_step(stmt);
- if (ret == SQLITE_OK || ret == SQLITE_DONE) {
- result = NOTIFICATION_ERROR_NONE;
- } else {
- result = NOTIFICATION_ERROR_FROM_DB;
- }
-
- if (stmt) {
- sqlite3_finalize(stmt);
- }
-
- /* Close DB */
- if (db) {
- notification_db_close(&db);
- }
-
- return result;
-}
-
-notification_error_e notification_group_get_badge(const char *pkgname,
- int group_id, int *count)
-{
- sqlite3 *db;
- sqlite3_stmt *stmt = NULL;
- char query[NOTIFICATION_QUERY_MAX] = { 0, };
- int ret = 0;
- int col = 0;
-
- /* Open DB */
- db = notification_db_open(DBPATH);
-
- /* Make query */
- if (group_id == NOTIFICATION_GROUP_ID_NONE) {
- /* Check Group id None is exist */
- ret =
- _notification_group_check_data_inserted(pkgname, group_id,
- db);
-
- if (ret == NOTIFICATION_ERROR_NONE) {
- /* Get all of pkgname count if none group id is not exist */
- snprintf(query, sizeof(query),
- "select sum(badge) "
- "from noti_group_data "
- "where caller_pkgname = '%s'", pkgname);
- } else {
- /* Get none group id count */
- snprintf(query, sizeof(query),
- "select badge "
- "from noti_group_data "
- "where caller_pkgname = '%s' and group_id = %d",
- pkgname, group_id);
- }
- } else {
- snprintf(query, sizeof(query),
- "select badge "
- "from noti_group_data "
- "where caller_pkgname = '%s' and group_id = %d",
- pkgname, group_id);
- }
-
- NOTIFICATION_INFO("Get badge : query[%s]", query);
-
- ret = sqlite3_prepare(db, query, strlen(query), &stmt, NULL);
- if (ret != SQLITE_OK) {
- NOTIFICATION_ERR("Select Query : %s", query);
- NOTIFICATION_ERR("Select DB error(%d) : %s", ret,
- sqlite3_errmsg(db));
-
- return NOTIFICATION_ERROR_FROM_DB;
- }
-
- ret = sqlite3_step(stmt);
- if (ret == SQLITE_ROW) {
- *count = sqlite3_column_int(stmt, col++);
- }
-
- sqlite3_finalize(stmt);
-
- // db close
- if (db) {
- notification_db_close(&db);
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
+++ /dev/null
-/*
- * 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.
- *
- */
-
-#include <Ecore.h>
-#include <Eina.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <errno.h>
-
-#include <vconf.h>
-
-#include <packet.h>
-#include <com-core.h>
-#include <com-core_packet.h>
-
-#include <notification_ipc.h>
-#include <notification_db.h>
-#include <notification_type.h>
-#include <notification_internal.h>
-#include <notification_debug.h>
-
-#define NOTIFICATION_IPC_TIMEOUT 0.0
-
-#if !defined(VCONFKEY_MASTER_STARTED)
-#define VCONFKEY_MASTER_STARTED "memory/data-provider-master/started"
-#endif
-
-static struct info {
- int server_fd;
- int server_cl_fd;
- int server_cl_fd_ref_cnt;
- int client_fd;
- const char *socket_file;
- struct {
- int (*request_cb)(const char *appid, const char *name, int type, const char *content, const char *icon, pid_t pid, double period, int allow_duplicate, void *data);
- void *data;
- } server_cb;
- int initialized;
- int is_started_cb_set_svc;
-} s_info = {
- .server_fd = -1,
- .server_cl_fd = -1,
- .server_cl_fd_ref_cnt = 0,
- .client_fd = -1,
- .socket_file = NOTIFICATION_ADDR,
- .initialized = 0,
- .is_started_cb_set_svc = 0,
-};
-
-typedef struct _task_list task_list;
-struct _task_list {
- task_list *prev;
- task_list *next;
-
- void (*task_cb) (void *data);
- void *data;
-};
-
-typedef struct _result_cb_item {
- void (*result_cb)(int priv_id, int result, void *data);
- void *data;
-} result_cb_item;
-
-static task_list *g_task_list;
-
-static Eina_Bool _do_deffered_task(void *data);
-
-/*
- * The concept of having to deffer a task till the "master" was
- * started is now defunct since we use systemd to auto activate
- * the service, with clients blissfully unaware of the state
- * of the service at the time they attempt to use the socket.
- *
- * To enable backwards compatability we now setup an idle handler
- * to cleanup all the deffered task. This keeps the call behavior
- * as non-blocking and is true to the original spirit (i.e. run
- * the task when the service is available)
- */
-
-int notification_ipc_is_master_ready(void)
-{
- int ret = -1, is_master_started = 0;
-
- ret = vconf_get_bool(VCONFKEY_MASTER_STARTED, &is_master_started);
- if (ret == 0 && is_master_started == 1) {
- NOTIFICATION_ERR("the master has been started");
- } else {
- is_master_started = 0;
- NOTIFICATION_ERR("the master has been stopped");
- }
-
- return is_master_started;
-}
-
-notification_error_e
-notification_ipc_add_deffered_task(
- void (*deffered_task_cb)(void *data),
- void *user_data)
-{
- task_list *list = NULL;
- task_list *list_new = NULL;
-
- list_new =
- (task_list *) malloc(sizeof(task_list));
-
- if (list_new == NULL) {
- return NOTIFICATION_ERROR_OUT_OF_MEMORY;
- }
-
- list_new->next = NULL;
- list_new->prev = NULL;
-
- list_new->task_cb = deffered_task_cb;
- list_new->data = user_data;
-
- if (g_task_list == NULL) {
- g_task_list = list_new;
- } else {
- list = g_task_list;
-
- while (list->next != NULL) {
- list = list->next;
- }
-
- list->next = list_new;
- list_new->prev = list;
- }
-
- ecore_idler_add(_do_deffered_task, NULL);
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-notification_error_e
-notification_ipc_del_deffered_task(
- void (*deffered_task_cb)(void *data))
-{
- task_list *list_del = NULL;
- task_list *list_prev = NULL;
- task_list *list_next = NULL;
-
- list_del = g_task_list;
-
- if (list_del == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- while (list_del->prev != NULL) {
- list_del = list_del->prev;
- }
-
- do {
- if (list_del->task_cb == deffered_task_cb) {
- list_prev = list_del->prev;
- list_next = list_del->next;
-
- if (list_prev == NULL) {
- g_task_list = list_next;
- } else {
- list_prev->next = list_next;
- }
-
- if (list_next == NULL) {
- if (list_prev != NULL) {
- list_prev->next = NULL;
- }
- } else {
- list_next->prev = list_prev;
- }
-
- free(list_del);
-
- if (g_task_list == NULL) {
- ecore_idler_del(_do_deffered_task);
- }
-
- return NOTIFICATION_ERROR_NONE;
- }
- list_del = list_del->next;
- } while (list_del != NULL);
-
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
-}
-
-static Eina_Bool _do_deffered_task(void *data) {
- task_list *list_do = NULL;
- task_list *list_temp = NULL;
-
-
- if (g_task_list) {
- list_do = g_task_list;
- g_task_list = NULL;
-
- while (list_do->prev != NULL) {
- list_do = list_do->prev;
- }
-
- while (list_do != NULL) {
- if (list_do->task_cb != NULL) {
- list_do->task_cb(list_do->data);
- NOTIFICATION_DBG("called:%p", list_do->task_cb);
- }
- list_temp = list_do->next;
- free(list_do);
- list_do = list_temp;
- }
- }
-
- return ECORE_CALLBACK_CANCEL;
-}
-
-/*!
- * functions to create operation list
- */
-notification_op *notification_ipc_create_op(notification_op_type_e type, int num_op, int *list_priv_id, int num_priv_id, notification_h *noti_list)
-{
- int i = 0;
- notification_op *op_list = NULL;
-
- if (num_op <= 0) {
- return NULL;
- }
-
- op_list = (notification_op *)malloc(sizeof(notification_op) * num_op);
- memset(op_list, 0x0, sizeof(notification_op) * num_op);
-
- for (i = 0; i < num_op; i++) {
- (op_list + i)->type = type;
- if (list_priv_id != NULL) {
- (op_list + i)->priv_id = *(list_priv_id + i);
- }
- if (noti_list != NULL) {
- (op_list + i)->noti = *(noti_list + i);
- }
- }
-
- return op_list;
-}
-
-/*!
- * utility functions creating notification packet
- */
-static inline char *_dup_string(const char *string)
-{
- char *ret;
-
- if (string == NULL) {
- return NULL;
- }
- if (string[0] == '\0') {
- return NULL;
- }
-
- ret = strdup(string);
- if (!ret)
- NOTIFICATION_ERR("Error: %s\n", strerror(errno));
-
- return ret;
-}
-
-static inline bundle *_create_bundle_from_string(unsigned char *string)
-{
- if (string == NULL) {
- return NULL;
- }
- if (string[0] == '\0') {
- return NULL;
- }
-
- return bundle_decode(string, strlen((char *)string));
-}
-
-/*!
- * functions creating notification packet
- */
-EXPORT_API notification_error_e notification_ipc_make_noti_from_packet(notification_h noti, const struct packet *packet)
-{
- int ret = 0;
- int type;
- int layout;
- int group_id;
- int internal_group_id;
- int priv_id;
- char *caller_pkgname = NULL;
- char *launch_pkgname = NULL;
- unsigned char *args = NULL;
- unsigned char *group_args = NULL;
- unsigned char *b_execute_option = NULL;
- unsigned char *b_service_responding = NULL;
- unsigned char *b_service_single_launch = NULL;
- unsigned char *b_service_multi_launch = NULL;
- char *domain = NULL;
- char *dir = NULL;
- unsigned char *b_text = NULL;
- unsigned char *b_key = NULL;
- unsigned char *b_format_args = NULL;
- int num_format_args;
- unsigned char *b_image_path = NULL;
- int sound_type;
- char *sound_path = NULL;
- int vibration_type;
- char *vibration_path = NULL;
- int led_operation;
- int led_argb;
- int led_on_ms;
- int led_off_ms;
- time_t time;
- time_t insert_time;
- int flags_for_property;
- int display_applist;
- double progress_size;
- double progress_percentage;
- char *app_icon_path = NULL;
- char *app_name = NULL;
- char *temp_title = NULL;
- char *temp_content = NULL;
-
- if (noti == NULL) {
- NOTIFICATION_ERR("invalid data");
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- ret = packet_get(packet,
- "iiiiisssssssssssssisisisiiiiiiiiddssss",
- &type,
- &layout,
- &group_id,
- &internal_group_id,
- &priv_id,
- &caller_pkgname,
- &launch_pkgname,
- &args,
- &group_args,
- &b_execute_option,
- &b_service_responding,
- &b_service_single_launch,
- &b_service_multi_launch,
- &domain,
- &dir,
- &b_text,
- &b_key,
- &b_format_args,
- &num_format_args,
- &b_image_path,
- &sound_type,
- &sound_path,
- &vibration_type,
- &vibration_path,
- &led_operation,
- &led_argb,
- &led_on_ms,
- &led_off_ms,
- &time,
- &insert_time,
- &flags_for_property,
- &display_applist,
- &progress_size,
- &progress_percentage,
- &app_icon_path,
- &app_name,
- &temp_title,
- &temp_content);
-
- if (ret != 38) {
- NOTIFICATION_ERR("failed to create a noti from packet");
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /*!
- * This is already allocated from the notification_create function.
- * Before reallocate string to here.
- * We have to release old one first.
- */
- free(noti->caller_pkgname);
- noti->caller_pkgname = _dup_string(caller_pkgname);
- noti->launch_pkgname = _dup_string(launch_pkgname);
- noti->args = _create_bundle_from_string(args);
- noti->group_args = _create_bundle_from_string(group_args);
- noti->b_execute_option = _create_bundle_from_string(b_execute_option);
- noti->b_service_responding = _create_bundle_from_string(b_service_responding);
- noti->b_service_single_launch = _create_bundle_from_string(b_service_single_launch);
- noti->b_service_multi_launch = _create_bundle_from_string(b_service_multi_launch);
- noti->domain = _dup_string(domain);
- noti->dir = _dup_string(dir);
- noti->b_text = _create_bundle_from_string(b_text);
- noti->b_key = _create_bundle_from_string(b_key);
- noti->b_format_args = _create_bundle_from_string(b_format_args);
- noti->b_image_path = _create_bundle_from_string(b_image_path);
- noti->sound_path = _dup_string(sound_path);
- noti->vibration_path = _dup_string(vibration_path);
- noti->app_icon_path = _dup_string(app_icon_path);
- noti->app_name = _dup_string(app_name);
- noti->temp_title = _dup_string(temp_title);
- noti->temp_content = _dup_string(temp_content);
-
- noti->type = type;
- noti->layout = layout;
- noti->group_id = group_id;
- noti->internal_group_id = internal_group_id;
- noti->priv_id = priv_id;
- noti->num_format_args = num_format_args;
- noti->sound_type = sound_type;
- noti->vibration_type = vibration_type;
- noti->led_operation = led_operation;
- noti->led_argb = led_argb;
- noti->led_on_ms = led_on_ms;
- noti->led_off_ms = led_off_ms;
- noti->time = time;
- noti->insert_time = insert_time;
- noti->flags_for_property = flags_for_property;
- noti->display_applist = display_applist;
- noti->progress_size = progress_size;
- noti->progress_percentage = progress_percentage;
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API struct packet *notification_ipc_make_packet_from_noti(notification_h noti, const char *command, int packet_type)
-{
- struct packet *result = NULL;
- char *args = NULL;
- char *group_args = NULL;
- char *b_image_path = NULL;
- char *b_execute_option = NULL;
- char *b_service_responding = NULL;
- char *b_service_single_launch = NULL;
- char *b_service_multi_launch = NULL;
- char *b_text = NULL;
- char *b_key = NULL;
- char *b_format_args = NULL;
- int flag_simmode = 0;
- struct packet *(*func_to_create_packet)(const char *command, const char *fmt, ...);
- const char *title_key = NULL;
- char buf_key[32] = { 0, };
-
- /* Decode bundle to insert DB */
- if (noti->args) {
- bundle_encode(noti->args, (bundle_raw **) & args, NULL);
- }
- if (noti->group_args) {
- bundle_encode(noti->group_args, (bundle_raw **) & group_args,
- NULL);
- }
-
- if (noti->b_execute_option) {
- bundle_encode(noti->b_execute_option,
- (bundle_raw **) & b_execute_option, NULL);
- }
- if (noti->b_service_responding) {
- bundle_encode(noti->b_service_responding,
- (bundle_raw **) & b_service_responding, NULL);
- }
- if (noti->b_service_single_launch) {
- bundle_encode(noti->b_service_single_launch,
- (bundle_raw **) & b_service_single_launch, NULL);
- }
- if (noti->b_service_multi_launch) {
- bundle_encode(noti->b_service_multi_launch,
- (bundle_raw **) & b_service_multi_launch, NULL);
- }
-
- if (noti->b_text) {
- bundle_encode(noti->b_text, (bundle_raw **) & b_text, NULL);
- }
- if (noti->b_key) {
- bundle_encode(noti->b_key, (bundle_raw **) & b_key, NULL);
- }
- if (noti->b_format_args) {
- bundle_encode(noti->b_format_args,
- (bundle_raw **) & b_format_args, NULL);
- }
-
- if (noti->b_image_path) {
- bundle_encode(noti->b_image_path,
- (bundle_raw **) & b_image_path, NULL);
- }
-
- /* Check only simmode property is enable */
- if (noti->flags_for_property & NOTIFICATION_PROP_DISPLAY_ONLY_SIMMODE) {
- flag_simmode = 1;
- }
-
- if (noti->b_key != NULL) {
- snprintf(buf_key, sizeof(buf_key), "%d",
- NOTIFICATION_TEXT_TYPE_TITLE);
-
- title_key = bundle_get_val(noti->b_key, buf_key);
- }
-
- if (title_key == NULL && noti->b_text != NULL) {
- snprintf(buf_key, sizeof(buf_key), "%d",
- NOTIFICATION_TEXT_TYPE_TITLE);
-
- title_key = bundle_get_val(noti->b_text, buf_key);
- }
-
- if (title_key == NULL) {
- title_key = noti->caller_pkgname;
- }
-
- if (packet_type == 1)
- func_to_create_packet = packet_create;
- else if (packet_type == 2)
- func_to_create_packet = packet_create_noack;
- else {
- goto out;
- }
-
- result = func_to_create_packet(command,
- "iiiiisssssssssssssisisisiiiiiiiiddssss",
- noti->type,
- noti->layout,
- noti->group_id,
- noti->internal_group_id,
- noti->priv_id,
- NOTIFICATION_CHECK_STR(noti->caller_pkgname),
- NOTIFICATION_CHECK_STR(noti->launch_pkgname),
- NOTIFICATION_CHECK_STR(args),
- NOTIFICATION_CHECK_STR(group_args),
- NOTIFICATION_CHECK_STR(b_execute_option),
- NOTIFICATION_CHECK_STR(b_service_responding),
- NOTIFICATION_CHECK_STR(b_service_single_launch),
- NOTIFICATION_CHECK_STR(b_service_multi_launch),
- NOTIFICATION_CHECK_STR(noti->domain),
- NOTIFICATION_CHECK_STR(noti->dir),
- NOTIFICATION_CHECK_STR(b_text),
- NOTIFICATION_CHECK_STR(b_key),
- NOTIFICATION_CHECK_STR(b_format_args),
- noti->num_format_args,
- NOTIFICATION_CHECK_STR(b_image_path),
- noti->sound_type,
- NOTIFICATION_CHECK_STR(noti->sound_path),
- noti->vibration_type,
- NOTIFICATION_CHECK_STR(noti->vibration_path),
- noti->led_operation,
- noti->led_argb,
- noti->led_on_ms,
- noti->led_off_ms,
- noti->time,
- noti->insert_time,
- noti->flags_for_property,
- noti->display_applist,
- noti->progress_size,
- noti->progress_percentage,
- NOTIFICATION_CHECK_STR(noti->app_icon_path),
- NOTIFICATION_CHECK_STR(noti->app_name),
- NOTIFICATION_CHECK_STR(noti->temp_title),
- NOTIFICATION_CHECK_STR(noti->temp_content));
-
-out:
- /* Free decoded data */
- if (args) {
- free(args);
- }
- if (group_args) {
- free(group_args);
- }
-
- if (b_execute_option) {
- free(b_execute_option);
- }
- if (b_service_responding) {
- free(b_service_responding);
- }
- if (b_service_single_launch) {
- free(b_service_single_launch);
- }
- if (b_service_multi_launch) {
- free(b_service_multi_launch);
- }
-
- if (b_text) {
- free(b_text);
- }
- if (b_key) {
- free(b_key);
- }
- if (b_format_args) {
- free(b_format_args);
- }
-
- if (b_image_path) {
- free(b_image_path);
- }
-
- return result;
-}
-
-/*!
- * functions to handler services
- */
-static struct packet *_handler_insert(pid_t pid, int handle, const struct packet *packet)
-{
- notification_h noti = NULL;
-
- if (!packet) {
- NOTIFICATION_ERR("a packet is null");
- return NULL;
- }
- noti = notification_create(NOTIFICATION_TYPE_NOTI);
- if (!noti) {
- NOTIFICATION_ERR("failed to create a notification");
- return NULL;
- }
- notification_ipc_make_noti_from_packet(noti, packet);
-
- if (noti->flags_for_property
- & NOTIFICATION_PROP_DISABLE_UPDATE_ON_INSERT) {
- /* Disable changed cb */
- } else {
- /* Enable changed cb */
- notification_op *noti_op = notification_ipc_create_op(NOTIFICATION_OP_INSERT, 1, &(noti->priv_id), 1, ¬i);
- if (noti_op != NULL) {
- notification_call_changed_cb(noti_op, 1);
- free(noti_op);
- }
- }
- notification_free(noti);
-
- return NULL;
-}
-
-static struct packet *_handler_update(pid_t pid, int handle, const struct packet *packet)
-{
- notification_h noti = NULL;
-
- if (!packet) {
- NOTIFICATION_ERR("a packet is null");
- return NULL;
- }
-
- noti = notification_create(NOTIFICATION_TYPE_NOTI);
- if (!noti) {
- NOTIFICATION_ERR("failed to create a notification");
- return NULL;
- }
-
- notification_ipc_make_noti_from_packet(noti, packet);
-
- notification_op *noti_op = notification_ipc_create_op(NOTIFICATION_OP_UPDATE, 1, &(noti->priv_id), 1, ¬i);
- if (noti_op != NULL) {
- notification_call_changed_cb(noti_op, 1);
- free(noti_op);
- }
-
- notification_free(noti);
-
- return NULL;
-}
-
-static struct packet *_handler_refresh(pid_t pid, int handle, const struct packet *packet)
-{
- if (!packet) {
- NOTIFICATION_ERR("a packet is null");
- return NULL;
- }
- notification_op *noti_op = notification_ipc_create_op(NOTIFICATION_OP_REFRESH, 1, NULL, 0, NULL);
- if (noti_op != NULL) {
- notification_call_changed_cb(noti_op, 1);
- free(noti_op);
- }
-
- return NULL;
-}
-
-static struct packet *_handler_delete_single(pid_t pid, int handle, const struct packet *packet)
-{
- int num_deleted = 0;
- int priv_id = NOTIFICATION_PRIV_ID_NONE;
-
- if (!packet) {
- NOTIFICATION_ERR("a packet is null");
- return NULL;
- }
- if (packet_get(packet, "ii", &num_deleted, &priv_id) == 2) {
- notification_op *noti_op = notification_ipc_create_op(NOTIFICATION_OP_DELETE, 1, &priv_id, 1, NULL);
- if (noti_op != NULL) {
- notification_call_changed_cb(noti_op, 1);
- free(noti_op);
- }
- }
-
- return NULL;
-}
-
-static struct packet *_handler_delete_multiple(pid_t pid, int handle, const struct packet *packet)
-{
- int ret = 0;
- int buf[10] = {0,};
- int num_deleted = 0;
-
- NOTIFICATION_ERR("delete_noti_multiple");
-
- if (!packet) {
- NOTIFICATION_ERR("a packet is null");
- return NULL;
- }
- ret = packet_get(packet, "iiiiiiiiiii", &num_deleted,
- &(buf[0]),
- &(buf[1]),
- &(buf[2]),
- &(buf[3]),
- &(buf[4]),
- &(buf[5]),
- &(buf[6]),
- &(buf[7]),
- &(buf[8]),
- &(buf[9]));
-
- NOTIFICATION_ERR("packet data count:%d", ret);
- NOTIFICATION_ERR("packet data num deleted:%d", num_deleted);
-
- int i = 0;
- for (i = 0 ; i < 10 ; i++) {
- NOTIFICATION_ERR("packet data[%d]:%d",i, buf[i]);
- }
-
- if (ret == 11) {
- notification_op *noti_op = notification_ipc_create_op(
- NOTIFICATION_OP_DELETE, num_deleted, buf, num_deleted, NULL);
- if (noti_op != NULL) {
- notification_call_changed_cb(noti_op, num_deleted);
- free(noti_op);
- }
- }
-
- return NULL;
-}
-
-static int _handler_service_register(pid_t pid, int handle, const struct packet *packet, void *data)
-{
- int ret;
-
- if (!packet) {
- NOTIFICATION_ERR("Packet is not valid\n");
- ret = NOTIFICATION_ERROR_INVALID_PARAMETER;
- } else if (packet_get(packet, "i", &ret) != 1) {
- NOTIFICATION_ERR("Packet is not valid\n");
- ret = NOTIFICATION_ERROR_INVALID_PARAMETER;
- } else {
- if (ret == 0) {
- notification_op *noti_op = notification_ipc_create_op(NOTIFICATION_OP_SERVICE_READY, 1, NULL, 1, NULL);
- if (noti_op != NULL) {
- notification_call_changed_cb(noti_op, 1);
- free(noti_op);
- }
- }
- }
- return ret;
-}
-
-notification_error_e notification_ipc_monitor_init(void)
-{
- int ret;
- struct packet *packet;
- static struct method service_table[] = {
- {
- .cmd = "add_noti",
- .handler = _handler_insert,
- },
- {
- .cmd = "update_noti",
- .handler = _handler_update,
- },
- {
- .cmd = "refresh_noti",
- .handler = _handler_refresh,
- },
- {
- .cmd = "del_noti_single",
- .handler = _handler_delete_single,
- },
- {
- .cmd = "del_noti_multiple",
- .handler = _handler_delete_multiple,
- },
- {
- .cmd = NULL,
- .handler = NULL,
- },
- };
-
- if (s_info.initialized == 1) {
- return NOTIFICATION_ERROR_NONE;
- } else {
- s_info.initialized = 1;
- }
-
- NOTIFICATION_ERR("register a service\n");
-
- com_core_packet_use_thread(1);
- s_info.server_fd = com_core_packet_client_init(s_info.socket_file, 0, service_table);
- if (s_info.server_fd < 0) {
- NOTIFICATION_ERR("Failed to make a connection to the master\n");
- return NOTIFICATION_ERROR_IO_ERROR;
- }
-
- packet = packet_create("service_register", "");
- if (!packet) {
- NOTIFICATION_ERR("Failed to build a packet\n");
- com_core_packet_client_fini(s_info.server_fd);
- return NOTIFICATION_ERROR_IO_ERROR;
- }
-
- ret = com_core_packet_async_send(s_info.server_fd, packet, 1.0, _handler_service_register, NULL);
- NOTIFICATION_DBG("Service register sent: %d\n", ret);
- packet_destroy(packet);
- if (ret != 0) {
- com_core_packet_client_fini(s_info.server_fd);
- s_info.server_fd = NOTIFICATION_ERROR_INVALID_PARAMETER;
- ret = NOTIFICATION_ERROR_IO_ERROR;
- } else {
- ret = NOTIFICATION_ERROR_NONE;
- }
-
- NOTIFICATION_DBG("Server FD: %d\n", s_info.server_fd);
- return ret;
-}
-
-notification_error_e notification_ipc_monitor_fini(void)
-{
- if (s_info.initialized == 0) {
- return NOTIFICATION_ERROR_NONE;
- }
-
- com_core_packet_client_fini(s_info.server_fd);
- s_info.server_fd = NOTIFICATION_ERROR_INVALID_PARAMETER;
-
- s_info.initialized = 0;
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-/*!
- * functions to request the service
- */
-notification_error_e notification_ipc_request_insert(notification_h noti, int *priv_id)
-{
- int status = 0;
- int id = NOTIFICATION_PRIV_ID_NONE;
- struct packet *packet;
- struct packet *result;
-
- /* Initialize private ID */
- noti->priv_id = NOTIFICATION_PRIV_ID_NONE;
- noti->group_id = NOTIFICATION_GROUP_ID_NONE;
- noti->internal_group_id = NOTIFICATION_GROUP_ID_NONE;
-
- packet = notification_ipc_make_packet_from_noti(noti, "add_noti", 1);
- result = com_core_packet_oneshot_send(NOTIFICATION_ADDR,
- packet,
- NOTIFICATION_IPC_TIMEOUT);
- packet_destroy(packet);
-
- if (result != NULL) {
- if (packet_get(result, "ii", &status, &id) != 2) {
- NOTIFICATION_ERR("Failed to get a result packet");
- packet_unref(result);
- return NOTIFICATION_ERROR_IO_ERROR;
- }
-
- if (status != NOTIFICATION_ERROR_NONE) {
- packet_unref(result);
- return status;
- }
- packet_unref(result);
- } else {
- NOTIFICATION_ERR("failed to receive answer(insert)");
- return NOTIFICATION_ERROR_SERVICE_NOT_READY;
- }
-
- if (priv_id != NULL) {
- *priv_id = id;
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-notification_error_e notification_ipc_request_delete_single(notification_type_e type, char *pkgname, int priv_id)
-{
- int status = 0;
- int id = NOTIFICATION_PRIV_ID_NONE;
- struct packet *packet;
- struct packet *result;
-
- packet = packet_create("del_noti_single", "si", pkgname, priv_id);
- result = com_core_packet_oneshot_send(NOTIFICATION_ADDR,
- packet,
- NOTIFICATION_IPC_TIMEOUT);
- packet_destroy(packet);
-
- if (result != NULL) {
- if (packet_get(result, "ii", &status, &id) != 2) {
- NOTIFICATION_ERR("Failed to get a result packet");
- packet_unref(result);
- return NOTIFICATION_ERROR_IO_ERROR;
- }
- packet_unref(result);
- } else {
- NOTIFICATION_ERR("failed to receive answer(delete)");
- return NOTIFICATION_ERROR_SERVICE_NOT_READY;
- }
-
- return status;
-}
-
-notification_error_e notification_ipc_request_delete_multiple(notification_type_e type, char *pkgname)
-{
- int status = 0;
- int num_deleted = 0;
- struct packet *packet;
- struct packet *result;
-
- packet = packet_create("del_noti_multiple", "si", pkgname, type);
- result = com_core_packet_oneshot_send(NOTIFICATION_ADDR,
- packet,
- NOTIFICATION_IPC_TIMEOUT);
- packet_destroy(packet);
-
- if (result != NULL) {
- if (packet_get(result, "ii", &status, &num_deleted) != 2) {
- NOTIFICATION_ERR("Failed to get a result packet");
- packet_unref(result);
- return NOTIFICATION_ERROR_IO_ERROR;
- }
- 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;
- }
-
- return status;
-}
-
-notification_error_e notification_ipc_request_update(notification_h noti)
-{
- int status = 0;
- int id = NOTIFICATION_PRIV_ID_NONE;
- struct packet *packet;
- struct packet *result;
-
- packet = notification_ipc_make_packet_from_noti(noti, "update_noti", 1);
- result = com_core_packet_oneshot_send(NOTIFICATION_ADDR,
- packet,
- NOTIFICATION_IPC_TIMEOUT);
- packet_destroy(packet);
-
- if (result != NULL) {
- if (packet_get(result, "ii", &status, &id) != 2) {
- NOTIFICATION_ERR("Failed to get a result packet");
- packet_unref(result);
- return NOTIFICATION_ERROR_IO_ERROR;
- }
- packet_unref(result);
- } else {
- NOTIFICATION_ERR("failed to receive answer(update)");
- return NOTIFICATION_ERROR_SERVICE_NOT_READY;
- }
-
- return status;
-}
-
-static int _notification_ipc_update_cb(pid_t pid, int handle, const struct packet *packet, void *data)
-{
- int status = 0;
- int id = NOTIFICATION_PRIV_ID_NONE;
- result_cb_item *cb_item = (result_cb_item *)data;
-
- if (cb_item == NULL) {
- NOTIFICATION_ERR("Failed to get a callback item");
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
- s_info.server_cl_fd_ref_cnt = (s_info.server_cl_fd_ref_cnt <= 1) ? 0 : s_info.server_cl_fd_ref_cnt - 1;
- if (s_info.server_cl_fd_ref_cnt <= 0) {
- NOTIFICATION_DBG("REFCNT: %d (fd: %d)", s_info.server_cl_fd_ref_cnt, s_info.server_cl_fd);
- int fd_temp = s_info.server_cl_fd;
- s_info.server_cl_fd = -1;
- com_core_packet_client_fini(fd_temp);
- NOTIFICATION_DBG("FD(%d) finalized", fd_temp);
- }
-
- if (packet != NULL) {
- if (packet_get(packet, "ii", &status, &id) != 2) {
- NOTIFICATION_ERR("Failed to get a result packet");
- status = NOTIFICATION_ERROR_IO_ERROR;
- }
- }
-
- if (cb_item->result_cb != NULL) {
- cb_item->result_cb(id, status, cb_item->data);
- }
- free(cb_item);
-
- return status;
-}
-
-notification_error_e notification_ipc_request_update_async(notification_h noti,
- void (*result_cb)(int priv_id, int result, void *data), void *user_data)
-{
- int ret = NOTIFICATION_ERROR_NONE;
- int ret_con = 0;
- struct packet *packet = NULL;
- result_cb_item *cb_item = NULL;
-
- packet = notification_ipc_make_packet_from_noti(noti, "update_noti", 1);
- if (packet == NULL) {
- ret = NOTIFICATION_ERROR_INVALID_PARAMETER;
- goto fail;
- }
-
- cb_item = calloc(1, sizeof(result_cb_item));
- if (cb_item == NULL) {
- ret = NOTIFICATION_ERROR_OUT_OF_MEMORY;
- goto fail;
- }
-
- if (s_info.server_cl_fd < 0) {
- com_core_packet_use_thread(1);
- s_info.server_cl_fd = com_core_packet_client_init(s_info.socket_file, 0, NULL);
- if (s_info.server_cl_fd < 0) {
- NOTIFICATION_DBG("Failed to init client: %d", s_info.server_cl_fd);
- ret = NOTIFICATION_ERROR_SERVICE_NOT_READY;
- goto fail;
- }
- s_info.server_cl_fd_ref_cnt = 1;
- } else {
- s_info.server_cl_fd_ref_cnt++;
- }
-
- cb_item->result_cb = result_cb;
- cb_item->data = user_data;
-
- NOTIFICATION_INFO("Connection count:%d, fd:%d", s_info.server_cl_fd_ref_cnt, s_info.server_cl_fd);
-
- ret_con = com_core_packet_async_send(s_info.server_cl_fd, packet, 0.0f,
- _notification_ipc_update_cb, cb_item);
- if (ret_con < 0) {
- NOTIFICATION_ERR("Failed to request update, %d\n", ret_con);
- s_info.server_cl_fd_ref_cnt = (s_info.server_cl_fd_ref_cnt <= 1) ? 0 : s_info.server_cl_fd_ref_cnt - 1;
- if (s_info.server_cl_fd_ref_cnt <= 0) {
- int fd_temp = s_info.server_cl_fd;
- s_info.server_cl_fd = -1;
- com_core_packet_client_fini(fd_temp);
- NOTIFICATION_INFO("FD(%d) finalized", fd_temp);
- }
- ret = NOTIFICATION_ERROR_IO_ERROR;
- goto fail;
- } else {
- ret = NOTIFICATION_ERROR_NONE;
- goto success;
- }
-
-fail:
- if (cb_item) free(cb_item);
- NOTIFICATION_ERR("Err: %d\n", ret);
-
-success:
- if (packet) packet_destroy(packet);
-
- return ret;
-}
-
-notification_error_e notification_ipc_request_refresh(void)
-{
- int status = 0;
- struct packet *packet;
- struct packet *result;
-
- packet = packet_create("refresh_noti", "i", NOTIFICATION_OP_REFRESH);
- result = com_core_packet_oneshot_send(NOTIFICATION_ADDR,
- packet,
- NOTIFICATION_IPC_TIMEOUT);
- packet_destroy(packet);
-
- if (result != NULL) {
- if (packet_get(result, "i", &status) != 1) {
- NOTIFICATION_ERR("Failed to get a result packet");
- packet_unref(result);
- return NOTIFICATION_ERROR_IO_ERROR;
- }
- packet_unref(result);
- } else {
- NOTIFICATION_ERR("failed to receive answer(refresh)");
- return NOTIFICATION_ERROR_SERVICE_NOT_READY;
- }
-
- return status;
-}
-
-notification_error_e notification_ipc_noti_setting_property_set(const char *pkgname, const char *property, const char *value)
-{
- int status = 0;
- int ret = 0;
- struct packet *packet;
- struct packet *result;
-
- packet = packet_create("set_noti_property", "sss", pkgname, property, value);
- result = com_core_packet_oneshot_send(NOTIFICATION_ADDR,
- packet,
- NOTIFICATION_IPC_TIMEOUT);
- packet_destroy(packet);
-
- if (result != NULL) {
- if (packet_get(result, "ii", &status, &ret) != 2) {
- NOTIFICATION_ERR("Failed to get a result packet");
- packet_unref(result);
- return NOTIFICATION_ERROR_IO_ERROR;
- }
- packet_unref(result);
- } else {
- NOTIFICATION_ERR("failed to receive answer(delete)");
- return NOTIFICATION_ERROR_SERVICE_NOT_READY;
- }
-
- return status;
-}
-
-notification_error_e notification_ipc_noti_setting_property_get(const char *pkgname, const char *property, char **value)
-{
- int status = 0;
- char *ret = NULL;
- struct packet *packet;
- struct packet *result;
-
- packet = packet_create("get_noti_property", "ss", pkgname, property);
- result = com_core_packet_oneshot_send(NOTIFICATION_ADDR,
- packet,
- NOTIFICATION_IPC_TIMEOUT);
- packet_destroy(packet);
-
- if (result != NULL) {
- if (packet_get(result, "is", &status, &ret) != 2) {
- NOTIFICATION_ERR("Failed to get a result packet");
- packet_unref(result);
- return NOTIFICATION_ERROR_IO_ERROR;
- }
- if (status == NOTIFICATION_ERROR_NONE && ret != NULL) {
- *value = strdup(ret);
- }
- packet_unref(result);
- } else {
- NOTIFICATION_ERR("failed to receive answer(delete)");
- return NOTIFICATION_ERROR_SERVICE_NOT_READY;
- }
-
- return status;
-}
-
-int notification_ipc_request_load_noti_by_tag(notification_h noti, const char *pkgname, const char *tag)
-{
- struct packet *packet;
- struct packet *result;
-
- packet = packet_create("load_noti_by_tag", "ss", pkgname, tag);
- result = com_core_packet_oneshot_send(NOTIFICATION_ADDR,
- packet,
- NOTIFICATION_IPC_TIMEOUT);
- packet_destroy(packet);
-
- if (result != NULL) {
- if (notification_ipc_make_noti_from_packet(noti, result) != NOTIFICATION_ERROR_NONE) {
- NOTIFICATION_ERR("Failed to get a result packet");
- packet_unref(result);
- return NOTIFICATION_ERROR_IO_ERROR;
- }
-
- packet_unref(result);
- } else {
- NOTIFICATION_ERR("failed to receive answer(load noti by tag)");
- if (notification_ipc_is_master_ready() == 1)
- return NOTIFICATION_ERROR_PERMISSION_DENIED;
- else
- return NOTIFICATION_ERROR_SERVICE_NOT_READY;
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
+++ /dev/null
-/*
- * 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.
- *
- */
-
-#include <stdlib.h>
-
-#include <notification.h>
-#include <notification_list.h>
-#include <notification_debug.h>
-#include <notification_internal.h>
-
-struct _notification_list {
- notification_list_h prev;
- notification_list_h next;
-
- notification_h noti;
-};
-
-notification_list_h _notification_list_create(void)
-{
- notification_list_h list = NULL;
-
- list = (notification_list_h) malloc(sizeof(struct _notification_list));
- if (list == NULL) {
- NOTIFICATION_ERR("NO MEMORY");
- return NULL;
- }
-
- list->prev = NULL;
- list->next = NULL;
-
- list->noti = NULL;
-
- return list;
-}
-
-EXPORT_API notification_list_h notification_list_get_head(notification_list_h list)
-{
- notification_list_h cur_list = NULL;
-
- if (list == NULL) {
- NOTIFICATION_ERR("INVALID DATA : list == NULL");
- return NULL;
- }
-
- cur_list = list;
-
- while (cur_list->prev != NULL) {
- cur_list = cur_list->prev;
- }
-
- return cur_list;
-}
-
-EXPORT_API notification_list_h notification_list_get_tail(notification_list_h list)
-{
- notification_list_h cur_list = NULL;
-
- if (list == NULL) {
- NOTIFICATION_ERR("INVALID DATA : list == NULL");
- return NULL;
- }
-
- cur_list = list;
-
- while (cur_list->next != NULL) {
- cur_list = cur_list->next;
- }
-
- return cur_list;
-}
-
-EXPORT_API notification_list_h notification_list_get_prev(notification_list_h list)
-{
- notification_list_h cur_list = NULL;
-
- if (list == NULL) {
- NOTIFICATION_ERR("INVALID DATA : list == NULL");
- return NULL;
- }
-
- cur_list = list;
-
- return cur_list->prev;
-}
-
-EXPORT_API notification_list_h notification_list_get_next(notification_list_h list)
-{
- notification_list_h cur_list = NULL;
-
- if (list == NULL) {
- NOTIFICATION_ERR("INVALID DATA : list == NULL");
- return NULL;
- }
-
- cur_list = list;
-
- return cur_list->next;
-}
-
-EXPORT_API notification_h notification_list_get_data(notification_list_h list)
-{
- notification_list_h cur_list = NULL;
-
- if (list == NULL) {
- NOTIFICATION_ERR("INVALID DATA : list == NULL");
- return NULL;
- }
-
- cur_list = list;
-
- return cur_list->noti;
-}
-
-EXPORT_API notification_list_h notification_list_append(notification_list_h list,
- notification_h noti)
-{
- notification_list_h new_list = NULL;
- notification_list_h cur_list = NULL;
-
- if (noti == NULL) {
- NOTIFICATION_ERR("INVALID DATA : data == NULL");
- return NULL;
- }
-
- if (list != NULL) {
- cur_list = notification_list_get_tail(list);
-
- new_list = _notification_list_create();
- if (new_list == NULL) {
- NOTIFICATION_ERR("NO MEMORY");
- return NULL;
- }
-
- cur_list->next = new_list;
- new_list->prev = cur_list;
-
- new_list->noti = noti;
- } else {
- cur_list = _notification_list_create();
- if (cur_list == NULL) {
- NOTIFICATION_ERR("NO MEMORY");
- return NULL;
- }
-
- new_list = cur_list;
- new_list->noti = noti;
- }
-
- return new_list;
-}
-
-EXPORT_API notification_list_h notification_list_remove(notification_list_h list,
- notification_h noti)
-{
- notification_list_h cur_list = NULL;
- notification_list_h prev_list = NULL;
- notification_list_h next_list = NULL;
-
- cur_list = notification_list_get_head(list);
- while (cur_list != NULL) {
- if (cur_list->noti == noti) {
- //remove
- prev_list = cur_list->prev;
- next_list = cur_list->next;
-
- if (next_list != NULL) {
- if (prev_list != NULL) {
- prev_list->next = next_list;
- next_list->prev = prev_list;
- } else {
- next_list->prev = NULL;
- }
- } else {
- if (prev_list != NULL) {
- prev_list->next = NULL;
- }
- }
-
- free(cur_list);
- break;
- }
-
- cur_list = cur_list->next;
- }
-
- if (prev_list != NULL) {
- return notification_list_get_head(prev_list);
- } else if (next_list != NULL) {
- return next_list;
- }
-
- return NULL;
-}
+++ /dev/null
-/*
- * 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.
- *
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include <vconf.h>
-
-#include <notification.h>
-#include <notification_db.h>
-#include <notification_noti.h>
-#include <notification_debug.h>
-#include <notification_internal.h>
-
-#define NOTI_BURST_DELETE_UNIT 10
-
-static void __free_and_set(void **target_ptr, void *new_ptr) {
- if (target_ptr != NULL) {
- if (*target_ptr != NULL) {
- free(*target_ptr);
- }
- *target_ptr = new_ptr;
- }
-}
-
-static int _notification_noti_bind_query_text(sqlite3_stmt * stmt, const char *name,
- const char *str)
-{
- int ret = 0;
- int index = 0;
-
- index = sqlite3_bind_parameter_index(stmt, name);
- if (index == 0) {
- NOTIFICATION_ERR("Insert : invalid column name");
- return NOTIFICATION_ERROR_FROM_DB;
- }
-
- ret =
- sqlite3_bind_text(stmt, index, NOTIFICATION_CHECK_STR(str), -1,
- SQLITE_STATIC);
- if (ret != SQLITE_OK) {
- NOTIFICATION_ERR("Insert text : %s",
- NOTIFICATION_CHECK_STR(str));
- return NOTIFICATION_ERROR_FROM_DB;
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-static int _notification_noti_bind_query_double(sqlite3_stmt * stmt, const char *name,
- double val)
-{
- int ret = 0;
- int index = 0;
-
- index = sqlite3_bind_parameter_index(stmt, name);
- if (index == 0) {
- NOTIFICATION_ERR("Insert : invalid column name");
- return NOTIFICATION_ERROR_FROM_DB;
- }
-
- ret = sqlite3_bind_double(stmt, index, val);
- if (ret != SQLITE_OK) {
- NOTIFICATION_ERR("Insert double : %f", val);
- return NOTIFICATION_ERROR_FROM_DB;
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-static int _notification_noti_check_priv_id(notification_h noti, sqlite3 * db)
-{
- sqlite3_stmt *stmt = NULL;
- char query[NOTIFICATION_QUERY_MAX] = { 0, };
- int ret = NOTIFICATION_ERROR_NONE, result = 0;
-
- /* Make query to check priv_id exist */
- snprintf(query, sizeof(query),
- "select count(*) from noti_list where caller_pkgname = '%s' and priv_id = %d",
- noti->caller_pkgname, noti->priv_id);
-
- ret = sqlite3_prepare(db, query, strlen(query), &stmt, NULL);
- if (ret != SQLITE_OK) {
- NOTIFICATION_ERR("Get count DB err(%d) : %s", ret,
- sqlite3_errmsg(db));
- return NOTIFICATION_ERROR_FROM_DB;
- }
-
- ret = sqlite3_step(stmt);
- if (ret == SQLITE_ROW) {
- result = sqlite3_column_int(stmt, 0);
- } else {
- result = 0;
- }
-
- sqlite3_finalize(stmt);
-
- /* If result > 0, there is priv_id in DB */
- if (result > 0) {
- return NOTIFICATION_ERROR_ALREADY_EXIST_ID;
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-static int _notification_noti_get_internal_group_id_by_priv_id(const char *pkgname,
- int priv_id,
- sqlite3 * db)
-{
- sqlite3_stmt *stmt = NULL;
- char query[NOTIFICATION_QUERY_MAX] = { 0, };
- int ret = NOTIFICATION_ERROR_NONE, result = 0;
-
- snprintf(query, sizeof(query),
- "select internal_group_id from noti_list where caller_pkgname = '%s' and priv_id = %d",
- pkgname, priv_id);
-
- ret = sqlite3_prepare(db, query, strlen(query), &stmt, NULL);
- if (ret != SQLITE_OK) {
- NOTIFICATION_ERR("Get count DB err(%d) : %s", ret,
- sqlite3_errmsg(db));
- return NOTIFICATION_ERROR_FROM_DB;
- }
-
- ret = sqlite3_step(stmt);
- if (ret == SQLITE_ROW) {
- result = sqlite3_column_int(stmt, 0);
- } else {
- result = 0;
- }
-
- sqlite3_finalize(stmt);
-
- return result;
-}
-
-static int _notification_noti_make_query(notification_h noti, char *query,
- int query_size)
-{
- char *args = NULL;
- char *group_args = NULL;
- char *b_image_path = NULL;
- char *b_execute_option = NULL;
- char *b_service_responding = NULL;
- char *b_service_single_launch = NULL;
- char *b_service_multi_launch = NULL;
- char *b_text = NULL;
- char *b_key = NULL;
- char *b_format_args = NULL;
- int flag_simmode = 0;
-
- /* Decode bundle to insert DB */
- if (noti->args) {
- bundle_encode(noti->args, (bundle_raw **) & args, NULL);
- }
- if (noti->group_args) {
- bundle_encode(noti->group_args, (bundle_raw **) & group_args,
- NULL);
- }
-
- if (noti->b_execute_option) {
- bundle_encode(noti->b_execute_option,
- (bundle_raw **) & b_execute_option, NULL);
- }
- if (noti->b_service_responding) {
- bundle_encode(noti->b_service_responding,
- (bundle_raw **) & b_service_responding, NULL);
- }
- if (noti->b_service_single_launch) {
- bundle_encode(noti->b_service_single_launch,
- (bundle_raw **) & b_service_single_launch, NULL);
- }
- if (noti->b_service_multi_launch) {
- bundle_encode(noti->b_service_multi_launch,
- (bundle_raw **) & b_service_multi_launch, NULL);
- }
-
- if (noti->b_text) {
- bundle_encode(noti->b_text, (bundle_raw **) & b_text, NULL);
- }
- if (noti->b_key) {
- bundle_encode(noti->b_key, (bundle_raw **) & b_key, NULL);
- }
- if (noti->b_format_args) {
- bundle_encode(noti->b_format_args,
- (bundle_raw **) & b_format_args, NULL);
- }
-
- if (noti->b_image_path) {
- bundle_encode(noti->b_image_path,
- (bundle_raw **) & b_image_path, NULL);
- }
-
- /* Check only simmode property is enable */
- if (noti->flags_for_property & NOTIFICATION_PROP_DISPLAY_ONLY_SIMMODE) {
- flag_simmode = 1;
- }
-
- /* Make query */
- snprintf(query, query_size, "insert into noti_list ("
- "type, "
- "layout, "
- "caller_pkgname, launch_pkgname, "
- "image_path, "
- "group_id, internal_group_id, priv_id, "
- "title_key, "
- "b_text, b_key, b_format_args, num_format_args, "
- "text_domain, text_dir, "
- "time, insert_time, "
- "args, group_args, "
- "b_execute_option, "
- "b_service_responding, b_service_single_launch, b_service_multi_launch, "
- "sound_type, sound_path, vibration_type, vibration_path, led_operation, led_argb, led_on_ms, led_off_ms, "
- "flags_for_property, flag_simmode, display_applist, "
- "progress_size, progress_percentage) values ("
- "%d, "
- "%d, "
- "'%s', '%s', "
- "'%s', "
- "%d, %d, %d, "
- "$title_key, "
- "'%s', '%s', '%s', %d, "
- "'%s', '%s', "
- "%d, %d, "
- "'%s', '%s', "
- "'%s', "
- "'%s', '%s', '%s', "
- "%d, '%s', %d, '%s', %d, %d, %d, %d,"
- "%d, %d, %d, "
- "$progress_size, $progress_percentage)",
- noti->type,
- noti->layout,
- NOTIFICATION_CHECK_STR(noti->caller_pkgname),
- NOTIFICATION_CHECK_STR(noti->launch_pkgname),
- NOTIFICATION_CHECK_STR(b_image_path), noti->group_id,
- noti->internal_group_id, noti->priv_id,
- NOTIFICATION_CHECK_STR(b_text), NOTIFICATION_CHECK_STR(b_key),
- NOTIFICATION_CHECK_STR(b_format_args), noti->num_format_args,
- NOTIFICATION_CHECK_STR(noti->domain),
- NOTIFICATION_CHECK_STR(noti->dir), (int)noti->time,
- (int)noti->insert_time, NOTIFICATION_CHECK_STR(args),
- NOTIFICATION_CHECK_STR(group_args),
- NOTIFICATION_CHECK_STR(b_execute_option),
- NOTIFICATION_CHECK_STR(b_service_responding),
- NOTIFICATION_CHECK_STR(b_service_single_launch),
- NOTIFICATION_CHECK_STR(b_service_multi_launch),
- noti->sound_type, NOTIFICATION_CHECK_STR(noti->sound_path),
- noti->vibration_type,
- NOTIFICATION_CHECK_STR(noti->vibration_path),
- noti->led_operation,
- noti->led_argb,
- noti->led_on_ms,
- noti->led_off_ms,
- noti->flags_for_property, flag_simmode, noti->display_applist);
-
- /* Free decoded data */
- if (args) {
- free(args);
- }
- if (group_args) {
- free(group_args);
- }
-
- if (b_execute_option) {
- free(b_execute_option);
- }
- if (b_service_responding) {
- free(b_service_responding);
- }
- if (b_service_single_launch) {
- free(b_service_single_launch);
- }
- if (b_service_multi_launch) {
- free(b_service_multi_launch);
- }
-
- if (b_text) {
- free(b_text);
- }
- if (b_key) {
- free(b_key);
- }
- if (b_format_args) {
- free(b_format_args);
- }
-
- if (b_image_path) {
- free(b_image_path);
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-
-static int _notification_noti_make_update_query(notification_h noti, char *query,
- int query_size)
-{
- char *args = NULL;
- char *group_args = NULL;
- char *b_image_path = NULL;
- char *b_execute_option = NULL;
- char *b_service_responding = NULL;
- char *b_service_single_launch = NULL;
- char *b_service_multi_launch = NULL;
- char *b_text = NULL;
- char *b_key = NULL;
- char *b_format_args = NULL;
- int flag_simmode = 0;
-
- /* Decode bundle to update DB */
- if (noti->args) {
- bundle_encode(noti->args, (bundle_raw **) & args, NULL);
- }
- if (noti->group_args) {
- bundle_encode(noti->group_args, (bundle_raw **) & group_args,
- NULL);
- }
-
- if (noti->b_execute_option) {
- bundle_encode(noti->b_execute_option,
- (bundle_raw **) & b_execute_option, NULL);
- }
- if (noti->b_service_responding) {
- bundle_encode(noti->b_service_responding,
- (bundle_raw **) & b_service_responding, NULL);
- }
- if (noti->b_service_single_launch) {
- bundle_encode(noti->b_service_single_launch,
- (bundle_raw **) & b_service_single_launch, NULL);
- }
- if (noti->b_service_multi_launch) {
- bundle_encode(noti->b_service_multi_launch,
- (bundle_raw **) & b_service_multi_launch, NULL);
- }
-
- if (noti->b_text) {
- bundle_encode(noti->b_text, (bundle_raw **) & b_text, NULL);
- }
- if (noti->b_key) {
- bundle_encode(noti->b_key, (bundle_raw **) & b_key, NULL);
- }
- if (noti->b_format_args) {
- bundle_encode(noti->b_format_args,
- (bundle_raw **) & b_format_args, NULL);
- }
-
- if (noti->b_image_path) {
- bundle_encode(noti->b_image_path,
- (bundle_raw **) & b_image_path, NULL);
- }
-
- /* Check only simmode property is enable */
- if (noti->flags_for_property & NOTIFICATION_PROP_DISPLAY_ONLY_SIMMODE) {
- flag_simmode = 1;
- }
-
- /* Make query */
- snprintf(query, query_size, "update noti_list set "
- "type = %d, "
- "layout = %d, "
- "launch_pkgname = '%s', "
- "image_path = '%s', "
- "b_text = '%s', b_key = '%s', "
- "b_format_args = '%s', num_format_args = %d, "
- "text_domain = '%s', text_dir = '%s', "
- "time = %d, insert_time = %d, "
- "args = '%s', group_args = '%s', "
- "b_execute_option = '%s', "
- "b_service_responding = '%s', "
- "b_service_single_launch = '%s', "
- "b_service_multi_launch = '%s', "
- "sound_type = %d, sound_path = '%s', "
- "vibration_type = %d, vibration_path = '%s', "
- "led_operation = %d, led_argb = %d, "
- "led_on_ms = %d, led_off_ms = %d, "
- "flags_for_property = %d, flag_simmode = %d, "
- "display_applist = %d, "
- "progress_size = $progress_size, progress_percentage = $progress_percentage "
- "where priv_id = %d ",
- noti->type,
- noti->layout,
- NOTIFICATION_CHECK_STR(noti->launch_pkgname),
- NOTIFICATION_CHECK_STR(b_image_path),
- NOTIFICATION_CHECK_STR(b_text), NOTIFICATION_CHECK_STR(b_key),
- NOTIFICATION_CHECK_STR(b_format_args), noti->num_format_args,
- NOTIFICATION_CHECK_STR(noti->domain),
- NOTIFICATION_CHECK_STR(noti->dir),
- (int)noti->time, (int)noti->insert_time,
- NOTIFICATION_CHECK_STR(args), NOTIFICATION_CHECK_STR(group_args),
- NOTIFICATION_CHECK_STR(b_execute_option),
- NOTIFICATION_CHECK_STR(b_service_responding),
- NOTIFICATION_CHECK_STR(b_service_single_launch),
- NOTIFICATION_CHECK_STR(b_service_multi_launch),
- noti->sound_type, NOTIFICATION_CHECK_STR(noti->sound_path),
- noti->vibration_type,
- NOTIFICATION_CHECK_STR(noti->vibration_path),
- noti->led_operation,
- noti->led_argb,
- noti->led_on_ms,
- noti->led_off_ms,
- noti->flags_for_property, flag_simmode, noti->display_applist,
- noti->priv_id);
-
- /* Free decoded data */
- if (args) {
- free(args);
- }
- if (group_args) {
- free(group_args);
- }
-
- if (b_execute_option) {
- free(b_execute_option);
- }
- if (b_service_responding) {
- free(b_service_responding);
- }
- if (b_service_single_launch) {
- free(b_service_single_launch);
- }
- if (b_service_multi_launch) {
- free(b_service_multi_launch);
- }
-
- if (b_text) {
- free(b_text);
- }
- if (b_key) {
- free(b_key);
- }
- if (b_format_args) {
- free(b_format_args);
- }
-
- if (b_image_path) {
- free(b_image_path);
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-static void _notification_noti_populate_from_stmt(sqlite3_stmt * stmt, notification_h noti) {
- int col = 0;
-
- if (stmt == NULL || noti == NULL) {
- return ;
- }
-
- noti->type = sqlite3_column_int(stmt, col++);
- noti->layout = sqlite3_column_int(stmt, col++);
- __free_and_set((void **)&(noti->caller_pkgname), notification_db_column_text(stmt, col++));
- __free_and_set((void **)&(noti->launch_pkgname), notification_db_column_text(stmt, col++));
- noti->b_image_path = notification_db_column_bundle(stmt, col++);
- noti->group_id = sqlite3_column_int(stmt, col++);
- noti->internal_group_id = 0;
- noti->priv_id = sqlite3_column_int(stmt, col++);
-
- noti->b_text = notification_db_column_bundle(stmt, col++);
- noti->b_key = notification_db_column_bundle(stmt, col++);
- noti->b_format_args = notification_db_column_bundle(stmt, col++);
- noti->num_format_args = sqlite3_column_int(stmt, col++);
-
- __free_and_set((void **)&(noti->domain), notification_db_column_text(stmt, col++));
- __free_and_set((void **)&(noti->dir), notification_db_column_text(stmt, col++));
- noti->time = sqlite3_column_int(stmt, col++);
- noti->insert_time = sqlite3_column_int(stmt, col++);
- noti->args = notification_db_column_bundle(stmt, col++);
- noti->group_args = notification_db_column_bundle(stmt, col++);
-
- noti->b_execute_option = notification_db_column_bundle(stmt, col++);
- noti->b_service_responding = notification_db_column_bundle(stmt, col++);
- noti->b_service_single_launch =
- notification_db_column_bundle(stmt, col++);
- noti->b_service_multi_launch =
- notification_db_column_bundle(stmt, col++);
-
- noti->sound_type = sqlite3_column_int(stmt, col++);
- __free_and_set((void **)&(noti->sound_path), notification_db_column_text(stmt, col++));
- noti->vibration_type = sqlite3_column_int(stmt, col++);
- __free_and_set((void **)&(noti->vibration_path), notification_db_column_text(stmt, col++));
- noti->led_operation = sqlite3_column_int(stmt, col++);
- noti->led_argb = sqlite3_column_int(stmt, col++);
- noti->led_on_ms = sqlite3_column_int(stmt, col++);
- noti->led_off_ms = sqlite3_column_int(stmt, col++);
-
- noti->flags_for_property = sqlite3_column_int(stmt, col++);
- noti->display_applist = sqlite3_column_int(stmt, col++);
- noti->progress_size = sqlite3_column_double(stmt, col++);
- noti->progress_percentage = sqlite3_column_double(stmt, col++);
-
- noti->app_icon_path = NULL;
- noti->app_name = NULL;
- noti->temp_title = NULL;
- noti->temp_content = NULL;
-}
-
-static notification_h _notification_noti_get_item(sqlite3_stmt * stmt)
-{
- notification_h noti = NULL;
-
- noti = (notification_h) calloc(1, sizeof(struct _notification));
- if (noti == NULL) {
- return NULL;
- }
-
- _notification_noti_populate_from_stmt(stmt, noti);
-
- return noti;
-}
-
-int notification_noti_set_tag(const char *tag, char *value, char *buf, int buf_len)
-{
- int len_total = 0;
-
- len_total += (strlen(tag) * 2) + 5 + strlen(value) + 1;
-
- if (buf_len <= len_total)
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
-
- snprintf(buf, buf_len, "<%s>%s</%s>", tag, value, tag);
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-char *notification_noti_strip_tag(const char *tagged_str)
-{
- if (tagged_str == NULL)
- return NULL;
-
- int len_total = strlen(tagged_str);
-
- if (len_total == 0)
- return NULL;
-
- char *b_f_e = strstr(tagged_str, ">");
- char *b_e_s = strstr(tagged_str, "</");
-
- if (b_f_e == NULL || b_e_s == NULL || (b_e_s - b_f_e - 1) <= 0)
- return NULL;
-
- return strndup(b_f_e + 1, b_e_s - b_f_e - 1);
-}
-
-int notification_noti_get_tag_type(const char *tagged_str)
-{
- if (tagged_str == NULL)
- return TAG_TYPE_INVALID;
-
- if (strlen(tagged_str)== 0)
- return TAG_TYPE_INVALID;
-
- char *b_f_s = strstr(tagged_str, "<");
- char *b_f_e = strstr(tagged_str, ">");
-
- if (b_f_s == NULL || b_f_e == NULL || (b_f_e - b_f_s - 1) <= 0)
- return TAG_TYPE_INVALID;
-
- char *start = b_f_s + 1;
- int len_tag = b_f_e - b_f_s - 1;
-
- if (strncmp(start,TAG_TIME,len_tag) == 0) {
- return TAG_TYPE_TIME;
- }
-
- return TAG_TYPE_INVALID;
-}
-
-static int _notification_noti_update_priv_id(sqlite3 * db, int rowid)
-{
- char query[128] = { 0, };
-
- if (db == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- snprintf(query, sizeof(query), "update noti_list set "
- "priv_id = %d, internal_group_id = %d where rowid = %d",
- rowid, rowid, rowid);
-
- return notification_db_exec(db, query, NULL);
-}
-
-EXPORT_API int notification_noti_insert(notification_h noti)
-{
- sqlite3 *db = NULL;
- sqlite3_stmt *stmt = NULL;
- char query[NOTIFICATION_QUERY_MAX] = { 0, };
- int ret = 0;
- char buf_key[32] = { 0, };
- const char *title_key = NULL;
-
- /* Open DB */
- db = notification_db_open(DBPATH);
- if (!db) {
- return NOTIFICATION_ERROR_FROM_DB;
- }
-
- /* Initialize private ID */
- noti->priv_id = NOTIFICATION_PRIV_ID_NONE;
- noti->group_id = NOTIFICATION_GROUP_ID_NONE;
- noti->internal_group_id = NOTIFICATION_GROUP_ID_NONE;
-
- /* make query */
- ret = _notification_noti_make_query(noti, query, sizeof(query));
- if (ret != NOTIFICATION_ERROR_NONE) {
- goto err;
- }
-
- ret = sqlite3_prepare_v2(db, query, -1, &stmt, NULL);
- if (ret != SQLITE_OK) {
- NOTIFICATION_ERR("Insert Query : %s", query);
- NOTIFICATION_ERR("Insert DB error(%d) : %s", ret,
- sqlite3_errmsg(db));
- ret = NOTIFICATION_ERROR_FROM_DB;
- goto err;
- }
-
- /* Get title key */
- if (noti->b_key != NULL) {
- snprintf(buf_key, sizeof(buf_key), "%d",
- NOTIFICATION_TEXT_TYPE_TITLE);
-
- title_key = bundle_get_val(noti->b_key, buf_key);
- }
-
- if (title_key == NULL && noti->b_text != NULL) {
- snprintf(buf_key, sizeof(buf_key), "%d",
- NOTIFICATION_TEXT_TYPE_TITLE);
-
- title_key = bundle_get_val(noti->b_text, buf_key);
- }
-
- if (title_key == NULL) {
- title_key = noti->caller_pkgname;
- }
-
- /* Bind query */
- ret = _notification_noti_bind_query_text(stmt, "$title_key", title_key);
- if (ret != NOTIFICATION_ERROR_NONE) {
- NOTIFICATION_ERR("Bind error : %s", sqlite3_errmsg(db));
- goto err;
- }
- ret = _notification_noti_bind_query_double(stmt, "$progress_size",noti->progress_size);
- if (ret != NOTIFICATION_ERROR_NONE) {
- NOTIFICATION_ERR("Bind error : %s", sqlite3_errmsg(db));
- if (stmt) {
- sqlite3_finalize(stmt);
- }
- return ret;
- }
- ret = _notification_noti_bind_query_double(stmt, "$progress_percentage",noti->progress_percentage);
- if (ret != NOTIFICATION_ERROR_NONE) {
- NOTIFICATION_ERR("Bind error : %s", sqlite3_errmsg(db));
- if (stmt) {
- sqlite3_finalize(stmt);
- }
- return ret;
- }
-
- ret = sqlite3_step(stmt);
- if (ret == SQLITE_OK || ret == SQLITE_DONE) {
- noti->priv_id = (int)sqlite3_last_insert_rowid(db);
- if (_notification_noti_update_priv_id(db, noti->priv_id) == 0) {
- ret = NOTIFICATION_ERROR_NONE;
- } else {
- ret = NOTIFICATION_ERROR_FROM_DB;
- }
- } else {
- ret = NOTIFICATION_ERROR_FROM_DB;
- }
-err:
- if (stmt) {
- sqlite3_finalize(stmt);
- }
-
- /* Close DB */
- if (db) {
- notification_db_close(&db);
- }
-
- return ret;
-}
-
-int notification_noti_get_by_priv_id(notification_h noti, char *pkgname, int priv_id)
-{
- sqlite3 *db = NULL;
- sqlite3_stmt *stmt = NULL;
- char query[NOTIFICATION_QUERY_MAX] = { 0, };
- int ret = 0;
-
- if (priv_id < 0 || noti == NULL) {
- ret = NOTIFICATION_ERROR_INVALID_PARAMETER;
- goto err;
- }
-
- /* Open DB */
- db = notification_db_open(DBPATH);
- if (!db) {
- return NOTIFICATION_ERROR_FROM_DB;
- }
-
- char *base_query = "select "
- "type, layout, caller_pkgname, launch_pkgname, image_path, group_id, priv_id, "
- "b_text, b_key, b_format_args, num_format_args, "
- "text_domain, text_dir, time, insert_time, args, group_args, "
- "b_execute_option, b_service_responding, b_service_single_launch, b_service_multi_launch, "
- "sound_type, sound_path, vibration_type, vibration_path, led_operation, led_argb, led_on_ms, led_off_ms, "
- "flags_for_property, display_applist, progress_size, progress_percentage "
- "from noti_list ";
-
- if (pkgname != NULL) {
- snprintf(query, sizeof(query), "%s where caller_pkgname = '%s' and priv_id = %d",
- base_query ,pkgname, priv_id);
- } else {
- snprintf(query, sizeof(query), "%s where priv_id = %d", base_query, priv_id);
- }
-
- ret = sqlite3_prepare_v2(db, query, -1, &stmt, NULL);
- if (ret != SQLITE_OK) {
- NOTIFICATION_ERR("select Query : %s", query);
- NOTIFICATION_ERR("select DB error(%d) : %s", ret,
- sqlite3_errmsg(db));
- ret = NOTIFICATION_ERROR_FROM_DB;
- goto err;
- }
-
- ret = sqlite3_step(stmt);
- if (ret == SQLITE_ROW) {
- _notification_noti_populate_from_stmt(stmt, noti);
- ret = NOTIFICATION_ERROR_NONE;
- } else {
- ret = NOTIFICATION_ERROR_FROM_DB;
- }
-err:
- if (stmt) {
- sqlite3_finalize(stmt);
- }
-
- /* Close DB */
- if (db != NULL) {
- notification_db_close(&db);
- }
-
- return ret;
-}
-
-EXPORT_API int notification_noti_update(notification_h noti)
-{
- sqlite3 *db;
- sqlite3_stmt *stmt = NULL;
- char query[NOTIFICATION_QUERY_MAX] = { 0, };
- int ret = 0;
-
- /* Open DB */
- db = notification_db_open(DBPATH);
- if (!db) {
- return NOTIFICATION_ERROR_FROM_DB;
- }
-
- /* Check private ID is exist */
- ret = _notification_noti_check_priv_id(noti, db);
- if (ret != NOTIFICATION_ERROR_ALREADY_EXIST_ID) {
- ret = NOTIFICATION_ERROR_NOT_EXIST_ID;
- goto err;
- }
-
- /* make update query */
- ret = _notification_noti_make_update_query(noti, query, sizeof(query));
- if (ret != NOTIFICATION_ERROR_NONE) {
- goto err;
- }
-
- ret = sqlite3_prepare_v2(db, query, -1, &stmt, NULL);
- if (ret != SQLITE_OK) {
- NOTIFICATION_ERR("Insert Query : %s", query);
- NOTIFICATION_ERR("Insert DB error(%d) : %s", ret,
- sqlite3_errmsg(db));
- ret = NOTIFICATION_ERROR_FROM_DB;
- goto err;
- }
-
- ret = _notification_noti_bind_query_double(stmt, "$progress_size",noti->progress_size);
- if (ret != NOTIFICATION_ERROR_NONE) {
- NOTIFICATION_ERR("Bind error : %s", sqlite3_errmsg(db));
- goto err;
- }
- ret = _notification_noti_bind_query_double(stmt, "$progress_percentage",noti->progress_percentage);
- if (ret != NOTIFICATION_ERROR_NONE) {
- NOTIFICATION_ERR("Bind error : %s", sqlite3_errmsg(db));
- goto err;
- }
-
- ret = sqlite3_step(stmt);
- if (ret == SQLITE_OK || ret == SQLITE_DONE) {
- ret = NOTIFICATION_ERROR_NONE;
- } else {
- ret = NOTIFICATION_ERROR_FROM_DB;
- }
-err:
- if (stmt) {
- sqlite3_finalize(stmt);
- }
-
- /* Close DB */
- if (db) {
- notification_db_close(&db);
- }
-
- return ret;
-}
-
-EXPORT_API int notification_noti_delete_all(notification_type_e type, const char *pkgname, int *num_deleted, int **list_deleted_rowid)
-{
- int ret = NOTIFICATION_ERROR_NONE;
- int ret_tmp = NOTIFICATION_ERROR_NONE;
- int i = 0, data_cnt = 0;
- sqlite3 *db = NULL;
- sqlite3_stmt *stmt = NULL;
- char buf[128] = { 0, };
- char query[NOTIFICATION_QUERY_MAX] = { 0, };
- char query_base[NOTIFICATION_QUERY_MAX] = { 0, };
- char query_where[NOTIFICATION_QUERY_MAX] = { 0, };
-
- /* Open DB */
- db = notification_db_open(DBPATH);
- if (!db) {
- return NOTIFICATION_ERROR_FROM_DB;
- }
-
- if (pkgname == NULL) {
- if (type != NOTIFICATION_TYPE_NONE) {
- snprintf(query_where, sizeof(query_where),
- "where type = %d ", type);
- }
- } else {
- if (type == NOTIFICATION_TYPE_NONE) {
- snprintf(query_where, sizeof(query_where),
- "where caller_pkgname = '%s' ", pkgname);
- } else {
- snprintf(query_where, sizeof(query_where),
- "where caller_pkgname = '%s' and type = %d ",
- pkgname, type);
- }
- }
-
- if (num_deleted != NULL) {
- *num_deleted = 0;
- }
- if (list_deleted_rowid != NULL) {
- *list_deleted_rowid = NULL;
- snprintf(query, sizeof(query),
- "select priv_id from noti_list %s ", query_where);
-
- ret = sqlite3_prepare(db, query, strlen(query), &stmt, NULL);
- if (ret != SQLITE_OK) {
- NOTIFICATION_ERR("Select Query : %s", query);
- NOTIFICATION_ERR("Select DB error(%d) : %s", ret,
- sqlite3_errmsg(db));
-
- ret = NOTIFICATION_ERROR_FROM_DB;
- goto err;
- }
-
- while(sqlite3_step(stmt) == SQLITE_ROW) {
- if (data_cnt % 8 == 0) {
- int *tmp;
-
- tmp = (int *)realloc(*list_deleted_rowid, sizeof(int) * (data_cnt + 8 + 1));
- if (tmp) {
- *list_deleted_rowid = tmp;
- } else {
- NOTIFICATION_ERR("Heap: %s\n", strerror(errno));
- /*!
- * \TODO
- * How can I handle this?
- */
- free(*list_deleted_rowid);
- *list_deleted_rowid = NULL;
- ret = NOTIFICATION_ERROR_OUT_OF_MEMORY;
- goto err;
- }
- }
- *((*list_deleted_rowid) + data_cnt) = sqlite3_column_int(stmt, 0);
- data_cnt++;
- }
-
- if (stmt) {
- sqlite3_finalize(stmt);
- stmt = NULL;
- }
-
- if (data_cnt > 0) {
- query_where[0] = '\0';
- snprintf(query_base, sizeof(query_base) - 1, "delete from noti_list");
- for (i = 0; i < data_cnt ; i++) {
- if (i % NOTI_BURST_DELETE_UNIT == 0 && i != 0) {
- snprintf(query, sizeof(query) - 1, "%s where priv_id in (%s)", query_base, query_where);
- ret_tmp = notification_db_exec(db, query, NULL);
- query_where[0] = '\0';
- if (ret == NOTIFICATION_ERROR_NONE) {
- ret = ret_tmp;
- }
- }
- snprintf(buf, sizeof(buf) - 1, "%s%d", (i % NOTI_BURST_DELETE_UNIT == 0) ? "" : ",", *((*list_deleted_rowid) + i));
- strncat(query_where, buf,sizeof(query_where) - strlen(query_where) - 1);
- }
- if ((i <= NOTI_BURST_DELETE_UNIT) || ((i % NOTI_BURST_DELETE_UNIT) > 0) ) {
- snprintf(query, sizeof(query) - 1, "%s where priv_id in (%s)", query_base, query_where);
- ret_tmp = notification_db_exec(db, query, NULL);
- if (ret == NOTIFICATION_ERROR_NONE) {
- ret = ret_tmp;
- }
- }
- } else {
- free(*list_deleted_rowid);
- *list_deleted_rowid = NULL;
- }
-
- if (num_deleted != NULL) {
- *num_deleted = data_cnt;
- }
- } else {
- /* Make main query */
- snprintf(query_base, sizeof(query_base), "delete from noti_list ");
- snprintf(query, sizeof(query), "%s %s", query_base, query_where);
-
- ret = notification_db_exec(db, query, NULL);
-
- if (num_deleted != NULL) {
- *num_deleted = sqlite3_changes(db);
- }
- }
-
-err:
- if (stmt) {
- sqlite3_finalize(stmt);
- }
- /* Close DB */
- if (db) {
- notification_db_close(&db);
- }
-
- return ret;
-}
-
-int notification_noti_delete_group_by_group_id(const char *pkgname,
- int group_id, int *num_deleted, int **list_deleted_rowid)
-{
- int ret = NOTIFICATION_ERROR_NONE;
- int ret_tmp = NOTIFICATION_ERROR_NONE;
- sqlite3 *db = NULL;
- int i = 0, data_cnt = 0;
- sqlite3_stmt *stmt = NULL;
- char buf[128] = { 0, };
- char query[NOTIFICATION_QUERY_MAX] = { 0, };
- char query_base[NOTIFICATION_QUERY_MAX] = { 0, };
- char query_where[NOTIFICATION_QUERY_MAX] = { 0, };
-
- /* Check pkgname is valid */
- if (pkgname == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- snprintf(query_where, sizeof(query_where),
- "where caller_pkgname = '%s' and group_id = %d", pkgname, group_id);
-
- /* Open DB */
- db = notification_db_open(DBPATH);
- if (!db) {
- return NOTIFICATION_ERROR_FROM_DB;
- }
-
- if (num_deleted != NULL) {
- *num_deleted = 0;
- }
- if (list_deleted_rowid != NULL) {
- *list_deleted_rowid = NULL;
- snprintf(query, sizeof(query),
- "select priv_id from noti_list %s ", query_where);
-
- ret = sqlite3_prepare(db, query, strlen(query), &stmt, NULL);
- if (ret != SQLITE_OK) {
- NOTIFICATION_ERR("Select Query : %s", query);
- NOTIFICATION_ERR("Select DB error(%d) : %s", ret,
- sqlite3_errmsg(db));
-
- ret = NOTIFICATION_ERROR_FROM_DB;
- goto err;
- }
-
- while(sqlite3_step(stmt) == SQLITE_ROW) {
- if (data_cnt % 8 == 0) {
- int *tmp;
- tmp = (int *)realloc(*list_deleted_rowid, sizeof(int) * (data_cnt + 8 + 1));
- if (tmp) {
- *list_deleted_rowid = tmp;
- } else {
- free(*list_deleted_rowid);
- *list_deleted_rowid = NULL;
- ret = NOTIFICATION_ERROR_OUT_OF_MEMORY;
- goto err;
- }
- }
- *((*list_deleted_rowid) + data_cnt) = sqlite3_column_int(stmt, 0);
- data_cnt++;
- }
-
- if (stmt) {
- sqlite3_finalize(stmt);
- stmt = NULL;
- }
-
- if (data_cnt > 0) {
- query_where[0] = '\0';
- snprintf(query_base, sizeof(query_base) - 1, "delete from noti_list");
- for (i = 0; i < data_cnt ; i++) {
- if (i % NOTI_BURST_DELETE_UNIT == 0 && i != 0) {
- snprintf(query, sizeof(query) - 1, "%s where priv_id in (%s)", query_base, query_where);
- ret_tmp = notification_db_exec(db, query, NULL);
- query_where[0] = '\0';
- if (ret == NOTIFICATION_ERROR_NONE) {
- ret = ret_tmp;
- }
- }
- snprintf(buf, sizeof(buf) - 1, "%s%d", (i % NOTI_BURST_DELETE_UNIT == 0) ? "" : ",", *((*list_deleted_rowid) + i));
- strncat(query_where, buf,sizeof(query_where) - strlen(query_where) - 1);
- }
- if ((i <= NOTI_BURST_DELETE_UNIT) || ((i % NOTI_BURST_DELETE_UNIT) > 0) ) {
- snprintf(query, sizeof(query) - 1, "%s where priv_id in (%s)", query_base, query_where);
- ret_tmp = notification_db_exec(db, query, NULL);
- if (ret == NOTIFICATION_ERROR_NONE) {
- ret = ret_tmp;
- }
- }
- } else {
- free(*list_deleted_rowid);
- *list_deleted_rowid = NULL;
- }
-
- if (num_deleted != NULL) {
- *num_deleted = data_cnt;
- }
- } else {
- /* Make query */
- snprintf(query, sizeof(query), "delete from noti_list %s", query_where);
-
- /* execute DB */
- ret = notification_db_exec(db, query, NULL);
- }
-
-err:
- if (stmt) {
- sqlite3_finalize(stmt);
- }
- /* Close DB */
- if (db) {
- notification_db_close(&db);
- }
-
- return ret;
-}
-
-int notification_noti_delete_group_by_priv_id(const char *pkgname, int priv_id)
-{
- sqlite3 *db = NULL;
- char query[NOTIFICATION_QUERY_MAX] = { 0, };
- int internal_group_id = 0;
- int ret;
-
- /* Check pkgname is valid */
- if (pkgname == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Open DB */
- db = notification_db_open(DBPATH);
- if (!db) {
- return NOTIFICATION_ERROR_FROM_DB;
- }
-
- /* Get internal group id using priv id */
- internal_group_id =
- _notification_noti_get_internal_group_id_by_priv_id(pkgname,
- priv_id, db);
-
- /* Make query */
- snprintf(query, sizeof(query), "delete from noti_list "
- "where caller_pkgname = '%s' and internal_group_id = %d",
- pkgname, internal_group_id);
-
- /* execute DB */
- ret = notification_db_exec(db, query, NULL);
-
- /* Close DB */
- notification_db_close(&db);
-
- return ret;
-}
-
-EXPORT_API int notification_noti_delete_by_priv_id(const char *pkgname, int priv_id)
-{
- sqlite3 *db = NULL;
- char query[NOTIFICATION_QUERY_MAX] = { 0, };
- int ret;
-
- /* Check pkgname is valid */
- if (pkgname == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Open DB */
- db = notification_db_open(DBPATH);
- if (!db) {
- return NOTIFICATION_ERROR_FROM_DB;
- }
-
- /* Make query */
- snprintf(query, sizeof(query), "delete from noti_list "
- "where caller_pkgname = '%s' and priv_id = %d", pkgname,
- priv_id);
-
- /* execute DB */
- ret = notification_db_exec(db, query, NULL);
-
- /* Close DB */
- if (db) {
- notification_db_close(&db);
- }
-
- return ret;
-}
-
-EXPORT_API int notification_noti_delete_by_priv_id_get_changes(const char *pkgname, int priv_id, int *num_changes)
-{
- sqlite3 *db = NULL;
- char query[NOTIFICATION_QUERY_MAX] = { 0, };
- int ret;
-
- /* Check pkgname is valid */
- if (pkgname == NULL) {
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- /* Open DB */
- db = notification_db_open(DBPATH);
- if (!db) {
- return NOTIFICATION_ERROR_FROM_DB;
- }
-
- /* Make query */
- snprintf(query, sizeof(query), "delete from noti_list "
- "where caller_pkgname = '%s' and priv_id = %d", pkgname,
- priv_id);
-
- /* execute DB */
- ret = notification_db_exec(db, query, num_changes);
-
- if (num_changes != NULL) {
- NOTIFICATION_DBG("deleted num:%d", *num_changes);
- }
-
- /* Close DB */
- if (db) {
- notification_db_close(&db);
- }
-
- return ret;
-}
-
-notification_error_e notification_noti_get_count(notification_type_e type,
- const char *pkgname,
- int group_id, int priv_id,
- int *count)
-{
- sqlite3 *db = NULL;
- sqlite3_stmt *stmt = NULL;
- char query[NOTIFICATION_QUERY_MAX] = { 0, };
- char query_base[NOTIFICATION_QUERY_MAX] = { 0, };
- char query_where[NOTIFICATION_QUERY_MAX] = { 0, };
- char query_where_more[NOTIFICATION_QUERY_MAX] = { 0, };
-
- int ret = 0, get_count = 0, internal_group_id = 0;
- int status = VCONFKEY_TELEPHONY_SIM_UNKNOWN;
- int flag_where = 0;
- int flag_where_more = 0;
- int ret_vconf = 0;
-
- /* Open DB */
- db = notification_db_open(DBPATH);
- if (!db) {
- return NOTIFICATION_ERROR_FROM_DB;
- }
-
- /* Check current sim status */
- ret_vconf = vconf_get_int(VCONFKEY_TELEPHONY_SIM_SLOT, &status);
-
- /* Make query */
- snprintf(query_base, sizeof(query_base),
- "select count(*) from noti_list ");
-
- if (pkgname != NULL) {
- if (group_id == NOTIFICATION_GROUP_ID_NONE) {
- if (priv_id == NOTIFICATION_PRIV_ID_NONE) {
- snprintf(query_where, sizeof(query_where),
- "where caller_pkgname = '%s' ",
- pkgname);
- flag_where = 1;
- } else {
- internal_group_id =
- _notification_noti_get_internal_group_id_by_priv_id
- (pkgname, priv_id, db);
- snprintf(query_where, sizeof(query_where),
- "where caller_pkgname = '%s' and internal_group_id = %d ",
- pkgname, internal_group_id);
- flag_where = 1;
- }
- } else {
- if (priv_id == NOTIFICATION_PRIV_ID_NONE) {
- snprintf(query_where, sizeof(query_where),
- "where caller_pkgname = '%s' and group_id = %d ",
- pkgname, group_id);
- flag_where = 1;
- } else {
- internal_group_id =
- _notification_noti_get_internal_group_id_by_priv_id
- (pkgname, priv_id, db);
- snprintf(query_where, sizeof(query_where),
- "where caller_pkgname = '%s' and internal_group_id = %d ",
- pkgname, internal_group_id);
- flag_where = 1;
- }
- }
-
- }
-
- if (ret_vconf == 0 && status == VCONFKEY_TELEPHONY_SIM_INSERTED) {
- if (type != NOTIFICATION_TYPE_NONE) {
- snprintf(query_where_more, sizeof(query_where_more),
- "type = %d ", type);
- flag_where_more = 1;
- }
- } else {
- if (type != NOTIFICATION_TYPE_NONE) {
- snprintf(query_where_more, sizeof(query_where_more),
- "type = %d and flag_simmode = 0 ", type);
- flag_where_more = 1;
- } else {
- snprintf(query_where_more, sizeof(query_where_more),
- "flag_simmode = 0 ");
- flag_where_more = 1;
- }
- }
-
- if (flag_where == 1) {
- if (flag_where_more == 1) {
- snprintf(query, sizeof(query), "%s %s and %s",
- query_base, query_where, query_where_more);
- } else {
- snprintf(query, sizeof(query), "%s %s", query_base,
- query_where);
- }
-
- } else {
- if (flag_where_more == 1) {
- snprintf(query, sizeof(query), "%s where %s",
- query_base, query_where_more);
- } else {
- snprintf(query, sizeof(query), "%s", query_base);
- }
- }
-
- ret = sqlite3_prepare(db, query, strlen(query), &stmt, NULL);
- if (ret != SQLITE_OK) {
- NOTIFICATION_ERR("Select Query : %s", query);
- NOTIFICATION_ERR("Select DB error(%d) : %s", ret,
- sqlite3_errmsg(db));
-
- ret = NOTIFICATION_ERROR_FROM_DB;
- goto err;
- }
-
- ret = sqlite3_step(stmt);
- if (ret == SQLITE_ROW) {
- get_count = sqlite3_column_int(stmt, 0);
- }
-
- ret = NOTIFICATION_ERROR_NONE;
-
-err:
- if (stmt) {
- sqlite3_finalize(stmt);
- }
-
- /* Close DB */
- if (db) {
- notification_db_close(&db);
- }
-
- *count = get_count;
-
- return ret;
-}
-
-notification_error_e notification_noti_get_grouping_list(notification_type_e type,
- int count,
- notification_list_h *
- list)
-{
- sqlite3 *db = NULL;
- sqlite3_stmt *stmt = NULL;
- char query[NOTIFICATION_QUERY_MAX] = { 0, };
- char query_base[NOTIFICATION_QUERY_MAX] = { 0, };
- char query_where[NOTIFICATION_QUERY_MAX] = { 0, };
-
- int ret = 0;
- notification_list_h get_list = NULL;
- notification_h noti = NULL;
- int internal_count = 0;
- int status;
-
- /* Open DB */
- db = notification_db_open(DBPATH);
- if (!db) {
- return NOTIFICATION_ERROR_FROM_DB;
- }
-
- /* Check current sim status */
- ret = vconf_get_int(VCONFKEY_TELEPHONY_SIM_SLOT, &status);
-
- /* Make query */
- snprintf(query_base, sizeof(query_base), "select "
- "type, layout, caller_pkgname, launch_pkgname, image_path, group_id, priv_id, "
- "b_text, b_key, b_format_args, num_format_args, "
- "text_domain, text_dir, time, insert_time, args, group_args, "
- "b_execute_option, b_service_responding, b_service_single_launch, b_service_multi_launch, "
- "sound_type, sound_path, vibration_type, vibration_path, led_operation, led_argb, led_on_ms, led_off_ms, "
- "flags_for_property, display_applist, progress_size, progress_percentage "
- "from noti_list ");
-
- if (status == VCONFKEY_TELEPHONY_SIM_INSERTED) {
- if (type != NOTIFICATION_TYPE_NONE) {
- snprintf(query_where, sizeof(query_where),
- "where type = %d ", type);
- }
- } else {
- if (type != NOTIFICATION_TYPE_NONE) {
- snprintf(query_where, sizeof(query_where),
- "where type = %d and flag_simmode = 0 ", type);
- } else {
- snprintf(query_where, sizeof(query_where),
- "where flag_simmode = 0 ");
- }
- }
-
- snprintf(query, sizeof(query),
- "%s %s "
- "group by internal_group_id "
- "order by rowid desc, time desc", query_base, query_where);
-
- ret = sqlite3_prepare(db, query, strlen(query), &stmt, NULL);
- if (ret != SQLITE_OK) {
- NOTIFICATION_ERR("Select Query : %s", query);
- NOTIFICATION_ERR("Select DB error(%d) : %s", ret,
- sqlite3_errmsg(db));
-
- ret = NOTIFICATION_ERROR_FROM_DB;
- goto err;
- }
-
- while (sqlite3_step(stmt) == SQLITE_ROW) {
- /* Make notification list */
- noti = _notification_noti_get_item(stmt);
- if (noti != NULL) {
- internal_count++;
-
- get_list = notification_list_append(get_list, noti);
-
- if (count != -1 && internal_count >= count) {
- NOTIFICATION_INFO
- ("internal count %d >= count %d",
- internal_count, count);
- break;
- }
- }
- }
-
- ret = NOTIFICATION_ERROR_NONE;
-
-err:
- if (stmt) {
- sqlite3_finalize(stmt);
- }
-
- /* Close DB */
- if (db) {
- notification_db_close(&db);
- }
-
- if (get_list != NULL) {
- *list = notification_list_get_head(get_list);
- }
-
- return ret;
-}
-
-notification_error_e notification_noti_get_detail_list(const char *pkgname,
- int group_id,
- int priv_id, int count,
- notification_list_h *list)
-{
- sqlite3 *db = NULL;
- sqlite3_stmt *stmt = NULL;
- char query_base[NOTIFICATION_QUERY_MAX] = { 0, };
- char query_where[NOTIFICATION_QUERY_MAX] = { 0, };
-
- char query[NOTIFICATION_QUERY_MAX] = { 0, };
- int ret = 0;
- notification_list_h get_list = NULL;
- notification_h noti = NULL;
- int internal_count = 0;
- int internal_group_id = 0;
- int status = 0; /* If the vconf_get_int failed, the status will be the garbage value */
-
- /* Open DB */
- db = notification_db_open(DBPATH);
- if (!db) {
- return NOTIFICATION_ERROR_FROM_DB;
- }
-
- /* Check current sim status */
- ret = vconf_get_int(VCONFKEY_TELEPHONY_SIM_SLOT, &status);
-
- /* Make query */
- snprintf(query_base, sizeof(query_base), "select "
- "type, layout, caller_pkgname, launch_pkgname, image_path, group_id, priv_id, "
- "b_text, b_key, b_format_args, num_format_args, "
- "text_domain, text_dir, time, insert_time, args, group_args, "
- "b_execute_option, b_service_responding, b_service_single_launch, b_service_multi_launch, "
- "sound_type, sound_path, vibration_type, vibration_path, led_operation, led_argb, led_on_ms, led_off_ms, "
- "flags_for_property, display_applist, progress_size, progress_percentage "
- "from noti_list ");
-
- if (priv_id == NOTIFICATION_PRIV_ID_NONE && group_id == NOTIFICATION_GROUP_ID_NONE) {
- if (status == VCONFKEY_TELEPHONY_SIM_INSERTED) {
- snprintf(query_where, sizeof(query_where),
- "where caller_pkgname = '%s' ", pkgname);
- } else {
- snprintf(query_where, sizeof(query_where),
- "where caller_pkgname = '%s' and flag_simmode = 0 ", pkgname);
- }
- } else {
- internal_group_id =
- _notification_noti_get_internal_group_id_by_priv_id(pkgname,
- priv_id, db);
-
- if (status == VCONFKEY_TELEPHONY_SIM_INSERTED) {
- snprintf(query_where, sizeof(query_where),
- "where caller_pkgname = '%s' and internal_group_id = %d ",
- pkgname, internal_group_id);
- } else {
- snprintf(query_where, sizeof(query_where),
- "where caller_pkgname = '%s' and internal_group_id = %d and flag_simmode = 0 ",
- pkgname, internal_group_id);
- }
- }
-
- snprintf(query, sizeof(query),
- "%s %s "
- "order by rowid desc, time desc", query_base, query_where);
-
- ret = sqlite3_prepare(db, query, strlen(query), &stmt, NULL);
- if (ret != SQLITE_OK) {
- NOTIFICATION_ERR("Select Query : %s", query);
- NOTIFICATION_ERR("Select DB error(%d) : %s", ret,
- sqlite3_errmsg(db));
-
- ret = NOTIFICATION_ERROR_FROM_DB;
- goto err;
- }
-
- while (sqlite3_step(stmt) == SQLITE_ROW) {
- /* Make notification list */
- noti = _notification_noti_get_item(stmt);
- if (noti != NULL) {
- internal_count++;
-
- get_list = notification_list_append(get_list, noti);
-
- if (count != -1 && internal_count >= count) {
- NOTIFICATION_INFO
- ("internal count %d >= count %d",
- internal_count, count);
- break;
- }
- }
- }
-
- ret = NOTIFICATION_ERROR_NONE;
-
-err:
- if (stmt) {
- sqlite3_finalize(stmt);
- }
-
- /* Close DB */
- if (db) {
- notification_db_close(&db);
- }
-
- if (get_list != NULL) {
- *list = notification_list_get_head(get_list);
- }
-
- return ret;
-}
+++ /dev/null
-/*
- * 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.
- *
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include <dbus/dbus.h>
-
-#include <notification_db.h>
-#include <notification_debug.h>
-#include <notification_ongoing.h>
-#include <notification_internal.h>
-
-notification_error_e notification_ongoing_update_progress(const char *caller_pkgname,
- int priv_id,
- double progress)
-{
- DBusConnection *connection = NULL;
- DBusMessage *signal = NULL;
- DBusError err;
- dbus_bool_t ret;
-
- dbus_error_init(&err);
- connection = dbus_bus_get(DBUS_BUS_SYSTEM, &err);
- if (!connection) {
- NOTIFICATION_ERR("Fail to dbus_bus_get");
- return NOTIFICATION_ERROR_FROM_DBUS;
- }
-
- signal =
- dbus_message_new_signal("/dbus/signal", "notification.ongoing",
- "update_progress");
- if (!signal) {
- NOTIFICATION_ERR("Fail to dbus_message_new_signal");
- return NOTIFICATION_ERROR_FROM_DBUS;
- }
-
- ret = dbus_message_append_args(signal,
- DBUS_TYPE_STRING, &caller_pkgname,
- DBUS_TYPE_INT32, &priv_id,
- DBUS_TYPE_DOUBLE, &progress,
- DBUS_TYPE_INVALID);
-
- if (ret) {
- ret = dbus_connection_send(connection, signal, NULL);
- if (ret) {
- dbus_connection_flush(connection);
- }
- }
-
- dbus_message_unref(signal);
-
- if (ret) {
- return NOTIFICATION_ERROR_NONE;
- }
-
- return NOTIFICATION_ERROR_FROM_DBUS;
-}
-
-notification_error_e notification_ongoing_update_size(const char *caller_pkgname,
- int priv_id, double size)
-{
- DBusConnection *connection = NULL;
- DBusMessage *signal = NULL;
- DBusError err;
- dbus_bool_t ret;
-
- dbus_error_init(&err);
- connection = dbus_bus_get(DBUS_BUS_SYSTEM, &err);
- if (!connection) {
- NOTIFICATION_ERR("Fail to dbus_bus_get");
- return NOTIFICATION_ERROR_FROM_DBUS;
- }
-
- signal =
- dbus_message_new_signal("/dbus/signal", "notification.ongoing",
- "update_size");
- if (!signal) {
- NOTIFICATION_ERR("Fail to dbus_message_new_signal");
- return NOTIFICATION_ERROR_FROM_DBUS;
- }
-
- ret = dbus_message_append_args(signal,
- DBUS_TYPE_STRING, &caller_pkgname,
- DBUS_TYPE_INT32, &priv_id,
- DBUS_TYPE_DOUBLE, &size,
- DBUS_TYPE_INVALID);
- if (ret) {
- ret = dbus_connection_send(connection, signal, NULL);
-
- if (ret) {
- dbus_connection_flush(connection);
- }
- }
-
- dbus_message_unref(signal);
-
- if (ret) {
- return NOTIFICATION_ERROR_NONE;
- }
-
- return NOTIFICATION_ERROR_FROM_DBUS;
-}
-
-notification_error_e notification_ongoing_update_content(const char *caller_pkgname,
- int priv_id, const char *content)
-{
- DBusConnection *connection = NULL;
- DBusMessage *signal = NULL;
- DBusError err;
- dbus_bool_t ret;
-
- dbus_error_init(&err);
- connection = dbus_bus_get(DBUS_BUS_SYSTEM, &err);
- if (!connection) {
- NOTIFICATION_ERR("Fail to dbus_bus_get");
- return NOTIFICATION_ERROR_FROM_DBUS;
- }
-
- signal =
- dbus_message_new_signal("/dbus/signal", "notification.ongoing",
- "update_content");
- if (!signal) {
- NOTIFICATION_ERR("Fail to dbus_message_new_signal");
- return NOTIFICATION_ERROR_FROM_DBUS;
- }
-
- if(content == NULL) {
- ret = dbus_message_append_args(signal,
- DBUS_TYPE_STRING, &caller_pkgname,
- DBUS_TYPE_INT32, &priv_id,
- DBUS_TYPE_INVALID);
- } else {
- ret = dbus_message_append_args(signal,
- DBUS_TYPE_STRING, &caller_pkgname,
- DBUS_TYPE_INT32, &priv_id,
- DBUS_TYPE_STRING, &content,
- DBUS_TYPE_INVALID);
- }
- if (ret) {
- ret = dbus_connection_send(connection, signal, NULL);
-
- if (ret) {
- dbus_connection_flush(connection);
- }
- }
-
- dbus_message_unref(signal);
-
- if (ret) {
- return NOTIFICATION_ERROR_NONE;
- }
-
- return NOTIFICATION_ERROR_FROM_DBUS;
-}
-
+++ /dev/null
-/*
- * 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.
- *
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <db-util.h>
-
-#include <notification.h>
-#include <notification_db.h>
-#include <notification_noti.h>
-#include <notification_debug.h>
-#include <notification_ipc.h>
-#include <notification_setting.h>
-#include <notification_internal.h>
-#include <tzplatform_config.h>
-
-#define NOTIFICATION_SETTING_DB "notification_setting"
-#define NOTIFICATION_SETTING_DB_PATH tzplatform_mkpath(TZ_USER_DB,".notification_parser.db")
-
-struct _notification_setting_h {
- char *appid;
- char *notification;
- char *sounds;
- char *contents;
- char *badge;
- char *pkgid;
-};
-
-struct prop_table {
- const char *property;
- const char *column;
- const char *default_value;
-};
-
-static struct prop_table g_prop_table[] = {
- {
- .property = "OPT_NOTIFICATION",
- .column = "notification",
- .default_value = "ON",
- },
- {
- .property = "OPT_SOUNDS",
- .column = "sounds",
- .default_value = "ON",
- },
- {
- .property = "OPT_CONTENTS",
- .column = "contents",
- .default_value = "ON",
- },
- {
- .property = "OPT_BADGE",
- .column = "badge",
- .default_value = "ON",
- },
- {
- .property = NULL,
- .column = NULL,
- .default_value = NULL,
- }
-};
-
-static const char *_get_prop_column(const char *property)
-{
- int i;
-
- for (i = 0; g_prop_table[i].property; i++) {
- if (strcmp(g_prop_table[i].property, property))
- continue;
-
- return g_prop_table[i].column;
- }
-
- return NULL;
-}
-
-#ifdef TBD
-static const char *_get_prop_default_value(const char *property)
-{
- int i;
-
- for (i = 0; g_prop_table[i].property; i++) {
- if (strcmp(g_prop_table[i].property, property))
- continue;
-
- return g_prop_table[i].default_value;
- }
-
- return NULL;
-}
-#endif
-
-static notification_error_e _is_record_exist(const char *pkgname, sqlite3 *db)
-{
- sqlite3_stmt *stmt = NULL;
- int count = 0;
- int result = NOTIFICATION_ERROR_NONE;
- char *sqlbuf = NULL;
- int sqlret;
-
- if (!pkgname)
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
-
- if (!db)
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
-
- sqlbuf = sqlite3_mprintf("SELECT count(*) FROM %s WHERE " \
- "appid = %Q",
- NOTIFICATION_SETTING_DB, pkgname);
-
- if (!sqlbuf) {
- NOTIFICATION_ERR("fail to alloc sql query");
- return NOTIFICATION_ERROR_OUT_OF_MEMORY;
- }
-
- sqlret = sqlite3_prepare_v2(db, sqlbuf, -1, &stmt, NULL);
- if (sqlret != SQLITE_OK) {
- NOTIFICATION_ERR("DB err [%s]", sqlite3_errmsg(db));
- NOTIFICATION_ERR("query[%s]", sqlbuf);
- result = NOTIFICATION_ERROR_FROM_DB;
- goto free_and_return;
- }
-
- sqlret = sqlite3_step(stmt);
- if (sqlret == SQLITE_ROW)
- count = sqlite3_column_int(stmt, 0);
- else
- count = 0;
-
- if (count > 0)
- result = NOTIFICATION_ERROR_ALREADY_EXIST_ID;
- else
- result = NOTIFICATION_ERROR_NOT_EXIST_ID;
-
-free_and_return:
- if (sqlbuf)
- sqlite3_free(sqlbuf);
-
- if (stmt)
- sqlite3_finalize(stmt);
-
- return result;
-}
-
-EXPORT_API notification_error_e notification_setting_db_set(const char *pkgname, const char *property, const char *value)
-{
- notification_error_e ret = NOTIFICATION_ERROR_NONE;
- notification_error_e result = NOTIFICATION_ERROR_NONE;
- sqlite3 *db = NULL;
- char *sqlbuf = NULL;
- int sqlret;
- const char *column = NULL;
-
- if (!pkgname)
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
-
- if (!property)
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
-
- if (!value)
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
-
- column = _get_prop_column(property);
- if (!column)
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
-
- sqlret = db_util_open(NOTIFICATION_SETTING_DB_PATH, &db, 0);
- if (sqlret != SQLITE_OK || !db) {
- NOTIFICATION_ERR("fail to db_util_open - [%d]", sqlret);
- return NOTIFICATION_ERROR_FROM_DB;
- }
-
- ret = _is_record_exist(pkgname, db);
- if (ret != NOTIFICATION_ERROR_ALREADY_EXIST_ID) {
- result = ret;
- goto return_close_db;
- }
-
- sqlbuf = sqlite3_mprintf("UPDATE %s SET %s = %Q " \
- "WHERE appid = %Q",
- NOTIFICATION_SETTING_DB, column, value, pkgname);
- if (!sqlbuf) {
- NOTIFICATION_ERR("fail to alloc query");
- result = NOTIFICATION_ERROR_OUT_OF_MEMORY;
- goto return_close_db;
- }
-
- result = notification_db_exec(db, sqlbuf, NULL);
-
-return_close_db:
- if (sqlbuf)
- sqlite3_free(sqlbuf);
-
- sqlret = db_util_close(db);
- if (sqlret != SQLITE_OK) {
- NOTIFICATION_WARN("fail to db_util_close - [%d]", sqlret);
- }
-
- return result;
-}
-
-EXPORT_API notification_error_e notification_setting_db_get(const char *pkgname, const char *property, char **value)
-{
- notification_error_e ret = NOTIFICATION_ERROR_NONE;
- notification_error_e result = NOTIFICATION_ERROR_NONE;
- sqlite3 *db = NULL;
- char *sqlbuf = NULL;
- sqlite3_stmt *stmt = NULL;
- int sqlret;
- const char *column = NULL;
-
- if (!pkgname)
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
-
- if (!property)
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
-
- if (!value)
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
-
- column = _get_prop_column(property);
- if (!column)
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
-
- sqlret = db_util_open(NOTIFICATION_SETTING_DB_PATH, &db, 0);
- if (sqlret != SQLITE_OK || !db) {
- NOTIFICATION_ERR("fail to db_util_open - [%d]", sqlret);
- return NOTIFICATION_ERROR_FROM_DB;
- }
-
- ret = _is_record_exist(pkgname, db);
- if (ret != NOTIFICATION_ERROR_ALREADY_EXIST_ID) {
- result = ret;
- goto return_close_db;
- }
-
- sqlbuf = sqlite3_mprintf("SELECT %s FROM %s " \
- "WHERE appid = %Q",
- column, NOTIFICATION_SETTING_DB, pkgname);
- if (!sqlbuf) {
- NOTIFICATION_ERR("fail to alloc query");
- result = NOTIFICATION_ERROR_OUT_OF_MEMORY;
- goto return_close_db;
- }
-
- sqlret = sqlite3_prepare_v2(db, sqlbuf, -1, &stmt, NULL);
- if (sqlret != SQLITE_OK) {
- NOTIFICATION_ERR("fail to prepare %s - [%s]",
- sqlbuf, sqlite3_errmsg(db));
- result = NOTIFICATION_ERROR_FROM_DB;
- goto return_close_db;
- }
-
- sqlret = sqlite3_step(stmt);
- if (sqlret == SQLITE_ROW) {
- int get_bytes = sqlite3_column_bytes(stmt, 0);
- char *get_data = (char *)calloc(get_bytes + 1, sizeof(char));
- if (get_data != NULL) {
- memcpy(get_data, sqlite3_column_text(stmt, 0),
- get_bytes * sizeof(char));
- get_data[get_bytes] = '\0';
- *value = get_data;
- } else {
- NOTIFICATION_ERR("fail to alloc query");
- result = NOTIFICATION_ERROR_OUT_OF_MEMORY;
- goto return_close_db;
- }
- }
-
-return_close_db:
- if (sqlbuf)
- sqlite3_free(sqlbuf);
-
- if (stmt)
- sqlite3_finalize(stmt);
-
- sqlret = db_util_close(db);
- if (sqlret != SQLITE_OK)
- NOTIFICATION_WARN("fail to db_util_close - [%d]", sqlret);
-
- return result;
-}
-
-EXPORT_API notification_error_e notification_setting_property_set(const char *pkgname, const char *property, const char *value)
-{
- int ret = 0;
-
- if (!pkgname)
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
-
- if (!property)
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
-
- if (!value)
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
-
- ret = notification_ipc_noti_setting_property_set(pkgname, property, value);
- if (ret != NOTIFICATION_ERROR_NONE) {
- return ret;
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API notification_error_e notification_setting_property_get(const char *pkgname, const char *property, char **value)
-{
- int ret = 0;
-
- if (!pkgname)
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
-
- if (!property)
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
-
- if (!value)
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
-
- ret = notification_ipc_noti_setting_property_get(pkgname, property, value);
- if (ret != NOTIFICATION_ERROR_NONE) {
- return ret;
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
+++ /dev/null
-/*
- * 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.
- *
- */
-
-#include <sys/types.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <vconf.h>
-
-#include <notification.h>
-#include <notification_db.h>
-#include <notification_noti.h>
-#include <notification_debug.h>
-#include <notification_internal.h>
-#include <notification_status.h>
-
-#define NOTIFICATION_STATUS_MESSAGE_KEY "memory/private/libstatus/message"
-
-struct _message_cb_data {
- notification_status_message_cb callback;
- void *data;
-};
-
-static struct _message_cb_data md;
-
-static void __notification_status_message_change_cb(keynode_t *node, void *user_data)
-{
- int type;
- char *message = NULL;
-
- if (!node) {
- NOTIFICATION_ERR("key node is NULL");
- return;
- }
-
- if (!md.callback)
- return;
-
- type = vconf_keynode_get_type(node);
- if (type != VCONF_TYPE_STRING) {
- NOTIFICATION_ERR("invail node type : %d", type);
- return;
- }
-
- message = vconf_keynode_get_str(node);
- if (!message) {
- NOTIFICATION_ERR("fail to get message");
- return;
- }
-
- if (strlen(message) <= 0){
- NOTIFICATION_DBG("message has only NULL");
- return;
- }
-
- md.callback(message, md.data);
-}
-
-EXPORT_API
-int notification_status_message_post(const char *message)
-{
- int ret = 0;
-
- if (!message) {
- NOTIFICATION_ERR("message is NULL");
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
- if (strlen(message) <= 0) {
- NOTIFICATION_ERR("message has only NULL");
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
- }
-
-
- ret = vconf_set_str(NOTIFICATION_STATUS_MESSAGE_KEY, message);
- if (ret) {
- NOTIFICATION_ERR("fail to set message [%s]", message);
- return NOTIFICATION_ERROR_IO_ERROR;
- }
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API
-int notification_status_monitor_message_cb_set(notification_status_message_cb callback, void *user_data)
-{
- int ret = 0;
- if (!callback)
- return NOTIFICATION_ERROR_INVALID_PARAMETER;
-
- ret = vconf_notify_key_changed(NOTIFICATION_STATUS_MESSAGE_KEY,
- __notification_status_message_change_cb, NULL);
- if (ret && errno != EALREADY) {
- NOTIFICATION_ERR("fail to set message cb");
- return NOTIFICATION_ERROR_IO_ERROR;
- }
-
- md.callback = callback;
- md.data = user_data;
-
- return NOTIFICATION_ERROR_NONE;
-}
-
-EXPORT_API
-int notification_status_monitor_message_cb_unset(void)
-{
- vconf_ignore_key_changed(NOTIFICATION_STATUS_MESSAGE_KEY,
- __notification_status_message_change_cb);
- md.callback = NULL;
- md.data = NULL;
-
- return NOTIFICATION_ERROR_NONE;
-}