[libnotify] notify-send: Support for replacing an existing notification



commit 652b4d6911e95adba15d3efddce08364a925877a
Author: Paul Collins <paul collins canonical com>
Date:   Tue May 22 13:26:08 2012 +0200

    notify-send: Support for replacing an existing notification
    
    Support printing and overriding notification ID, so that it's possible
    to replace a notification that is currently showing with an updated
    content.
    
    Based on patch as provided by Paul Collins in the following bug
    report:
      https://bugs.launchpad.net/ubuntu/+source/libnotify/+bug/257135/comments/8
    
    Co-authored-by: Marco Trevisan (TreviƱo) <mail 3v1n0 net>
    
    Fixes #19

 tools/notify-send.c | 21 ++++++++++++++++++---
 1 file changed, 18 insertions(+), 3 deletions(-)
---
diff --git a/tools/notify-send.c b/tools/notify-send.c
index 15aa164..937fb41 100644
--- a/tools/notify-send.c
+++ b/tools/notify-send.c
@@ -130,6 +130,8 @@ main (int argc, char *argv[])
         static char        *icon_str = NULL;
         static char       **n_text = NULL;
         static char       **hints = NULL;
+        static gboolean     print_id = FALSE;
+        static gint         notification_id = 0;
         static gboolean     do_version = FALSE;
         static gboolean     hint_error = FALSE, show_error = FALSE;
         static glong        expire_timeout = NOTIFY_EXPIRES_DEFAULT;
@@ -159,6 +161,10 @@ main (int argc, char *argv[])
                  N_
                  ("Specifies basic extra data to pass. Valid types are int, double, string and byte."),
                  N_("TYPE:NAME:VALUE")},
+                {"print-id", 'p', 0, G_OPTION_ARG_NONE, &print_id,
+                 N_ ("Print the notification ID."), NULL},
+                {"replace-id", 'r', 0, G_OPTION_ARG_INT, &notification_id,
+                 N_ ("The ID of the notification to replace."), N_("REPLACE_ID")},
                 {"version", 'v', 0, G_OPTION_ARG_NONE, &do_version,
                  N_("Version of the package."),
                  NULL},
@@ -217,9 +223,13 @@ main (int argc, char *argv[])
         if (!notify_init ("notify-send"))
                 exit (1);
 
-        notify = notify_notification_new (summary,
-                                          body,
-                                          icon_str);
+        notify = g_object_new (NOTIFY_TYPE_NOTIFICATION,
+                               "summary", summary,
+                               "body", body,
+                               "icon-name", icon_str,
+                               "id", notification_id,
+                               NULL);
+
         notify_notification_set_category (notify, type);
         notify_notification_set_urgency (notify, urgency);
         notify_notification_set_timeout (notify, expire_timeout);
@@ -273,6 +283,11 @@ main (int argc, char *argv[])
                 }
         }
 
+        if (print_id) {
+                g_object_get (notify, "id", &notification_id, NULL);
+                g_printf ("%d\n", notification_id);
+        }
+
         g_object_unref (G_OBJECT (notify));
 
         notify_uninit ();


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]