Add a new API for sending whether sticker DB is changed 79/230479/2
authorInHong Han <inhong1.han@samsung.com>
Fri, 10 Apr 2020 03:07:42 +0000 (12:07 +0900)
committerInHong Han <inhong1.han@samsung.com>
Fri, 10 Apr 2020 09:07:58 +0000 (18:07 +0900)
Change-Id: I6cf48055fbdc83bfe564f11146c20f69e243b2a4

consumer/sticker_consumer.c
consumer/sticker_consumer_main.h
include/sticker_consumer.h

index 15ea7fc..1c9de90 100644 (file)
@@ -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
index 5f72eaf..f830204 100644 (file)
@@ -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
index a143e00..fb6985d 100644 (file)
@@ -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);
+
+/**
  * @}
  */