[almanah] Deactivate the events expander when no events and show an events counter



commit 8e44f523cf903ea05a334fc753465bc1c93d4b3c
Author: Ãlvaro PeÃa <alvaropg gmail com>
Date:   Mon Jul 9 18:27:18 2012 +0200

    Deactivate the events expander when no events and show an events counter

 data/almanah.ui   |   33 +++++++++++++++++++++++++--------
 src/main-window.c |   19 +++++++++++++++++++
 2 files changed, 44 insertions(+), 8 deletions(-)
---
diff --git a/data/almanah.ui b/data/almanah.ui
index fdb0a5f..455fb83 100644
--- a/data/almanah.ui
+++ b/data/almanah.ui
@@ -377,14 +377,31 @@
 								<child>
 									<object class="GtkExpander" id="almanah_mw_events_expander">
 										<child type="label">
-											<object class="GtkLabel" id="almanah_mw_events_label">
-												<property name="label" translatable="yes">Past Events</property>
-												<accessibility>
-													<relation target="almanah_mw_events_tree_view" type="label-for"/>
-												</accessibility>
-												<attributes>
-													<attribute name="weight" value="PANGO_WEIGHT_BOLD"/>
-												</attributes>
+											<object class="GtkHBox" id="almanah_mw_events_expander_label_box">
+												<property name="spacing">6</property>
+												<child>
+													<object class="GtkLabel" id="almanah_mw_events_label">
+														<property name="label" translatable="yes">Past events</property>
+														<accessibility>
+															<relation target="almanah_mw_events_tree_view" type="label-for"/>
+														</accessibility>
+														<attributes>
+															<attribute name="weight" value="PANGO_WEIGHT_BOLD"/>
+														</attributes>
+													</object>
+													<packing>
+														<property name="expand">False</property>
+														<property name="fill">True</property>
+													</packing>
+												</child>
+												<child>
+													<object class="GtkLabel" id="almanah_mw_events_count_label">
+													</object>
+													<packing>
+														<property name="expand">False</property>
+														<property name="fill">True</property>
+													</packing>
+												</child>
 											</object>
 										</child>
 										<child>
diff --git a/src/main-window.c b/src/main-window.c
index a7acf59..7d9f83a 100644
--- a/src/main-window.c
+++ b/src/main-window.c
@@ -101,6 +101,8 @@ struct _AlmanahMainWindowPrivate {
 	GtkTextBuffer *entry_buffer;
 	AlmanahCalendarButton *calendar_button;
 	GtkListStore *event_store;
+	GtkWidget *events_expander;
+	GtkLabel *events_count_label;
 	GtkTreeSelection *events_selection;
 	GtkToggleAction *bold_action;
 	GtkToggleAction *italic_action;
@@ -243,6 +245,8 @@ almanah_main_window_new (AlmanahApplication *application)
 	priv->entry_view = GTK_TEXT_VIEW (gtk_builder_get_object (builder, "almanah_mw_entry_view"));
 	priv->entry_buffer = gtk_text_view_get_buffer (priv->entry_view);
 	priv->event_store = GTK_LIST_STORE (gtk_builder_get_object (builder, "almanah_mw_event_store"));
+	priv->events_expander = GTK_WIDGET (gtk_builder_get_object (builder, "almanah_mw_events_expander"));
+	priv->events_count_label = GTK_LABEL (gtk_builder_get_object (builder, "almanah_mw_events_count_label"));
 	priv->events_selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (gtk_builder_get_object (builder, "almanah_mw_events_tree_view")));
 	priv->bold_action = GTK_TOGGLE_ACTION (gtk_builder_get_object (builder, "almanah_ui_bold"));;
 	priv->italic_action = GTK_TOGGLE_ACTION (gtk_builder_get_object (builder, "almanah_ui_italic"));
@@ -1358,6 +1362,8 @@ mw_events_updated_cb (AlmanahEventManager *event_manager, AlmanahEventFactoryTyp
 	AlmanahMainWindowPrivate *priv = main_window->priv;
 	GSList *_events, *events;
 	GDate date;
+	guint events_count = 0;
+	gchar *events_text;
 
 	almanah_calendar_button_get_date (main_window->priv->calendar_button, &date);
 	_events = almanah_event_manager_get_events (event_manager, type_id, &date);
@@ -1382,9 +1388,22 @@ mw_events_updated_cb (AlmanahEventManager *event_manager, AlmanahEventFactoryTyp
 				    4, g_strdup_printf ("<small>%s</small>", almanah_event_get_name (event)),
 				    -1);
 
+		events_count++;
+
 		g_object_unref (event);
 	}
 
+	events_text = g_strdup_printf ("%u", events_count);
+	gtk_label_set_label (priv->events_count_label, events_text);
+	g_free (events_text);
+
+	if (events_count > 0) {
+		gtk_widget_set_sensitive (priv->events_expander, TRUE);
+	} else {
+		gtk_expander_set_expanded (GTK_EXPANDER (priv->events_expander), FALSE);
+		gtk_widget_set_sensitive (priv->events_expander, FALSE);
+	}
+
 	g_debug ("Finished adding events.");
 
 	g_slist_free (_events);



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