X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fwidgets%2Fmodest-header-view.c;h=c3fe40927299b5354ea13b2e566af9cc95d16e4a;hb=fd54149b68b3777ce63ebf25346bbc485cd84ec8;hp=981ae4ac9fec31f7e6af62e350994df5b61ad4b8;hpb=0aaf84cfb71cbf7aaa555e27c097a3ea0ff10456;p=modest diff --git a/src/widgets/modest-header-view.c b/src/widgets/modest-header-view.c index 981ae4a..c3fe409 100644 --- a/src/widgets/modest-header-view.c +++ b/src/widgets/modest-header-view.c @@ -38,7 +38,6 @@ #include #include #include -#include static void modest_header_view_class_init (ModestHeaderViewClass *klass); static void modest_header_view_init (ModestHeaderView *obj); @@ -49,15 +48,6 @@ static void on_selection_changed (GtkTreeSelection *sel, gpointer user_data); static gint cmp_rows (GtkTreeModel *tree_model, GtkTreeIter *iter1, GtkTreeIter *iter2, gpointer user_data); -#define MODEST_HEADER_VIEW_PTR "modest-header-view" - -enum { - HEADER_SELECTED_SIGNAL, - ITEM_NOT_FOUND_SIGNAL, - STATUS_UPDATE_SIGNAL, - LAST_SIGNAL -}; - typedef struct _ModestHeaderViewPrivate ModestHeaderViewPrivate; struct _ModestHeaderViewPrivate { @@ -65,14 +55,23 @@ struct _ModestHeaderViewPrivate { TnyList *headers; GMutex *lock; ModestHeaderViewStyle style; - gulong sig1; - gboolean is_empty; }; #define MODEST_HEADER_VIEW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \ MODEST_TYPE_HEADER_VIEW, \ ModestHeaderViewPrivate)) + + +#define MODEST_HEADER_VIEW_PTR "modest-header-view" + +enum { + HEADER_SELECTED_SIGNAL, + ITEM_NOT_FOUND_SIGNAL, + STATUS_UPDATE_SIGNAL, + LAST_SIGNAL +}; + /* globals */ static GObjectClass *parent_class = NULL; @@ -189,38 +188,6 @@ remove_all_columns (ModestHeaderView *obj) -static gboolean -set_empty (ModestHeaderView *self) -{ - GtkListStore *store; - GtkTreeIter iter; - - gtk_tree_view_set_model (GTK_TREE_VIEW(self), NULL); - gtk_tree_view_set_headers_visible (GTK_TREE_VIEW(self), - FALSE); - remove_all_columns (self); - - return TRUE; /* FIXME */ - - - store = gtk_list_store_new(1,G_TYPE_STRING); - gtk_list_store_append (store, &iter); - gtk_list_store_set (store, &iter, 0, _("No items in this folder"), -1); - - gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW(self), - 0, "", gtk_cell_renderer_text_new (), - "text", 0, - "weight", 800, /* bold */ - NULL); - gtk_tree_view_set_model (GTK_TREE_VIEW(self), GTK_TREE_MODEL(store)); - g_object_unref (G_OBJECT(store)); - MODEST_HEADER_VIEW_GET_PRIVATE(self)->is_empty = TRUE; - - return TRUE; -} - - - gboolean modest_header_view_set_columns (ModestHeaderView *self, const GList *columns) { @@ -236,7 +203,7 @@ modest_header_view_set_columns (ModestHeaderView *self, const GList *columns) /* FIXME: check whether these renderers need to be freed */ renderer_msgtype = gtk_cell_renderer_pixbuf_new (); renderer_attach = gtk_cell_renderer_pixbuf_new (); - renderer_header = gtk_cell_renderer_text_new (); + renderer_header = gtk_cell_renderer_text_new (); remove_all_columns (self); @@ -365,11 +332,11 @@ static void modest_header_view_init (ModestHeaderView *obj) { ModestHeaderViewPrivate *priv; + priv = MODEST_HEADER_VIEW_GET_PRIVATE(obj); priv->lock = g_mutex_new (); - priv->sig1 = 0; - priv->is_empty = TRUE; + } static void @@ -386,12 +353,7 @@ modest_header_view_finalize (GObject *obj) g_object_unref (G_OBJECT(priv->headers)); sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(self)); - - if (sel && priv->sig1 != 0) { - g_signal_handler_disconnect (G_OBJECT(sel), priv->sig1); - priv->sig1 = 0; - } - + if (priv->lock) { g_mutex_free (priv->lock); priv->lock = NULL; @@ -429,13 +391,14 @@ modest_header_view_new (TnyFolder *folder, ModestHeaderViewStyle style) gtk_tree_view_columns_autosize (GTK_TREE_VIEW(obj)); gtk_tree_view_set_fixed_height_mode (GTK_TREE_VIEW(obj),TRUE); - + gtk_tree_view_set_enable_search (GTK_TREE_VIEW(obj), TRUE); + gtk_tree_view_set_rules_hint (GTK_TREE_VIEW(obj), TRUE); /* alternating row colors */ sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(self)); - priv->sig1 = g_signal_connect (sel, "changed", - G_CALLBACK(on_selection_changed), self); + g_signal_connect (sel, "changed", + G_CALLBACK(on_selection_changed), self); return GTK_WIDGET(self); } @@ -509,7 +472,7 @@ gboolean modest_header_view_is_empty (ModestHeaderView *self) { g_return_val_if_fail (self, FALSE); - return MODEST_HEADER_VIEW_GET_PRIVATE(self)->is_empty; + return FALSE; /* FIXME */ } @@ -572,12 +535,9 @@ on_refresh_folder (TnyFolder *folder, gboolean cancelled, GError **err, priv = MODEST_HEADER_VIEW_GET_PRIVATE(self); priv->folder = folder; - if (!folder || tny_folder_get_all_count(folder) == 0) { - set_empty (self); - } else { /* it's a new one or a refresh */ + + if (folder) { /* it's a new one or a refresh */ GList *cols, *cursor; - - priv->is_empty = FALSE; if (priv->headers) g_object_unref (priv->headers); @@ -624,6 +584,11 @@ on_refresh_folder_status_update (TnyFolder *folder, const gchar *msg, self = MODEST_HEADER_VIEW(user_data); priv = MODEST_HEADER_VIEW_GET_PRIVATE(self); + /* FIXME: this is a hack ==> tinymail gives us this when + * it has nothing better to do */ + if (num == 1 && total == 100) + return; + g_signal_emit (G_OBJECT(self), signals[STATUS_UPDATE_SIGNAL], 0, msg, num, total); } @@ -646,12 +611,13 @@ modest_header_view_set_folder (ModestHeaderView *self, TnyFolder *folder) priv = MODEST_HEADER_VIEW_GET_PRIVATE(self); priv->folder = folder; - + if (folder) tny_folder_refresh_async (folder, on_refresh_folder, on_refresh_folder_status_update, self); + /* no message selected */ g_signal_emit (G_OBJECT(self), signals[HEADER_SELECTED_SIGNAL], 0, NULL);