[Galago-commits] r2353 - in trunk/libnotify-ng: libnotify tests

galago-commits at freedesktop.org galago-commits at freedesktop.org
Fri Dec 2 12:36:50 PST 2005


Author: johnp
Date: 2005-12-02 12:36:46 -0800 (Fri, 02 Dec 2005)
New Revision: 2353

Modified:
   trunk/libnotify-ng/libnotify/notifynotification.c
   trunk/libnotify-ng/libnotify/notifynotification.h
   trunk/libnotify-ng/tests/test-basic.c
   trunk/libnotify-ng/tests/test-image.c
   trunk/libnotify-ng/tests/test-xy-stress.c
   trunk/libnotify-ng/tests/test-xy.c
Log:
* libnotify/notifynotification.c (SIGNAL_TYPE_CLOSED): "closed" glib
  signal added
  (notify_notification_clear_hints): New API for clearing out the 
  hints hash
  (notify_notification_ref, notify_notification_unref): removed - use
  g_object_ref/unref

* tests/*: Various changes to the test binaries



Modified: trunk/libnotify-ng/libnotify/notifynotification.c
===================================================================
--- trunk/libnotify-ng/libnotify/notifynotification.c	2005-12-02 09:48:24 UTC (rev 2352)
+++ trunk/libnotify-ng/libnotify/notifynotification.c	2005-12-02 20:36:46 UTC (rev 2353)
@@ -25,11 +25,13 @@
 static void notify_notification_class_init (NotifyNotificationClass * klass);
 static void notify_notification_init (NotifyNotification * sp);
 static void notify_notification_finalize (GObject * object);
+static void _close_signal_handler (DBusGProxy *proxy,
+                                   guint32 id, 
+                                   NotifyNotification *notification); 
 
 struct NotifyNotificationPrivate
 {
   guint32 id;
-
   gchar *summary;
   gchar *message;
 
@@ -58,19 +60,18 @@
   DBusGProxy *proxy;
 };
 
-#if 0
 typedef enum
 {
+  SIGNAL_TYPE_CLOSED, 
   LAST_SIGNAL
 } NotifyNotificationSignalType;
-#endif
 
 typedef struct
 {
   NotifyNotification *object;
 } NotifyNotificationSignal;
 
-/* static guint notify_notification_signals[LAST_SIGNAL] = { 0 }; */
+static guint notify_notification_signals[LAST_SIGNAL] = { 0 }; 
 static GObjectClass *parent_class = NULL;
 
 GType
@@ -107,9 +108,16 @@
   parent_class = g_type_class_peek_parent (klass);
   object_class->finalize = notify_notification_finalize;
 
-  /* Create signals here:
-     notify_notification_signals[SIGNAL_TYPE_EXAMPLE] = g_signal_new(...)
-   */
+  /* Create signals here: */
+     notify_notification_signals[SIGNAL_TYPE_CLOSED] = 
+       g_signal_new ("closed",
+                     G_TYPE_FROM_CLASS (object_class),
+                     G_SIGNAL_RUN_FIRST,
+                     G_STRUCT_OFFSET (NotifyNotificationClass, closed),
+                     NULL, NULL, 
+                     g_cclosure_marshal_VOID__VOID,
+                     G_TYPE_NONE,
+                     0);
 }
 
 static void
@@ -177,6 +185,10 @@
   if (priv->user_data_free_func != NULL)
     priv->user_data_free_func (priv->user_data);
 
+  dbus_g_proxy_disconnect_signal (priv->proxy, "NotificationClosed", 
+                                  _close_signal_handler, 
+                                  object);
+
   g_free (obj->priv);
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }
@@ -304,18 +316,6 @@
   return obj;
 }
 
-NotifyNotification *
-notify_notification_ref (NotifyNotification * notification)
-{
-  return NOTIFY_NOTIFICATION (g_object_ref (G_OBJECT (notification)));
-}
-
-void
-notify_notification_unref (NotifyNotification * notification)
-{
-  g_object_unref (G_OBJECT (notification));
-}
-
 gboolean
 notify_notification_update (NotifyNotification * notification,
 			    const gchar * summary,
@@ -385,8 +385,22 @@
   return DBUS_HANDLER_RESULT_HANDLED;
 }
 
+static void 
+_close_signal_handler (DBusGProxy *proxy, 
+                       guint32 id, 
+                       NotifyNotification *notification) 
+{
+  printf ("Got the NotificationClosed signal (id = %i, notification->id = %i)\n"
+, id, notification->priv->id);
+
+  if (id == notification->priv->id)
+      g_signal_emit (notification, 
+                     notify_notification_signals[SIGNAL_TYPE_CLOSED], 
+                     0);
+}
+
 gboolean
