gcal-utils: Combine GNOME Settings launchers
This refactor combines the functions gcal_utils_launch_online_accounts_panel and gcal_utils_launch_datetime_settings_panel into a single function that takes a panel ID as an argument.
This commit is contained in:
committed by
Georges Basile Stavracas Neto
parent
3526cadcca
commit
aec45594f9
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
+9
-63
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user