Cleaned up some code. Moved the monitor to the header view
authorSergio Villar Senin <svillar@igalia.com>
Tue, 27 Feb 2007 19:42:55 +0000 (19:42 +0000)
committerSergio Villar Senin <svillar@igalia.com>
Tue, 27 Feb 2007 19:42:55 +0000 (19:42 +0000)
pmo-trunk-r862

src/widgets/modest-folder-view.c
src/widgets/modest-header-view.c

index 9c02bc8..1dbc121 100644 (file)
@@ -35,7 +35,6 @@
 #include <tny-gtk-folder-store-tree-model.h>
 #include <tny-gtk-header-list-model.h>
 #include <tny-folder.h>
-#include <tny-folder-monitor.h>
 #include <tny-account-store.h>
 #include <tny-account.h>
 #include <tny-folder.h>
@@ -64,8 +63,6 @@ static void         modest_folder_view_set_account_store (TnyAccountStoreView *s
 static gboolean     update_model           (ModestFolderView *self,
                                            ModestTnyAccountStore *account_store);
 
-static gboolean     update_model_empty     (ModestFolderView *self);
-
 static void         on_selection_changed   (GtkTreeSelection *sel, gpointer data);
 
 static void         on_account_update      (TnyAccountStore *account_store, 
@@ -122,13 +119,10 @@ struct _ModestFolderViewPrivate {
        gulong               account_update_signal;
        gulong               changed_signal;
        gulong               accounts_reloaded_signal;
-       GMutex              *lock;
        
        GtkTreeSelection    *cur_selection;
        TnyFolderStoreQuery *query;
        guint                timer_expander;
-
-       TnyFolderMonitor    *monitor;
 };
 #define MODEST_FOLDER_VIEW_GET_PRIVATE(o)                      \
        (G_TYPE_INSTANCE_GET_PRIVATE((o),                       \
@@ -233,10 +227,10 @@ text_cell_data  (GtkTreeViewColumn *column,  GtkCellRenderer *renderer,
                                fname = g_strdup(modest_local_folder_info_get_type_display_name (type));
                        }
                }
-       } else if (folder && type == TNY_FOLDER_TYPE_ROOT) {
-               g_warning ("fname: %s", fname);
-               /* FIXME: todo */
-       }
+       }/*  else if (folder && type == TNY_FOLDER_TYPE_ROOT) { */
+/*             g_warning ("fname: %s", fname); */
+/*             /\* FIXME: todo *\/ */
+/*     } */
                        
        if (unread > 0) {
                gchar *folder_title = g_strdup_printf ("%s (%d)", fname, unread);
@@ -357,9 +351,6 @@ modest_folder_view_init (ModestFolderView *obj)
        priv->cur_folder     = NULL;
        priv->cur_row        = NULL;
        priv->query          = NULL;
-       priv->monitor        = NULL;
-
-       priv->lock           = g_mutex_new ();
 
        column = gtk_tree_view_column_new ();   
        gtk_tree_view_append_column (GTK_TREE_VIEW(obj),column);
@@ -420,11 +411,6 @@ modest_folder_view_finalize (GObject *obj)
                priv->account_store = NULL;
        }
 
-       if (priv->lock) {
-               g_mutex_free (priv->lock);
-               priv->lock = NULL;
-       }
-
        if (priv->query) {
                g_object_unref (G_OBJECT (priv->query));
                priv->query = NULL;
@@ -535,31 +521,6 @@ modest_folder_view_new (TnyFolderStoreQuery *query)
        return GTK_WIDGET(self);
 }
 
-
-static gboolean
-update_model_empty (ModestFolderView *self)
-{
-       ModestFolderViewPrivate *priv;
-       
-       g_return_val_if_fail (self, FALSE);
-       priv = MODEST_FOLDER_VIEW_GET_PRIVATE(self);
-
-       g_mutex_lock (priv->lock);
-       {
-               if (priv->monitor) {
-                       tny_folder_monitor_stop (priv->monitor);
-                       g_object_unref(G_OBJECT(priv->monitor));
-                       priv->monitor = NULL;
-               }
-       }
-       g_mutex_unlock (priv->lock);
-       
-       g_signal_emit (G_OBJECT(self), signals[FOLDER_SELECTION_CHANGED_SIGNAL], 0,
-                      NULL, TRUE);
-       return TRUE;
-}
-
-
 /* this feels dirty; any other way to expand all the root items? */
 static void
 expand_root_items (ModestFolderView *self)
@@ -587,7 +548,9 @@ update_model (ModestFolderView *self, ModestTnyAccountStore *account_store)
        priv =  MODEST_FOLDER_VIEW_GET_PRIVATE(self);
        
        /* Notify that there is no folder selected */
-       update_model_empty (self);
+       g_signal_emit (G_OBJECT(self), 
+                      signals[FOLDER_SELECTION_CHANGED_SIGNAL], 0,
+                      NULL, TRUE);
        
        /* FIXME: the local accounts are not shown when the query
           selects only the subscribed folders. */
index 59fae7a..08e0852 100644 (file)
@@ -30,6 +30,7 @@
 #include <glib/gi18n.h>
 #include <tny-list.h>
 #include <tny-simple-list.h>
+#include <tny-folder-monitor.h>
 #include <string.h>
 
 #include <modest-header-view.h>
@@ -65,6 +66,9 @@ struct _ModestHeaderViewPrivate {
        TnyFolder            *folder;
        TnyList              *headers;
        ModestHeaderViewStyle style;
+
+       TnyFolderMonitor     *monitor;
+       GMutex               *monitor_lock;
 };
 
 #define MODEST_HEADER_VIEW_GET_PRIVATE(o)      (G_TYPE_INSTANCE_GET_PRIVATE((o), \
@@ -356,6 +360,10 @@ modest_header_view_init (ModestHeaderView *obj)
        priv->folder  = NULL;
        priv->headers = NULL;
 
+       priv->monitor        = NULL;
+       priv->monitor_lock   = g_mutex_new ();
+
+
        setup_drag_and_drop (GTK_TREE_VIEW (obj));
 }
 
