From 284a4548b8153439962c791ab17b3498a20233e1 Mon Sep 17 00:00:00 2001 From: Bjoern Hiller Date: Wed, 1 May 2024 20:19:27 +0200 Subject: [PATCH 1/3] Factor out method to write notification queue entries to DBus This will be removed for the displayed queue in the future. --- src/dbus.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/dbus.c b/src/dbus.c index e989d5caa..198c89a61 100644 --- a/src/dbus.c +++ b/src/dbus.c @@ -332,20 +332,17 @@ static void dbus_cb_dunst_NotificationShow(GDBusConnection *connection, g_dbus_connection_flush(connection, NULL, NULL, NULL); } -static void dbus_cb_dunst_NotificationListHistory(GDBusConnection *connection, - const gchar *sender, - GVariant *parameters, - GDBusMethodInvocation *invocation) +static void dbus_answer_queue_entries(GDBusConnection *connection, + GDBusMethodInvocation *invocation, + int list_length, + GList *notification_list +) { - LOG_D("CMD: Listing all notifications from history"); - GVariantBuilder builder; g_variant_builder_init(&builder, G_VARIANT_TYPE("aa{sv}")); - GList *notification_list = queues_get_history(); - // reverse chronological list - for(int i = queues_length_history(); i > 0; i--) { + for(int i = list_length; i > 0; i--) { struct notification *n; n = g_list_nth_data(notification_list, i-1); @@ -384,6 +381,15 @@ static void dbus_cb_dunst_NotificationListHistory(GDBusConnection *connection, g_dbus_connection_flush(connection, NULL, NULL, NULL); } +static void dbus_cb_dunst_NotificationListHistory(GDBusConnection *connection, + const gchar *sender, + GVariant *parameters, + GDBusMethodInvocation *invocation) +{ + LOG_D("CMD: Listing all notifications from history"); + dbus_answer_queue_entries(connection, invocation, queues_length_history(), queues_get_history()); +} + static void dbus_cb_dunst_NotificationPopHistory(GDBusConnection *connection, const gchar *sender, GVariant *parameters, From a513d2b166d0f8db8287ee6522f53af7c77a7f22 Mon Sep 17 00:00:00 2001 From: Bjoern Hiller Date: Wed, 1 May 2024 20:20:11 +0200 Subject: [PATCH 2/3] Add new NotificationListDisplayed method to DBus This is analog to the already present `NotificationListHistory` and allows e.g. for selectively closing some notifications. --- src/dbus.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/dbus.c b/src/dbus.c index 198c89a61..d1d5f8ead 100644 --- a/src/dbus.c +++ b/src/dbus.c @@ -83,6 +83,9 @@ static const char *introspection_xml = " " " " " " + " " + " " + " " " " " " " " @@ -187,6 +190,7 @@ DBUS_METHOD(dunst_NotificationAction); DBUS_METHOD(dunst_NotificationClearHistory); DBUS_METHOD(dunst_NotificationCloseAll); DBUS_METHOD(dunst_NotificationCloseLast); +DBUS_METHOD(dunst_NotificationListDisplayed); DBUS_METHOD(dunst_NotificationListHistory); DBUS_METHOD(dunst_NotificationPopHistory); DBUS_METHOD(dunst_NotificationRemoveFromHistory); @@ -200,6 +204,7 @@ static struct dbus_method methods_dunst[] = { {"NotificationClearHistory", dbus_cb_dunst_NotificationClearHistory}, {"NotificationCloseAll", dbus_cb_dunst_NotificationCloseAll}, {"NotificationCloseLast", dbus_cb_dunst_NotificationCloseLast}, + {"NotificationListDisplayed", dbus_cb_dunst_NotificationListDisplayed}, {"NotificationListHistory", dbus_cb_dunst_NotificationListHistory}, {"NotificationPopHistory", dbus_cb_dunst_NotificationPopHistory}, {"NotificationRemoveFromHistory", dbus_cb_dunst_NotificationRemoveFromHistory}, @@ -381,6 +386,15 @@ static void dbus_answer_queue_entries(GDBusConnection *connection, g_dbus_connection_flush(connection, NULL, NULL, NULL); } +static void dbus_cb_dunst_NotificationListDisplayed(GDBusConnection *connection, + const gchar *sender, + GVariant *parameters, + GDBusMethodInvocation *invocation) +{ + LOG_D("CMD: Listing all currently displayed notifications"); + dbus_answer_queue_entries(connection, invocation, queues_length_displayed(), queues_get_displayed()); +} + static void dbus_cb_dunst_NotificationListHistory(GDBusConnection *connection, const gchar *sender, GVariant *parameters, From 3b29cae807b4504e19c5063304cfb42b0823eb8c Mon Sep 17 00:00:00 2001 From: Bjoern Hiller Date: Wed, 1 May 2024 20:57:08 +0200 Subject: [PATCH 3/3] fixup! Factor out method to write notification queue entries to DBus --- src/dbus.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/dbus.c b/src/dbus.c index d1d5f8ead..da6a1c8db 100644 --- a/src/dbus.c +++ b/src/dbus.c @@ -340,8 +340,7 @@ static void dbus_cb_dunst_NotificationShow(GDBusConnection *connection, static void dbus_answer_queue_entries(GDBusConnection *connection, GDBusMethodInvocation *invocation, int list_length, - GList *notification_list -) + GList *notification_list) { GVariantBuilder builder; g_variant_builder_init(&builder, G_VARIANT_TYPE("aa{sv}"));