summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiels De Graef <nielsdegraef@gmail.com>2017-08-23 11:44:20 +0200
committerNiels De Graef <nielsdegraef@gmail.com>2017-08-23 11:44:20 +0200
commitd03f268fc5ff3bb0a372ff2a23995e411e16c5cd (patch)
tree067c378c6971f44d21b127ef6312b870967165f2
parent14c6fde4e6a028b6fdc8a41c58e1b42c77fdd608 (diff)
downloadgnome-contacts-d03f268fc5ff3bb0a372ff2a23995e411e16c5cd.tar.gz
Use DBus to open the Online Accounts panel.
Can't spawn processes in a sandboxed environment (Flatpak), so use DBus insteads.
-rw-r--r--data/flatpak/org.gnome.Contacts.json2
-rw-r--r--src/contacts-accounts-list.vala21
2 files changed, 21 insertions, 2 deletions
diff --git a/data/flatpak/org.gnome.Contacts.json b/data/flatpak/org.gnome.Contacts.json
index 9101eab..67213c6 100644
--- a/data/flatpak/org.gnome.Contacts.json
+++ b/data/flatpak/org.gnome.Contacts.json
@@ -16,6 +16,8 @@
"--device=dri",
/* Notification access */
"--talk-name=org.freedesktop.Notifications",
+ /* GNOME Control Center (for the Online Accounts panel) */
+ "--talk-name=org.gnome.ControlCenter",
/* GNOME Online Accounts */
"--talk-name=org.gnome.OnlineAccounts",
/* Evolution Data server */
diff --git a/src/contacts-accounts-list.vala b/src/contacts-accounts-list.vala
index e742819..652b26e 100644
--- a/src/contacts-accounts-list.vala
+++ b/src/contacts-accounts-list.vala
@@ -154,10 +154,27 @@ public class Contacts.AccountsList : Box {
[GtkCallback]
private void on_goa_button_clicked () {
try {
- Process.spawn_command_line_async ("gnome-control-center online-accounts");
+ var proxy = new DBusProxy.for_bus_sync (BusType.SESSION,
+ DBusProxyFlags.NONE,
+ null,
+ "org.gnome.ControlCenter",
+ "/org/gnome/ControlCenter",
+ "org.gtk.Actions");
+
+ var builder = new VariantBuilder (new VariantType ("av") );
+ builder.add ("v", new Variant.string (""));
+ var param = new Variant.tuple ({
+ new Variant.string ("launch-panel"),
+ new Variant.array (new VariantType ("v"), {
+ new Variant ("v", new Variant ("(sav)", "online-accounts", builder))
+ }),
+ new Variant.array (new VariantType ("{sv}"), {})
+ });
+
+ proxy.call_sync ("Activate", param, DBusCallFlags.NONE, -1);
} catch (Error e) {
// TODO: Show error dialog
- warning ("Couldn't open GOA: %s", e.message);
+ warning ("Couldn't open online-accounts: %s", e.message);
}
}
}