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 @@
+
+
+
False