[gnome-calendar] Reworked GcalToolbar to match the mockups.



commit 600aad6f3b56338bba09155d84deb65396a9b3cd
Author: Erick PÃrez Castellanos <erick red gmail com>
Date:   Sat Aug 25 01:59:06 2012 -0400

    Reworked GcalToolbar to match the mockups.
    
    Added search-button and GcalToolbar::search-events signal.
    Moved and changed add-button. Restyled with "suggested-action" class.

 data/theme/gtk-styles.css |    3 +-
 src/gcal-toolbar.c        |  156 ++++++++++++++++++++++++++++++---------------
 src/gcal-toolbar.h        |    1 +
 3 files changed, 107 insertions(+), 53 deletions(-)
---
diff --git a/data/theme/gtk-styles.css b/data/theme/gtk-styles.css
index d6089ad..a273303 100644
--- a/data/theme/gtk-styles.css
+++ b/data/theme/gtk-styles.css
@@ -25,8 +25,7 @@ GtkClutterOffscreen.contents .frame {
 }
 
 .main-toolbar {
-  padding-top: 12px;
-  padding-bottom: 12px;
+  padding: 12px;
 }
 
 .main-toolbar .button {
diff --git a/src/gcal-toolbar.c b/src/gcal-toolbar.c
index f20b886..b654521 100644
--- a/src/gcal-toolbar.c
+++ b/src/gcal-toolbar.c
@@ -31,10 +31,14 @@ struct _GcalToolbarPrivate
   GtkToolItem         *right_item;
 
   /* overview widgets */
-  GtkWidget           *sources_button;
-  GtkWidget           *views_box;
   GtkWidget           *add_button;
 
+  GtkWidget           *views_box;
+
+  GtkWidget           *right_box;
+  GtkWidget           *sources_button;
+  GtkWidget           *search_button;
+
   /* events widgets */
   GtkWidget           *back_button;
   GtkWidget           *edit_button;
@@ -48,6 +52,7 @@ enum
   VIEW_CHANGED = 1,
   SOURCES_SHOWN,
   ADD_EVENT,
+  SEARCH_EVENTS,
 
   BACK,
   EDIT_EVENT,
@@ -58,38 +63,45 @@ enum
 
 static guint signals[NUM_SIGNALS] = { 0, };
 
-static void gcal_toolbar_constructed       (GObject     *object);
+static void gcal_toolbar_constructed            (GObject      *object);
+
+static void gcal_toolbar_finalize               (GObject      *object);
 
-static void gcal_toolbar_finalize          (GObject     *object);
+static void gcal_toolbar_clear                  (GcalToolbar  *toolbar);
 
-static void gcal_toolbar_clear             (GcalToolbar *toolbar);
+static void gcal_toolbar_set_overview_mode      (GcalToolbar  *toolbar);
 
-static void gcal_toolbar_set_overview_mode (GcalToolbar *toolbar);
+static void gcal_toolbar_set_event_mode         (GcalToolbar  *toolbar);
 
-static void gcal_toolbar_set_event_mode    (GcalToolbar *toolbar);
+static void gcal_toolbar_view_changed           (GtkWidget    *button,
+                                                 gpointer      user_data);
 
-static void gcal_toolbar_view_changed      (GtkWidget   *button,
-                                            gpointer     user_data);
+static void gcal_toolbar_sources_shown          (GtkWidget    *button,
+                                                 gpointer      user_data);
 
-static void gcal_toolbar_sources_shown     (GtkWidget   *button,
-                                            gpointer     user_data);
+static void gcal_toolbar_add_event              (GtkWidget    *button,
+                                                 gpointer      user_data);
 
-static void gcal_toolbar_add_event         (GtkWidget   *button,
-                                            gpointer     user_data);
+static void gcal_toolbar_search_events          (GtkWidget    *button,
+                                                 gpointer      user_data);
 
-static void gcal_toolbar_back_clicked      (GtkWidget   *button,
-                                            gpointer     user_data);
+static void gcal_toolbar_back_clicked           (GtkWidget    *button,
+                                                 gpointer      user_data);
 
-static void gcal_toolbar_event_edited      (GtkWidget   *button,
-                                            gpointer     user_data);
+static void gcal_toolbar_event_edited           (GtkWidget    *button,
+                                                 gpointer      user_data);
 
 G_DEFINE_TYPE (GcalToolbar, gcal_toolbar, GTK_CLUTTER_TYPE_ACTOR);
 
 static void
 gcal_toolbar_class_init (GcalToolbarClass *klass)
 {
-  G_OBJECT_CLASS (klass)->constructed = gcal_toolbar_constructed;
-  G_OBJECT_CLASS (klass)->finalize = gcal_toolbar_finalize;
+  GObjectClass *object_class;
+
+  object_class = G_OBJECT_CLASS (klass);
+
+  object_class->constructed = gcal_toolbar_constructed;
+  object_class->finalize = gcal_toolbar_finalize;
 
   signals[VIEW_CHANGED] = g_signal_new ("view-changed",
                                         GCAL_TYPE_TOOLBAR,
@@ -123,6 +135,16 @@ gcal_toolbar_class_init (GcalToolbarClass *klass)
                                      G_TYPE_NONE,
                                      0);
 
+  signals[SEARCH_EVENTS] = g_signal_new ("search-events",
+                                         GCAL_TYPE_TOOLBAR,
+                                         G_SIGNAL_RUN_LAST,
+                                         G_STRUCT_OFFSET (GcalToolbarClass,
+                                                          search_events),
+                                         NULL, NULL,
+                                         g_cclosure_marshal_VOID__VOID,
+                                         G_TYPE_NONE,
+                                         0);
+
   signals[BACK] = g_signal_new ("back",
                                 GCAL_TYPE_TOOLBAR,
                                 G_SIGNAL_RUN_LAST,
@@ -224,12 +246,12 @@ gcal_toolbar_finalize (GObject *object)
   g_return_if_fail (GCAL_IS_TOOLBAR (object));
   priv = GCAL_TOOLBAR (object)->priv;
 
-  if (priv->sources_button)
-    g_clear_object (&(priv->sources_button));
-  if (priv->views_box)
-    g_clear_object (&(priv->views_box));
-  if (priv->add_button)
+  if (priv->add_button != NULL)
     g_clear_object (&(priv->add_button));
+  if (priv->views_box != NULL)
+    g_clear_object (&(priv->views_box));
+  if (priv->right_box != NULL)
+    g_clear_object (&(priv->right_box));
 
   if (priv->back_button)
     g_clear_object (&(priv->back_button));
@@ -268,27 +290,23 @@ gcal_toolbar_set_overview_mode (GcalToolbar *toolbar)
   g_return_if_fail (GCAL_IS_TOOLBAR (toolbar));
   priv = toolbar->priv;
 
-  /* sources */
-  if (priv->sources_button == NULL)
+  /* add */
+  if (priv->add_button == NULL)
     {
-      priv->sources_button = gtk_toggle_button_new ();
-      g_object_ref_sink (priv->sources_button);
-      gtk_container_add (
-          GTK_CONTAINER (priv->sources_button),
-          gtk_image_new_from_icon_name ("x-office-calendar-symbolic",
-                                        GTK_ICON_SIZE_MENU));
+      priv->add_button = gtk_button_new_with_label (_("New Event"));
+      g_object_ref_sink (priv->add_button);
 
-      context = gtk_widget_get_style_context (priv->sources_button);
-      gtk_style_context_add_class (context, "raised");
+      gtk_widget_set_size_request (priv->add_button, 100, -1);
+      context = gtk_widget_get_style_context (priv->add_button);
+      gtk_style_context_add_class (context, "suggested-action");
 
-      g_signal_connect (priv->sources_button,
+      g_signal_connect (priv->add_button,
                         "clicked",
-                        G_CALLBACK (gcal_toolbar_sources_shown),
+                        G_CALLBACK (gcal_toolbar_add_event),
                         toolbar);
-
     }
-  gtk_container_add (GTK_CONTAINER (priv->left_item), priv->sources_button);
-  gtk_widget_show_all (priv->sources_button);
+  gtk_container_add (GTK_CONTAINER (priv->left_item), priv->add_button);
+  gtk_widget_show_all (priv->add_button);
 
   /* views_box */
   if (priv->views_box == NULL)
@@ -377,7 +395,7 @@ gcal_toolbar_set_overview_mode (GcalToolbar *toolbar)
 
       gtk_container_add (GTK_CONTAINER (priv->views_box), button);
 
-        g_object_set_data (G_OBJECT (button),
+      g_object_set_data (G_OBJECT (button),
                         "view-type",
                         GUINT_TO_POINTER (GCAL_WINDOW_VIEW_LIST));
       g_signal_connect (button,
@@ -388,26 +406,52 @@ gcal_toolbar_set_overview_mode (GcalToolbar *toolbar)
   gtk_container_add (GTK_CONTAINER (priv->central_item), priv->views_box);
   gtk_widget_show_all (priv->views_box);
 
-  /* add */
-  if (priv->add_button == NULL)
+  /* right_box */
+  if (priv->right_box == NULL)
     {
-      priv->add_button = gtk_button_new ();
-      g_object_ref_sink (priv->add_button);
+      priv->right_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
+      g_object_ref_sink (priv->right_box);
+      gtk_widget_set_hexpand (priv->right_box, TRUE);
+      gtk_box_set_spacing (GTK_BOX (priv->right_box), 6);
+
+      /* sources_button */
+      priv->sources_button = gtk_toggle_button_new ();
       gtk_container_add (
-          GTK_CONTAINER (priv->add_button),
-          gtk_image_new_from_icon_name ("list-add-symbolic",
+          GTK_CONTAINER (priv->sources_button),
+          gtk_image_new_from_icon_name ("x-office-calendar-symbolic",
                                         GTK_ICON_SIZE_MENU));
 
-      context = gtk_widget_get_style_context (priv->add_button);
+      context = gtk_widget_get_style_context (priv->sources_button);
       gtk_style_context_add_class (context, "raised");
 
-      g_signal_connect (priv->add_button,
+      gtk_container_add (GTK_CONTAINER (priv->right_box),
+                         priv->sources_button);
+
+      g_signal_connect (priv->sources_button,
                         "clicked",
-                        G_CALLBACK (gcal_toolbar_add_event),
+                        G_CALLBACK (gcal_toolbar_sources_shown),
+                        toolbar);
+
+      /* search_button */
+      priv->search_button = gtk_button_new ();
+      gtk_container_add (
+          GTK_CONTAINER (priv->search_button),
+          gtk_image_new_from_icon_name ("folder-saved-search-symbolic",
+                                        GTK_ICON_SIZE_MENU));
+
+      context = gtk_widget_get_style_context (priv->search_button);
+      gtk_style_context_add_class (context, "raised");
+
+      gtk_container_add (GTK_CONTAINER (priv->right_box),
+                         priv->search_button);
+
+      g_signal_connect (priv->search_button,
+                        "clicked",
+                        G_CALLBACK (gcal_toolbar_search_events),
                         toolbar);
     }
-  gtk_container_add (GTK_CONTAINER (priv->right_item), priv->add_button);
-  gtk_widget_show_all (priv->add_button);
+  gtk_container_add (GTK_CONTAINER (priv->right_item), priv->right_box);
+  gtk_widget_show_all (priv->sources_button);
 }
 
 static void
@@ -535,6 +579,16 @@ gcal_toolbar_add_event (GtkWidget *button,
 }
 
 static void
+gcal_toolbar_search_events (GtkWidget *button,
+                            gpointer   user_data)
+{
+  GcalToolbar *toolbar;
+
+  toolbar = GCAL_TOOLBAR (user_data);
+  g_signal_emit (toolbar, signals[SEARCH_EVENTS], 0);
+}
+
+static void
 gcal_toolbar_back_clicked (GtkWidget *button,
                            gpointer   user_data)
 {
diff --git a/src/gcal-toolbar.h b/src/gcal-toolbar.h
index a8bdd94..2b92709 100644
--- a/src/gcal-toolbar.h
+++ b/src/gcal-toolbar.h
@@ -45,6 +45,7 @@ struct _GcalToolbarClass
   void (*view_changed)  (GcalToolbar *toolbar, guint view_type);
   void (*sources_shown) (GcalToolbar *toolbar, gboolean visible);
   void (*add_event)     (GcalToolbar *toolbar);
+  void (*search_events) (GcalToolbar *toolbar);
 
   void (*back)          (GcalToolbar *toolbar);
   void (*edit_event)    (GcalToolbar *toolbar);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]