aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTed Gould <ted@canonical.com>2009-02-06 16:26:20 +0100
committerTed Gould <ted@canonical.com>2009-02-06 16:26:20 +0100
commit93bf960b2b8d0460a50ed1678d7065a3f5e3f02e (patch)
treecf95c8673c09d12d185355ccd3d2d93b42a4e8d2 /src
parentc06fbefb69e7b678b080b9bf8311cebf5c76f327 (diff)
downloadayatana-indicator-messages-93bf960b2b8d0460a50ed1678d7065a3f5e3f02e.tar.gz
ayatana-indicator-messages-93bf960b2b8d0460a50ed1678d7065a3f5e3f02e.tar.bz2
ayatana-indicator-messages-93bf960b2b8d0460a50ed1678d7065a3f5e3f02e.zip
Adding in an application menu item to start building those
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am2
-rw-r--r--src/app-menu-item.c91
-rw-r--r--src/app-menu-item.h35
3 files changed, 127 insertions, 1 deletions
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
+