[gnome-control-center] power: Move general UI into GtkBuilder file
- From: Robert Ancell <rancell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] power: Move general UI into GtkBuilder file
- Date: Sun, 13 Dec 2020 21:00:10 +0000 (UTC)
commit fd33f805585ee3e2a57a8c2e74492fb8cc89aea8
Author: Robert Ancell <robert ancell canonical com>
Date: Wed Nov 25 11:46:05 2020 +1300
power: Move general UI into GtkBuilder file
panels/power/cc-power-panel.c | 202 ++++++++++-------------------------------
panels/power/cc-power-panel.ui | 110 ++++++++++++++++++++++
2 files changed, 158 insertions(+), 154 deletions(-)
---
diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c
index 9942fd51b..0d70cb841 100644
--- a/panels/power/cc-power-panel.c
+++ b/panels/power/cc-power-panel.c
@@ -68,6 +68,8 @@ struct _CcPowerPanel
GtkListBoxRow *automatic_suspend_row;
GtkLabel *battery_heading;
GtkListBox *battery_listbox;
+ GtkListBoxRow *battery_percentage_row;
+ GtkSwitch *battery_percentage_switch;
GtkSizeGroup *battery_row_sizegroup;
GtkBox *battery_section;
GtkSizeGroup *battery_sizegroup;
@@ -82,6 +84,9 @@ struct _CcPowerPanel
GtkBox *device_section;
GtkListBoxRow *dim_screen_row;
GtkSwitch *dim_screen_switch;
+ GtkLabel *general_heading;
+ GtkListBox *general_listbox;
+ GtkBox *general_section;
GtkComboBox *idle_delay_combo;
GtkListBoxRow *kbd_brightness_row;
CcBrightnessScale *kbd_brightness_scale;
@@ -90,13 +95,14 @@ struct _CcPowerPanel
HdyClamp *main_box;
GtkListBoxRow *mobile_row;
GtkSwitch *mobile_switch;
+ GtkComboBox *power_button_combo;
GtkListStore *power_button_liststore;
+ GtkListBoxRow *power_button_row;
GtkLabel *power_profile_heading;
GtkListBox *power_profile_listbox;
GtkBox *power_profile_section;
GtkLabel *power_saving_heading;
GtkListBox *power_saving_listbox;
- GtkBox *power_vbox;
GtkSizeGroup *row_sizegroup;
GtkComboBox *suspend_on_battery_delay_combo;
GtkLabel *suspend_on_battery_delay_label;
@@ -130,8 +136,6 @@ struct _CcPowerPanel
GtkWidget *power_profiles_row[NUM_CC_POWER_PROFILES];
gboolean power_profiles_in_update;
- GtkWidget *power_button_combo;
-
#ifdef HAVE_NETWORK_MANAGER
NMClient *nm_client;
#endif
@@ -180,54 +184,6 @@ cc_power_panel_get_help_uri (CcPanel *panel)
return "help:gnome-help/power";
}
-static GtkWidget *
-no_prelight_row_new (void)
-{
- GtkWidget *row = gtk_list_box_row_new ();
- gtk_list_box_row_set_selectable (GTK_LIST_BOX_ROW (row), FALSE);
- gtk_list_box_row_set_activatable (GTK_LIST_BOX_ROW (row), FALSE);
- return row;
-}
-
-static GtkWidget *
-row_box_new (void)
-{
- GtkWidget *box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE);
- gtk_widget_set_margin_end (box, 12);
- gtk_widget_set_margin_start (box, 12);
- gtk_box_set_spacing (GTK_BOX (box), 12);
- gtk_widget_show (box);
- return box;
-}
-
-static GtkWidget *
-row_title_new (const gchar *title,
- GtkWidget **title_label)
-{
- GtkWidget *box, *label;
-
- box = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE);
- gtk_widget_show (box);
- gtk_widget_set_margin_bottom (box, 6);
- gtk_widget_set_margin_top (box, 6);
- gtk_box_set_spacing (GTK_BOX (box), 4);
- gtk_widget_set_valign (box, GTK_ALIGN_CENTER);
-
- label = gtk_label_new (NULL);
- gtk_widget_show (label);
- gtk_label_set_markup (GTK_LABEL (label), title);
- gtk_label_set_use_underline (GTK_LABEL (label), TRUE);
- gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END);
- gtk_widget_set_halign (label, GTK_ALIGN_START);
- gtk_label_set_xalign (GTK_LABEL (label), 0.0);
-
- if (title_label)
- *title_label = label;
- gtk_container_add (GTK_CONTAINER (box), label);
-
- return box;
-}
-
static char *
get_chassis_type (GCancellable *cancellable)
{
@@ -993,7 +949,7 @@ idle_delay_combo_changed_cb (CcPowerPanel *self)
}
static void
-combo_power_button_changed_cb (CcPowerPanel *self)
+power_button_combo_changed_cb (CcPowerPanel *self)
{
GtkTreeIter iter;
GtkTreeModel *model;
@@ -1657,116 +1613,40 @@ setup_power_profiles (CcPowerPanel *self)
}
static void
-add_battery_percentage (CcPowerPanel *self,
- GtkListBox *listbox)
+setup_general_section (CcPowerPanel *self)
{
- GtkWidget *box, *label, *title;
- GtkWidget *row;
- GtkWidget *sw;
+ gboolean can_suspend, can_hibernate, show_section = FALSE;
- if (!self->has_batteries)
- return;
+ can_suspend = can_suspend_or_hibernate (self, "CanSuspend");
+ can_hibernate = can_suspend_or_hibernate (self, "CanHibernate");
- /* Show Battery Percentage */
- row = no_prelight_row_new ();
- gtk_widget_show (row);
- box = row_box_new ();
- gtk_container_add (GTK_CONTAINER (row), box);
- title = row_title_new (_("Show Battery _Percentage"), &label);
- gtk_box_pack_start (GTK_BOX (box), title, TRUE, TRUE, 0);
-
- sw = gtk_switch_new ();
- gtk_widget_show (sw);
- g_settings_bind (self->interface_settings, "show-battery-percentage",
- sw, "active",
- G_SETTINGS_BIND_DEFAULT);
- gtk_widget_set_valign (sw, GTK_ALIGN_CENTER);
- gtk_box_pack_start (GTK_BOX (box), sw, FALSE, TRUE, 0);
- gtk_label_set_mnemonic_widget (GTK_LABEL (label), sw);
- gtk_container_add (GTK_CONTAINER (listbox), row);
- gtk_size_group_add_widget (self->row_sizegroup, row);
-}
+ if ((can_hibernate || can_suspend) &&
+ g_strcmp0 (self->chassis_type, "vm") != 0 &&
+ g_strcmp0 (self->chassis_type, "tablet") != 0 &&
+ g_strcmp0 (self->chassis_type, "handset") != 0)
+ {
+ gtk_widget_show (GTK_WIDGET (self->power_button_row));
-static void
-add_general_section (CcPowerPanel *self)
-{
- GtkWidget *widget, *box, *label, *title;
- GtkWidget *row;
- g_autofree gchar *s = NULL;
- GtkTreeModel *model;
- GsdPowerButtonActionType button_value;
- gboolean can_suspend, can_hibernate;
-
- /* Frame header */
- s = g_markup_printf_escaped ("<b>%s</b>", _("Suspend & Power Button"));
- label = gtk_label_new (s);
- gtk_widget_show (label);
- gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
- gtk_widget_set_halign (label, GTK_ALIGN_START);
- gtk_widget_set_margin_bottom (label, 12);
- gtk_box_pack_start (self->power_vbox, label, FALSE, TRUE, 0);
-
- widget = gtk_list_box_new ();
- gtk_widget_show (widget);
- self->boxes_reverse = g_list_prepend (self->boxes_reverse, widget);
- g_signal_connect_object (widget, "keynav-failed", G_CALLBACK (keynav_failed_cb), self, G_CONNECT_SWAPPED);
- gtk_list_box_set_selection_mode (GTK_LIST_BOX (widget), GTK_SELECTION_NONE);
- gtk_list_box_set_header_func (GTK_LIST_BOX (widget),
- cc_list_box_update_header_func,
- NULL, NULL);
+ populate_power_button_model (GTK_TREE_MODEL (self->power_button_liststore), can_suspend,
can_hibernate);
+ g_signal_handlers_block_by_func (self->power_button_combo, power_button_combo_changed_cb, self);
+ set_value_for_combo (self->power_button_combo, g_settings_get_enum (self->gsd_settings,
"power-button-action"));
+ g_signal_handlers_unblock_by_func (self->power_button_combo, power_button_combo_changed_cb, self);
- atk_object_add_relationship (ATK_OBJECT (gtk_widget_get_accessible (label)),
- ATK_RELATION_LABEL_FOR,
- ATK_OBJECT (gtk_widget_get_accessible (widget)));
- atk_object_add_relationship (ATK_OBJECT (gtk_widget_get_accessible (widget)),
- ATK_RELATION_LABELLED_BY,
- ATK_OBJECT (gtk_widget_get_accessible (label)));
+ show_section = TRUE;
+ }
- box = gtk_frame_new (NULL);
- gtk_widget_show (box);
- gtk_frame_set_shadow_type (GTK_FRAME (box), GTK_SHADOW_IN);
- gtk_widget_set_margin_bottom (box, 32);
- gtk_container_add (GTK_CONTAINER (box), widget);
- gtk_box_pack_start (self->power_vbox, box, FALSE, TRUE, 0);
+ if (self->has_batteries)
+ {
+ gtk_widget_show (GTK_WIDGET (self->battery_percentage_row));
- can_suspend = can_suspend_or_hibernate (self, "CanSuspend");
- can_hibernate = can_suspend_or_hibernate (self, "CanHibernate");
+ g_settings_bind (self->interface_settings, "show-battery-percentage",
+ self->battery_percentage_switch, "active",
+ G_SETTINGS_BIND_DEFAULT);
- if ((!can_hibernate && !can_suspend) ||
- g_strcmp0 (self->chassis_type, "vm") == 0 ||
- g_strcmp0 (self->chassis_type, "tablet") == 0 ||
- g_strcmp0 (self->chassis_type, "handset") == 0)
- {
- add_battery_percentage (self, GTK_LIST_BOX (widget));
- return;
+ show_section = TRUE;
}
- /* Power button row */
- row = no_prelight_row_new ();
- gtk_widget_show (row);
- box = row_box_new ();
- gtk_container_add (GTK_CONTAINER (row), box);
-
- title = row_title_new (_("Po_wer Button Behavior"), &label);
- gtk_box_pack_start (GTK_BOX (box), title, TRUE, TRUE, 0);
-
- self->power_button_combo = gtk_combo_box_text_new ();
- gtk_widget_show (self->power_button_combo);
- gtk_combo_box_set_entry_text_column (GTK_COMBO_BOX (self->power_button_combo), 0);
- model = GTK_TREE_MODEL (self->power_button_liststore);
- populate_power_button_model (model, can_suspend, can_hibernate);
- gtk_combo_box_set_model (GTK_COMBO_BOX (self->power_button_combo), model);
- button_value = g_settings_get_enum (self->gsd_settings, "power-button-action");
- set_value_for_combo (GTK_COMBO_BOX (self->power_button_combo), button_value);
- g_signal_connect_object (self->power_button_combo, "changed",
- G_CALLBACK (combo_power_button_changed_cb), self, G_CONNECT_SWAPPED);
- gtk_widget_set_valign (self->power_button_combo, GTK_ALIGN_CENTER);
- gtk_box_pack_start (GTK_BOX (box), self->power_button_combo, FALSE, TRUE, 0);
- gtk_label_set_mnemonic_widget (GTK_LABEL (label), self->power_button_combo);
- gtk_container_add (GTK_CONTAINER (widget), row);
- gtk_size_group_add_widget (self->row_sizegroup, row);
-
- add_battery_percentage (self, GTK_LIST_BOX (widget));
+ gtk_widget_set_visible (GTK_WIDGET (self->general_section), show_section);
}
static gint
@@ -1813,6 +1693,8 @@ cc_power_panel_class_init (CcPowerPanelClass *klass)
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, automatic_suspend_row);
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, battery_heading);
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, battery_listbox);
+ gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, battery_percentage_row);
+ gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, battery_percentage_switch);
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, battery_row_sizegroup);
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, battery_section);
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, battery_sizegroup);
@@ -1827,6 +1709,9 @@ cc_power_panel_class_init (CcPowerPanelClass *klass)
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, device_section);
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, dim_screen_row);
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, dim_screen_switch);
+ gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, general_heading);
+ gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, general_listbox);
+ gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, general_section);
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, idle_delay_combo);
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, kbd_brightness_row);
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, kbd_brightness_scale);
@@ -1835,13 +1720,14 @@ cc_power_panel_class_init (CcPowerPanelClass *klass)
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, main_box);
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, mobile_row);
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, mobile_switch);
+ gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, power_button_combo);
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, power_button_liststore);
+ gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, power_button_row);
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, power_profile_heading);
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, power_profile_listbox);
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, power_profile_section);
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, power_saving_heading);
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, power_saving_listbox);
- gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, power_vbox);
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, row_sizegroup);
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, suspend_on_battery_delay_combo);
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, suspend_on_battery_delay_label);
@@ -1861,6 +1747,7 @@ cc_power_panel_class_init (CcPowerPanelClass *klass)
gtk_widget_class_bind_template_callback (widget_class, idle_delay_combo_changed_cb);
gtk_widget_class_bind_template_callback (widget_class, keynav_failed_cb);
gtk_widget_class_bind_template_callback (widget_class, mobile_switch_changed_cb);
+ gtk_widget_class_bind_template_callback (widget_class, power_button_combo_changed_cb);
gtk_widget_class_bind_template_callback (widget_class, power_profiles_row_activated_cb);
gtk_widget_class_bind_template_callback (widget_class, power_saving_listbox_row_activated_cb);
gtk_widget_class_bind_template_callback (widget_class, wifi_switch_changed_cb);
@@ -1873,6 +1760,7 @@ cc_power_panel_init (CcPowerPanel *self)
g_autofree gchar *device_label = NULL;
g_autofree gchar *power_profile_label = NULL;
g_autofree gchar *power_saving_label = NULL;
+ g_autofree gchar *general_label = NULL;
guint i;
g_resources_register (cc_power_get_resource ());
@@ -1927,7 +1815,13 @@ cc_power_panel_init (CcPowerPanel *self)
NULL, NULL);
setup_power_saving (self);
- add_general_section (self);
+ general_label = g_markup_printf_escaped ("<b>%s</b>", _("Suspend & Power Button"));
+ gtk_label_set_markup (self->general_heading, general_label);
+ self->boxes_reverse = g_list_prepend (self->boxes_reverse, self->general_listbox);
+ gtk_list_box_set_header_func (self->general_listbox,
+ cc_list_box_update_header_func,
+ NULL, NULL);
+ setup_general_section (self);
self->boxes = g_list_copy (self->boxes_reverse);
self->boxes = g_list_reverse (self->boxes);
diff --git a/panels/power/cc-power-panel.ui b/panels/power/cc-power-panel.ui
index 0507fa190..ea3cf9322 100644
--- a/panels/power/cc-power-panel.ui
+++ b/panels/power/cc-power-panel.ui
@@ -710,6 +710,114 @@
</child>
</object>
</child>
+ <child>
+ <object class="GtkBox" id="general_section">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">32</property>
+ <child>
+ <object class="GtkLabel" id="general_heading">
+ <property name="visible">True</property>
+ <property name="use-markup">True</property>
+ <property name="halign">start</property>
+ <property name="margin_bottom">12</property>
+ <accessibility>
+ <relation target="general_listbox" type="label-for"/>
+ </accessibility>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame">
+ <property name="visible">True</property>
+ <property name="shadow-type">in</property>
+ <child>
+ <object class="GtkListBox" id="general_listbox">
+ <property name="visible">True</property>
+ <property name="selection-mode">none</property>
+ <signal name="keynav-failed" handler="keynav_failed_cb" object="CcPowerPanel"
swapped="yes"/>
+ <accessibility>
+ <relation target="general_heading" type="labelled-by"/>
+ </accessibility>
+ <child>
+ <object class="GtkListBoxRow" id="power_button_row">
+ <property name="visible">False</property>
+ <property name="selectable">False</property>
+ <property name="activatable">False</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="use-markup">True</property>
+ <property name="use-underline">True</property>
+ <property name="ellipsize">end</property>
+ <property name="label" translatable="yes">Po_wer Button
Behavior</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="expand">True</property>
+ <property name="xalign">0</property>
+ <property name="mnemonic_widget">power_button_combo</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="power_button_combo">
+ <property name="visible">True</property>
+ <property name="valign">center</property>
+ <property name="entry-text-column">0</property>
+ <property name="model">power_button_liststore</property>
+ <signal name="changed" handler="power_button_combo_changed_cb"
object="CcPowerPanel" swapped="yes"/>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="battery_percentage_row">
+ <property name="visible">False</property>
+ <property name="selectable">False</property>
+ <property name="activatable">False</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="use-markup">True</property>
+ <property name="use-underline">True</property>
+ <property name="ellipsize">end</property>
+ <property name="label" translatable="yes">Show Battery
_Percentage</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="expand">True</property>
+ <property name="xalign">0</property>
+ <property name="mnemonic_widget">battery_percentage_switch</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="battery_percentage_switch">
+ <property name="visible">True</property>
+ <property name="valign">center</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
</object>
</child>
</object>
@@ -753,6 +861,8 @@
<widget name="wifi_row"/>
<widget name="mobile_row"/>
<widget name="bt_row"/>
+ <widget name="power_button_row"/>
+ <widget name="battery_percentage_row"/>
</widgets>
</object>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]