[geary/wip/135-contact-popovers: 4/13] Implement new Show Conversations action



commit b0dc77b174362e80915ab511b0b2e1441009ddb6
Author: Michael Gratton <mike vee net>
Date:   Thu Mar 14 17:40:12 2019 +1100

    Implement new Show Conversations action
    
    Removed old signal-based approach, move GearyController impl to
    MainWindow, and just call that directly from the handler.

 src/client/application/geary-controller.vala             | 13 +------------
 src/client/components/main-window.vala                   |  9 +++++++++
 src/client/conversation-viewer/conversation-message.vala | 14 +++++++++-----
 3 files changed, 19 insertions(+), 17 deletions(-)
---
diff --git a/src/client/application/geary-controller.vala b/src/client/application/geary-controller.vala
index 87ab2047..8b4e848a 100644
--- a/src/client/application/geary-controller.vala
+++ b/src/client/application/geary-controller.vala
@@ -2332,7 +2332,7 @@ public class GearyController : Geary.BaseObject {
     }
 
     private void on_search_activated(SimpleAction action) {
-        show_search_bar();
+        this.main_window.show_search_bar();
     }
 
     private void on_archive_conversation(SimpleAction action) {
@@ -2670,10 +2670,6 @@ public class GearyController : Geary.BaseObject {
             msg_view.save_image.connect((url, alt_text, buf) => {
                     on_save_image_extended(view, url, alt_text, buf);
                 });
-            msg_view.search_activated.connect((op, value) => {
-                    string search = op + ":" + value;
-                    show_search_bar(search);
-                });
         }
         view.save_attachments.connect(on_save_attachments);
         view.view_source.connect(on_view_source);
@@ -2799,13 +2795,6 @@ public class GearyController : Geary.BaseObject {
         return ret.size >= 1 ? ret : null;
     }
 
-    private void show_search_bar(string? text = null) {
-        main_window.search_bar.give_search_focus();
-        if (text != null) {
-            main_window.search_bar.set_search_text(text);
-        }
-    }
-
     private void do_search(string search_text) {
         Geary.SearchFolder? search_folder = null;
         if (this.current_account != null) {
diff --git a/src/client/components/main-window.vala b/src/client/components/main-window.vala
index 1b6bfbfa..ec7e80ba 100644
--- a/src/client/components/main-window.vala
+++ b/src/client/components/main-window.vala
@@ -146,6 +146,15 @@ public class MainWindow : Gtk.ApplicationWindow, Geary.BaseInterface {
         update_infobar_frame();
     }
 
+    /** Displays and focuses the search bar for the window. */
+    public void show_search_bar(string? text = null) {
+        this.search_bar.give_search_focus();
+        if (text != null) {
+            this.search_bar.set_search_text(text);
+        }
+    }
+
+    /** Displays an infobar in the window. */
     public void show_infobar(MainWindowInfoBar info_bar) {
         this.info_bar_container.add(info_bar);
         this.info_bar_frame.show();
diff --git a/src/client/conversation-viewer/conversation-message.vala 
b/src/client/conversation-viewer/conversation-message.vala
index 95623008..ac6cadce 100644
--- a/src/client/conversation-viewer/conversation-message.vala
+++ b/src/client/conversation-viewer/conversation-message.vala
@@ -281,9 +281,6 @@ public class ConversationMessage : Gtk.Grid, Geary.BaseInterface {
     /** Fired when the user saves an inline displayed image. */
     public signal void save_image(string? uri, string? alt_text, Geary.Memory.Buffer buffer);
 
-    /** Fired when the user activates a specific search shortcut. */
-    public signal void search_activated(string operator, string value);
-
 
     /**
      * Constructs a new view from an email's headers and body.
@@ -364,9 +361,8 @@ public class ConversationMessage : Gtk.Grid, Geary.BaseInterface {
         add_action(ACTION_CONTACT_SAVE, true, new VariantType("(ss)"))
             // XXX
             ;
-            // XXX
-            ;
         add_action(ACTION_CONTACT_SHOW_CONVERSATIONS, true, VariantType.STRING)
+            .activate.connect(on_contact_show_conversations);
         add_action(ACTION_CONVERSATION_NEW, true, new VariantType("(ss)"))
             // XXX
             ;
@@ -1132,6 +1128,14 @@ public class ConversationMessage : Gtk.Grid, Geary.BaseInterface {
         remote_images_infobar.hide();
     }
 
+    private void on_contact_show_conversations(Variant? param) {
+        string email = param as string;
+        MainWindow? main = this.get_toplevel() as MainWindow;
+        if (main != null && email != null) {
+            main.show_search_bar("from:%s".printf(email));
+        }
+    }
+
     private void on_copy_link(Variant? param) {
         Gtk.Clipboard clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD);
         clipboard.set_text(param.get_string(), -1);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]