From 95ed5305c6ea74655085c70b413de68391226a1b Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Mon, 8 Jun 2009 14:37:40 -0500 Subject: Changing the build stuff for ye ol' fusa indicator --- src/dbus-shared-names.h | 3 +++ src/indicator-fusa.c | 54 +++++++++++++++++++++++++++++++++++-------------- 2 files changed, 42 insertions(+), 15 deletions(-) create mode 100644 src/dbus-shared-names.h (limited to 'src') diff --git a/src/dbus-shared-names.h b/src/dbus-shared-names.h new file mode 100644 index 0000000..35839a4 --- /dev/null +++ b/src/dbus-shared-names.h @@ -0,0 +1,3 @@ + +#define INDICATOR_FUSA_DBUS_NAME "org.indicators.fusa" +#define INDICATOR_FUSA_DBUS_OBJECT "/org/fusa" diff --git a/src/indicator-fusa.c b/src/indicator-fusa.c index 21c0817..8815fb5 100644 --- a/src/indicator-fusa.c +++ b/src/indicator-fusa.c @@ -1,26 +1,50 @@ #include +#include -GtkWidget * -get_menu_item (void) +#include +#include + +#include +INDICATOR_SET_VERSION +INDICATOR_SET_NAME("users-status-shutdown") + +#include "dbus-shared-names.h" + +GtkLabel * +get_label (void) { - GtkWidget * mainmenu = gtk_menu_item_new(); + GtkLabel * returnval = gtk_label_new("Ted Gould"); + return returnval; +} - GtkWidget * hbox = gtk_hbox_new(FALSE, 3); +GtkImage * +get_icon (void) +{ + return NULL; +} + +GtkMenu * +get_menu (void) +{ + guint returnval = 0; + GError * error = NULL; - GtkWidget * label = gtk_label_new("Ted Gould"); - gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 3); - gtk_widget_show(label); + 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); - GtkWidget * icon = gtk_image_new_from_icon_name("gnome-logout", - GTK_ICON_SIZE_MENU); - gtk_box_pack_start(GTK_BOX(hbox), icon, FALSE, FALSE, 0); - gtk_widget_show(icon); + if (!org_freedesktop_DBus_start_service_by_name (proxy, INDICATOR_FUSA_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; + } - gtk_container_add(GTK_CONTAINER(mainmenu), hbox); - gtk_widget_show(hbox); + 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; + } - gtk_widget_show(mainmenu); - return mainmenu; + return GTK_MENU(dbusmenu_gtkmenu_new(INDICATOR_FUSA_DBUS_NAME, INDICATOR_FUSA_DBUS_OBJECT)); } + -- cgit v1.2.3 From d68a776f7c88fc1304572e4739a65ee1b93688e4 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Mon, 8 Jun 2009 14:45:38 -0500 Subject: Switching the pkgconfig based directory. --- src/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/Makefile.am b/src/Makefile.am index c29d179..3bae3f2 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,5 +1,5 @@ -fusalibdir = $(libdir)/indicators/1 +fusalibdir = $(INDICATORDIR) fusalib_LTLIBRARIES = libfusa.la libfusa_la_SOURCES = indicator-fusa.c libfusa_la_CFLAGS = $(APPLET_CFLAGS) -- cgit v1.2.3 From 80b3de3f554b9d9fc60d20c4835026017465b61c Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Mon, 8 Jun 2009 16:25:14 -0500 Subject: Making things into a set of three user-daemons. --- src/Makefile.am | 2 +- src/dbus-shared-names.h | 15 +++++++++++++-- src/indicator-fusa.c | 43 +++++++++++++++++++++++++++++++++++++++---- 3 files changed, 53 insertions(+), 7 deletions(-) (limited to 'src') 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 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; } -- cgit v1.2.3 From 770526c7bb912c8f04a82293c6d49e1c060edeb7 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Mon, 8 Jun 2009 16:57:56 -0500 Subject: Changing the name to get rid of FUSA, which doesn't really make sense anymore. --- src/Makefile.am | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/Makefile.am b/src/Makefile.am index 325e351..45400c3 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,6 +1,6 @@ -fusalibdir = $(INDICATORDIR) -fusalib_LTLIBRARIES = libfusa.la -libfusa_la_SOURCES = indicator-fusa.c -libfusa_la_CFLAGS = $(APPLET_CFLAGS) -Wall -Werror -libfusa_la_LIBADD = $(APPLET_LIBS) +status_users_sessionlibdir = $(INDICATORDIR) +status_users_sessionlib_LTLIBRARIES = libstatus-users-session.la +libstatus_users_session_la_SOURCES = indicator-fusa.c +libstatus_users_session_la_CFLAGS = $(APPLET_CFLAGS) -Wall -Werror +libstatus_users_session_la_LIBADD = $(APPLET_LIBS) -- cgit v1.2.3 From a94e5d414a44af3c3f4ae2bb0c00978c0270dd1a Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Mon, 8 Jun 2009 16:59:12 -0500 Subject: Renaming the C file as well. --- src/Makefile.am | 2 +- src/indicator-fusa.c | 85 ---------------------------------------------------- src/indicator-sus.c | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+), 86 deletions(-) delete mode 100644 src/indicator-fusa.c create mode 100644 src/indicator-sus.c (limited to 'src') diff --git a/src/Makefile.am b/src/Makefile.am index 45400c3..4fe35ff 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,6 +1,6 @@ status_users_sessionlibdir = $(INDICATORDIR) status_users_sessionlib_LTLIBRARIES = libstatus-users-session.la -libstatus_users_session_la_SOURCES = indicator-fusa.c +libstatus_users_session_la_SOURCES = indicator-sus.c dbus-shared-names.h libstatus_users_session_la_CFLAGS = $(APPLET_CFLAGS) -Wall -Werror libstatus_users_session_la_LIBADD = $(APPLET_LIBS) diff --git a/src/indicator-fusa.c b/src/indicator-fusa.c deleted file mode 100644 index 4c1c163..0000000 --- a/src/indicator-fusa.c +++ /dev/null @@ -1,85 +0,0 @@ - -#include -#include - -#include -#include - -#include -INDICATOR_SET_VERSION -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(gtk_label_new("Ted Gould")); - return returnval; -} - -GtkImage * -get_icon (void) -{ - return NULL; -} - -GtkMenu * -get_menu (void) -{ - guint returnval = 0; - GError * error = NULL; - - 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_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; - } - - 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; - } - - 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; -} - - diff --git a/src/indicator-sus.c b/src/indicator-sus.c new file mode 100644 index 0000000..4c1c163 --- /dev/null +++ b/src/indicator-sus.c @@ -0,0 +1,85 @@ + +#include +#include + +#include +#include + +#include +INDICATOR_SET_VERSION +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(gtk_label_new("Ted Gould")); + return returnval; +} + +GtkImage * +get_icon (void) +{ + return NULL; +} + +GtkMenu * +get_menu (void) +{ + guint returnval = 0; + GError * error = NULL; + + 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_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; + } + + 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; + } + + 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; +} + + -- cgit v1.2.3 From 1e2d4592308c3bff63c74c48b9e97b6d246d2b92 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 9 Jun 2009 10:59:51 -0500 Subject: Now we're building services. Snazy. --- src/Makefile.am | 9 +++++++++ src/session-service.c | 7 +++++++ src/status-service.c | 7 +++++++ src/users-service.c | 7 +++++++ 4 files changed, 30 insertions(+) create mode 100644 src/session-service.c create mode 100644 src/status-service.c create mode 100644 src/users-service.c (limited to 'src') diff --git a/src/Makefile.am b/src/Makefile.am index 4fe35ff..4e0df47 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,6 +1,15 @@ +libexec_PROGRAMS = indicator-status-service indicator-users-service indicator-session-service + status_users_sessionlibdir = $(INDICATORDIR) status_users_sessionlib_LTLIBRARIES = libstatus-users-session.la libstatus_users_session_la_SOURCES = indicator-sus.c dbus-shared-names.h libstatus_users_session_la_CFLAGS = $(APPLET_CFLAGS) -Wall -Werror libstatus_users_session_la_LIBADD = $(APPLET_LIBS) + +indicator_status_service_SOURCES = status-service.c + +indicator_users_service_SOURCES = users-service.c + +indicator_session_service_SOURCES = session-service.c + diff --git a/src/session-service.c b/src/session-service.c new file mode 100644 index 0000000..63590c7 --- /dev/null +++ b/src/session-service.c @@ -0,0 +1,7 @@ + +int +main (int argc, char ** argv) +{ + + return 0; +} diff --git a/src/status-service.c b/src/status-service.c new file mode 100644 index 0000000..63590c7 --- /dev/null +++ b/src/status-service.c @@ -0,0 +1,7 @@ + +int +main (int argc, char ** argv) +{ + + return 0; +} diff --git a/src/users-service.c b/src/users-service.c new file mode 100644 index 0000000..63590c7 --- /dev/null +++ b/src/users-service.c @@ -0,0 +1,7 @@ + +int +main (int argc, char ** argv) +{ + + return 0; +} -- cgit v1.2.3 From ee013228b486d5b49be2737e90f3e75aded90365 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 9 Jun 2009 16:53:00 -0500 Subject: Adding more dependencies and cflags and stuff to make the builds of the services more complete --- src/Makefile.am | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src') diff --git a/src/Makefile.am b/src/Makefile.am index 4e0df47..86bacb8 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -8,8 +8,14 @@ libstatus_users_session_la_CFLAGS = $(APPLET_CFLAGS) -Wall -Werror libstatus_users_session_la_LIBADD = $(APPLET_LIBS) indicator_status_service_SOURCES = status-service.c +indicator_status_service_CFLAGS = $(STATUSSERVICE_CFLAGS) +indicator_status_service_LDADD = $(STATUSSERVICE_LIBS) indicator_users_service_SOURCES = users-service.c +indicator_users_service_CFLAGS = $(USERSSERVICE_CFLAGS) +indicator_users_service_LDADD = $(USERSSERVICE_LIBS) indicator_session_service_SOURCES = session-service.c +indicator_session_service_CFLAGS = $(SESSIONSERVICE_CFLAGS) +indicator_session_service_LDADD = $(SESSIONSERVICE_LIBS) -- cgit v1.2.3 From 21cc4e9079d0cf6b13f8232f10a265ce64fd260c Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 9 Jun 2009 16:58:52 -0500 Subject: Bringing up a dbusmenu item. --- src/users-service.c | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/users-service.c b/src/users-service.c index 63590c7..39afe39 100644 --- a/src/users-service.c +++ b/src/users-service.c @@ -1,7 +1,42 @@ +#include +#include + +#include +#include + +#include "dbus-shared-names.h" + +static DbusmenuMenuitem * root_menuitem = NULL; +static GMainLoop * mainloop = NULL; + int main (int argc, char ** argv) { + g_type_init(); + + DBusGConnection * connection = dbus_g_bus_get(DBUS_BUS_SESSION, NULL); + DBusGProxy * bus_proxy = dbus_g_proxy_new_for_name(connection, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS); + GError * error = NULL; + guint nameret = 0; - return 0; + if (!org_freedesktop_DBus_request_name(bus_proxy, INDICATOR_USERS_DBUS_NAME, 0, &nameret, &error)) { + g_error("Unable to call to request name"); + return 1; + } + + if (nameret != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) { + g_error("Unable to get name"); + return 1; + } + + root_menuitem = dbusmenu_menuitem_new(); + DbusmenuServer * server = dbusmenu_server_new(INDICATOR_USERS_DBUS_OBJECT); + dbusmenu_server_set_root(server, root_menuitem); + + mainloop = g_main_loop_new(NULL, FALSE); + g_main_loop_run(mainloop); + + return 0; } + -- cgit v1.2.3 From b00bec83c75676a02eb6bebc2c51d5f0376dcf34 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 9 Jun 2009 17:00:07 -0500 Subject: Copying that code into the other two services. Now we're dbus-y. --- src/session-service.c | 37 ++++++++++++++++++++++++++++++++++++- src/status-service.c | 37 ++++++++++++++++++++++++++++++++++++- 2 files changed, 72 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/session-service.c b/src/session-service.c index 63590c7..7a2ad27 100644 --- a/src/session-service.c +++ b/src/session-service.c @@ -1,7 +1,42 @@ +#include +#include + +#include +#include + +#include "dbus-shared-names.h" + +static DbusmenuMenuitem * root_menuitem = NULL; +static GMainLoop * mainloop = NULL; + int main (int argc, char ** argv) { + g_type_init(); + + DBusGConnection * connection = dbus_g_bus_get(DBUS_BUS_SESSION, NULL); + DBusGProxy * bus_proxy = dbus_g_proxy_new_for_name(connection, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS); + GError * error = NULL; + guint nameret = 0; - return 0; + if (!org_freedesktop_DBus_request_name(bus_proxy, INDICATOR_SESSION_DBUS_NAME, 0, &nameret, &error)) { + g_error("Unable to call to request name"); + return 1; + } + + if (nameret != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) { + g_error("Unable to get name"); + return 1; + } + + root_menuitem = dbusmenu_menuitem_new(); + DbusmenuServer * server = dbusmenu_server_new(INDICATOR_SESSION_DBUS_OBJECT); + dbusmenu_server_set_root(server, root_menuitem); + + mainloop = g_main_loop_new(NULL, FALSE); + g_main_loop_run(mainloop); + + return 0; } + diff --git a/src/status-service.c b/src/status-service.c index 63590c7..19bee49 100644 --- a/src/status-service.c +++ b/src/status-service.c @@ -1,7 +1,42 @@ +#include +#include + +#include +#include + +#include "dbus-shared-names.h" + +static DbusmenuMenuitem * root_menuitem = NULL; +static GMainLoop * mainloop = NULL; + int main (int argc, char ** argv) { + g_type_init(); + + DBusGConnection * connection = dbus_g_bus_get(DBUS_BUS_SESSION, NULL); + DBusGProxy * bus_proxy = dbus_g_proxy_new_for_name(connection, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS); + GError * error = NULL; + guint nameret = 0; - return 0; + if (!org_freedesktop_DBus_request_name(bus_proxy, INDICATOR_STATUS_DBUS_NAME, 0, &nameret, &error)) { + g_error("Unable to call to request name"); + return 1; + } + + if (nameret != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) { + g_error("Unable to get name"); + return 1; + } + + root_menuitem = dbusmenu_menuitem_new(); + DbusmenuServer * server = dbusmenu_server_new(INDICATOR_STATUS_DBUS_OBJECT); + dbusmenu_server_set_root(server, root_menuitem); + + mainloop = g_main_loop_new(NULL, FALSE); + g_main_loop_run(mainloop); + + return 0; } + -- cgit v1.2.3 From 913e99f4a2151b57412b1db3e2eb48b5050ff9fb Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 10 Jun 2009 16:17:53 -0500 Subject: =?UTF-8?q?Using=20the=20defines=20and=20strings=20that=20were=20i?= =?UTF-8?q?n=20our=20patches=20to=20FUSA.=20=20I=20wrote=20the=20code,=20s?= =?UTF-8?q?o=20it=20is=20like=20other=20things=20=C2=A9=20Canonical=20so?= =?UTF-8?q?=20there=20is=20no=20issue=20there.=20=20There=20is=20other=20c?= =?UTF-8?q?ode=20in=20FUSA=20that=20is=20not.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/status-service.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src') diff --git a/src/status-service.c b/src/status-service.c index 19bee49..68b5685 100644 --- a/src/status-service.c +++ b/src/status-service.c @@ -1,4 +1,6 @@ +#include + #include #include @@ -7,6 +9,32 @@ #include "dbus-shared-names.h" +typedef enum +{ + STATUS_SERVICE_STATUS_ONLINE, + STATUS_SERVICE_STATUS_AWAY, + STATUS_SERVICE_STATUS_DND, + STATUS_SERVICE_STATUS_OFFLINE, + /* Leave as last */ + STATUS_SERVICE_STATUS_LAST +} +StatusServiceStatus; + +static const gchar * status_strings [STATUS_SERVICE_STATUS_LAST] = { + /* STATUS_SERVICE_STATUS_ONLINE, */ N_("Available"), + /* STATUS_SERVICE_STATUS_AWAY, */ N_("Away"), + /* STATUS_SERVICE_STATUS_DND */ N_("Busy"), + /* STATUS_SERVICE_STATUS_OFFLINE, */ N_("Offline") +}; + +static const gchar * status_icons[STATUS_SERVICE_STATUS_LAST] = { + /* STATUS_SERVICE_STATUS_ONLINE, */ "user-online", + /* STATUS_SERVICE_STATUS_AWAY, */ "user-away", + /* STATUS_SERVICE_STATUS_DND, */ "user-busy", + /* STATUS_SERVICE_STATUS_OFFLINE */ "user-offline" +}; + + static DbusmenuMenuitem * root_menuitem = NULL; static GMainLoop * mainloop = NULL; -- cgit v1.2.3 From bf4f01129a8fcec1b0dc800036ee3990436644bc Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 10 Jun 2009 16:55:12 -0500 Subject: Building the menuitems --- src/status-service.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src') diff --git a/src/status-service.c b/src/status-service.c index 68b5685..1615985 100644 --- a/src/status-service.c +++ b/src/status-service.c @@ -38,6 +38,27 @@ static const gchar * status_icons[STATUS_SERVICE_STATUS_LAST] = { static DbusmenuMenuitem * root_menuitem = NULL; static GMainLoop * mainloop = NULL; +gboolean +build_menu (gpointer data) +{ + DbusmenuMenuitem * root = DBUSMENU_MENUITEM(data); + g_return_val_if_fail(root != NULL, FALSE); + + StatusServiceStatus i; + for (i = STATUS_SERVICE_STATUS_ONLINE; i < STATUS_SERVICE_STATUS_LAST; i++) { + DbusmenuMenuitem * mi = dbusmenu_menuitem_new(); + + dbusmenu_menuitem_property_set(mi, "label", _(status_strings[i])); + dbusmenu_menuitem_property_set(mi, "icon", status_icons[i]); + + dbusmenu_menuitem_child_append(root, mi); + + g_debug("Built %s", status_strings[i]); + } + + return FALSE; +} + int main (int argc, char ** argv) { @@ -62,6 +83,8 @@ main (int argc, char ** argv) DbusmenuServer * server = dbusmenu_server_new(INDICATOR_STATUS_DBUS_OBJECT); dbusmenu_server_set_root(server, root_menuitem); + g_idle_add(build_menu, root_menuitem); + mainloop = g_main_loop_new(NULL, FALSE); g_main_loop_run(mainloop); -- cgit v1.2.3 From 257c07fe3c71a19a116a5d9f64e6ffb4e3f9fb0d Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 10 Jun 2009 17:02:43 -0500 Subject: Connecting in a callback. --- src/status-service.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/status-service.c b/src/status-service.c index 1615985..840e164 100644 --- a/src/status-service.c +++ b/src/status-service.c @@ -38,7 +38,14 @@ static const gchar * status_icons[STATUS_SERVICE_STATUS_LAST] = { static DbusmenuMenuitem * root_menuitem = NULL; static GMainLoop * mainloop = NULL; -gboolean +static void +menu_click (DbusmenuMenuitem * mi, gpointer data) +{ + StatusServiceStatus stat = (StatusServiceStatus)GPOINTER_TO_INT(data); + +} + +static gboolean build_menu (gpointer data) { DbusmenuMenuitem * root = DBUSMENU_MENUITEM(data); @@ -50,6 +57,7 @@ build_menu (gpointer data) dbusmenu_menuitem_property_set(mi, "label", _(status_strings[i])); dbusmenu_menuitem_property_set(mi, "icon", status_icons[i]); + g_signal_connect(G_OBJECT(mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, 0, GINT_TO_POINTER(i)); dbusmenu_menuitem_child_append(root, mi); -- cgit v1.2.3 From 6a310124ced26f2753c32ece249ca092214b73ee Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 10 Jun 2009 17:17:25 -0500 Subject: Oops, forgot about invisible. I guess that's kinda expected though, as it's invisible. --- src/status-service.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/status-service.c b/src/status-service.c index 840e164..cd131a4 100644 --- a/src/status-service.c +++ b/src/status-service.c @@ -14,6 +14,7 @@ typedef enum STATUS_SERVICE_STATUS_ONLINE, STATUS_SERVICE_STATUS_AWAY, STATUS_SERVICE_STATUS_DND, + STATUS_SERVICE_STATUS_INVISIBLE, STATUS_SERVICE_STATUS_OFFLINE, /* Leave as last */ STATUS_SERVICE_STATUS_LAST @@ -21,17 +22,19 @@ typedef enum StatusServiceStatus; static const gchar * status_strings [STATUS_SERVICE_STATUS_LAST] = { - /* STATUS_SERVICE_STATUS_ONLINE, */ N_("Available"), - /* STATUS_SERVICE_STATUS_AWAY, */ N_("Away"), - /* STATUS_SERVICE_STATUS_DND */ N_("Busy"), - /* STATUS_SERVICE_STATUS_OFFLINE, */ N_("Offline") + /* STATUS_SERVICE_STATUS_ONLINE, */ N_("Available"), + /* STATUS_SERVICE_STATUS_AWAY, */ N_("Away"), + /* STATUS_SERVICE_STATUS_DND */ N_("Busy"), + /* STATUS_SERVICE_STATUS_INVISIBLE */ N_("Invisible"), + /* STATUS_SERVICE_STATUS_OFFLINE, */ N_("Offline") }; static const gchar * status_icons[STATUS_SERVICE_STATUS_LAST] = { - /* STATUS_SERVICE_STATUS_ONLINE, */ "user-online", - /* STATUS_SERVICE_STATUS_AWAY, */ "user-away", - /* STATUS_SERVICE_STATUS_DND, */ "user-busy", - /* STATUS_SERVICE_STATUS_OFFLINE */ "user-offline" + /* STATUS_SERVICE_STATUS_ONLINE, */ "user-online", + /* STATUS_SERVICE_STATUS_AWAY, */ "user-away", + /* STATUS_SERVICE_STATUS_DND, */ "user-busy", + /* STATUS_SERVICE_STATUS_INVISIBLE, */ "user-invisible", + /* STATUS_SERVICE_STATUS_OFFLINE */ "user-offline" }; -- cgit v1.2.3 From 3fc5dff1de2389211bae97ba54db3c1370dbab0c Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 11 Jun 2009 10:20:46 -0500 Subject: Adding in the basic (generated) framework for the status provider object --- src/Makefile.am | 2 +- src/status-provider.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/status-provider.h | 31 +++++++++++++++++++++++++++++ 3 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 src/status-provider.c create mode 100644 src/status-provider.h (limited to 'src') diff --git a/src/Makefile.am b/src/Makefile.am index 86bacb8..df51cf5 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -7,7 +7,7 @@ libstatus_users_session_la_SOURCES = indicator-sus.c dbus-shared-names.h libstatus_users_session_la_CFLAGS = $(APPLET_CFLAGS) -Wall -Werror libstatus_users_session_la_LIBADD = $(APPLET_LIBS) -indicator_status_service_SOURCES = status-service.c +indicator_status_service_SOURCES = status-service.c status-provider.h status-provider.c indicator_status_service_CFLAGS = $(STATUSSERVICE_CFLAGS) indicator_status_service_LDADD = $(STATUSSERVICE_LIBS) diff --git a/src/status-provider.c b/src/status-provider.c new file mode 100644 index 0000000..c2f7de2 --- /dev/null +++ b/src/status-provider.c @@ -0,0 +1,55 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "status-provider.h" + +typedef struct _StatusProviderPrivate StatusProviderPrivate; +struct _StatusProviderPrivate { +}; + +#define STATUS_PROVIDER_GET_PRIVATE(o) \ +(G_TYPE_INSTANCE_GET_PRIVATE ((o), STATUS_PROVIDER_TYPE, StatusProviderPrivate)) + +static void status_provider_class_init (StatusProviderClass *klass); +static void status_provider_init (StatusProvider *self); +static void status_provider_dispose (GObject *object); +static void status_provider_finalize (GObject *object); + +G_DEFINE_TYPE (StatusProvider, status_provider, G_TYPE_OBJECT); + +static void +status_provider_class_init (StatusProviderClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (klass, sizeof (StatusProviderPrivate)); + + object_class->dispose = status_provider_dispose; + object_class->finalize = status_provider_finalize; + + return; +} + +static void +status_provider_init (StatusProvider *self) +{ + + return; +} + +static void +status_provider_dispose (GObject *object) +{ + + G_OBJECT_CLASS (status_provider_parent_class)->dispose (object); + return; +} + +static void +status_provider_finalize (GObject *object) +{ + + G_OBJECT_CLASS (status_provider_parent_class)->finalize (object); + return; +} diff --git a/src/status-provider.h b/src/status-provider.h new file mode 100644 index 0000000..7d36f02 --- /dev/null +++ b/src/status-provider.h @@ -0,0 +1,31 @@ +#ifndef __STATUS_PROVIDER_H__ +#define __STATUS_PROVIDER_H__ + +#include +#include + +G_BEGIN_DECLS + +#define STATUS_PROVIDER_TYPE (status_provider_get_type ()) +#define STATUS_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), STATUS_PROVIDER_TYPE, StatusProvider)) +#define STATUS_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), STATUS_PROVIDER_TYPE, StatusProviderClass)) +#define IS_STATUS_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), STATUS_PROVIDER_TYPE)) +#define IS_STATUS_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), STATUS_PROVIDER_TYPE)) +#define STATUS_PROVIDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), STATUS_PROVIDER_TYPE, StatusProviderClass)) + + +typedef struct _StatusProviderClass StatusProviderClass; +struct _StatusProviderClass { + GObjectClass parent_class; +}; + +typedef struct _StatusProvider StatusProvider; +struct _StatusProvider { + GObject parent; +}; + +GType status_provider_get_type (void); + +G_END_DECLS + +#endif -- cgit v1.2.3 From 9b6dcf5696d59e6b6004b8631f4a136f5b90c1d5 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 11 Jun 2009 12:01:59 -0500 Subject: Providing the first hints at an API --- src/status-provider.h | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/status-provider.h b/src/status-provider.h index 7d36f02..bbc86f6 100644 --- a/src/status-provider.h +++ b/src/status-provider.h @@ -13,19 +13,32 @@ G_BEGIN_DECLS #define IS_STATUS_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), STATUS_PROVIDER_TYPE)) #define STATUS_PROVIDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), STATUS_PROVIDER_TYPE, StatusProviderClass)) - -typedef struct _StatusProviderClass StatusProviderClass; -struct _StatusProviderClass { - GObjectClass parent_class; -}; +#define STATUS_PROVIDER_SIGNAL_STATUS_CHANGED "status-changed" typedef struct _StatusProvider StatusProvider; struct _StatusProvider { GObject parent; }; +typedef struct _StatusProviderClass StatusProviderClass; +struct _StatusProviderClass { + /* Signals */ + void (*status_changed) (guint newstatus); + + /* Virtual Functions */ + void (*set_status) (StatusProvider * sp, guint newstatus); + guint (*get_status) (StatusProvider * sp); + + GObjectClass parent_class; +}; + GType status_provider_get_type (void); +void status_provider_set_status (StatusProvider * sp, guint status); +guint status_provider_get_status (StatusProvider * sp); + +void status_provider_emit_status_changed (StatusProvider * sp, guint newstatus); + G_END_DECLS #endif -- cgit v1.2.3 From bac4397f4f402d3588b9fb6153bab8e6f320f8b7 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 11 Jun 2009 12:06:09 -0500 Subject: Moving the enum into the provider object and changing the name everywhere. --- src/status-provider.h | 24 ++++++++++++++++++------ src/status-service.c | 44 +++++++++++++++++--------------------------- 2 files changed, 35 insertions(+), 33 deletions(-) (limited to 'src') diff --git a/src/status-provider.h b/src/status-provider.h index bbc86f6..b20f4f0 100644 --- a/src/status-provider.h +++ b/src/status-provider.h @@ -13,6 +13,18 @@ G_BEGIN_DECLS #define IS_STATUS_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), STATUS_PROVIDER_TYPE)) #define STATUS_PROVIDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), STATUS_PROVIDER_TYPE, StatusProviderClass)) +typedef enum +{ + STATUS_PROVIDER_STATUS_ONLINE, + STATUS_PROVIDER_STATUS_AWAY, + STATUS_PROVIDER_STATUS_DND, + STATUS_PROVIDER_STATUS_INVISIBLE, + STATUS_PROVIDER_STATUS_OFFLINE, + /* Leave as last */ + STATUS_PROVIDER_STATUS_LAST +} +StatusProviderStatus; + #define STATUS_PROVIDER_SIGNAL_STATUS_CHANGED "status-changed" typedef struct _StatusProvider StatusProvider; @@ -23,21 +35,21 @@ struct _StatusProvider { typedef struct _StatusProviderClass StatusProviderClass; struct _StatusProviderClass { /* Signals */ - void (*status_changed) (guint newstatus); + void (*status_changed) (StatusProviderStatus newstatus); /* Virtual Functions */ - void (*set_status) (StatusProvider * sp, guint newstatus); - guint (*get_status) (StatusProvider * sp); + void (*set_status) (StatusProvider * sp, StatusProviderStatus newstatus); + StatusProviderStatus (*get_status) (StatusProvider * sp); GObjectClass parent_class; }; GType status_provider_get_type (void); -void status_provider_set_status (StatusProvider * sp, guint status); -guint status_provider_get_status (StatusProvider * sp); +void status_provider_set_status (StatusProvider * sp, StatusProviderStatus status); +StatusProviderStatus status_provider_get_status (StatusProvider * sp); -void status_provider_emit_status_changed (StatusProvider * sp, guint newstatus); +void status_provider_emit_status_changed (StatusProvider * sp, StatusProviderStatus newstatus); G_END_DECLS diff --git a/src/status-service.c b/src/status-service.c index cd131a4..e839b16 100644 --- a/src/status-service.c +++ b/src/status-service.c @@ -9,32 +9,22 @@ #include "dbus-shared-names.h" -typedef enum -{ - STATUS_SERVICE_STATUS_ONLINE, - STATUS_SERVICE_STATUS_AWAY, - STATUS_SERVICE_STATUS_DND, - STATUS_SERVICE_STATUS_INVISIBLE, - STATUS_SERVICE_STATUS_OFFLINE, - /* Leave as last */ - STATUS_SERVICE_STATUS_LAST -} -StatusServiceStatus; - -static const gchar * status_strings [STATUS_SERVICE_STATUS_LAST] = { - /* STATUS_SERVICE_STATUS_ONLINE, */ N_("Available"), - /* STATUS_SERVICE_STATUS_AWAY, */ N_("Away"), - /* STATUS_SERVICE_STATUS_DND */ N_("Busy"), - /* STATUS_SERVICE_STATUS_INVISIBLE */ N_("Invisible"), - /* STATUS_SERVICE_STATUS_OFFLINE, */ N_("Offline") +#include "status-provider.h" + +static const gchar * status_strings [STATUS_PROVIDER_STATUS_LAST] = { + /* STATUS_PROVIDER_STATUS_ONLINE, */ N_("Available"), + /* STATUS_PROVIDER_STATUS_AWAY, */ N_("Away"), + /* STATUS_PROVIDER_STATUS_DND */ N_("Busy"), + /* STATUS_PROVIDER_STATUS_INVISIBLE */ N_("Invisible"), + /* STATUS_PROVIDER_STATUS_OFFLINE, */ N_("Offline") }; -static const gchar * status_icons[STATUS_SERVICE_STATUS_LAST] = { - /* STATUS_SERVICE_STATUS_ONLINE, */ "user-online", - /* STATUS_SERVICE_STATUS_AWAY, */ "user-away", - /* STATUS_SERVICE_STATUS_DND, */ "user-busy", - /* STATUS_SERVICE_STATUS_INVISIBLE, */ "user-invisible", - /* STATUS_SERVICE_STATUS_OFFLINE */ "user-offline" +static const gchar * status_icons[STATUS_PROVIDER_STATUS_LAST] = { + /* STATUS_PROVIDER_STATUS_ONLINE, */ "user-online", + /* STATUS_PROVIDER_STATUS_AWAY, */ "user-away", + /* STATUS_PROVIDER_STATUS_DND, */ "user-busy", + /* STATUS_PROVIDER_STATUS_INVISIBLE, */ "user-invisible", + /* STATUS_PROVIDER_STATUS_OFFLINE */ "user-offline" }; @@ -44,7 +34,7 @@ static GMainLoop * mainloop = NULL; static void menu_click (DbusmenuMenuitem * mi, gpointer data) { - StatusServiceStatus stat = (StatusServiceStatus)GPOINTER_TO_INT(data); + StatusProviderStatus status = (StatusProviderStatus)GPOINTER_TO_INT(data); } @@ -54,8 +44,8 @@ build_menu (gpointer data) DbusmenuMenuitem * root = DBUSMENU_MENUITEM(data); g_return_val_if_fail(root != NULL, FALSE); - StatusServiceStatus i; - for (i = STATUS_SERVICE_STATUS_ONLINE; i < STATUS_SERVICE_STATUS_LAST; i++) { + StatusProviderStatus i; + for (i = STATUS_PROVIDER_STATUS_ONLINE; i < STATUS_PROVIDER_STATUS_LAST; i++) { DbusmenuMenuitem * mi = dbusmenu_menuitem_new(); dbusmenu_menuitem_property_set(mi, "label", _(status_strings[i])); -- cgit v1.2.3 From 01df160c30f98b6833f0e2341edf9ab94b95d801 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 11 Jun 2009 13:43:16 -0500 Subject: Don't need a private or dispose or finalize. This class is more of an interface. --- src/status-provider.c | 29 ----------------------------- 1 file changed, 29 deletions(-) (limited to 'src') diff --git a/src/status-provider.c b/src/status-provider.c index c2f7de2..e18cc31 100644 --- a/src/status-provider.c +++ b/src/status-provider.c @@ -4,17 +4,8 @@ #include "status-provider.h" -typedef struct _StatusProviderPrivate StatusProviderPrivate; -struct _StatusProviderPrivate { -}; - -#define STATUS_PROVIDER_GET_PRIVATE(o) \ -(G_TYPE_INSTANCE_GET_PRIVATE ((o), STATUS_PROVIDER_TYPE, StatusProviderPrivate)) - static void status_provider_class_init (StatusProviderClass *klass); static void status_provider_init (StatusProvider *self); -static void status_provider_dispose (GObject *object); -static void status_provider_finalize (GObject *object); G_DEFINE_TYPE (StatusProvider, status_provider, G_TYPE_OBJECT); @@ -23,11 +14,6 @@ status_provider_class_init (StatusProviderClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); - g_type_class_add_private (klass, sizeof (StatusProviderPrivate)); - - object_class->dispose = status_provider_dispose; - object_class->finalize = status_provider_finalize; - return; } @@ -38,18 +24,3 @@ status_provider_init (StatusProvider *self) return; } -static void -status_provider_dispose (GObject *object) -{ - - G_OBJECT_CLASS (status_provider_parent_class)->dispose (object); - return; -} - -static void -status_provider_finalize (GObject *object) -{ - - G_OBJECT_CLASS (status_provider_parent_class)->finalize (object); - return; -} -- cgit v1.2.3 From f9aa333e5737ae0fcab56d9f4c5c9ed463011e9f Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 11 Jun 2009 14:17:04 -0500 Subject: Some public funtions and now they can be subclassed --- src/status-provider.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'src') diff --git a/src/status-provider.c b/src/status-provider.c index e18cc31..613019b 100644 --- a/src/status-provider.c +++ b/src/status-provider.c @@ -14,6 +14,11 @@ status_provider_class_init (StatusProviderClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); + klass->status_changed = NULL; + + klass->set_status = NULL; + klass->get_status = NULL; + return; } @@ -24,3 +29,31 @@ status_provider_init (StatusProvider *self) return; } +void +status_provider_set_status (StatusProvider * sp, StatusProviderStatus status) +{ + g_return_if_fail(IS_STATUS_PROVIDER(sp)); + + StatusProviderClass * class = STATUS_PROVIDER_CLASS(sp); + g_return_if_fail(class->set_status != NULL); + + return class->set_status(sp, status); +} + +StatusProviderStatus +status_provider_get_status (StatusProvider * sp) +{ + g_return_val_if_fail(IS_STATUS_PROVIDER(sp), STATUS_PROVIDER_STATUS_OFFLINE); + + StatusProviderClass * class = STATUS_PROVIDER_CLASS(sp); + g_return_val_if_fail(class->get_status != NULL, STATUS_PROVIDER_STATUS_OFFLINE); + + return class->get_status(sp); +} + +void +status_provider_emit_status_changed (StatusProvider * sp, StatusProviderStatus newstatus) +{ + + return; +} -- cgit v1.2.3 From 3567cdb657ebf873fc36ab3449ff4cc3e98bd43d Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 11 Jun 2009 14:26:04 -0500 Subject: Adding in a good ol' signal handler and even emits this puppy. Whew. --- src/status-provider.c | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/status-provider.c b/src/status-provider.c index 613019b..cc9eb32 100644 --- a/src/status-provider.c +++ b/src/status-provider.c @@ -4,6 +4,15 @@ #include "status-provider.h" +/* Signals */ +enum { + STATUS_CHANGED, + LAST_SIGNAL +}; + +static guint signals[LAST_SIGNAL] = { 0 }; + +/* GObject Boilerplate */ static void status_provider_class_init (StatusProviderClass *klass); static void status_provider_init (StatusProvider *self); @@ -19,6 +28,22 @@ status_provider_class_init (StatusProviderClass *klass) klass->set_status = NULL; klass->get_status = NULL; + /** + StatusProvider::status-changed: + @arg0: The #StatusProvider object. + @arg1: The new status #StatusProviderStatus + + Should be emitted by subclasses everytime that the status + changes externally to us. + */ + signals[STATUS_CHANGED] = g_signal_new(STATUS_PROVIDER_SIGNAL_STATUS_CHANGED, + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET(StatusProviderClass, status_changed), + NULL, NULL, + g_cclosure_marshal_VOID__UINT, + G_TYPE_NONE, 1, G_TYPE_UINT); + return; } @@ -54,6 +79,7 @@ status_provider_get_status (StatusProvider * sp) void status_provider_emit_status_changed (StatusProvider * sp, StatusProviderStatus newstatus) { - + g_return_if_fail(IS_STATUS_PROVIDER(sp)); + g_signal_emit(sp, signals[STATUS_CHANGED], 0, newstatus, TRUE); return; } -- cgit v1.2.3 From 963f1418caa6b438d80445b2eb66f5b42e5add06 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 11 Jun 2009 14:47:42 -0500 Subject: Preliminary pidgin wrappers. --- src/Makefile.am | 6 ++++- src/status-provider-pidgin.c | 56 ++++++++++++++++++++++++++++++++++++++++++++ src/status-provider-pidgin.h | 33 ++++++++++++++++++++++++++ 3 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 src/status-provider-pidgin.c create mode 100644 src/status-provider-pidgin.h (limited to 'src') diff --git a/src/Makefile.am b/src/Makefile.am index df51cf5..a5380ac 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -7,7 +7,11 @@ libstatus_users_session_la_SOURCES = indicator-sus.c dbus-shared-names.h libstatus_users_session_la_CFLAGS = $(APPLET_CFLAGS) -Wall -Werror libstatus_users_session_la_LIBADD = $(APPLET_LIBS) -indicator_status_service_SOURCES = status-service.c status-provider.h status-provider.c +indicator_status_service_SOURCES = status-service.c \ + status-provider.h \ + status-provider.c \ + status-provider-pidgin.h \ + status-provider-pidgin.c indicator_status_service_CFLAGS = $(STATUSSERVICE_CFLAGS) indicator_status_service_LDADD = $(STATUSSERVICE_LIBS) diff --git a/src/status-provider-pidgin.c b/src/status-provider-pidgin.c new file mode 100644 index 0000000..16fbb69 --- /dev/null +++ b/src/status-provider-pidgin.c @@ -0,0 +1,56 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "status-provider.h" +#include "status-provider-pidgin.h" + +typedef struct _StatusProviderPidginPrivate StatusProviderPidginPrivate; +struct _StatusProviderPidginPrivate { +}; + +#define STATUS_PROVIDER_PIDGIN_GET_PRIVATE(o) \ +(G_TYPE_INSTANCE_GET_PRIVATE ((o), STATUS_PROVIDER_PIDGIN_TYPE, StatusProviderPidginPrivate)) + +static void status_provider_pidgin_class_init (StatusProviderPidginClass *klass); +static void status_provider_pidgin_init (StatusProviderPidgin *self); +static void status_provider_pidgin_dispose (GObject *object); +static void status_provider_pidgin_finalize (GObject *object); + +G_DEFINE_TYPE (StatusProviderPidgin, status_provider_pidgin, STATUS_PROVIDER_TYPE); + +static void +status_provider_pidgin_class_init (StatusProviderPidginClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (klass, sizeof (StatusProviderPidginPrivate)); + + object_class->dispose = status_provider_pidgin_dispose; + object_class->finalize = status_provider_pidgin_finalize; + + return; +} + +static void +status_provider_pidgin_init (StatusProviderPidgin *self) +{ + + return; +} + +static void +status_provider_pidgin_dispose (GObject *object) +{ + + G_OBJECT_CLASS (status_provider_pidgin_parent_class)->dispose (object); + return; +} + +static void +status_provider_pidgin_finalize (GObject *object) +{ + + G_OBJECT_CLASS (status_provider_pidgin_parent_class)->finalize (object); + return; +} diff --git a/src/status-provider-pidgin.h b/src/status-provider-pidgin.h new file mode 100644 index 0000000..5d4459c --- /dev/null +++ b/src/status-provider-pidgin.h @@ -0,0 +1,33 @@ +#ifndef __STATUS_PROVIDER_PIDGIN_H__ +#define __STATUS_PROVIDER_PIDGIN_H__ + +#include +#include + +#include "status-provider.h" + +G_BEGIN_DECLS + +#define STATUS_PROVIDER_PIDGIN_TYPE (status_provider_pidgin_get_type ()) +#define STATUS_PROVIDER_PIDGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), STATUS_PROVIDER_PIDGIN_TYPE, StatusProviderPidgin)) +#define STATUS_PROVIDER_PIDGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), STATUS_PROVIDER_PIDGIN_TYPE, StatusProviderPidginClass)) +#define IS_STATUS_PROVIDER_PIDGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), STATUS_PROVIDER_PIDGIN_TYPE)) +#define IS_STATUS_PROVIDER_PIDGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), STATUS_PROVIDER_PIDGIN_TYPE)) +#define STATUS_PROVIDER_PIDGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), STATUS_PROVIDER_PIDGIN_TYPE, StatusProviderPidginClass)) + + +typedef struct _StatusProviderPidginClass StatusProviderPidginClass; +struct _StatusProviderPidginClass { + StatusProviderClass parent_class; +}; + +typedef struct _StatusProviderPidgin StatusProviderPidgin; +struct _StatusProviderPidgin { + StatusProvider parent; +}; + +GType status_provider_pidgin_get_type (void); + +G_END_DECLS + +#endif -- cgit v1.2.3 From 5ad8f590bc465555aac14f8de3ca17901b8675f3 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 11 Jun 2009 15:54:13 -0500 Subject: Now we're setting the status provider functions of the StatusProvider interface. --- src/status-provider-pidgin.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src') diff --git a/src/status-provider-pidgin.c b/src/status-provider-pidgin.c index 16fbb69..a0a2ba1 100644 --- a/src/status-provider-pidgin.c +++ b/src/status-provider-pidgin.c @@ -12,10 +12,15 @@ struct _StatusProviderPidginPrivate { #define STATUS_PROVIDER_PIDGIN_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), STATUS_PROVIDER_PIDGIN_TYPE, StatusProviderPidginPrivate)) +/* Prototypes */ +/* GObject stuff */ static void status_provider_pidgin_class_init (StatusProviderPidginClass *klass); static void status_provider_pidgin_init (StatusProviderPidgin *self); static void status_provider_pidgin_dispose (GObject *object); static void status_provider_pidgin_finalize (GObject *object); +/* Internal Funcs */ +static void set_status (StatusProvider * sp, StatusProviderStatus status); +static StatusProviderStatus get_status (StatusProvider * sp); G_DEFINE_TYPE (StatusProviderPidgin, status_provider_pidgin, STATUS_PROVIDER_TYPE); @@ -29,6 +34,11 @@ status_provider_pidgin_class_init (StatusProviderPidginClass *klass) object_class->dispose = status_provider_pidgin_dispose; object_class->finalize = status_provider_pidgin_finalize; + StatusProviderClass * spclass = STATUS_PROVIDER_CLASS(klass); + + spclass->set_status = set_status; + spclass->get_status = get_status; + return; } @@ -54,3 +64,17 @@ status_provider_pidgin_finalize (GObject *object) G_OBJECT_CLASS (status_provider_pidgin_parent_class)->finalize (object); return; } + +static void +set_status (StatusProvider * sp, StatusProviderStatus status) +{ + + return; +} + +static StatusProviderStatus +get_status (StatusProvider * sp) +{ + + return STATUS_PROVIDER_STATUS_OFFLINE; +} -- cgit v1.2.3 From 2cb1046794b8f2ef0a375d1d1061501473d43c73 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 11 Jun 2009 16:27:03 -0500 Subject: Starting to connect things together. Let's get some Pidgin in there. --- src/status-provider-pidgin.c | 6 ++++++ src/status-provider-pidgin.h | 1 + src/status-service.c | 9 +++++++++ 3 files changed, 16 insertions(+) (limited to 'src') diff --git a/src/status-provider-pidgin.c b/src/status-provider-pidgin.c index a0a2ba1..ef2bc63 100644 --- a/src/status-provider-pidgin.c +++ b/src/status-provider-pidgin.c @@ -65,6 +65,12 @@ status_provider_pidgin_finalize (GObject *object) return; } +StatusProvider * +status_provider_pidgin_new (void) +{ + return STATUS_PROVIDER(g_object_new(STATUS_PROVIDER_PIDGIN_TYPE, NULL)); +} + static void set_status (StatusProvider * sp, StatusProviderStatus status) { diff --git a/src/status-provider-pidgin.h b/src/status-provider-pidgin.h index 5d4459c..85077e8 100644 --- a/src/status-provider-pidgin.h +++ b/src/status-provider-pidgin.h @@ -27,6 +27,7 @@ struct _StatusProviderPidgin { }; GType status_provider_pidgin_get_type (void); +StatusProvider * status_provider_pidgin_new (void); G_END_DECLS diff --git a/src/status-service.c b/src/status-service.c index e839b16..901f46b 100644 --- a/src/status-service.c +++ b/src/status-service.c @@ -10,6 +10,15 @@ #include "dbus-shared-names.h" #include "status-provider.h" +#include "status-provider-pidgin.h" + +typedef StatusProvider * (*newfunc) (void); +#define STATUS_PROVIDER_CNT 1 +newfunc status_provider_newfuncs[STATUS_PROVIDER_CNT] = { + status_provider_pidgin_new +}; + +StatusProvider * status_providers[STATUS_PROVIDER_CNT] = { 0 }; static const gchar * status_strings [STATUS_PROVIDER_STATUS_LAST] = { /* STATUS_PROVIDER_STATUS_ONLINE, */ N_("Available"), -- cgit v1.2.3 From a14bc91016d9e85892cfb52002fe1debca53dc4a Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 11 Jun 2009 16:39:22 -0500 Subject: Okay, let's use these providers. We're 733t now. --- src/status-service.c | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/status-service.c b/src/status-service.c index 901f46b..392b23a 100644 --- a/src/status-service.c +++ b/src/status-service.c @@ -14,11 +14,10 @@ typedef StatusProvider * (*newfunc) (void); #define STATUS_PROVIDER_CNT 1 -newfunc status_provider_newfuncs[STATUS_PROVIDER_CNT] = { +static newfunc status_provider_newfuncs[STATUS_PROVIDER_CNT] = { status_provider_pidgin_new }; - -StatusProvider * status_providers[STATUS_PROVIDER_CNT] = { 0 }; +static StatusProvider * status_providers[STATUS_PROVIDER_CNT] = { 0 }; static const gchar * status_strings [STATUS_PROVIDER_STATUS_LAST] = { /* STATUS_PROVIDER_STATUS_ONLINE, */ N_("Available"), @@ -41,10 +40,26 @@ static DbusmenuMenuitem * root_menuitem = NULL; static GMainLoop * mainloop = NULL; static void -menu_click (DbusmenuMenuitem * mi, gpointer data) +status_menu_click (DbusmenuMenuitem * mi, gpointer data) { StatusProviderStatus status = (StatusProviderStatus)GPOINTER_TO_INT(data); + int i; + for (i = 0; i < STATUS_PROVIDER_CNT; i++) { + status_provider_set_status(status_providers[i], status); + } + + return; +} + +static gboolean +build_providers (gpointer data) +{ + int i; + for (i = 0; i < STATUS_PROVIDER_CNT; i++) { + status_providers[i] = status_provider_newfuncs[i](); + } + return FALSE; } static gboolean @@ -59,7 +74,7 @@ build_menu (gpointer data) dbusmenu_menuitem_property_set(mi, "label", _(status_strings[i])); dbusmenu_menuitem_property_set(mi, "icon", status_icons[i]); - g_signal_connect(G_OBJECT(mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, 0, GINT_TO_POINTER(i)); + g_signal_connect(G_OBJECT(mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(status_menu_click), GINT_TO_POINTER(i)); dbusmenu_menuitem_child_append(root, mi); @@ -89,6 +104,8 @@ main (int argc, char ** argv) return 1; } + g_idle_add(build_providers, NULL); + root_menuitem = dbusmenu_menuitem_new(); DbusmenuServer * server = dbusmenu_server_new(INDICATOR_STATUS_DBUS_OBJECT); dbusmenu_server_set_root(server, root_menuitem); -- cgit v1.2.3 From b89d8f45e6ee34237c4adc12143b97e9afb23094 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 11 Jun 2009 21:12:17 -0500 Subject: Oops, what a mess up. But this sure makes things unhappy. Nasty to debug segfault. --- src/status-provider.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/status-provider.h b/src/status-provider.h index b20f4f0..87a2ea3 100644 --- a/src/status-provider.h +++ b/src/status-provider.h @@ -34,14 +34,14 @@ struct _StatusProvider { typedef struct _StatusProviderClass StatusProviderClass; struct _StatusProviderClass { + GObjectClass parent_class; + /* Signals */ void (*status_changed) (StatusProviderStatus newstatus); /* Virtual Functions */ void (*set_status) (StatusProvider * sp, StatusProviderStatus newstatus); StatusProviderStatus (*get_status) (StatusProvider * sp); - - GObjectClass parent_class; }; GType status_provider_get_type (void); -- cgit v1.2.3 From 54a3bda1d88cf6f72c0d913380b1d574e9b21cb6 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 11 Jun 2009 21:14:22 -0500 Subject: Adding in a proxy to start gettin' us some Pidgin --- src/status-provider-pidgin.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src') diff --git a/src/status-provider-pidgin.c b/src/status-provider-pidgin.c index ef2bc63..4dde758 100644 --- a/src/status-provider-pidgin.c +++ b/src/status-provider-pidgin.c @@ -5,8 +5,11 @@ #include "status-provider.h" #include "status-provider-pidgin.h" +#include + typedef struct _StatusProviderPidginPrivate StatusProviderPidginPrivate; struct _StatusProviderPidginPrivate { + DBusGProxy * proxy; }; #define STATUS_PROVIDER_PIDGIN_GET_PRIVATE(o) \ @@ -45,6 +48,9 @@ status_provider_pidgin_class_init (StatusProviderPidginClass *klass) static void status_provider_pidgin_init (StatusProviderPidgin *self) { + StatusProviderPidginPrivate * priv = STATUS_PROVIDER_PIDGIN_GET_PRIVATE(self); + + priv->proxy = NULL; return; } -- cgit v1.2.3 From f3f762e1bb3c91ef2226ea82982d24c51ee7a39e Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 12 Jun 2009 12:50:02 -0500 Subject: Putting in the status translation tables. --- src/status-provider-pidgin.c | 44 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/status-provider-pidgin.c b/src/status-provider-pidgin.c index 4dde758..1f5c5cc 100644 --- a/src/status-provider-pidgin.c +++ b/src/status-provider-pidgin.c @@ -7,9 +7,42 @@ #include +typedef enum { + PG_STATUS_UNKNOWN, + PG_STATUS_OFFLINE, + PG_STATUS_AVAILABLE, + PG_STATUS_UNAVAILABLE, + PG_STATUS_INVISIBLE, + PG_STATUS_AWAY, + PG_STATUS_EXTENDEND_AWAY, + PG_STATUS_MOBILE, + PG_STATUS_TUNE +} pg_status_t; + +static const StatusProviderStatus pg_to_sp_map[] = { + /* PG_STATUS_UNKNOWN, */ STATUS_PROVIDER_STATUS_OFFLINE, + /* PG_STATUS_OFFLINE, */ STATUS_PROVIDER_STATUS_OFFLINE, + /* PG_STATUS_AVAILABLE, */ STATUS_PROVIDER_STATUS_ONLINE, + /* PG_STATUS_UNAVAILABLE, */ STATUS_PROVIDER_STATUS_DND, + /* PG_STATUS_INVISIBLE, */ STATUS_PROVIDER_STATUS_INVISIBLE, + /* PG_STATUS_AWAY, */ STATUS_PROVIDER_STATUS_AWAY, + /* PG_STATUS_EXTENDEND_AWAY, */ STATUS_PROVIDER_STATUS_AWAY, + /* PG_STATUS_MOBILE, */ STATUS_PROVIDER_STATUS_OFFLINE, + /* PG_STATUS_TUNE */ STATUS_PROVIDER_STATUS_OFFLINE +}; + +static const pg_status_t sp_to_pg_map[STATUS_PROVIDER_STATUS_LAST] = { + /* STATUS_PROVIDER_STATUS_ONLINE, */ PG_STATUS_AVAILABLE, + /* STATUS_PROVIDER_STATUS_AWAY, */ PG_STATUS_AWAY, + /* STATUS_PROVIDER_STATUS_DND */ PG_STATUS_UNAVAILABLE, + /* STATUS_PROVIDER_STATUS_INVISIBLE*/ PG_STATUS_INVISIBLE, + /* STATUS_PROVIDER_STATUS_OFFLINE */ PG_STATUS_OFFLINE +}; + typedef struct _StatusProviderPidginPrivate StatusProviderPidginPrivate; struct _StatusProviderPidginPrivate { DBusGProxy * proxy; + pg_status_t pg_status; }; #define STATUS_PROVIDER_PIDGIN_GET_PRIVATE(o) \ @@ -51,6 +84,7 @@ status_provider_pidgin_init (StatusProviderPidgin *self) StatusProviderPidginPrivate * priv = STATUS_PROVIDER_PIDGIN_GET_PRIVATE(self); priv->proxy = NULL; + priv->pg_status = PG_STATUS_OFFLINE; return; } @@ -80,13 +114,17 @@ status_provider_pidgin_new (void) static void set_status (StatusProvider * sp, StatusProviderStatus status) { - + g_return_if_fail(IS_STATUS_PROVIDER_PIDGIN(sp)); + StatusProviderPidginPrivate * priv = STATUS_PROVIDER_PIDGIN_GET_PRIVATE(sp); + pg_status_t pg_status = sp_to_pg_map[status]; + priv->pg_status = pg_status; return; } static StatusProviderStatus get_status (StatusProvider * sp) { - - return STATUS_PROVIDER_STATUS_OFFLINE; + g_return_val_if_fail(IS_STATUS_PROVIDER_PIDGIN(sp), STATUS_PROVIDER_STATUS_OFFLINE); + StatusProviderPidginPrivate * priv = STATUS_PROVIDER_PIDGIN_GET_PRIVATE(sp); + return pg_to_sp_map[priv->pg_status]; } -- cgit v1.2.3 From 922ee2a93ffaebb430d406d787abeb4687657b73 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 12 Jun 2009 12:54:15 -0500 Subject: Some comments describing the intentions of the functions. --- src/status-provider-pidgin.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src') diff --git a/src/status-provider-pidgin.c b/src/status-provider-pidgin.c index 1f5c5cc..600ee79 100644 --- a/src/status-provider-pidgin.c +++ b/src/status-provider-pidgin.c @@ -105,12 +105,22 @@ status_provider_pidgin_finalize (GObject *object) return; } +/** + status_provider_pidgin_new: + + Creates a new #StatusProviderPidgin object. No parameters or anything + like that. Just a convience function. + + Return value: A new instance of #StatusProviderPidgin +*/ StatusProvider * status_provider_pidgin_new (void) { return STATUS_PROVIDER(g_object_new(STATUS_PROVIDER_PIDGIN_TYPE, NULL)); } +/* Takes the status provided generically for Status providers + and turns it into a Pidgin status and sends it to Pidgin. */ static void set_status (StatusProvider * sp, StatusProviderStatus status) { @@ -121,6 +131,8 @@ set_status (StatusProvider * sp, StatusProviderStatus status) return; } +/* Takes the cached Pidgin status and makes it into the generic + Status provider status */ static StatusProviderStatus get_status (StatusProvider * sp) { -- cgit v1.2.3 From d9116a6713e4a7d5bdbf10ba96fc3d34caf4f5eb Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 12 Jun 2009 16:20:47 -0500 Subject: Adding a DBus interface for the status specific stuff --- src/Makefile.am | 33 ++++++++++++++++++++++++++++----- src/status-service.xml | 23 +++++++++++++++++++++++ 2 files changed, 51 insertions(+), 5 deletions(-) create mode 100644 src/status-service.xml (limited to 'src') diff --git a/src/Makefile.am b/src/Makefile.am index a5380ac..a6ce265 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -7,14 +7,31 @@ libstatus_users_session_la_SOURCES = indicator-sus.c dbus-shared-names.h libstatus_users_session_la_CFLAGS = $(APPLET_CFLAGS) -Wall -Werror libstatus_users_session_la_LIBADD = $(APPLET_LIBS) -indicator_status_service_SOURCES = status-service.c \ - status-provider.h \ - status-provider.c \ - status-provider-pidgin.h \ - status-provider-pidgin.c +indicator_status_service_SOURCES = \ + status-service.c \ + status-service-client.h \ + status-service-server.h \ + status-provider.h \ + status-provider.c \ + status-provider-pidgin.h \ + status-provider-pidgin.c indicator_status_service_CFLAGS = $(STATUSSERVICE_CFLAGS) indicator_status_service_LDADD = $(STATUSSERVICE_LIBS) +status-service-client.h: status-service.xml + dbus-binding-tool \ + --prefix=_status_service_client \ + --mode=glib-client \ + --output=status-service-client.h \ + $(srcdir)/status-service.xml + +status-service-server.h: status-service.xml + dbus-binding-tool \ + --prefix=_status_service_server \ + --mode=glib-server \ + --output=status-service-server.h \ + $(srcdir)/status-service.xml + indicator_users_service_SOURCES = users-service.c indicator_users_service_CFLAGS = $(USERSSERVICE_CFLAGS) indicator_users_service_LDADD = $(USERSSERVICE_LIBS) @@ -23,3 +40,9 @@ indicator_session_service_SOURCES = session-service.c indicator_session_service_CFLAGS = $(SESSIONSERVICE_CFLAGS) indicator_session_service_LDADD = $(SESSIONSERVICE_LIBS) +BUILT_SOURCES = \ + status-service-client.h \ + status-service-server.h + +EXTRA_DIST = \ + status-service.xml diff --git a/src/status-service.xml b/src/status-service.xml new file mode 100644 index 0000000..189df81 --- /dev/null +++ b/src/status-service.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + -- cgit v1.2.3 From 92632f9ebdf278b654c6ad99eabab826e4b32cac Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 12 Jun 2009 16:31:10 -0500 Subject: Actually the client is the indicator. Silly to have one binary be both client and server, heh. --- src/Makefile.am | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/Makefile.am b/src/Makefile.am index a6ce265..a6a4dd5 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,15 +1,25 @@ libexec_PROGRAMS = indicator-status-service indicator-users-service indicator-session-service +################### +# Indicator Stuff +################### + status_users_sessionlibdir = $(INDICATORDIR) status_users_sessionlib_LTLIBRARIES = libstatus-users-session.la -libstatus_users_session_la_SOURCES = indicator-sus.c dbus-shared-names.h +libstatus_users_session_la_SOURCES = \ + indicator-sus.c \ + dbus-shared-names.h \ + status-service-client.h libstatus_users_session_la_CFLAGS = $(APPLET_CFLAGS) -Wall -Werror libstatus_users_session_la_LIBADD = $(APPLET_LIBS) +################ +# Status Stuff +################ + indicator_status_service_SOURCES = \ status-service.c \ - status-service-client.h \ status-service-server.h \ status-provider.h \ status-provider.c \ @@ -32,14 +42,26 @@ status-service-server.h: status-service.xml --output=status-service-server.h \ $(srcdir)/status-service.xml +############### +# Users Stuff +############### + indicator_users_service_SOURCES = users-service.c indicator_users_service_CFLAGS = $(USERSSERVICE_CFLAGS) indicator_users_service_LDADD = $(USERSSERVICE_LIBS) +################# +# Session Stuff +################# + indicator_session_service_SOURCES = session-service.c indicator_session_service_CFLAGS = $(SESSIONSERVICE_CFLAGS) indicator_session_service_LDADD = $(SESSIONSERVICE_LIBS) +############### +# Other Stuff +############### + BUILT_SOURCES = \ status-service-client.h \ status-service-server.h -- cgit v1.2.3 From 35477b8fb1bd21c4cccf039c4648af47972414a9 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 12 Jun 2009 16:34:22 -0500 Subject: Brining in the client side of the API --- src/indicator-sus.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/indicator-sus.c b/src/indicator-sus.c index 4c1c163..5d6c219 100644 --- a/src/indicator-sus.c +++ b/src/indicator-sus.c @@ -10,6 +10,7 @@ INDICATOR_SET_VERSION INDICATOR_SET_NAME("users-status-session") #include "dbus-shared-names.h" +#include "status-service-client.h" static GtkMenu * status_menu = NULL; static GtkMenu * users_menu = NULL; -- cgit v1.2.3 From 9eb765152122a08ddfa95b150d9a7d5c46559356 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 12 Jun 2009 16:56:08 -0500 Subject: A quickly little object to put itself on DBus. --- src/Makefile.am | 2 ++ src/status-service-dbus.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++ src/status-service-dbus.h | 31 ++++++++++++++++++++++++++ src/status-service.c | 2 ++ 4 files changed, 91 insertions(+) create mode 100644 src/status-service-dbus.c create mode 100644 src/status-service-dbus.h (limited to 'src') diff --git a/src/Makefile.am b/src/Makefile.am index a6a4dd5..1965fe9 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -20,6 +20,8 @@ libstatus_users_session_la_LIBADD = $(APPLET_LIBS) indicator_status_service_SOURCES = \ status-service.c \ + status-service-dbus.h \ + status-service-dbus.c \ status-service-server.h \ status-provider.h \ status-provider.c \ diff --git a/src/status-service-dbus.c b/src/status-service-dbus.c new file mode 100644 index 0000000..1eb94ca --- /dev/null +++ b/src/status-service-dbus.c @@ -0,0 +1,56 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "status-service-dbus.h" + +static void status_service_dbus_class_init (StatusServiceDbusClass *klass); +static void status_service_dbus_init (StatusServiceDbus *self); +static void status_service_dbus_dispose (GObject *object); +static void status_service_dbus_finalize (GObject *object); +static void _status_service_server_watch (void); + +#include "status-service-server.h" + +G_DEFINE_TYPE (StatusServiceDbus, status_service_dbus, G_TYPE_OBJECT); + +static void +status_service_dbus_class_init (StatusServiceDbusClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->dispose = status_service_dbus_dispose; + object_class->finalize = status_service_dbus_finalize; + + return; +} + +static void +status_service_dbus_init (StatusServiceDbus *self) +{ + + return; +} + +static void +status_service_dbus_dispose (GObject *object) +{ + + G_OBJECT_CLASS (status_service_dbus_parent_class)->dispose (object); + return; +} + +static void +status_service_dbus_finalize (GObject *object) +{ + + G_OBJECT_CLASS (status_service_dbus_parent_class)->finalize (object); + return; +} + +static void +_status_service_server_watch (void) +{ + + return; +} diff --git a/src/status-service-dbus.h b/src/status-service-dbus.h new file mode 100644 index 0000000..1805dc5 --- /dev/null +++ b/src/status-service-dbus.h @@ -0,0 +1,31 @@ +#ifndef __STATUS_SERVICE_DBUS_H__ +#define __STATUS_SERVICE_DBUS_H__ + +#include +#include + +G_BEGIN_DECLS + +#define STATUS_SERVICE_DBUS_TYPE (status_service_dbus_get_type ()) +#define STATUS_SERVICE_DBUS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), STATUS_SERVICE_DBUS_TYPE, StatusServiceDbus)) +#define STATUS_SERVICE_DBUS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), STATUS_SERVICE_DBUS_TYPE, StatusServiceDbusClass)) +#define IS_STATUS_SERVICE_DBUS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), STATUS_SERVICE_DBUS_TYPE)) +#define IS_STATUS_SERVICE_DBUS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), STATUS_SERVICE_DBUS_TYPE)) +#define STATUS_SERVICE_DBUS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), STATUS_SERVICE_DBUS_TYPE, StatusServiceDbusClass)) + +typedef struct _StatusServiceDbus StatusServiceDbus; +typedef struct _StatusServiceDbusClass StatusServiceDbusClass; + +struct _StatusServiceDbusClass { + GObjectClass parent_class; +}; + +struct _StatusServiceDbus { + GObject parent; +}; + +GType status_service_dbus_get_type (void); + +G_END_DECLS + +#endif diff --git a/src/status-service.c b/src/status-service.c index 392b23a..e31a0db 100644 --- a/src/status-service.c +++ b/src/status-service.c @@ -9,6 +9,8 @@ #include "dbus-shared-names.h" +#include "status-service-dbus.h" + #include "status-provider.h" #include "status-provider-pidgin.h" -- cgit v1.2.3 From 094b80fb89c15cc369f4ca50e218cec12efbaadc Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 12 Jun 2009 17:04:48 -0500 Subject: Okay, we need functions as we want a list of icons. --- src/status-service-dbus.c | 16 ++++++++++++++++ src/status-service.xml | 14 ++++++++------ 2 files changed, 24 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/status-service-dbus.c b/src/status-service-dbus.c index 1eb94ca..9ffc6aa 100644 --- a/src/status-service-dbus.c +++ b/src/status-service-dbus.c @@ -9,6 +9,8 @@ static void status_service_dbus_init (StatusServiceDbus *self); static void status_service_dbus_dispose (GObject *object); static void status_service_dbus_finalize (GObject *object); static void _status_service_server_watch (void); +static void _status_service_server_status_icons (void); +static void _status_service_server_pretty_user_name (void); #include "status-service-server.h" @@ -54,3 +56,17 @@ _status_service_server_watch (void) return; } + +static void +_status_service_server_status_icons (void) +{ + + return; +} + +static void +_status_service_server_pretty_user_name (void) +{ + + return; +} diff --git a/src/status-service.xml b/src/status-service.xml index 189df81..df10859 100644 --- a/src/status-service.xml +++ b/src/status-service.xml @@ -2,21 +2,23 @@ - - - - + + + + + + - - + + -- cgit v1.2.3