aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Makefile.am2
-rw-r--r--src/dbus-shared-names.h15
-rw-r--r--src/indicator-fusa.c43
3 files changed, 53 insertions, 7 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index 3bae3f2..325e351 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -2,5 +2,5 @@
fusalibdir = $(INDICATORDIR)
fusalib_LTLIBRARIES = libfusa.la
libfusa_la_SOURCES = indicator-fusa.c
-libfusa_la_CFLAGS = $(APPLET_CFLAGS)
+libfusa_la_CFLAGS = $(APPLET_CFLAGS) -Wall -Werror
libfusa_la_LIBADD = $(APPLET_LIBS)
diff --git a/src/dbus-shared-names.h b/src/dbus-shared-names.h
index 35839a4..f56e9cb 100644
--- a/src/dbus-shared-names.h
+++ b/src/dbus-shared-names.h
@@ -1,3 +1,14 @@
-#define INDICATOR_FUSA_DBUS_NAME "org.indicators.fusa"
-#define INDICATOR_FUSA_DBUS_OBJECT "/org/fusa"
+#ifndef __DBUS_SHARED_NAMES_H__
+#define __DBUS_SHARED_NAMES_H__ 1
+
+#define INDICATOR_STATUS_DBUS_NAME "com.ubuntu.indicator.status"
+#define INDICATOR_STATUS_DBUS_OBJECT "/com/ubuntu/indicator/status"
+
+#define INDICATOR_USERS_DBUS_NAME "com.ubuntu.indicator.users"
+#define INDICATOR_USERS_DBUS_OBJECT "/com/ubuntu/indicator/users"
+
+#define INDICATOR_SESSION_DBUS_NAME "com.ubuntu.indicator.session"
+#define INDICATOR_SESSION_DBUS_OBJECT "/com/ubuntu/indicator/session"
+
+#endif /* __DBUS_SHARED_NAMES_H__ */
diff --git a/src/indicator-fusa.c b/src/indicator-fusa.c
index 8815fb5..4c1c163 100644
--- a/src/indicator-fusa.c
+++ b/src/indicator-fusa.c
@@ -7,14 +7,19 @@
#include <libindicator/indicator.h>
INDICATOR_SET_VERSION
-INDICATOR_SET_NAME("users-status-shutdown")
+INDICATOR_SET_NAME("users-status-session")
#include "dbus-shared-names.h"
+static GtkMenu * status_menu = NULL;
+static GtkMenu * users_menu = NULL;
+static GtkMenu * session_menu = NULL;
+static GtkMenu * main_menu = NULL;
+
GtkLabel *
get_label (void)
{
- GtkLabel * returnval = gtk_label_new("Ted Gould");
+ GtkLabel * returnval = GTK_LABEL(gtk_label_new("Ted Gould"));
return returnval;
}
@@ -33,7 +38,7 @@ get_menu (void)
DBusGConnection * connection = dbus_g_bus_get(DBUS_BUS_SESSION, NULL);
DBusGProxy * proxy = dbus_g_proxy_new_for_name(connection, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS);
- if (!org_freedesktop_DBus_start_service_by_name (proxy, INDICATOR_FUSA_DBUS_NAME, 0, &returnval, &error)) {
+ if (!org_freedesktop_DBus_start_service_by_name (proxy, INDICATOR_STATUS_DBUS_NAME, 0, &returnval, &error)) {
g_error("Unable to send message to DBus to start service: %s", error != NULL ? error->message : "(NULL error)" );
g_error_free(error);
return NULL;
@@ -44,7 +49,37 @@ get_menu (void)
return NULL;
}
- return GTK_MENU(dbusmenu_gtkmenu_new(INDICATOR_FUSA_DBUS_NAME, INDICATOR_FUSA_DBUS_OBJECT));
+ status_menu = GTK_MENU(dbusmenu_gtkmenu_new(INDICATOR_STATUS_DBUS_NAME, INDICATOR_STATUS_DBUS_OBJECT));
+
+ if (!org_freedesktop_DBus_start_service_by_name (proxy, INDICATOR_USERS_DBUS_NAME, 0, &returnval, &error)) {
+ g_error("Unable to send message to DBus to start service: %s", error != NULL ? error->message : "(NULL error)" );
+ g_error_free(error);
+ return NULL;
+ }
+
+ if (returnval != DBUS_START_REPLY_SUCCESS && returnval != DBUS_START_REPLY_ALREADY_RUNNING) {
+ g_error("Return value isn't indicative of success: %d", returnval);
+ return NULL;
+ }
+
+ users_menu = GTK_MENU(dbusmenu_gtkmenu_new(INDICATOR_USERS_DBUS_NAME, INDICATOR_USERS_DBUS_OBJECT));
+
+ if (!org_freedesktop_DBus_start_service_by_name (proxy, INDICATOR_SESSION_DBUS_NAME, 0, &returnval, &error)) {
+ g_error("Unable to send message to DBus to start service: %s", error != NULL ? error->message : "(NULL error)" );
+ g_error_free(error);
+ return NULL;
+ }
+
+ if (returnval != DBUS_START_REPLY_SUCCESS && returnval != DBUS_START_REPLY_ALREADY_RUNNING) {
+ g_error("Return value isn't indicative of success: %d", returnval);
+ return NULL;
+ }
+
+ session_menu = GTK_MENU(dbusmenu_gtkmenu_new(INDICATOR_SESSION_DBUS_NAME, INDICATOR_SESSION_DBUS_OBJECT));
+
+ main_menu = GTK_MENU(gtk_menu_new());
+
+ return main_menu;
}