From b2b30035a8b12c0c5fa7496a1de144b6abf11358 Mon Sep 17 00:00:00 2001
From: Agnieszka C <85929121+Aga-C@users.noreply.github.com>
Date: Mon, 2 Dec 2024 19:39:51 +0100
Subject: [PATCH] Added option to keep screen on while viewing photos (#365)
---
.../gallery/activities/SettingsActivity.kt | 11 +++++++++++
.../fossify/gallery/fragments/PhotoFragment.kt | 7 +++++++
.../kotlin/org/fossify/gallery/helpers/Config.kt | 4 ++++
.../org/fossify/gallery/helpers/Constants.kt | 1 +
app/src/main/res/layout/activity_settings.xml | 15 +++++++++++++++
app/src/main/res/values-pl/strings.xml | 3 ++-
app/src/main/res/values/strings.xml | 1 +
7 files changed, 41 insertions(+), 1 deletion(-)
diff --git a/app/src/main/kotlin/org/fossify/gallery/activities/SettingsActivity.kt b/app/src/main/kotlin/org/fossify/gallery/activities/SettingsActivity.kt
index 0666fa3a3..d5333f335 100644
--- a/app/src/main/kotlin/org/fossify/gallery/activities/SettingsActivity.kt
+++ b/app/src/main/kotlin/org/fossify/gallery/activities/SettingsActivity.kt
@@ -76,6 +76,7 @@ class SettingsActivity : SimpleActivity() {
setupAppPasswordProtection()
setupFileDeletionPasswordProtection()
setupDeleteEmptyFolders()
+ setupKeepScreenOn()
setupAllowPhotoGestures()
setupAllowVideoGestures()
setupAllowDownGesture()
@@ -446,6 +447,14 @@ class SettingsActivity : SimpleActivity() {
}
}
+ private fun setupKeepScreenOn() {
+ binding.settingsKeepScreenOnFullscreenPhotos.isChecked = config.keepScreenOn
+ binding.settingsKeepScreenOnFullscreenPhotosHolder.setOnClickListener {
+ binding.settingsKeepScreenOnFullscreenPhotos.toggle()
+ config.keepScreenOn = binding.settingsKeepScreenOnFullscreenPhotos.isChecked
+ }
+ }
+
private fun setupAllowPhotoGestures() {
binding.settingsAllowPhotoGestures.isChecked = config.allowPhotoGestures
binding.settingsAllowPhotoGesturesHolder.setOnClickListener {
@@ -884,6 +893,7 @@ class SettingsActivity : SimpleActivity() {
put(BLACK_BACKGROUND, config.blackBackground)
put(HIDE_SYSTEM_UI, config.hideSystemUI)
put(ALLOW_INSTANT_CHANGE, config.allowInstantChange)
+ put(KEEP_SCREEN_ON, config.keepScreenOn)
put(ALLOW_PHOTO_GESTURES, config.allowPhotoGestures)
put(ALLOW_DOWN_GESTURE, config.allowDownGesture)
put(ALLOW_ROTATING_WITH_GESTURES, config.allowRotatingWithGestures)
@@ -1027,6 +1037,7 @@ class SettingsActivity : SimpleActivity() {
BLACK_BACKGROUND -> config.blackBackground = value.toBoolean()
HIDE_SYSTEM_UI -> config.hideSystemUI = value.toBoolean()
ALLOW_INSTANT_CHANGE -> config.allowInstantChange = value.toBoolean()
+ KEEP_SCREEN_ON -> config.keepScreenOn = value.toBoolean()
ALLOW_PHOTO_GESTURES -> config.allowPhotoGestures = value.toBoolean()
ALLOW_DOWN_GESTURE -> config.allowDownGesture = value.toBoolean()
ALLOW_ROTATING_WITH_GESTURES -> config.allowRotatingWithGestures = value.toBoolean()
diff --git a/app/src/main/kotlin/org/fossify/gallery/fragments/PhotoFragment.kt b/app/src/main/kotlin/org/fossify/gallery/fragments/PhotoFragment.kt
index c97d56290..15b7c17bf 100644
--- a/app/src/main/kotlin/org/fossify/gallery/fragments/PhotoFragment.kt
+++ b/app/src/main/kotlin/org/fossify/gallery/fragments/PhotoFragment.kt
@@ -17,6 +17,7 @@ import android.view.LayoutInflater
import android.view.MotionEvent
import android.view.View
import android.view.ViewGroup
+import android.view.WindowManager
import android.widget.RelativeLayout
import androidx.exifinterface.media.ExifInterface.*
import com.alexvasilkov.gestures.GestureController
@@ -220,6 +221,7 @@ class PhotoFragment : ViewPagerFragment() {
override fun onPause() {
super.onPause()
+ activity?.window?.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
storeStateVariables()
}
@@ -245,6 +247,7 @@ class PhotoFragment : ViewPagerFragment() {
mShouldResetImage = false
}
+ val keepScreenOn = config.keepScreenOn
val allowPhotoGestures = config.allowPhotoGestures
val allowInstantChange = config.allowInstantChange
@@ -254,6 +257,10 @@ class PhotoFragment : ViewPagerFragment() {
instantNextItem.beVisibleIf(allowInstantChange)
}
+ if (keepScreenOn) {
+ activity?.window?.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
+ }
+
storeStateVariables()
}
diff --git a/app/src/main/kotlin/org/fossify/gallery/helpers/Config.kt b/app/src/main/kotlin/org/fossify/gallery/helpers/Config.kt
index e6609c575..5ea55c1d0 100644
--- a/app/src/main/kotlin/org/fossify/gallery/helpers/Config.kt
+++ b/app/src/main/kotlin/org/fossify/gallery/helpers/Config.kt
@@ -308,6 +308,10 @@ class Config(context: Context) : BaseConfig(context) {
get() = prefs.getBoolean(DELETE_EMPTY_FOLDERS, false)
set(deleteEmptyFolders) = prefs.edit().putBoolean(DELETE_EMPTY_FOLDERS, deleteEmptyFolders).apply()
+ var keepScreenOn: Boolean
+ get() = prefs.getBoolean(KEEP_SCREEN_ON, true)
+ set(keepScreenOn) = prefs.edit().putBoolean(KEEP_SCREEN_ON, keepScreenOn).apply()
+
var allowPhotoGestures: Boolean
get() = prefs.getBoolean(ALLOW_PHOTO_GESTURES, false)
set(allowPhotoGestures) = prefs.edit().putBoolean(ALLOW_PHOTO_GESTURES, allowPhotoGestures).apply()
diff --git a/app/src/main/kotlin/org/fossify/gallery/helpers/Constants.kt b/app/src/main/kotlin/org/fossify/gallery/helpers/Constants.kt
index 70c03b259..1d3a63b25 100644
--- a/app/src/main/kotlin/org/fossify/gallery/helpers/Constants.kt
+++ b/app/src/main/kotlin/org/fossify/gallery/helpers/Constants.kt
@@ -45,6 +45,7 @@ const val INCLUDED_FOLDERS = "included_folders"
const val ALBUM_COVERS = "album_covers"
const val HIDE_SYSTEM_UI = "hide_system_ui"
const val DELETE_EMPTY_FOLDERS = "delete_empty_folders"
+const val KEEP_SCREEN_ON = "keep_screen_on"
const val ALLOW_PHOTO_GESTURES = "allow_photo_gestures"
const val ALLOW_VIDEO_GESTURES = "allow_video_gestures"
const val TEMP_FOLDER_PATH = "temp_folder_path"
diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml
index 80372ac37..ae1ba24dc 100644
--- a/app/src/main/res/layout/activity_settings.xml
+++ b/app/src/main/res/layout/activity_settings.xml
@@ -491,6 +491,21 @@
+
+
+
+
+
+
Przewijaj miniaturki w poziomie
Automatycznie ukrywaj interfejs systemu dla multimediów na pełnym ekranie
Usuwaj puste foldery po usunięciu ich zawartości
+ Pozostawiaj ekran włączony podczas oglądania obrazów na pełnym ekranie
Zezwalaj na kontrolowanie jasności obrazów pionowymi gestami
Zezwalaj na kontrolowanie głośności i jasności wideo pionowymi gestami
Pokazuj liczbę multimediów w folderze w widoku głównym
@@ -259,4 +260,4 @@
Plik przekracza możliwości urządzenia.
Nieobsługiwany format.
Plik jest wadliwy lub uszkodzony.
-
\ No newline at end of file
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 56e1173af..1ae52535d 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -180,6 +180,7 @@
Scroll thumbnails horizontally
Automatically hide system UI at fullscreen media
Delete empty folders after deleting their content
+ Keep the screen on while viewing fullscreen photos
Allow controlling photo brightness with vertical gestures
Allow controlling video volume and brightness with vertical gestures
Playback speed