-notify_notification_show (NotifyNotification * notification, GError ** error)
+notify_notification_show (NotifyNotification *notification, GError **error)
 {
   NotifyNotificationPrivate *priv;
   GError *tmp_error;
@@ -408,15 +422,17 @@
 	  return FALSE;
 	}
 
-      /* Register the object here because 
-       * we need to start listening for signals
-       */
-      dbus_g_connection_register_g_object (bus, "/org/freedesktop/NotifyNotification", G_OBJECT (notification));
-
       priv->proxy = dbus_g_proxy_new_for_name (bus,
 					       NOTIFY_DBUS_NAME,
 					       NOTIFY_DBUS_CORE_OBJECT,
 					       NOTIFY_DBUS_CORE_INTERFACE);
+
+      dbus_g_proxy_add_signal (priv->proxy, "NotificationClosed",
+                               G_TYPE_UINT, NULL);
+      dbus_g_proxy_connect_signal (priv->proxy, "NotificationClosed", 
+                               _close_signal_handler, 
+                               notification, NULL);
+
       dbus_g_connection_unref (bus);
     }
 
@@ -715,8 +731,21 @@
   return TRUE;
 }
 
+static gboolean
+_remove_all (void)
+{
+  return TRUE;
+}
+
+void 
+notify_notification_clear_hints (NotifyNotification *notification)
+{
+  g_hash_table_foreach_remove (notification->priv->hints,
+                               (GHRFunc) _remove_all, NULL);
+}
+
 gboolean
-notify_notification_add_action (NotifyNotification * notification,
+notify_notification_add_action (NotifyNotification *notification,
 				const char *action,
 				const char *label,
 				NotifyActionCallback callback)

Modified: trunk/libnotify-ng/libnotify/notifynotification.h
===================================================================
--- trunk/libnotify-ng/libnotify/notifynotification.h	2005-12-02 09:48:24 UTC (rev 2352)
+++ trunk/libnotify-ng/libnotify/notifynotification.h	2005-12-02 20:36:46 UTC (rev 2353)
@@ -45,6 +45,7 @@
 typedef struct {
 	GObjectClass parent_class;
 	/* Add Signal Functions Here */
+	void (*closed) (void);
 } NotifyNotificationClass;
 
 typedef void (*NotifyActionCallback )(NotifyNotification *, gchar *);
@@ -105,6 +106,8 @@
                                          const guchar *value,
                                          gsize len);
 
