[geary/wip/135-contact-popovers: 3/13] Hook up new contact popover to conversation message addresses



commit 335ead83c8e4caa1e8c715d2c9fca03eaf7dd452
Author: Michael Gratton <mike vee net>
Date:   Thu Mar 14 17:09:00 2019 +1100

    Hook up new contact popover to conversation message addresses

 .../conversation-viewer/conversation-message.vala  | 53 +++++++++-------------
 1 file changed, 22 insertions(+), 31 deletions(-)
---
diff --git a/src/client/conversation-viewer/conversation-message.vala 
b/src/client/conversation-viewer/conversation-message.vala
index e5800228..95623008 100644
--- a/src/client/conversation-viewer/conversation-message.vala
+++ b/src/client/conversation-viewer/conversation-message.vala
@@ -755,24 +755,6 @@ public class ConversationMessage : Gtk.Grid, Geary.BaseInterface {
         return menu;
     }
 
-    private Menu set_action_param_strings(MenuModel existing,
-                                          Gee.Map<string,string> values) {
-        Menu menu = new Menu();
-        for (int i = 0; i < existing.get_n_items(); i++) {
-            MenuItem item = new MenuItem.from_model(existing, i);
-            Variant action = item.get_attribute_value(
-                Menu.ATTRIBUTE_ACTION, VariantType.STRING
-            );
-            string fq_name = action.get_string();
-            string name = fq_name.substring(fq_name.index_of(".") + 1);
-            item.set_action_and_target(
-                fq_name, VariantType.STRING.dup_string(), values[name]
-            );
-            menu.append_item(item);
-        }
-        return menu;
-    }
-
     private string format_originator_compact(Geary.RFC822.MailboxAddresses? from,
                                              string empty_from_text) {
         string text = "";
@@ -992,25 +974,34 @@ public class ConversationMessage : Gtk.Grid, Geary.BaseInterface {
             address_child.set_state_flags(Gtk.StateFlags.ACTIVE, false);
 
             Geary.RFC822.MailboxAddress address = address_child.address;
-            Gee.Map<string,string> values = new Gee.HashMap<string,string>();
-            values[ACTION_OPEN_LINK] =
-                Geary.ComposedEmail.MAILTO_SCHEME + address.address;
-                values[ACTION_COPY_EMAIL] = address.to_full_display();
-            values[ACTION_SEARCH_FROM] = address.address;
 
-            Menu model = new Menu();
-            model.append_section(
-                null, set_action_param_strings(this.context_menu_email, values)
-            );
-            model.append_section(
-                null, set_action_param_strings(this.context_menu_contact, values)
+            Gee.Map<string,GLib.Variant> values =
+                new Gee.HashMap<string,GLib.Variant>();
+
+            GLib.Variant mailbox_var = new GLib.Variant.tuple(
+                new GLib.Variant[] {
+                    address.name ?? "",
+                    address.address
+                });
+            values[ACTION_CONTACT_OPEN] = "not yet defined";
+            values[ACTION_CONTACT_SAVE] = mailbox_var;
+            values[ACTION_CONTACT_SHOW_CONVERSATIONS] = address.address;
+            values[ACTION_CONTACT_LOAD_IMAGES] = false;
+            values[ACTION_CONVERSATION_NEW] = mailbox_var;
+            values[ACTION_COPY_EMAIL] = address.to_full_display();
+
+            Conversation.ContactPopover popover = new Conversation.ContactPopover(
+                address_child,
+                address
             );
-            Gtk.Popover popover = new Gtk.Popover.from_model(child, model);
+            popover.load_avatar.begin();
+            popover.add_section(this.context_menu_email, values);
+            popover.add_section(this.context_menu_unknown_contact, values);
             popover.set_position(Gtk.PositionType.BOTTOM);
             popover.closed.connect(() => {
                     address_child.unset_state_flags(Gtk.StateFlags.ACTIVE);
                 });
-            popover.show();
+            popover.popup();
         }
     }
 


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