bluetooth: Use GtkStack:visible-child-name

This allows removing some object IDs from the C code.
This commit is contained in:
Automeris naranja 2024-07-19 20:18:48 -03:00 committed by Automeris naranja
parent 9831708ef8
commit 90da147295
2 changed files with 67 additions and 50 deletions

View file

@ -34,12 +34,8 @@
struct _CcBluetoothPanel {
CcPanel parent_instance;
AdwStatusPage *airplane_page;
AdwStatusPage *disabled_page;
GtkSwitch *enable_switch;
GtkBox *header_box;
AdwStatusPage *hw_airplane_page;
AdwStatusPage *no_devices_page;
BluetoothSettingsWidget *settings_widget;
GtkStack *stack;
@ -123,7 +119,7 @@ adapter_status_changed_cb (CcBluetoothPanel *self)
{
GtkAlign valign;
gboolean sensitive, powered;
GtkWidget *page;
const char *page;
g_debug ("Updating airplane mode: BluetoothHasAirplaneMode %d, BluetoothHardwareAirplaneMode %d, BluetoothAirplaneMode %d, AirplaneMode %d",
self->has_airplane_mode, self->hardware_airplane_mode, self->bt_airplane_mode, self->airplane_mode);
@ -134,28 +130,28 @@ adapter_status_changed_cb (CcBluetoothPanel *self)
g_debug ("No Bluetooth available");
sensitive = FALSE;
powered = FALSE;
page = GTK_WIDGET (self->no_devices_page);
page = "no-devices-page";
} else if (self->hardware_airplane_mode) {
g_debug ("Bluetooth is Hard blocked");
sensitive = FALSE;
powered = FALSE;
page = GTK_WIDGET (self->hw_airplane_page);
page = "hw-airplane-page";
} else if (self->airplane_mode) {
g_debug ("Airplane mode is on, Wi-Fi and Bluetooth are disabled");
sensitive = FALSE;
powered = FALSE;
page = GTK_WIDGET (self->airplane_page);
page = "airplane-page";
} else if (self->bt_airplane_mode ||
!bluetooth_settings_widget_get_default_adapter_powered (self->settings_widget)) {
g_debug ("Default adapter is unpowered");
sensitive = TRUE;
powered = FALSE;
page = GTK_WIDGET (self->disabled_page);
page = "disabled-page";
} else {
g_debug ("Bluetooth is available and powered");
sensitive = TRUE;
powered = TRUE;
page = GTK_WIDGET (self->settings_widget);
page = "bluetooth-page";
valign = GTK_ALIGN_FILL;
}
@ -165,7 +161,7 @@ adapter_status_changed_cb (CcBluetoothPanel *self)
gtk_switch_set_active (self->enable_switch, powered);
g_signal_handlers_unblock_by_func (self->enable_switch, enable_switch_state_set_cb, self);
gtk_stack_set_visible_child (self->stack, page);
gtk_stack_set_visible_child_name (self->stack, page);
}
static void
@ -231,12 +227,8 @@ cc_bluetooth_panel_class_init (CcBluetoothPanelClass *klass)
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/bluetooth/cc-bluetooth-panel.ui");
gtk_widget_class_bind_template_child (widget_class, CcBluetoothPanel, airplane_page);
gtk_widget_class_bind_template_child (widget_class, CcBluetoothPanel, disabled_page);
gtk_widget_class_bind_template_child (widget_class, CcBluetoothPanel, enable_switch);
gtk_widget_class_bind_template_child (widget_class, CcBluetoothPanel, header_box);
gtk_widget_class_bind_template_child (widget_class, CcBluetoothPanel, no_devices_page);
gtk_widget_class_bind_template_child (widget_class, CcBluetoothPanel, hw_airplane_page);
gtk_widget_class_bind_template_child (widget_class, CcBluetoothPanel, settings_widget);
gtk_widget_class_bind_template_child (widget_class, CcBluetoothPanel, stack);

View file

