special-location-bar: Factor out Settings launch code

We are going to change from GtkInfoBar to AdwBanner.

So, the GtkInfoBar::response signal is going away. In preparation,
isolate the reusable parts of its callback in functions that can
be used as calbacks to the AdwBanner::button-clicked signal.

(Factored out by António Fernandes <antoniof@gnome.org> from Peter's
original commit.)
This commit is contained in:
Peter Eisenmann 2023-01-21 00:59:55 +01:00 committed by António Fernandes
parent 6a20c86588
commit a22f86f679

View file

@ -52,39 +52,50 @@ enum
G_DEFINE_TYPE (NautilusSpecialLocationBar, nautilus_special_location_bar, ADW_TYPE_BIN) G_DEFINE_TYPE (NautilusSpecialLocationBar, nautilus_special_location_bar, ADW_TYPE_BIN)
static void
on_sharing_clicked (GtkInfoBar *infobar)
{
GtkWindow *window = GTK_WINDOW (gtk_widget_get_root (GTK_WIDGET (infobar)));
GVariant *parameters = g_variant_new_parsed (
"('launch-panel', [<('sharing', @av [])>], @a{sv} {})");
nautilus_dbus_launcher_call (nautilus_dbus_launcher_get (),
NAUTILUS_DBUS_LAUNCHER_SETTINGS,
"Activate",
parameters, window);
}
static void
on_trash_auto_emptied_clicked (GtkInfoBar *infobar)
{
GtkWindow *window = GTK_WINDOW (gtk_widget_get_root (GTK_WIDGET (infobar)));
GVariant *parameters = g_variant_new_parsed (
"('launch-panel', [<('usage', @av [])>], @a{sv} {})");
nautilus_dbus_launcher_call (nautilus_dbus_launcher_get (),
NAUTILUS_DBUS_LAUNCHER_SETTINGS,
"Activate",
parameters, window);
}
static void static void
on_info_bar_response (GtkInfoBar *infobar, on_info_bar_response (GtkInfoBar *infobar,
gint response_id, gint response_id,
gpointer user_data) gpointer user_data)
{ {
NautilusSpecialLocationBar *bar = user_data; NautilusSpecialLocationBar *bar = user_data;
GtkRoot *window = gtk_widget_get_root (GTK_WIDGET (bar));
switch (bar->button_response) switch (bar->button_response)
{ {
case SPECIAL_LOCATION_SHARING_RESPONSE: case SPECIAL_LOCATION_SHARING_RESPONSE:
{ {
GVariant *parameters; on_sharing_clicked (infobar);
parameters = g_variant_new_parsed ("('launch-panel', [<('sharing', @av [])>], "
"@a{sv} {})");
nautilus_dbus_launcher_call (nautilus_dbus_launcher_get (),
NAUTILUS_DBUS_LAUNCHER_SETTINGS,
"Activate",
parameters, GTK_WINDOW (window));
} }
break; break;
case SPECIAL_LOCATION_TRASH_RESPONSE: case SPECIAL_LOCATION_TRASH_RESPONSE:
{ {
GVariant *parameters; on_trash_auto_emptied_clicked (infobar);
parameters = g_variant_new_parsed ("('launch-panel', [<('usage', @av [])>], "
"@a{sv} {})");
nautilus_dbus_launcher_call (nautilus_dbus_launcher_get (),
NAUTILUS_DBUS_LAUNCHER_SETTINGS,
"Activate",
parameters, GTK_WINDOW (window));
} }
break; break;