source-dialog: Move Online Accounts panel spawn to utils

So that it can be reused by other files.
This commit is contained in:
Georges Basile Stavracas Neto
2019-06-24 21:32:44 -03:00
parent 7ee0acdcbf
commit 8743121f4d
3 changed files with 67 additions and 69 deletions
+55
View File
@@ -1188,3 +1188,58 @@ gcal_translate_child_window_position (GtkWidget *target,
return TRUE;
}
void
gcal_utils_launch_online_accounts_panel (GDBusConnection *connection,
const gchar *action,
const gchar *arg)
{
g_autoptr (GDBusProxy) proxy = NULL;
GVariantBuilder builder;
GVariant *params[3];
GVariant *array[1];
g_variant_builder_init (&builder, G_VARIANT_TYPE ("av"));
if (!action && !arg)
{
g_variant_builder_add (&builder, "v", g_variant_new_string (""));
}
else
{
if (action)
g_variant_builder_add (&builder, "v", g_variant_new_string (action));
if (arg)
g_variant_builder_add (&builder, "v", g_variant_new_string (arg));
}
array[0] = g_variant_new ("v", g_variant_new ("(sav)", "online-accounts", &builder));
params[0] = g_variant_new_string ("launch-panel");
params[1] = g_variant_new_array (G_VARIANT_TYPE ("v"), array, 1);
params[2] = g_variant_new_array (G_VARIANT_TYPE ("{sv}"), NULL, 0);
proxy = g_dbus_proxy_new_sync (connection,
G_DBUS_PROXY_FLAGS_NONE,
NULL,
"org.gnome.ControlCenter",
"/org/gnome/ControlCenter",
"org.gtk.Actions",
NULL,
NULL);
if (!proxy)
{
g_warning ("Couldn't open Online Accounts panel");
return;
}
g_dbus_proxy_call_sync (proxy,
"Activate",
g_variant_new_tuple (params, 3),
G_DBUS_CALL_FLAGS_NONE,
-1,
NULL,
NULL);
}
+5
View File
@@ -121,4 +121,9 @@ gboolean gcal_translate_child_window_position (GtkWidget
gdouble src_y,
gdouble *real_x,
gdouble *real_y);
void gcal_utils_launch_online_accounts_panel (GDBusConnection *connection,
const gchar *action,
const gchar *arg);
#endif /* __GCAL_UTILS_H__ */