@ -24,50 +24,75 @@
<property name="content">
<object class="GtkStack" id="stack">
<child>
<object class="AdwStatusPage" id="no_devices_page">
<property name="icon-name">bluetooth-active-symbolic</property>
<property name="title" translatable="yes">No Bluetooth Found</property>
<property name="description" translatable="yes">Plug in a dongle to use Bluetooth</property>
</object>
</child>
<child>
<object class="AdwStatusPage" id="disabled_page">
<property name="icon-name">bluetooth-active-symbolic</property>
<property name="title" translatable="yes">Bluetooth Turned Off</property>
<property name="description" translatable="yes">Turn on to connect devices and receive file transfers</property>
</object>
</child>
<child>
<object class="AdwStatusPage" id="airplane_page">
<property name="icon-name">airplane-mode-symbolic</property>
<property name="title" translatable="yes">Airplane Mode is On</property>
<property name="description" translatable="yes">Bluetooth is disabled when airplane mode is on</property>
<object class="GtkStackPage">
<property name="name">no-devices-page</property>
<property name="child">
<object class="GtkButton">
<property name="label" translatable="yes">_Turn Off Airplane Mode</property>
<property name="use-underline">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<signal name="clicked" handler="airplane_mode_off_button_clicked_cb" object="CcBluetoothPanel" swapped="yes"/>
<style>
<class name="pill"/>
<class name="suggested-action"/>
</style>
<object class="AdwStatusPage">
<property name="icon-name">bluetooth-active-symbolic</property>
<property name="title" translatable="yes">No Bluetooth Found</property>
<property name="description" translatable="yes">Plug in a dongle to use Bluetooth</property>
</object>
</property>
</object>
</child>
<child>
<object class="AdwStatusPage" id="hw_airplane_page">
<property name="icon-name">airplane-mode-symbolic</property>
<property name="title" translatable="yes">Hardware Airplane Mode is On</property>
<property name="description" translatable="yes">Turn off the Airplane mode switch to enable Bluetooth</property>
<object class="GtkStackPage">
<property name="name">disabled-page</property>
<property name="child">
<object class="AdwStatusPage">
<property name="icon-name">bluetooth-active-symbolic</property>
<property name="title" translatable="yes">Bluetooth Turned Off</property>
<property name="description" translatable="yes">Turn on to connect devices and receive file transfers</property>
</object>
</property>
</object>
</child>
<child>
<object class="BluetoothSettingsWidget" id="settings_widget">
<signal name="panel-changed" handler="panel_changed_cb" object="CcBluetoothPanel" swapped="yes"/>
<signal name="adapter-status-changed" handler="adapter_status_changed_cb" object="CcBluetoothPanel" swapped="yes"/>
<object class="GtkStackPage">
<property name="name">airplane-page</property>
<property name="child">
<object class="AdwStatusPage">
<property name="icon-name">airplane-mode-symbolic</property>
<property name="title" translatable="yes">Airplane Mode is On</property>
<property name="description" translatable="yes">Bluetooth is disabled when airplane mode is on</property>
<property name="child">
<object class="GtkButton">
<property name="label" translatable="yes">_Turn Off Airplane Mode</property>
<property name="use-underline">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<signal name="clicked" handler="airplane_mode_off_button_clicked_cb" object="CcBluetoothPanel" swapped="yes"/>
<style>
<class name="pill"/>
<class name="suggested-action"/>
</style>
</object>
</property>
</object>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">hw-airplane-page</property>
<property name="child">
<object class="AdwStatusPage">
<property name="icon-name">airplane-mode-symbolic</property>
<property name="title" translatable="yes">Hardware Airplane Mode is On</property>
<property name="description" translatable="yes">Turn off the Airplane mode switch to enable Bluetooth</property>
</object>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">bluetooth-page</property>
<property name="child">
<object class="BluetoothSettingsWidget" id="settings_widget">
<signal name="panel-changed" handler="panel_changed_cb" object="CcBluetoothPanel" swapped="yes"/>
<signal name="adapter-status-changed" handler="adapter_status_changed_cb" object="CcBluetoothPanel" swapped="yes"/>
</object>
</property>
</object>
</child>
</object>