aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2012-06-08 19:36:48 +0800
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2012-06-15 19:41:09 +0800
commit97242a76f0f603cff5e94a6be58055d3f4f7799a (patch)
treed0370c02f0ce2acb1ce2bc58beb444b4a7ca4bad /src
parent0d2c82ec91f099b62fcefea2c202e0bd3e140935 (diff)
downloadgsoc2013-empathy-97242a76f0f603cff5e94a6be58055d3f4f7799a.tar
gsoc2013-empathy-97242a76f0f603cff5e94a6be58055d3f4f7799a.tar.gz
gsoc2013-empathy-97242a76f0f603cff5e94a6be58055d3f4f7799a.tar.bz2
gsoc2013-empathy-97242a76f0f603cff5e94a6be58055d3f4f7799a.tar.lz
gsoc2013-empathy-97242a76f0f603cff5e94a6be58055d3f4f7799a.tar.xz
gsoc2013-empathy-97242a76f0f603cff5e94a6be58055d3f4f7799a.tar.zst
gsoc2013-empathy-97242a76f0f603cff5e94a6be58055d3f4f7799a.zip
roster-window: display messages when roster is empty
https://bugzilla.gnome.org/show_bug.cgi?id=677948
Diffstat (limited to 'src')
-rw-r--r--src/empathy-roster-window.c81
1 files changed, 27 insertions, 54 deletions
diff --git a/src/empathy-roster-window.c b/src/empathy-roster-window.c
index b57fcdfd4..df62ed9ec 100644
--- a/src/empathy-roster-window.c
+++ b/src/empathy-roster-window.c
@@ -109,7 +109,6 @@ struct _EmpathyRosterWindowPriv {
EmpathyIndividualManager *individual_manager;
guint flash_timeout_id;
gboolean flash_on;
- gboolean empty;
GSettings *gsettings_ui;
GSettings *gsettings_contacts;
@@ -667,26 +666,6 @@ display_page_no_account (EmpathyRosterWindow *self)
_("You need to setup an account to see contacts here."), TRUE, FALSE);
}
-#if 0
-static void
-roster_window_row_deleted_cb (GtkTreeModel *model,
- GtkTreePath *path,
- EmpathyRosterWindow *self)
-{
- GtkTreeIter help_iter;
-
- if (!gtk_tree_model_get_iter_first (model, &help_iter))
- {
- self->priv->empty = TRUE;
-
- if (empathy_individual_view_is_searching (self->priv->individual_view))
- {
- display_page_message (self, _("No match found"), FALSE, FALSE);
- }
- }
-}
-#endif
-
static void
display_page_contact_list (EmpathyRosterWindow *self)
{
@@ -699,29 +678,6 @@ display_page_contact_list (EmpathyRosterWindow *self)
PAGE_CONTACT_LIST);
}
-#if 0
-static void
-roster_window_row_inserted_cb (GtkTreeModel *model,
- GtkTreePath *path,
- GtkTreeIter *iter,
- EmpathyRosterWindow *self)
-{
- if (self->priv->empty)
- {
- self->priv->empty = FALSE;
-
- display_page_contact_list (self);
- gtk_widget_grab_focus (GTK_WIDGET (self->priv->individual_view));
-
- /* The store is being filled, it will be done after an idle cb.
- * So we can then get events. If we do that too soon, event's
- * contact is not yet in the store and it won't get marked as
- * having events. */
- g_idle_add (roster_window_load_events_idle_cb, self);
- }
-}
-#endif
-
static void
roster_window_remove_error (EmpathyRosterWindow *self,
TpAccount *account)
@@ -2181,6 +2137,31 @@ popup_individual_menu_cb (EmpathyRosterView *view,
}
static void
+view_empty_cb (EmpathyRosterView *view,
+ GParamSpec *spec,
+ EmpathyRosterWindow *self)
+{
+ if (empathy_roster_view_is_empty (view))
+ {
+ if (empathy_roster_view_is_searching (self->priv->view))
+ {
+ display_page_message (self, _("No match found"), FALSE, FALSE);
+ }
+ }
+ else
+ {
+ display_page_contact_list (self);
+ gtk_widget_grab_focus (GTK_WIDGET (self->priv->view));
+
+ /* The store is being filled, it will be done after an idle cb.
+ * So we can then get events. If we do that too soon, event's
+ * contact is not yet in the store and it won't get marked as
+ * having events. */
+ g_idle_add (roster_window_load_events_idle_cb, self);
+ }
+}
+
+static void
empathy_roster_window_init (EmpathyRosterWindow *self)
{
GtkBuilder *gui;
@@ -2309,6 +2290,8 @@ empathy_roster_window_init (EmpathyRosterWindow *self)
G_CALLBACK (individual_activated_cb), self);
g_signal_connect (self->priv->view, "popup-individual-menu",
G_CALLBACK (popup_individual_menu_cb), self);
+ g_signal_connect (self->priv->view, "notify::empty",
+ G_CALLBACK (view_empty_cb), self);
/* Set up search bar */
self->priv->search_bar = empathy_live_search_new (
@@ -2321,16 +2304,6 @@ empathy_roster_window_init (EmpathyRosterWindow *self)
g_signal_connect_swapped (self, "map",
G_CALLBACK (gtk_widget_grab_focus), self->priv->view);
- /* Connect to proper signals to check if contact list is empty or not */
-#if 0
- model = gtk_tree_view_get_model (GTK_TREE_VIEW (self->priv->individual_view));
- self->priv->empty = TRUE;
- g_signal_connect (model, "row-inserted",
- G_CALLBACK (roster_window_row_inserted_cb), self);
- g_signal_connect (model, "row-deleted",
- G_CALLBACK (roster_window_row_deleted_cb), self);
-#endif
-
/* Load user-defined accelerators. */
roster_window_accels_load ();