From 931ee90269a965820091d1397e4f5ebf123720a7 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 12 Mar 2010 13:58:39 -0600 Subject: Adding in base objects --- src/session-dbus.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/session-dbus.c (limited to 'src/session-dbus.c') diff --git a/src/session-dbus.c b/src/session-dbus.c new file mode 100644 index 0000000..2b7443e --- /dev/null +++ b/src/session-dbus.c @@ -0,0 +1,54 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "session-dbus.h" + +typedef struct _SessionDbusPrivate SessionDbusPrivate; +struct _SessionDbusPrivate { + gint dummy; +}; + +#define SESSION_DBUS_GET_PRIVATE(o) \ +(G_TYPE_INSTANCE_GET_PRIVATE ((o), SESSION_DBUS_TYPE, SessionDbusPrivate)) + +static void session_dbus_class_init (SessionDbusClass *klass); +static void session_dbus_init (SessionDbus *self); +static void session_dbus_dispose (GObject *object); +static void session_dbus_finalize (GObject *object); + +G_DEFINE_TYPE (SessionDbus, session_dbus, G_TYPE_OBJECT); + +static void +session_dbus_class_init (SessionDbusClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (klass, sizeof (SessionDbusPrivate)); + + object_class->dispose = session_dbus_dispose; + object_class->finalize = session_dbus_finalize; + + return; +} + +static void +session_dbus_init (SessionDbus *self) +{ +} + +static void +session_dbus_dispose (GObject *object) +{ + + G_OBJECT_CLASS (session_dbus_parent_class)->dispose (object); + return; +} + +static void +session_dbus_finalize (GObject *object) +{ + + G_OBJECT_CLASS (session_dbus_parent_class)->finalize (object); + return; +} -- cgit v1.2.3 From 2922e646021966770309caf17538b4b241885973 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 12 Mar 2010 14:14:12 -0600 Subject: Connecting and registering the dbus object. --- src/session-dbus.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/session-dbus.c') diff --git a/src/session-dbus.c b/src/session-dbus.c index 2b7443e..3f5e6c7 100644 --- a/src/session-dbus.c +++ b/src/session-dbus.c @@ -4,6 +4,10 @@ #include "session-dbus.h" +static gboolean _session_dbus_server_get_icon (SessionDbus * service, gchar ** icon, GError ** error); + +#include "session-dbus-server.h" + typedef struct _SessionDbusPrivate SessionDbusPrivate; struct _SessionDbusPrivate { gint dummy; @@ -29,6 +33,8 @@ session_dbus_class_init (SessionDbusClass *klass) object_class->dispose = session_dbus_dispose; object_class->finalize = session_dbus_finalize; + dbus_g_object_type_install_info(SESSION_DBUS_TYPE, &dbus_glib__session_dbus_server_object_info); + return; } @@ -52,3 +58,10 @@ session_dbus_finalize (GObject *object) G_OBJECT_CLASS (session_dbus_parent_class)->finalize (object); return; } + +static gboolean +_session_dbus_server_get_icon (SessionDbus * service, gchar ** icon, GError ** error) +{ + + return TRUE; +} -- cgit v1.2.3 From d9427c6a4ecc0a50cac8a674c465631c59ff59f2 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 12 Mar 2010 14:22:40 -0600 Subject: Setting up the object and giving it a name. --- src/session-dbus.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'src/session-dbus.c') diff --git a/src/session-dbus.c b/src/session-dbus.c index 3f5e6c7..96b4500 100644 --- a/src/session-dbus.c +++ b/src/session-dbus.c @@ -10,7 +10,7 @@ static gboolean _session_dbus_server_get_icon (SessionDbus * service, gchar ** i typedef struct _SessionDbusPrivate SessionDbusPrivate; struct _SessionDbusPrivate { - gint dummy; + gchar * name; }; #define SESSION_DBUS_GET_PRIVATE(o) \ @@ -41,6 +41,14 @@ session_dbus_class_init (SessionDbusClass *klass) static void session_dbus_init (SessionDbus *self) { + DBusGConnection * session = dbus_g_bus_get(DBUS_BUS_SESSION, NULL); + dbus_g_connection_register_g_object(session, "/bob", G_OBJECT(self)); + + SessionDbusPrivate * priv = SESSION_DBUS_GET_PRIVATE(self); + + priv->name = g_strdup("icon"); + + return; } static void @@ -54,6 +62,12 @@ session_dbus_dispose (GObject *object) static void session_dbus_finalize (GObject *object) { + SessionDbusPrivate * priv = SESSION_DBUS_GET_PRIVATE(object); + + if (priv->name != NULL) { + g_free(priv->name); + priv->name = NULL; + } G_OBJECT_CLASS (session_dbus_parent_class)->finalize (object); return; @@ -62,6 +76,7 @@ session_dbus_finalize (GObject *object) static gboolean _session_dbus_server_get_icon (SessionDbus * service, gchar ** icon, GError ** error) { - + SessionDbusPrivate * priv = SESSION_DBUS_GET_PRIVATE(service); + *icon = g_strdup(priv->name); return TRUE; } -- cgit v1.2.3 From a92cec4aa9f3b7a014f9ed0e3dc3b2617e4114be Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 12 Mar 2010 14:26:46 -0600 Subject: providing a set_name function --- src/session-dbus.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/session-dbus.c') diff --git a/src/session-dbus.c b/src/session-dbus.c index 96b4500..cc12311 100644 --- a/src/session-dbus.c +++ b/src/session-dbus.c @@ -80,3 +80,15 @@ _session_dbus_server_get_icon (SessionDbus * service, gchar ** icon, GError ** e *icon = g_strdup(priv->name); return TRUE; } + +void +session_dbus_set_name (SessionDbus * session, const gchar * name) +{ + SessionDbusPrivate * priv = SESSION_DBUS_GET_PRIVATE(session); + if (priv->name != NULL) { + g_free(priv->name); + priv->name = NULL; + } + priv->name = g_strdup(name); + return; +} -- cgit v1.2.3 From 0d2c0778772b92815dd1a773f6a5e10ed3c80869 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 12 Mar 2010 14:33:30 -0600 Subject: Build us a signal --- src/session-dbus.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/session-dbus.c') diff --git a/src/session-dbus.c b/src/session-dbus.c index cc12311..fd506ad 100644 --- a/src/session-dbus.c +++ b/src/session-dbus.c @@ -13,6 +13,14 @@ struct _SessionDbusPrivate { gchar * name; }; +/* Signals */ +enum { + ICON_UPDATED, + LAST_SIGNAL +}; + +static guint signals[LAST_SIGNAL] = { 0 }; + #define SESSION_DBUS_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), SESSION_DBUS_TYPE, SessionDbusPrivate)) @@ -33,6 +41,14 @@ session_dbus_class_init (SessionDbusClass *klass) object_class->dispose = session_dbus_dispose; object_class->finalize = session_dbus_finalize; + signals[ICON_UPDATED] = g_signal_new ("icon-updated", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (SessionDbusClass, icon_updated), + NULL, NULL, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, 1, G_TYPE_STRING); + dbus_g_object_type_install_info(SESSION_DBUS_TYPE, &dbus_glib__session_dbus_server_object_info); return; @@ -90,5 +106,6 @@ session_dbus_set_name (SessionDbus * session, const gchar * name) priv->name = NULL; } priv->name = g_strdup(name); + g_signal_emit(G_OBJECT(session), signals[ICON_UPDATED], 0, priv->name, TRUE); return; } -- cgit v1.2.3 From e504d1d019cf0af9b210d8150a5822f5e4878f4f Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 12 Mar 2010 14:37:58 -0600 Subject: Creating our little dbus-object. --- src/session-dbus.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/session-dbus.c') diff --git a/src/session-dbus.c b/src/session-dbus.c index fd506ad..60002d0 100644 --- a/src/session-dbus.c +++ b/src/session-dbus.c @@ -97,6 +97,12 @@ _session_dbus_server_get_icon (SessionDbus * service, gchar ** icon, GError ** e return TRUE; } +SessionDbus * +session_dbus_new (void) +{ + return SESSION_DBUS(g_object_new(SESSION_DBUS_TYPE, NULL)); +} + void session_dbus_set_name (SessionDbus * session, const gchar * name) { -- cgit v1.2.3 From 05dbbb9a09bfa74c23683c8110bf0853635a635e Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 12 Mar 2010 14:59:01 -0600 Subject: Add shared names for the dbus interfaces. --- src/session-dbus.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/session-dbus.c') diff --git a/src/session-dbus.c b/src/session-dbus.c index 60002d0..f656bb0 100644 --- a/src/session-dbus.c +++ b/src/session-dbus.c @@ -3,6 +3,7 @@ #endif #include "session-dbus.h" +#include "dbus-shared-names.h" static gboolean _session_dbus_server_get_icon (SessionDbus * service, gchar ** icon, GError ** error); @@ -58,7 +59,7 @@ static void session_dbus_init (SessionDbus *self) { DBusGConnection * session = dbus_g_bus_get(DBUS_BUS_SESSION, NULL); - dbus_g_connection_register_g_object(session, "/bob", G_OBJECT(self)); + dbus_g_connection_register_g_object(session, INDICATOR_SESSION_SERVICE_DBUS_OBJECT, G_OBJECT(self)); SessionDbusPrivate * priv = SESSION_DBUS_GET_PRIVATE(self); -- cgit v1.2.3 From 802d6447947701b2578a29babd2357642b982645 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 12 Mar 2010 15:35:07 -0600 Subject: Setting the icon to something sensable --- src/session-dbus.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/session-dbus.c') diff --git a/src/session-dbus.c b/src/session-dbus.c index f656bb0..7159d7f 100644 --- a/src/session-dbus.c +++ b/src/session-dbus.c @@ -63,7 +63,7 @@ session_dbus_init (SessionDbus *self) SessionDbusPrivate * priv = SESSION_DBUS_GET_PRIVATE(self); - priv->name = g_strdup("icon"); + priv->name = g_strdup("system-shutdown-panel"); return; } -- cgit v1.2.3 From 2dd05e216cdc0e7ab9318a410758eade2d3e68a4 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 12 Mar 2010 15:49:52 -0600 Subject: Moving the icon names into the shared header files --- src/session-dbus.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/session-dbus.c') diff --git a/src/session-dbus.c b/src/session-dbus.c index 7159d7f..1413916 100644 --- a/src/session-dbus.c +++ b/src/session-dbus.c @@ -63,7 +63,7 @@ session_dbus_init (SessionDbus *self) SessionDbusPrivate * priv = SESSION_DBUS_GET_PRIVATE(self); - priv->name = g_strdup("system-shutdown-panel"); + priv->name = g_strdup(ICON_DEFAULT); return; } -- cgit v1.2.3 From 8d65fd684fb6672d513bb1cf29e182ee5696a375 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 12 Mar 2010 16:10:57 -0600 Subject: Copyright headers --- src/session-dbus.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/session-dbus.c') diff --git a/src/session-dbus.c b/src/session-dbus.c index 1413916..20a0fa0 100644 --- a/src/session-dbus.c +++ b/src/session-dbus.c @@ -1,3 +1,24 @@ +/* +The Dbus object on the bus for the indicator. + +Copyright 2010 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