feat(settings): add screensaver toggle in Language tab (default off)
Toggle appears in the Language settings tab, below the language selector. Default: disabled. When disabled, initInactivityWatcher() exits early so the screensaver never activates. i18n added for it/en/de.
This commit is contained in:
@@ -1101,6 +1101,9 @@ function translatePage() {
|
|||||||
// Populate the language selector dropdown
|
// Populate the language selector dropdown
|
||||||
function _populateLanguageSelector() {
|
function _populateLanguageSelector() {
|
||||||
const sel = document.getElementById('setting-language');
|
const sel = document.getElementById('setting-language');
|
||||||
|
// Screensaver toggle
|
||||||
|
const ssEl = document.getElementById('setting-screensaver-enabled');
|
||||||
|
if (ssEl) ssEl.checked = s.screensaver_enabled === true;
|
||||||
if (!sel) return;
|
if (!sel) return;
|
||||||
sel.innerHTML = '';
|
sel.innerHTML = '';
|
||||||
for (const [code, name] of Object.entries(_SUPPORTED_LANGS)) {
|
for (const [code, name] of Object.entries(_SUPPORTED_LANGS)) {
|
||||||
@@ -2124,6 +2127,9 @@ async function saveSettings() {
|
|||||||
s.dietary = document.getElementById('setting-dietary').value.trim();
|
s.dietary = document.getElementById('setting-dietary').value.trim();
|
||||||
// Camera
|
// Camera
|
||||||
s.camera_facing = document.getElementById('setting-camera-facing').value;
|
s.camera_facing = document.getElementById('setting-camera-facing').value;
|
||||||
|
// Screensaver
|
||||||
|
const ssEl = document.getElementById('setting-screensaver-enabled');
|
||||||
|
if (ssEl) s.screensaver_enabled = ssEl.checked;
|
||||||
// Meal plan enabled toggle
|
// Meal plan enabled toggle
|
||||||
const mpEnabledEl = document.getElementById('setting-meal-plan-enabled');
|
const mpEnabledEl = document.getElementById('setting-meal-plan-enabled');
|
||||||
if (mpEnabledEl) s.meal_plan_enabled = mpEnabledEl.checked;
|
if (mpEnabledEl) s.meal_plan_enabled = mpEnabledEl.checked;
|
||||||
@@ -11691,6 +11697,8 @@ function initScreensaverShortcuts() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function initInactivityWatcher() {
|
function initInactivityWatcher() {
|
||||||
|
const s = getSettings();
|
||||||
|
if (!s.screensaver_enabled) return; // disabled by default
|
||||||
const events = ['pointerdown', 'pointermove', 'keydown', 'scroll', 'touchstart'];
|
const events = ['pointerdown', 'pointermove', 'keydown', 'scroll', 'touchstart'];
|
||||||
events.forEach(evt => {
|
events.forEach(evt => {
|
||||||
document.addEventListener(evt, () => {
|
document.addEventListener(evt, () => {
|
||||||
|
|||||||
+11
@@ -1088,6 +1088,17 @@
|
|||||||
<p class="settings-hint mt-2" data-i18n="settings.language.restart_notice">La pagina verrà ricaricata per applicare la nuova lingua.</p>
|
<p class="settings-hint mt-2" data-i18n="settings.language.restart_notice">La pagina verrà ricaricata per applicare la nuova lingua.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="settings-card">
|
||||||
|
<h4>🌑 Salvaschermo</h4>
|
||||||
|
<p class="settings-hint">Mostra un orologio con fatti utili dopo 5 minuti di inattività. Di default è disattivato.</p>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="toggle-label">
|
||||||
|
<input type="checkbox" id="setting-screensaver-enabled" class="toggle-input">
|
||||||
|
<span class="toggle-slider"></span>
|
||||||
|
<span class="toggle-text" data-i18n="settings.screensaver.label">Attiva salvaschermo</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -595,6 +595,9 @@
|
|||||||
"label": "🌐 Sprache",
|
"label": "🌐 Sprache",
|
||||||
"restart_notice": "Die Seite wird neu geladen, um die neue Sprache anzuwenden."
|
"restart_notice": "Die Seite wird neu geladen, um die neue Sprache anzuwenden."
|
||||||
},
|
},
|
||||||
|
"screensaver": {
|
||||||
|
"label": "Bildschirmschoner aktivieren"
|
||||||
|
},
|
||||||
"scale": {
|
"scale": {
|
||||||
"title": "⚖️ Smart-Waage",
|
"title": "⚖️ Smart-Waage",
|
||||||
"hint": "Verbinde eine Bluetooth-Waage über das Android-Gateway, um das Gewicht automatisch auszulesen.",
|
"hint": "Verbinde eine Bluetooth-Waage über das Android-Gateway, um das Gewicht automatisch auszulesen.",
|
||||||
|
|||||||
@@ -594,6 +594,9 @@
|
|||||||
"label": "🌐 Language",
|
"label": "🌐 Language",
|
||||||
"restart_notice": "The page will reload to apply the new language."
|
"restart_notice": "The page will reload to apply the new language."
|
||||||
},
|
},
|
||||||
|
"screensaver": {
|
||||||
|
"label": "Enable screensaver"
|
||||||
|
},
|
||||||
"scale": {
|
"scale": {
|
||||||
"title": "⚖️ Smart Scale",
|
"title": "⚖️ Smart Scale",
|
||||||
"hint": "Connect a Bluetooth scale via the Android gateway to automatically read weight.",
|
"hint": "Connect a Bluetooth scale via the Android gateway to automatically read weight.",
|
||||||
|
|||||||
@@ -594,6 +594,9 @@
|
|||||||
"label": "🌐 Lingua",
|
"label": "🌐 Lingua",
|
||||||
"restart_notice": "La pagina verrà ricaricata per applicare la nuova lingua."
|
"restart_notice": "La pagina verrà ricaricata per applicare la nuova lingua."
|
||||||
},
|
},
|
||||||
|
"screensaver": {
|
||||||
|
"label": "Attiva salvaschermo"
|
||||||
|
},
|
||||||
"scale": {
|
"scale": {
|
||||||
"title": "⚖️ Bilancia Smart",
|
"title": "⚖️ Bilancia Smart",
|
||||||
"hint": "Collega una bilancia Bluetooth tramite il gateway Android per leggere il peso automaticamente.",
|
"hint": "Collega una bilancia Bluetooth tramite il gateway Android per leggere il peso automaticamente.",
|
||||||
|
|||||||
Reference in New Issue
Block a user