From 0293b8c8ddf04c3506fad5045ad8d2d60e08dd03 Mon Sep 17 00:00:00 2001 From: notiant <238434866+notiant@users.noreply.github.com> Date: Sat, 22 Nov 2025 13:04:44 +0100 Subject: [PATCH] LockScreen: make 'hibernate' optional --- Assets/Translations/de.json | 4 ++++ Assets/Translations/en.json | 4 ++++ Assets/Translations/es.json | 4 ++++ Assets/Translations/fr.json | 4 ++++ Assets/Translations/nl.json | 4 ++++ Assets/Translations/pt.json | 4 ++++ Assets/Translations/ru.json | 4 ++++ Assets/Translations/tr.json | 4 ++++ Assets/Translations/uk-UA.json | 4 ++++ Assets/Translations/zh-CN.json | 4 ++++ Assets/settings-default.json | 1 + Commons/Settings.qml | 1 + Modules/LockScreen/LockScreen.qml | 19 +++++++++---------- .../Panels/Settings/Tabs/LockScreenTab.qml | 7 +++++++ 14 files changed, 58 insertions(+), 10 deletions(-) diff --git a/Assets/Translations/de.json b/Assets/Translations/de.json index 28a127cc..5d12c430 100644 --- a/Assets/Translations/de.json +++ b/Assets/Translations/de.json @@ -1506,6 +1506,10 @@ "description": "Den Bildschirm beim Suspendieren des Systems automatisch sperren.", "label": "Sperren beim Ruhezustand" }, + "show-hibernate": { + "description": "Die Option 'Ruhezustand' in den Energieaktionen anzeigen.", + "label": "Ruhezustand anzeigen" + }, "title": "Sperrbildschirm" }, "network": { diff --git a/Assets/Translations/en.json b/Assets/Translations/en.json index 424f2974..71654f0d 100644 --- a/Assets/Translations/en.json +++ b/Assets/Translations/en.json @@ -1506,6 +1506,10 @@ "description": "Automatically lock the screen when suspending the system.", "label": "Lock on suspend" }, + "show-hibernate": { + "description": "Show the option 'hibernate' in the energy actions.", + "label": "Show hibernate" + }, "title": "Lock screen" }, "network": { diff --git a/Assets/Translations/es.json b/Assets/Translations/es.json index b677803a..da68db8a 100644 --- a/Assets/Translations/es.json +++ b/Assets/Translations/es.json @@ -1506,6 +1506,10 @@ "description": "Bloquear la pantalla automáticamente al suspender el sistema.", "label": "Bloquear al suspender" }, + "show-hibernate": { + "description": "Mostrar la opción 'hibernar' en las acciones de energía.", + "label": "Mostrar hibernar" + }, "title": "Pantalla de bloqueo" }, "network": { diff --git a/Assets/Translations/fr.json b/Assets/Translations/fr.json index 372e5a2a..19889397 100644 --- a/Assets/Translations/fr.json +++ b/Assets/Translations/fr.json @@ -1506,6 +1506,10 @@ "description": "Verrouiller automatiquement l'écran lors de la mise en veille du système.", "label": "Verrouiller à la suspension" }, + "show-hibernate": { + "description": "Afficher l’option 'hiberner' dans les actions d’énergie.", + "label": "Afficher l’hibernation" + }, "title": "Écran de verrouillage" }, "network": { diff --git a/Assets/Translations/nl.json b/Assets/Translations/nl.json index cee09441..e852bdfd 100644 --- a/Assets/Translations/nl.json +++ b/Assets/Translations/nl.json @@ -1506,6 +1506,10 @@ "description": "Vergrendel het scherm automatisch wanneer het systeem wordt onderbroken.", "label": "Vergrendelen bij onderbreken" }, + "show-hibernate": { + "description": "De optie 'sluimerstand' tonen in de energieacties.", + "label": "Sluimerstand tonen" + }, "title": "Vergrendelscherm" }, "network": { diff --git a/Assets/Translations/pt.json b/Assets/Translations/pt.json index 27622da3..fb03c790 100644 --- a/Assets/Translations/pt.json +++ b/Assets/Translations/pt.json @@ -1506,6 +1506,10 @@ "description": "Bloquear a tela automaticamente ao suspender o sistema.", "label": "Bloquear ao suspender" }, + "show-hibernate": { + "description": "Mostrar a opção 'hibernar' nas ações de energia.", + "label": "Mostrar hibernar" + }, "title": "Tela de bloqueio" }, "network": { diff --git a/Assets/Translations/ru.json b/Assets/Translations/ru.json index 58862aa7..66ec4190 100644 --- a/Assets/Translations/ru.json +++ b/Assets/Translations/ru.json @@ -1506,6 +1506,10 @@ "description": "Автоматически блокировать экран при приостановке работы системы.", "label": "Блокировать при приостановке" }, + "show-hibernate": { + "description": "Показывать опцию 'спящий режим' в действиях питания.", + "label": "Показывать спящий режим" + }, "title": "Экран блокировки" }, "network": { diff --git a/Assets/Translations/tr.json b/Assets/Translations/tr.json index 7b902047..f6036409 100644 --- a/Assets/Translations/tr.json +++ b/Assets/Translations/tr.json @@ -1506,6 +1506,10 @@ "description": "Sistemi askıya alırken otomatik olarak ekranı kilitler.", "label": "Askıya alırken kilitle" }, + "show-hibernate": { + "description": "Güç işlemlerinde 'hazırda beklet' seçeneğini göster.", + "label": "Hazırda beklet seçeneğini göster" + }, "title": "Ekran Kilit" }, "network": { diff --git a/Assets/Translations/uk-UA.json b/Assets/Translations/uk-UA.json index c20ff7a8..7160422f 100644 --- a/Assets/Translations/uk-UA.json +++ b/Assets/Translations/uk-UA.json @@ -1506,6 +1506,10 @@ "description": "Автоматично блокувати екран при призупиненні системи.", "label": "Блокувати при призупиненні" }, + "show-hibernate": { + "description": "Показувати опцію 'сплячий режим' у діях живлення.", + "label": "Показувати сплячий режим" + }, "title": "Екран блокування" }, "network": { diff --git a/Assets/Translations/zh-CN.json b/Assets/Translations/zh-CN.json index 98c641ef..f93174e9 100644 --- a/Assets/Translations/zh-CN.json +++ b/Assets/Translations/zh-CN.json @@ -1506,6 +1506,10 @@ "description": "系统挂起时自动锁定屏幕。", "label": "挂起时锁定" }, + "show-hibernate": { + "description": "在电源操作中显示'休眠'选项。", + "label": "显示休眠" + }, "title": "锁屏" }, "network": { diff --git a/Assets/settings-default.json b/Assets/settings-default.json index 79645fa0..68e12d93 100644 --- a/Assets/settings-default.json +++ b/Assets/settings-default.json @@ -70,6 +70,7 @@ "animationDisabled": false, "compactLockScreen": false, "lockOnSuspend": true, + "showHibernateOnLockScreen": true, "enableShadows": true, "shadowDirection": "bottom_right", "shadowOffsetX": 2, diff --git a/Commons/Settings.qml b/Commons/Settings.qml index 2c03167c..d42e3b7b 100644 --- a/Commons/Settings.qml +++ b/Commons/Settings.qml @@ -215,6 +215,7 @@ Singleton { property bool animationDisabled: false property bool compactLockScreen: false property bool lockOnSuspend: true + property bool showHibernateOnLockScreen: true property bool enableShadows: true property string shadowDirection: "bottom_right" property int shadowOffsetX: 2 diff --git a/Modules/LockScreen/LockScreen.qml b/Modules/LockScreen/LockScreen.qml index ee4afe6b..54ce8fad 100644 --- a/Modules/LockScreen/LockScreen.qml +++ b/Modules/LockScreen/LockScreen.qml @@ -343,15 +343,15 @@ Loader { text: { var lang = I18n.locale.name.split("_")[0]; var formats = { + "en": "dddd, MMMM d", "de": "dddd, d. MMMM", - "es": "dddd, d 'de' MMMM", "fr": "dddd d MMMM", + "es": "dddd, d 'de' MMMM", "pt": "dddd, d 'de' MMMM", "zh": "yyyy年M月d日 dddd", - "uk": "dddd, d MMMM", - "tr": "dddd, d MMMM" + "nl": "dddd d MMMM" }; - return I18n.locale.toString(Time.now, formats[lang] || "dddd, MMMM d"); + return I18n.locale.toString(Time.now, formats[lang] || "dddd, d MMMM"); } pointSize: Style.fontSizeXL font.weight: Font.Medium @@ -524,7 +524,7 @@ Loader { } Text { id: hibernateText - text: I18n.tr("session-menu.hibernate") + text: Settings.data.general.showHibernateOnLockScreen ? I18n.tr("session-menu.hibernate") : "" font.pointSize: buttonRowTextMeasurer.fontSize font.weight: Font.Medium } @@ -550,7 +550,7 @@ Loader { // Button row needs: margins + 5 buttons + 4 spacings + margins // Plus ColumnLayout margins (14 on each side = 28 total) // Add extra buffer to ensure password input has proper padding - property real minButtonRowWidth: buttonRowTextMeasurer.minButtonWidth > 0 ? (5 * buttonRowTextMeasurer.minButtonWidth) + 40 + (2 * Style.marginM) + 28 + (2 * Style.marginM) : 750 + property real minButtonRowWidth: buttonRowTextMeasurer.minButtonWidth > 0 ? ((Settings.data.general.showHibernateOnLockScreen ? 5 : 4) * buttonRowTextMeasurer.minButtonWidth) + 40 + (2 * Style.marginM) + 28 + (2 * Style.marginM) : 750 width: Math.max(750, minButtonRowWidth) ColumnLayout { @@ -749,7 +749,7 @@ Loader { } } - // 3-day forecast + // Forecast RowLayout { visible: Settings.data.location.weatherEnabled && LocationService.data.weather !== null Layout.preferredWidth: 260 @@ -757,7 +757,7 @@ Loader { spacing: 4 Repeater { - model: 3 + model: MediaService.currentPlayer && MediaService.canPlay ? 3 : 4 delegate: ColumnLayout { Layout.fillWidth: true spacing: 3 @@ -804,8 +804,6 @@ Loader { Item { Layout.fillWidth: true - visible: !(Settings.data.location.weatherEnabled && LocationService.data.weather !== null) - Layout.preferredWidth: visible ? 1 : 0 } // Battery and Keyboard Layout (full mode only) @@ -1183,6 +1181,7 @@ Loader { } Rectangle { + visible: Settings.data.general.showHibernateOnLockScreen Layout.fillWidth: true Layout.minimumWidth: buttonRowTextMeasurer.minButtonWidth Layout.preferredHeight: Settings.data.general.compactLockScreen ? 36 : 48 diff --git a/Modules/Panels/Settings/Tabs/LockScreenTab.qml b/Modules/Panels/Settings/Tabs/LockScreenTab.qml index 46b9497d..1ab01d31 100644 --- a/Modules/Panels/Settings/Tabs/LockScreenTab.qml +++ b/Modules/Panels/Settings/Tabs/LockScreenTab.qml @@ -21,6 +21,13 @@ ColumnLayout { checked: Settings.data.general.compactLockScreen onToggled: checked => Settings.data.general.compactLockScreen = checked } + + NToggle { + label: I18n.tr("settings.lock-screen.show-hibernate.label") + description: I18n.tr("settings.lock-screen.show-hibernate.description") + checked: Settings.data.general.showHibernateOnLockScreen + onToggled: checked => Settings.data.general.showHibernateOnLockScreen = checked + } NDivider { Layout.fillWidth: true