[gnome-calendar] Started rewriting of GcalToolbar.



commit d4a19245d2b5eda078464873648d37524579efdb
Author: Erick PÃrez Castellanos <erick red gmail com>
Date:   Sat May 26 20:11:33 2012 -0400

    Started rewriting of GcalToolbar.

 TODO               |    1 -
 src/gcal-toolbar.c |  310 ++++++++++++++++++++++++++++------------------------
 2 files changed, 167 insertions(+), 144 deletions(-)
---
diff --git a/TODO b/TODO
index 9ef003f..edd79a5 100644
--- a/TODO
+++ b/TODO
@@ -1,6 +1,5 @@
 TODO
 
- - Rewrite GcalToolbar
  - Rethink signals from GcalManager
  - Order events for starting hour in GcalMonthView, and the others
  - Review static modifiers
diff --git a/src/gcal-toolbar.c b/src/gcal-toolbar.c
index c84def5..11feac9 100644
--- a/src/gcal-toolbar.c
+++ b/src/gcal-toolbar.c
@@ -24,11 +24,16 @@
 
 struct _GcalToolbarPrivate
 {
-  GtkWidget *widget;
+  GtkWidget   *widget;
 
-  GtkWidget *left_item;
-  GtkWidget *central_item;
-  GtkWidget *right_item;
+  GtkToolItem *left_item;
+  GtkToolItem *central_item;
+  GtkToolItem *right_item;
+
+  /* overview widgets */
+  GtkWidget   *sources_button;
+  GtkWidget   *views_box;
+  GtkWidget   *add_button;
 };
 
 enum
