summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiels De Graef <nielsdegraef@gmail.com>2017-12-29 02:56:19 +0100
committerNiels De Graef <nielsdegraef@gmail.com>2017-12-29 02:56:19 +0100
commitf09c7b15b33b0fc52a7fae1afbbcd1ee48aa6307 (patch)
treea05076a1550679098526cc64c73a4903b6815eb4
parenta03654fc0628b8324eb9efa855d55971388f6ee0 (diff)
downloadgnome-contacts-f09c7b15b33b0fc52a7fae1afbbcd1ee48aa6307.tar.gz
Keep all the Geocode and Map stuff in one place.
-rw-r--r--src/contacts-address-map.vala34
-rw-r--r--src/contacts-contact.vala34
2 files changed, 32 insertions, 36 deletions
diff --git a/src/contacts-address-map.vala b/src/contacts-address-map.vala
index 127e138..72eb55e 100644
--- a/src/contacts-address-map.vala
+++ b/src/contacts-address-map.vala
@@ -90,10 +90,10 @@ public class Contacts.AddressMap : Frame {
var geocodes = 0;
foreach (var addr in addresses) {
- Contact.geocode_address.begin (addr.value, (object, res) => {
+ geocode_address.begin (addr.value, (object, res) => {
mutex.lock ();
- var place = Contact.geocode_address.end (res);
+ var place = geocode_address.end (res);
geocodes++;
if (place != null)
@@ -215,4 +215,34 @@ public class Contacts.AddressMap : Frame {
* the markers.*/
alloc_id = marker_layer.allocation_changed.connect (on_allocation_changed);
}
+
+ private async Place geocode_address (PostalAddress addr) {
+ SourceFunc callback = geocode_address.callback;
+
+ var params = new HashTable<string, GLib.Value?>(str_hash, str_equal);
+ if (is_set (addr.street))
+ params["street"] = addr.street;
+ if (is_set (addr.locality))
+ params["locality"] = addr.locality;
+ if (is_set (addr.region))
+ params["region"] = addr.region;
+ if (is_set (addr.country))
+ params["country"] = addr.country;
+
+ Place? place = null;
+ var forward = new Forward.for_params (params);
+ forward.search_async.begin (null, (object, res) => {
+ try {
+ var places = forward.search_async.end (res);
+
+ place = places.nth_data (0);
+ callback ();
+ } catch (GLib.Error e) {
+ debug ("No geocode result found for contact");
+ callback ();
+ }
+ });
+ yield;
+ return place;
+ }
}
diff --git a/src/contacts-contact.vala b/src/contacts-contact.vala
index e2ac68b..17f290a 100644
--- a/src/contacts-contact.vala
+++ b/src/contacts-contact.vala
@@ -19,7 +19,6 @@
using Gtk;
using Folks;
using Gee;
-using Geocode;
public errordomain ContactError {
NOT_IMPLEMENTED,
@@ -271,39 +270,6 @@ public class Contacts.Contact : GLib.Object {
return res;
}
- public static async Place geocode_address (PostalAddress addr) {
- SourceFunc callback = geocode_address.callback;
- var params = new HashTable<string, GLib.Value?>(str_hash, str_equal);
-
- if (is_set (addr.street))
- params.insert("street", addr.street);
-
- if (is_set (addr.locality))
- params.insert("locality", addr.locality);
-
- if (is_set (addr.region))
- params.insert("region", addr.region);
-
- if (is_set (addr.country))
- params.insert("country", addr.country);
-
- Place? place = null;
- var forward = new Forward.for_params (params);
- forward.search_async.begin (null, (object, res) => {
- try {
- var places = forward.search_async.end (res);
-
- place = places.nth_data (0);
- callback ();
- } catch (GLib.Error e) {
- debug ("No geocode result found for contact");
- callback ();
- }
- });
- yield;
- return place;
- }
-
public static string[] format_address (PostalAddress addr) {
string[] lines = {};