aboutsummaryrefslogtreecommitdiff
path: root/src/im-desktop-menu.c
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2013-08-14 23:06:54 -0500
committerTed Gould <ted@gould.cx>2013-08-14 23:06:54 -0500
commita7e92c991d3970710eb94ecae1a3c7bd66ea1d3c (patch)
tree6040bb0a2391ba008bd48e70b7fb01e73986cdbc /src/im-desktop-menu.c
parent3baa8097f77fc731b3cbbc83f766d90020b32d6e (diff)
downloadayatana-indicator-messages-a7e92c991d3970710eb94ecae1a3c7bd66ea1d3c.tar.gz
ayatana-indicator-messages-a7e92c991d3970710eb94ecae1a3c7bd66ea1d3c.tar.bz2
ayatana-indicator-messages-a7e92c991d3970710eb94ecae1a3c7bd66ea1d3c.zip
Create the status section of the desktop menu
Diffstat (limited to 'src/im-desktop-menu.c')
-rw-r--r--src/im-desktop-menu.c44
1 files changed, 43 insertions, 1 deletions
diff --git a/src/im-desktop-menu.c b/src/im-desktop-menu.c
index 6cc51cd..ad6318e 100644
--- a/src/im-desktop-menu.c
+++ b/src/im-desktop-menu.c
@@ -18,6 +18,7 @@
*/
#include "im-desktop-menu.h"
+#include <glib/gi18n.h>
typedef ImMenuClass ImDesktopMenuClass;
@@ -174,13 +175,54 @@ im_desktop_menu_remove_all (ImApplicationList *applist,
}
}
+static GMenu *
+create_status_section (void)
+{
+ GMenu *menu;
+ GMenuItem *item;
+ struct status_item {
+ gchar *label;
+ gchar *action;
+ gchar *icon_name;
+ } status_items[] = {
+ { _("Available"), "indicator.status::available", "user-available" },
+ { _("Away"), "indicator.status::away", "user-away" },
+ { _("Busy"), "indicator.status::busy", "user-busy" },
+ { _("Invisible"), "indicator.status::invisible", "user-invisible" },
+ { _("Offline"), "indicator.status::offline", "user-offline" }
+ };
+ int i;
+
+ menu = g_menu_new ();
+
+ item = g_menu_item_new (NULL, NULL);
+ g_menu_item_set_attribute (item, "x-canonical-type", "s", "IdoMenuItem");
+
+ for (i = 0; i < G_N_ELEMENTS (status_items); i++) {
+ g_menu_item_set_label (item, status_items[i].label);
+ g_menu_item_set_detailed_action (item, status_items[i].action);
+ g_menu_item_set_attribute (item, "x-canonical-icon", "s", status_items[i].icon_name);
+ g_menu_append_item (menu, item);
+ }
+
+ g_object_unref (item);
+ return menu;
+}
+
static void
im_desktop_menu_constructed (GObject *object)
{
ImDesktopMenu *menu = IM_DESKTOP_MENU (object);
ImApplicationList *applist;
- /* TODO: chat section */
+ {
+ GMenu *status_section;
+
+ status_section = create_status_section();
+ im_menu_append_section (IM_MENU (menu), G_MENU_MODEL (status_section));
+
+ g_object_unref (status_section);
+ }
{
GMenu *clear_section;