[Xfce4-commits] <postler:master> Add a button to flag und un-flag selected messages

Christian Dywan noreply at xfce.org
Sat Jul 10 00:24:12 CEST 2010


Updating branch refs/heads/master
         to 0d012b2324bb55c3499c1ec4e5e1f6bd11d4d97b (commit)
       from 28c24fc2e312cca02a4bb1d09ddf8a1a2860408a (commit)

commit 0d012b2324bb55c3499c1ec4e5e1f6bd11d4d97b
Author: Christian Dywan <christian at twotoasts.de>
Date:   Tue Jun 29 18:40:42 2010 +0200

    Add a button to flag und un-flag selected messages

 postler/postler-bureau.vala   |   10 ++++++++++
 postler/postler-messages.vala |   19 +++++++++++++++++++
 2 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/postler/postler-bureau.vala b/postler/postler-bureau.vala
index 3e5b2dd..7aaa553 100644
--- a/postler/postler-bureau.vala
+++ b/postler/postler-bureau.vala
@@ -36,6 +36,7 @@ public class Postler.Bureau : Gtk.Window {
                     <menuitem action="MessageReplyAll"/>
                     <menuitem action="MessageForward"/>
                     <separator/>
+                    <menuitem action="MessageFlag"/>
                     <menuitem action="MessageArchive"/>
                     <menuitem action="MessageDelete"/>
                     <separator/>
@@ -63,6 +64,7 @@ public class Postler.Bureau : Gtk.Window {
                 <toolitem action="MessageReplyAll"/>
                 <toolitem action="MessageForward"/>
                 <separator/>
+                <toolitem action="MessageFlag"/>
                 <toolitem action="MessageArchive"/>
                 <toolitem action="MessageDelete"/>
                 <separator/>
@@ -131,6 +133,10 @@ public class Postler.Bureau : Gtk.Window {
         /* TODO */
     }
 
+    void action_flag () {
+        messages.toggle_selected_flag ('F');
+    }
+
     void action_archive () {
         messages.move_selected ("Archive");
     }
@@ -246,6 +252,8 @@ public class Postler.Bureau : Gtk.Window {
           N_("Reply to all recipients"), action_message_reply_all },
         { "MessageForward", STOCK_MAIL_FORWARD, null, "<Ctrl>f",
           N_("Forward message"), action_message_forward },
+        { "MessageFlag", STOCK_EMBLEM_IMPORTANT, null, "<Ctrl>t",
+          N_("Flag message"), action_flag },
         { "MessageArchive", STOCK_ARCHIVE, null, "<Ctrl>e",
           N_("Archive message"), action_archive },
         { "MessageDelete", Gtk.STOCK_DELETE, null, "<Ctrl>d",
@@ -387,11 +395,13 @@ public class Postler.Bureau : Gtk.Window {
         actions.get_action ("SaveSearch").is_important = true;
         messages_box.pack_start (search_options, false, false, 0);
         messages = new Postler.Messages (accounts);
+        actions.get_action ("MessageFlag").sensitive = false;
         actions.get_action ("MessageArchive").sensitive = false;
         actions.get_action ("MessageDelete").sensitive = false;
         messages.notify["selected-location"].connect ((object, pspec) => {
             Postler.Messages messages = object as Postler.Messages;
             bool state = messages.selected_location != null;
+            actions.get_action ("MessageFlag").sensitive = state;
             actions.get_action ("MessageArchive").sensitive = state
                 && !folders.selected_location.has_suffix ("/Archive");
             actions.get_action ("MessageDelete").sensitive = state;
diff --git a/postler/postler-messages.vala b/postler/postler-messages.vala
index 0538402..aa4605b 100644
--- a/postler/postler-messages.vala
+++ b/postler/postler-messages.vala
@@ -620,6 +620,25 @@ public class Postler.Messages : Gtk.TreeView {
             toggle_message_flag (sort_iter, ref location, 'S');
     }
 
+    public void toggle_selected_flag (char flag) {
+        GLib.List<Gtk.TreePath> paths;
+        var references = new GLib.List<Gtk.TreeRowReference> ();
+
+        paths = get_selection ().get_selected_rows (null);
+        foreach (var path in paths)
+            references.prepend (new Gtk.TreeRowReference (sort, path));
+
+        foreach (var reference in references) {
+            var path = reference.get_path ();
+            Gtk.TreeIter sort_iter;
+            if (sort.get_iter (out sort_iter, path)) {
+                string location;
+                sort.get (sort_iter, Columns.LOCATION, out location);
+                toggle_message_flag (sort_iter, ref location, flag);
+            }
+        }
+    }
+
     void display_message (Gtk.TreeIter sort_iter) {
         string location;
         sort.get (sort_iter, Columns.LOCATION, out location);



More information about the Xfce4-commits mailing list