From 1069a161a52c2e849b1e1d29f4ad71458b0e4e52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erick=20P=C3=A9rez=20Castellanos?= Date: Thu, 24 May 2012 00:41:41 -0400 Subject: [PATCH] Added signal for add-event button click. --- src/gcal-main-toolbar.c | 118 ++++++++++++++++++++++++++-------------- src/gcal-main-toolbar.h | 1 + 2 files changed, 79 insertions(+), 40 deletions(-) diff --git a/src/gcal-main-toolbar.c b/src/gcal-main-toolbar.c index 1d8124f7..e6ea27d1 100644 --- a/src/gcal-main-toolbar.c +++ b/src/gcal-main-toolbar.c @@ -29,20 +29,72 @@ struct _GcalMainToolbarPrivate enum { + /* From overview mode */ VIEW_CHANGED = 1, SOURCES_SHOWN, + ADD_EVENT, + NUM_SIGNALS }; static guint signals[NUM_SIGNALS] = { 0, }; +static void gcal_main_toolbar_constructed (GObject *object); + +static void gcal_main_toolbar_finalize (GObject *object); + static void _gcal_main_toolbar_view_changed (GtkWidget *button, gpointer user_data); + static void _gcal_main_toolbar_sources_shown (GtkWidget *button, gpointer user_data); +static void _gcal_main_toolbar_add_event (GtkWidget *button, + gpointer user_data); + G_DEFINE_TYPE (GcalMainToolbar, gcal_main_toolbar, GTK_CLUTTER_TYPE_ACTOR); +static void +gcal_main_toolbar_class_init (GcalMainToolbarClass *klass) +{ + G_OBJECT_CLASS (klass)->constructed = gcal_main_toolbar_constructed; + G_OBJECT_CLASS (klass)->finalize = gcal_main_toolbar_finalize; + + signals[VIEW_CHANGED] = g_signal_new ("view-changed", + GCAL_TYPE_MAIN_TOOLBAR, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GcalMainToolbarClass, + view_changed), + NULL, NULL, + g_cclosure_marshal_VOID__UINT, + G_TYPE_NONE, + 1, + G_TYPE_UINT); + + signals[SOURCES_SHOWN] = g_signal_new ("sources-shown", + GCAL_TYPE_MAIN_TOOLBAR, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GcalMainToolbarClass, + sources_shown), + NULL, NULL, + g_cclosure_marshal_VOID__BOOLEAN, + G_TYPE_NONE, + 1, + G_TYPE_BOOLEAN); + + signals[ADD_EVENT] = g_signal_new ("add-event", + GCAL_TYPE_MAIN_TOOLBAR, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GcalMainToolbarClass, + add_event), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0); + + g_type_class_add_private ((gpointer) klass, sizeof(GcalMainToolbarPrivate)); +} + static void gcal_main_toolbar_init (GcalMainToolbar *self) { @@ -78,7 +130,8 @@ gcal_main_toolbar_constructed (GObject *object) /* sources */ button = gtk_toggle_button_new (); - gtk_container_add (GTK_CONTAINER (button), + gtk_container_add ( + GTK_CONTAINER (button), gtk_image_new_from_icon_name ("emblem-documents-symbolic", GTK_ICON_SIZE_MENU)); @@ -201,14 +254,20 @@ gcal_main_toolbar_constructed (GObject *object) gtk_toolbar_insert (GTK_TOOLBAR (priv->widget), spacer, -1); /* add */ - button = gtk_toggle_button_new (); - gtk_container_add (GTK_CONTAINER (button), + button = gtk_button_new (); + gtk_container_add ( + GTK_CONTAINER (button), gtk_image_new_from_icon_name ("list-add-symbolic", GTK_ICON_SIZE_MENU)); context = gtk_widget_get_style_context (button); gtk_style_context_add_class (context, "raised"); + g_signal_connect (button, + "clicked", + G_CALLBACK (_gcal_main_toolbar_add_event), + GCAL_MAIN_TOOLBAR (object)); + item = gtk_tool_item_new (); gtk_container_add (GTK_CONTAINER (item), button); gtk_toolbar_insert (GTK_TOOLBAR (priv->widget), item, -1); @@ -227,64 +286,43 @@ gcal_main_toolbar_finalize (GObject *object) G_OBJECT_CLASS (gcal_main_toolbar_parent_class)->finalize (object); } -static void -gcal_main_toolbar_class_init (GcalMainToolbarClass *klass) -{ - G_OBJECT_CLASS (klass)->constructed = gcal_main_toolbar_constructed; - G_OBJECT_CLASS (klass)->finalize = gcal_main_toolbar_finalize; - - signals[VIEW_CHANGED] = g_signal_new ("view-changed", - GCAL_TYPE_MAIN_TOOLBAR, - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (GcalMainToolbarClass, - view_changed), - NULL, NULL, - g_cclosure_marshal_VOID__UINT, - G_TYPE_NONE, - 1, - G_TYPE_UINT); - - signals[SOURCES_SHOWN] = g_signal_new ("sources-shown", - GCAL_TYPE_MAIN_TOOLBAR, - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (GcalMainToolbarClass, - sources_shown), - NULL, NULL, - g_cclosure_marshal_VOID__BOOLEAN, - G_TYPE_NONE, - 1, - G_TYPE_BOOLEAN); - - g_type_class_add_private ((gpointer) klass, sizeof(GcalMainToolbarPrivate)); -} - static void _gcal_main_toolbar_view_changed (GtkWidget *button, gpointer user_data) { - GcalMainToolbar *app; + GcalMainToolbar *toolbar; guint view_type; - app = GCAL_MAIN_TOOLBAR (user_data); + toolbar = GCAL_MAIN_TOOLBAR (user_data); view_type = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (button), "view-type")); - g_signal_emit (app, signals[VIEW_CHANGED], 0, view_type); + g_signal_emit (toolbar, signals[VIEW_CHANGED], 0, view_type); } static void _gcal_main_toolbar_sources_shown (GtkWidget *button, gpointer user_data) { - GcalMainToolbar *app; + GcalMainToolbar *toolbar; - app = GCAL_MAIN_TOOLBAR (user_data); - g_signal_emit (app, + toolbar = GCAL_MAIN_TOOLBAR (user_data); + g_signal_emit (toolbar, signals[SOURCES_SHOWN], 0, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button))); } +static void +_gcal_main_toolbar_add_event (GtkWidget *button, + gpointer user_data) +{ + GcalMainToolbar *toolbar; + + toolbar = GCAL_MAIN_TOOLBAR (user_data); + g_signal_emit (toolbar, signals[ADD_EVENT], 0); +} + ClutterActor* gcal_main_toolbar_new (void) { diff --git a/src/gcal-main-toolbar.h b/src/gcal-main-toolbar.h index 30c41239..998a41be 100644 --- a/src/gcal-main-toolbar.h +++ b/src/gcal-main-toolbar.h @@ -42,6 +42,7 @@ struct _GcalMainToolbarClass /* Signals */ void (*view_changed) (GcalMainToolbar *main_toolbar, guint view_type); void (*sources_shown) (GcalMainToolbar *main_toolbar, gboolean visible); + void (*add_event) (GcalMainToolbar *main_toolbar); }; struct _GcalMainToolbar