[Xfce4-commits] <postler:master> Monitor cur and new subfolders of selected folder

Christian Dywan noreply at xfce.org
Sat Nov 13 17:50:01 CET 2010


Updating branch refs/heads/master
         to 30aeb97f933e783919ce9a7161d8e650f21265af (commit)
       from 6c19f12393ffa3e2db75357fa4cfe53c6132e214 (commit)

commit 30aeb97f933e783919ce9a7161d8e650f21265af
Author: Allen Lowe <lallenlowe at gmail.com>
Date:   Fri Nov 12 23:51:27 2010 -0700

    Monitor cur and new subfolders of selected folder
    
    Fixes: https://bugs.launchpad.net/postler/+bug/671586

 postler/postler-folders.vala |   27 ++++++++++++++++-----------
 1 files changed, 16 insertions(+), 11 deletions(-)

diff --git a/postler/postler-folders.vala b/postler/postler-folders.vala
index be182d6..86f3d38 100644
--- a/postler/postler-folders.vala
+++ b/postler/postler-folders.vala
@@ -19,7 +19,7 @@ public class Postler.Folders : Gtk.TreeView {
     Accounts accounts;
     Gtk.TreeStore store;
     string last_location;
-    FileMonitor folder_monitor;
+    FileMonitor[] folder_monitors = {};
 
     public Postler.Messages messages { get; set; }
     public string? selected_location {
@@ -265,27 +265,32 @@ public class Postler.Folders : Gtk.TreeView {
         notify_property ("selected-location");
 
         if (location != null) {
+            folder_monitors = {};
             messages.populate (location);
             messages.grab_focus ();
 
             var location_dir = File.new_for_path (location);
+            var new_message_dir = location_dir.resolve_relative_path (
+                location + "/new");
             var message_dir = location_dir.resolve_relative_path (
                 location + "/cur");
-            try {
-                folder_monitor = message_dir.monitor_directory (0, null);
-            }
-            catch (GLib.IOError error) {
-                GLib.critical (_("Failed to monitor folder \"%s\": %s"),
-                    location, error.message);
-            }
-            folder_monitor.changed.connect ((folder_monitor, file, other, event) => {
-                folder_monitor_changed (location);
-            });
+            FileMonitor new_monitor = monitor_folder (new_message_dir, location);
+            FileMonitor monitor = monitor_folder (message_dir, location);
+            folder_monitors += new_monitor;
+            folder_monitors += monitor;
         }
         else
             messages.clear ();
     }
 
+    FileMonitor monitor_folder (File message_dir, string location) {
+        FileMonitor folder_monitor = message_dir.monitor_directory (0, null);
+        folder_monitor.changed.connect ((folder_monitor, file, other, event) => {
+            folder_monitor_changed (location);
+        });
+        return folder_monitor;
+    }
+
     void import_folder (Gtk.TreeIter iter) {
         var dialog = new Gtk.FileChooserDialog (_("Import Archived Mailbox"),
             get_toplevel () as Gtk.Window, Gtk.FileChooserAction.OPEN);



More information about the Xfce4-commits mailing list