@@ -116,11 +121,8 @@ gcal_toolbar_constructed (GObject *object)
 {
   GcalToolbarPrivate *priv;
 
-  GtkWidget *button;
   GtkStyleContext *context;
-  GtkToolItem *item;
   GtkToolItem *spacer;
-  GtkWidget *views_box;
   GtkWidget *bin;
 
   priv = GCAL_TOOLBAR (object)->priv;
@@ -136,156 +138,35 @@ gcal_toolbar_constructed (GObject *object)
   context = gtk_widget_get_style_context (priv->widget);
   gtk_style_context_add_class (context, "gcal-main-toolbar");
 
-  /* sources */
-  button = gtk_toggle_button_new ();
-  gtk_container_add (
-      GTK_CONTAINER (button),
-      gtk_image_new_from_icon_name ("emblem-documents-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_toolbar_sources_shown),
-                    GCAL_TOOLBAR (object));
+  /* adding toolbar */
+  bin = gtk_clutter_actor_get_widget (GTK_CLUTTER_ACTOR (object));
+  gtk_container_add (GTK_CONTAINER (bin), priv->widget);
 
-  item = gtk_tool_item_new ();
-  gtk_container_add (GTK_CONTAINER (item), button);
-  gtk_toolbar_insert (GTK_TOOLBAR (priv->widget), item, 0);
+  /* adding sections */
+  /* left */
+  priv->left_item = gtk_tool_item_new ();
+  gtk_toolbar_insert (GTK_TOOLBAR (priv->widget), priv->left_item, 0);
 
   /* spacer */
   spacer = gtk_tool_item_new ();
   gtk_tool_item_set_expand (spacer, TRUE);
   gtk_toolbar_insert (GTK_TOOLBAR (priv->widget), spacer, -1);
 
-  /* views_box */
-  views_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
-  gtk_widget_set_hexpand (views_box, TRUE);
-
-  context = gtk_widget_get_style_context (views_box);
-  gtk_style_context_add_class (context, "linked");
-
-  item = gtk_tool_item_new ();
-  gtk_container_add (GTK_CONTAINER (item), views_box);
-  gtk_toolbar_insert (GTK_TOOLBAR (priv->widget), item, -1);
-
-  /* day */
-  button = gtk_button_new_with_label (_("Day"));
-  gtk_widget_set_size_request (button, 80, -1);
-
-  context = gtk_widget_get_style_context (button);
-  gtk_style_context_add_class (context, "raised");
-
-  gtk_container_add (GTK_CONTAINER (views_box), button);
-
-  g_object_set_data (G_OBJECT (button),
-                    "view-type",
-                    GUINT_TO_POINTER (GCAL_VIEW_TYPE_DAILY));
-  g_signal_connect (button,
-                    "clicked",
-                    G_CALLBACK (gcal_toolbar_view_changed),
-                    GCAL_TOOLBAR (object));
-
-  /* week */
-  button = gtk_button_new_with_label (_("Week"));
-  gtk_widget_set_size_request (button, 80, -1);
-
-  context = gtk_widget_get_style_context (button);
-  gtk_style_context_add_class (context, "raised");
-
-  gtk_container_add (GTK_CONTAINER (views_box), button);
-
-  g_object_set_data (G_OBJECT (button),
-                    "view-type",
-                    GUINT_TO_POINTER (GCAL_VIEW_TYPE_WEEKLY));
-  g_signal_connect (button,
-                    "clicked",
-                    G_CALLBACK (gcal_toolbar_view_changed),
-                    GCAL_TOOLBAR (object));
-
-  /* month */
-  button = gtk_button_new_with_label (_("Month"));
-  gtk_widget_set_size_request (button, 80, -1);
-
-  context = gtk_widget_get_style_context (button);
-  gtk_style_context_add_class (context, "raised");
-
-  gtk_container_add (GTK_CONTAINER (views_box), button);
-
-  g_object_set_data (G_OBJECT (button),
-                    "view-type",
-                    GUINT_TO_POINTER (GCAL_VIEW_TYPE_MONTHLY));
-  g_signal_connect (button,
-                    "clicked",
-                    G_CALLBACK (gcal_toolbar_view_changed),
-                    GCAL_TOOLBAR (object));
-
-  /* year */
-  button = gtk_button_new_with_label (_("Year"));
-  gtk_widget_set_size_request (button, 80, -1);
-
-  context = gtk_widget_get_style_context (button);
-  gtk_style_context_add_class (context, "raised");
-
-  gtk_container_add (GTK_CONTAINER (views_box), button);
-
-  g_object_set_data (G_OBJECT (button),
-                    "view-type",
-                    GUINT_TO_POINTER (GCAL_VIEW_TYPE_YEARLY));
-  g_signal_connect (button,
-                    "clicked",
-                    G_CALLBACK (gcal_toolbar_view_changed),
-                    GCAL_TOOLBAR (object));
-
-  /* list */
-  button = gtk_button_new_with_label (_("List"));
-  gtk_widget_set_size_request (button, 80, -1);
-
-  context = gtk_widget_get_style_context (button);
-  gtk_style_context_add_class (context, "raised");
-
-  gtk_container_add (GTK_CONTAINER (views_box), button);
-
-  g_object_set_data (G_OBJECT (button),
-                    "view-type",
-                    GUINT_TO_POINTER (GCAL_VIEW_TYPE_LIST));
-  g_signal_connect (button,
-                    "clicked",
-                    G_CALLBACK (gcal_toolbar_view_changed),
-                    GCAL_TOOLBAR (object));
+  /* central */
+  priv->central_item = gtk_tool_item_new ();
+  gtk_toolbar_insert (GTK_TOOLBAR (priv->widget), priv->central_item, -1);
 
   /* spacer */
   spacer = gtk_tool_item_new ();
   gtk_tool_item_set_expand (spacer, TRUE);
   gtk_toolbar_insert (GTK_TOOLBAR (priv->widget), spacer, -1);
 
-  /* add */
-  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_toolbar_add_event),
-                    GCAL_TOOLBAR (object));
-
-  item = gtk_tool_item_new ();
-  gtk_container_add (GTK_CONTAINER (item), button);
-  gtk_toolbar_insert (GTK_TOOLBAR (priv->widget), item, -1);
-
-  /* adding toolbar */
-  bin = gtk_clutter_actor_get_widget (GTK_CLUTTER_ACTOR (object));
-  gtk_container_add (GTK_CONTAINER (bin), priv->widget);
+  /* right */
+  priv->right_item = gtk_tool_item_new ();
+  gtk_toolbar_insert (GTK_TOOLBAR (priv->widget), priv->right_item, -1);
 
+  gcal_toolbar_set_overview_mode (GCAL_TOOLBAR (object));
   gtk_widget_show_all (bin);
-
 }
 
 static void
