diff --git a/src/gui/calendar-management/gcal-edit-calendar-page.c b/src/gui/calendar-management/gcal-edit-calendar-page.c index cfd45844..1a26414d 100644 --- a/src/gui/calendar-management/gcal-edit-calendar-page.c +++ b/src/gui/calendar-management/gcal-edit-calendar-page.c @@ -259,9 +259,9 @@ on_settings_button_clicked_cb (GtkWidget *button, goa = e_source_get_extension (parent, E_SOURCE_EXTENSION_GOA); app = g_application_get_default (); - gcal_utils_launch_online_accounts_panel (g_application_get_dbus_connection (app), - e_source_goa_get_account_id (goa), - NULL); + gcal_utils_launch_gnome_settings (g_application_get_dbus_connection (app), + "online-accounts", + e_source_goa_get_account_id (goa)); GCAL_EXIT; } diff --git a/src/gui/calendar-management/gcal-new-calendar-page.c b/src/gui/calendar-management/gcal-new-calendar-page.c index 834e2211..c8e1c7a2 100644 --- a/src/gui/calendar-management/gcal-new-calendar-page.c +++ b/src/gui/calendar-management/gcal-new-calendar-page.c @@ -513,7 +513,7 @@ on_web_description_label_link_activated_cb (GtkLabel *label, { GDBusConnection *connection = g_application_get_dbus_connection (g_application_get_default ()); - gcal_utils_launch_online_accounts_panel (connection, NULL, NULL); + gcal_utils_launch_gnome_settings (connection, "online-accounts", NULL); } diff --git a/src/gui/gcal-window.c b/src/gui/gcal-window.c index e0b7d2f8..8b57a1e2 100644 --- a/src/gui/gcal-window.c +++ b/src/gui/gcal-window.c @@ -430,9 +430,9 @@ on_window_open_date_time_settings_cb (GSimpleAction *action, GVariant *param, gpointer user_data) { - GApplication *application = g_application_get_default (); + GDBusConnection *connection = g_application_get_dbus_connection (g_application_get_default ()); - gcal_utils_launch_date_time_settings_panel (g_application_get_dbus_connection (application), NULL, NULL); + gcal_utils_launch_gnome_settings (connection, "datetime", NULL); } static void @@ -440,9 +440,9 @@ on_window_open_online_accounts_cb (GSimpleAction *action, GVariant *param, gpointer user_data) { - GApplication *application = g_application_get_default (); + GDBusConnection *connection = g_application_get_dbus_connection (g_application_get_default ()); - gcal_utils_launch_online_accounts_panel (g_application_get_dbus_connection (application), NULL, NULL); + gcal_utils_launch_gnome_settings (connection, "online-accounts", NULL); } static void diff --git a/src/utils/gcal-utils.c b/src/utils/gcal-utils.c index 28f98110..06f7d13b 100644 --- a/src/utils/gcal-utils.c +++ b/src/utils/gcal-utils.c @@ -1124,9 +1124,9 @@ create_dbus_proxy (GDBusConnection *connection, } void -gcal_utils_launch_date_time_settings_panel (GDBusConnection *connection, - const gchar *action, - const gchar *arg) +gcal_utils_launch_gnome_settings (GDBusConnection *connection, + const gchar *panel_id, + const gchar *action) { g_autoptr (GDBusProxy) proxy = NULL; GVariantBuilder builder; @@ -1135,20 +1135,18 @@ gcal_utils_launch_date_time_settings_panel (GDBusConnection *connection, g_variant_builder_init (&builder, G_VARIANT_TYPE ("av")); - if (!action && !arg) + g_assert (panel_id != NULL && *panel_id != '\0'); + + if (!action) { 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)); + g_variant_builder_add (&builder, "v", g_variant_new_string (action)); } - array[0] = g_variant_new ("v", g_variant_new ("(sav)", "datetime", &builder)); + array[0] = g_variant_new ("v", g_variant_new ("(sav)", panel_id, &builder)); params[0] = g_variant_new_string ("launch-panel"); params[1] = g_variant_new_array (G_VARIANT_TYPE ("v"), array, 1); @@ -1162,59 +1160,7 @@ gcal_utils_launch_date_time_settings_panel (GDBusConnection *connection, if (!proxy) { - g_warning ("Couldn't open Date & Time panel"); - return; - } - - g_dbus_proxy_call_sync (proxy, - "Activate", - g_variant_new_tuple (params, 3), - G_DBUS_CALL_FLAGS_NONE, - -1, - NULL, - NULL); -} - -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 = create_dbus_proxy (connection, "org.gnome.Settings", "/org/gnome/Settings"); - - /* Fallback for old GNOME versions */ - if (!proxy) - proxy = create_dbus_proxy (connection, "org.gnome.ControlCenter", "/org/gnome/ControlCenter"); - - if (!proxy) - { - g_warning ("Couldn't open Online Accounts panel"); + g_warning ("Couldn't open panel '%s'", panel_id); return; } diff --git a/src/utils/gcal-utils.h b/src/utils/gcal-utils.h index 245a77f6..4090c4df 100644 --- a/src/utils/gcal-utils.h +++ b/src/utils/gcal-utils.h @@ -120,13 +120,9 @@ GList* filter_children_by_uid_and_modtype (GtkWidget GcalRecurrenceModType mod, const gchar *uid); -void gcal_utils_launch_date_time_settings_panel (GDBusConnection *connection, - const gchar *action, - const gchar *arg); - -void gcal_utils_launch_online_accounts_panel (GDBusConnection *connection, - const gchar *action, - const gchar *arg); +void gcal_utils_launch_gnome_settings (GDBusConnection *connection, + const gchar *panel_id, + const gchar *action); gchar* gcal_utils_format_filename_for_display (const gchar *filename);