summaryrefslogtreecommitdiff
path: root/src/contacts-link-suggestion-grid.vala
diff options
context:
space:
mode:
authorNiels De Graef <nielsdegraef@gmail.com>2017-12-28 21:42:04 +0100
committerNiels De Graef <nielsdegraef@gmail.com>2017-12-28 21:42:49 +0100
commit67744bd8a811f7acca62df084caddff29adc4532 (patch)
tree05dee2c5be9e7c30469c496e1a1004bc7444182c /src/contacts-link-suggestion-grid.vala
parent7ee9f46375572459e7d1239431520ba87e1026bd (diff)
downloadgnome-contacts-67744bd8a811f7acca62df084caddff29adc4532.tar.gz
LinkSuggestionGrid: try more fields for the extra info.
Diffstat (limited to 'src/contacts-link-suggestion-grid.vala')
-rw-r--r--src/contacts-link-suggestion-grid.vala37
1 files changed, 29 insertions, 8 deletions
diff --git a/src/contacts-link-suggestion-grid.vala b/src/contacts-link-suggestion-grid.vala
index 1546168..e8733b5 100644
--- a/src/contacts-link-suggestion-grid.vala
+++ b/src/contacts-link-suggestion-grid.vala
@@ -56,17 +56,38 @@ public class Contacts.LinkSuggestionGrid : Grid {
_("Is this the same person as %s from %s?").printf (contact.display_name, contact.format_persona_stores ())
: _("Is this the same person as %s?").printf (contact.display_name);
- var emails = contact.individual.email_addresses;
- if (!emails.is_empty) {
- // This is of course a best guess.
- var email = Utils.get_first<EmailFieldDetails>(emails);
- if (email.value != null) {
- this.extra_info_label.show ();
- this.extra_info_label.label = email.value;
- }
+ var extra_info = find_extra_description (contact);
+ if (extra_info != null) {
+ this.extra_info_label.show ();
+ this.extra_info_label.label = extra_info;
}
this.reject_button.clicked.connect ( () => suggestion_rejected ());
this.accept_button.clicked.connect ( () => suggestion_accepted ());
}
+
+ private string? find_extra_description (Contact contact) {
+ // First try an email address
+ var emails = contact.individual.email_addresses;
+ if (!emails.is_empty)
+ return Utils.get_first<EmailFieldDetails> (emails).value;
+
+ // Maybe a website? Works well with e.g. social media profiles
+ var urls = contact.individual.urls;
+ if (!urls.is_empty)
+ return Utils.get_first<UrlFieldDetails> (urls).value;
+
+ // Try a phone number
+ var phones = contact.individual.phone_numbers;
+ if (!phones.is_empty)
+ return Utils.get_first<PhoneFieldDetails> (phones).value;
+
+ // A postal address maybe?
+ var addresses = contact.individual.postal_addresses;
+ if (!addresses.is_empty)
+ return Utils.get_first<PostalAddressFieldDetails> (addresses).value.to_string ();
+
+ // We're out of ideas now.
+ return null;
+ }
}