[empathy] use different labels if view is empty



commit 7cd053aff86931fdf85c8016701956d1fb43e646
Author: Felix Kaser <f kaser gmx net>
Date:   Thu Aug 5 12:55:31 2010 +0200

    use different labels if view is empty
    
    either show "no match found" or "your contact list is empty".
    fixes bug #621642

 libempathy-gtk/empathy-individual-view.c |   13 +++++++++++++
 libempathy-gtk/empathy-individual-view.h |    3 +++
 src/empathy-main-window.c                |   28 +++++++++++++++++++---------
 src/empathy-main-window.ui               |   19 +++++++++----------
 4 files changed, 44 insertions(+), 19 deletions(-)
---
diff --git a/libempathy-gtk/empathy-individual-view.c b/libempathy-gtk/empathy-individual-view.c
index 7882123..369933e 100644
--- a/libempathy-gtk/empathy-individual-view.c
+++ b/libempathy-gtk/empathy-individual-view.c
@@ -2221,6 +2221,19 @@ empathy_individual_view_set_live_search (EmpathyIndividualView *view,
 }
 
 gboolean
+empathy_individual_view_is_searching (EmpathyIndividualView *self)
+{
+  EmpathyIndividualViewPriv *priv;
+
+  g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_VIEW (self), FALSE);
+
+  priv = GET_PRIV (self);
+
+  return (priv->search_widget != NULL &&
+          gtk_widget_get_visible (priv->search_widget));
+}
+
+gboolean
 empathy_individual_view_get_show_offline (EmpathyIndividualView *self)
 {
   EmpathyIndividualViewPriv *priv;
diff --git a/libempathy-gtk/empathy-individual-view.h b/libempathy-gtk/empathy-individual-view.h
index ce3c95c..9d6cec0 100644
--- a/libempathy-gtk/empathy-individual-view.h
+++ b/libempathy-gtk/empathy-individual-view.h
@@ -102,5 +102,8 @@ void empathy_individual_view_set_show_offline (
     EmpathyIndividualView *view,
     gboolean show_offline);
 
+gboolean empathy_individual_view_is_searching (
+    EmpathyIndividualView *view);
+
 G_END_DECLS
 #endif /* __EMPATHY_INDIVIDUAL_VIEW_H__ */
diff --git a/src/empathy-main-window.c b/src/empathy-main-window.c
index 3fdccff..4aa5e4c 100644
--- a/src/empathy-main-window.c
+++ b/src/empathy-main-window.c
@@ -91,6 +91,10 @@
 /* Name in the geometry file */
 #define GEOMETRY_NAME "main-window"
 
+/* Labels for empty contact list */
+#define CONTACT_LIST_EMPTY _("Your contact list is empty")
+#define NO_MATCH_FOUND _("No match found")
+
 G_DEFINE_TYPE (EmpathyMainWindow, empathy_main_window, GTK_TYPE_WINDOW);
 
 #define GET_PRIV(self) ((EmpathyMainWindowPriv *)((EmpathyMainWindow *) self)->priv)
@@ -370,12 +374,15 @@ main_window_row_deleted_cb (GtkTreeModel      *model,
 	if (!gtk_tree_model_get_iter_first (model, &help_iter)) {
 		priv->empty = TRUE;
 
-		/* TODO: check if we are searching or not */
-		gtk_label_set_text (GTK_LABEL (priv->no_entry_label),
-				_("Your contact list is empty"));
+		if (empathy_individual_view_is_searching (priv->individual_view))
+			gtk_label_set_text (GTK_LABEL (priv->no_entry_label),
+					NO_MATCH_FOUND);
+		else
+			gtk_label_set_text (GTK_LABEL (priv->no_entry_label),
+					CONTACT_LIST_EMPTY);
+
 		gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->notebook),
-				1);
-		g_debug ("contact list empty");
+				0);
 	}
 }
 
@@ -390,8 +397,8 @@ main_window_row_inserted_cb (GtkTreeModel      *model,
 	if (priv->empty) {
 		priv->empty = FALSE;
 		gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->notebook),
-				0);
-		g_debug ("contact list is not empty any more");
+				1);
+		gtk_widget_grab_focus (GTK_WIDGET (priv->individual_view));
 	}
 }
 
@@ -1530,8 +1537,6 @@ empathy_main_window_init (EmpathyMainWindow *window)
 	priv->gsettings_ui = g_settings_new (EMPATHY_PREFS_UI_SCHEMA);
 	priv->gsettings_contacts = g_settings_new (EMPATHY_PREFS_CONTACTS_SCHEMA);
 
-	priv->empty = TRUE;
-
 	gtk_window_set_title (GTK_WINDOW (window), _("Contact List"));
 	gtk_window_set_role (GTK_WINDOW (window), "contact_list");
 	gtk_window_set_default_size (GTK_WINDOW (window), 225, 325);
@@ -1689,6 +1694,11 @@ empathy_main_window_init (EmpathyMainWindow *window)
 	g_signal_connect_swapped (window, "map",
 		G_CALLBACK (gtk_widget_grab_focus), priv->individual_view);
 
+	/* Set up the Notebook for the TreeView */
+	priv->empty = TRUE;
+	gtk_label_set_text (GTK_LABEL (priv->no_entry_label),
+			CONTACT_LIST_EMPTY);
+
 	/* Connect to proper signals to check if contact list is empty or not */
 	model = gtk_tree_view_get_model (GTK_TREE_VIEW (priv->individual_view));
 	g_signal_connect (model, "row-inserted",
diff --git a/src/empathy-main-window.ui b/src/empathy-main-window.ui
index 97ab02b..fee4ddc 100644
--- a/src/empathy-main-window.ui
+++ b/src/empathy-main-window.ui
@@ -308,6 +308,15 @@
             <property name="show_tabs">False</property>
             <property name="show_border">False</property>
             <child>
+              <object class="GtkLabel" id="no_entry_label">
+                <property name="visible">True</property>
+                <property name="yalign">0.30000001192092896</property>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
               <object class="GtkScrolledWindow" id="roster_scrolledwindow">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
@@ -319,16 +328,6 @@
                 </child>
               </object>
               <packing>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkLabel" id="no_entry_label">
-                <property name="visible">True</property>
-                <property name="yalign">0.30000001192092896</property>
-                <property name="label" translatable="yes">label</property>
-              </object>
-              <packing>
                 <property name="position">1</property>
               </packing>
             </child>



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