From de8ad13fcbd9716bb2fa1189c9c152afdaf7cf68 Mon Sep 17 00:00:00 2001 From: InHong Han Date: Fri, 10 Apr 2020 12:07:42 +0900 Subject: [PATCH] Add a new API for sending whether sticker DB is changed Change-Id: I6cf48055fbdc83bfe564f11146c20f69e243b2a4 --- consumer/sticker_consumer.c | 26 ++++++++++++++++++++ consumer/sticker_consumer_main.h | 2 ++ include/sticker_consumer.h | 52 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 80 insertions(+) diff --git a/consumer/sticker_consumer.c b/consumer/sticker_consumer.c index 15ea7fc..1c9de90 100644 --- a/consumer/sticker_consumer.c +++ b/consumer/sticker_consumer.c @@ -597,4 +597,30 @@ cleanup: g_variant_iter_free(id_iter); return ret; +} + +EXPORT_API int sticker_consumer_set_event_callback(sticker_consumer_h consumer_handle, sticker_consumer_event_cb callback, void *user_data) +{ + CHECK_STICKER_FEATURE(); + + if (!consumer_handle || !callback) + return STICKER_ERROR_INVALID_PARAMETER; + + consumer_handle->event_cb = callback; + consumer_handle->event_cb_user_data = user_data; + + return STICKER_ERROR_NONE; +} + +EXPORT_API int sticker_consumer_unset_event_callback(sticker_consumer_h consumer_handle) +{ + CHECK_STICKER_FEATURE(); + + if (!consumer_handle) + return STICKER_ERROR_INVALID_PARAMETER; + + consumer_handle->event_cb = NULL; + consumer_handle->event_cb_user_data = NULL; + + return STICKER_ERROR_NONE; } \ No newline at end of file diff --git a/consumer/sticker_consumer_main.h b/consumer/sticker_consumer_main.h index 5f72eaf..f830204 100644 --- a/consumer/sticker_consumer_main.h +++ b/consumer/sticker_consumer_main.h @@ -32,6 +32,8 @@ struct sticker_consumer_s { int monitor_id; int server_monitor_id; char *app_id; + sticker_consumer_event_cb event_cb; + void *event_cb_user_data; }; #ifdef __cplusplus diff --git a/include/sticker_consumer.h b/include/sticker_consumer.h index a143e00..fb6985d 100644 --- a/include/sticker_consumer.h +++ b/include/sticker_consumer.h @@ -35,6 +35,17 @@ extern "C" { */ /** + * @brief Enumeration for event type. + * + * @since_tizen 5.5 + */ +typedef enum { + STICKER_CONSUMER_EVENT_TYPE_INSERT, /**< Insert event type */ + STICKER_CONSUMER_EVENT_TYPE_DELETE, /**< Delete event type */ + STICKER_CONSUMER_EVENT_TYPE_UPDATE, /**< Update event type */ +} sticker_consumer_event_type_e; + +/** * @brief The sticker consumer handle. * @since_tizen 5.5 */ @@ -85,6 +96,17 @@ typedef void (*sticker_consumer_group_list_foreach_cb)(const char *group, void * typedef void (*sticker_consumer_keyword_list_foreach_cb)(const char *keyword, void *user_data); /** + * @brief Called when the stickers are inserted, deleted, or updated. + * @since_tizen 5.5 + * @param[in] event_type The event type of sticker + * @param[in] user_data The user data passed from sticker_consumer_set_event_callback() + * @pre The callback can be registered using sticker_consumer_set_event_callback() + * @see sticker_consumer_set_event_callback() + * @see sticker_consumer_unset_event_callback() + */ +typedef void (*sticker_consumer_event_cb)(sticker_consumer_event_type_e event_type, void *user_data); + +/** * @brief Creates a sticker consumer handle. * @since_tizen 5.5 * @privlevel public @@ -316,6 +338,36 @@ int sticker_consumer_add_recent_data(sticker_consumer_h consumer_handle, sticker int sticker_consumer_get_recent_data_list(sticker_consumer_h consumer_handle, int count, int *result, sticker_consumer_data_foreach_cb callback, void *user_data); /** + * @brief Registers a callback function to be invoked when the stickers are inserted, deleted, or updated. + * @since_tizen 5.5 + * @param[in] consumer_handle The sticker consumer handle + * @param[in] callback The callback function to invoke + * @param[in] user_data The user data to be passed to the callback function + * @return 0 on success, otherwise a negative error value + * @retval #STICKER_ERROR_NONE Successful + * @retval #STICKER_ERROR_NOT_SUPPORTED Not supported + * @retval #STICKER_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #STICKER_ERROR_OPERATION_FAILED Operation failed + * @see sticker_consumer_event_cb() + * @see sticker_consumer_unset_event_callback() + */ +int sticker_consumer_set_event_callback(sticker_consumer_h consumer_handle, sticker_consumer_event_cb callback, void *user_data); + +/** + * @brief Unregisters a callback function. + * @since_tizen 5.5 + * @param[in] consumer_handle The sticker consumer handle + * @return 0 on success, otherwise a negative error value + * @retval #STICKER_ERROR_NONE Successful + * @retval #STICKER_ERROR_NOT_SUPPORTED Not supported + * @retval #STICKER_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #STICKER_ERROR_OPERATION_FAILED Operation failed + * @see sticker_consumer_event_cb() + * @see sticker_consumer_set_event_callback() + */ +int sticker_consumer_unset_event_callback(sticker_consumer_h consumer_handle); + +/** * @} */ -- 2.7.4