int notification_refresh_noti(GVariant *parameters, GVariant **reply_body, uid_t uid);
int notification_del_noti_single(GVariant *parameters, GVariant **reply_body, uid_t uid);
int notification_del_noti_multiple(GVariant *parameters, GVariant **reply_body, uid_t uid);
+int notification_del_noti_multiple_by_viewer(GVariant *parameters, GVariant **reply_body, uid_t uid);
int notification_set_noti_property(GVariant *parameters, GVariant **reply_body, uid_t uid);
int notification_get_noti_property(GVariant *parameters, GVariant **reply_body, uid_t uid);
int notification_get_noti_count(GVariant *parameters, GVariant **reply_body, uid_t uid);
ret = notification_check_event_receiver(parameters, &reply_body);
} else if (g_strcmp0(method_name, "reset_event_handler") == 0) {
ret = notification_reset_event_receiver(parameters, &reply_body, sender);
+ } else if (g_strcmp0(method_name, "del_noti_multiple_by_viewer") == 0) {
+ ret = notification_del_noti_multiple_by_viewer(parameters, &reply_body, uid);
}
if (ret == NOTIFICATION_ERROR_NONE) {
" <arg type='i' name='priv_id' direction='in'/>"
" </method>"
+ " <method name='del_noti_multiple_by_viewer'>"
+ " <arg type='i' name='viewer' direction='in'/>"
+ " <arg type='i' name='uid' direction='in'/>"
+ " <arg type='i' name='priv_id' direction='out'/>"
+ " </method>"
+
" <method name='post_toast'>"
" </method>"
" </interface>"
return ret;
}
+int notification_del_noti_multiple_by_viewer(GVariant *parameters,
+ GVariant **reply_body, uid_t uid)
+{
+ int ret;
+ int viewer;
+ int deleted_num;
+ GList *deleted_list = NULL;
+ GList *iter_list = NULL;
+ GVariant *deleted_noti_list;
+ GVariantBuilder *builder;
+ uid_t param_uid;
+
+ g_variant_get(parameters, "(ii)", &viewer, ¶m_uid);
+
+ ret = _validate_and_set_param_uid_with_uid(uid, ¶m_uid);
+ if (ret != NOTIFICATION_ERROR_NONE)
+ return ret;
+
+ ret = notification_noti_delete_all_by_viewer(viewer, &deleted_num,
+ &deleted_list, param_uid);
+ if (ret != NOTIFICATION_ERROR_NONE) {
+ ERR("Failed to delete notifications [%d]", ret);
+ if (deleted_list != NULL)
+ free(deleted_list);
+ return ret;
+ }
+
+ if (deleted_num > 0) {
+ builder = g_variant_builder_new(G_VARIANT_TYPE("a(i)"));
+
+ iter_list = deleted_list;
+ while(iter_list) {
+ g_variant_builder_add(builder, "(i)",
+ GPOINTER_TO_INT(iter_list->data));
+ iter_list = g_list_next(iter_list);
+ }
+
+ if (iter_list)
+ g_list_free(iter_list);
+
+ if (deleted_list)
+ g_list_free(deleted_list);
+
+ deleted_noti_list = g_variant_new("(a(i)ii)", builder,
+ deleted_num, param_uid);
+ g_variant_builder_unref(builder);
+
+ ret = send_notify(deleted_noti_list,
+ "delete_multiple_by_viewer_notify", &_monitoring_hash,
+ PROVIDER_NOTI_INTERFACE_NAME, param_uid);
+ g_variant_unref(deleted_noti_list);
+ if (ret != NOTIFICATION_ERROR_NONE) {
+ ERR("Failed to send notify [%d]", ret);
+ return ret;
+ }
+ }
+
+ *reply_body = g_variant_new("(i)", deleted_num);
+ if (*reply_body == NULL) {
+ ERR("Failed to make reply_body");
+ return NOTIFICATION_ERROR_OUT_OF_MEMORY;
+ }
+
+ INFO("deleted num[%d]", deleted_num);
+ return ret;
+}
+
/* get_noti_count */
int notification_get_noti_count(GVariant *parameters, GVariant **reply_body, uid_t uid)
{