From e7695d9f9da90e12aaefe490e46e18d3b32f33dd Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 25 Aug 2009 22:08:41 -0500 Subject: Building an object to represent the service over DBus. --- src/messages-service-dbus.c | 84 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 src/messages-service-dbus.c (limited to 'src/messages-service-dbus.c') diff --git a/src/messages-service-dbus.c b/src/messages-service-dbus.c new file mode 100644 index 0000000..6fa2125 --- /dev/null +++ b/src/messages-service-dbus.c @@ -0,0 +1,84 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "messages-service-dbus.h" + +typedef struct _MessageServiceDbusPrivate MessageServiceDbusPrivate; + +struct _MessageServiceDbusPrivate +{ + guint temp; +}; + +#define MESSAGE_SERVICE_DBUS_GET_PRIVATE(o) \ +(G_TYPE_INSTANCE_GET_PRIVATE ((o), MESSAGE_SERVICE_DBUS_TYPE, MessageServiceDbusPrivate)) + +static void message_service_dbus_class_init (MessageServiceDbusClass *klass); +static void message_service_dbus_init (MessageServiceDbus *self); +static void message_service_dbus_dispose (GObject *object); +static void message_service_dbus_finalize (GObject *object); + +static void _messages_service_server_watch (void); +static void _messages_service_server_attention_requested (void); +static void _messages_service_server_icon_shown (void); + +#include "messages-service-server.h" + +G_DEFINE_TYPE (MessageServiceDbus, message_service_dbus, G_TYPE_OBJECT); + +static void +message_service_dbus_class_init (MessageServiceDbusClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (klass, sizeof (MessageServiceDbusPrivate)); + + object_class->dispose = message_service_dbus_dispose; + object_class->finalize = message_service_dbus_finalize; + + return; +} + +static void +message_service_dbus_init (MessageServiceDbus *self) +{ + return; +} + +static void +message_service_dbus_dispose (GObject *object) +{ + + + G_OBJECT_CLASS (message_service_dbus_parent_class)->dispose (object); + return; +} + +static void +message_service_dbus_finalize (GObject *object) +{ + + + G_OBJECT_CLASS (message_service_dbus_parent_class)->finalize (object); + return; +} + +static void +_messages_service_server_watch (void) +{ + +} + +static void +_messages_service_server_attention_requested (void) +{ + +} + +static void +_messages_service_server_icon_shown (void) +{ + +} + -- cgit v1.2.3 From 2b7746e2e74ffbafb7f1eb663a6a525dec9d28cb Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 25 Aug 2009 22:23:15 -0500 Subject: Creating a real object and initing it. --- src/messages-service-dbus.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/messages-service-dbus.c') diff --git a/src/messages-service-dbus.c b/src/messages-service-dbus.c index 6fa2125..ecc74e2 100644 --- a/src/messages-service-dbus.c +++ b/src/messages-service-dbus.c @@ -64,6 +64,12 @@ message_service_dbus_finalize (GObject *object) return; } +MessageServiceDbus * +message_service_dbus_new (void) +{ + return MESSAGE_SERVICE_DBUS(g_object_new(MESSAGE_SERVICE_DBUS_TYPE, NULL)); +} + static void _messages_service_server_watch (void) { -- cgit v1.2.3 From 96b2dc1cc2be79cdda2fb109eebe2f4bab6551d9 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 25 Aug 2009 22:48:52 -0500 Subject: Bringing up the object and having some variables to access. --- src/messages-service-dbus.c | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) (limited to 'src/messages-service-dbus.c') diff --git a/src/messages-service-dbus.c b/src/messages-service-dbus.c index ecc74e2..5ce7695 100644 --- a/src/messages-service-dbus.c +++ b/src/messages-service-dbus.c @@ -2,13 +2,16 @@ #include "config.h" #endif +#include #include "messages-service-dbus.h" +#include "dbus-data.h" typedef struct _MessageServiceDbusPrivate MessageServiceDbusPrivate; struct _MessageServiceDbusPrivate { - guint temp; + gboolean dot; + gboolean hidden; }; #define MESSAGE_SERVICE_DBUS_GET_PRIVATE(o) \ @@ -20,8 +23,8 @@ static void message_service_dbus_dispose (GObject *object); static void message_service_dbus_finalize (GObject *object); static void _messages_service_server_watch (void); -static void _messages_service_server_attention_requested (void); -static void _messages_service_server_icon_shown (void); +static gboolean _messages_service_server_attention_requested (MessageServiceDbus * self, gboolean * dot, GError ** error); +static gboolean _messages_service_server_icon_shown (MessageServiceDbus * self, gboolean * hidden, GError ** error); #include "messages-service-server.h" @@ -37,12 +40,24 @@ message_service_dbus_class_init (MessageServiceDbusClass *klass) object_class->dispose = message_service_dbus_dispose; object_class->finalize = message_service_dbus_finalize; + dbus_g_object_type_install_info(MESSAGE_SERVICE_DBUS_TYPE, &dbus_glib__messages_service_server_object_info); + return; } static void message_service_dbus_init (MessageServiceDbus *self) { + DBusGConnection * connection = dbus_g_bus_get(DBUS_BUS_SESSION, NULL); + dbus_g_connection_register_g_object(connection, + INDICATOR_MESSAGES_DBUS_SERVICE_OBJECT, + G_OBJECT(self)); + + MessageServiceDbusPrivate * priv = MESSAGE_SERVICE_DBUS_GET_PRIVATE(self); + + priv->dot = FALSE; + priv->hidden = FALSE; + return; } @@ -76,15 +91,19 @@ _messages_service_server_watch (void) } -static void -_messages_service_server_attention_requested (void) +static gboolean +_messages_service_server_attention_requested (MessageServiceDbus * self, gboolean * dot, GError ** error) { - + MessageServiceDbusPrivate * priv = MESSAGE_SERVICE_DBUS_GET_PRIVATE(self); + *dot = priv->dot; + return TRUE; } -static void -_messages_service_server_icon_shown (void) +static gboolean +_messages_service_server_icon_shown (MessageServiceDbus * self, gboolean * hidden, GError ** error) { - + MessageServiceDbusPrivate * priv = MESSAGE_SERVICE_DBUS_GET_PRIVATE(self); + *hidden = priv->hidden; + return TRUE; } -- cgit v1.2.3 From 9efbade0a88f7ebce9ceb8d06293b1d636d02672 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 26 Aug 2009 09:17:50 -0500 Subject: Some comments. --- src/messages-service-dbus.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/messages-service-dbus.c') diff --git a/src/messages-service-dbus.c b/src/messages-service-dbus.c index 5ce7695..da91af5 100644 --- a/src/messages-service-dbus.c +++ b/src/messages-service-dbus.c @@ -85,12 +85,15 @@ message_service_dbus_new (void) return MESSAGE_SERVICE_DBUS(g_object_new(MESSAGE_SERVICE_DBUS_TYPE, NULL)); } +/* DBus function to say that someone is watching */ static void _messages_service_server_watch (void) { } +/* DBus interface to request the private variable to know + whether there is a green dot. */ static gboolean _messages_service_server_attention_requested (MessageServiceDbus * self, gboolean * dot, GError ** error) { @@ -99,6 +102,8 @@ _messages_service_server_attention_requested (MessageServiceDbus * self, gboolea return TRUE; } +/* DBus interface to request the private variable to know + whether the icon is hidden. */ static gboolean _messages_service_server_icon_shown (MessageServiceDbus * self, gboolean * hidden, GError ** error) { -- cgit v1.2.3 From 4b1b97c765557715451b16aa9c409e1539050b9f Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 26 Aug 2009 09:20:34 -0500 Subject: Adding the basic set functions into the C files. --- src/messages-service-dbus.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/messages-service-dbus.c') diff --git a/src/messages-service-dbus.c b/src/messages-service-dbus.c index da91af5..8d0d5e7 100644 --- a/src/messages-service-dbus.c +++ b/src/messages-service-dbus.c @@ -112,3 +112,20 @@ _messages_service_server_icon_shown (MessageServiceDbus * self, gboolean * hidde return TRUE; } +void +message_server_dbus_set_attention (MessageServiceDbus * self, gboolean attention) +{ + MessageServiceDbusPrivate * priv = MESSAGE_SERVICE_DBUS_GET_PRIVATE(self); + /* Do signal */ + priv->dot = attention; + return; +} + +void +message_server_dbus_set_icon (MessageServiceDbus * self, gboolean hidden) +{ + MessageServiceDbusPrivate * priv = MESSAGE_SERVICE_DBUS_GET_PRIVATE(self); + /* Do signal */ + priv->hidden = hidden; + return; +} -- cgit v1.2.3 From 964062bdeb9d3e9ca8db4bb0466440523c323f39 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 26 Aug 2009 09:30:16 -0500 Subject: Making some signal lovin' --- src/messages-service-dbus.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src/messages-service-dbus.c') diff --git a/src/messages-service-dbus.c b/src/messages-service-dbus.c index 8d0d5e7..38f2894 100644 --- a/src/messages-service-dbus.c +++ b/src/messages-service-dbus.c @@ -6,6 +6,14 @@ #include "messages-service-dbus.h" #include "dbus-data.h" +enum { + ATTENTION_CHANGED, + ICON_CHANGED, + LAST_SIGNAL +}; + +static guint signals[LAST_SIGNAL] = { 0 }; + typedef struct _MessageServiceDbusPrivate MessageServiceDbusPrivate; struct _MessageServiceDbusPrivate @@ -40,6 +48,23 @@ message_service_dbus_class_init (MessageServiceDbusClass *klass) object_class->dispose = message_service_dbus_dispose; object_class->finalize = message_service_dbus_finalize; + signals[ATTENTION_CHANGED] = g_signal_new(MESSAGE_SERVICE_DBUS_SIGNAL_ATTENTION_CHANGED, + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (MessageServiceDbusClass, attention_changed), + NULL, NULL, + g_cclosure_marshal_VOID__BOOLEAN, + G_TYPE_NONE, 1, G_TYPE_BOOLEAN); + + signals[ICON_CHANGED] = g_signal_new(MESSAGE_SERVICE_DBUS_SIGNAL_ICON_CHANGED, + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (MessageServiceDbusClass, icon_changed), + NULL, NULL, + g_cclosure_marshal_VOID__BOOLEAN, + G_TYPE_NONE, 1, G_TYPE_BOOLEAN); + + dbus_g_object_type_install_info(MESSAGE_SERVICE_DBUS_TYPE, &dbus_glib__messages_service_server_object_info); return; -- cgit v1.2.3 From 3e09c01a33e88d9789678adbdb57f1bfcbe44edd Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 26 Aug 2009 09:37:53 -0500 Subject: Okay, now we're signaling change. --- src/messages-service-dbus.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/messages-service-dbus.c') diff --git a/src/messages-service-dbus.c b/src/messages-service-dbus.c index 38f2894..108360b 100644 --- a/src/messages-service-dbus.c +++ b/src/messages-service-dbus.c @@ -142,7 +142,10 @@ message_server_dbus_set_attention (MessageServiceDbus * self, gboolean attention { MessageServiceDbusPrivate * priv = MESSAGE_SERVICE_DBUS_GET_PRIVATE(self); /* Do signal */ - priv->dot = attention; + if (attention != priv->dot) { + priv->dot = attention; + g_signal_emit(G_OBJECT(self), signals[ATTENTION_CHANGED], 0, priv->dot, TRUE); + } return; } @@ -151,6 +154,9 @@ message_server_dbus_set_icon (MessageServiceDbus * self, gboolean hidden) { MessageServiceDbusPrivate * priv = MESSAGE_SERVICE_DBUS_GET_PRIVATE(self); /* Do signal */ - priv->hidden = hidden; + if (hidden != priv->hidden) { + priv->hidden = hidden; + g_signal_emit(G_OBJECT(self), signals[ICON_CHANGED], 0, priv->hidden, TRUE); + } return; } -- cgit v1.2.3 From cffb400b0c368f4314f734596c144278dbb2ce53 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 26 Aug 2009 10:15:57 -0500 Subject: Legal crap. --- src/messages-service-dbus.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/messages-service-dbus.c') diff --git a/src/messages-service-dbus.c b/src/messages-service-dbus.c index 108360b..7b0a0ff 100644 --- a/src/messages-service-dbus.c +++ b/src/messages-service-dbus.c @@ -1,3 +1,25 @@ +/* +An indicator to show information that is in messaging applications +that the user is using. + +Copyright 2009 Canonical Ltd. + +Authors: + Ted Gould + +This program is free software: you can redistribute it and/or modify it +under the terms of the GNU General Public License version 3, as published +by the Free Software Foundation. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranties of +MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR +PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program. If not, see . +*/ + #ifdef HAVE_CONFIG_H #include "config.h" #endif -- cgit v1.2.3 From fe8917650da7a04c0a7ed4a6549597f2f6437101 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 26 Aug 2009 10:35:56 -0500 Subject: Bad name, fixed. --- src/messages-service-dbus.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/messages-service-dbus.c') diff --git a/src/messages-service-dbus.c b/src/messages-service-dbus.c index 7b0a0ff..d9c0e8d 100644 --- a/src/messages-service-dbus.c +++ b/src/messages-service-dbus.c @@ -160,7 +160,7 @@ _messages_service_server_icon_shown (MessageServiceDbus * self, gboolean * hidde } void -message_server_dbus_set_attention (MessageServiceDbus * self, gboolean attention) +message_service_dbus_set_attention (MessageServiceDbus * self, gboolean attention) { MessageServiceDbusPrivate * priv = MESSAGE_SERVICE_DBUS_GET_PRIVATE(self); /* Do signal */ @@ -172,7 +172,7 @@ message_server_dbus_set_attention (MessageServiceDbus * self, gboolean attention } void -message_server_dbus_set_icon (MessageServiceDbus * self, gboolean hidden) +message_service_dbus_set_icon (MessageServiceDbus * self, gboolean hidden) { MessageServiceDbusPrivate * priv = MESSAGE_SERVICE_DBUS_GET_PRIVATE(self); /* Do signal */ -- cgit v1.2.3