diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.am | 4 | ||||
-rw-r--r-- | src/app-menu-item.h | 58 | ||||
-rw-r--r-- | src/app-section.c (renamed from src/app-menu-item.c) | 119 | ||||
-rw-r--r-- | src/app-section.h | 58 | ||||
-rw-r--r-- | src/messages-service.c | 18 |
5 files changed, 128 insertions, 129 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 2527878..1dbb514 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -42,8 +42,8 @@ indicator_messages_service_SOURCES = \ messages-service-dbus.h \ gen-messages-service.xml.h \ gen-messages-service.xml.c \ - app-menu-item.c \ - app-menu-item.h \ + app-section.c \ + app-section.h \ dbus-data.h \ \ status-items.c \ diff --git a/src/app-menu-item.h b/src/app-menu-item.h deleted file mode 100644 index 1fb2762..0000000 --- a/src/app-menu-item.h +++ /dev/null @@ -1,58 +0,0 @@ -/* -An indicator to show information that is in messaging applications -that the user is using. - -Copyright 2009 Canonical Ltd. - -Authors: - Ted Gould <ted@canonical.com> - -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 <http://www.gnu.org/licenses/>. -*/ -#ifndef __APP_MENU_ITEM_H__ -#define __APP_MENU_ITEM_H__ - -#include <gio/gio.h> - -G_BEGIN_DECLS - -#define APP_MENU_ITEM_TYPE (app_menu_item_get_type ()) -#define APP_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), APP_MENU_ITEM_TYPE, AppMenuItem)) -#define APP_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), APP_MENU_ITEM_TYPE, AppMenuItemClass)) -#define IS_APP_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), APP_MENU_ITEM_TYPE)) -#define IS_APP_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), APP_MENU_ITEM_TYPE)) -#define APP_MENU_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), APP_MENU_ITEM_TYPE, AppMenuItemClass)) - -typedef struct _AppMenuItem AppMenuItem; -typedef struct _AppMenuItemClass AppMenuItemClass; - -struct _AppMenuItemClass { - GObjectClass parent_class; -}; - -struct _AppMenuItem { - GObject parent; -}; - -GType app_menu_item_get_type (void); -AppMenuItem * app_menu_item_new (GDesktopAppInfo *appinfo); -guint app_menu_item_get_count (AppMenuItem * appitem); -const gchar * app_menu_item_get_name (AppMenuItem * appitem); -const gchar * app_menu_item_get_desktop (AppMenuItem * appitem); -GMenuModel * app_menu_item_get_menu (AppMenuItem *appitem); -GAppInfo * app_menu_item_get_app_info (AppMenuItem *appitem); - -G_END_DECLS - -#endif /* __APP_MENU_ITEM_H__ */ - diff --git a/src/app-menu-item.c b/src/app-section.c index 7638eb5..5a5e838 100644 --- a/src/app-menu-item.c +++ b/src/app-section.c @@ -28,12 +28,12 @@ with this program. If not, see <http://www.gnu.org/licenses/>. #include <gio/gdesktopappinfo.h> #include <gio/gio.h> #include <libindicator/indicator-desktop-shortcuts.h> -#include "app-menu-item.h" +#include "app-section.h" #include "dbus-data.h" -typedef struct _AppMenuItemPrivate AppMenuItemPrivate; +typedef struct _AppSectionPrivate AppSectionPrivate; -struct _AppMenuItemPrivate +struct _AppSectionPrivate { GDesktopAppInfo * appinfo; guint unreadcount; @@ -44,7 +44,7 @@ struct _AppMenuItemPrivate GSimpleActionGroup *static_shortcuts; }; -#define APP_MENU_ITEM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), APP_MENU_ITEM_TYPE, AppMenuItemPrivate)) +#define APP_SECTION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), APP_SECTION_TYPE, AppSectionPrivate)) enum { PROP_0, @@ -55,36 +55,36 @@ enum { static GParamSpec *properties[NUM_PROPERTIES]; /* Prototypes */ -static void app_menu_item_class_init (AppMenuItemClass *klass); -static void app_menu_item_init (AppMenuItem *self); -static void app_menu_item_get_property (GObject *object, - guint property_id, - GValue *value, - GParamSpec *pspec); -static void app_menu_item_set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec); -static void app_menu_item_dispose (GObject *object); +static void app_section_class_init (AppSectionClass *klass); +static void app_section_init (AppSection *self); +static void app_section_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec); +static void app_section_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec); +static void app_section_dispose (GObject *object); static void activate_cb (GSimpleAction *action, GVariant *param, gpointer userdata); -static void app_menu_item_set_app_info (AppMenuItem *self, - GDesktopAppInfo *appinfo); +static void app_section_set_app_info (AppSection *self, + GDesktopAppInfo *appinfo); /* GObject Boilerplate */ -G_DEFINE_TYPE (AppMenuItem, app_menu_item, G_TYPE_OBJECT); +G_DEFINE_TYPE (AppSection, app_section, G_TYPE_OBJECT); static void -app_menu_item_class_init (AppMenuItemClass *klass) +app_section_class_init (AppSectionClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); - g_type_class_add_private (klass, sizeof (AppMenuItemPrivate)); + g_type_class_add_private (klass, sizeof (AppSectionPrivate)); - object_class->get_property = app_menu_item_get_property; - object_class->set_property = app_menu_item_set_property; - object_class->dispose = app_menu_item_dispose; + object_class->get_property = app_section_get_property; + object_class->set_property = app_section_set_property; + object_class->dispose = app_section_dispose; properties[PROP_APPINFO] = g_param_spec_object ("app-info", "AppInfo", @@ -96,10 +96,9 @@ app_menu_item_class_init (AppMenuItemClass *klass) } static void -app_menu_item_init (AppMenuItem *self) +app_section_init (AppSection *self) { - g_debug("Building new App Menu Item"); - AppMenuItemPrivate * priv = APP_MENU_ITEM_GET_PRIVATE(self); + AppSectionPrivate * priv = APP_SECTION_GET_PRIVATE(self); priv->appinfo = NULL; priv->unreadcount = 0; @@ -111,17 +110,17 @@ app_menu_item_init (AppMenuItem *self) } static void -app_menu_item_get_property (GObject *object, +app_section_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { - AppMenuItem *self = APP_MENU_ITEM (object); + AppSection *self = APP_SECTION (object); switch (property_id) { case PROP_APPINFO: - g_value_set_object (value, app_menu_item_get_app_info (self)); + g_value_set_object (value, app_section_get_app_info (self)); break; default: @@ -130,17 +129,17 @@ app_menu_item_get_property (GObject *object, } static void -app_menu_item_set_property (GObject *object, +app_section_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { - AppMenuItem *self = APP_MENU_ITEM (object); + AppSection *self = APP_SECTION (object); switch (property_id) { case PROP_APPINFO: - app_menu_item_set_app_info (self, g_value_get_object (value)); + app_section_set_app_info (self, g_value_get_object (value)); break; default: @@ -148,10 +147,10 @@ app_menu_item_set_property (GObject *object, } } static void -app_menu_item_dispose (GObject *object) +app_section_dispose (GObject *object) { - AppMenuItem * self = APP_MENU_ITEM(object); - AppMenuItemPrivate * priv = APP_MENU_ITEM_GET_PRIVATE(self); + AppSection * self = APP_SECTION(object); + AppSectionPrivate * priv = APP_SECTION_GET_PRIVATE(self); g_clear_object (&priv->menu); g_clear_object (&priv->static_shortcuts); @@ -166,7 +165,7 @@ app_menu_item_dispose (GObject *object) priv->appinfo = NULL; } - G_OBJECT_CLASS (app_menu_item_parent_class)->dispose (object); + G_OBJECT_CLASS (app_section_parent_class)->dispose (object); } /* Respond to one of the shortcuts getting clicked on. */ @@ -176,8 +175,8 @@ nick_activate_cb (GSimpleAction *action, gpointer userdata) { const gchar * nick = g_action_get_name (G_ACTION (action)); - AppMenuItem * mi = APP_MENU_ITEM (userdata); - AppMenuItemPrivate * priv = APP_MENU_ITEM_GET_PRIVATE(mi); + AppSection * mi = APP_SECTION (userdata); + AppSectionPrivate * priv = APP_SECTION_GET_PRIVATE(mi); g_return_if_fail(priv->ids != NULL); @@ -188,10 +187,10 @@ nick_activate_cb (GSimpleAction *action, } static void -app_menu_item_set_app_info (AppMenuItem *self, +app_section_set_app_info (AppSection *self, GDesktopAppInfo *appinfo) { - AppMenuItemPrivate *priv = APP_MENU_ITEM_GET_PRIVATE (self); + AppSectionPrivate *priv = APP_SECTION_GET_PRIVATE (self); GSimpleAction *launch; GMenuItem *menuitem; GIcon *icon; @@ -215,9 +214,9 @@ app_menu_item_set_app_info (AppMenuItem *self, g_simple_action_group_insert (priv->static_shortcuts, G_ACTION (launch)); if (priv->unreadcount > 0) - label = g_strdup_printf("%s (%d)", app_menu_item_get_name (self), priv->unreadcount); + label = g_strdup_printf("%s (%d)", app_section_get_name (self), priv->unreadcount); else - label = g_strdup(app_menu_item_get_name (self)); + label = g_strdup(app_section_get_name (self)); menuitem = g_menu_item_new (label, "launch"); g_menu_item_set_attribute (menuitem, INDICATOR_MENU_ATTRIBUTE_ICON_NAME, "s", iconstr); @@ -251,10 +250,10 @@ app_menu_item_set_app_info (AppMenuItem *self, g_object_unref (menuitem); } -AppMenuItem * -app_menu_item_new (GDesktopAppInfo *appinfo) +AppSection * +app_section_new (GDesktopAppInfo *appinfo) { - return g_object_new (APP_MENU_ITEM_TYPE, + return g_object_new (APP_SECTION_TYPE, "app-info", appinfo, NULL); } @@ -264,8 +263,8 @@ activate_cb (GSimpleAction *action, GVariant *param, gpointer userdata) { - AppMenuItem * mi = APP_MENU_ITEM (userdata); - AppMenuItemPrivate * priv = APP_MENU_ITEM_GET_PRIVATE(mi); + AppSection * mi = APP_SECTION (userdata); + AppSectionPrivate * priv = APP_SECTION_GET_PRIVATE(mi); GError *error = NULL; if (!g_app_info_launch (G_APP_INFO (priv->appinfo), NULL, NULL, &error)) { @@ -275,19 +274,19 @@ activate_cb (GSimpleAction *action, } guint -app_menu_item_get_count (AppMenuItem * appitem) +app_section_get_count (AppSection * self) { - g_return_val_if_fail(IS_APP_MENU_ITEM(appitem), 0); - AppMenuItemPrivate * priv = APP_MENU_ITEM_GET_PRIVATE(appitem); + g_return_val_if_fail(IS_APP_SECTION(self), 0); + AppSectionPrivate * priv = APP_SECTION_GET_PRIVATE(self); return priv->unreadcount; } const gchar * -app_menu_item_get_name (AppMenuItem * appitem) +app_section_get_name (AppSection * self) { - g_return_val_if_fail(IS_APP_MENU_ITEM(appitem), NULL); - AppMenuItemPrivate * priv = APP_MENU_ITEM_GET_PRIVATE(appitem); + g_return_val_if_fail(IS_APP_SECTION(self), NULL); + AppSectionPrivate * priv = APP_SECTION_GET_PRIVATE(self); if (priv->appinfo) { return g_app_info_get_name(G_APP_INFO(priv->appinfo)); @@ -296,10 +295,10 @@ app_menu_item_get_name (AppMenuItem * appitem) } const gchar * -app_menu_item_get_desktop (AppMenuItem * appitem) +app_section_get_desktop (AppSection * self) { - g_return_val_if_fail(IS_APP_MENU_ITEM(appitem), NULL); - AppMenuItemPrivate * priv = APP_MENU_ITEM_GET_PRIVATE(appitem); + g_return_val_if_fail(IS_APP_SECTION(self), NULL); + AppSectionPrivate * priv = APP_SECTION_GET_PRIVATE(self); if (priv->appinfo) return g_desktop_app_info_get_filename (priv->appinfo); else @@ -307,16 +306,16 @@ app_menu_item_get_desktop (AppMenuItem * appitem) } GMenuModel * -app_menu_item_get_menu (AppMenuItem *appitem) +app_section_get_menu (AppSection *self) { - AppMenuItemPrivate * priv = APP_MENU_ITEM_GET_PRIVATE(appitem); + AppSectionPrivate * priv = APP_SECTION_GET_PRIVATE(self); return G_MENU_MODEL (priv->menu); } GAppInfo * -app_menu_item_get_app_info (AppMenuItem *appitem) +app_section_get_app_info (AppSection *self) { - AppMenuItemPrivate * priv = APP_MENU_ITEM_GET_PRIVATE(appitem); + AppSectionPrivate * priv = APP_SECTION_GET_PRIVATE(self); return G_APP_INFO (priv->appinfo); } diff --git a/src/app-section.h b/src/app-section.h new file mode 100644 index 0000000..7989824 --- /dev/null +++ b/src/app-section.h @@ -0,0 +1,58 @@ +/* +An indicator to show information that is in messaging applications +that the user is using. + +Copyright 2009 Canonical Ltd. + +Authors: + Ted Gould <ted@canonical.com> + +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 <http://www.gnu.org/licenses/>. +*/ +#ifndef __APP_SECTION_H__ +#define __APP_SECTION_H__ + +#include <gio/gio.h> + +G_BEGIN_DECLS + +#define APP_SECTION_TYPE (app_section_get_type ()) +#define APP_SECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), APP_SECTION_TYPE, AppSection)) +#define APP_SECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), APP_SECTION_TYPE, AppSectionClass)) +#define IS_APP_SECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), APP_SECTION_TYPE)) +#define IS_APP_SECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), APP_SECTION_TYPE)) +#define APP_SECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), APP_SECTION_TYPE, AppSectionClass)) + +typedef struct _AppSection AppSection; +typedef struct _AppSectionClass AppSectionClass; + +struct _AppSectionClass { + GObjectClass parent_class; +}; + +struct _AppSection { + GObject parent; +}; + +GType app_section_get_type (void); +AppSection * app_section_new (GDesktopAppInfo *appinfo); +guint app_section_get_count (AppSection * appitem); +const gchar * app_section_get_name (AppSection * appitem); +const gchar * app_section_get_desktop (AppSection * appitem); +GMenuModel * app_section_get_menu (AppSection *appitem); +GAppInfo * app_section_get_app_info (AppSection *appitem); + +G_END_DECLS + +#endif /* __APP_SECTION_H__ */ + diff --git a/src/messages-service.c b/src/messages-service.c index 134c4ee..dcce1c5 100644 --- a/src/messages-service.c +++ b/src/messages-service.c @@ -30,7 +30,7 @@ with this program. If not, see <http://www.gnu.org/licenses/>. #include <gio/gdesktopappinfo.h> #include <glib/gi18n.h> -#include "app-menu-item.h" +#include "app-section.h" #include "dbus-data.h" #include "messages-service-dbus.h" #include "status-items.h" @@ -63,14 +63,14 @@ add_application (const gchar *desktop_id, desktop_file = g_desktop_app_info_get_filename (appinfo); if (!g_hash_table_lookup (applications, desktop_file)) { - AppMenuItem *menuitem = app_menu_item_new(appinfo); + AppSection *section = app_section_new(appinfo); /* TODO insert it at the right position (alphabetically by application name) */ g_menu_insert_section (menu, 2, - app_menu_item_get_name (menuitem), - app_menu_item_get_menu (menuitem)); + app_section_get_name (section), + app_section_get_menu (section)); - g_hash_table_insert (applications, g_strdup (desktop_file), menuitem); + g_hash_table_insert (applications, g_strdup (desktop_file), section); } g_object_unref (appinfo); @@ -101,7 +101,7 @@ remove_application (const char *desktop_id) { GDesktopAppInfo *appinfo; const gchar *desktop_file; - AppMenuItem *menuitem; + AppSection *section; appinfo = g_desktop_app_info_new (desktop_id); if (!appinfo) { @@ -111,9 +111,9 @@ remove_application (const char *desktop_id) desktop_file = g_desktop_app_info_get_filename (appinfo); - menuitem = g_hash_table_lookup (applications, desktop_file); - if (menuitem) { - int pos = g_menu_find_section (menu, app_menu_item_get_menu (menuitem)); + section = g_hash_table_lookup (applications, desktop_file); + if (section) { + int pos = g_menu_find_section (menu, app_section_get_menu (section)); if (pos >= 0) g_menu_remove (menu, pos); } |