@@ -372,7 +380,15 @@ modest_header_view_finalize (GObject *obj)
                g_object_unref (G_OBJECT(priv->headers));
                priv->headers  = NULL;
        }
-       
+
+       g_mutex_lock (priv->monitor_lock);
+       if (priv->monitor) {
+               tny_folder_monitor_stop (priv->monitor);
+               g_object_unref (G_OBJECT (priv->monitor));
+       }
+       g_mutex_unlock (priv->monitor_lock);
+       g_mutex_free (priv->monitor_lock);
+
        if (priv->folder) {
                g_object_unref (G_OBJECT (priv->folder));
                priv->folder   = NULL;
@@ -643,6 +659,19 @@ on_refresh_folder (TnyFolder   *folder,
        }
        g_list_free (cols);
 
+       /* Add a folder observer */
+       g_mutex_lock (priv->monitor_lock);
+       
+/*     if (priv->monitor) { */
+/*             tny_folder_monitor_stop (priv->monitor); */
+/*             g_object_unref (G_OBJECT (priv->monitor)); */
+/*     } */
+/*     priv->monitor = TNY_FOLDER_MONITOR (tny_folder_monitor_new (folder)); */
+/*     tny_folder_monitor_add_list (priv->monitor, TNY_LIST (priv->headers)); */
+/*     tny_folder_monitor_start (priv->monitor); */
+       
+       g_mutex_unlock (priv->monitor_lock);
+
        /* Set new model */
        gtk_tree_view_set_model (GTK_TREE_VIEW (self), sortable); 
        g_object_unref (G_OBJECT (sortable));
@@ -707,7 +736,6 @@ modest_header_view_set_folder (ModestHeaderView *self, TnyFolder *folder)
                               NULL);
        } else {
                gtk_tree_view_set_model (GTK_TREE_VIEW (self), NULL); 
-/*             gtk_widget_show (GTK_WIDGET (self)); */
        }
 }
 
@@ -960,8 +988,8 @@ drag_data_delete_cb (GtkWidget      *widget,
 
        /* Delete the source row */
        gtk_tree_model_get_iter (model, &iter, source_row);
-       gtk_tree_model_get (model, &iter, 
-                           TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN, &header, 
+       gtk_tree_model_get (model, &iter,
+                           TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN, &header,
                            -1);
        tny_list_remove (TNY_LIST (model), G_OBJECT (header));
        g_object_unref (G_OBJECT (header));