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);
+ } else if (g_strcmp0(method_name, "del_noti_by_display_applist") == 0) {
+ ret = notification_del_noti_by_display_applist(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'/>"
+ " <method name='del_noti_by_display_applist'>"
+ " <arg type='i' name='display_applist' direction='in'/>"
" <arg type='i' name='uid' direction='in'/>"
" <arg type='i' name='priv_id' direction='out'/>"
" </method>"
return ret;
}
-int notification_del_noti_multiple_by_viewer(GVariant *parameters,
+static void __free_deleted_list_info(gpointer data)
+{
+ notification_deleted_list_info_s *info =
+ (notification_deleted_list_info_s *)data;
+
+ if (info == NULL)
+ return;
+
+ if (info->app_id)
+ free(info->app_id);
+
+ free(info);
+}
+
+int notification_del_noti_by_display_applist(GVariant *parameters,
GVariant **reply_body, uid_t uid)
{
int ret;
- int viewer;
+ int display_applist = 0;
int deleted_num;
GList *deleted_list = NULL;
GList *iter_list = NULL;
GVariant *deleted_noti_list;
GVariantBuilder *builder;
uid_t param_uid;
+ notification_deleted_list_info_s *info = NULL;
- g_variant_get(parameters, "(ii)", &viewer, ¶m_uid);
+ g_variant_get(parameters, "(ii)", &display_applist, ¶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);
+ ret = notification_noti_delete_by_display_applist(display_applist,
+ &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);
+ g_list_free_full(deleted_list, __free_deleted_list_info);
return ret;
}
if (deleted_num > 0) {
builder = g_variant_builder_new(G_VARIANT_TYPE("a(i)"));
- iter_list = deleted_list;
+ iter_list = g_list_first(deleted_list);
while(iter_list) {
- g_variant_builder_add(builder, "(i)",
- GPOINTER_TO_INT(iter_list->data));
+ info = iter_list->data;
+ g_variant_builder_add(builder, "(i)", info->priv_id);
+ notification_remove_private_sharing(info->app_id, info->priv_id, param_uid);
+ __delete_sender_info(info->priv_id);
iter_list = g_list_next(iter_list);
}
-
- if (iter_list)
- g_list_free(iter_list);
-
- if (deleted_list)
- g_list_free(deleted_list);
+ g_list_free_full(deleted_list, __free_deleted_list_info);
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,
+ "delete_by_display_applist_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;
}
+
+ if (default_viewer != NULL) {
+ ret = notification_launch_default_viewer(default_viewer,
+ NOTIFICATION_PRIV_ID_NONE,
+ NOTIFICATION_OP_DELETE_ALL,
+ param_uid);
+ if (ret != NOTIFICATION_ERROR_NONE) {
+ ERR("Failed to launch default viewer [%d]", ret);
+ ret = NOTIFICATION_ERROR_NONE;
+ }
+ }
}
*reply_body = g_variant_new("(i)", deleted_num);