diff options
-rw-r--r-- | .bzrignore | 1 | ||||
-rw-r--r-- | src/Makefile.am | 2 | ||||
-rw-r--r-- | src/app-menu-item.c | 91 | ||||
-rw-r--r-- | src/app-menu-item.h | 35 |
4 files changed, 128 insertions, 1 deletions
@@ -15,3 +15,4 @@ debian/indicator-messages.substvars debian/stamp-autotools-files debian/stamp-makefile-build libmessaging_la-im-menu-item.lo +src/libmessaging_la-app-menu-item.lo diff --git a/src/Makefile.am b/src/Makefile.am index d003e6e..67fbd05 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,6 +1,6 @@ messaginglibdir = $(libdir)/indicators/1 messaginglib_LTLIBRARIES = libmessaging.la -libmessaging_la_SOURCES = indicator-messages.c im-menu-item.c im-menu-item.h +libmessaging_la_SOURCES = indicator-messages.c im-menu-item.c im-menu-item.h app-menu-item.c app-menu-item.h libmessaging_la_CFLAGS = $(APPLET_CFLAGS) -Wall -Wl,-Bsymbolic-functions -Wl,-z,defs -Wl,--as-needed libmessaging_la_LIBADD = $(APPLET_LIBS) diff --git a/src/app-menu-item.c b/src/app-menu-item.c new file mode 100644 index 0000000..654f869 --- /dev/null +++ b/src/app-menu-item.c @@ -0,0 +1,91 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <glib/gi18n.h> +#include <gtk/gtk.h> +#include "app-menu-item.h" + +typedef struct _AppMenuItemPrivate AppMenuItemPrivate; + +struct _AppMenuItemPrivate +{ + IndicateListener * listener; + IndicateListenerServer * server; + IndicateListenerIndicator * indicator; + +}; + +#define APP_MENU_ITEM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), APP_MENU_ITEM_TYPE, AppMenuItemPrivate)) + +/* Prototypes */ +static void app_menu_item_class_init (AppMenuItemClass *klass); +static void app_menu_item_init (AppMenuItem *self); +static void app_menu_item_dispose (GObject *object); +static void app_menu_item_finalize (GObject *object); +static void activate_cb (AppMenuItem * self, gpointer data); + + + +G_DEFINE_TYPE (AppMenuItem, app_menu_item, GTK_TYPE_MENU_ITEM); + +static void +app_menu_item_class_init (AppMenuItemClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (klass, sizeof (AppMenuItemPrivate)); + + object_class->dispose = app_menu_item_dispose; + object_class->finalize = app_menu_item_finalize; +} + +static void +app_menu_item_init (AppMenuItem *self) +{ + g_debug("Building new IM Menu Item"); + AppMenuItemPrivate * priv = APP_MENU_ITEM_GET_PRIVATE(self); + + priv->listener = NULL; + priv->server = NULL; + priv->indicator = NULL; + + + return; +} + +static void +app_menu_item_dispose (GObject *object) +{ + G_OBJECT_CLASS (app_menu_item_parent_class)->dispose (object); +} + +static void +app_menu_item_finalize (GObject *object) +{ + G_OBJECT_CLASS (app_menu_item_parent_class)->finalize (object); +} + +AppMenuItem * +app_menu_item_new (IndicateListener * listener, IndicateListenerServer * server, IndicateListenerIndicator * indicator) +{ + g_debug("Building a new IM Menu Item"); + AppMenuItem * self = g_object_new(APP_MENU_ITEM_TYPE, NULL); + + AppMenuItemPrivate * priv = APP_MENU_ITEM_GET_PRIVATE(self); + + priv->listener = listener; + priv->server = server; + priv->indicator = indicator; + + g_signal_connect(G_OBJECT(self), "activate", G_CALLBACK(activate_cb), NULL); + + return self; +} + +static void +activate_cb (AppMenuItem * self, gpointer data) +{ + AppMenuItemPrivate * priv = APP_MENU_ITEM_GET_PRIVATE(self); + +} diff --git a/src/app-menu-item.h b/src/app-menu-item.h new file mode 100644 index 0000000..c514366 --- /dev/null +++ b/src/app-menu-item.h @@ -0,0 +1,35 @@ +#ifndef __APP_MENU_ITEM_H__ +#define __APP_MENU_ITEM_H__ + +#include <glib.h> +#include <glib-object.h> + +#include <libindicate/listener.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 { + GtkMenuItemClass parent_class; +}; + +struct _AppMenuItem { + GtkMenuItem parent; +}; + +GType app_menu_item_get_type (void); +AppMenuItem * app_menu_item_new (IndicateListener * listener, IndicateListenerServer * server, IndicateListenerIndicator * indicator); + +G_END_DECLS + +#endif + |