@@ -297,7 +178,150 @@ gcal_toolbar_finalize (GObject *object)
 static void
 gcal_toolbar_set_overview_mode (GcalToolbar *toolbar)
 {
-  ;
+  GcalToolbarPrivate *priv;
+  GtkStyleContext *context;
+  GtkWidget *button;
+
+  g_return_if_fail (GCAL_IS_TOOLBAR (toolbar));
+  priv = toolbar->priv;
+
+  /* sources */
+  if (priv->sources_button == NULL)
+    {
+      priv->sources_button = gtk_toggle_button_new ();
+      gtk_container_add (
+          GTK_CONTAINER (priv->sources_button),
+          gtk_image_new_from_icon_name ("emblem-documents-symbolic",
+                                        GTK_ICON_SIZE_MENU));
+
+      context = gtk_widget_get_style_context (priv->sources_button);
+      gtk_style_context_add_class (context, "raised");
+
+      g_signal_connect (priv->sources_button,
+                        "clicked",
+                        G_CALLBACK (gcal_toolbar_sources_shown),
+                        toolbar);
+
+    }
+  gtk_container_add (GTK_CONTAINER (priv->left_item), priv->sources_button);
+  gtk_widget_show_all (priv->sources_button);
+
+  /* views_box */
+  if (priv->views_box == NULL)
+    {
+      priv->views_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
+      gtk_widget_set_hexpand (priv->views_box, TRUE);
+
+      context = gtk_widget_get_style_context (priv->views_box);
+      gtk_style_context_add_class (context, "linked");
+
+      /* day */
+      button = gtk_button_new_with_label (_("Day"));
+      gtk_widget_set_size_request (button, 80, -1);
+
+      context = gtk_widget_get_style_context (button);
+      gtk_style_context_add_class (context, "raised");
+
+      gtk_container_add (GTK_CONTAINER (priv->views_box), button);
+
+      g_object_set_data (G_OBJECT (button),
+                        "view-type",
+                        GUINT_TO_POINTER (GCAL_VIEW_TYPE_DAILY));
+      g_signal_connect (button,
+                        "clicked",
+                        G_CALLBACK (gcal_toolbar_view_changed),
+                        toolbar);
+
+      /* week */
+      button = gtk_button_new_with_label (_("Week"));
+      gtk_widget_set_size_request (button, 80, -1);
+
+      context = gtk_widget_get_style_context (button);
+      gtk_style_context_add_class (context, "raised");
+
+      gtk_container_add (GTK_CONTAINER (priv->views_box), button);
+
+      g_object_set_data (G_OBJECT (button),
+                        "view-type",
+                        GUINT_TO_POINTER (GCAL_VIEW_TYPE_WEEKLY));
+      g_signal_connect (button,
+                        "clicked",
+                        G_CALLBACK (gcal_toolbar_view_changed),
+                        toolbar);
+
+      /* month */
+      button = gtk_button_new_with_label (_("Month"));
+      gtk_widget_set_size_request (button, 80, -1);
+
+      context = gtk_widget_get_style_context (button);
+      gtk_style_context_add_class (context, "raised");
+
+      gtk_container_add (GTK_CONTAINER (priv->views_box), button);
+
+      g_object_set_data (G_OBJECT (button),
+                        "view-type",
+                        GUINT_TO_POINTER (GCAL_VIEW_TYPE_MONTHLY));
+      g_signal_connect (button,
+                        "clicked",
+                        G_CALLBACK (gcal_toolbar_view_changed),
+                        toolbar);
+
+      /* year */
+      button = gtk_button_new_with_label (_("Year"));
+      gtk_widget_set_size_request (button, 80, -1);
+
+      context = gtk_widget_get_style_context (button);
+      gtk_style_context_add_class (context, "raised");
+
+      gtk_container_add (GTK_CONTAINER (priv->views_box), button);
+
+      g_object_set_data (G_OBJECT (button),
+                        "view-type",
+                        GUINT_TO_POINTER (GCAL_VIEW_TYPE_YEARLY));
+      g_signal_connect (button,
+                        "clicked",
+                        G_CALLBACK (gcal_toolbar_view_changed),
+                        toolbar);
+
+      /* list */
+      button = gtk_button_new_with_label (_("List"));
+      gtk_widget_set_size_request (button, 80, -1);
+
+      context = gtk_widget_get_style_context (button);
+      gtk_style_context_add_class (context, "raised");
+
+      gtk_container_add (GTK_CONTAINER (priv->views_box), button);
+
+        g_object_set_data (G_OBJECT (button),
+                        "view-type",
+                        GUINT_TO_POINTER (GCAL_VIEW_TYPE_LIST));
+      g_signal_connect (button,
+                        "clicked",
+                        G_CALLBACK (gcal_toolbar_view_changed),
+                        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)
+    {
+      priv->add_button = gtk_button_new ();
+      gtk_container_add (
+          GTK_CONTAINER (priv->add_button),
+          gtk_image_new_from_icon_name ("list-add-symbolic",
+                                        GTK_ICON_SIZE_MENU));
+
+      context = gtk_widget_get_style_context (priv->add_button);
+      gtk_style_context_add_class (context, "raised");
+
+      g_signal_connect (priv->add_button,
+                        "clicked",
+                        G_CALLBACK (gcal_toolbar_add_event),
+                        toolbar);
+    }
+  gtk_container_add (GTK_CONTAINER (priv->right_item), priv->add_button);
+  gtk_widget_show_all (priv->add_button);
 }
 
 static void



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