[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