+void notify_notification_clear_hints (NotifyNotification *notification);
+
 gboolean notify_notification_add_action (NotifyNotification *notification,
                                          const char *action,
                                          const char *label,

Modified: trunk/libnotify-ng/tests/test-basic.c
===================================================================
--- trunk/libnotify-ng/tests/test-basic.c	2005-12-02 09:48:24 UTC (rev 2352)
+++ trunk/libnotify-ng/tests/test-basic.c	2005-12-02 20:36:46 UTC (rev 2353)
@@ -29,7 +29,7 @@
 	notify_init("Basics");
 
 	n = notify_notification_new ("Summary", 
-                                     "Content",
+                                     "Content that is very long 8374983278r32j4 rhjjfh dw8f 43jhf 8ds7 ur2389f jdbjkt h8924yf jkdbjkt 892hjfiHER98HEJIF BDSJHF hjdhF JKLH 890YRHEJHFU 89HRJKSHFJ YE8UI HR3UIH89EFHIUEUF9DHFUIBuiew f89hsajiJ FHJKDSKJFH SDJKFH KJASDFJK HKJADSHFK JSAHF89WE HUIIUG JG kjG JKGJGHJg JHG H J HJGJHDG HJKJG hgd hgjhf df h3eui fusidyaiu rh f98ehkrnm e8rv9y 43heh vijdhjkewdkjsjfjk sdhkjf hdkj fadskj hfkjdsh",
                                      NULL, NULL);
         notify_notification_set_timeout (n, 3000); //3 seconds
 

Modified: trunk/libnotify-ng/tests/test-image.c
===================================================================
--- trunk/libnotify-ng/tests/test-image.c	2005-12-02 09:48:24 UTC (rev 2352)
+++ trunk/libnotify-ng/tests/test-image.c	2005-12-02 20:36:46 UTC (rev 2353)
@@ -56,6 +56,10 @@
 	if (!notify_init("Images Test")) exit(1);
 
 	n = notify_notification_new ("Icon Test", "Testing stock icon", "stock_help", NULL);
+
+        notify_notification_set_hint_int32 (n, "x", 300);
+        notify_notification_set_hint_int32 (n, "y", 24);
+
         notify_notification_set_timeout (n, NOTIFY_TIMEOUT_NEVER);
 	if (!notify_notification_show (n, NULL)) {
 		fprintf(stderr, "failed to send notification\n");

Modified: trunk/libnotify-ng/tests/test-xy-stress.c
===================================================================
--- trunk/libnotify-ng/tests/test-xy-stress.c	2005-12-02 09:48:24 UTC (rev 2352)
+++ trunk/libnotify-ng/tests/test-xy-stress.c	2005-12-02 20:36:46 UTC (rev 2353)
@@ -24,7 +24,17 @@
 #include <stdio.h>
 #include <unistd.h>
 
+#include <dbus/dbus.h>
+#include <dbus/dbus-glib.h>
+
 static void
+_handle_closed (GObject *o)
+{
+  g_message ("closing");
+  g_object_unref (o);
+}
+
+static void
 emit_notification(int x, int y)
 {
 	static char buffer[BUFSIZ];
@@ -40,47 +50,51 @@
 	notify_notification_set_hint_int32 (n, "x", x);
 	notify_notification_set_hint_int32 (n, "y", y);	
 
+	g_signal_connect (n, "closed", _handle_closed, NULL);
+
 	if (!notify_notification_show (n, NULL)) {
 		fprintf(stderr, "failed to send notification\n");
 		return 1;
 	}
 }
 
-int
-main(int argc, char **argv)
+static gboolean
+_popup_random_bubble (void)
 {
 	GdkDisplay *display;
 	GdkScreen *screen;
+
 	int screen_x2, screen_y2;
+	int x, y;
 
-	gdk_init(&argc, &argv);
-
-	notify_init("XY");
-
 	display   = gdk_display_get_default();
 	screen    = gdk_display_get_default_screen(display);
 	screen_x2 = gdk_screen_get_width(screen)  - 1;
 	screen_y2 = gdk_screen_get_height(screen) - 1;
 
-	emit_notification(0, 0);
-	g_usleep (1000000);
-	emit_notification(screen_x2, 0);
-	g_usleep (1000000);
-	emit_notification(5, 150);
-	g_usleep (1000000);
-	emit_notification(screen_x2 - 5, 150);
-	g_usleep (1000000);
-	emit_notification(0, screen_y2 / 2);
-	g_usleep (1000000);
-	emit_notification(screen_x2, screen_y2 / 2);
-	g_usleep (1000000);
-	emit_notification(5, screen_y2 - 150);
-	g_usleep (1000000);
-	emit_notification(screen_x2 - 5, screen_y2 - 150);
-	g_usleep (1000000);
-	emit_notification(0, screen_y2);
-	g_usleep (1000000);
-	emit_notification(screen_x2, screen_y2);
+	x = g_random_int_range (0, screen_x2);
+	y = g_random_int_range (0, screen_y2);
+	emit_notification(x, y);
 
-	return 0;
+	return TRUE;
 }
+
+int
+main(int argc, char **argv)
+{
+        GMainLoop *loop;
+        DBusConnection *conn;
+ 
+	gdk_init(&argc, &argv);
+
+	notify_init("XY");
+
+        conn = dbus_bus_get (DBUS_BUS_SESSION, NULL);
+
+        dbus_connection_setup_with_g_main (conn, NULL);
+
+        g_timeout_add (1000, _popup_random_bubble, NULL);
+
+        loop = g_main_loop_new (NULL, FALSE);
+        g_main_loop_run (loop);
+}

Modified: trunk/libnotify-ng/tests/test-xy.c
===================================================================
--- trunk/libnotify-ng/tests/test-xy.c	2005-12-02 09:48:24 UTC (rev 2352)
+++ trunk/libnotify-ng/tests/test-xy.c	2005-12-02 20:36:46 UTC (rev 2353)
@@ -32,7 +32,7 @@
                                      "This notification should point to 150, 10",
                                      NULL, NULL);
 
-	notify_notification_set_hint_int32 (n, "x", 150);
+	notify_notification_set_hint_int32 (n, "x", 30);
 	notify_notification_set_hint_int32 (n, "y", 10);
 
 	if (!notify_notification_show (n, NULL)) {



More information about the galago-commits mailing list