From 3649be848a85ac2d42487fc5cd4a61533a99b6cc Mon Sep 17 00:00:00 2001 From: dadaloop82 Date: Mon, 4 May 2026 15:42:51 +0000 Subject: [PATCH] feat(kiosk): add screensaver toggle in settings (default off) --- .../dadaloop/evershelf/kiosk/KioskActivity.kt | 13 ++++- .../evershelf/kiosk/SettingsActivity.kt | 21 ++++++- .../src/main/res/layout/activity_settings.xml | 55 +++++++++++++++++++ 3 files changed, 86 insertions(+), 3 deletions(-) diff --git a/evershelf-kiosk/app/src/main/kotlin/it/dadaloop/evershelf/kiosk/KioskActivity.kt b/evershelf-kiosk/app/src/main/kotlin/it/dadaloop/evershelf/kiosk/KioskActivity.kt index fa6510f..ef4b119 100644 --- a/evershelf-kiosk/app/src/main/kotlin/it/dadaloop/evershelf/kiosk/KioskActivity.kt +++ b/evershelf-kiosk/app/src/main/kotlin/it/dadaloop/evershelf/kiosk/KioskActivity.kt @@ -96,6 +96,7 @@ class KioskActivity : AppCompatActivity() { private const val KEY_URL = "evershelf_url" private const val KEY_SETUP_COMPLETE = "setup_complete" private const val KEY_HAS_SCALE = "has_scale" + private const val KEY_SCREENSAVER = "screensaver_enabled" private const val GATEWAY_PACKAGE = "it.dadaloop.evershelf.scalegate" private const val GATEWAY_DOWNLOAD_URL = "https://github.com/dadaloop82/EverShelf/releases/latest/download/evershelf-scale-gateway.apk" private const val KIOSK_DOWNLOAD_URL = "https://github.com/dadaloop82/EverShelf/releases/latest/download/evershelf-kiosk.apk" @@ -428,7 +429,15 @@ class KioskActivity : AppCompatActivity() { webView.loadUrl(url) launchGatewayInBackground() - window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + applyScreensaverFlag() + } + + private fun applyScreensaverFlag() { + if (prefs.getBoolean(KEY_SCREENSAVER, false)) { + window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + } else { + window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + } } // ── Inject kiosk overlay (exit + refresh buttons) ──────────────────── @@ -778,6 +787,8 @@ class KioskActivity : AppCompatActivity() { if (prefs.getBoolean(KEY_SETUP_COMPLETE, false) && webView.visibility == View.VISIBLE) { val url = prefs.getString(KEY_URL, "") ?: "" if (url.isNotEmpty() && webView.url != url) webView.loadUrl(url) + // Re-apply screensaver flag in case the user changed it in Settings + applyScreensaverFlag() } } diff --git a/evershelf-kiosk/app/src/main/kotlin/it/dadaloop/evershelf/kiosk/SettingsActivity.kt b/evershelf-kiosk/app/src/main/kotlin/it/dadaloop/evershelf/kiosk/SettingsActivity.kt index 8e9ac2d..270beec 100644 --- a/evershelf-kiosk/app/src/main/kotlin/it/dadaloop/evershelf/kiosk/SettingsActivity.kt +++ b/evershelf-kiosk/app/src/main/kotlin/it/dadaloop/evershelf/kiosk/SettingsActivity.kt @@ -6,11 +6,13 @@ import android.content.SharedPreferences import android.content.pm.PackageManager import android.net.Uri import android.os.Bundle +import android.view.WindowManager import android.widget.EditText import android.widget.TextView import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import com.google.android.material.button.MaterialButton +import com.google.android.material.switchmaterial.SwitchMaterial import java.net.URL import javax.net.ssl.HttpsURLConnection import javax.net.ssl.SSLContext @@ -26,6 +28,7 @@ class SettingsActivity : AppCompatActivity() { private const val PREFS_NAME = "evershelf_kiosk" private const val KEY_URL = "evershelf_url" private const val KEY_SETUP_COMPLETE = "setup_complete" + private const val KEY_SCREENSAVER = "screensaver_enabled" private const val GATEWAY_PACKAGE = "it.dadaloop.evershelf.scalegate" } @@ -38,6 +41,10 @@ class SettingsActivity : AppCompatActivity() { urlEdit.setText(prefs.getString(KEY_URL, "") ?: "") + // Screensaver toggle (default OFF = keep screen on) + val switchScreensaver = findViewById(R.id.switchScreensaver) + switchScreensaver.isChecked = prefs.getBoolean(KEY_SCREENSAVER, false) + // Gateway status val gatewayInstalled = try { packageManager.getPackageInfo(GATEWAY_PACKAGE, 0) @@ -77,8 +84,18 @@ class SettingsActivity : AppCompatActivity() { Toast.makeText(this, "URL cannot be empty", Toast.LENGTH_SHORT).show() return@setOnClickListener } - prefs.edit().putString(KEY_URL, url).apply() - Toast.makeText(this, "Settings saved", Toast.LENGTH_SHORT).show() + val screensaverOn = switchScreensaver.isChecked + prefs.edit() + .putString(KEY_URL, url) + .putBoolean(KEY_SCREENSAVER, screensaverOn) + .apply() + // Apply FLAG_KEEP_SCREEN_ON immediately based on new setting + if (screensaverOn) { + window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + } else { + window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + } + Toast.makeText(this, "Impostazioni salvate", Toast.LENGTH_SHORT).show() finish() } } diff --git a/evershelf-kiosk/app/src/main/res/layout/activity_settings.xml b/evershelf-kiosk/app/src/main/res/layout/activity_settings.xml index df9a4bd..2b6022b 100644 --- a/evershelf-kiosk/app/src/main/res/layout/activity_settings.xml +++ b/evershelf-kiosk/app/src/main/res/layout/activity_settings.xml @@ -143,6 +143,61 @@ android:textSize="13sp" /> + + + + + + + + + + + + + + + + + +