[Xfce4-commits] <postler:master> Rebuild proper filenames when toggling flags

Christian Dywan noreply at xfce.org
Sat Nov 6 00:56:01 CET 2010


Updating branch refs/heads/master
         to 32b011cb64dcd7806eb9dac77a799f24ebd5fa42 (commit)
       from 50755b7f775a54c351953966c3fcff9fdc2dbac2 (commit)

commit 32b011cb64dcd7806eb9dac77a799f24ebd5fa42
Author: Christian Dywan <christian at twotoasts.de>
Date:   Sat Nov 6 00:54:52 2010 +0100

    Rebuild proper filenames when toggling flags
    
    flags_from_filename() returns the filename without flags now.

 postler/postler-messages.vala |   28 +++++++++++++++-------------
 1 files changed, 15 insertions(+), 13 deletions(-)

diff --git a/postler/postler-messages.vala b/postler/postler-messages.vala
index 9169285..4a9574f 100644
--- a/postler/postler-messages.vala
+++ b/postler/postler-messages.vala
@@ -359,20 +359,21 @@ public class Postler.Messages : Gtk.TreeView {
         return GLib.Time.local (timestamp).format ("%x %X");
     }
 
-    static string flags_from_filename (string filename) {
-        unowned string? flagstart = null;
-        unowned string? versionstart = filename.chr (-1, ':');
-        if (versionstart != null)
-            flagstart = versionstart.chr (-1, ',');
-        if (flagstart != null)
-            return flagstart.substring (1);
-        return "";
+    static string flags_from_filename (string filename, out string bare_filename) {
+        string[]? parts = filename.split (":");
+        if (parts == null || parts[0] == null || parts[1] == null) {
+            bare_filename = filename;
+            return "";
+        }
+        bare_filename = parts[0];
+        return parts[1];
     }
 
     static string parse_flags (string name, out string flagged, out int weight) {
         /* format "unique:2,DFPRST", ordered alphabetically */
         unowned string status = STOCK_MAIL_UNREAD;
-        string flags = flags_from_filename (name);
+        string bare_filename;
+        string flags = flags_from_filename (name, out bare_filename);
         if (flags == "")
             return status;
 
@@ -601,10 +602,10 @@ public class Postler.Messages : Gtk.TreeView {
 
     internal static string toggle_flag (string location, char flag) {
         string folder = Path.get_dirname (location);
-        string filename = Path.get_basename (location);
+        string bare_filename;
         if (folder.has_suffix ("/new"))
             folder = folder.slice (0, -4) + "/cur";
-        string flags = flags_from_filename (location);
+        string flags = flags_from_filename (location, out bare_filename);
         var new_flags = new StringBuilder ();
         bool did_include_flag = false;
         foreach (var character in flags.to_utf8 ()) {
@@ -622,7 +623,7 @@ public class Postler.Messages : Gtk.TreeView {
         }
         if (!did_include_flag)
             new_flags.append_c (flag);
-        return folder + "/" + filename + new_flags.str;
+        return folder + "/" + Path.get_basename (bare_filename) + ":" + new_flags.str;
     }
 
     void toggle_message_flag (Gtk.TreeIter sort_iter, ref string location, char flag) {
@@ -644,7 +645,8 @@ public class Postler.Messages : Gtk.TreeView {
     }
 
     void mark_message_read (Gtk.TreeIter sort_iter, ref string location) {
-        if (!flags_from_filename (location).contains ("S"))
+        string bare_filename;
+        if (!flags_from_filename (location, out bare_filename).contains ("S"))
             toggle_message_flag (sort_iter, ref location, 'S');
     }
 



More information about the Xfce4-commits mailing list