From fe30d5b4e43323cd8c85f15fcd25399396fdd30a Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 17 Feb 2010 23:14:50 -0600 Subject: Adding a status directory and icons for accounts that are logged in --- data/icons/16x16/Makefile.am | 2 +- data/icons/16x16/status/Makefile.am | 7 + data/icons/16x16/status/account-logged-in.png | Bin 0 -> 962 bytes data/icons/22x22/Makefile.am | 2 +- data/icons/22x22/status/Makefile.am | 7 + data/icons/22x22/status/account-logged-in.png | Bin 0 -> 1356 bytes data/icons/24x24/Makefile.am | 2 +- data/icons/24x24/status/Makefile.am | 7 + data/icons/24x24/status/account-logged-in.png | Bin 0 -> 1356 bytes data/icons/32x32/Makefile.am | 2 +- data/icons/32x32/status/Makefile.am | 7 + data/icons/32x32/status/account-logged-in.png | Bin 0 -> 2136 bytes data/icons/scalable/Makefile.am | 2 +- data/icons/scalable/status/Makefile.am | 7 + data/icons/scalable/status/account-logged-in.svg | 270 +++++++++++++++++++++++ 15 files changed, 310 insertions(+), 5 deletions(-) create mode 100644 data/icons/16x16/status/Makefile.am create mode 100644 data/icons/16x16/status/account-logged-in.png create mode 100644 data/icons/22x22/status/Makefile.am create mode 100644 data/icons/22x22/status/account-logged-in.png create mode 100644 data/icons/24x24/status/Makefile.am create mode 100644 data/icons/24x24/status/account-logged-in.png create mode 100644 data/icons/32x32/status/Makefile.am create mode 100644 data/icons/32x32/status/account-logged-in.png create mode 100644 data/icons/scalable/status/Makefile.am create mode 100644 data/icons/scalable/status/account-logged-in.svg diff --git a/data/icons/16x16/Makefile.am b/data/icons/16x16/Makefile.am index 0224d45..c163076 100644 --- a/data/icons/16x16/Makefile.am +++ b/data/icons/16x16/Makefile.am @@ -1 +1 @@ -SUBDIRS = actions +SUBDIRS = actions status diff --git a/data/icons/16x16/status/Makefile.am b/data/icons/16x16/status/Makefile.am new file mode 100644 index 0000000..c0af60e --- /dev/null +++ b/data/icons/16x16/status/Makefile.am @@ -0,0 +1,7 @@ + +iconsdir = $(INDICATORICONSDIR)/hicolor/16x16/status + +icons_DATA = \ + account-logged-in.png + +EXTRA_DIST = $(icons_DATA) diff --git a/data/icons/16x16/status/account-logged-in.png b/data/icons/16x16/status/account-logged-in.png new file mode 100644 index 0000000..fb4362c Binary files /dev/null and b/data/icons/16x16/status/account-logged-in.png differ diff --git a/data/icons/22x22/Makefile.am b/data/icons/22x22/Makefile.am index 0224d45..c163076 100644 --- a/data/icons/22x22/Makefile.am +++ b/data/icons/22x22/Makefile.am @@ -1 +1 @@ -SUBDIRS = actions +SUBDIRS = actions status diff --git a/data/icons/22x22/status/Makefile.am b/data/icons/22x22/status/Makefile.am new file mode 100644 index 0000000..1ce0fa1 --- /dev/null +++ b/data/icons/22x22/status/Makefile.am @@ -0,0 +1,7 @@ + +iconsdir = $(INDICATORICONSDIR)/hicolor/22x22/status + +icons_DATA = \ + account-logged-in.png + +EXTRA_DIST = $(icons_DATA) diff --git a/data/icons/22x22/status/account-logged-in.png b/data/icons/22x22/status/account-logged-in.png new file mode 100644 index 0000000..e27d75f Binary files /dev/null and b/data/icons/22x22/status/account-logged-in.png differ diff --git a/data/icons/24x24/Makefile.am b/data/icons/24x24/Makefile.am index 0224d45..c163076 100644 --- a/data/icons/24x24/Makefile.am +++ b/data/icons/24x24/Makefile.am @@ -1 +1 @@ -SUBDIRS = actions +SUBDIRS = actions status diff --git a/data/icons/24x24/status/Makefile.am b/data/icons/24x24/status/Makefile.am new file mode 100644 index 0000000..4fa065a --- /dev/null +++ b/data/icons/24x24/status/Makefile.am @@ -0,0 +1,7 @@ + +iconsdir = $(INDICATORICONSDIR)/hicolor/24x24/status + +icons_DATA = \ + account-logged-in.png + +EXTRA_DIST = $(icons_DATA) diff --git a/data/icons/24x24/status/account-logged-in.png b/data/icons/24x24/status/account-logged-in.png new file mode 100644 index 0000000..db4f548 Binary files /dev/null and b/data/icons/24x24/status/account-logged-in.png differ diff --git a/data/icons/32x32/Makefile.am b/data/icons/32x32/Makefile.am index 0224d45..c163076 100644 --- a/data/icons/32x32/Makefile.am +++ b/data/icons/32x32/Makefile.am @@ -1 +1 @@ -SUBDIRS = actions +SUBDIRS = actions status diff --git a/data/icons/32x32/status/Makefile.am b/data/icons/32x32/status/Makefile.am new file mode 100644 index 0000000..b852725 --- /dev/null +++ b/data/icons/32x32/status/Makefile.am @@ -0,0 +1,7 @@ + +iconsdir = $(INDICATORICONSDIR)/hicolor/32x32/status + +icons_DATA = \ + account-logged-in.png + +EXTRA_DIST = $(icons_DATA) diff --git a/data/icons/32x32/status/account-logged-in.png b/data/icons/32x32/status/account-logged-in.png new file mode 100644 index 0000000..05bff57 Binary files /dev/null and b/data/icons/32x32/status/account-logged-in.png differ diff --git a/data/icons/scalable/Makefile.am b/data/icons/scalable/Makefile.am index 0224d45..c163076 100644 --- a/data/icons/scalable/Makefile.am +++ b/data/icons/scalable/Makefile.am @@ -1 +1 @@ -SUBDIRS = actions +SUBDIRS = actions status diff --git a/data/icons/scalable/status/Makefile.am b/data/icons/scalable/status/Makefile.am new file mode 100644 index 0000000..cb006e2 --- /dev/null +++ b/data/icons/scalable/status/Makefile.am @@ -0,0 +1,7 @@ + +iconsdir = $(INDICATORICONSDIR)/hicolor/scalable/status + +icons_DATA = \ + account-logged-in.svg + +EXTRA_DIST = $(icons_DATA) diff --git a/data/icons/scalable/status/account-logged-in.svg b/data/icons/scalable/status/account-logged-in.svg new file mode 100644 index 0000000..c3ef44f --- /dev/null +++ b/data/icons/scalable/status/account-logged-in.svg @@ -0,0 +1,270 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Emblem Urgent + + + Jakub Steiner + + + + + Andreas Nilsson + + + + + + generic + + + + + + + + + + + + + + + + + + + + -- cgit v1.2.3 From de76d333676d3c04a00d48ff5c57f7bff031f399 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 17 Feb 2010 23:16:26 -0600 Subject: Building the make files --- configure.ac | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/configure.ac b/configure.ac index 1b4ecfa..b401694 100644 --- a/configure.ac +++ b/configure.ac @@ -132,14 +132,19 @@ data/Makefile data/icons/Makefile data/icons/16x16/Makefile data/icons/16x16/actions/Makefile +data/icons/16x16/status/Makefile data/icons/22x22/Makefile data/icons/22x22/actions/Makefile +data/icons/22x22/status/Makefile data/icons/24x24/Makefile data/icons/24x24/actions/Makefile +data/icons/24x24/status/Makefile data/icons/32x32/Makefile data/icons/32x32/actions/Makefile +data/icons/32x32/status/Makefile data/icons/scalable/Makefile data/icons/scalable/actions/Makefile +data/icons/scalable/status/Makefile po/Makefile.in ]) -- cgit v1.2.3 From 59c5e7039b4549c2e7e7a4052c0a3f9407961357 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 17 Feb 2010 23:20:23 -0600 Subject: Adding in some defines for our new menu type. --- src/dbus-shared-names.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/dbus-shared-names.h b/src/dbus-shared-names.h index 1fd256f..253cba8 100644 --- a/src/dbus-shared-names.h +++ b/src/dbus-shared-names.h @@ -38,4 +38,8 @@ with this program. If not, see . #define INDICATOR_SESSION_DBUS_OBJECT "/org/ayatana/indicator/session/menu" #define INDICATOR_SESSION_DBUS_VERSION 0 +#define USER_ITEM_TYPE "x-canonical-user-item" +#define USER_ITEM_PROP_NAME "user-item-name" +#define USER_ITEM_PROP_LOGGED_IN "user-item-logged-in" + #endif /* __DBUS_SHARED_NAMES_H__ */ -- cgit v1.2.3 From 765a3b87d9812680615dcb7278e16fea8f0fa1d1 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 17 Feb 2010 23:24:09 -0600 Subject: Registering a handler for our new type --- src/indicator-session.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/indicator-session.c b/src/indicator-session.c index dda8c76..d931bcd 100644 --- a/src/indicator-session.c +++ b/src/indicator-session.c @@ -135,13 +135,25 @@ get_icon (IndicatorObject * io) return status_image; } +static gboolean +new_user_item (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client) +{ + + return FALSE; +} + /* Indicator based function to get the menu for the whole applet. This starts up asking for the parts of the menu from the various services. */ static GtkMenu * get_menu (IndicatorObject * io) { - return GTK_MENU(dbusmenu_gtkmenu_new(INDICATOR_SESSION_DBUS_NAME, INDICATOR_SESSION_DBUS_OBJECT)); + DbusmenuGtkMenu * menu = dbusmenu_gtkmenu_new(INDICATOR_SESSION_DBUS_NAME, INDICATOR_SESSION_DBUS_OBJECT); + DbusmenuGtkClient * client = dbusmenu_gtkmenu_get_client(menu); + + dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), USER_ITEM_TYPE, new_user_item); + + return GTK_MENU(menu); } -- cgit v1.2.3 From 7723397ac8f8f5875ffac86f007b9321a503a846 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 17 Feb 2010 23:36:13 -0600 Subject: Fleshing out the building of the user item --- src/indicator-session.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/indicator-session.c b/src/indicator-session.c index d931bcd..a39e4a0 100644 --- a/src/indicator-session.c +++ b/src/indicator-session.c @@ -135,11 +135,33 @@ get_icon (IndicatorObject * io) return status_image; } +/* Builds an item with a hip little logged in icon. */ static gboolean new_user_item (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client) { + GtkMenuItem * gmi = GTK_MENU_ITEM(gtk_menu_item_new()); + GtkWidget * hbox = gtk_hbox_new(FALSE, 0); + + GtkWidget * label = gtk_label_new(dbusmenu_menuitem_property_get(newitem, USER_ITEM_PROP_NAME)); + gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); + gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0); + gtk_widget_show(label); + + GtkWidget * icon = gtk_image_new_from_icon_name("account-logged-in", GTK_ICON_SIZE_MENU); + gtk_misc_set_alignment(GTK_MISC(icon), 1.0, 0.5); + gtk_box_pack_start(GTK_BOX(hbox), icon, FALSE, FALSE, 0); + if (dbusmenu_menuitem_property_get_bool(newitem, USER_ITEM_PROP_LOGGED_IN)) { + gtk_widget_show(icon); + } else { + gtk_widget_hide(icon); + } + + gtk_container_add(GTK_CONTAINER(gmi), hbox); + gtk_widget_show(hbox); + + dbusmenu_gtkclient_newitem_base(DBUSMENU_GTKCLIENT(client), newitem, gmi, parent); - return FALSE; + return TRUE; } /* Indicator based function to get the menu for the whole -- cgit v1.2.3 From 6868e64c17ba4aea5f8aa22b84a6518119b6754e Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 17 Feb 2010 23:39:11 -0600 Subject: Switching the guest over to a user item. --- src/session-service.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/session-service.c b/src/session-service.c index 3303317..fed4446 100644 --- a/src/session-service.c +++ b/src/session-service.c @@ -444,7 +444,9 @@ rebuild_items (DbusmenuMenuitem *root, if (check_guest_session ()) { mi = dbusmenu_menuitem_new (); - dbusmenu_menuitem_property_set (mi, DBUSMENU_MENUITEM_PROP_LABEL, _("Guest Session")); + dbusmenu_menuitem_property_set (mi, DBUSMENU_MENUITEM_PROP_TYPE, USER_ITEM_TYPE); + dbusmenu_menuitem_property_set (mi, USER_ITEM_PROP_NAME, _("Guest Session")); + dbusmenu_menuitem_property_set_bool (mi, USER_ITEM_PROP_LOGGED_IN, FALSE); dbusmenu_menuitem_child_append (root, mi); g_signal_connect (G_OBJECT (mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK (activate_guest_session), NULL); } -- cgit v1.2.3 From 4a297fec6d7fbc75035aa7d3d1eedb90bea98d15 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 17 Feb 2010 23:42:54 -0600 Subject: Switching users over to user items --- src/session-service.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/session-service.c b/src/session-service.c index fed4446..1a01174 100644 --- a/src/session-service.c +++ b/src/session-service.c @@ -495,7 +495,9 @@ rebuild_items (DbusmenuMenuitem *root, user->service = service; mi = dbusmenu_menuitem_new (); - dbusmenu_menuitem_property_set (mi, DBUSMENU_MENUITEM_PROP_LABEL, user->real_name); + dbusmenu_menuitem_property_set (mi, DBUSMENU_MENUITEM_PROP_TYPE, USER_ITEM_TYPE); + dbusmenu_menuitem_property_set (mi, USER_ITEM_PROP_NAME, user->real_name); + dbusmenu_menuitem_property_set_bool (mi, USER_ITEM_PROP_LOGGED_IN, user->sessions != NULL); dbusmenu_menuitem_child_append (root, mi); g_signal_connect (G_OBJECT (mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK (activate_user_session), user); } -- cgit v1.2.3