From f798a40389174341a64e7090d5d9f5174453cb34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Bonithon?= <gael@xfce.org> Date: Fri, 24 May 2024 17:08:17 +0200 Subject: [PATCH] settings: Warn about upower acting before xfpm on critical battery See https://gitlab.xfce.org/xfce/xfce4-power-manager/-/issues/146#note_89211 Closes: #146 --- data/interfaces/xfpm-settings.ui | 32 ++++++++++++++++++++++++++++++++ settings/xfpm-settings.c | 9 +++++++++ 2 files changed, 41 insertions(+) diff --git a/data/interfaces/xfpm-settings.ui b/data/interfaces/xfpm-settings.ui index 6a22df2a..216b882a 100644 --- a/data/interfaces/xfpm-settings.ui +++ b/data/interfaces/xfpm-settings.ui @@ -83,6 +83,11 @@ <property name="can_focus">False</property> <property name="icon_name">window-close-symbolic</property> </object> + <object class="GtkImage" id="image4"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="icon_name">dialog-warning</property> + </object> <object class="GtkListStore" id="liststore1"> <columns> <!-- column-name value --> @@ -229,6 +234,20 @@ <property name="step_increment">1</property> <property name="page_increment">10</property> </object> + <object class="GtkPopover" id="critical-warning-popover"> + <property name="can-focus">False</property> + <property name="position">bottom</property> + <property name="border-width">6</property> + <child> + <object class="GtkLabel" id="critical-warning-label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="wrap">True</property> + <property name="max-width-chars">50</property> + </object> + </child> + </object> <object class="XfceTitledDialog" id="xfpm-settings-dialog"> <property name="can_focus">False</property> <property name="title" translatable="yes">Power Manager</property> @@ -1156,6 +1175,19 @@ <property name="position">2</property> </packing> </child> + <child> + <object class="GtkMenuButton"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="image">image4</property> + <property name="popover">critical-warning-popover</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">3</property> + </packing> + </child> </object> <packing> <property name="expand">False</property> diff --git a/settings/xfpm-settings.c b/settings/xfpm-settings.c index e71e63ee..9e31b12a 100644 --- a/settings/xfpm-settings.c +++ b/settings/xfpm-settings.c @@ -811,6 +811,9 @@ xfpm_settings_others (XfconfChannel *channel, { GtkTreeIter iter; GtkTreeModel *model; + GtkWidget *label; + const gchar *action; + gchar *text; critical_level = GTK_WIDGET (gtk_builder_get_object (xml, "critical-power-level-spin")); gtk_widget_set_tooltip_text (critical_level, _("When all the power sources of the computer reach this charge level")); @@ -831,6 +834,12 @@ xfpm_settings_others (XfconfChannel *channel, if (request == XFPM_ASK && !gtk_list_store_remove (GTK_LIST_STORE (model), &iter)) break; } while (gtk_tree_model_iter_next (model, &iter)); + + label = GTK_WIDGET (gtk_builder_get_object (xml, "critical-warning-label")); + action = upower != NULL ? up_client_get_critical_action (upower) : "Unknown"; + text = g_strdup_printf (_("Make sure you set a sufficiently high value here, otherwise the system will trigger its own action before xfce4-power-manager, without being able to prevent it or know exactly when it will do so. The action triggered by the system in this case will be: %s."), action); + gtk_label_set_text (GTK_LABEL (label), text); + g_free (text); } else { -- GitLab