You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
5102 lines
232 KiB
5102 lines
232 KiB
From 1e3569e2f6c2c418b84ea3aa6ce5f84166ec48a7 Mon Sep 17 00:00:00 2001 |
|
From: Bastien Nocera <hadess@hadess.net> |
|
Date: Wed, 31 Mar 2021 11:06:44 +0200 |
|
Subject: [PATCH 01/33] power: Fix possible assertion on startup |
|
|
|
When opening the Power panel, and if power-profiles-daemon isn't already |
|
started, we'll be autostarting it, making it send signals about all the |
|
changed properties, including "PerformanceInhibited" even if we |
|
don't have a Performance row. |
|
|
|
Ignore the property change if we don't have a row for it rather than |
|
asserting. |
|
|
|
#0 0x00007f73916bc292 in raise () from /lib64/libc.so.6 |
|
#1 0x00007f73916a58a4 in abort () from /lib64/libc.so.6 |
|
#2 0x00007f7393203ccc in g_assertion_message.cold () from /lib64/libglib-2.0.so.0 |
|
#3 0x00007f739325f22f in g_assertion_message_expr () from /lib64/libglib-2.0.so.0 |
|
#4 0x000055a4099e28ae in performance_profile_set_inhibited (self=0x55a40b37e320, self=0x55a40b37e320, performance_inhibited=<optimized out>) at ../panels/power/cc-power-panel.c:1366 |
|
#5 power_profiles_properties_changed_cb (self=0x55a40b37e320, changed_properties=<optimized out>, invalidated_properties=<optimized out>, proxy=<optimized out>) at ../panels/power/cc-power-panel.c:1425 |
|
#6 0x00007f7393332c2f in g_closure_invoke () from /lib64/libgobject-2.0.so.0 |
|
#7 0x00007f739334eea6 in signal_emit_unlocked_R () from /lib64/libgobject-2.0.so.0 |
|
|
|
1362 { |
|
1363 CcPowerProfileRow *row; |
|
1364 |
|
1365 row = self->power_profiles_row[CC_POWER_PROFILE_PERFORMANCE]; |
|
1366 g_assert (row != NULL); |
|
1367 cc_power_profile_row_set_performance_inhibited (row, performance_inhibited); |
|
1368 } |
|
--- |
|
panels/power/cc-power-panel.c | 3 ++- |
|
1 file changed, 2 insertions(+), 1 deletion(-) |
|
|
|
diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c |
|
index c9c4705da..0b8226a29 100644 |
|
--- a/panels/power/cc-power-panel.c |
|
+++ b/panels/power/cc-power-panel.c |
|
@@ -1363,7 +1363,8 @@ performance_profile_set_inhibited (CcPowerPanel *self, |
|
CcPowerProfileRow *row; |
|
|
|
row = self->power_profiles_row[CC_POWER_PROFILE_PERFORMANCE]; |
|
- g_assert (row != NULL); |
|
+ if (!row) |
|
+ return; |
|
cc_power_profile_row_set_performance_inhibited (row, performance_inhibited); |
|
} |
|
|
|
-- |
|
2.32.0 |
|
|
|
|
|
From da2248d43f519f13b57e89cdc80bbbfe346ad463 Mon Sep 17 00:00:00 2001 |
|
From: Adrien Plazas <kekun.plazas@laposte.net> |
|
Date: Thu, 7 Jan 2021 14:00:15 +0100 |
|
Subject: [PATCH 02/33] power: Simplifies keyboard navigation |
|
|
|
This drops the ability to loop through the page but significantly |
|
simplifies the code. I think this is a good tradeoff as looping is a |
|
rather unexpected behavior. |
|
--- |
|
panels/power/cc-power-panel.c | 70 ++--------------------------------- |
|
1 file changed, 4 insertions(+), 66 deletions(-) |
|
|
|
diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c |
|
index 0b8226a29..1d31a8a83 100644 |
|
--- a/panels/power/cc-power-panel.c |
|
+++ b/panels/power/cc-power-panel.c |
|
@@ -122,9 +122,6 @@ struct _CcPowerPanel |
|
gboolean has_batteries; |
|
char *chassis_type; |
|
|
|
- GList *boxes; |
|
- GList *boxes_reverse; |
|
- |
|
GDBusProxy *bt_rfkill; |
|
GDBusProxy *bt_properties; |
|
|
|
@@ -169,8 +166,6 @@ cc_power_panel_dispose (GObject *object) |
|
#ifdef HAVE_NETWORK_MANAGER |
|
g_clear_object (&self->nm_client); |
|
#endif |
|
- g_clear_pointer (&self->boxes, g_list_free); |
|
- g_clear_pointer (&self->boxes_reverse, g_list_free); |
|
if (self->iio_proxy_watch_id != 0) |
|
g_bus_unwatch_name (self->iio_proxy_watch_id); |
|
self->iio_proxy_watch_id = 0; |
|
@@ -869,60 +864,12 @@ nm_client_ready_cb (GObject *source_object, |
|
static gboolean |
|
keynav_failed_cb (CcPowerPanel *self, GtkDirectionType direction, GtkWidget *list) |
|
{ |
|
- GtkWidget *next_list = NULL; |
|
- GList *item, *boxes_list; |
|
- gdouble value, lower, upper, page; |
|
- |
|
- /* Find the list in the list of GtkListBoxes */ |
|
- if (direction == GTK_DIR_DOWN) |
|
- boxes_list = self->boxes; |
|
- else |
|
- boxes_list = self->boxes_reverse; |
|
- |
|
- item = g_list_find (boxes_list, list); |
|
- g_assert (item); |
|
- item = item->next; |
|
- while (1) |
|
- { |
|
- if (item == NULL) |
|
- item = boxes_list; |
|
- |
|
- /* Avoid looping */ |
|
- if (item->data == list) |
|
- break; |
|
- |
|
- if (gtk_widget_is_visible (item->data)) |
|
- { |
|
- next_list = item->data; |
|
- break; |
|
- } |
|
- |
|
- item = item->next; |
|
- } |
|
- |
|
- if (next_list) |
|
- { |
|
- gtk_widget_child_focus (next_list, direction); |
|
- return TRUE; |
|
- } |
|
- |
|
- value = gtk_adjustment_get_value (self->focus_adjustment); |
|
- lower = gtk_adjustment_get_lower (self->focus_adjustment); |
|
- upper = gtk_adjustment_get_upper (self->focus_adjustment); |
|
- page = gtk_adjustment_get_page_size (self->focus_adjustment); |
|
+ if (direction != GTK_DIR_UP && direction != GTK_DIR_DOWN) |
|
+ return FALSE; |
|
|
|
- if (direction == GTK_DIR_UP && value > lower) |
|
- { |
|
- gtk_adjustment_set_value (self->focus_adjustment, lower); |
|
- return TRUE; |
|
- } |
|
- else if (direction == GTK_DIR_DOWN && value < upper - page) |
|
- { |
|
- gtk_adjustment_set_value (self->focus_adjustment, upper - page); |
|
- return TRUE; |
|
- } |
|
+ direction == GTK_DIR_UP ? GTK_DIR_TAB_BACKWARD : GTK_DIR_TAB_FORWARD; |
|
|
|
- return FALSE; |
|
+ return gtk_widget_child_focus (GTK_WIDGET (self), direction); |
|
} |
|
|
|
static void |
|
@@ -1559,8 +1506,6 @@ setup_power_profiles (CcPowerPanel *self) |
|
|
|
gtk_widget_show (GTK_WIDGET (self->power_profile_section)); |
|
|
|
- self->boxes_reverse = g_list_prepend (self->boxes_reverse, self->power_profile_listbox); |
|
- |
|
props = g_variant_get_child_value (variant, 0); |
|
performance_inhibited = variant_lookup_string (props, "PerformanceInhibited"); |
|
active_profile = variant_lookup_string (props, "ActiveProfile"); |
|
@@ -1780,7 +1725,6 @@ cc_power_panel_init (CcPowerPanel *self) |
|
battery_label = g_markup_printf_escaped ("<b>%s</b>", _("Battery")); |
|
gtk_label_set_markup (self->battery_heading, battery_label); |
|
|
|
- self->boxes_reverse = g_list_prepend (self->boxes_reverse, self->battery_listbox); |
|
gtk_list_box_set_header_func (self->battery_listbox, |
|
cc_list_box_update_header_func, |
|
NULL, NULL); |
|
@@ -1790,7 +1734,6 @@ cc_power_panel_init (CcPowerPanel *self) |
|
device_label = g_markup_printf_escaped ("<b>%s</b>", _("Devices")); |
|
gtk_label_set_markup (self->device_heading, device_label); |
|
|
|
- self->boxes_reverse = g_list_prepend (self->boxes_reverse, self->device_listbox); |
|
gtk_list_box_set_header_func (self->device_listbox, |
|
cc_list_box_update_header_func, |
|
NULL, NULL); |
|
@@ -1809,7 +1752,6 @@ cc_power_panel_init (CcPowerPanel *self) |
|
|
|
power_saving_label = g_strdup_printf ("<b>%s</b>", _("Power Saving")); |
|
gtk_label_set_markup (self->power_saving_heading, power_saving_label); |
|
- self->boxes_reverse = g_list_prepend (self->boxes_reverse, self->power_saving_listbox); |
|
gtk_list_box_set_header_func (self->power_saving_listbox, |
|
cc_list_box_update_header_func, |
|
NULL, NULL); |
|
@@ -1817,15 +1759,11 @@ cc_power_panel_init (CcPowerPanel *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); |
|
- |
|
/* populate batteries */ |
|
g_signal_connect_object (self->up_client, "device-added", G_CALLBACK (up_client_device_added), self, G_CONNECT_SWAPPED); |
|
g_signal_connect_object (self->up_client, "device-removed", G_CALLBACK (up_client_device_removed), self, G_CONNECT_SWAPPED); |
|
-- |
|
2.32.0 |
|
|
|
|
|
From 25027f6c3c6928eeedb440fe2ca84412dae49ab2 Mon Sep 17 00:00:00 2001 |
|
From: Adrien Plazas <kekun.plazas@laposte.net> |
|
Date: Fri, 8 Jan 2021 16:00:25 +0100 |
|
Subject: [PATCH 03/33] power: Don't set the vadjustment |
|
|
|
This is useless as GtkScrolledwindow already does it on the viewport it |
|
creates. |
|
--- |
|
panels/power/cc-power-panel.c | 9 --------- |
|
panels/power/cc-power-panel.ui | 4 ++-- |
|
2 files changed, 2 insertions(+), 11 deletions(-) |
|
|
|
diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c |
|
index 1d31a8a83..1a8cfa969 100644 |
|
--- a/panels/power/cc-power-panel.c |
|
+++ b/panels/power/cc-power-panel.c |
|
@@ -91,8 +91,6 @@ struct _CcPowerPanel |
|
GtkListBoxRow *kbd_brightness_row; |
|
CcBrightnessScale *kbd_brightness_scale; |
|
GtkSizeGroup *level_sizegroup; |
|
- GtkScrolledWindow *main_scroll; |
|
- HdyClamp *main_box; |
|
GtkListBoxRow *mobile_row; |
|
GtkSwitch *mobile_switch; |
|
GtkComboBox *power_button_combo; |
|
@@ -136,8 +134,6 @@ struct _CcPowerPanel |
|
#ifdef HAVE_NETWORK_MANAGER |
|
NMClient *nm_client; |
|
#endif |
|
- |
|
- GtkAdjustment *focus_adjustment; |
|
}; |
|
|
|
CC_PANEL_REGISTER (CcPowerPanel, cc_power_panel) |
|
@@ -1661,8 +1657,6 @@ cc_power_panel_class_init (CcPowerPanelClass *klass) |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, kbd_brightness_row); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, kbd_brightness_scale); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, level_sizegroup); |
|
- gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, main_scroll); |
|
- 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); |
|
@@ -1775,7 +1769,4 @@ cc_power_panel_init (CcPowerPanel *self) |
|
G_CALLBACK (up_client_changed), self, G_CONNECT_SWAPPED); |
|
} |
|
up_client_changed (self); |
|
- |
|
- self->focus_adjustment = gtk_scrolled_window_get_vadjustment (self->main_scroll); |
|
- gtk_container_set_focus_vadjustment (GTK_CONTAINER (self->main_box), self->focus_adjustment); |
|
} |
|
diff --git a/panels/power/cc-power-panel.ui b/panels/power/cc-power-panel.ui |
|
index ea3cf9322..d3e200d93 100644 |
|
--- a/panels/power/cc-power-panel.ui |
|
+++ b/panels/power/cc-power-panel.ui |
|
@@ -113,12 +113,12 @@ |
|
<property name="visible">True</property> |
|
<property name="can_focus">False</property> |
|
<child> |
|
- <object class="GtkScrolledWindow" id="main_scroll"> |
|
+ <object class="GtkScrolledWindow"> |
|
<property name="visible">True</property> |
|
<property name="can_focus">False</property> |
|
<property name="hscrollbar_policy">never</property> |
|
<child> |
|
- <object class="HdyClamp" id="main_box"> |
|
+ <object class="HdyClamp"> |
|
<property name="visible">True</property> |
|
<property name="margin_top">32</property> |
|
<property name="margin_bottom">32</property> |
|
-- |
|
2.32.0 |
|
|
|
|
|
From caf3d70a7004552e0bb382a1a1220cdac9c0c1f0 Mon Sep 17 00:00:00 2001 |
|
From: Adrien Plazas <kekun.plazas@laposte.net> |
|
Date: Fri, 8 Jan 2021 16:12:56 +0100 |
|
Subject: [PATCH 04/33] power: Use HdyComboRow for the Blank Screen row |
|
|
|
This simplifies the code a bit and modernizes the UI. |
|
--- |
|
panels/power/cc-power-panel.c | 110 ++++++++++++++++++++++++++------- |
|
panels/power/cc-power-panel.ui | 88 ++------------------------ |
|
2 files changed, 92 insertions(+), 106 deletions(-) |
|
|
|
diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c |
|
index 1a8cfa969..b046b2589 100644 |
|
--- a/panels/power/cc-power-panel.c |
|
+++ b/panels/power/cc-power-panel.c |
|
@@ -73,7 +73,7 @@ struct _CcPowerPanel |
|
GtkSizeGroup *battery_row_sizegroup; |
|
GtkBox *battery_section; |
|
GtkSizeGroup *battery_sizegroup; |
|
- GtkListBoxRow *blank_screen_row; |
|
+ HdyComboRow *blank_screen_row; |
|
GtkListBoxRow *brightness_row; |
|
CcBrightnessScale *brightness_scale; |
|
GtkListBoxRow *bt_row; |
|
@@ -87,7 +87,6 @@ struct _CcPowerPanel |
|
GtkLabel *general_heading; |
|
GtkListBox *general_listbox; |
|
GtkBox *general_section; |
|
- GtkComboBox *idle_delay_combo; |
|
GtkListBoxRow *kbd_brightness_row; |
|
CcBrightnessScale *kbd_brightness_scale; |
|
GtkSizeGroup *level_sizegroup; |
|
@@ -577,6 +576,49 @@ set_value_for_combo (GtkComboBox *combo_box, gint value) |
|
gtk_combo_box_set_active_iter (combo_box, &new); |
|
} |
|
|
|
+static void |
|
+set_value_for_combo_row (HdyComboRow *combo_row, gint value) |
|
+{ |
|
+ gboolean insert = FALSE; |
|
+ guint insert_before = 0; |
|
+ guint i; |
|
+ HdyValueObject *new; |
|
+ GListModel *model; |
|
+ gint value_last = 0; |
|
+ g_autofree gchar *text = NULL; |
|
+ |
|
+ /* try to make the UI match the setting */ |
|
+ model = hdy_combo_row_get_model (combo_row); |
|
+ for (i = 0; i < g_list_model_get_n_items (model); i++) |
|
+ { |
|
+ HdyValueObject *value_object = g_list_model_get_item (model, i); |
|
+ gint value_tmp = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (value_object), "value")); |
|
+ if (value_tmp == value) |
|
+ { |
|
+ hdy_combo_row_set_selected_index (combo_row, i); |
|
+ return; |
|
+ } |
|
+ |
|
+ /* Insert before if the next value is larger or the value is lower |
|
+ * again (i.e. "Never" is zero and last). */ |
|
+ if (!insert && (value_tmp > value || value_last > value_tmp)) |
|
+ { |
|
+ insert = TRUE; |
|
+ insert_before = i; |
|
+ } |
|
+ |
|
+ value_last = value_tmp; |
|
+ } |
|
+ |
|
+ /* The value is not listed, so add it at the best point (or the end). */ |
|
+ text = cc_util_time_to_string_text (value * 1000); |
|
+ new = hdy_value_object_new_string (text); |
|
+ g_object_set_data (G_OBJECT (new), "value", |
|
+ GUINT_TO_POINTER (value)); |
|
+ g_list_store_insert (G_LIST_STORE (model), insert_before, new); |
|
+ hdy_combo_row_set_selected_index (combo_row, insert_before); |
|
+} |
|
+ |
|
static void |
|
set_ac_battery_ui_mode (CcPowerPanel *self) |
|
{ |
|
@@ -869,25 +911,18 @@ keynav_failed_cb (CcPowerPanel *self, GtkDirectionType direction, GtkWidget *lis |
|
} |
|
|
|
static void |
|
-idle_delay_combo_changed_cb (CcPowerPanel *self) |
|
+blank_screen_row_changed_cb (CcPowerPanel *self) |
|
{ |
|
- GtkTreeIter iter; |
|
- GtkTreeModel *model; |
|
+ GListModel *model; |
|
+ gint selected_index; |
|
+ HdyValueObject *value_object; |
|
gint value; |
|
- gboolean ret; |
|
|
|
- /* no selection */ |
|
- ret = gtk_combo_box_get_active_iter (self->idle_delay_combo, &iter); |
|
- if (!ret) |
|
- return; |
|
+ model = hdy_combo_row_get_model (self->blank_screen_row); |
|
+ selected_index = hdy_combo_row_get_selected_index (self->blank_screen_row); |
|
+ value_object = g_list_model_get_item (model, selected_index); |
|
+ value = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (value_object), "value")); |
|
|
|
- /* get entry */ |
|
- model = gtk_combo_box_get_model (self->idle_delay_combo); |
|
- gtk_tree_model_get (model, &iter, |
|
- 1, &value, |
|
- -1); |
|
- |
|
- /* set both keys */ |
|
g_settings_set_uint (self->session_settings, "idle-delay", value); |
|
} |
|
|
|
@@ -1171,6 +1206,37 @@ has_kbd_brightness_cb (CcPowerPanel *self, |
|
gtk_widget_set_visible (GTK_WIDGET (self->kbd_brightness_row), has_brightness); |
|
} |
|
|
|
+static void |
|
+populate_blank_screen_row (HdyComboRow *combo_row) |
|
+{ |
|
+ g_autoptr (GListStore) list_store = g_list_store_new (HDY_TYPE_VALUE_OBJECT); |
|
+ gint minutes[] = { 1, 2, 3, 4, 5, 8, 10, 12, 15 }; |
|
+ guint i; |
|
+ g_autoptr (HdyValueObject) never_value_object = NULL; |
|
+ |
|
+ for (i = 0; i < G_N_ELEMENTS (minutes); i++) |
|
+ { |
|
+ gchar *text = NULL; |
|
+ g_autoptr (HdyValueObject) value_object = NULL; |
|
+ |
|
+ /* Translators: Option for "Blank Screen" in "Power" panel */ |
|
+ text = g_strdup_printf (g_dngettext (GETTEXT_PACKAGE, "%d minute", "%d minutes", minutes[i]), minutes[i]); |
|
+ value_object = hdy_value_object_new_take_string (text); |
|
+ |
|
+ g_object_set_data (G_OBJECT (value_object), "value", GUINT_TO_POINTER (minutes[i] * 60)); |
|
+ g_list_store_append (list_store, value_object); |
|
+ } |
|
+ |
|
+ never_value_object = hdy_value_object_new_string (C_("Idle time", "Never")); |
|
+ g_object_set_data (G_OBJECT (never_value_object), "value", GUINT_TO_POINTER (0)); |
|
+ g_list_store_append (list_store, never_value_object); |
|
+ |
|
+ hdy_combo_row_bind_name_model (combo_row, |
|
+ G_LIST_MODEL (list_store), |
|
+ (HdyComboRowGetNameFunc) hdy_value_object_dup_string, |
|
+ NULL, NULL); |
|
+} |
|
+ |
|
static void |
|
setup_power_saving (CcPowerPanel *self) |
|
{ |
|
@@ -1191,10 +1257,11 @@ setup_power_saving (CcPowerPanel *self) |
|
self->dim_screen_switch, "active", |
|
G_SETTINGS_BIND_DEFAULT); |
|
|
|
+ g_signal_handlers_block_by_func (self->blank_screen_row, blank_screen_row_changed_cb, self); |
|
+ populate_blank_screen_row (self->blank_screen_row); |
|
value = g_settings_get_uint (self->session_settings, "idle-delay"); |
|
- g_signal_handlers_block_by_func (self->idle_delay_combo, idle_delay_combo_changed_cb, self); |
|
- set_value_for_combo (self->idle_delay_combo, value); |
|
- g_signal_handlers_unblock_by_func (self->idle_delay_combo, idle_delay_combo_changed_cb, self); |
|
+ set_value_for_combo_row (self->blank_screen_row, value); |
|
+ g_signal_handlers_unblock_by_func (self->blank_screen_row, blank_screen_row_changed_cb, self); |
|
|
|
/* The default values for these settings are unfortunate for us; |
|
* timeout == 0, action == suspend means 'do nothing' - just |
|
@@ -1653,7 +1720,6 @@ cc_power_panel_class_init (CcPowerPanelClass *klass) |
|
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); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, level_sizegroup); |
|
@@ -1683,7 +1749,7 @@ cc_power_panel_class_init (CcPowerPanelClass *klass) |
|
gtk_widget_class_bind_template_callback (widget_class, bt_switch_changed_cb); |
|
gtk_widget_class_bind_template_callback (widget_class, has_brightness_cb); |
|
gtk_widget_class_bind_template_callback (widget_class, has_kbd_brightness_cb); |
|
- gtk_widget_class_bind_template_callback (widget_class, idle_delay_combo_changed_cb); |
|
+ gtk_widget_class_bind_template_callback (widget_class, blank_screen_row_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); |
|
diff --git a/panels/power/cc-power-panel.ui b/panels/power/cc-power-panel.ui |
|
index d3e200d93..a9bb39b77 100644 |
|
--- a/panels/power/cc-power-panel.ui |
|
+++ b/panels/power/cc-power-panel.ui |
|
@@ -51,56 +51,6 @@ |
|
</row> |
|
</data> |
|
</object> |
|
- <object class="GtkListStore" id="idle_time_liststore"> |
|
- <columns> |
|
- <!-- column-name name --> |
|
- <column type="gchararray"/> |
|
- <!-- column-name value --> |
|
- <column type="gint"/> |
|
- </columns> |
|
- <data> |
|
- <row> |
|
- <col id="0" translatable="yes" context="blank_screen" comments="Translators: Option for "Blank screen" in "Power" panel.">1 minute</col> |
|
- <col id="1">60</col> |
|
- </row> |
|
- <row> |
|
- <col id="0" translatable="yes" context="blank_screen" comments="Translators: Option for "Blank screen" in "Power" panel.">2 minutes</col> |
|
- <col id="1">120</col> |
|
- </row> |
|
- <row> |
|
- <col id="0" translatable="yes" context="blank_screen" comments="Translators: Option for "Blank screen" in "Power" panel.">3 minutes</col> |
|
- <col id="1">180</col> |
|
- </row> |
|
- <row> |
|
- <col id="0" translatable="yes" context="blank_screen" comments="Translators: Option for "Blank screen" in "Power" panel.">4 minutes</col> |
|
- <col id="1">240</col> |
|
- </row> |
|
- <row> |
|
- <col id="0" translatable="yes" context="blank_screen" comments="Translators: Option for "Blank screen" in "Power" panel.">5 minutes</col> |
|
- <col id="1">300</col> |
|
- </row> |
|
- <row> |
|
- <col id="0" translatable="yes" context="blank_screen" comments="Translators: Option for "Blank screen" in "Power" panel.">8 minutes</col> |
|
- <col id="1">480</col> |
|
- </row> |
|
- <row> |
|
- <col id="0" translatable="yes" context="blank_screen" comments="Translators: Option for "Blank screen" in "Power" panel.">10 minutes</col> |
|
- <col id="1">600</col> |
|
- </row> |
|
- <row> |
|
- <col id="0" translatable="yes" context="blank_screen" comments="Translators: Option for "Blank screen" in "Power" panel.">12 minutes</col> |
|
- <col id="1">720</col> |
|
- </row> |
|
- <row> |
|
- <col id="0" translatable="yes" context="blank_screen" comments="Translators: Option for "Blank screen" in "Power" panel.">15 minutes</col> |
|
- <col id="1">900</col> |
|
- </row> |
|
- <row> |
|
- <col id="0" translatable="yes" context="blank_screen" comments="Translators: Option for "Blank screen" in "Power" panel.">Never</col> |
|
- <col id="1">0</col> |
|
- </row> |
|
- </data> |
|
- </object> |
|
<object class="GtkListStore" id="power_button_liststore"> |
|
<columns> |
|
<!-- column-name name --> |
|
@@ -447,41 +397,11 @@ |
|
</object> |
|
</child> |
|
<child> |
|
- <object class="GtkListBoxRow" id="blank_screen_row"> |
|
+ <object class="HdyComboRow" id="blank_screen_row"> |
|
<property name="visible">True</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">_Blank Screen</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">idle_delay_combo</property> |
|
- </object> |
|
- </child> |
|
- <child> |
|
- <object class="GtkComboBoxText" id="idle_delay_combo"> |
|
- <property name="visible">True</property> |
|
- <property name="valign">center</property> |
|
- <property name="entry-text-column">0</property> |
|
- <property name="model">idle_time_liststore</property> |
|
- <signal name="changed" handler="idle_delay_combo_changed_cb" object="CcPowerPanel" swapped="yes"/> |
|
- </object> |
|
- </child> |
|
- </object> |
|
- </child> |
|
+ <property name="title" translatable="yes">_Blank Screen</property> |
|
+ <property name="use_underline">True</property> |
|
+ <signal name="notify::selected-index" handler="blank_screen_row_changed_cb" object="CcPowerPanel" swapped="yes"/> |
|
</object> |
|
</child> |
|
<child> |
|
-- |
|
2.32.0 |
|
|
|
|
|
From 7dbe681401f3f487f1e752a0569cf3d743a74187 Mon Sep 17 00:00:00 2001 |
|
From: Adrien Plazas <kekun.plazas@laposte.net> |
|
Date: Fri, 8 Jan 2021 16:17:42 +0100 |
|
Subject: [PATCH 05/33] power: Use HdyComboRow for the Power Button Behavior |
|
row |
|
|
|
This simplifies the code a bit and modernizes the UI. |
|
--- |
|
panels/power/cc-power-panel.c | 71 ++++++++++++++++++---------------- |
|
panels/power/cc-power-panel.ui | 46 ++-------------------- |
|
2 files changed, 42 insertions(+), 75 deletions(-) |
|
|
|
diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c |
|
index b046b2589..ea979cfc7 100644 |
|
--- a/panels/power/cc-power-panel.c |
|
+++ b/panels/power/cc-power-panel.c |
|
@@ -92,9 +92,7 @@ struct _CcPowerPanel |
|
GtkSizeGroup *level_sizegroup; |
|
GtkListBoxRow *mobile_row; |
|
GtkSwitch *mobile_switch; |
|
- GtkComboBox *power_button_combo; |
|
- GtkListStore *power_button_liststore; |
|
- GtkListBoxRow *power_button_row; |
|
+ HdyComboRow *power_button_row; |
|
GtkLabel *power_profile_heading; |
|
GtkListBox *power_profile_listbox; |
|
GtkBox *power_profile_section; |
|
@@ -927,25 +925,18 @@ blank_screen_row_changed_cb (CcPowerPanel *self) |
|
} |
|
|
|
static void |
|
-power_button_combo_changed_cb (CcPowerPanel *self) |
|
+power_button_row_changed_cb (CcPowerPanel *self) |
|
{ |
|
- GtkTreeIter iter; |
|
- GtkTreeModel *model; |
|
+ GListModel *model; |
|
+ gint selected_index; |
|
+ HdyValueObject *value_object; |
|
gint value; |
|
- gboolean ret; |
|
|
|
- /* no selection */ |
|
- ret = gtk_combo_box_get_active_iter (GTK_COMBO_BOX (self->power_button_combo), &iter); |
|
- if (!ret) |
|
- return; |
|
- |
|
- /* get entry */ |
|
- model = gtk_combo_box_get_model (GTK_COMBO_BOX (self->power_button_combo)); |
|
- gtk_tree_model_get (model, &iter, |
|
- 1, &value, |
|
- -1); |
|
+ model = hdy_combo_row_get_model (self->power_button_row); |
|
+ selected_index = hdy_combo_row_get_selected_index (self->power_button_row); |
|
+ value_object = g_list_model_get_item (model, selected_index); |
|
+ value = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (value_object), "value")); |
|
|
|
- /* set both keys */ |
|
g_settings_set_enum (self->gsd_settings, "power-button-action", value); |
|
} |
|
|
|
@@ -1048,10 +1039,11 @@ set_sleep_type (const GValue *value, |
|
} |
|
|
|
static void |
|
-populate_power_button_model (GtkTreeModel *model, |
|
- gboolean can_suspend, |
|
- gboolean can_hibernate) |
|
+populate_power_button_row (HdyComboRow *combo_row, |
|
+ gboolean can_suspend, |
|
+ gboolean can_hibernate) |
|
{ |
|
+ g_autoptr (GListStore) list_store = NULL; |
|
struct { |
|
char *name; |
|
GsdPowerButtonActionType value; |
|
@@ -1063,20 +1055,28 @@ populate_power_button_model (GtkTreeModel *model, |
|
}; |
|
guint i; |
|
|
|
+ list_store = g_list_store_new (HDY_TYPE_VALUE_OBJECT); |
|
for (i = 0; i < G_N_ELEMENTS (actions); i++) |
|
{ |
|
+ g_autoptr (HdyValueObject) value_object = NULL; |
|
+ |
|
if (!can_suspend && actions[i].value == GSD_POWER_BUTTON_ACTION_SUSPEND) |
|
continue; |
|
|
|
if (!can_hibernate && actions[i].value == GSD_POWER_BUTTON_ACTION_HIBERNATE) |
|
continue; |
|
|
|
- gtk_list_store_insert_with_values (GTK_LIST_STORE (model), |
|
- NULL, -1, |
|
- 0, _(actions[i].name), |
|
- 1, actions[i].value, |
|
- -1); |
|
+ value_object = hdy_value_object_new_string (actions[i].name); |
|
+ g_object_set_data (G_OBJECT (value_object), |
|
+ "value", |
|
+ GUINT_TO_POINTER (actions[i].value)); |
|
+ g_list_store_append (list_store, value_object); |
|
} |
|
+ |
|
+ hdy_combo_row_bind_name_model (combo_row, |
|
+ G_LIST_MODEL (list_store), |
|
+ (HdyComboRowGetNameFunc) hdy_value_object_dup_string, |
|
+ NULL, NULL); |
|
} |
|
|
|
#define NEVER 0 |
|
@@ -1635,10 +1635,17 @@ setup_general_section (CcPowerPanel *self) |
|
{ |
|
gtk_widget_show (GTK_WIDGET (self->power_button_row)); |
|
|
|
- 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); |
|
+ g_signal_handlers_block_by_func (self->power_button_row, |
|
+ power_button_row_changed_cb, |
|
+ self); |
|
+ populate_power_button_row (self->power_button_row, |
|
+ can_suspend, |
|
+ can_hibernate); |
|
+ set_value_for_combo_row (self->power_button_row, |
|
+ g_settings_get_enum (self->gsd_settings, "power-button-action")); |
|
+ g_signal_handlers_unblock_by_func (self->power_button_row, |
|
+ power_button_row_changed_cb, |
|
+ self); |
|
|
|
show_section = TRUE; |
|
} |
|
@@ -1725,8 +1732,6 @@ cc_power_panel_class_init (CcPowerPanelClass *klass) |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, level_sizegroup); |
|
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); |
|
@@ -1752,7 +1757,7 @@ cc_power_panel_class_init (CcPowerPanelClass *klass) |
|
gtk_widget_class_bind_template_callback (widget_class, blank_screen_row_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_button_row_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); |
|
diff --git a/panels/power/cc-power-panel.ui b/panels/power/cc-power-panel.ui |
|
index a9bb39b77..18fc0a8ac 100644 |
|
--- a/panels/power/cc-power-panel.ui |
|
+++ b/panels/power/cc-power-panel.ui |
|
@@ -51,14 +51,6 @@ |
|
</row> |
|
</data> |
|
</object> |
|
- <object class="GtkListStore" id="power_button_liststore"> |
|
- <columns> |
|
- <!-- column-name name --> |
|
- <column type="gchararray"/> |
|
- <!-- column-name value --> |
|
- <column type="gint"/> |
|
- </columns> |
|
- </object> |
|
<template class="CcPowerPanel" parent="CcPanel"> |
|
<property name="visible">True</property> |
|
<property name="can_focus">False</property> |
|
@@ -660,41 +652,11 @@ |
|
<relation target="general_heading" type="labelled-by"/> |
|
</accessibility> |
|
<child> |
|
- <object class="GtkListBoxRow" id="power_button_row"> |
|
+ <object class="HdyComboRow" 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> |
|
+ <property name="title" translatable="yes">Po_wer Button Behavior</property> |
|
+ <property name="use_underline">True</property> |
|
+ <signal name="notify::selected-index" handler="power_button_row_changed_cb" object="CcPowerPanel" swapped="yes"/> |
|
</object> |
|
</child> |
|
<child> |
|
-- |
|
2.32.0 |
|
|
|
|
|
From db131378d3a980dc243d704a91cf995d40df356b Mon Sep 17 00:00:00 2001 |
|
From: Adrien Plazas <kekun.plazas@laposte.net> |
|
Date: Thu, 7 Jan 2021 10:59:00 +0100 |
|
Subject: [PATCH 06/33] power: Use HdyActionRow to simplify the code |
|
|
|
--- |
|
panels/power/cc-power-panel.c | 27 +-- |
|
panels/power/cc-power-panel.ui | 430 +++++---------------------------- |
|
2 files changed, 72 insertions(+), 385 deletions(-) |
|
|
|
diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c |
|
index ea979cfc7..22d91c564 100644 |
|
--- a/panels/power/cc-power-panel.c |
|
+++ b/panels/power/cc-power-panel.c |
|
@@ -68,17 +68,15 @@ struct _CcPowerPanel |
|
GtkListBoxRow *automatic_suspend_row; |
|
GtkLabel *battery_heading; |
|
GtkListBox *battery_listbox; |
|
- GtkListBoxRow *battery_percentage_row; |
|
+ HdyActionRow *battery_percentage_row; |
|
GtkSwitch *battery_percentage_switch; |
|
GtkSizeGroup *battery_row_sizegroup; |
|
GtkBox *battery_section; |
|
- GtkSizeGroup *battery_sizegroup; |
|
HdyComboRow *blank_screen_row; |
|
GtkListBoxRow *brightness_row; |
|
CcBrightnessScale *brightness_scale; |
|
GtkListBoxRow *bt_row; |
|
GtkSwitch *bt_switch; |
|
- GtkSizeGroup *charge_sizegroup; |
|
GtkLabel *device_heading; |
|
GtkListBox *device_listbox; |
|
GtkBox *device_section; |
|
@@ -234,8 +232,6 @@ add_battery (CcPowerPanel *panel, UpDevice *device, gboolean primary) |
|
CcBatteryRow *row = cc_battery_row_new (device, primary); |
|
cc_battery_row_set_level_sizegroup (row, panel->level_sizegroup); |
|
cc_battery_row_set_row_sizegroup (row, panel->battery_row_sizegroup); |
|
- cc_battery_row_set_charge_sizegroup (row, panel->charge_sizegroup); |
|
- cc_battery_row_set_battery_sizegroup (row, panel->battery_sizegroup); |
|
|
|
gtk_container_add (GTK_CONTAINER (panel->battery_listbox), GTK_WIDGET (row)); |
|
gtk_widget_set_visible (GTK_WIDGET (panel->battery_section), TRUE); |
|
@@ -247,8 +243,6 @@ add_device (CcPowerPanel *self, UpDevice *device) |
|
CcBatteryRow *row = cc_battery_row_new (device, FALSE); |
|
cc_battery_row_set_level_sizegroup (row, self->level_sizegroup); |
|
cc_battery_row_set_row_sizegroup (row, self->row_sizegroup); |
|
- cc_battery_row_set_charge_sizegroup (row, self->charge_sizegroup); |
|
- cc_battery_row_set_battery_sizegroup (row, self->battery_sizegroup); |
|
|
|
gtk_container_add (GTK_CONTAINER (self->device_listbox), GTK_WIDGET (row)); |
|
gtk_widget_set_visible (GTK_WIDGET (self->device_section), TRUE); |
|
@@ -986,23 +980,20 @@ iio_proxy_vanished_cb (GDBusConnection *connection, |
|
} |
|
|
|
static void |
|
-power_saving_listbox_row_activated_cb (CcPowerPanel *self, GtkListBoxRow *row) |
|
+automatic_suspend_row_activated_cb (CcPowerPanel *self) |
|
{ |
|
GtkWidget *toplevel; |
|
|
|
- if (row == self->automatic_suspend_row) |
|
- { |
|
- toplevel = gtk_widget_get_toplevel (GTK_WIDGET (self)); |
|
- gtk_window_set_transient_for (GTK_WINDOW (self->automatic_suspend_dialog), GTK_WINDOW (toplevel)); |
|
- gtk_window_set_modal (GTK_WINDOW (self->automatic_suspend_dialog), TRUE); |
|
- gtk_window_present (GTK_WINDOW (self->automatic_suspend_dialog)); |
|
- } |
|
+ toplevel = gtk_widget_get_toplevel (GTK_WIDGET (self)); |
|
+ gtk_window_set_transient_for (GTK_WINDOW (self->automatic_suspend_dialog), GTK_WINDOW (toplevel)); |
|
+ gtk_window_set_modal (GTK_WINDOW (self->automatic_suspend_dialog), TRUE); |
|
+ gtk_window_present (GTK_WINDOW (self->automatic_suspend_dialog)); |
|
} |
|
|
|
static gboolean |
|
automatic_suspend_label_mnemonic_activate_cb (CcPowerPanel *self) |
|
{ |
|
- power_saving_listbox_row_activated_cb (self, self->automatic_suspend_row); |
|
+ automatic_suspend_row_activated_cb (self); |
|
return TRUE; |
|
} |
|
|
|
@@ -1712,13 +1703,11 @@ cc_power_panel_class_init (CcPowerPanelClass *klass) |
|
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); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, blank_screen_row); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, brightness_row); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, brightness_scale); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, bt_row); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, bt_switch); |
|
- gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, charge_sizegroup); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, device_heading); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, device_listbox); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, device_section); |
|
@@ -1759,7 +1748,7 @@ cc_power_panel_class_init (CcPowerPanelClass *klass) |
|
gtk_widget_class_bind_template_callback (widget_class, mobile_switch_changed_cb); |
|
gtk_widget_class_bind_template_callback (widget_class, power_button_row_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, automatic_suspend_row_activated_cb); |
|
gtk_widget_class_bind_template_callback (widget_class, wifi_switch_changed_cb); |
|
} |
|
|
|
diff --git a/panels/power/cc-power-panel.ui b/panels/power/cc-power-panel.ui |
|
index 18fc0a8ac..12df3aa4a 100644 |
|
--- a/panels/power/cc-power-panel.ui |
|
+++ b/panels/power/cc-power-panel.ui |
|
@@ -220,170 +220,59 @@ |
|
<relation target="power_saving_heading" type="labelled-by"/> |
|
</accessibility> |
|
<child> |
|
- <object class="GtkListBoxRow" id="brightness_row"> |
|
+ <object class="HdyActionRow" id="brightness_row"> |
|
<property name="visible">True</property> |
|
- <property name="selectable">False</property> |
|
- <property name="activatable">False</property> |
|
+ <property name="title" translatable="yes">_Screen Brightness</property> |
|
+ <property name="use_underline">True</property> |
|
<child> |
|
- <object class="GtkBox"> |
|
+ <object class="CcBrightnessScale" id="brightness_scale"> |
|
<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" id="brightness_label"> |
|
- <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">_Screen Brightness</property> |
|
- <property name="margin-top">6</property> |
|
- <property name="margin-bottom">6</property> |
|
- <property name="xalign">0</property> |
|
- <property name="mnemonic_widget">brightness_scale</property> |
|
- </object> |
|
- </child> |
|
- <child> |
|
- <object class="GtkBox"> |
|
- <property name="visible">True</property> |
|
- <property name="spacing">12</property> |
|
- <property name="expand">True</property> |
|
- <child> |
|
- <object class="GtkLabel" id="brightness_spacer"> |
|
- <property name="visible">True</property> |
|
- </object> |
|
- </child> |
|
- <child> |
|
- <object class="CcBrightnessScale" id="brightness_scale"> |
|
- <property name="visible">True</property> |
|
- <property name="valign">center</property> |
|
- <property name="expand">True</property> |
|
- <property name="device">screen</property> |
|
- <signal name="notify::has-brightness" handler="has_brightness_cb" object="CcPowerPanel" swapped="yes"/> |
|
- </object> |
|
- </child> |
|
- </object> |
|
- </child> |
|
+ <property name="valign">center</property> |
|
+ <property name="expand">True</property> |
|
+ <property name="device">screen</property> |
|
+ <signal name="notify::has-brightness" handler="has_brightness_cb" object="CcPowerPanel" swapped="yes"/> |
|
</object> |
|
</child> |
|
</object> |
|
</child> |
|
<child> |
|
- <object class="GtkListBoxRow" id="als_row"> |
|
+ <object class="HdyActionRow" id="als_row"> |
|
<property name="visible">True</property> |
|
- <property name="selectable">False</property> |
|
- <property name="activatable">False</property> |
|
+ <property name="title" translatable="yes">Automatic Brightness</property> |
|
<child> |
|
- <object class="GtkBox"> |
|
+ <object class="GtkSwitch" id="als_switch"> |
|
<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">Automatic Brightness</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">als_switch</property> |
|
- </object> |
|
- </child> |
|
- <child> |
|
- <object class="GtkSwitch" id="als_switch"> |
|
- <property name="visible">True</property> |
|
- <property name="valign">center</property> |
|
- <signal name="notify::active" handler="als_switch_changed_cb" object="CcPowerPanel" swapped="yes"/> |
|
- </object> |
|
- </child> |
|
+ <property name="valign">center</property> |
|
+ <signal name="notify::active" handler="als_switch_changed_cb" object="CcPowerPanel" swapped="yes"/> |
|
</object> |
|
</child> |
|
</object> |
|
</child> |
|
<child> |
|
- <object class="GtkListBoxRow" id="kbd_brightness_row"> |
|
+ <object class="HdyActionRow" id="kbd_brightness_row"> |
|
<property name="visible">True</property> |
|
- <property name="selectable">False</property> |
|
- <property name="activatable">False</property> |
|
+ <property name="title" translatable="yes">_Keyboard Brightness</property> |
|
+ <property name="use_underline">True</property> |
|
<child> |
|
- <object class="GtkBox"> |
|
+ <object class="CcBrightnessScale" id="kbd_brightness_scale"> |
|
<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" id="kbd_brightness_label"> |
|
- <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">_Keyboard Brightness</property> |
|
- <property name="margin-top">6</property> |
|
- <property name="margin-bottom">6</property> |
|
- <property name="xalign">0</property> |
|
- <property name="mnemonic_widget">kbd_brightness_scale</property> |
|
- </object> |
|
- </child> |
|
- <child> |
|
- <object class="GtkBox"> |
|
- <property name="visible">True</property> |
|
- <property name="spacing">12</property> |
|
- <property name="expand">True</property> |
|
- <child> |
|
- <object class="GtkLabel" id="kbd_brightness_spacer"> |
|
- <property name="visible">True</property> |
|
- </object> |
|
- </child> |
|
- <child> |
|
- <object class="CcBrightnessScale" id="kbd_brightness_scale"> |
|
- <property name="visible">True</property> |
|
- <property name="valign">center</property> |
|
- <property name="expand">True</property> |
|
- <property name="device">kbd</property> |
|
- <signal name="notify::has-brightness" handler="has_kbd_brightness_cb" object="CcPowerPanel" swapped="yes"/> |
|
- </object> |
|
- </child> |
|
- </object> |
|
- </child> |
|
+ <property name="valign">center</property> |
|
+ <property name="expand">True</property> |
|
+ <property name="device">kbd</property> |
|
+ <signal name="notify::has-brightness" handler="has_kbd_brightness_cb" object="CcPowerPanel" swapped="yes"/> |
|
</object> |
|
</child> |
|
</object> |
|
</child> |
|
<child> |
|
- <object class="GtkListBoxRow" id="dim_screen_row"> |
|
+ <object class="HdyActionRow" id="dim_screen_row"> |
|
<property name="visible">True</property> |
|
- <property name="selectable">False</property> |
|
- <property name="activatable">False</property> |
|
+ <property name="title" translatable="yes">Dim Screen When Inactive</property> |
|
+ <property name="activatable_widget">dim_screen_switch</property> |
|
<child> |
|
- <object class="GtkBox"> |
|
+ <object class="GtkSwitch" id="dim_screen_switch"> |
|
<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">Dim Screen When Inactive</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">dim_screen_switch</property> |
|
- </object> |
|
- </child> |
|
- <child> |
|
- <object class="GtkSwitch" id="dim_screen_switch"> |
|
- <property name="visible">True</property> |
|
- <property name="valign">center</property> |
|
- </object> |
|
- </child> |
|
+ <property name="valign">center</property> |
|
</object> |
|
</child> |
|
</object> |
|
@@ -397,221 +286,65 @@ |
|
</object> |
|
</child> |
|
<child> |
|
- <object class="GtkListBoxRow" id="automatic_suspend_row"> |
|
+ <object class="HdyActionRow" id="automatic_suspend_row"> |
|
<property name="visible">False</property> |
|
+ <property name="title" translatable="yes">_Automatic Suspend</property> |
|
+ <property name="use_underline">True</property> |
|
+ <property name="activatable">True</property> |
|
+ <signal name="activated" handler="automatic_suspend_row_activated_cb" swapped="yes"/> |
|
<child> |
|
- <object class="GtkBox"> |
|
+ <object class="GtkLabel" id="automatic_suspend_label"> |
|
<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">_Automatic Suspend</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">automatic_suspend_label</property> |
|
- </object> |
|
- </child> |
|
- <child> |
|
- <object class="GtkLabel" id="automatic_suspend_label"> |
|
- <property name="visible">True</property> |
|
- <property name="halign">end</property> |
|
- <signal name="mnemonic-activate" handler="automatic_suspend_label_mnemonic_activate_cb" object="CcPowerPanel" swapped="yes"/> |
|
- </object> |
|
- </child> |
|
+ <property name="halign">end</property> |
|
+ <signal name="mnemonic-activate" handler="automatic_suspend_label_mnemonic_activate_cb" object="CcPowerPanel" swapped="yes"/> |
|
</object> |
|
</child> |
|
</object> |
|
</child> |
|
<child> |
|
- <object class="GtkListBoxRow" id="wifi_row"> |
|
+ <object class="HdyActionRow" id="wifi_row"> |
|
<property name="visible">False</property> |
|
- <property name="selectable">False</property> |
|
- <property name="activatable">False</property> |
|
+ <property name="title" translatable="yes">_Wi-Fi</property> |
|
+ <property name="subtitle" translatable="yes">Wi-Fi can be turned off to save power.</property> |
|
+ <property name="use_underline">True</property> |
|
+ <property name="activatable_widget">wifi_switch</property> |
|
<child> |
|
- <object class="GtkBox"> |
|
+ <object class="GtkSwitch" id="wifi_switch"> |
|
<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="GtkBox"> |
|
- <property name="visible">True</property> |
|
- <property name="orientation">vertical</property> |
|
- <property name="margin-top">6</property> |
|
- <property name="margin-bottom">6</property> |
|
- <property name="spacing">4</property> |
|
- <property name="valign">center</property> |
|
- <property name="expand">True</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">_Wi-Fi</property> |
|
- <property name="halign">start</property> |
|
- <property name="xalign">0</property> |
|
- <property name="mnemonic_widget">wifi_switch</property> |
|
- </object> |
|
- </child> |
|
- <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">Wi-Fi can be turned off to save power.</property> |
|
- <property name="halign">start</property> |
|
- <property name="xalign">0</property> |
|
- <attributes> |
|
- <attribute name="scale" value="0.9"/> |
|
- </attributes> |
|
- <style> |
|
- <class name="dim-label"/> |
|
- </style> |
|
- </object> |
|
- </child> |
|
- </object> |
|
- </child> |
|
- <child> |
|
- <object class="GtkSwitch" id="wifi_switch"> |
|
- <property name="visible">True</property> |
|
- <property name="valign">center</property> |
|
- <signal name="notify::active" handler="wifi_switch_changed_cb" object="CcPowerPanel" swapped="yes"/> |
|
- </object> |
|
- </child> |
|
+ <property name="valign">center</property> |
|
+ <signal name="notify::active" handler="wifi_switch_changed_cb" object="CcPowerPanel" swapped="yes"/> |
|
</object> |
|
</child> |
|
</object> |
|
</child> |
|
<child> |
|
- <object class="GtkListBoxRow" id="mobile_row"> |
|
+ <object class="HdyActionRow" id="mobile_row"> |
|
<property name="visible">False</property> |
|
- <property name="selectable">False</property> |
|
- <property name="activatable">False</property> |
|
+ <property name="title" translatable="yes">_Mobile Broadband</property> |
|
+ <property name="subtitle" translatable="yes">Mobile broadband (LTE, 4G, 3G, etc.) can be turned off to save power.</property> |
|
+ <property name="use_underline">True</property> |
|
+ <property name="activatable_widget">mobile_switch</property> |
|
<child> |
|
- <object class="GtkBox"> |
|
+ <object class="GtkSwitch" id="mobile_switch"> |
|
<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="GtkBox"> |
|
- <property name="visible">True</property> |
|
- <property name="orientation">vertical</property> |
|
- <property name="margin-top">6</property> |
|
- <property name="margin-bottom">6</property> |
|
- <property name="spacing">4</property> |
|
- <property name="valign">center</property> |
|
- <property name="expand">True</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">_Mobile Broadband</property> |
|
- <property name="halign">start</property> |
|
- <property name="xalign">0</property> |
|
- <property name="mnemonic_widget">mobile_switch</property> |
|
- </object> |
|
- </child> |
|
- <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">Mobile broadband (LTE, 4G, 3G, etc.) can be turned off to save power.</property> |
|
- <property name="halign">start</property> |
|
- <property name="xalign">0</property> |
|
- <attributes> |
|
- <attribute name="scale" value="0.9"/> |
|
- </attributes> |
|
- <style> |
|
- <class name="dim-label"/> |
|
- </style> |
|
- </object> |
|
- </child> |
|
- </object> |
|
- </child> |
|
- <child> |
|
- <object class="GtkSwitch" id="mobile_switch"> |
|
- <property name="visible">True</property> |
|
- <property name="valign">center</property> |
|
- <signal name="notify::active" handler="mobile_switch_changed_cb" object="CcPowerPanel" swapped="yes"/> |
|
- </object> |
|
- </child> |
|
+ <property name="valign">center</property> |
|
+ <signal name="notify::active" handler="mobile_switch_changed_cb" object="CcPowerPanel" swapped="yes"/> |
|
</object> |
|
</child> |
|
</object> |
|
</child> |
|
<child> |
|
- <object class="GtkListBoxRow" id="bt_row"> |
|
+ <object class="HdyActionRow" id="bt_row"> |
|
<property name="visible">False</property> |
|
- <property name="selectable">False</property> |
|
- <property name="activatable">False</property> |
|
+ <property name="title" translatable="yes">_Bluetooth</property> |
|
+ <property name="subtitle" translatable="yes">Bluetooth can be turned off to save power.</property> |
|
+ <property name="use_underline">True</property> |
|
+ <property name="activatable_widget">bt_switch</property> |
|
<child> |
|
- <object class="GtkBox"> |
|
+ <object class="GtkSwitch" id="bt_switch"> |
|
<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="GtkBox"> |
|
- <property name="visible">True</property> |
|
- <property name="orientation">vertical</property> |
|
- <property name="margin-top">6</property> |
|
- <property name="margin-bottom">6</property> |
|
- <property name="spacing">4</property> |
|
- <property name="valign">center</property> |
|
- <property name="expand">True</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">_Bluetooth</property> |
|
- <property name="halign">start</property> |
|
- <property name="xalign">0</property> |
|
- <property name="mnemonic_widget">bt_switch</property> |
|
- </object> |
|
- </child> |
|
- <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">Bluetooth can be turned off to save power.</property> |
|
- <property name="halign">start</property> |
|
- <property name="xalign">0</property> |
|
- <attributes> |
|
- <attribute name="scale" value="0.9"/> |
|
- </attributes> |
|
- <style> |
|
- <class name="dim-label"/> |
|
- </style> |
|
- </object> |
|
- </child> |
|
- </object> |
|
- </child> |
|
- <child> |
|
- <object class="GtkSwitch" id="bt_switch"> |
|
- <property name="visible">True</property> |
|
- <property name="valign">center</property> |
|
- <signal name="notify::active" handler="bt_switch_changed_cb" object="CcPowerPanel" swapped="yes"/> |
|
- </object> |
|
- </child> |
|
+ <property name="valign">center</property> |
|
+ <signal name="notify::active" handler="bt_switch_changed_cb" object="CcPowerPanel" swapped="yes"/> |
|
</object> |
|
</child> |
|
</object> |
|
@@ -660,36 +393,15 @@ |
|
</object> |
|
</child> |
|
<child> |
|
- <object class="GtkListBoxRow" id="battery_percentage_row"> |
|
+ <object class="HdyActionRow" id="battery_percentage_row"> |
|
<property name="visible">False</property> |
|
- <property name="selectable">False</property> |
|
- <property name="activatable">False</property> |
|
+ <property name="title" translatable="yes">Show Battery _Percentage</property> |
|
+ <property name="use_underline">True</property> |
|
+ <property name="activatable_widget">battery_percentage_switch</property> |
|
<child> |
|
- <object class="GtkBox"> |
|
+ <object class="GtkSwitch" id="battery_percentage_switch"> |
|
<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> |
|
+ <property name="valign">center</property> |
|
</object> |
|
</child> |
|
</object> |
|
@@ -710,20 +422,6 @@ |
|
<object class="GtkSizeGroup" id="battery_row_sizegroup"> |
|
<property name="mode">vertical</property> |
|
</object> |
|
- <object class="GtkSizeGroup" id="battery_sizegroup"> |
|
- <property name="mode">horizontal</property> |
|
- <widgets> |
|
- <widget name="brightness_label"/> |
|
- <widget name="kbd_brightness_label"/> |
|
- </widgets> |
|
- </object> |
|
- <object class="GtkSizeGroup" id="charge_sizegroup"> |
|
- <property name="mode">horizontal</property> |
|
- <widgets> |
|
- <widget name="brightness_spacer"/> |
|
- <widget name="kbd_brightness_spacer"/> |
|
- </widgets> |
|
- </object> |
|
<object class="GtkSizeGroup" id="level_sizegroup"> |
|
<property name="mode">horizontal</property> |
|
<widgets> |
|
-- |
|
2.32.0 |
|
|
|
|
|
From 93fa8d4dfaa206a763f678df2b2eb31e1599c7c8 Mon Sep 17 00:00:00 2001 |
|
From: Adrien Plazas <kekun.plazas@laposte.net> |
|
Date: Thu, 7 Jan 2021 13:49:36 +0100 |
|
Subject: [PATCH 07/33] power: Use HdyPreferencesGroup |
|
|
|
--- |
|
panels/power/cc-power-panel.c | 60 ++--------- |
|
panels/power/cc-power-panel.ui | 175 +++++---------------------------- |
|
2 files changed, 30 insertions(+), 205 deletions(-) |
|
|
|
diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c |
|
index 22d91c564..96558c778 100644 |
|
--- a/panels/power/cc-power-panel.c |
|
+++ b/panels/power/cc-power-panel.c |
|
@@ -66,36 +66,29 @@ struct _CcPowerPanel |
|
GtkDialog *automatic_suspend_dialog; |
|
GtkLabel *automatic_suspend_label; |
|
GtkListBoxRow *automatic_suspend_row; |
|
- GtkLabel *battery_heading; |
|
GtkListBox *battery_listbox; |
|
HdyActionRow *battery_percentage_row; |
|
GtkSwitch *battery_percentage_switch; |
|
GtkSizeGroup *battery_row_sizegroup; |
|
- GtkBox *battery_section; |
|
+ HdyPreferencesGroup *battery_section; |
|
HdyComboRow *blank_screen_row; |
|
GtkListBoxRow *brightness_row; |
|
CcBrightnessScale *brightness_scale; |
|
GtkListBoxRow *bt_row; |
|
GtkSwitch *bt_switch; |
|
- GtkLabel *device_heading; |
|
GtkListBox *device_listbox; |
|
- GtkBox *device_section; |
|
+ HdyPreferencesGroup *device_section; |
|
GtkListBoxRow *dim_screen_row; |
|
GtkSwitch *dim_screen_switch; |
|
- GtkLabel *general_heading; |
|
- GtkListBox *general_listbox; |
|
- GtkBox *general_section; |
|
+ HdyPreferencesGroup *general_section; |
|
GtkListBoxRow *kbd_brightness_row; |
|
CcBrightnessScale *kbd_brightness_scale; |
|
GtkSizeGroup *level_sizegroup; |
|
GtkListBoxRow *mobile_row; |
|
GtkSwitch *mobile_switch; |
|
HdyComboRow *power_button_row; |
|
- GtkLabel *power_profile_heading; |
|
GtkListBox *power_profile_listbox; |
|
- GtkBox *power_profile_section; |
|
- GtkLabel *power_saving_heading; |
|
- GtkListBox *power_saving_listbox; |
|
+ HdyPreferencesGroup *power_profile_section; |
|
GtkSizeGroup *row_sizegroup; |
|
GtkComboBox *suspend_on_battery_delay_combo; |
|
GtkLabel *suspend_on_battery_delay_label; |
|
@@ -259,7 +252,6 @@ up_client_changed (CcPowerPanel *self) |
|
guint n_batteries; |
|
gboolean on_ups; |
|
g_autoptr(UpDevice) composite = NULL; |
|
- g_autofree gchar *s = NULL; |
|
|
|
battery_children = gtk_container_get_children (GTK_CONTAINER (self->battery_listbox)); |
|
for (l = battery_children; l != NULL; l = l->next) |
|
@@ -390,10 +382,9 @@ up_client_changed (CcPowerPanel *self) |
|
} |
|
|
|
if (n_batteries > 1) |
|
- s = g_strdup_printf ("<b>%s</b>", _("Batteries")); |
|
+ hdy_preferences_group_set_title (self->battery_section, _("Batteries")); |
|
else |
|
- s = g_strdup_printf ("<b>%s</b>", _("Battery")); |
|
- gtk_label_set_label (GTK_LABEL (self->battery_heading), s); |
|
+ hdy_preferences_group_set_title (self->battery_section, _("Battery")); |
|
|
|
if (!on_ups && n_batteries > 1) |
|
add_battery (self, composite, TRUE); |
|
@@ -1697,7 +1688,6 @@ cc_power_panel_class_init (CcPowerPanelClass *klass) |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, automatic_suspend_dialog); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, automatic_suspend_label); |
|
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); |
|
@@ -1708,13 +1698,10 @@ cc_power_panel_class_init (CcPowerPanelClass *klass) |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, brightness_scale); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, bt_row); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, bt_switch); |
|
- gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, device_heading); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, device_listbox); |
|
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, kbd_brightness_row); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, kbd_brightness_scale); |
|
@@ -1722,11 +1709,8 @@ cc_power_panel_class_init (CcPowerPanelClass *klass) |
|
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_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, 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); |
|
@@ -1755,11 +1739,6 @@ cc_power_panel_class_init (CcPowerPanelClass *klass) |
|
static void |
|
cc_power_panel_init (CcPowerPanel *self) |
|
{ |
|
- g_autofree gchar *battery_label = NULL; |
|
- 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 ()); |
|
@@ -1776,46 +1755,19 @@ cc_power_panel_init (CcPowerPanel *self) |
|
self->session_settings = g_settings_new ("org.gnome.desktop.session"); |
|
self->interface_settings = g_settings_new ("org.gnome.desktop.interface"); |
|
|
|
- battery_label = g_markup_printf_escaped ("<b>%s</b>", _("Battery")); |
|
- gtk_label_set_markup (self->battery_heading, battery_label); |
|
- |
|
- gtk_list_box_set_header_func (self->battery_listbox, |
|
- cc_list_box_update_header_func, |
|
- NULL, NULL); |
|
gtk_list_box_set_sort_func (self->battery_listbox, |
|
(GtkListBoxSortFunc)battery_sort_func, NULL, NULL); |
|
|
|
- device_label = g_markup_printf_escaped ("<b>%s</b>", _("Devices")); |
|
- gtk_label_set_markup (self->device_heading, device_label); |
|
- |
|
- gtk_list_box_set_header_func (self->device_listbox, |
|
- cc_list_box_update_header_func, |
|
- NULL, NULL); |
|
gtk_list_box_set_sort_func (self->device_listbox, |
|
(GtkListBoxSortFunc)battery_sort_func, NULL, NULL); |
|
|
|
- power_profile_label = g_strdup_printf ("<b>%s</b>", _("Power Mode")); |
|
- gtk_label_set_markup (self->power_profile_heading, power_profile_label); |
|
gtk_list_box_set_sort_func (self->power_profile_listbox, |
|
perf_profile_list_box_sort, |
|
NULL, NULL); |
|
- gtk_list_box_set_header_func (self->power_profile_listbox, |
|
- cc_list_box_update_header_func, |
|
- NULL, NULL); |
|
setup_power_profiles (self); |
|
|
|
- power_saving_label = g_strdup_printf ("<b>%s</b>", _("Power Saving")); |
|
- gtk_label_set_markup (self->power_saving_heading, power_saving_label); |
|
- gtk_list_box_set_header_func (self->power_saving_listbox, |
|
- cc_list_box_update_header_func, |
|
- NULL, NULL); |
|
setup_power_saving (self); |
|
|
|
- general_label = g_markup_printf_escaped ("<b>%s</b>", _("Suspend & Power Button")); |
|
- gtk_label_set_markup (self->general_heading, general_label); |
|
- gtk_list_box_set_header_func (self->general_listbox, |
|
- cc_list_box_update_header_func, |
|
- NULL, NULL); |
|
setup_general_section (self); |
|
|
|
/* populate batteries */ |
|
diff --git a/panels/power/cc-power-panel.ui b/panels/power/cc-power-panel.ui |
|
index 12df3aa4a..26d6ffddc 100644 |
|
--- a/panels/power/cc-power-panel.ui |
|
+++ b/panels/power/cc-power-panel.ui |
|
@@ -55,124 +55,60 @@ |
|
<property name="visible">True</property> |
|
<property name="can_focus">False</property> |
|
<child> |
|
- <object class="GtkScrolledWindow"> |
|
+ <object class="HdyPreferencesPage"> |
|
<property name="visible">True</property> |
|
- <property name="can_focus">False</property> |
|
- <property name="hscrollbar_policy">never</property> |
|
- <child> |
|
- <object class="HdyClamp"> |
|
- <property name="visible">True</property> |
|
- <property name="margin_top">32</property> |
|
- <property name="margin_bottom">32</property> |
|
- <property name="margin_start">12</property> |
|
- <property name="margin_end">12</property> |
|
- <child> |
|
- <object class="GtkBox" id="power_vbox"> |
|
- <property name="visible">True</property> |
|
- <property name="can_focus">False</property> |
|
- <property name="orientation">vertical</property> |
|
- <property name="spacing">3</property> |
|
- <property name="hexpand">True</property> |
|
<child> |
|
- <object class="GtkBox" id="battery_section"> |
|
+ <object class="HdyPreferencesGroup" id="battery_section"> |
|
<property name="visible">True</property> |
|
- <property name="orientation">vertical</property> |
|
- <property name="margin_bottom">32</property> |
|
- <child> |
|
- <object class="GtkLabel" id="battery_heading"> |
|
- <property name="visible">True</property> |
|
- <property name="use-markup">True</property> |
|
- <property name="halign">start</property> |
|
- <property name="margin_bottom">12</property> |
|
+ <property name="title" translatable="yes">Battery</property> |
|
<accessibility> |
|
<relation target="battery_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="battery_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="battery_heading" type="labelled-by"/> |
|
+ <relation target="battery_section" type="labelled-by"/> |
|
</accessibility> |
|
+ <style> |
|
+ <class name="content"/> |
|
+ </style> |
|
</object> |
|
</child> |
|
- </object> |
|
- </child> |
|
</object> |
|
</child> |
|
<child> |
|
- <object class="GtkBox" id="device_section"> |
|
+ <object class="HdyPreferencesGroup" id="device_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="device_heading"> |
|
- <property name="visible">True</property> |
|
- <property name="ellipsize">end</property> |
|
- <property name="xalign">0</property> |
|
- <property name="use-markup">True</property> |
|
- <property name="halign">start</property> |
|
- <property name="margin_bottom">12</property> |
|
+ <property name="title" translatable="yes">Devices</property> |
|
<accessibility> |
|
<relation target="device_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="device_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="device_heading" type="labelled-by"/> |
|
+ <relation target="device_section" type="labelled-by"/> |
|
</accessibility> |
|
+ <style> |
|
+ <class name="content"/> |
|
+ </style> |
|
</object> |
|
</child> |
|
- </object> |
|
- </child> |
|
</object> |
|
</child> |
|
<child> |
|
- <object class="GtkBox" id="power_profile_section"> |
|
+ <object class="HdyPreferencesGroup" id="power_profile_section"> |
|
<property name="visible">False</property> |
|
- <property name="orientation">vertical</property> |
|
- <property name="margin_bottom">32</property> |
|
- <child> |
|
- <object class="GtkLabel" id="power_profile_heading"> |
|
- <property name="visible">True</property> |
|
- <property name="ellipsize">end</property> |
|
- <property name="xalign">0</property> |
|
- <property name="use-markup">True</property> |
|
- <property name="halign">start</property> |
|
+ <property name="title" translatable="yes">Power Mode</property> |
|
+ <property name="description" translatable="yes">Affects system performance and power usage.</property> |
|
<accessibility> |
|
<relation target="power_profile_listbox" type="label-for"/> |
|
</accessibility> |
|
- </object> |
|
- </child> |
|
- <child> |
|
- <object class="GtkLabel"> |
|
- <property name="visible">True</property> |
|
- <property name="xalign">0</property> |
|
- <property name="margin-bottom">6</property> |
|
- <property name="label" translatable="yes">Affects system performance and power usage.</property> |
|
- </object> |
|
- </child> |
|
- <child> |
|
- <object class="GtkFrame"> |
|
- <property name="visible">True</property> |
|
- <property name="shadow-type">in</property> |
|
<child> |
|
<object class="GtkListBox" id="power_profile_listbox"> |
|
<property name="visible">True</property> |
|
@@ -180,45 +116,19 @@ |
|
<signal name="keynav-failed" handler="keynav_failed_cb" object="CcPowerPanel" swapped="yes"/> |
|
<signal name="row-activated" handler="power_profiles_row_activated_cb" object="CcPowerPanel" swapped="yes"/> |
|
<accessibility> |
|
- <relation target="device_heading" type="labelled-by"/> |
|
+ <relation target="power_profile_section" type="labelled-by"/> |
|
</accessibility> |
|
+ <style> |
|
+ <class name="content"/> |
|
+ </style> |
|
</object> |
|
</child> |
|
- </object> |
|
- </child> |
|
</object> |
|
</child> |
|
<child> |
|
- <object class="GtkBox"> |
|
+ <object class="HdyPreferencesGroup" id="power_saving_section"> |
|
<property name="visible">True</property> |
|
- <property name="orientation">vertical</property> |
|
- <property name="margin_bottom">32</property> |
|
- <child> |
|
- <object class="GtkLabel" id="power_saving_heading"> |
|
- <property name="visible">True</property> |
|
- <property name="ellipsize">end</property> |
|
- <property name="xalign">0</property> |
|
- <property name="use-markup">True</property> |
|
- <property name="halign">start</property> |
|
- <property name="margin_bottom">12</property> |
|
- <accessibility> |
|
- <relation target="power_saving_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="power_saving_listbox"> |
|
- <property name="visible">True</property> |
|
- <property name="selection-mode">none</property> |
|
- <signal name="keynav-failed" handler="keynav_failed_cb" object="CcPowerPanel" swapped="yes"/> |
|
- <signal name="row-activated" handler="power_saving_listbox_row_activated_cb" object="CcPowerPanel" swapped="yes"/> |
|
- <accessibility> |
|
- <relation target="power_saving_heading" type="labelled-by"/> |
|
- </accessibility> |
|
+ <property name="title" translatable="yes">Power Saving</property> |
|
<child> |
|
<object class="HdyActionRow" id="brightness_row"> |
|
<property name="visible">True</property> |
|
@@ -349,41 +259,12 @@ |
|
</child> |
|
</object> |
|
</child> |
|
- </object> |
|
- </child> |
|
- </object> |
|
- </child> |
|
</object> |
|
</child> |
|
<child> |
|
- <object class="GtkBox" id="general_section"> |
|
+ <object class="HdyPreferencesGroup" 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> |
|
+ <property name="title" translatable="yes">Suspend & Power Button</property> |
|
<child> |
|
<object class="HdyComboRow" id="power_button_row"> |
|
<property name="visible">False</property> |
|
@@ -406,16 +287,8 @@ |
|
</child> |
|
</object> |
|
</child> |
|
- </object> |
|
- </child> |
|
- </object> |
|
- </child> |
|
</object> |
|
</child> |
|
- </object> |
|
- </child> |
|
- </object> |
|
- </child> |
|
</object> |
|
</child> |
|
</template> |
|
-- |
|
2.32.0 |
|
|
|
|
|
From 58480754efd5fdc66db0940ce5c19abfbd2158b6 Mon Sep 17 00:00:00 2001 |
|
From: Adrien Plazas <kekun.plazas@laposte.net> |
|
Date: Thu, 7 Jan 2021 14:37:56 +0100 |
|
Subject: [PATCH 08/33] power: Fix the indentation |
|
|
|
The indentation was purposefully left incorrect in the previous commits |
|
to ease the review of the actual changes, this fixes it. |
|
--- |
|
panels/power/cc-power-panel.ui | 426 ++++++++++++++++----------------- |
|
1 file changed, 213 insertions(+), 213 deletions(-) |
|
|
|
diff --git a/panels/power/cc-power-panel.ui b/panels/power/cc-power-panel.ui |
|
index 26d6ffddc..8e999c6d5 100644 |
|
--- a/panels/power/cc-power-panel.ui |
|
+++ b/panels/power/cc-power-panel.ui |
|
@@ -57,238 +57,238 @@ |
|
<child> |
|
<object class="HdyPreferencesPage"> |
|
<property name="visible">True</property> |
|
+ <child> |
|
+ <object class="HdyPreferencesGroup" id="battery_section"> |
|
+ <property name="visible">True</property> |
|
+ <property name="title" translatable="yes">Battery</property> |
|
+ <accessibility> |
|
+ <relation target="battery_listbox" type="label-for"/> |
|
+ </accessibility> |
|
+ <child> |
|
+ <object class="GtkListBox" id="battery_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="battery_section" type="labelled-by"/> |
|
+ </accessibility> |
|
+ <style> |
|
+ <class name="content"/> |
|
+ </style> |
|
+ </object> |
|
+ </child> |
|
+ </object> |
|
+ </child> |
|
+ <child> |
|
+ <object class="HdyPreferencesGroup" id="device_section"> |
|
+ <property name="visible">True</property> |
|
+ <property name="title" translatable="yes">Devices</property> |
|
+ <accessibility> |
|
+ <relation target="device_listbox" type="label-for"/> |
|
+ </accessibility> |
|
+ <child> |
|
+ <object class="GtkListBox" id="device_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="device_section" type="labelled-by"/> |
|
+ </accessibility> |
|
+ <style> |
|
+ <class name="content"/> |
|
+ </style> |
|
+ </object> |
|
+ </child> |
|
+ </object> |
|
+ </child> |
|
+ <child> |
|
+ <object class="HdyPreferencesGroup" id="power_profile_section"> |
|
+ <property name="visible">False</property> |
|
+ <property name="title" translatable="yes">Power Mode</property> |
|
+ <property name="description" translatable="yes">Affects system performance and power usage.</property> |
|
+ <accessibility> |
|
+ <relation target="power_profile_listbox" type="label-for"/> |
|
+ </accessibility> |
|
+ <child> |
|
+ <object class="GtkListBox" id="power_profile_listbox"> |
|
+ <property name="visible">True</property> |
|
+ <property name="selection-mode">none</property> |
|
+ <signal name="keynav-failed" handler="keynav_failed_cb" object="CcPowerPanel" swapped="yes"/> |
|
+ <signal name="row-activated" handler="power_profiles_row_activated_cb" object="CcPowerPanel" swapped="yes"/> |
|
+ <accessibility> |
|
+ <relation target="power_profile_section" type="labelled-by"/> |
|
+ </accessibility> |
|
+ <style> |
|
+ <class name="content"/> |
|
+ </style> |
|
+ </object> |
|
+ </child> |
|
+ </object> |
|
+ </child> |
|
+ <child> |
|
+ <object class="HdyPreferencesGroup" id="power_saving_section"> |
|
+ <property name="visible">True</property> |
|
+ <property name="title" translatable="yes">Power Saving</property> |
|
+ <child> |
|
+ <object class="HdyActionRow" id="brightness_row"> |
|
+ <property name="visible">True</property> |
|
+ <property name="title" translatable="yes">_Screen Brightness</property> |
|
+ <property name="use_underline">True</property> |
|
<child> |
|
- <object class="HdyPreferencesGroup" id="battery_section"> |
|
+ <object class="CcBrightnessScale" id="brightness_scale"> |
|
<property name="visible">True</property> |
|
- <property name="title" translatable="yes">Battery</property> |
|
- <accessibility> |
|
- <relation target="battery_listbox" type="label-for"/> |
|
- </accessibility> |
|
- <child> |
|
- <object class="GtkListBox" id="battery_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="battery_section" type="labelled-by"/> |
|
- </accessibility> |
|
- <style> |
|
- <class name="content"/> |
|
- </style> |
|
- </object> |
|
- </child> |
|
+ <property name="valign">center</property> |
|
+ <property name="expand">True</property> |
|
+ <property name="device">screen</property> |
|
+ <signal name="notify::has-brightness" handler="has_brightness_cb" object="CcPowerPanel" swapped="yes"/> |
|
</object> |
|
</child> |
|
+ </object> |
|
+ </child> |
|
+ <child> |
|
+ <object class="HdyActionRow" id="als_row"> |
|
+ <property name="visible">True</property> |
|
+ <property name="title" translatable="yes">Automatic Brightness</property> |
|
<child> |
|
- <object class="HdyPreferencesGroup" id="device_section"> |
|
+ <object class="GtkSwitch" id="als_switch"> |
|
<property name="visible">True</property> |
|
- <property name="title" translatable="yes">Devices</property> |
|
- <accessibility> |
|
- <relation target="device_listbox" type="label-for"/> |
|
- </accessibility> |
|
- <child> |
|
- <object class="GtkListBox" id="device_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="device_section" type="labelled-by"/> |
|
- </accessibility> |
|
- <style> |
|
- <class name="content"/> |
|
- </style> |
|
- </object> |
|
- </child> |
|
+ <property name="valign">center</property> |
|
+ <signal name="notify::active" handler="als_switch_changed_cb" object="CcPowerPanel" swapped="yes"/> |
|
</object> |
|
</child> |
|
+ </object> |
|
+ </child> |
|
+ <child> |
|
+ <object class="HdyActionRow" id="kbd_brightness_row"> |
|
+ <property name="visible">True</property> |
|
+ <property name="title" translatable="yes">_Keyboard Brightness</property> |
|
+ <property name="use_underline">True</property> |
|
<child> |
|
- <object class="HdyPreferencesGroup" id="power_profile_section"> |
|
- <property name="visible">False</property> |
|
- <property name="title" translatable="yes">Power Mode</property> |
|
- <property name="description" translatable="yes">Affects system performance and power usage.</property> |
|
- <accessibility> |
|
- <relation target="power_profile_listbox" type="label-for"/> |
|
- </accessibility> |
|
- <child> |
|
- <object class="GtkListBox" id="power_profile_listbox"> |
|
- <property name="visible">True</property> |
|
- <property name="selection-mode">none</property> |
|
- <signal name="keynav-failed" handler="keynav_failed_cb" object="CcPowerPanel" swapped="yes"/> |
|
- <signal name="row-activated" handler="power_profiles_row_activated_cb" object="CcPowerPanel" swapped="yes"/> |
|
- <accessibility> |
|
- <relation target="power_profile_section" type="labelled-by"/> |
|
- </accessibility> |
|
- <style> |
|
- <class name="content"/> |
|
- </style> |
|
- </object> |
|
- </child> |
|
+ <object class="CcBrightnessScale" id="kbd_brightness_scale"> |
|
+ <property name="visible">True</property> |
|
+ <property name="valign">center</property> |
|
+ <property name="expand">True</property> |
|
+ <property name="device">kbd</property> |
|
+ <signal name="notify::has-brightness" handler="has_kbd_brightness_cb" object="CcPowerPanel" swapped="yes"/> |
|
</object> |
|
</child> |
|
+ </object> |
|
+ </child> |
|
+ <child> |
|
+ <object class="HdyActionRow" id="dim_screen_row"> |
|
+ <property name="visible">True</property> |
|
+ <property name="title" translatable="yes">Dim Screen When Inactive</property> |
|
+ <property name="activatable_widget">dim_screen_switch</property> |
|
<child> |
|
- <object class="HdyPreferencesGroup" id="power_saving_section"> |
|
+ <object class="GtkSwitch" id="dim_screen_switch"> |
|
<property name="visible">True</property> |
|
- <property name="title" translatable="yes">Power Saving</property> |
|
- <child> |
|
- <object class="HdyActionRow" id="brightness_row"> |
|
- <property name="visible">True</property> |
|
- <property name="title" translatable="yes">_Screen Brightness</property> |
|
- <property name="use_underline">True</property> |
|
- <child> |
|
- <object class="CcBrightnessScale" id="brightness_scale"> |
|
- <property name="visible">True</property> |
|
- <property name="valign">center</property> |
|
- <property name="expand">True</property> |
|
- <property name="device">screen</property> |
|
- <signal name="notify::has-brightness" handler="has_brightness_cb" object="CcPowerPanel" swapped="yes"/> |
|
- </object> |
|
- </child> |
|
- </object> |
|
- </child> |
|
- <child> |
|
- <object class="HdyActionRow" id="als_row"> |
|
- <property name="visible">True</property> |
|
- <property name="title" translatable="yes">Automatic Brightness</property> |
|
- <child> |
|
- <object class="GtkSwitch" id="als_switch"> |
|
- <property name="visible">True</property> |
|
- <property name="valign">center</property> |
|
- <signal name="notify::active" handler="als_switch_changed_cb" object="CcPowerPanel" swapped="yes"/> |
|
- </object> |
|
- </child> |
|
- </object> |
|
- </child> |
|
- <child> |
|
- <object class="HdyActionRow" id="kbd_brightness_row"> |
|
- <property name="visible">True</property> |
|
- <property name="title" translatable="yes">_Keyboard Brightness</property> |
|
- <property name="use_underline">True</property> |
|
- <child> |
|
- <object class="CcBrightnessScale" id="kbd_brightness_scale"> |
|
- <property name="visible">True</property> |
|
- <property name="valign">center</property> |
|
- <property name="expand">True</property> |
|
- <property name="device">kbd</property> |
|
- <signal name="notify::has-brightness" handler="has_kbd_brightness_cb" object="CcPowerPanel" swapped="yes"/> |
|
- </object> |
|
- </child> |
|
- </object> |
|
- </child> |
|
- <child> |
|
- <object class="HdyActionRow" id="dim_screen_row"> |
|
- <property name="visible">True</property> |
|
- <property name="title" translatable="yes">Dim Screen When Inactive</property> |
|
- <property name="activatable_widget">dim_screen_switch</property> |
|
- <child> |
|
- <object class="GtkSwitch" id="dim_screen_switch"> |
|
- <property name="visible">True</property> |
|
- <property name="valign">center</property> |
|
- </object> |
|
- </child> |
|
- </object> |
|
- </child> |
|
- <child> |
|
- <object class="HdyComboRow" id="blank_screen_row"> |
|
- <property name="visible">True</property> |
|
- <property name="title" translatable="yes">_Blank Screen</property> |
|
- <property name="use_underline">True</property> |
|
- <signal name="notify::selected-index" handler="blank_screen_row_changed_cb" object="CcPowerPanel" swapped="yes"/> |
|
- </object> |
|
- </child> |
|
- <child> |
|
- <object class="HdyActionRow" id="automatic_suspend_row"> |
|
- <property name="visible">False</property> |
|
- <property name="title" translatable="yes">_Automatic Suspend</property> |
|
- <property name="use_underline">True</property> |
|
- <property name="activatable">True</property> |
|
- <signal name="activated" handler="automatic_suspend_row_activated_cb" swapped="yes"/> |
|
- <child> |
|
- <object class="GtkLabel" id="automatic_suspend_label"> |
|
- <property name="visible">True</property> |
|
- <property name="halign">end</property> |
|
- <signal name="mnemonic-activate" handler="automatic_suspend_label_mnemonic_activate_cb" object="CcPowerPanel" swapped="yes"/> |
|
- </object> |
|
- </child> |
|
- </object> |
|
- </child> |
|
- <child> |
|
- <object class="HdyActionRow" id="wifi_row"> |
|
- <property name="visible">False</property> |
|
- <property name="title" translatable="yes">_Wi-Fi</property> |
|
- <property name="subtitle" translatable="yes">Wi-Fi can be turned off to save power.</property> |
|
- <property name="use_underline">True</property> |
|
- <property name="activatable_widget">wifi_switch</property> |
|
- <child> |
|
- <object class="GtkSwitch" id="wifi_switch"> |
|
- <property name="visible">True</property> |
|
- <property name="valign">center</property> |
|
- <signal name="notify::active" handler="wifi_switch_changed_cb" object="CcPowerPanel" swapped="yes"/> |
|
- </object> |
|
- </child> |
|
- </object> |
|
- </child> |
|
- <child> |
|
- <object class="HdyActionRow" id="mobile_row"> |
|
- <property name="visible">False</property> |
|
- <property name="title" translatable="yes">_Mobile Broadband</property> |
|
- <property name="subtitle" translatable="yes">Mobile broadband (LTE, 4G, 3G, etc.) can be turned off to save power.</property> |
|
- <property name="use_underline">True</property> |
|
- <property name="activatable_widget">mobile_switch</property> |
|
- <child> |
|
- <object class="GtkSwitch" id="mobile_switch"> |
|
- <property name="visible">True</property> |
|
- <property name="valign">center</property> |
|
- <signal name="notify::active" handler="mobile_switch_changed_cb" object="CcPowerPanel" swapped="yes"/> |
|
- </object> |
|
- </child> |
|
- </object> |
|
- </child> |
|
- <child> |
|
- <object class="HdyActionRow" id="bt_row"> |
|
- <property name="visible">False</property> |
|
- <property name="title" translatable="yes">_Bluetooth</property> |
|
- <property name="subtitle" translatable="yes">Bluetooth can be turned off to save power.</property> |
|
- <property name="use_underline">True</property> |
|
- <property name="activatable_widget">bt_switch</property> |
|
- <child> |
|
- <object class="GtkSwitch" id="bt_switch"> |
|
- <property name="visible">True</property> |
|
- <property name="valign">center</property> |
|
- <signal name="notify::active" handler="bt_switch_changed_cb" object="CcPowerPanel" swapped="yes"/> |
|
- </object> |
|
- </child> |
|
- </object> |
|
- </child> |
|
+ <property name="valign">center</property> |
|
</object> |
|
</child> |
|
+ </object> |
|
+ </child> |
|
+ <child> |
|
+ <object class="HdyComboRow" id="blank_screen_row"> |
|
+ <property name="visible">True</property> |
|
+ <property name="title" translatable="yes">_Blank Screen</property> |
|
+ <property name="use_underline">True</property> |
|
+ <signal name="notify::selected-index" handler="blank_screen_row_changed_cb" object="CcPowerPanel" swapped="yes"/> |
|
+ </object> |
|
+ </child> |
|
+ <child> |
|
+ <object class="HdyActionRow" id="automatic_suspend_row"> |
|
+ <property name="visible">False</property> |
|
+ <property name="title" translatable="yes">_Automatic Suspend</property> |
|
+ <property name="use_underline">True</property> |
|
+ <property name="activatable">True</property> |
|
+ <signal name="activated" handler="automatic_suspend_row_activated_cb" swapped="yes"/> |
|
+ <child> |
|
+ <object class="GtkLabel" id="automatic_suspend_label"> |
|
+ <property name="visible">True</property> |
|
+ <property name="halign">end</property> |
|
+ <signal name="mnemonic-activate" handler="automatic_suspend_label_mnemonic_activate_cb" object="CcPowerPanel" swapped="yes"/> |
|
+ </object> |
|
+ </child> |
|
+ </object> |
|
+ </child> |
|
+ <child> |
|
+ <object class="HdyActionRow" id="wifi_row"> |
|
+ <property name="visible">False</property> |
|
+ <property name="title" translatable="yes">_Wi-Fi</property> |
|
+ <property name="subtitle" translatable="yes">Wi-Fi can be turned off to save power.</property> |
|
+ <property name="use_underline">True</property> |
|
+ <property name="activatable_widget">wifi_switch</property> |
|
+ <child> |
|
+ <object class="GtkSwitch" id="wifi_switch"> |
|
+ <property name="visible">True</property> |
|
+ <property name="valign">center</property> |
|
+ <signal name="notify::active" handler="wifi_switch_changed_cb" object="CcPowerPanel" swapped="yes"/> |
|
+ </object> |
|
+ </child> |
|
+ </object> |
|
+ </child> |
|
+ <child> |
|
+ <object class="HdyActionRow" id="mobile_row"> |
|
+ <property name="visible">False</property> |
|
+ <property name="title" translatable="yes">_Mobile Broadband</property> |
|
+ <property name="subtitle" translatable="yes">Mobile broadband (LTE, 4G, 3G, etc.) can be turned off to save power.</property> |
|
+ <property name="use_underline">True</property> |
|
+ <property name="activatable_widget">mobile_switch</property> |
|
+ <child> |
|
+ <object class="GtkSwitch" id="mobile_switch"> |
|
+ <property name="visible">True</property> |
|
+ <property name="valign">center</property> |
|
+ <signal name="notify::active" handler="mobile_switch_changed_cb" object="CcPowerPanel" swapped="yes"/> |
|
+ </object> |
|
+ </child> |
|
+ </object> |
|
+ </child> |
|
+ <child> |
|
+ <object class="HdyActionRow" id="bt_row"> |
|
+ <property name="visible">False</property> |
|
+ <property name="title" translatable="yes">_Bluetooth</property> |
|
+ <property name="subtitle" translatable="yes">Bluetooth can be turned off to save power.</property> |
|
+ <property name="use_underline">True</property> |
|
+ <property name="activatable_widget">bt_switch</property> |
|
<child> |
|
- <object class="HdyPreferencesGroup" id="general_section"> |
|
+ <object class="GtkSwitch" id="bt_switch"> |
|
<property name="visible">True</property> |
|
- <property name="title" translatable="yes">Suspend & Power Button</property> |
|
- <child> |
|
- <object class="HdyComboRow" id="power_button_row"> |
|
- <property name="visible">False</property> |
|
- <property name="title" translatable="yes">Po_wer Button Behavior</property> |
|
- <property name="use_underline">True</property> |
|
- <signal name="notify::selected-index" handler="power_button_row_changed_cb" object="CcPowerPanel" swapped="yes"/> |
|
- </object> |
|
- </child> |
|
- <child> |
|
- <object class="HdyActionRow" id="battery_percentage_row"> |
|
- <property name="visible">False</property> |
|
- <property name="title" translatable="yes">Show Battery _Percentage</property> |
|
- <property name="use_underline">True</property> |
|
- <property name="activatable_widget">battery_percentage_switch</property> |
|
- <child> |
|
- <object class="GtkSwitch" id="battery_percentage_switch"> |
|
- <property name="visible">True</property> |
|
- <property name="valign">center</property> |
|
- </object> |
|
- </child> |
|
- </object> |
|
- </child> |
|
+ <property name="valign">center</property> |
|
+ <signal name="notify::active" handler="bt_switch_changed_cb" object="CcPowerPanel" swapped="yes"/> |
|
</object> |
|
</child> |
|
+ </object> |
|
+ </child> |
|
+ </object> |
|
+ </child> |
|
+ <child> |
|
+ <object class="HdyPreferencesGroup" id="general_section"> |
|
+ <property name="visible">True</property> |
|
+ <property name="title" translatable="yes">Suspend & Power Button</property> |
|
+ <child> |
|
+ <object class="HdyComboRow" id="power_button_row"> |
|
+ <property name="visible">False</property> |
|
+ <property name="title" translatable="yes">Po_wer Button Behavior</property> |
|
+ <property name="use_underline">True</property> |
|
+ <signal name="notify::selected-index" handler="power_button_row_changed_cb" object="CcPowerPanel" swapped="yes"/> |
|
+ </object> |
|
+ </child> |
|
+ <child> |
|
+ <object class="HdyActionRow" id="battery_percentage_row"> |
|
+ <property name="visible">False</property> |
|
+ <property name="title" translatable="yes">Show Battery _Percentage</property> |
|
+ <property name="use_underline">True</property> |
|
+ <property name="activatable_widget">battery_percentage_switch</property> |
|
+ <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> |
|
</template> |
|
-- |
|
2.32.0 |
|
|
|
|
|
From 036545ebc5b3deba1d4bb4ac82dc102413804e83 Mon Sep 17 00:00:00 2001 |
|
From: Adrien Plazas <kekun.plazas@laposte.net> |
|
Date: Fri, 8 Jan 2021 16:29:18 +0100 |
|
Subject: [PATCH 09/33] power: Hide the icon of the battery row when unused |
|
|
|
This gives more room to the label. |
|
--- |
|
panels/power/cc-battery-row.c | 9 +++++++-- |
|
1 file changed, 7 insertions(+), 2 deletions(-) |
|
|
|
diff --git a/panels/power/cc-battery-row.c b/panels/power/cc-battery-row.c |
|
index 55d7584d7..f6faca0c1 100644 |
|
--- a/panels/power/cc-battery-row.c |
|
+++ b/panels/power/cc-battery-row.c |
|
@@ -275,7 +275,12 @@ cc_battery_row_new (UpDevice *device, |
|
|
|
/* Icon */ |
|
if (is_kind_battery && icon_name != NULL && icon_name[0] != '\0') |
|
- gtk_image_set_from_icon_name (self->icon, icon_name, GTK_ICON_SIZE_BUTTON); |
|
+ { |
|
+ gtk_image_set_from_icon_name (self->icon, icon_name, GTK_ICON_SIZE_BUTTON); |
|
+ gtk_widget_show (GTK_WIDGET (self->icon)); |
|
+ } |
|
+ else |
|
+ gtk_widget_hide (GTK_WIDGET (self->icon)); |
|
|
|
/* Percentage label */ |
|
if (battery_level == UP_DEVICE_LEVEL_NONE) |
|
@@ -347,4 +352,4 @@ UpDeviceKind |
|
cc_battery_row_get_kind (CcBatteryRow *self) |
|
{ |
|
return self->kind; |
|
-} |
|
\ No newline at end of file |
|
+} |
|
-- |
|
2.32.0 |
|
|
|
|
|
From c4849778de730f37618120dbdd37f30515ecc77a Mon Sep 17 00:00:00 2001 |
|
From: Adrien Plazas <kekun.plazas@laposte.net> |
|
Date: Fri, 8 Jan 2021 16:30:12 +0100 |
|
Subject: [PATCH 10/33] power: Ellipsize the labels of the battery row |
|
|
|
This helps the window fit any size, including the narrow one of phones. |
|
--- |
|
panels/power/cc-battery-row.ui | 4 ++++ |
|
1 file changed, 4 insertions(+) |
|
|
|
diff --git a/panels/power/cc-battery-row.ui b/panels/power/cc-battery-row.ui |
|
index 932e5d39f..dec97a9fe 100644 |
|
--- a/panels/power/cc-battery-row.ui |
|
+++ b/panels/power/cc-battery-row.ui |
|
@@ -28,6 +28,8 @@ |
|
<child> |
|
<object class="GtkLabel" id="name_label"> |
|
<property name="visible">True</property> |
|
+ <property name="ellipsize">end</property> |
|
+ <property name="xalign">0</property> |
|
</object> |
|
</child> |
|
<child> |
|
@@ -79,6 +81,8 @@ |
|
<child> |
|
<object class="GtkLabel" id="details_label"> |
|
<property name="visible">True</property> |
|
+ <property name="ellipsize">end</property> |
|
+ <property name="xalign">0</property> |
|
</object> |
|
</child> |
|
<child> |
|
-- |
|
2.32.0 |
|
|
|
|
|
From 33d672d634a9e1d8a2cfa74dc4d503fb6f170ea1 Mon Sep 17 00:00:00 2001 |
|
From: Bastien Nocera <hadess@hadess.net> |
|
Date: Thu, 15 Jul 2021 13:08:05 +0200 |
|
Subject: [PATCH 11/33] power: Fix keynav not working |
|
MIME-Version: 1.0 |
|
Content-Type: text/plain; charset=UTF-8 |
|
Content-Transfer-Encoding: 8bit |
|
|
|
gnome-control-center/panels/power/cc-power-panel.c: In function ‘keynav_failed_cb’: |
|
gnome-control-center/panels/power/cc-power-panel.c:892:50: warning: statement with no effect [-Wunused-value] |
|
892 | direction == GTK_DIR_UP ? GTK_DIR_TAB_BACKWARD : GTK_DIR_TAB_FORWARD; |
|
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ |
|
--- |
|
panels/power/cc-power-panel.c | 2 +- |
|
1 file changed, 1 insertion(+), 1 deletion(-) |
|
|
|
diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c |
|
index 96558c778..d31d16d22 100644 |
|
--- a/panels/power/cc-power-panel.c |
|
+++ b/panels/power/cc-power-panel.c |
|
@@ -888,7 +888,7 @@ keynav_failed_cb (CcPowerPanel *self, GtkDirectionType direction, GtkWidget *lis |
|
if (direction != GTK_DIR_UP && direction != GTK_DIR_DOWN) |
|
return FALSE; |
|
|
|
- direction == GTK_DIR_UP ? GTK_DIR_TAB_BACKWARD : GTK_DIR_TAB_FORWARD; |
|
+ direction = GTK_DIR_UP ? GTK_DIR_TAB_BACKWARD : GTK_DIR_TAB_FORWARD; |
|
|
|
return gtk_widget_child_focus (GTK_WIDGET (self), direction); |
|
} |
|
-- |
|
2.32.0 |
|
|
|
|
|
From 35b621ce5191461b16eefcb5e677496c0c48638c Mon Sep 17 00:00:00 2001 |
|
From: Bastien Nocera <hadess@hadess.net> |
|
Date: Thu, 15 Jul 2021 13:46:19 +0200 |
|
Subject: [PATCH 12/33] power: Simplify emptying listbox |
|
|
|
We do that in a few places. |
|
--- |
|
panels/power/cc-power-panel.c | 22 +++++++++++++--------- |
|
1 file changed, 13 insertions(+), 9 deletions(-) |
|
|
|
diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c |
|
index d31d16d22..5d57afe59 100644 |
|
--- a/panels/power/cc-power-panel.c |
|
+++ b/panels/power/cc-power-panel.c |
|
@@ -242,25 +242,29 @@ add_device (CcPowerPanel *self, UpDevice *device) |
|
} |
|
|
|
static void |
|
-up_client_changed (CcPowerPanel *self) |
|
+empty_listbox (GtkListBox *listbox) |
|
{ |
|
- g_autoptr(GList) battery_children = NULL; |
|
- g_autoptr(GList) device_children = NULL; |
|
+ g_autoptr(GList) children = NULL; |
|
GList *l; |
|
+ |
|
+ children = gtk_container_get_children (GTK_CONTAINER (listbox)); |
|
+ for (l = children; l != NULL; l = l->next) |
|
+ gtk_container_remove (GTK_CONTAINER (listbox), l->data); |
|
+} |
|
+ |
|
+static void |
|
+up_client_changed (CcPowerPanel *self) |
|
+{ |
|
gint i; |
|
UpDeviceKind kind; |
|
guint n_batteries; |
|
gboolean on_ups; |
|
g_autoptr(UpDevice) composite = NULL; |
|
|
|
- battery_children = gtk_container_get_children (GTK_CONTAINER (self->battery_listbox)); |
|
- for (l = battery_children; l != NULL; l = l->next) |
|
- gtk_container_remove (GTK_CONTAINER (self->battery_listbox), l->data); |
|
+ empty_listbox (self->battery_listbox); |
|
gtk_widget_hide (GTK_WIDGET (self->battery_section)); |
|
|
|
- device_children = gtk_container_get_children (GTK_CONTAINER (self->device_listbox)); |
|
- for (l = device_children; l != NULL; l = l->next) |
|
- gtk_container_remove (GTK_CONTAINER (self->device_listbox), l->data); |
|
+ empty_listbox (self->device_listbox); |
|
gtk_widget_hide (GTK_WIDGET (self->device_section)); |
|
|
|
#ifdef TEST_FAKE_DEVICES |
|
-- |
|
2.32.0 |
|
|
|
|
|
From 7915830b4d8b691f4def35c83c06a658f5b14ac1 Mon Sep 17 00:00:00 2001 |
|
From: Bastien Nocera <hadess@hadess.net> |
|
Date: Thu, 15 Jul 2021 14:39:58 +0200 |
|
Subject: [PATCH 13/33] power: Add new power profile info row widget |
|
|
|
--- |
|
panels/power/cc-power-panel.c | 1 + |
|
panels/power/cc-power-profile-info-row.c | 67 ++++++++++ |
|
panels/power/cc-power-profile-info-row.h | 36 ++++++ |
|
panels/power/cc-power-profile-info-row.ui | 44 +++++++ |
|
panels/power/icons/info-symbolic.svg | 150 ++++++++++++++++++++++ |
|
panels/power/icons/meson.build | 5 + |
|
panels/power/meson.build | 1 + |
|
panels/power/power.gresource.xml | 1 + |
|
8 files changed, 305 insertions(+) |
|
create mode 100644 panels/power/cc-power-profile-info-row.c |
|
create mode 100644 panels/power/cc-power-profile-info-row.h |
|
create mode 100644 panels/power/cc-power-profile-info-row.ui |
|
create mode 100644 panels/power/icons/info-symbolic.svg |
|
|
|
diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c |
|
index 5d57afe59..8acf62dee 100644 |
|
--- a/panels/power/cc-power-panel.c |
|
+++ b/panels/power/cc-power-panel.c |
|
@@ -35,6 +35,7 @@ |
|
#include "cc-battery-row.h" |
|
#include "cc-brightness-scale.h" |
|
#include "cc-power-profile-row.h" |
|
+#include "cc-power-profile-info-row.h" |
|
#include "cc-power-panel.h" |
|
#include "cc-power-resources.h" |
|
#include "cc-util.h" |
|
diff --git a/panels/power/cc-power-profile-info-row.c b/panels/power/cc-power-profile-info-row.c |
|
new file mode 100644 |
|
index 000000000..92bb78834 |
|
--- /dev/null |
|
+++ b/panels/power/cc-power-profile-info-row.c |
|
@@ -0,0 +1,67 @@ |
|
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
|
+/* cc-list-row.c |
|
+ * |
|
+ * Copyright 2020 Red Hat Inc. |
|
+ * |
|
+ * This program is free software: you can redistribute it and/or modify |
|
+ * it under the terms of the GNU General Public License as published by |
|
+ * the Free Software Foundation, either version 3 of the License, or |
|
+ * (at your option) any later version. |
|
+ * |
|
+ * This program is distributed in the hope that it will be useful, |
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
+ * GNU General Public License for more details. |
|
+ * |
|
+ * You should have received a copy of the GNU General Public License |
|
+ * along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
+ * |
|
+ * Author(s): |
|
+ * Bastien Nocera <hadess@hadess.net> |
|
+ * |
|
+ * SPDX-License-Identifier: GPL-3.0-or-later |
|
+ */ |
|
+ |
|
+#undef G_LOG_DOMAIN |
|
+#define G_LOG_DOMAIN "cc-power-profile-info-row" |
|
+ |
|
+#include <config.h> |
|
+ |
|
+#include <glib/gi18n.h> |
|
+#include "cc-power-profile-info-row.h" |
|
+ |
|
+struct _CcPowerProfileInfoRow |
|
+{ |
|
+ GtkListBoxRow parent_instance; |
|
+ |
|
+ GtkLabel *title_label; |
|
+}; |
|
+ |
|
+G_DEFINE_TYPE (CcPowerProfileInfoRow, cc_power_profile_info_row, GTK_TYPE_LIST_BOX_ROW) |
|
+ |
|
+static void |
|
+cc_power_profile_info_row_class_init (CcPowerProfileInfoRowClass *klass) |
|
+{ |
|
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); |
|
+ |
|
+ gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/power/cc-power-profile-info-row.ui"); |
|
+ |
|
+ gtk_widget_class_bind_template_child (widget_class, CcPowerProfileInfoRow, title_label); |
|
+} |
|
+ |
|
+static void |
|
+cc_power_profile_info_row_init (CcPowerProfileInfoRow *self) |
|
+{ |
|
+ gtk_widget_init_template (GTK_WIDGET (self)); |
|
+} |
|
+ |
|
+CcPowerProfileInfoRow * |
|
+cc_power_profile_info_row_new (const char *text) |
|
+{ |
|
+ CcPowerProfileInfoRow *self; |
|
+ |
|
+ self = g_object_new (CC_TYPE_POWER_PROFILE_INFO_ROW, NULL); |
|
+ gtk_label_set_markup (self->title_label, text); |
|
+ |
|
+ return self; |
|
+} |
|
diff --git a/panels/power/cc-power-profile-info-row.h b/panels/power/cc-power-profile-info-row.h |
|
new file mode 100644 |
|
index 000000000..52d055ab2 |
|
--- /dev/null |
|
+++ b/panels/power/cc-power-profile-info-row.h |
|
@@ -0,0 +1,36 @@ |
|
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
|
+/* cc-list-row.h |
|
+ * |
|
+ * Copyright 2020 Red Hat Inc |
|
+ * |
|
+ * This program is free software: you can redistribute it and/or modify |
|
+ * it under the terms of the GNU General Public License as published by |
|
+ * the Free Software Foundation, either version 3 of the License, or |
|
+ * (at your option) any later version. |
|
+ * |
|
+ * This program is distributed in the hope that it will be useful, |
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
+ * GNU General Public License for more details. |
|
+ * |
|
+ * You should have received a copy of the GNU General Public License |
|
+ * along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
+ * |
|
+ * Author(s): |
|
+ * Bastien Nocera <hadess@hadess.net> |
|
+ * |
|
+ * SPDX-License-Identifier: GPL-3.0-or-later |
|
+ */ |
|
+ |
|
+#pragma once |
|
+ |
|
+#include <gtk/gtk.h> |
|
+ |
|
+G_BEGIN_DECLS |
|
+ |
|
+#define CC_TYPE_POWER_PROFILE_INFO_ROW (cc_power_profile_info_row_get_type()) |
|
+G_DECLARE_FINAL_TYPE (CcPowerProfileInfoRow, cc_power_profile_info_row, CC, POWER_PROFILE_INFO_ROW, GtkListBoxRow) |
|
+ |
|
+CcPowerProfileInfoRow *cc_power_profile_info_row_new (const char *text); |
|
+ |
|
+G_END_DECLS |
|
diff --git a/panels/power/cc-power-profile-info-row.ui b/panels/power/cc-power-profile-info-row.ui |
|
new file mode 100644 |
|
index 000000000..d9291ff16 |
|
--- /dev/null |
|
+++ b/panels/power/cc-power-profile-info-row.ui |
|
@@ -0,0 +1,44 @@ |
|
+<?xml version="1.0" encoding="UTF-8"?> |
|
+<interface> |
|
+ <!-- interface-requires gtk+ 3.0 --> |
|
+ <template class="CcPowerProfileInfoRow" parent="GtkListBoxRow"> |
|
+ <property name="activatable">False</property> |
|
+ <property name="selectable">False</property> |
|
+ <child> |
|
+ <object class="GtkBox"> |
|
+ <property name="visible">True</property> |
|
+ <property name="orientation">horizontal</property> |
|
+ <property name="margin-start">12</property> |
|
+ <property name="margin-end">12</property> |
|
+ <property name="margin-top">8</property> |
|
+ <property name="margin-bottom">8</property> |
|
+ <property name="spacing">12</property> |
|
+ <child> |
|
+ <object class="GtkImage" id="icon_image"> |
|
+ <property name="visible">True</property> |
|
+ <property name="margin-start">6</property> |
|
+ <property name="margin-end">18</property> |
|
+ <property name="icon-name">info-symbolic</property> |
|
+ <property name="icon-size">5</property> |
|
+ <style> |
|
+ <class name="power-profile"/> |
|
+ </style> |
|
+ </object> |
|
+ </child> |
|
+ <child> |
|
+ <object class="GtkLabel" id="title_label"> |
|
+ <property name="visible">True</property> |
|
+ <property name="halign">start</property> |
|
+ <property name="expand">True</property> |
|
+ <property name="use-markup">True</property> |
|
+ <property name="use-underline">True</property> |
|
+ <property name="xalign">0</property> |
|
+ <property name="yalign">0.5</property> |
|
+ <property name="margin-end">6</property> |
|
+ <property name="wrap">True</property> |
|
+ </object> |
|
+ </child> |
|
+ </object> |
|
+ </child> |
|
+ </template> |
|
+</interface> |
|
diff --git a/panels/power/icons/info-symbolic.svg b/panels/power/icons/info-symbolic.svg |
|
new file mode 100644 |
|
index 000000000..502a98a50 |
|
--- /dev/null |
|
+++ b/panels/power/icons/info-symbolic.svg |
|
@@ -0,0 +1,150 @@ |
|
+<?xml version="1.0" encoding="UTF-8"?> |
|
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> |
|
+ <filter id="a" height="100%" width="100%" x="0%" y="0%"> |
|
+ <feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/> |
|
+ </filter> |
|
+ <mask id="b"> |
|
+ <g filter="url(#a)"> |
|
+ <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.3"/> |
|
+ </g> |
|
+ </mask> |
|
+ <clipPath id="c"> |
|
+ <path d="m 0 0 h 1024 v 800 h -1024 z"/> |
|
+ </clipPath> |
|
+ <mask id="d"> |
|
+ <g filter="url(#a)"> |
|
+ <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/> |
|
+ </g> |
|
+ </mask> |
|
+ <clipPath id="e"> |
|
+ <path d="m 0 0 h 1024 v 800 h -1024 z"/> |
|
+ </clipPath> |
|
+ <mask id="f"> |
|
+ <g filter="url(#a)"> |
|
+ <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/> |
|
+ </g> |
|
+ </mask> |
|
+ <clipPath id="g"> |
|
+ <path d="m 0 0 h 1024 v 800 h -1024 z"/> |
|
+ </clipPath> |
|
+ <mask id="h"> |
|
+ <g filter="url(#a)"> |
|
+ <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/> |
|
+ </g> |
|
+ </mask> |
|
+ <clipPath id="i"> |
|
+ <path d="m 0 0 h 1024 v 800 h -1024 z"/> |
|
+ </clipPath> |
|
+ <mask id="j"> |
|
+ <g filter="url(#a)"> |
|
+ <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/> |
|
+ </g> |
|
+ </mask> |
|
+ <clipPath id="k"> |
|
+ <path d="m 0 0 h 1024 v 800 h -1024 z"/> |
|
+ </clipPath> |
|
+ <mask id="l"> |
|
+ <g filter="url(#a)"> |
|
+ <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/> |
|
+ </g> |
|
+ </mask> |
|
+ <clipPath id="m"> |
|
+ <path d="m 0 0 h 1024 v 800 h -1024 z"/> |
|
+ </clipPath> |
|
+ <mask id="n"> |
|
+ <g filter="url(#a)"> |
|
+ <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/> |
|
+ </g> |
|
+ </mask> |
|
+ <clipPath id="o"> |
|
+ <path d="m 0 0 h 1024 v 800 h -1024 z"/> |
|
+ </clipPath> |
|
+ <mask id="p"> |
|
+ <g filter="url(#a)"> |
|
+ <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.3"/> |
|
+ </g> |
|
+ </mask> |
|
+ <clipPath id="q"> |
|
+ <path d="m 0 0 h 1024 v 800 h -1024 z"/> |
|
+ </clipPath> |
|
+ <mask id="r"> |
|
+ <g filter="url(#a)"> |
|
+ <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.5"/> |
|
+ </g> |
|
+ </mask> |
|
+ <clipPath id="s"> |
|
+ <path d="m 0 0 h 1024 v 800 h -1024 z"/> |
|
+ </clipPath> |
|
+ <mask id="t"> |
|
+ <g filter="url(#a)"> |
|
+ <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.4"/> |
|
+ </g> |
|
+ </mask> |
|
+ <clipPath id="u"> |
|
+ <path d="m 0 0 h 1024 v 800 h -1024 z"/> |
|
+ </clipPath> |
|
+ <mask id="v"> |
|
+ <g filter="url(#a)"> |
|
+ <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.4"/> |
|
+ </g> |
|
+ </mask> |
|
+ <clipPath id="w"> |
|
+ <path d="m 0 0 h 1024 v 800 h -1024 z"/> |
|
+ </clipPath> |
|
+ <mask id="x"> |
|
+ <g filter="url(#a)"> |
|
+ <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.5"/> |
|
+ </g> |
|
+ </mask> |
|
+ <clipPath id="y"> |
|
+ <path d="m 0 0 h 1024 v 800 h -1024 z"/> |
|
+ </clipPath> |
|
+ <mask id="z"> |
|
+ <g filter="url(#a)"> |
|
+ <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.5"/> |
|
+ </g> |
|
+ </mask> |
|
+ <clipPath id="A"> |
|
+ <path d="m 0 0 h 1024 v 800 h -1024 z"/> |
|
+ </clipPath> |
|
+ <g clip-path="url(#c)" mask="url(#b)" transform="matrix(1 0 0 1 -660 -222)"> |
|
+ <path d="m 562.460938 212.058594 h 10.449218 c -1.183594 0.492187 -1.296875 2.460937 0 3 h -10.449218 z m 0 0" fill="#2e3436"/> |
|
+ </g> |
|
+ <path d="m 7.90625 1 c -3.828125 0.050781 -6.90625 3.171875 -6.90625 7 c 0 3.867188 3.132812 7 7 7 s 7 -3.132812 7 -7 s -3.132812 -7 -7 -7 c -0.03125 0 -0.0625 0 -0.09375 0 z m -0.40625 3 h 1 c 0.277344 0 0.5 0.222656 0.5 0.5 v 1 c 0 0.277344 -0.222656 0.5 -0.5 0.5 h -1 c -0.277344 0 -0.5 -0.222656 -0.5 -0.5 v -1 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 z m -0.5 3 h 2 v 5 h -2 z m 0 0" fill="#2e3436"/> |
|
+ <g clip-path="url(#e)" mask="url(#d)" transform="matrix(1 0 0 1 -660 -222)"> |
|
+ <path d="m 16 632 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/> |
|
+ </g> |
|
+ <g clip-path="url(#g)" mask="url(#f)" transform="matrix(1 0 0 1 -660 -222)"> |
|
+ <path d="m 17 631 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/> |
|
+ </g> |
|
+ <g clip-path="url(#i)" mask="url(#h)" transform="matrix(1 0 0 1 -660 -222)"> |
|
+ <path d="m 18 634 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/> |
|
+ </g> |
|
+ <g clip-path="url(#k)" mask="url(#j)" transform="matrix(1 0 0 1 -660 -222)"> |
|
+ <path d="m 16 634 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/> |
|
+ </g> |
|
+ <g clip-path="url(#m)" mask="url(#l)" transform="matrix(1 0 0 1 -660 -222)"> |
|
+ <path d="m 17 635 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/> |
|
+ </g> |
|
+ <g clip-path="url(#o)" mask="url(#n)" transform="matrix(1 0 0 1 -660 -222)"> |
|
+ <path d="m 19 635 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/> |
|
+ </g> |
|
+ <g clip-path="url(#q)" mask="url(#p)" transform="matrix(1 0 0 1 -660 -222)"> |
|
+ <path d="m 136 660 v 7 h 7 v -7 z m 0 0" fill="#2e3436"/> |
|
+ </g> |
|
+ <g clip-path="url(#s)" mask="url(#r)" transform="matrix(1 0 0 1 -660 -222)"> |
|
+ <path d="m 199 642 h 3 v 12 h -3 z m 0 0" fill="#2e3436"/> |
|
+ </g> |
|
+ <g clip-path="url(#u)" mask="url(#t)" transform="matrix(1 0 0 1 -660 -222)"> |
|
+ <path d="m 209.5 144.160156 c 0.277344 0 0.5 0.222656 0.5 0.5 v 1 c 0 0.277344 -0.222656 0.5 -0.5 0.5 s -0.5 -0.222656 -0.5 -0.5 v -1 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 z m 0 0" fill="#2e3436"/> |
|
+ </g> |
|
+ <g clip-path="url(#w)" mask="url(#v)" transform="matrix(1 0 0 1 -660 -222)"> |
|
+ <path d="m 206.5 144.160156 c 0.277344 0 0.5 0.222656 0.5 0.5 v 1 c 0 0.277344 -0.222656 0.5 -0.5 0.5 s -0.5 -0.222656 -0.5 -0.5 v -1 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 z m 0 0" fill="#2e3436"/> |
|
+ </g> |
|
+ <g clip-path="url(#y)" mask="url(#x)" transform="matrix(1 0 0 1 -660 -222)"> |
|
+ <path d="m 229.5 143.160156 c -0.546875 0 -1 0.457032 -1 1 c 0 0.546875 0.453125 1 1 1 s 1 -0.453125 1 -1 c 0 -0.542968 -0.453125 -1 -1 -1 z m 0 0" fill="#2e3436"/> |
|
+ </g> |
|
+ <g clip-path="url(#A)" mask="url(#z)" transform="matrix(1 0 0 1 -660 -222)"> |
|
+ <path d="m 226.453125 143.160156 c -0.519531 0 -0.953125 0.433594 -0.953125 0.953125 v 0.09375 c 0 0.519531 0.433594 0.953125 0.953125 0.953125 h 0.09375 c 0.519531 0 0.953125 -0.433594 0.953125 -0.953125 v -0.09375 c 0 -0.519531 -0.433594 -0.953125 -0.953125 -0.953125 z m 0 0" fill="#2e3436"/> |
|
+ </g> |
|
+</svg> |
|
diff --git a/panels/power/icons/meson.build b/panels/power/icons/meson.build |
|
index 8165371ea..c56bc65b7 100644 |
|
--- a/panels/power/icons/meson.build |
|
+++ b/panels/power/icons/meson.build |
|
@@ -13,3 +13,8 @@ foreach icon_size: icon_sizes |
|
install_dir: join_paths(control_center_icondir, 'hicolor', icon_size, 'apps') |
|
) |
|
endforeach |
|
+ |
|
+install_data( |
|
+ 'info-symbolic.svg', |
|
+ install_dir: join_paths(control_center_icondir, 'hicolor', 'scalable', 'status') |
|
+) |
|
diff --git a/panels/power/meson.build b/panels/power/meson.build |
|
index 625059dd2..af04b98ed 100644 |
|
--- a/panels/power/meson.build |
|
+++ b/panels/power/meson.build |
|
@@ -22,6 +22,7 @@ sources = files( |
|
'cc-brightness-scale.c', |
|
'cc-power-panel.c', |
|
'cc-power-profile-row.c', |
|
+ 'cc-power-profile-info-row.c' |
|
) |
|
|
|
sources += gnome.mkenums_simple( |
|
diff --git a/panels/power/power.gresource.xml b/panels/power/power.gresource.xml |
|
index 31e92b415..5a33c8e60 100644 |
|
--- a/panels/power/power.gresource.xml |
|
+++ b/panels/power/power.gresource.xml |
|
@@ -4,6 +4,7 @@ |
|
<file preprocess="xml-stripblanks">cc-battery-row.ui</file> |
|
<file preprocess="xml-stripblanks">cc-power-panel.ui</file> |
|
<file preprocess="xml-stripblanks">cc-power-profile-row.ui</file> |
|
+ <file preprocess="xml-stripblanks">cc-power-profile-info-row.ui</file> |
|
<file>battery-levels.css</file> |
|
<file>power-profiles.css</file> |
|
</gresource> |
|
-- |
|
2.32.0 |
|
|
|
|
|
From 1a80fda8cdbd2226a5663f0fa572dd72210722a6 Mon Sep 17 00:00:00 2001 |
|
From: Bastien Nocera <hadess@hadess.net> |
|
Date: Fri, 2 Apr 2021 13:10:19 +0200 |
|
Subject: [PATCH 14/33] power: Handle new power-profiles-daemon API |
|
|
|
Handle the new PerformanceDegraded property to replace |
|
PerformanceInhibited. |
|
--- |
|
panels/power/cc-power-panel.c | 53 +++++++++++++++++++++++++++++++--- |
|
panels/power/cc-power-panel.ui | 11 +++++++ |
|
2 files changed, 60 insertions(+), 4 deletions(-) |
|
|
|
diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c |
|
index 8acf62dee..51196a8c4 100644 |
|
--- a/panels/power/cc-power-panel.c |
|
+++ b/panels/power/cc-power-panel.c |
|
@@ -89,6 +89,7 @@ struct _CcPowerPanel |
|
GtkSwitch *mobile_switch; |
|
HdyComboRow *power_button_row; |
|
GtkListBox *power_profile_listbox; |
|
+ GtkListBox *power_profile_info_listbox; |
|
HdyPreferencesGroup *power_profile_section; |
|
GtkSizeGroup *row_sizegroup; |
|
GtkComboBox *suspend_on_battery_delay_combo; |
|
@@ -119,6 +120,7 @@ struct _CcPowerPanel |
|
guint power_profiles_prop_id; |
|
CcPowerProfileRow *power_profiles_row[NUM_CC_POWER_PROFILES]; |
|
gboolean power_profiles_in_update; |
|
+ gboolean has_performance_degraded; |
|
|
|
#ifdef HAVE_NETWORK_MANAGER |
|
NMClient *nm_client; |
|
@@ -1365,6 +1367,37 @@ performance_profile_set_inhibited (CcPowerPanel *self, |
|
cc_power_profile_row_set_performance_inhibited (row, performance_inhibited); |
|
} |
|
|
|
+static void |
|
+performance_profile_set_degraded (CcPowerPanel *self) |
|
+{ |
|
+ g_autoptr(GVariant) variant = NULL; |
|
+ const char *degraded, *text; |
|
+ CcPowerProfileInfoRow *row; |
|
+ |
|
+ empty_listbox (self->power_profile_info_listbox); |
|
+ gtk_widget_hide (GTK_WIDGET (self->power_profile_info_listbox)); |
|
+ |
|
+ variant = g_dbus_proxy_get_cached_property (self->power_profiles_proxy, "PerformanceDegraded"); |
|
+ if (!variant) |
|
+ return; |
|
+ degraded = g_variant_get_string (variant, NULL); |
|
+ if (*degraded == '\0') |
|
+ return; |
|
+ |
|
+ gtk_widget_show (GTK_WIDGET (self->power_profile_info_listbox)); |
|
+ |
|
+ if (g_str_equal (degraded, "high-operating-temperature")) |
|
+ text = _("Performance mode temporarily disabled due to high operating temperature."); |
|
+ else if (g_str_equal (degraded, "lap-detected")) |
|
+ text = _("Lap detected: performance mode temporarily disabled. Move the device to a stable surface to restore."); |
|
+ else |
|
+ text = _("Performance mode temporarily disabled."); |
|
+ |
|
+ row = cc_power_profile_info_row_new (text); |
|
+ gtk_widget_show (GTK_WIDGET (row)); |
|
+ gtk_container_add (GTK_CONTAINER (self->power_profile_info_listbox), GTK_WIDGET (row)); |
|
+} |
|
+ |
|
static void |
|
power_profiles_row_activated_cb (GtkListBox *box, |
|
GtkListBoxRow *box_row, |
|
@@ -1420,8 +1453,13 @@ power_profiles_properties_changed_cb (CcPowerPanel *self, |
|
{ |
|
if (g_strcmp0 (key, "PerformanceInhibited") == 0) |
|
{ |
|
- performance_profile_set_inhibited (self, |
|
- g_variant_get_string (value, NULL)); |
|
+ if (!self->has_performance_degraded) |
|
+ performance_profile_set_inhibited (self, |
|
+ g_variant_get_string (value, NULL)); |
|
+ } |
|
+ else if (g_strcmp0 (key, "PerformanceDegraded") == 0) |
|
+ { |
|
+ performance_profile_set_degraded (self); |
|
} |
|
else if (g_strcmp0 (key, "ActiveProfile") == 0) |
|
{ |
|
@@ -1504,7 +1542,8 @@ setup_power_profiles (CcPowerPanel *self) |
|
g_autoptr(GVariant) props = NULL; |
|
guint i, num_children; |
|
g_autoptr(GError) error = NULL; |
|
- const char *performance_inhibited; |
|
+ const char *performance_inhibited = NULL; |
|
+ const char *performance_degraded; |
|
const char *active_profile; |
|
g_autoptr(GVariant) profiles = NULL; |
|
GtkRadioButton *last_button; |
|
@@ -1557,7 +1596,12 @@ setup_power_profiles (CcPowerPanel *self) |
|
gtk_widget_show (GTK_WIDGET (self->power_profile_section)); |
|
|
|
props = g_variant_get_child_value (variant, 0); |
|
- performance_inhibited = variant_lookup_string (props, "PerformanceInhibited"); |
|
+ performance_degraded = variant_lookup_string (props, "PerformanceDegraded"); |
|
+ self->has_performance_degraded = performance_degraded != NULL; |
|
+ if (performance_degraded == NULL) |
|
+ performance_inhibited = variant_lookup_string (props, "PerformanceInhibited"); |
|
+ else |
|
+ performance_profile_set_degraded (self); |
|
active_profile = variant_lookup_string (props, "ActiveProfile"); |
|
|
|
last_button = NULL; |
|
@@ -1715,6 +1759,7 @@ cc_power_panel_class_init (CcPowerPanelClass *klass) |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, mobile_switch); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, power_button_row); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, power_profile_listbox); |
|
+ gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, power_profile_info_listbox); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, power_profile_section); |
|
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); |
|
diff --git a/panels/power/cc-power-panel.ui b/panels/power/cc-power-panel.ui |
|
index 8e999c6d5..d8283c556 100644 |
|
--- a/panels/power/cc-power-panel.ui |
|
+++ b/panels/power/cc-power-panel.ui |
|
@@ -123,6 +123,17 @@ |
|
</style> |
|
</object> |
|
</child> |
|
+ <child> |
|
+ <object class="GtkListBox" id="power_profile_info_listbox"> |
|
+ <property name="visible">False</property> |
|
+ <property name="selection-mode">none</property> |
|
+ <property name="margin_top">12</property> |
|
+ <signal name="keynav-failed" handler="keynav_failed_cb" object="CcPowerPanel" swapped="yes"/> |
|
+ <style> |
|
+ <class name="content"/> |
|
+ </style> |
|
+ </object> |
|
+ </child> |
|
</object> |
|
</child> |
|
<child> |
|
-- |
|
2.32.0 |
|
|
|
|
|
From 7254da88faa5cebd43db735746eb20b2b548a462 Mon Sep 17 00:00:00 2001 |
|
From: Bastien Nocera <hadess@hadess.net> |
|
Date: Fri, 16 Jul 2021 10:00:12 +0200 |
|
Subject: [PATCH 15/33] power: Prepare for adding more power profile info boxes |
|
|
|
Rename and re-indent the code that adds the power profile info boxes to |
|
prepare for adding more info boxes when needed. |
|
--- |
|
panels/power/cc-power-panel.c | 46 ++++++++++++++++++----------------- |
|
1 file changed, 24 insertions(+), 22 deletions(-) |
|
|
|
diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c |
|
index 51196a8c4..1869be065 100644 |
|
--- a/panels/power/cc-power-panel.c |
|
+++ b/panels/power/cc-power-panel.c |
|
@@ -1368,34 +1368,35 @@ performance_profile_set_inhibited (CcPowerPanel *self, |
|
} |
|
|
|
static void |
|
-performance_profile_set_degraded (CcPowerPanel *self) |
|
+power_profile_update_info_boxes (CcPowerPanel *self) |
|
{ |
|
- g_autoptr(GVariant) variant = NULL; |
|
- const char *degraded, *text; |
|
+ g_autoptr(GVariant) degraded_variant = NULL; |
|
+ const char *degraded = NULL; |
|
CcPowerProfileInfoRow *row; |
|
|
|
empty_listbox (self->power_profile_info_listbox); |
|
gtk_widget_hide (GTK_WIDGET (self->power_profile_info_listbox)); |
|
|
|
- variant = g_dbus_proxy_get_cached_property (self->power_profiles_proxy, "PerformanceDegraded"); |
|
- if (!variant) |
|
- return; |
|
- degraded = g_variant_get_string (variant, NULL); |
|
- if (*degraded == '\0') |
|
- return; |
|
+ degraded_variant = g_dbus_proxy_get_cached_property (self->power_profiles_proxy, "PerformanceDegraded"); |
|
+ if (degraded_variant) |
|
+ degraded = g_variant_get_string (degraded_variant, NULL); |
|
+ if (degraded && *degraded != '\0') |
|
+ { |
|
+ const char *text; |
|
|
|
- gtk_widget_show (GTK_WIDGET (self->power_profile_info_listbox)); |
|
+ gtk_widget_show (GTK_WIDGET (self->power_profile_info_listbox)); |
|
|
|
- if (g_str_equal (degraded, "high-operating-temperature")) |
|
- text = _("Performance mode temporarily disabled due to high operating temperature."); |
|
- else if (g_str_equal (degraded, "lap-detected")) |
|
- text = _("Lap detected: performance mode temporarily disabled. Move the device to a stable surface to restore."); |
|
- else |
|
- text = _("Performance mode temporarily disabled."); |
|
+ if (g_str_equal (degraded, "high-operating-temperature")) |
|
+ text = _("Performance mode temporarily disabled due to high operating temperature."); |
|
+ else if (g_str_equal (degraded, "lap-detected")) |
|
+ text = _("Lap detected: performance mode temporarily disabled. Move the device to a stable surface to restore."); |
|
+ else |
|
+ text = _("Performance mode temporarily disabled."); |
|
|
|
- row = cc_power_profile_info_row_new (text); |
|
- gtk_widget_show (GTK_WIDGET (row)); |
|
- gtk_container_add (GTK_CONTAINER (self->power_profile_info_listbox), GTK_WIDGET (row)); |
|
+ row = cc_power_profile_info_row_new (text); |
|
+ gtk_widget_show (GTK_WIDGET (row)); |
|
+ gtk_container_add (GTK_CONTAINER (self->power_profile_info_listbox), GTK_WIDGET (row)); |
|
+ } |
|
} |
|
|
|
static void |
|
@@ -1459,7 +1460,7 @@ power_profiles_properties_changed_cb (CcPowerPanel *self, |
|
} |
|
else if (g_strcmp0 (key, "PerformanceDegraded") == 0) |
|
{ |
|
- performance_profile_set_degraded (self); |
|
+ power_profile_update_info_boxes (self); |
|
} |
|
else if (g_strcmp0 (key, "ActiveProfile") == 0) |
|
{ |
|
@@ -1600,8 +1601,6 @@ setup_power_profiles (CcPowerPanel *self) |
|
self->has_performance_degraded = performance_degraded != NULL; |
|
if (performance_degraded == NULL) |
|
performance_inhibited = variant_lookup_string (props, "PerformanceInhibited"); |
|
- else |
|
- performance_profile_set_degraded (self); |
|
active_profile = variant_lookup_string (props, "ActiveProfile"); |
|
|
|
last_button = NULL; |
|
@@ -1649,6 +1648,9 @@ setup_power_profiles (CcPowerPanel *self) |
|
|
|
self->power_profiles_prop_id = g_signal_connect_object (G_OBJECT (self->power_profiles_proxy), "g-properties-changed", |
|
G_CALLBACK (power_profiles_properties_changed_cb), self, G_CONNECT_SWAPPED); |
|
+ |
|
+ if (self->has_performance_degraded) |
|
+ power_profile_update_info_boxes (self); |
|
} |
|
|
|
static void |
|
-- |
|
2.32.0 |
|
|
|
|
|
From 173904b7eeea145c38065939a1dd8a408745f3c9 Mon Sep 17 00:00:00 2001 |
|
From: Bastien Nocera <hadess@hadess.net> |
|
Date: Fri, 16 Jul 2021 10:07:28 +0200 |
|
Subject: [PATCH 16/33] power: Move variant_lookup_string() helper function |
|
|
|
--- |
|
panels/power/cc-power-panel.c | 24 ++++++++++++------------ |
|
1 file changed, 12 insertions(+), 12 deletions(-) |
|
|
|
diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c |
|
index 1869be065..4633627c2 100644 |
|
--- a/panels/power/cc-power-panel.c |
|
+++ b/panels/power/cc-power-panel.c |
|
@@ -1343,6 +1343,18 @@ setup_power_saving (CcPowerPanel *self) |
|
#endif |
|
} |
|
|
|
+static const char * |
|
+variant_lookup_string (GVariant *dict, |
|
+ const char *key) |
|
+{ |
|
+ GVariant *variant; |
|
+ |
|
+ variant = g_variant_lookup_value (dict, key, G_VARIANT_TYPE_STRING); |
|
+ if (!variant) |
|
+ return NULL; |
|
+ return g_variant_get_string (variant, NULL); |
|
+} |
|
+ |
|
static void |
|
performance_profile_set_active (CcPowerPanel *self, |
|
const char *profile_str) |
|
@@ -1427,18 +1439,6 @@ perf_profile_list_box_sort (GtkListBoxRow *row1, |
|
return 0; |
|
} |
|
|
|
-static const char * |
|
-variant_lookup_string (GVariant *dict, |
|
- const char *key) |
|
-{ |
|
- GVariant *variant; |
|
- |
|
- variant = g_variant_lookup_value (dict, key, G_VARIANT_TYPE_STRING); |
|
- if (!variant) |
|
- return NULL; |
|
- return g_variant_get_string (variant, NULL); |
|
-} |
|
- |
|
static void |
|
power_profiles_properties_changed_cb (CcPowerPanel *self, |
|
GVariant *changed_properties, |
|
-- |
|
2.32.0 |
|
|
|
|
|
From f49c47787de81fa39f100f3903d2d886905cd4c7 Mon Sep 17 00:00:00 2001 |
|
From: Bastien Nocera <hadess@hadess.net> |
|
Date: Fri, 16 Jul 2021 11:01:52 +0200 |
|
Subject: [PATCH 17/33] power: Show power profile info boxes for profile holds |
|
|
|
Applications can request that power-profiles-daemon "hold" a particular |
|
power profile for the duration of a task or event, such as launching a |
|
taxing application, or saving power because of low battery. |
|
|
|
Show those holds in the same type of info boxes we already use to show |
|
"degraded" performance. |
|
|
|
See https://gitlab.freedesktop.org/hadess/power-profiles-daemon/-/merge_requests/46 |
|
--- |
|
panels/power/cc-power-panel.c | 77 ++++++++++++++++++++++++++++++++++- |
|
1 file changed, 76 insertions(+), 1 deletion(-) |
|
|
|
diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c |
|
index 4633627c2..4f1989cdf 100644 |
|
--- a/panels/power/cc-power-panel.c |
|
+++ b/panels/power/cc-power-panel.c |
|
@@ -24,6 +24,7 @@ |
|
#include <libupower-glib/upower.h> |
|
#include <glib/gi18n.h> |
|
#include <gnome-settings-daemon/gsd-enums.h> |
|
+#include <gio/gdesktopappinfo.h> |
|
#include <handy.h> |
|
|
|
#ifdef HAVE_NETWORK_MANAGER |
|
@@ -1383,12 +1384,25 @@ static void |
|
power_profile_update_info_boxes (CcPowerPanel *self) |
|
{ |
|
g_autoptr(GVariant) degraded_variant = NULL; |
|
+ g_autoptr(GVariant) holds_variant = NULL; |
|
+ g_autoptr(GVariant) profile_variant = NULL; |
|
+ guint i, num_children; |
|
const char *degraded = NULL; |
|
+ const char *profile; |
|
CcPowerProfileInfoRow *row; |
|
+ int next_insert = 0; |
|
|
|
empty_listbox (self->power_profile_info_listbox); |
|
gtk_widget_hide (GTK_WIDGET (self->power_profile_info_listbox)); |
|
|
|
+ profile_variant = g_dbus_proxy_get_cached_property (self->power_profiles_proxy, "ActiveProfile"); |
|
+ if (!profile_variant) |
|
+ { |
|
+ g_warning ("No 'ActiveProfile' property on power-profiles-daemon service"); |
|
+ return; |
|
+ } |
|
+ profile = g_variant_get_string (profile_variant, NULL); |
|
+ |
|
degraded_variant = g_dbus_proxy_get_cached_property (self->power_profiles_proxy, "PerformanceDegraded"); |
|
if (degraded_variant) |
|
degraded = g_variant_get_string (degraded_variant, NULL); |
|
@@ -1408,6 +1422,66 @@ power_profile_update_info_boxes (CcPowerPanel *self) |
|
row = cc_power_profile_info_row_new (text); |
|
gtk_widget_show (GTK_WIDGET (row)); |
|
gtk_container_add (GTK_CONTAINER (self->power_profile_info_listbox), GTK_WIDGET (row)); |
|
+ if (g_str_equal (profile, "performance")) |
|
+ next_insert = 1; |
|
+ } |
|
+ |
|
+ holds_variant = g_dbus_proxy_get_cached_property (self->power_profiles_proxy, "ActiveProfileHolds"); |
|
+ if (!holds_variant) |
|
+ { |
|
+ g_warning ("No 'ActiveProfileHolds' property on power-profiles-daemon service"); |
|
+ return; |
|
+ } |
|
+ |
|
+ num_children = g_variant_n_children (holds_variant); |
|
+ for (i = 0; i < num_children; i++) |
|
+ { |
|
+ g_autoptr(GDesktopAppInfo) app_info = NULL; |
|
+ g_autoptr(GVariant) hold_variant = NULL; |
|
+ g_autofree char *text = NULL; |
|
+ const char *app_id, *held_profile, *reason, *name; |
|
+ |
|
+ hold_variant = g_variant_get_child_value (holds_variant, i); |
|
+ if (!hold_variant || !g_variant_is_of_type (hold_variant, G_VARIANT_TYPE ("a{sv}"))) |
|
+ continue; |
|
+ |
|
+ app_id = variant_lookup_string (hold_variant, "ApplicationId"); |
|
+ if (!app_id) |
|
+ continue; |
|
+ app_info = g_desktop_app_info_new (app_id); |
|
+ name = app_info ? g_app_info_get_name (G_APP_INFO (app_info)) : app_id; |
|
+ held_profile = variant_lookup_string (hold_variant, "Profile"); |
|
+ reason = variant_lookup_string (hold_variant, "Reason"); |
|
+ g_debug ("Adding info row for %s hold by %s: %s", held_profile, app_id, reason); |
|
+ |
|
+ if (g_strcmp0 (held_profile, "power-saver") == 0 && |
|
+ g_strcmp0 (app_id, "org.gnome.SettingsDaemon.Power") == 0) |
|
+ { |
|
+ text = g_strdup (_("Low battery: power saver enabled. Previous mode will be restored when battery is sufficiently charged.")); |
|
+ } |
|
+ else |
|
+ { |
|
+ switch (cc_power_profile_from_str (held_profile)) |
|
+ { |
|
+ case CC_POWER_PROFILE_POWER_SAVER: |
|
+ /* translators: "%s" is an application name */ |
|
+ text = g_strdup_printf (_("Power Saver mode activated by “%s”."), name); |
|
+ break; |
|
+ case CC_POWER_PROFILE_PERFORMANCE: |
|
+ /* translators: "%s" is an application name */ |
|
+ text = g_strdup_printf (_("Performance mode activated by “%s”."), name); |
|
+ break; |
|
+ default: |
|
+ g_assert_not_reached (); |
|
+ } |
|
+ } |
|
+ |
|
+ row = cc_power_profile_info_row_new (text); |
|
+ gtk_widget_show (GTK_WIDGET (row)); |
|
+ if (g_strcmp0 (held_profile, profile) != 0) |
|
+ gtk_list_box_insert (GTK_LIST_BOX (self->power_profile_info_listbox), GTK_WIDGET (row), -1); |
|
+ else |
|
+ gtk_list_box_insert (GTK_LIST_BOX (self->power_profile_info_listbox), GTK_WIDGET (row), next_insert); |
|
} |
|
} |
|
|
|
@@ -1458,7 +1532,8 @@ power_profiles_properties_changed_cb (CcPowerPanel *self, |
|
performance_profile_set_inhibited (self, |
|
g_variant_get_string (value, NULL)); |
|
} |
|
- else if (g_strcmp0 (key, "PerformanceDegraded") == 0) |
|
+ else if (g_strcmp0 (key, "PerformanceDegraded") == 0 || |
|
+ g_strcmp0 (key, "ActiveProfileHolds") == 0) |
|
{ |
|
power_profile_update_info_boxes (self); |
|
} |
|
-- |
|
2.32.0 |
|
|
|
|
|
From d7cabb849c425fd84e85a981bcd56a6df1d87868 Mon Sep 17 00:00:00 2001 |
|
From: Bastien Nocera <hadess@hadess.net> |
|
Date: Fri, 16 Jul 2021 11:32:37 +0200 |
|
Subject: [PATCH 18/33] power: Tweak power profile info boxes horizontal |
|
spacing |
|
|
|
A bit too much whitespace around the info icon. |
|
--- |
|
panels/power/cc-power-profile-info-row.ui | 8 ++++---- |
|
1 file changed, 4 insertions(+), 4 deletions(-) |
|
|
|
diff --git a/panels/power/cc-power-profile-info-row.ui b/panels/power/cc-power-profile-info-row.ui |
|
index d9291ff16..bc49a24ac 100644 |
|
--- a/panels/power/cc-power-profile-info-row.ui |
|
+++ b/panels/power/cc-power-profile-info-row.ui |
|
@@ -8,16 +8,16 @@ |
|
<object class="GtkBox"> |
|
<property name="visible">True</property> |
|
<property name="orientation">horizontal</property> |
|
- <property name="margin-start">12</property> |
|
- <property name="margin-end">12</property> |
|
+ <property name="margin-start">8</property> |
|
+ <property name="margin-end">8</property> |
|
<property name="margin-top">8</property> |
|
<property name="margin-bottom">8</property> |
|
- <property name="spacing">12</property> |
|
+ <property name="spacing">8</property> |
|
<child> |
|
<object class="GtkImage" id="icon_image"> |
|
<property name="visible">True</property> |
|
<property name="margin-start">6</property> |
|
- <property name="margin-end">18</property> |
|
+ <property name="margin-end">6</property> |
|
<property name="icon-name">info-symbolic</property> |
|
<property name="icon-size">5</property> |
|
<style> |
|
-- |
|
2.32.0 |
|
|
|
|
|
From 941dfe6403ae0eb68aef76754691f56b07999635 Mon Sep 17 00:00:00 2001 |
|
From: Bastien Nocera <hadess@hadess.net> |
|
Date: Fri, 16 Jul 2021 11:33:38 +0200 |
|
Subject: [PATCH 19/33] power: Reword lap mode info message |
|
|
|
Reword the lap mode info message slightly as the performance mode might |
|
not have been what the user requested, but the warning should stay until |
|
cleared nonetheless. |
|
--- |
|
panels/power/cc-power-panel.c | 2 +- |
|
1 file changed, 1 insertion(+), 1 deletion(-) |
|
|
|
diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c |
|
index 4f1989cdf..740d52c64 100644 |
|
--- a/panels/power/cc-power-panel.c |
|
+++ b/panels/power/cc-power-panel.c |
|
@@ -1415,7 +1415,7 @@ power_profile_update_info_boxes (CcPowerPanel *self) |
|
if (g_str_equal (degraded, "high-operating-temperature")) |
|
text = _("Performance mode temporarily disabled due to high operating temperature."); |
|
else if (g_str_equal (degraded, "lap-detected")) |
|
- text = _("Lap detected: performance mode temporarily disabled. Move the device to a stable surface to restore."); |
|
+ text = _("Lap detected: performance mode temporarily unavailable. Move the device to a stable surface to restore."); |
|
else |
|
text = _("Performance mode temporarily disabled."); |
|
|
|
-- |
|
2.32.0 |
|
|
|
|
|
From 4dff29aab988021aab3f623899271b33240c0c86 Mon Sep 17 00:00:00 2001 |
|
From: Bastien Nocera <hadess@hadess.net> |
|
Date: Wed, 21 Jul 2021 12:26:39 +0200 |
|
Subject: [PATCH 20/33] power: Fix D-Bus proxy leak |
|
|
|
--- |
|
panels/power/cc-power-panel.c | 1 + |
|
1 file changed, 1 insertion(+) |
|
|
|
diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c |
|
index 740d52c64..21183f39c 100644 |
|
--- a/panels/power/cc-power-panel.c |
|
+++ b/panels/power/cc-power-panel.c |
|
@@ -151,6 +151,7 @@ cc_power_panel_dispose (GObject *object) |
|
g_clear_object (&self->bt_rfkill); |
|
g_clear_object (&self->bt_properties); |
|
g_clear_object (&self->iio_proxy); |
|
+ g_clear_object (&self->power_profiles_proxy); |
|
#ifdef HAVE_NETWORK_MANAGER |
|
g_clear_object (&self->nm_client); |
|
#endif |
|
-- |
|
2.32.0 |
|
|
|
|
|
From 99140ea853c6c6ce0e4c29b3edb28a07e7aa5fb6 Mon Sep 17 00:00:00 2001 |
|
From: Bastien Nocera <hadess@hadess.net> |
|
Date: Wed, 21 Jul 2021 12:29:55 +0200 |
|
Subject: [PATCH 21/33] power: Add UI for "power-saver profile when battery is |
|
low" |
|
|
|
See https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/merge_requests/247 |
|
--- |
|
panels/power/cc-power-panel.c | 23 +++++++++++++++++++++++ |
|
panels/power/cc-power-panel.ui | 15 +++++++++++++++ |
|
2 files changed, 38 insertions(+) |
|
|
|
diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c |
|
index 21183f39c..3e1b323f4 100644 |
|
--- a/panels/power/cc-power-panel.c |
|
+++ b/panels/power/cc-power-panel.c |
|
@@ -92,6 +92,8 @@ struct _CcPowerPanel |
|
GtkListBox *power_profile_listbox; |
|
GtkListBox *power_profile_info_listbox; |
|
HdyPreferencesGroup *power_profile_section; |
|
+ HdyActionRow *power_saver_low_battery_row; |
|
+ GtkSwitch *power_saver_low_battery_switch; |
|
GtkSizeGroup *row_sizegroup; |
|
GtkComboBox *suspend_on_battery_delay_combo; |
|
GtkLabel *suspend_on_battery_delay_label; |
|
@@ -257,6 +259,18 @@ empty_listbox (GtkListBox *listbox) |
|
gtk_container_remove (GTK_CONTAINER (listbox), l->data); |
|
} |
|
|
|
+static void |
|
+update_power_saver_low_battery_row_visibility (CcPowerPanel *self) |
|
+{ |
|
+ g_autoptr(UpDevice) composite = NULL; |
|
+ UpDeviceKind kind; |
|
+ |
|
+ composite = up_client_get_display_device (self->up_client); |
|
+ g_object_get (composite, "kind", &kind, NULL); |
|
+ gtk_widget_set_visible (GTK_WIDGET (self->power_saver_low_battery_row), |
|
+ self->power_profiles_proxy && kind == UP_DEVICE_KIND_BATTERY); |
|
+} |
|
+ |
|
static void |
|
up_client_changed (CcPowerPanel *self) |
|
{ |
|
@@ -427,6 +441,8 @@ up_client_changed (CcPowerPanel *self) |
|
add_device (self, device); |
|
} |
|
} |
|
+ |
|
+ update_power_saver_low_battery_row_visibility (self); |
|
} |
|
|
|
static void |
|
@@ -1727,6 +1743,8 @@ setup_power_profiles (CcPowerPanel *self) |
|
|
|
if (self->has_performance_degraded) |
|
power_profile_update_info_boxes (self); |
|
+ |
|
+ update_power_saver_low_battery_row_visibility (self); |
|
} |
|
|
|
static void |
|
@@ -1839,6 +1857,8 @@ cc_power_panel_class_init (CcPowerPanelClass *klass) |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, power_profile_listbox); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, power_profile_info_listbox); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, power_profile_section); |
|
+ gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, power_saver_low_battery_row); |
|
+ gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, power_saver_low_battery_switch); |
|
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); |
|
@@ -1895,6 +1915,9 @@ cc_power_panel_init (CcPowerPanel *self) |
|
setup_power_profiles (self); |
|
|
|
setup_power_saving (self); |
|
+ g_settings_bind (self->gsd_settings, "power-saver-profile-on-low-battery", |
|
+ self->power_saver_low_battery_switch, "active", |
|
+ G_SETTINGS_BIND_DEFAULT); |
|
|
|
setup_general_section (self); |
|
|
|
diff --git a/panels/power/cc-power-panel.ui b/panels/power/cc-power-panel.ui |
|
index d8283c556..bc58e7462 100644 |
|
--- a/panels/power/cc-power-panel.ui |
|
+++ b/panels/power/cc-power-panel.ui |
|
@@ -206,6 +206,21 @@ |
|
<signal name="notify::selected-index" handler="blank_screen_row_changed_cb" object="CcPowerPanel" swapped="yes"/> |
|
</object> |
|
</child> |
|
+ <child> |
|
+ <object class="HdyActionRow" id="power_saver_low_battery_row"> |
|
+ <property name="visible">False</property> |
|
+ <property name="title" translatable="yes">Automatic Power Saver</property> |
|
+ <property name="subtitle" translatable="yes">Enables power saver mode when battery is low.</property> |
|
+ <property name="use_underline">True</property> |
|
+ <property name="activatable_widget">power_saver_low_battery_switch</property> |
|
+ <child> |
|
+ <object class="GtkSwitch" id="power_saver_low_battery_switch"> |
|
+ <property name="visible">True</property> |
|
+ <property name="valign">center</property> |
|
+ </object> |
|
+ </child> |
|
+ </object> |
|
+ </child> |
|
<child> |
|
<object class="HdyActionRow" id="automatic_suspend_row"> |
|
<property name="visible">False</property> |
|
-- |
|
2.32.0 |
|
|
|
|
|
From 301045260461f4ab5f6e41ebadbd94935411edb2 Mon Sep 17 00:00:00 2001 |
|
From: Bastien Nocera <hadess@hadess.net> |
|
Date: Tue, 27 Jul 2021 15:49:26 +0200 |
|
Subject: [PATCH 22/33] power: Fix logic when showing profile holds |
|
|
|
A logic error meant that the power profiles info boxes container |
|
would not be shown if there wasn't a "degraded" performance as well. |
|
|
|
Spotted by Allan Day |
|
--- |
|
panels/power/cc-power-panel.c | 3 +++ |
|
1 file changed, 3 insertions(+) |
|
|
|
diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c |
|
index 3e1b323f4..a5c66aa9d 100644 |
|
--- a/panels/power/cc-power-panel.c |
|
+++ b/panels/power/cc-power-panel.c |
|
@@ -1465,6 +1465,9 @@ power_profile_update_info_boxes (CcPowerPanel *self) |
|
app_id = variant_lookup_string (hold_variant, "ApplicationId"); |
|
if (!app_id) |
|
continue; |
|
+ |
|
+ gtk_widget_show (GTK_WIDGET (self->power_profile_info_listbox)); |
|
+ |
|
app_info = g_desktop_app_info_new (app_id); |
|
name = app_info ? g_app_info_get_name (G_APP_INFO (app_info)) : app_id; |
|
held_profile = variant_lookup_string (hold_variant, "Profile"); |
|
-- |
|
2.32.0 |
|
|
|
|
|
From ac0afc4486403ee61bd5bcc51b22cefb5bba9e8c Mon Sep 17 00:00:00 2001 |
|
From: Bastien Nocera <hadess@hadess.net> |
|
Date: Thu, 22 Jul 2021 18:29:43 +0200 |
|
Subject: [PATCH 23/33] power: Remove Wi-Fi and WWAN "power saving" toggles |
|
|
|
It's pretty clear from their experiences on smartphones that our users |
|
know that Wi-Fi and other wireless technologies use enough battery that |
|
turning them off is a power saving move. |
|
|
|
The switches and text were also pretty confusing as we would be turning |
|
"off" the devices to turn "on" the power saving. |
|
--- |
|
panels/power/cc-power-panel.c | 207 --------------------------------- |
|
panels/power/cc-power-panel.ui | 34 ------ |
|
panels/power/meson.build | 4 - |
|
3 files changed, 245 deletions(-) |
|
|
|
diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c |
|
index a5c66aa9d..97d787b95 100644 |
|
--- a/panels/power/cc-power-panel.c |
|
+++ b/panels/power/cc-power-panel.c |
|
@@ -27,10 +27,6 @@ |
|
#include <gio/gdesktopappinfo.h> |
|
#include <handy.h> |
|
|
|
-#ifdef HAVE_NETWORK_MANAGER |
|
-#include <NetworkManager.h> |
|
-#endif |
|
- |
|
#include "shell/cc-object-storage.h" |
|
#include "list-box-helper.h" |
|
#include "cc-battery-row.h" |
|
@@ -86,8 +82,6 @@ struct _CcPowerPanel |
|
GtkListBoxRow *kbd_brightness_row; |
|
CcBrightnessScale *kbd_brightness_scale; |
|
GtkSizeGroup *level_sizegroup; |
|
- GtkListBoxRow *mobile_row; |
|
- GtkSwitch *mobile_switch; |
|
HdyComboRow *power_button_row; |
|
GtkListBox *power_profile_listbox; |
|
GtkListBox *power_profile_info_listbox; |
|
@@ -102,8 +96,6 @@ struct _CcPowerPanel |
|
GtkComboBox *suspend_on_ac_delay_combo; |
|
GtkLabel *suspend_on_ac_label; |
|
GtkSwitch *suspend_on_ac_switch; |
|
- GtkListBoxRow *wifi_row; |
|
- GtkSwitch *wifi_switch; |
|
|
|
GSettings *gsd_settings; |
|
GSettings *session_settings; |
|
@@ -124,10 +116,6 @@ struct _CcPowerPanel |
|
CcPowerProfileRow *power_profiles_row[NUM_CC_POWER_PROFILES]; |
|
gboolean power_profiles_in_update; |
|
gboolean has_performance_degraded; |
|
- |
|
-#ifdef HAVE_NETWORK_MANAGER |
|
- NMClient *nm_client; |
|
-#endif |
|
}; |
|
|
|
CC_PANEL_REGISTER (CcPowerPanel, cc_power_panel) |
|
@@ -154,9 +142,6 @@ cc_power_panel_dispose (GObject *object) |
|
g_clear_object (&self->bt_properties); |
|
g_clear_object (&self->iio_proxy); |
|
g_clear_object (&self->power_profiles_proxy); |
|
-#ifdef HAVE_NETWORK_MANAGER |
|
- g_clear_object (&self->nm_client); |
|
-#endif |
|
if (self->iio_proxy_watch_id != 0) |
|
g_bus_unwatch_name (self->iio_proxy_watch_id); |
|
self->iio_proxy_watch_id = 0; |
|
@@ -729,184 +714,6 @@ bt_powered_state_changed (CcPowerPanel *self) |
|
g_signal_handlers_unblock_by_func (self->bt_switch, bt_switch_changed_cb, self); |
|
} |
|
|
|
-#ifdef HAVE_NETWORK_MANAGER |
|
-static gboolean |
|
-has_wifi_devices (NMClient *client) |
|
-{ |
|
- const GPtrArray *devices; |
|
- NMDevice *device; |
|
- gint i; |
|
- |
|
- if (!nm_client_get_nm_running (client)) |
|
- return FALSE; |
|
- |
|
- devices = nm_client_get_devices (client); |
|
- if (devices == NULL) |
|
- return FALSE; |
|
- |
|
- for (i = 0; i < devices->len; i++) |
|
- { |
|
- device = g_ptr_array_index (devices, i); |
|
- switch (nm_device_get_device_type (device)) |
|
- { |
|
- case NM_DEVICE_TYPE_WIFI: |
|
- return TRUE; |
|
- default: |
|
- break; |
|
- } |
|
- } |
|
- |
|
- return FALSE; |
|
-} |
|
- |
|
-static void |
|
-wifi_switch_changed_cb (CcPowerPanel *self) |
|
-{ |
|
- gboolean enabled; |
|
- |
|
- enabled = gtk_switch_get_active (self->wifi_switch); |
|
- g_debug ("Setting wifi %s", enabled ? "enabled" : "disabled"); |
|
- nm_client_wireless_set_enabled (self->nm_client, enabled); |
|
-} |
|
- |
|
-static gboolean |
|
-has_mobile_devices (NMClient *client) |
|
-{ |
|
- const GPtrArray *devices; |
|
- NMDevice *device; |
|
- gint i; |
|
- |
|
- if (!nm_client_get_nm_running (client)) |
|
- return FALSE; |
|
- |
|
- devices = nm_client_get_devices (client); |
|
- if (devices == NULL) |
|
- return FALSE; |
|
- |
|
- for (i = 0; i < devices->len; i++) |
|
- { |
|
- device = g_ptr_array_index (devices, i); |
|
- switch (nm_device_get_device_type (device)) |
|
- { |
|
- case NM_DEVICE_TYPE_MODEM: |
|
- return TRUE; |
|
- default: |
|
- break; |
|
- } |
|
- } |
|
- |
|
- return FALSE; |
|
-} |
|
- |
|
-static void |
|
-mobile_switch_changed_cb (CcPowerPanel *self) |
|
-{ |
|
- gboolean enabled; |
|
- |
|
- enabled = gtk_switch_get_active (self->mobile_switch); |
|
- g_debug ("Setting wwan %s", enabled ? "enabled" : "disabled"); |
|
- nm_client_wwan_set_enabled (self->nm_client, enabled); |
|
-} |
|
- |
|
-static void |
|
-nm_client_state_changed (CcPowerPanel *self) |
|
-{ |
|
- gboolean visible; |
|
- gboolean active; |
|
- gboolean sensitive; |
|
- |
|
- visible = has_wifi_devices (self->nm_client); |
|
- active = nm_client_networking_get_enabled (self->nm_client) && |
|
- nm_client_wireless_get_enabled (self->nm_client) && |
|
- nm_client_wireless_hardware_get_enabled (self->nm_client); |
|
- sensitive = nm_client_networking_get_enabled (self->nm_client) && |
|
- nm_client_wireless_hardware_get_enabled (self->nm_client); |
|
- |
|
- g_debug ("wifi state changed to %s", active ? "enabled" : "disabled"); |
|
- |
|
- g_signal_handlers_block_by_func (self->wifi_switch, wifi_switch_changed_cb, self); |
|
- gtk_switch_set_active (self->wifi_switch, active); |
|
- gtk_widget_set_sensitive (GTK_WIDGET (self->wifi_switch), sensitive); |
|
- gtk_widget_set_visible (GTK_WIDGET (self->wifi_row), visible); |
|
- g_signal_handlers_unblock_by_func (self->wifi_switch, wifi_switch_changed_cb, self); |
|
- |
|
- visible = has_mobile_devices (self->nm_client); |
|
- |
|
- /* Set the switch active, if wwan is enabled. */ |
|
- active = nm_client_networking_get_enabled (self->nm_client) && |
|
- (nm_client_wwan_get_enabled (self->nm_client) && |
|
- nm_client_wwan_hardware_get_enabled (self->nm_client)); |
|
- sensitive = nm_client_networking_get_enabled (self->nm_client) && |
|
- nm_client_wwan_hardware_get_enabled (self->nm_client); |
|
- |
|
- g_debug ("mobile state changed to %s", active ? "enabled" : "disabled"); |
|
- |
|
- g_signal_handlers_block_by_func (self->mobile_switch, mobile_switch_changed_cb, self); |
|
- gtk_switch_set_active (self->mobile_switch, active); |
|
- gtk_widget_set_sensitive (GTK_WIDGET (self->mobile_switch), sensitive); |
|
- gtk_widget_set_visible (GTK_WIDGET (self->mobile_row), visible); |
|
- g_signal_handlers_unblock_by_func (self->mobile_switch, mobile_switch_changed_cb, self); |
|
-} |
|
- |
|
-static void |
|
-nm_device_changed (CcPowerPanel *self) |
|
-{ |
|
- gtk_widget_set_visible (GTK_WIDGET (self->wifi_row), has_wifi_devices (self->nm_client)); |
|
- gtk_widget_set_visible (GTK_WIDGET (self->mobile_row), has_mobile_devices (self->nm_client)); |
|
-} |
|
- |
|
-static void |
|
-setup_nm_client (CcPowerPanel *self, |
|
- NMClient *client) |
|
-{ |
|
- self->nm_client = client; |
|
- |
|
- g_signal_connect_object (self->nm_client, "notify", |
|
- G_CALLBACK (nm_client_state_changed), self, G_CONNECT_SWAPPED); |
|
- g_signal_connect_object (self->nm_client, "device-added", |
|
- G_CALLBACK (nm_device_changed), self, G_CONNECT_SWAPPED); |
|
- g_signal_connect_object (self->nm_client, "device-removed", |
|
- G_CALLBACK (nm_device_changed), self, G_CONNECT_SWAPPED); |
|
- |
|
- nm_client_state_changed (self); |
|
- nm_device_changed (self); |
|
-} |
|
- |
|
-static void |
|
-nm_client_ready_cb (GObject *source_object, |
|
- GAsyncResult *res, |
|
- gpointer user_data) |
|
-{ |
|
- CcPowerPanel *self; |
|
- NMClient *client; |
|
- g_autoptr(GError) error = NULL; |
|
- |
|
- client = nm_client_new_finish (res, &error); |
|
- if (!client) |
|
- { |
|
- if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) |
|
- { |
|
- g_warning ("Failed to create NetworkManager client: %s", |
|
- error->message); |
|
- |
|
- self = user_data; |
|
- gtk_widget_set_sensitive (GTK_WIDGET (self->wifi_row), FALSE); |
|
- gtk_widget_set_sensitive (GTK_WIDGET (self->mobile_row), FALSE); |
|
- } |
|
- return; |
|
- } |
|
- |
|
- self = user_data; |
|
- |
|
- /* Setup the client */ |
|
- setup_nm_client (self, client); |
|
- |
|
- /* Store the object in the cache too */ |
|
- cc_object_storage_add_object (CC_OBJECT_NMCLIENT, client); |
|
-} |
|
- |
|
-#endif |
|
- |
|
static gboolean |
|
keynav_failed_cb (CcPowerPanel *self, GtkDirectionType direction, GtkWidget *list) |
|
{ |
|
@@ -1326,14 +1133,6 @@ setup_power_saving (CcPowerPanel *self) |
|
update_automatic_suspend_label (self); |
|
} |
|
|
|
-#ifdef HAVE_NETWORK_MANAGER |
|
- /* Create and store a NMClient instance if it doesn't exist yet */ |
|
- if (cc_object_storage_has_object (CC_OBJECT_NMCLIENT)) |
|
- setup_nm_client (self, cc_object_storage_get_object (CC_OBJECT_NMCLIENT)); |
|
- else |
|
- nm_client_new_async (cc_panel_get_cancellable (CC_PANEL (self)), nm_client_ready_cb, self); |
|
-#endif |
|
- |
|
#ifdef HAVE_BLUETOOTH |
|
self->bt_rfkill = cc_object_storage_create_dbus_proxy_sync (G_BUS_TYPE_SESSION, |
|
G_DBUS_PROXY_FLAGS_NONE, |
|
@@ -1854,8 +1653,6 @@ cc_power_panel_class_init (CcPowerPanelClass *klass) |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, kbd_brightness_row); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, kbd_brightness_scale); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, level_sizegroup); |
|
- 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_row); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, power_profile_listbox); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, power_profile_info_listbox); |
|
@@ -1870,8 +1667,6 @@ cc_power_panel_class_init (CcPowerPanelClass *klass) |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, suspend_on_ac_delay_combo); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, suspend_on_ac_label); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, suspend_on_ac_switch); |
|
- gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, wifi_row); |
|
- gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, wifi_switch); |
|
|
|
gtk_widget_class_bind_template_callback (widget_class, als_switch_changed_cb); |
|
gtk_widget_class_bind_template_callback (widget_class, automatic_suspend_label_mnemonic_activate_cb); |
|
@@ -1880,11 +1675,9 @@ cc_power_panel_class_init (CcPowerPanelClass *klass) |
|
gtk_widget_class_bind_template_callback (widget_class, has_kbd_brightness_cb); |
|
gtk_widget_class_bind_template_callback (widget_class, blank_screen_row_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_row_changed_cb); |
|
gtk_widget_class_bind_template_callback (widget_class, power_profiles_row_activated_cb); |
|
gtk_widget_class_bind_template_callback (widget_class, automatic_suspend_row_activated_cb); |
|
- gtk_widget_class_bind_template_callback (widget_class, wifi_switch_changed_cb); |
|
} |
|
|
|
static void |
|
diff --git a/panels/power/cc-power-panel.ui b/panels/power/cc-power-panel.ui |
|
index bc58e7462..0795f1b70 100644 |
|
--- a/panels/power/cc-power-panel.ui |
|
+++ b/panels/power/cc-power-panel.ui |
|
@@ -237,38 +237,6 @@ |
|
</child> |
|
</object> |
|
</child> |
|
- <child> |
|
- <object class="HdyActionRow" id="wifi_row"> |
|
- <property name="visible">False</property> |
|
- <property name="title" translatable="yes">_Wi-Fi</property> |
|
- <property name="subtitle" translatable="yes">Wi-Fi can be turned off to save power.</property> |
|
- <property name="use_underline">True</property> |
|
- <property name="activatable_widget">wifi_switch</property> |
|
- <child> |
|
- <object class="GtkSwitch" id="wifi_switch"> |
|
- <property name="visible">True</property> |
|
- <property name="valign">center</property> |
|
- <signal name="notify::active" handler="wifi_switch_changed_cb" object="CcPowerPanel" swapped="yes"/> |
|
- </object> |
|
- </child> |
|
- </object> |
|
- </child> |
|
- <child> |
|
- <object class="HdyActionRow" id="mobile_row"> |
|
- <property name="visible">False</property> |
|
- <property name="title" translatable="yes">_Mobile Broadband</property> |
|
- <property name="subtitle" translatable="yes">Mobile broadband (LTE, 4G, 3G, etc.) can be turned off to save power.</property> |
|
- <property name="use_underline">True</property> |
|
- <property name="activatable_widget">mobile_switch</property> |
|
- <child> |
|
- <object class="GtkSwitch" id="mobile_switch"> |
|
- <property name="visible">True</property> |
|
- <property name="valign">center</property> |
|
- <signal name="notify::active" handler="mobile_switch_changed_cb" object="CcPowerPanel" swapped="yes"/> |
|
- </object> |
|
- </child> |
|
- </object> |
|
- </child> |
|
<child> |
|
<object class="HdyActionRow" id="bt_row"> |
|
<property name="visible">False</property> |
|
@@ -337,8 +305,6 @@ |
|
<widget name="dim_screen_row"/> |
|
<widget name="blank_screen_row"/> |
|
<widget name="automatic_suspend_row"/> |
|
- <widget name="wifi_row"/> |
|
- <widget name="mobile_row"/> |
|
<widget name="bt_row"/> |
|
<widget name="power_button_row"/> |
|
<widget name="battery_percentage_row"/> |
|
diff --git a/panels/power/meson.build b/panels/power/meson.build |
|
index af04b98ed..b1380f4e6 100644 |
|
--- a/panels/power/meson.build |
|
+++ b/panels/power/meson.build |
|
@@ -47,10 +47,6 @@ deps = common_deps + [ |
|
upower_glib_dep |
|
] |
|
|
|
-if host_is_linux |
|
- deps += network_manager_deps |
|
-endif |
|
- |
|
if host_is_linux_not_s390 |
|
deps += gnome_bluetooth_dep |
|
endif |
|
-- |
|
2.32.0 |
|
|
|
|
|
From 55ab3debcc8d39a9f301dcd41a441adc568ed520 Mon Sep 17 00:00:00 2001 |
|
From: Bastien Nocera <hadess@hadess.net> |
|
Date: Thu, 22 Jul 2021 18:33:41 +0200 |
|
Subject: [PATCH 24/33] power: Remove Bluetooth power switch button |
|
|
|
See previous commit. |
|
--- |
|
panels/power/cc-power-panel.c | 91 ---------------------------------- |
|
panels/power/cc-power-panel.ui | 17 ------- |
|
panels/power/meson.build | 4 -- |
|
3 files changed, 112 deletions(-) |
|
|
|
diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c |
|
index 97d787b95..1e0a572b3 100644 |
|
--- a/panels/power/cc-power-panel.c |
|
+++ b/panels/power/cc-power-panel.c |
|
@@ -72,8 +72,6 @@ struct _CcPowerPanel |
|
HdyComboRow *blank_screen_row; |
|
GtkListBoxRow *brightness_row; |
|
CcBrightnessScale *brightness_scale; |
|
- GtkListBoxRow *bt_row; |
|
- GtkSwitch *bt_switch; |
|
GtkListBox *device_listbox; |
|
HdyPreferencesGroup *device_section; |
|
GtkListBoxRow *dim_screen_row; |
|
@@ -105,9 +103,6 @@ struct _CcPowerPanel |
|
gboolean has_batteries; |
|
char *chassis_type; |
|
|
|
- GDBusProxy *bt_rfkill; |
|
- GDBusProxy *bt_properties; |
|
- |
|
GDBusProxy *iio_proxy; |
|
guint iio_proxy_watch_id; |
|
|
|
@@ -138,8 +133,6 @@ cc_power_panel_dispose (GObject *object) |
|
g_clear_pointer ((GtkWidget **) &self->automatic_suspend_dialog, gtk_widget_destroy); |
|
g_clear_pointer (&self->devices, g_ptr_array_unref); |
|
g_clear_object (&self->up_client); |
|
- g_clear_object (&self->bt_rfkill); |
|
- g_clear_object (&self->bt_properties); |
|
g_clear_object (&self->iio_proxy); |
|
g_clear_object (&self->power_profiles_proxy); |
|
if (self->iio_proxy_watch_id != 0) |
|
@@ -659,61 +652,6 @@ set_ac_battery_ui_mode (CcPowerPanel *self) |
|
} |
|
} |
|
|
|
-static void |
|
-bt_set_powered (CcPowerPanel *self, |
|
- gboolean powered) |
|
-{ |
|
- g_dbus_proxy_call (self->bt_properties, |
|
- "Set", |
|
- g_variant_new_parsed ("('org.gnome.SettingsDaemon.Rfkill', 'BluetoothAirplaneMode', %v)", |
|
- g_variant_new_boolean (!powered)), |
|
- G_DBUS_CALL_FLAGS_NONE, |
|
- -1, |
|
- cc_panel_get_cancellable (CC_PANEL (self)), |
|
- NULL, NULL); |
|
-} |
|
- |
|
-static void |
|
-bt_switch_changed_cb (CcPowerPanel *self) |
|
-{ |
|
- gboolean powered; |
|
- |
|
- powered = gtk_switch_get_active (self->bt_switch); |
|
- |
|
- g_debug ("Setting bt power %s", powered ? "on" : "off"); |
|
- |
|
- bt_set_powered (self, powered); |
|
-} |
|
- |
|
-static void |
|
-bt_powered_state_changed (CcPowerPanel *self) |
|
-{ |
|
- gboolean powered, has_airplane_mode; |
|
- g_autoptr(GVariant) v1 = NULL; |
|
- g_autoptr(GVariant) v2 = NULL; |
|
- |
|
- v1 = g_dbus_proxy_get_cached_property (self->bt_rfkill, "BluetoothHasAirplaneMode"); |
|
- has_airplane_mode = g_variant_get_boolean (v1); |
|
- |
|
- if (!has_airplane_mode) |
|
- { |
|
- g_debug ("BluetoothHasAirplaneMode is false, hiding Bluetooth power row"); |
|
- gtk_widget_hide (GTK_WIDGET (self->bt_row)); |
|
- return; |
|
- } |
|
- |
|
- v2 = g_dbus_proxy_get_cached_property (self->bt_rfkill, "BluetoothAirplaneMode"); |
|
- powered = !g_variant_get_boolean (v2); |
|
- |
|
- g_debug ("bt powered state changed to %s", powered ? "on" : "off"); |
|
- |
|
- gtk_widget_show (GTK_WIDGET (self->bt_row)); |
|
- |
|
- g_signal_handlers_block_by_func (self->bt_switch, bt_switch_changed_cb, self); |
|
- gtk_switch_set_active (self->bt_switch, powered); |
|
- g_signal_handlers_unblock_by_func (self->bt_switch, bt_switch_changed_cb, self); |
|
-} |
|
- |
|
static gboolean |
|
keynav_failed_cb (CcPowerPanel *self, GtkDirectionType direction, GtkWidget *list) |
|
{ |
|
@@ -1132,32 +1070,6 @@ setup_power_saving (CcPowerPanel *self) |
|
set_ac_battery_ui_mode (self); |
|
update_automatic_suspend_label (self); |
|
} |
|
- |
|
-#ifdef HAVE_BLUETOOTH |
|
- self->bt_rfkill = cc_object_storage_create_dbus_proxy_sync (G_BUS_TYPE_SESSION, |
|
- G_DBUS_PROXY_FLAGS_NONE, |
|
- "org.gnome.SettingsDaemon.Rfkill", |
|
- "/org/gnome/SettingsDaemon/Rfkill", |
|
- "org.gnome.SettingsDaemon.Rfkill", |
|
- NULL, |
|
- NULL); |
|
- |
|
- if (self->bt_rfkill) |
|
- { |
|
- self->bt_properties = cc_object_storage_create_dbus_proxy_sync (G_BUS_TYPE_SESSION, |
|
- G_DBUS_PROXY_FLAGS_NONE, |
|
- "org.gnome.SettingsDaemon.Rfkill", |
|
- "/org/gnome/SettingsDaemon/Rfkill", |
|
- "org.freedesktop.DBus.Properties", |
|
- NULL, |
|
- NULL); |
|
- } |
|
- |
|
- g_signal_connect_object (self->bt_rfkill, "g-properties-changed", |
|
- G_CALLBACK (bt_powered_state_changed), self, G_CONNECT_SWAPPED); |
|
- |
|
- bt_powered_state_changed (self); |
|
-#endif |
|
} |
|
|
|
static const char * |
|
@@ -1643,8 +1555,6 @@ cc_power_panel_class_init (CcPowerPanelClass *klass) |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, blank_screen_row); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, brightness_row); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, brightness_scale); |
|
- gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, bt_row); |
|
- gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, bt_switch); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, device_listbox); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, device_section); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, dim_screen_row); |
|
@@ -1670,7 +1580,6 @@ cc_power_panel_class_init (CcPowerPanelClass *klass) |
|
|
|
gtk_widget_class_bind_template_callback (widget_class, als_switch_changed_cb); |
|
gtk_widget_class_bind_template_callback (widget_class, automatic_suspend_label_mnemonic_activate_cb); |
|
- gtk_widget_class_bind_template_callback (widget_class, bt_switch_changed_cb); |
|
gtk_widget_class_bind_template_callback (widget_class, has_brightness_cb); |
|
gtk_widget_class_bind_template_callback (widget_class, has_kbd_brightness_cb); |
|
gtk_widget_class_bind_template_callback (widget_class, blank_screen_row_changed_cb); |
|
diff --git a/panels/power/cc-power-panel.ui b/panels/power/cc-power-panel.ui |
|
index 0795f1b70..b5e12d2f5 100644 |
|
--- a/panels/power/cc-power-panel.ui |
|
+++ b/panels/power/cc-power-panel.ui |
|
@@ -237,22 +237,6 @@ |
|
</child> |
|
</object> |
|
</child> |
|
- <child> |
|
- <object class="HdyActionRow" id="bt_row"> |
|
- <property name="visible">False</property> |
|
- <property name="title" translatable="yes">_Bluetooth</property> |
|
- <property name="subtitle" translatable="yes">Bluetooth can be turned off to save power.</property> |
|
- <property name="use_underline">True</property> |
|
- <property name="activatable_widget">bt_switch</property> |
|
- <child> |
|
- <object class="GtkSwitch" id="bt_switch"> |
|
- <property name="visible">True</property> |
|
- <property name="valign">center</property> |
|
- <signal name="notify::active" handler="bt_switch_changed_cb" object="CcPowerPanel" swapped="yes"/> |
|
- </object> |
|
- </child> |
|
- </object> |
|
- </child> |
|
</object> |
|
</child> |
|
<child> |
|
@@ -305,7 +289,6 @@ |
|
<widget name="dim_screen_row"/> |
|
<widget name="blank_screen_row"/> |
|
<widget name="automatic_suspend_row"/> |
|
- <widget name="bt_row"/> |
|
<widget name="power_button_row"/> |
|
<widget name="battery_percentage_row"/> |
|
</widgets> |
|
diff --git a/panels/power/meson.build b/panels/power/meson.build |
|
index b1380f4e6..9066d24bd 100644 |
|
--- a/panels/power/meson.build |
|
+++ b/panels/power/meson.build |
|
@@ -47,10 +47,6 @@ deps = common_deps + [ |
|
upower_glib_dep |
|
] |
|
|
|
-if host_is_linux_not_s390 |
|
- deps += gnome_bluetooth_dep |
|
-endif |
|
- |
|
panels_libs += static_library( |
|
cappletname, |
|
sources: sources, |
|
-- |
|
2.32.0 |
|
|
|
|
|
From d6e3755dbfd15f2aaf2a1850e63e7d46f6ae37c7 Mon Sep 17 00:00:00 2001 |
|
From: Bastien Nocera <hadess@hadess.net> |
|
Date: Fri, 23 Jul 2021 16:09:54 +0200 |
|
Subject: [PATCH 25/33] power: Tweak labels in "Power Saving Options" section |
|
|
|
To match the latest mockups. |
|
|
|
The lack of subtitles for most of the items in that section made the |
|
section look pretty bizarre. |
|
--- |
|
panels/power/cc-power-panel.ui | 9 ++++++--- |
|
1 file changed, 6 insertions(+), 3 deletions(-) |
|
|
|
diff --git a/panels/power/cc-power-panel.ui b/panels/power/cc-power-panel.ui |
|
index b5e12d2f5..29503b7e4 100644 |
|
--- a/panels/power/cc-power-panel.ui |
|
+++ b/panels/power/cc-power-panel.ui |
|
@@ -139,7 +139,7 @@ |
|
<child> |
|
<object class="HdyPreferencesGroup" id="power_saving_section"> |
|
<property name="visible">True</property> |
|
- <property name="title" translatable="yes">Power Saving</property> |
|
+ <property name="title" translatable="yes">Power Saving Options</property> |
|
<child> |
|
<object class="HdyActionRow" id="brightness_row"> |
|
<property name="visible">True</property> |
|
@@ -188,7 +188,8 @@ |
|
<child> |
|
<object class="HdyActionRow" id="dim_screen_row"> |
|
<property name="visible">True</property> |
|
- <property name="title" translatable="yes">Dim Screen When Inactive</property> |
|
+ <property name="title" translatable="yes">Dim Screen</property> |
|
+ <property name="subtitle" translatable="yes">Reduces the screen brightness when the computer is inactive.</property> |
|
<property name="activatable_widget">dim_screen_switch</property> |
|
<child> |
|
<object class="GtkSwitch" id="dim_screen_switch"> |
|
@@ -201,7 +202,8 @@ |
|
<child> |
|
<object class="HdyComboRow" id="blank_screen_row"> |
|
<property name="visible">True</property> |
|
- <property name="title" translatable="yes">_Blank Screen</property> |
|
+ <property name="title" translatable="yes">Screen _Blank</property> |
|
+ <property name="subtitle" translatable="yes">Turns the screen off after a period of inactivity.</property> |
|
<property name="use_underline">True</property> |
|
<signal name="notify::selected-index" handler="blank_screen_row_changed_cb" object="CcPowerPanel" swapped="yes"/> |
|
</object> |
|
@@ -225,6 +227,7 @@ |
|
<object class="HdyActionRow" id="automatic_suspend_row"> |
|
<property name="visible">False</property> |
|
<property name="title" translatable="yes">_Automatic Suspend</property> |
|
+ <property name="subtitle" translatable="yes">Pauses the computer after a period of inactivity.</property> |
|
<property name="use_underline">True</property> |
|
<property name="activatable">True</property> |
|
<signal name="activated" handler="automatic_suspend_row_activated_cb" swapped="yes"/> |
|
-- |
|
2.32.0 |
|
|
|
|
|
From e9e1fdaacc9941129beca7c15adc8b89789fcb50 Mon Sep 17 00:00:00 2001 |
|
From: Bastien Nocera <hadess@hadess.net> |
|
Date: Mon, 26 Jul 2021 11:32:23 +0200 |
|
Subject: [PATCH 26/33] power: Remove Brightness scales |
|
|
|
From https://gitlab.gnome.org/GNOME/gnome-control-center/-/merge_requests/1020#note_1211728 |
|
" |
|
They are out of place - fine-grained control over brightness isn't what the |
|
power settings are for. As a result, they confuse the settings overall. |
|
|
|
In both cases we have alternative controls, through keyboard hot keys or |
|
through the shell's screen brightness slider. |
|
" |
|
--- |
|
panels/power/cc-power-panel.c | 87 +++++++++++++++++++++------------- |
|
panels/power/cc-power-panel.ui | 36 -------------- |
|
2 files changed, 54 insertions(+), 69 deletions(-) |
|
|
|
diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c |
|
index 1e0a572b3..04987ff98 100644 |
|
--- a/panels/power/cc-power-panel.c |
|
+++ b/panels/power/cc-power-panel.c |
|
@@ -30,7 +30,6 @@ |
|
#include "shell/cc-object-storage.h" |
|
#include "list-box-helper.h" |
|
#include "cc-battery-row.h" |
|
-#include "cc-brightness-scale.h" |
|
#include "cc-power-profile-row.h" |
|
#include "cc-power-profile-info-row.h" |
|
#include "cc-power-panel.h" |
|
@@ -70,15 +69,11 @@ struct _CcPowerPanel |
|
GtkSizeGroup *battery_row_sizegroup; |
|
HdyPreferencesGroup *battery_section; |
|
HdyComboRow *blank_screen_row; |
|
- GtkListBoxRow *brightness_row; |
|
- CcBrightnessScale *brightness_scale; |
|
GtkListBox *device_listbox; |
|
HdyPreferencesGroup *device_section; |
|
GtkListBoxRow *dim_screen_row; |
|
GtkSwitch *dim_screen_switch; |
|
HdyPreferencesGroup *general_section; |
|
- GtkListBoxRow *kbd_brightness_row; |
|
- CcBrightnessScale *kbd_brightness_scale; |
|
GtkSizeGroup *level_sizegroup; |
|
HdyComboRow *power_button_row; |
|
GtkListBox *power_profile_listbox; |
|
@@ -105,6 +100,7 @@ struct _CcPowerPanel |
|
|
|
GDBusProxy *iio_proxy; |
|
guint iio_proxy_watch_id; |
|
+ gboolean has_brightness; |
|
|
|
GDBusProxy *power_profiles_proxy; |
|
guint power_profiles_prop_id; |
|
@@ -469,11 +465,8 @@ static void |
|
als_enabled_state_changed (CcPowerPanel *self) |
|
{ |
|
gboolean enabled; |
|
- gboolean has_brightness = FALSE; |
|
gboolean visible = FALSE; |
|
|
|
- has_brightness = cc_brightness_scale_get_has_brightness (self->brightness_scale); |
|
- |
|
if (self->iio_proxy != NULL) |
|
{ |
|
g_autoptr(GVariant) v = g_dbus_proxy_get_cached_property (self->iio_proxy, "HasAmbientLight"); |
|
@@ -485,7 +478,7 @@ als_enabled_state_changed (CcPowerPanel *self) |
|
g_debug ("ALS enabled: %s", enabled ? "on" : "off"); |
|
g_signal_handlers_block_by_func (self->als_switch, als_switch_changed_cb, self); |
|
gtk_switch_set_active (self->als_switch, enabled); |
|
- gtk_widget_set_visible (GTK_WIDGET (self->als_row), visible && has_brightness); |
|
+ gtk_widget_set_visible (GTK_WIDGET (self->als_row), visible && self->has_brightness); |
|
g_signal_handlers_unblock_by_func (self->als_switch, als_switch_changed_cb, self); |
|
} |
|
|
|
@@ -933,29 +926,34 @@ can_suspend_or_hibernate (CcPowerPanel *self, |
|
} |
|
|
|
static void |
|
-has_brightness_cb (CcPowerPanel *self) |
|
+got_brightness_cb (GObject *source_object, |
|
+ GAsyncResult *res, |
|
+ gpointer user_data) |
|
{ |
|
- gboolean has_brightness; |
|
+ g_autoptr(GVariant) result = NULL; |
|
+ g_autoptr(GError) error = NULL; |
|
+ gint32 brightness = -1.0; |
|
+ CcPowerPanel *self; |
|
|
|
- has_brightness = cc_brightness_scale_get_has_brightness (self->brightness_scale); |
|
+ result = g_dbus_connection_call_finish (G_DBUS_CONNECTION (source_object), res, &error); |
|
+ if (!result) |
|
+ { |
|
+ g_debug ("Failed to get Brightness property: %s", error->message); |
|
+ if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) |
|
+ return; |
|
+ } |
|
+ else |
|
+ { |
|
+ g_autoptr(GVariant) v = NULL; |
|
+ g_variant_get (result, "(v)", &v); |
|
+ brightness = v ? g_variant_get_int32 (v) : -1.0; |
|
+ } |
|
|
|
- gtk_widget_set_visible (GTK_WIDGET (self->brightness_row), has_brightness); |
|
- gtk_widget_set_visible (GTK_WIDGET (self->dim_screen_row), has_brightness); |
|
+ self = user_data; |
|
+ self->has_brightness = brightness >= 0.0; |
|
|
|
+ gtk_widget_set_visible (GTK_WIDGET (self->dim_screen_row), self->has_brightness); |
|
als_enabled_state_changed (self); |
|
- |
|
-} |
|
- |
|
-static void |
|
-has_kbd_brightness_cb (CcPowerPanel *self, |
|
- GParamSpec *pspec, |
|
- GObject *object) |
|
-{ |
|
- gboolean has_brightness; |
|
- |
|
- has_brightness = cc_brightness_scale_get_has_brightness (self->kbd_brightness_scale); |
|
- |
|
- gtk_widget_set_visible (GTK_WIDGET (self->kbd_brightness_row), has_brightness); |
|
} |
|
|
|
static void |
|
@@ -992,6 +990,8 @@ populate_blank_screen_row (HdyComboRow *combo_row) |
|
static void |
|
setup_power_saving (CcPowerPanel *self) |
|
{ |
|
+ g_autoptr(GDBusConnection) connection = NULL; |
|
+ g_autoptr(GError) error = NULL; |
|
int value; |
|
|
|
/* ambient light sensor */ |
|
@@ -1005,6 +1005,33 @@ setup_power_saving (CcPowerPanel *self) |
|
g_signal_connect_object (self->gsd_settings, "changed", |
|
G_CALLBACK (als_enabled_setting_changed), self, G_CONNECT_SWAPPED); |
|
|
|
+ connection = g_bus_get_sync (G_BUS_TYPE_SESSION, |
|
+ cc_panel_get_cancellable (CC_PANEL (self)), |
|
+ &error); |
|
+ if (connection) |
|
+ { |
|
+ g_dbus_connection_call (connection, |
|
+ "org.gnome.SettingsDaemon.Power", |
|
+ "/org/gnome/SettingsDaemon/Power", |
|
+ "org.freedesktop.DBus.Properties", |
|
+ "Get", |
|
+ g_variant_new ("(ss)", |
|
+ "org.gnome.SettingsDaemon.Power.Screen", |
|
+ "Brightness"), |
|
+ NULL, |
|
+ G_DBUS_CALL_FLAGS_NONE, |
|
+ -1, |
|
+ cc_panel_get_cancellable (CC_PANEL (self)), |
|
+ got_brightness_cb, |
|
+ self); |
|
+ } |
|
+ else |
|
+ { |
|
+ if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) |
|
+ g_warning ("session bus not available: %s", error->message); |
|
+ } |
|
+ |
|
+ |
|
g_settings_bind (self->gsd_settings, "idle-dim", |
|
self->dim_screen_switch, "active", |
|
G_SETTINGS_BIND_DEFAULT); |
|
@@ -1553,15 +1580,11 @@ cc_power_panel_class_init (CcPowerPanelClass *klass) |
|
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, blank_screen_row); |
|
- gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, brightness_row); |
|
- gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, brightness_scale); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, device_listbox); |
|
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_section); |
|
- gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, kbd_brightness_row); |
|
- gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, kbd_brightness_scale); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, level_sizegroup); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, power_button_row); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, power_profile_listbox); |
|
@@ -1580,8 +1603,6 @@ cc_power_panel_class_init (CcPowerPanelClass *klass) |
|
|
|
gtk_widget_class_bind_template_callback (widget_class, als_switch_changed_cb); |
|
gtk_widget_class_bind_template_callback (widget_class, automatic_suspend_label_mnemonic_activate_cb); |
|
- gtk_widget_class_bind_template_callback (widget_class, has_brightness_cb); |
|
- gtk_widget_class_bind_template_callback (widget_class, has_kbd_brightness_cb); |
|
gtk_widget_class_bind_template_callback (widget_class, blank_screen_row_changed_cb); |
|
gtk_widget_class_bind_template_callback (widget_class, keynav_failed_cb); |
|
gtk_widget_class_bind_template_callback (widget_class, power_button_row_changed_cb); |
|
diff --git a/panels/power/cc-power-panel.ui b/panels/power/cc-power-panel.ui |
|
index 29503b7e4..a8fafba21 100644 |
|
--- a/panels/power/cc-power-panel.ui |
|
+++ b/panels/power/cc-power-panel.ui |
|
@@ -140,22 +140,6 @@ |
|
<object class="HdyPreferencesGroup" id="power_saving_section"> |
|
<property name="visible">True</property> |
|
<property name="title" translatable="yes">Power Saving Options</property> |
|
- <child> |
|
- <object class="HdyActionRow" id="brightness_row"> |
|
- <property name="visible">True</property> |
|
- <property name="title" translatable="yes">_Screen Brightness</property> |
|
- <property name="use_underline">True</property> |
|
- <child> |
|
- <object class="CcBrightnessScale" id="brightness_scale"> |
|
- <property name="visible">True</property> |
|
- <property name="valign">center</property> |
|
- <property name="expand">True</property> |
|
- <property name="device">screen</property> |
|
- <signal name="notify::has-brightness" handler="has_brightness_cb" object="CcPowerPanel" swapped="yes"/> |
|
- </object> |
|
- </child> |
|
- </object> |
|
- </child> |
|
<child> |
|
<object class="HdyActionRow" id="als_row"> |
|
<property name="visible">True</property> |
|
@@ -169,22 +153,6 @@ |
|
</child> |
|
</object> |
|
</child> |
|
- <child> |
|
- <object class="HdyActionRow" id="kbd_brightness_row"> |
|
- <property name="visible">True</property> |
|
- <property name="title" translatable="yes">_Keyboard Brightness</property> |
|
- <property name="use_underline">True</property> |
|
- <child> |
|
- <object class="CcBrightnessScale" id="kbd_brightness_scale"> |
|
- <property name="visible">True</property> |
|
- <property name="valign">center</property> |
|
- <property name="expand">True</property> |
|
- <property name="device">kbd</property> |
|
- <signal name="notify::has-brightness" handler="has_kbd_brightness_cb" object="CcPowerPanel" swapped="yes"/> |
|
- </object> |
|
- </child> |
|
- </object> |
|
- </child> |
|
<child> |
|
<object class="HdyActionRow" id="dim_screen_row"> |
|
<property name="visible">True</property> |
|
@@ -279,16 +247,12 @@ |
|
<object class="GtkSizeGroup" id="level_sizegroup"> |
|
<property name="mode">horizontal</property> |
|
<widgets> |
|
- <widget name="brightness_scale"/> |
|
- <widget name="kbd_brightness_scale"/> |
|
</widgets> |
|
</object> |
|
<object class="GtkSizeGroup" id="row_sizegroup"> |
|
<property name="mode">vertical</property> |
|
<widgets> |
|
- <widget name="brightness_row"/> |
|
<widget name="als_row"/> |
|
- <widget name="kbd_brightness_row"/> |
|
<widget name="dim_screen_row"/> |
|
<widget name="blank_screen_row"/> |
|
<widget name="automatic_suspend_row"/> |
|
-- |
|
2.32.0 |
|
|
|
|
|
From 3167196af8133997ead275a1b0c9c3ddffe0f4ea Mon Sep 17 00:00:00 2001 |
|
From: Bastien Nocera <hadess@hadess.net> |
|
Date: Mon, 26 Jul 2021 11:34:41 +0200 |
|
Subject: [PATCH 27/33] power: Remove unused CcBrightnessScale |
|
|
|
--- |
|
panels/power/cc-brightness-scale.c | 281 ----------------------------- |
|
panels/power/cc-brightness-scale.h | 38 ---- |
|
panels/power/meson.build | 5 - |
|
3 files changed, 324 deletions(-) |
|
delete mode 100644 panels/power/cc-brightness-scale.c |
|
delete mode 100644 panels/power/cc-brightness-scale.h |
|
|
|
diff --git a/panels/power/cc-brightness-scale.c b/panels/power/cc-brightness-scale.c |
|
deleted file mode 100644 |
|
index 2df1ab5ed..000000000 |
|
--- a/panels/power/cc-brightness-scale.c |
|
+++ /dev/null |
|
@@ -1,281 +0,0 @@ |
|
-/* cc-brightness-scale.c |
|
- * |
|
- * Copyright (C) 2010 Red Hat, Inc |
|
- * Copyright (C) 2008 William Jon McCann <jmccann@redhat.com> |
|
- * Copyright (C) 2010,2015 Richard Hughes <richard@hughsie.com> |
|
- * Copyright (C) 2020 System76, Inc. |
|
- * |
|
- * This program is free software; you can redistribute it and/or modify |
|
- * it under the terms of the GNU General Public License as published by |
|
- * the Free Software Foundation; either version 2 of the License, or |
|
- * (at your option) any later version. |
|
- * |
|
- * This program is distributed in the hope that it will be useful, |
|
- * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
- * GNU General Public License for more details. |
|
- * |
|
- * You should have received a copy of the GNU General Public License |
|
- * along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
- * |
|
- * SPDX-License-Identifier: GPL-2.0-or-later |
|
- */ |
|
- |
|
-#include "cc-brightness-scale.h" |
|
-#include "shell/cc-object-storage.h" |
|
- |
|
-struct _CcBrightnessScale { |
|
- GtkScale parent_instance; |
|
- |
|
- GCancellable *cancellable; |
|
- BrightnessDevice device; |
|
- gboolean has_brightness; |
|
- GDBusProxy *proxy; |
|
- gboolean setting_brightness; |
|
-}; |
|
- |
|
-enum |
|
-{ |
|
- PROP_0, |
|
- PROP_HAS_BRIGHTNESS, |
|
- PROP_DEVICE, |
|
-}; |
|
- |
|
-G_DEFINE_TYPE (CcBrightnessScale, cc_brightness_scale, GTK_TYPE_SCALE) |
|
- |
|
-static void |
|
-set_brightness_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) |
|
-{ |
|
- g_autoptr(GError) error = NULL; |
|
- g_autoptr(GVariant) result = NULL; |
|
- GDBusProxy *proxy = G_DBUS_PROXY (source_object); |
|
- |
|
- result = g_dbus_proxy_call_finish (proxy, res, &error); |
|
- if (result == NULL) |
|
- { |
|
- if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) |
|
- g_printerr ("Error setting brightness: %s\n", error->message); |
|
- return; |
|
- } |
|
- |
|
- CcBrightnessScale *self = CC_BRIGHTNESS_SCALE (user_data); |
|
- |
|
- /* not setting, so pay attention to changed signals */ |
|
- self->setting_brightness = FALSE; |
|
-} |
|
- |
|
-static void |
|
-brightness_slider_value_changed_cb (CcBrightnessScale *self, GtkRange *range) |
|
-{ |
|
- guint percentage; |
|
- g_autoptr(GVariant) variant = NULL; |
|
- |
|
- percentage = (guint) gtk_range_get_value (range); |
|
- |
|
- /* do not loop */ |
|
- if (self->setting_brightness) |
|
- return; |
|
- |
|
- self->setting_brightness = TRUE; |
|
- |
|
- if (self->device == BRIGHTNESS_DEVICE_KBD) |
|
- variant = g_variant_new_parsed ("('org.gnome.SettingsDaemon.Power.Keyboard'," |
|
- "'Brightness', %v)", |
|
- g_variant_new_int32 (percentage)); |
|
- else |
|
- variant = g_variant_new_parsed ("('org.gnome.SettingsDaemon.Power.Screen'," |
|
- "'Brightness', %v)", |
|
- g_variant_new_int32 (percentage)); |
|
- |
|
- /* push this to g-s-d */ |
|
- g_dbus_proxy_call (self->proxy, |
|
- "org.freedesktop.DBus.Properties.Set", |
|
- g_variant_ref_sink (variant), |
|
- G_DBUS_CALL_FLAGS_NONE, |
|
- -1, |
|
- self->cancellable, |
|
- set_brightness_cb, |
|
- self); |
|
-} |
|
- |
|
-static void |
|
-sync_brightness (CcBrightnessScale *self) |
|
-{ |
|
- g_autoptr(GVariant) result = NULL; |
|
- gint brightness; |
|
- GtkRange *range; |
|
- |
|
- result = g_dbus_proxy_get_cached_property (self->proxy, "Brightness"); |
|
- |
|
- if (result) |
|
- { |
|
- /* set the slider */ |
|
- brightness = g_variant_get_int32 (result); |
|
- self->has_brightness = brightness >= 0.0; |
|
- } |
|
- else |
|
- { |
|
- self->has_brightness = FALSE; |
|
- } |
|
- |
|
- g_object_notify (G_OBJECT (self), "has-brightness"); |
|
- |
|
- if (self->has_brightness) |
|
- { |
|
- range = GTK_RANGE (self); |
|
- self->setting_brightness = TRUE; |
|
- gtk_range_set_value (range, brightness); |
|
- self->setting_brightness = FALSE; |
|
- } |
|
-} |
|
- |
|
-static void |
|
-got_proxy_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) |
|
-{ |
|
- g_autoptr(GError) error = NULL; |
|
- CcBrightnessScale *self; |
|
- GDBusProxy *proxy; |
|
- |
|
- proxy = cc_object_storage_create_dbus_proxy_finish (res, &error); |
|
- if (proxy == NULL) |
|
- { |
|
- if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) |
|
- g_printerr ("Error creating proxy: %s\n", error->message); |
|
- return; |
|
- } |
|
- |
|
- self = CC_BRIGHTNESS_SCALE (user_data); |
|
- self->proxy = proxy; |
|
- |
|
- g_signal_connect_object (proxy, "g-properties-changed", |
|
- G_CALLBACK (sync_brightness), self, G_CONNECT_SWAPPED); |
|
- |
|
- sync_brightness (self); |
|
-} |
|
- |
|
-static void |
|
-cc_brightness_scale_get_property (GObject *object, |
|
- guint prop_id, |
|
- GValue *value, |
|
- GParamSpec *pspec) |
|
-{ |
|
- CcBrightnessScale *self; |
|
- |
|
- self = CC_BRIGHTNESS_SCALE (object); |
|
- |
|
- switch (prop_id) { |
|
- case PROP_HAS_BRIGHTNESS: |
|
- g_value_set_boolean (value, self->has_brightness); |
|
- break; |
|
- default: |
|
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); |
|
- break; |
|
- } |
|
-} |
|
- |
|
-static void |
|
-cc_brightness_scale_set_property (GObject *object, |
|
- guint prop_id, |
|
- const GValue *value, |
|
- GParamSpec *pspec) |
|
-{ |
|
- CcBrightnessScale *self; |
|
- |
|
- self = CC_BRIGHTNESS_SCALE (object); |
|
- |
|
- switch (prop_id) { |
|
- case PROP_DEVICE: |
|
- self->device = g_value_get_enum (value); |
|
- break; |
|
- default: |
|
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); |
|
- break; |
|
- } |
|
-} |
|
- |
|
-static void |
|
-cc_brightness_scale_constructed (GObject *object) |
|
-{ |
|
- CcBrightnessScale *self; |
|
- const gchar *interface; |
|
- |
|
- G_OBJECT_CLASS (cc_brightness_scale_parent_class)->constructed (object); |
|
- |
|
- self = CC_BRIGHTNESS_SCALE (object); |
|
- |
|
- self->cancellable = g_cancellable_new(); |
|
- |
|
- g_signal_connect_object (GTK_SCALE (self), "value-changed", |
|
- G_CALLBACK (brightness_slider_value_changed_cb), self, G_CONNECT_SWAPPED); |
|
- |
|
- if (self->device == BRIGHTNESS_DEVICE_KBD) |
|
- interface = "org.gnome.SettingsDaemon.Power.Keyboard"; |
|
- else |
|
- interface = "org.gnome.SettingsDaemon.Power.Screen"; |
|
- |
|
- cc_object_storage_create_dbus_proxy (G_BUS_TYPE_SESSION, |
|
- G_DBUS_PROXY_FLAGS_NONE, |
|
- "org.gnome.SettingsDaemon.Power", |
|
- "/org/gnome/SettingsDaemon/Power", |
|
- interface, |
|
- self->cancellable, |
|
- got_proxy_cb, |
|
- self); |
|
- |
|
- gtk_range_set_range (GTK_RANGE (self), 0, 100); |
|
- gtk_range_set_increments (GTK_RANGE (self), 1, 10); |
|
- gtk_range_set_round_digits (GTK_RANGE (self), 0); |
|
- gtk_scale_set_draw_value (GTK_SCALE (self), FALSE); |
|
-} |
|
- |
|
-static void |
|
-cc_brightness_scale_finalize (GObject *object) |
|
-{ |
|
- CcBrightnessScale *self = CC_BRIGHTNESS_SCALE (object); |
|
- |
|
- g_cancellable_cancel (self->cancellable); |
|
- |
|
- G_OBJECT_CLASS (cc_brightness_scale_parent_class)->finalize (object); |
|
-} |
|
- |
|
-void |
|
-cc_brightness_scale_class_init (CcBrightnessScaleClass *klass) |
|
-{ |
|
- GObjectClass *object_class = G_OBJECT_CLASS (klass); |
|
- |
|
- object_class->get_property = cc_brightness_scale_get_property; |
|
- object_class->set_property = cc_brightness_scale_set_property; |
|
- object_class->constructed = cc_brightness_scale_constructed; |
|
- object_class->finalize = cc_brightness_scale_finalize; |
|
- |
|
- g_object_class_install_property (object_class, |
|
- PROP_DEVICE, |
|
- g_param_spec_enum ("device", |
|
- "device", |
|
- "device", |
|
- brightness_device_get_type(), |
|
- BRIGHTNESS_DEVICE_SCREEN, |
|
- G_PARAM_CONSTRUCT_ONLY | G_PARAM_WRITABLE)); |
|
- |
|
- g_object_class_install_property (object_class, |
|
- PROP_HAS_BRIGHTNESS, |
|
- g_param_spec_boolean ("has-brightness", |
|
- "has brightness", |
|
- "has brightness", |
|
- FALSE, |
|
- G_PARAM_READABLE)); |
|
-} |
|
- |
|
-static void |
|
-cc_brightness_scale_init (CcBrightnessScale *self) |
|
-{ |
|
-} |
|
- |
|
- |
|
-gboolean |
|
-cc_brightness_scale_get_has_brightness (CcBrightnessScale *self) |
|
-{ |
|
- g_return_val_if_fail (CC_IS_BRIGHTNESS_SCALE (self), FALSE); |
|
- |
|
- return self->has_brightness; |
|
-} |
|
diff --git a/panels/power/cc-brightness-scale.h b/panels/power/cc-brightness-scale.h |
|
deleted file mode 100644 |
|
index d566dff77..000000000 |
|
--- a/panels/power/cc-brightness-scale.h |
|
+++ /dev/null |
|
@@ -1,38 +0,0 @@ |
|
-/* cc-brightness-scale.h |
|
- * |
|
- * Copyright (C) 2020 System76, Inc. |
|
- * |
|
- * This program is free software; you can redistribute it and/or modify |
|
- * it under the terms of the GNU General Public License as published by |
|
- * the Free Software Foundation; either version 2 of the License, or |
|
- * (at your option) any later version. |
|
- * |
|
- * This program is distributed in the hope that it will be useful, |
|
- * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
- * GNU General Public License for more details. |
|
- * |
|
- * You should have received a copy of the GNU General Public License |
|
- * along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
- * |
|
- * SPDX-License-Identifier: GPL-2.0-or-later |
|
- */ |
|
- |
|
-#pragma once |
|
- |
|
-#include <gtk/gtk.h> |
|
-#include "cc-brightness-scale-types.h" |
|
- |
|
-G_BEGIN_DECLS |
|
- |
|
-typedef enum { |
|
- BRIGHTNESS_DEVICE_SCREEN, |
|
- BRIGHTNESS_DEVICE_KBD, |
|
-} BrightnessDevice; |
|
- |
|
-#define CC_TYPE_BRIGHTNESS_SCALE (cc_brightness_scale_get_type()) |
|
-G_DECLARE_FINAL_TYPE (CcBrightnessScale, cc_brightness_scale, CC, BRIGHTNESS_SCALE, GtkBox) |
|
- |
|
-gboolean cc_brightness_scale_get_has_brightness (CcBrightnessScale *scale); |
|
- |
|
-G_END_DECLS |
|
diff --git a/panels/power/meson.build b/panels/power/meson.build |
|
index 9066d24bd..0e3ea1d56 100644 |
|
--- a/panels/power/meson.build |
|
+++ b/panels/power/meson.build |
|
@@ -19,16 +19,11 @@ i18n.merge_file( |
|
|
|
sources = files( |
|
'cc-battery-row.c', |
|
- 'cc-brightness-scale.c', |
|
'cc-power-panel.c', |
|
'cc-power-profile-row.c', |
|
'cc-power-profile-info-row.c' |
|
) |
|
|
|
-sources += gnome.mkenums_simple( |
|
- 'cc-brightness-scale-types', |
|
- sources: ['cc-brightness-scale.h']) |
|
- |
|
resource_data = files( |
|
'cc-battery-row.ui', |
|
'cc-power-panel.ui' |
|
-- |
|
2.32.0 |
|
|
|
|
|
From 04a299a3582eeae777052b2315bf9b2801f4865c Mon Sep 17 00:00:00 2001 |
|
From: Bastien Nocera <hadess@hadess.net> |
|
Date: Mon, 26 Jul 2021 11:38:38 +0200 |
|
Subject: [PATCH 28/33] power: Update and add subtitle to automatic brightness |
|
row |
|
|
|
As per: |
|
https://gitlab.gnome.org/GNOME/gnome-control-center/-/merge_requests/1020#note_1210702 |
|
--- |
|
panels/power/cc-power-panel.ui | 3 ++- |
|
1 file changed, 2 insertions(+), 1 deletion(-) |
|
|
|
diff --git a/panels/power/cc-power-panel.ui b/panels/power/cc-power-panel.ui |
|
index a8fafba21..9880f6b7e 100644 |
|
--- a/panels/power/cc-power-panel.ui |
|
+++ b/panels/power/cc-power-panel.ui |
|
@@ -143,7 +143,8 @@ |
|
<child> |
|
<object class="HdyActionRow" id="als_row"> |
|
<property name="visible">True</property> |
|
- <property name="title" translatable="yes">Automatic Brightness</property> |
|
+ <property name="title" translatable="yes">Automatic Screen Brightness</property> |
|
+ <property name="subtitle" translatable="yes">Screen brightness adjusts to the surrounding light.</property> |
|
<child> |
|
<object class="GtkSwitch" id="als_switch"> |
|
<property name="visible">True</property> |
|
-- |
|
2.32.0 |
|
|
|
|
|
From 52dc3f91abb83deac0b66611fd9ed6f96a78cb5f Mon Sep 17 00:00:00 2001 |
|
From: Bastien Nocera <hadess@hadess.net> |
|
Date: Tue, 3 Aug 2021 11:19:56 +0200 |
|
Subject: [PATCH 29/33] power: Dim the info box icon |
|
|
|
This brings less focus to the icon and more to the text. |
|
|
|
See https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/1421 |
|
--- |
|
panels/power/cc-power-profile-info-row.ui | 2 +- |
|
1 file changed, 1 insertion(+), 1 deletion(-) |
|
|
|
diff --git a/panels/power/cc-power-profile-info-row.ui b/panels/power/cc-power-profile-info-row.ui |
|
index bc49a24ac..6f411c688 100644 |
|
--- a/panels/power/cc-power-profile-info-row.ui |
|
+++ b/panels/power/cc-power-profile-info-row.ui |
|
@@ -21,7 +21,7 @@ |
|
<property name="icon-name">info-symbolic</property> |
|
<property name="icon-size">5</property> |
|
<style> |
|
- <class name="power-profile"/> |
|
+ <class name="dim-label"/> |
|
</style> |
|
</object> |
|
</child> |
|
-- |
|
2.32.0 |
|
|
|
|
|
From 254a9bfa8ac8be8403d0258742f0c3f8c8db9633 Mon Sep 17 00:00:00 2001 |
|
From: Bastien Nocera <hadess@hadess.net> |
|
Date: Wed, 4 Aug 2021 11:26:33 +0200 |
|
Subject: [PATCH 30/33] power: Remove icons from power profiles |
|
|
|
They were originally included was to educate users about what the icons |
|
mean, for when they appeared in the top bar. However, since we no |
|
longer plan on showing the status icon in the top bar, it's not so |
|
important that people learn the meaning of the icons. |
|
|
|
See https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/1421 |
|
--- |
|
panels/power/cc-power-profile-row.c | 13 +------------ |
|
panels/power/cc-power-profile-row.ui | 15 +-------------- |
|
2 files changed, 2 insertions(+), 26 deletions(-) |
|
|
|
diff --git a/panels/power/cc-power-profile-row.c b/panels/power/cc-power-profile-row.c |
|
index ee66bdfd0..a8458c366 100644 |
|
--- a/panels/power/cc-power-profile-row.c |
|
+++ b/panels/power/cc-power-profile-row.c |
|
@@ -35,7 +35,6 @@ struct _CcPowerProfileRow |
|
GtkListBoxRow parent_instance; |
|
|
|
GtkRadioButton *button; |
|
- GtkImage *icon_image; |
|
GtkLabel *subtitle_label; |
|
GtkLabel *title_label; |
|
|
|
@@ -106,7 +105,6 @@ cc_power_profile_row_class_init (CcPowerProfileRowClass *klass) |
|
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/power/cc-power-profile-row.ui"); |
|
|
|
gtk_widget_class_bind_template_child (widget_class, CcPowerProfileRow, button); |
|
- gtk_widget_class_bind_template_child (widget_class, CcPowerProfileRow, icon_image); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerProfileRow, subtitle_label); |
|
gtk_widget_class_bind_template_child (widget_class, CcPowerProfileRow, title_label); |
|
|
|
@@ -175,7 +173,7 @@ CcPowerProfileRow * |
|
cc_power_profile_row_new (CcPowerProfile power_profile) |
|
{ |
|
CcPowerProfileRow *self; |
|
- const char *text, *subtext, *icon_name, *class_name; |
|
+ const char *text, *subtext; |
|
|
|
self = g_object_new (CC_TYPE_POWER_PROFILE_ROW, NULL); |
|
|
|
@@ -185,20 +183,14 @@ cc_power_profile_row_new (CcPowerProfile power_profile) |
|
case CC_POWER_PROFILE_PERFORMANCE: |
|
text = _("Performance"); |
|
subtext = _("High performance and power usage."); |
|
- icon_name = "power-profile-performance-symbolic"; |
|
- class_name = "performance"; |
|
break; |
|
case CC_POWER_PROFILE_BALANCED: |
|
text = _("Balanced Power"); |
|
subtext = _("Standard performance and power usage."); |
|
- icon_name = "power-profile-balanced-symbolic"; |
|
- class_name = NULL; |
|
break; |
|
case CC_POWER_PROFILE_POWER_SAVER: |
|
text = _("Power Saver"); |
|
subtext = _("Reduced performance and power usage."); |
|
- icon_name = "power-profile-power-saver-symbolic"; |
|
- class_name = "low-power"; |
|
break; |
|
default: |
|
g_assert_not_reached (); |
|
@@ -206,9 +198,6 @@ cc_power_profile_row_new (CcPowerProfile power_profile) |
|
|
|
gtk_label_set_markup (self->title_label, text); |
|
gtk_label_set_markup (self->subtitle_label, subtext); |
|
- gtk_image_set_from_icon_name (self->icon_image, icon_name, GTK_ICON_SIZE_MENU); |
|
- if (class_name != NULL) |
|
- gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET (self->icon_image)), class_name); |
|
|
|
return self; |
|
} |
|
diff --git a/panels/power/cc-power-profile-row.ui b/panels/power/cc-power-profile-row.ui |
|
index 64516edf3..1391093ba 100644 |
|
--- a/panels/power/cc-power-profile-row.ui |
|
+++ b/panels/power/cc-power-profile-row.ui |
|
@@ -28,19 +28,6 @@ |
|
<property name="height">2</property> |
|
</packing> |
|
</child> |
|
- <child> |
|
- <object class="GtkImage" id="icon_image"> |
|
- <property name="visible">True</property> |
|
- <property name="margin-end">6</property> |
|
- <style> |
|
- <class name="power-profile"/> |
|
- </style> |
|
- </object> |
|
- <packing> |
|
- <property name="left_attach">1</property> |
|
- <property name="top_attach">0</property> |
|
- </packing> |
|
- </child> |
|
<child> |
|
<object class="GtkLabel" id="title_label"> |
|
<property name="visible">True</property> |
|
@@ -53,7 +40,7 @@ |
|
<property name="margin-end">6</property> |
|
</object> |
|
<packing> |
|
- <property name="left_attach">2</property> |
|
+ <property name="left_attach">1</property> |
|
<property name="top_attach">0</property> |
|
</packing> |
|
</child> |
|
-- |
|
2.32.0 |
|
|
|
|
|
From 96efcd2835a46b8009b5f6524a2d37089f40dd44 Mon Sep 17 00:00:00 2001 |
|
From: Allan Day <allanpday@gmail.com> |
|
Date: Wed, 4 Aug 2021 11:28:14 +0200 |
|
Subject: [PATCH 31/33] power: Align power profile info boxes with profiles |
|
text |
|
|
|
See https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/1421 |
|
--- |
|
panels/power/cc-power-profile-info-row.ui | 4 ++-- |
|
1 file changed, 2 insertions(+), 2 deletions(-) |
|
|
|
diff --git a/panels/power/cc-power-profile-info-row.ui b/panels/power/cc-power-profile-info-row.ui |
|
index 6f411c688..34807c38c 100644 |
|
--- a/panels/power/cc-power-profile-info-row.ui |
|
+++ b/panels/power/cc-power-profile-info-row.ui |
|
@@ -8,11 +8,11 @@ |
|
<object class="GtkBox"> |
|
<property name="visible">True</property> |
|
<property name="orientation">horizontal</property> |
|
- <property name="margin-start">8</property> |
|
+ <property name="margin-start">4</property> |
|
<property name="margin-end">8</property> |
|
<property name="margin-top">8</property> |
|
<property name="margin-bottom">8</property> |
|
- <property name="spacing">8</property> |
|
+ <property name="spacing">4</property> |
|
<child> |
|
<object class="GtkImage" id="icon_image"> |
|
<property name="visible">True</property> |
|
-- |
|
2.32.0 |
|
|
|
|
|
From 618e269230a71ae3ac84a35daaf15ad3db38f459 Mon Sep 17 00:00:00 2001 |
|
From: Bastien Nocera <hadess@hadess.net> |
|
Date: Thu, 5 Aug 2021 15:24:58 +0200 |
|
Subject: [PATCH 32/33] power: Change "Balanced" power profile label |
|
|
|
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4530#note_1241985 |
|
--- |
|
panels/power/cc-power-profile-row.c | 2 +- |
|
1 file changed, 1 insertion(+), 1 deletion(-) |
|
|
|
diff --git a/panels/power/cc-power-profile-row.c b/panels/power/cc-power-profile-row.c |
|
index a8458c366..9d7f1fe6b 100644 |
|
--- a/panels/power/cc-power-profile-row.c |
|
+++ b/panels/power/cc-power-profile-row.c |
|
@@ -185,7 +185,7 @@ cc_power_profile_row_new (CcPowerProfile power_profile) |
|
subtext = _("High performance and power usage."); |
|
break; |
|
case CC_POWER_PROFILE_BALANCED: |
|
- text = _("Balanced Power"); |
|
+ text = _("Balanced"); |
|
subtext = _("Standard performance and power usage."); |
|
break; |
|
case CC_POWER_PROFILE_POWER_SAVER: |
|
-- |
|
2.32.0 |
|
|
|
|
|
From 98ed744dcefd8c4d8398b1489d0c583a4d5787d9 Mon Sep 17 00:00:00 2001 |
|
From: Bastien Nocera <hadess@hadess.net> |
|
Date: Thu, 5 Aug 2021 15:24:58 +0200 |
|
Subject: [PATCH 33/33] power: Update power profile labels |
|
|
|
Use "Balanced" instead of "Balanced Power", and make sure to add a |
|
context for all the profiles for translators. |
|
|
|
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4530#note_1243075 |
|
--- |
|
panels/power/cc-power-profile-row.c | 6 +++--- |
|
1 file changed, 3 insertions(+), 3 deletions(-) |
|
|
|
diff --git a/panels/power/cc-power-profile-row.c b/panels/power/cc-power-profile-row.c |
|
index 9d7f1fe6b..f290caa10 100644 |
|
--- a/panels/power/cc-power-profile-row.c |
|
+++ b/panels/power/cc-power-profile-row.c |
|
@@ -181,15 +181,15 @@ cc_power_profile_row_new (CcPowerProfile power_profile) |
|
switch (self->power_profile) |
|
{ |
|
case CC_POWER_PROFILE_PERFORMANCE: |
|
- text = _("Performance"); |
|
+ text = C_("Power profile", "Performance"); |
|
subtext = _("High performance and power usage."); |
|
break; |
|
case CC_POWER_PROFILE_BALANCED: |
|
- text = _("Balanced"); |
|
+ text = C_("Power profile", "Balanced"); |
|
subtext = _("Standard performance and power usage."); |
|
break; |
|
case CC_POWER_PROFILE_POWER_SAVER: |
|
- text = _("Power Saver"); |
|
+ text = C_("Power profile", "Power Saver"); |
|
subtext = _("Reduced performance and power usage."); |
|
break; |
|
default: |
|
-- |
|
2.32.0 |
|
|
|
|