[Xfce4-commits] <postler:master> Recognise ~- as subfolder separator

Christian Dywan noreply at xfce.org
Fri Nov 5 01:02:01 CET 2010


Updating branch refs/heads/master
         to 560cab7bc7ea8639323c8891836e22bfabfd17d4 (commit)
       from 76c5b41bbab7ddd32e16aeeedb03deeac4a51c4c (commit)

commit 560cab7bc7ea8639323c8891836e22bfabfd17d4
Author: Christian Dywan <christian at twotoasts.de>
Date:   Thu Nov 4 23:19:17 2010 +0100

    Recognise ~- as subfolder separator

 postler/postler-folders.vala  |   38 +++++++++++++++++++++++++++++++++++---
 postler/postler-messages.vala |    2 ++
 2 files changed, 37 insertions(+), 3 deletions(-)

diff --git a/postler/postler-folders.vala b/postler/postler-folders.vala
index b574cb0..bf948ed 100644
--- a/postler/postler-folders.vala
+++ b/postler/postler-folders.vala
@@ -171,7 +171,39 @@ public class Postler.Folders : Gtk.TreeView {
                     store.set (account_iter,
                         Columns.FOLDER_MONITOR, monitor);
 
+                    Gtk.TreeIter parent_iter = account_iter;
                     Gtk.TreeIter folder_iter;
+                    string folder_name = name;
+
+                    /* A ~- separates parent and subfolder */
+                    if ("~-" in name) {
+                        string[]? name_pieces = name.split ("~-");
+                        string folder_dir_path = folder_dir.get_path ();
+                        existing_iter = false;
+                        if (store.iter_children (out folder_iter, account_iter)) {
+                            do {
+                                string existing_parent;
+                                store.get (folder_iter,
+                                    Columns.LOCATION, out existing_parent);
+                                if (folder_dir_path == existing_parent) {
+                                    parent_iter = folder_iter;
+                                    existing_iter = true;
+                                    break;
+                                }
+                            } while (store.iter_next (ref folder_iter));
+                        }
+                        if (!existing_iter) {
+                            store.insert_with_values (out parent_iter, account_iter, -1,
+                                Columns.ICON, Gtk.STOCK_DIRECTORY,
+                                Columns.NAME, name_pieces[0],
+                                Columns.LOCATION, folder_dir_path,
+                                Columns.INFO, account_info);
+                        }
+                        folder_name = name_pieces[1];
+                    } else if ("~~" in name) {
+                        folder_name = folder_name.replace ("~~", "~");
+                    }
+
                     if (name == "INBOX") {
                         var msg_dir = folder_dir.resolve_relative_path (
                             account_info.path + "/" + name + "/new");
@@ -200,9 +232,9 @@ public class Postler.Folders : Gtk.TreeView {
                         }
                     }
 
-                    store.insert_with_values (out folder_iter, account_iter, -1,
+                    store.insert_with_values (out folder_iter, parent_iter, -1,
                         Columns.ICON, stock_id,
-                        Columns.NAME, localized_name ?? name,
+                        Columns.NAME, localized_name ?? folder_name,
                         Columns.LOCATION, account_info.path + "/" + name,
                         Columns.INFO, account_info);
                     var status_dir = folder_dir.resolve_relative_path (name);
@@ -210,7 +242,7 @@ public class Postler.Folders : Gtk.TreeView {
                     if (!new_dir.query_exists (null))
                         store.remove (folder_iter);
                 }
-                expand_row (store.get_path (account_iter), true);
+                expand_row (store.get_path (account_iter), false);
             }
             catch (GLib.Error error) {
                 GLib.critical (_("Failed to read folder \"%s\": %s"),
diff --git a/postler/postler-messages.vala b/postler/postler-messages.vala
index dcec8f7..381829c 100644
--- a/postler/postler-messages.vala
+++ b/postler/postler-messages.vala
@@ -412,6 +412,8 @@ public class Postler.Messages : Gtk.TreeView {
         clear ();
         if (location == null)
             return true;
+        if (!FileUtils.test (location + "/cur", FileTest.EXISTS))
+            return true;
 
         model = sort = null;
 



More information about the Xfce4-commits mailing list