From d3b98a033cb0a12a211b2cb972687932c98dba61 Mon Sep 17 00:00:00 2001 From: Neznak Date: Thu, 6 Nov 2025 00:22:34 +0300 Subject: [PATCH 1/5] add optional keep screen on functionality --- .../github/umer0586/droidpad/MainActivity.kt | 2 ++ .../github/umer0586/droidpad/data/Preference.kt | 3 ++- .../repositoriesimp/PreferenceRepositoryImp.kt | 6 +++++- .../umer0586/droidpad/ui/screens/NavScreen.kt | 4 ++++ .../ControlPadPlayScreen.kt | 3 +++ .../ControlPadPlayScreenViewModel.kt | 10 +++++++++- .../controlpadsscreen/ControlPadsScreen.kt | 6 ++++++ .../preferencescreen/PreferenceScreen.kt | 14 ++++++++++++++ .../PreferenceScreenViewModel.kt | 17 +++++++++++++++-- 9 files changed, 60 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/github/umer0586/droidpad/MainActivity.kt b/app/src/main/java/com/github/umer0586/droidpad/MainActivity.kt index 7ed81f0..64d9207 100644 --- a/app/src/main/java/com/github/umer0586/droidpad/MainActivity.kt +++ b/app/src/main/java/com/github/umer0586/droidpad/MainActivity.kt @@ -39,6 +39,8 @@ class MainActivity : ComponentActivity() { // TODO: Add dark/light theme switch DroidPadTheme { NavScreen( + // Passing window down to set the KeepScreenOn flag in individual screens. + window = window, onExitClick = { finish() exitProcess(0) diff --git a/app/src/main/java/com/github/umer0586/droidpad/data/Preference.kt b/app/src/main/java/com/github/umer0586/droidpad/data/Preference.kt index bc08397..ca60d92 100644 --- a/app/src/main/java/com/github/umer0586/droidpad/data/Preference.kt +++ b/app/src/main/java/com/github/umer0586/droidpad/data/Preference.kt @@ -26,5 +26,6 @@ data class Preference( val builderScreenLandscapeResolution : Resolution, val sendJsonOverBluetooth: Boolean, val sensorSamplingRate: Int, - val vibrate: Boolean + val vibrate: Boolean, + val keepScreenOn: Boolean ) \ No newline at end of file diff --git a/app/src/main/java/com/github/umer0586/droidpad/data/repositoriesimp/PreferenceRepositoryImp.kt b/app/src/main/java/com/github/umer0586/droidpad/data/repositoriesimp/PreferenceRepositoryImp.kt index 095f568..e2eef01 100644 --- a/app/src/main/java/com/github/umer0586/droidpad/data/repositoriesimp/PreferenceRepositoryImp.kt +++ b/app/src/main/java/com/github/umer0586/droidpad/data/repositoriesimp/PreferenceRepositoryImp.kt @@ -54,6 +54,7 @@ class PreferenceRepositoryImp( val jsonTypeForBluetooth = booleanPreferencesKey("JSON_TYPE_FOR_BLUETOOTH") val sensorSamplingRate = intPreferencesKey("SENSOR_SAMPLING_RATE") val vibrate = booleanPreferencesKey("VIBRATE") + val keepScreenOn = booleanPreferencesKey("KEEP_SCREEN_ON") } private object Defaults { @@ -62,6 +63,7 @@ class PreferenceRepositoryImp( val jsonTypeForBluetooth = false val sensorSamplingRate = 200000 val vibrate = false + val keepScreenOn = false } @@ -72,6 +74,7 @@ class PreferenceRepositoryImp( pref[Key.jsonTypeForBluetooth] = preference.sendJsonOverBluetooth pref[Key.sensorSamplingRate] = preference.sensorSamplingRate pref[Key.vibrate] = preference.vibrate + pref[Key.keepScreenOn] = preference.keepScreenOn } } @@ -82,7 +85,8 @@ class PreferenceRepositoryImp( builderScreenLandscapeResolution = Resolution.fromJson(pref[Key.builderScreenLandscapeResolution] ?: Defaults.builderScreenLandscapeResolution), sendJsonOverBluetooth = pref[Key.jsonTypeForBluetooth] ?: Defaults.jsonTypeForBluetooth, sensorSamplingRate = pref[Key.sensorSamplingRate] ?: Defaults.sensorSamplingRate, - vibrate = pref[Key.vibrate] ?: Defaults.vibrate + vibrate = pref[Key.vibrate] ?: Defaults.vibrate, + keepScreenOn = pref[Key.keepScreenOn] ?: Defaults.keepScreenOn ) }.flowOn(ioDispatcher) diff --git a/app/src/main/java/com/github/umer0586/droidpad/ui/screens/NavScreen.kt b/app/src/main/java/com/github/umer0586/droidpad/ui/screens/NavScreen.kt index 0381912..c99e0f0 100644 --- a/app/src/main/java/com/github/umer0586/droidpad/ui/screens/NavScreen.kt +++ b/app/src/main/java/com/github/umer0586/droidpad/ui/screens/NavScreen.kt @@ -20,6 +20,7 @@ package com.github.umer0586.droidpad.ui.screens +import android.view.Window import androidx.compose.runtime.Composable import androidx.navigation.NavGraph.Companion.findStartDestination import androidx.navigation.NavHostController @@ -91,6 +92,7 @@ object Route{ @Composable fun NavScreen( + window: Window? = null, onExitClick: (() -> Unit)? = null, ) { val navController = rememberNavController() @@ -111,6 +113,7 @@ fun NavScreen( composable { ControlPadsScreen( + window = window, onCreateClick = { navController.navigateTo(Route.NewControlPadScreen) @@ -222,6 +225,7 @@ fun NavScreen( val controlPad = controlPadPlayScreenRoute.controlPad ControlPadPlayScreen( + window= window, controlPad = controlPad, onBackPress = { navController.navigateTo(Route.ControlPadListScreen) diff --git a/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadplayscreen/ControlPadPlayScreen.kt b/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadplayscreen/ControlPadPlayScreen.kt index 2c09ff6..13b5db7 100644 --- a/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadplayscreen/ControlPadPlayScreen.kt +++ b/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadplayscreen/ControlPadPlayScreen.kt @@ -20,6 +20,7 @@ package com.github.umer0586.droidpad.ui.screens.controlpadplayscreen import android.content.pm.ActivityInfo +import android.view.Window import androidx.activity.compose.BackHandler import androidx.compose.foundation.background import androidx.compose.foundation.clickable @@ -118,11 +119,13 @@ import kotlinx.coroutines.launch @Composable fun ControlPadPlayScreen( + window: Window? = null, controlPad: ControlPad, viewModel: ControlPadPlayScreenViewModel = hiltViewModel(), onBackPress: (() -> Unit)? = null, ) { + viewModel.enableKeepScreenOn(window = window) LockScreenOrientation( orientation = when(controlPad.orientation){ Orientation.PORTRAIT -> ActivityInfo.SCREEN_ORIENTATION_PORTRAIT diff --git a/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadplayscreen/ControlPadPlayScreenViewModel.kt b/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadplayscreen/ControlPadPlayScreenViewModel.kt index b928863..9d614e2 100644 --- a/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadplayscreen/ControlPadPlayScreenViewModel.kt +++ b/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadplayscreen/ControlPadPlayScreenViewModel.kt @@ -20,6 +20,8 @@ package com.github.umer0586.droidpad.ui.screens.controlpadplayscreen import android.util.Log +import android.view.Window +import android.view.WindowManager import androidx.compose.runtime.mutableStateListOf import androidx.compose.runtime.mutableStateMapOf import androidx.compose.runtime.snapshots.SnapshotStateList @@ -131,6 +133,7 @@ class ControlPadPlayScreenViewModel @Inject constructor( private var sendJsonOverBluetooth = false private var samplingRate = 200000 private var vibrate = false + private var keepScreenOn = false private val tag = javaClass.simpleName @@ -148,6 +151,7 @@ class ControlPadPlayScreenViewModel @Inject constructor( sendJsonOverBluetooth = preference.sendJsonOverBluetooth samplingRate = preference.sensorSamplingRate vibrate = preference.vibrate + keepScreenOn = preference.keepScreenOn } } @@ -168,7 +172,11 @@ class ControlPadPlayScreenViewModel @Inject constructor( } - + fun enableKeepScreenOn(window: Window?){ + if (keepScreenOn.equals(true)){ + window?.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + } + } fun loadControlPadItemsFor(controlPad: ControlPad) { diff --git a/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadsscreen/ControlPadsScreen.kt b/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadsscreen/ControlPadsScreen.kt index a2137fb..ab3d1ec 100644 --- a/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadsscreen/ControlPadsScreen.kt +++ b/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadsscreen/ControlPadsScreen.kt @@ -24,6 +24,8 @@ import android.content.Context import android.content.Intent import android.content.pm.PackageManager import android.net.Uri +import android.view.Window +import android.view.WindowManager import android.widget.Toast import androidx.compose.foundation.background import androidx.compose.foundation.clickable @@ -125,9 +127,13 @@ fun ControlPadsScreen( onImportJsonClick: (() -> Unit)? = null, onPreferenceClick:(() -> Unit)? = null, onAttachSensorsClick: ((ControlPad) -> Unit)? = null, + window: Window? = null, ) { val uiState by viewModel.uiState.collectAsState() + // Disable Keep Screen On after exiting ControlPadPlayScreen + window?.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + LaunchedEffect(Unit) { viewModel.loadConnectionTypes() } diff --git a/app/src/main/java/com/github/umer0586/droidpad/ui/screens/preferencescreen/PreferenceScreen.kt b/app/src/main/java/com/github/umer0586/droidpad/ui/screens/preferencescreen/PreferenceScreen.kt index b87d079..ccefd7d 100644 --- a/app/src/main/java/com/github/umer0586/droidpad/ui/screens/preferencescreen/PreferenceScreen.kt +++ b/app/src/main/java/com/github/umer0586/droidpad/ui/screens/preferencescreen/PreferenceScreen.kt @@ -131,6 +131,20 @@ fun PreferenceScreenContent( } ) + + ListItem( + headlineContent = {Text("Keep screen on")}, + supportingContent = { Text("Keep the screen on when on a control pad screen.") }, + trailingContent = { + Switch( + checked = uiState.keepScreenOn, + onCheckedChange = { + onEvent(PreferenceScreenEvent.OnKeepScreenOnChange(it)) + } + ) + } + + ) } } diff --git a/app/src/main/java/com/github/umer0586/droidpad/ui/screens/preferencescreen/PreferenceScreenViewModel.kt b/app/src/main/java/com/github/umer0586/droidpad/ui/screens/preferencescreen/PreferenceScreenViewModel.kt index 814d6ac..2dd8406 100644 --- a/app/src/main/java/com/github/umer0586/droidpad/ui/screens/preferencescreen/PreferenceScreenViewModel.kt +++ b/app/src/main/java/com/github/umer0586/droidpad/ui/screens/preferencescreen/PreferenceScreenViewModel.kt @@ -15,13 +15,15 @@ import javax.inject.Inject data class PreferenceScreenState( val jsonForBluetooth: Boolean = false, val sensorSamplingRate: Int = 200000, - val vibrate: Boolean = false + val vibrate: Boolean = false, + val keepScreenOn: Boolean = false ) sealed interface PreferenceScreenEvent{ data class OnJsonForBluetoothChange(val jsonForBluetooth: Boolean) : PreferenceScreenEvent data class OnSensorSamplingRateChange(val sensorSamplingRate: Int) : PreferenceScreenEvent data class OnVibrateChange(val vibrate: Boolean) : PreferenceScreenEvent + data class OnKeepScreenOnChange(val keepScreenOn: Boolean) : PreferenceScreenEvent data object OnSensorSamplingRateChangeFinished : PreferenceScreenEvent data object OnBackClick : PreferenceScreenEvent } @@ -50,7 +52,8 @@ class PreferenceScreenViewModel @Inject constructor( it.copy( jsonForBluetooth = pref.sendJsonOverBluetooth, sensorSamplingRate = pref.sensorSamplingRate, - vibrate = pref.vibrate + vibrate = pref.vibrate, + keepScreenOn = pref.keepScreenOn ) } } @@ -91,6 +94,16 @@ class PreferenceScreenViewModel @Inject constructor( } } } + is PreferenceScreenEvent.OnKeepScreenOnChange -> { + _uiState.update { + it.copy(keepScreenOn = event.keepScreenOn) + } + viewModelScope.launch { + preferenceRepository.updatePreference { + it.copy(keepScreenOn = event.keepScreenOn) + } + } + } PreferenceScreenEvent.OnBackClick -> {} } From d71588c01338d1bb60be59304766421a09426c05 Mon Sep 17 00:00:00 2001 From: UmerCodez Date: Thu, 20 Nov 2025 16:45:13 +0500 Subject: [PATCH 2/5] fix: Keep screen on using LaunchedEffect The `enableKeepScreenOn` call has been moved into a `LaunchedEffect`. This ensures that the screen is kept on only once when the composable enters the composition, rather than on every recomposition. --- .../ui/screens/controlpadplayscreen/ControlPadPlayScreen.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadplayscreen/ControlPadPlayScreen.kt b/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadplayscreen/ControlPadPlayScreen.kt index 13b5db7..20a00e8 100644 --- a/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadplayscreen/ControlPadPlayScreen.kt +++ b/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadplayscreen/ControlPadPlayScreen.kt @@ -125,7 +125,7 @@ fun ControlPadPlayScreen( onBackPress: (() -> Unit)? = null, ) { - viewModel.enableKeepScreenOn(window = window) + LockScreenOrientation( orientation = when(controlPad.orientation){ Orientation.PORTRAIT -> ActivityInfo.SCREEN_ORIENTATION_PORTRAIT @@ -139,6 +139,10 @@ fun ControlPadPlayScreen( viewModel.loadControlPadItemsFor(controlPad) } + LaunchedEffect(Unit) { + viewModel.enableKeepScreenOn(window = window) + } + ControlPlayScreenContent( controlPad = controlPad, From 6150b3bada9c259f9103ee5de116c72c7db898c8 Mon Sep 17 00:00:00 2001 From: UmerCodez Date: Thu, 20 Nov 2025 17:04:21 +0500 Subject: [PATCH 3/5] refactor: remove window parameter from ControlPadPlayScreen The `window` parameter has been removed from the `ControlPadPlayScreen` composable. The window is now obtained directly from the `LocalActivity` composition local. --- .../java/com/github/umer0586/droidpad/ui/screens/NavScreen.kt | 1 - .../ui/screens/controlpadplayscreen/ControlPadPlayScreen.kt | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/github/umer0586/droidpad/ui/screens/NavScreen.kt b/app/src/main/java/com/github/umer0586/droidpad/ui/screens/NavScreen.kt index c99e0f0..fcc3736 100644 --- a/app/src/main/java/com/github/umer0586/droidpad/ui/screens/NavScreen.kt +++ b/app/src/main/java/com/github/umer0586/droidpad/ui/screens/NavScreen.kt @@ -225,7 +225,6 @@ fun NavScreen( val controlPad = controlPadPlayScreenRoute.controlPad ControlPadPlayScreen( - window= window, controlPad = controlPad, onBackPress = { navController.navigateTo(Route.ControlPadListScreen) diff --git a/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadplayscreen/ControlPadPlayScreen.kt b/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadplayscreen/ControlPadPlayScreen.kt index 20a00e8..c2524c4 100644 --- a/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadplayscreen/ControlPadPlayScreen.kt +++ b/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadplayscreen/ControlPadPlayScreen.kt @@ -22,6 +22,7 @@ package com.github.umer0586.droidpad.ui.screens.controlpadplayscreen import android.content.pm.ActivityInfo import android.view.Window import androidx.activity.compose.BackHandler +import androidx.activity.compose.LocalActivity import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.gestures.detectTapGestures @@ -119,7 +120,6 @@ import kotlinx.coroutines.launch @Composable fun ControlPadPlayScreen( - window: Window? = null, controlPad: ControlPad, viewModel: ControlPadPlayScreenViewModel = hiltViewModel(), onBackPress: (() -> Unit)? = null, @@ -139,6 +139,7 @@ fun ControlPadPlayScreen( viewModel.loadControlPadItemsFor(controlPad) } + val window = LocalActivity.current?.window LaunchedEffect(Unit) { viewModel.enableKeepScreenOn(window = window) } From e7e16918d0e9d587bdbe6b827c0c5c7ba3201796 Mon Sep 17 00:00:00 2001 From: UmerCodez Date: Thu, 20 Nov 2025 17:12:14 +0500 Subject: [PATCH 4/5] refactor: Keep screen on in play screen and clear or back press The `FLAG_KEEP_SCREEN_ON` is now set when entering the `ControlPadPlayScreen` and cleared upon exit. This removes the need to pass the `window` object down through the `NavScreen` and `ControlPadsScreen`, simplifying the composable signatures. --- .../main/java/com/github/umer0586/droidpad/MainActivity.kt | 2 -- .../com/github/umer0586/droidpad/ui/screens/NavScreen.kt | 2 -- .../ui/screens/controlpadplayscreen/ControlPadPlayScreen.kt | 5 ++++- .../ui/screens/controlpadsscreen/ControlPadsScreen.kt | 4 ---- 4 files changed, 4 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/github/umer0586/droidpad/MainActivity.kt b/app/src/main/java/com/github/umer0586/droidpad/MainActivity.kt index 64d9207..7ed81f0 100644 --- a/app/src/main/java/com/github/umer0586/droidpad/MainActivity.kt +++ b/app/src/main/java/com/github/umer0586/droidpad/MainActivity.kt @@ -39,8 +39,6 @@ class MainActivity : ComponentActivity() { // TODO: Add dark/light theme switch DroidPadTheme { NavScreen( - // Passing window down to set the KeepScreenOn flag in individual screens. - window = window, onExitClick = { finish() exitProcess(0) diff --git a/app/src/main/java/com/github/umer0586/droidpad/ui/screens/NavScreen.kt b/app/src/main/java/com/github/umer0586/droidpad/ui/screens/NavScreen.kt index fcc3736..7aa594d 100644 --- a/app/src/main/java/com/github/umer0586/droidpad/ui/screens/NavScreen.kt +++ b/app/src/main/java/com/github/umer0586/droidpad/ui/screens/NavScreen.kt @@ -92,7 +92,6 @@ object Route{ @Composable fun NavScreen( - window: Window? = null, onExitClick: (() -> Unit)? = null, ) { val navController = rememberNavController() @@ -113,7 +112,6 @@ fun NavScreen( composable { ControlPadsScreen( - window = window, onCreateClick = { navController.navigateTo(Route.NewControlPadScreen) diff --git a/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadplayscreen/ControlPadPlayScreen.kt b/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadplayscreen/ControlPadPlayScreen.kt index c2524c4..a1e07a7 100644 --- a/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadplayscreen/ControlPadPlayScreen.kt +++ b/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadplayscreen/ControlPadPlayScreen.kt @@ -21,6 +21,7 @@ package com.github.umer0586.droidpad.ui.screens.controlpadplayscreen import android.content.pm.ActivityInfo import android.view.Window +import android.view.WindowManager import androidx.activity.compose.BackHandler import androidx.activity.compose.LocalActivity import androidx.compose.foundation.background @@ -151,8 +152,10 @@ fun ControlPadPlayScreen( onUiEvent = {event-> viewModel.onEvent(event) - if(event is ControlPadPlayScreenEvent.OnBackPress) + if(event is ControlPadPlayScreenEvent.OnBackPress) { onBackPress?.invoke() + window?.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + } } ) } diff --git a/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadsscreen/ControlPadsScreen.kt b/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadsscreen/ControlPadsScreen.kt index ab3d1ec..45026ef 100644 --- a/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadsscreen/ControlPadsScreen.kt +++ b/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadsscreen/ControlPadsScreen.kt @@ -127,13 +127,9 @@ fun ControlPadsScreen( onImportJsonClick: (() -> Unit)? = null, onPreferenceClick:(() -> Unit)? = null, onAttachSensorsClick: ((ControlPad) -> Unit)? = null, - window: Window? = null, ) { val uiState by viewModel.uiState.collectAsState() - // Disable Keep Screen On after exiting ControlPadPlayScreen - window?.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) - LaunchedEffect(Unit) { viewModel.loadConnectionTypes() } From 130173f7b5193707191a57e060cd60b88ece4eb2 Mon Sep 17 00:00:00 2001 From: UmerCodez Date: Thu, 20 Nov 2025 18:26:45 +0500 Subject: [PATCH 5/5] refactor: make viewModel independent of activity's Window object to prevent memory leak --- .../controlpadplayscreen/ControlPadPlayScreen.kt | 7 ++++--- .../ControlPadPlayScreenViewModel.kt | 13 +++++-------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadplayscreen/ControlPadPlayScreen.kt b/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadplayscreen/ControlPadPlayScreen.kt index a1e07a7..d237b83 100644 --- a/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadplayscreen/ControlPadPlayScreen.kt +++ b/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadplayscreen/ControlPadPlayScreen.kt @@ -20,7 +20,6 @@ package com.github.umer0586.droidpad.ui.screens.controlpadplayscreen import android.content.pm.ActivityInfo -import android.view.Window import android.view.WindowManager import androidx.activity.compose.BackHandler import androidx.activity.compose.LocalActivity @@ -141,8 +140,10 @@ fun ControlPadPlayScreen( } val window = LocalActivity.current?.window - LaunchedEffect(Unit) { - viewModel.enableKeepScreenOn(window = window) + LaunchedEffect(uiState.keepScreenOn) { + if(uiState.keepScreenOn){ + window?.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + } } diff --git a/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadplayscreen/ControlPadPlayScreenViewModel.kt b/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadplayscreen/ControlPadPlayScreenViewModel.kt index 9d614e2..83fe929 100644 --- a/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadplayscreen/ControlPadPlayScreenViewModel.kt +++ b/app/src/main/java/com/github/umer0586/droidpad/ui/screens/controlpadplayscreen/ControlPadPlayScreenViewModel.kt @@ -91,7 +91,8 @@ data class ControlPadPlayScreenState( val isConnected: Boolean = false, val controlPadBackgroundColor : Long = Color.Red.value.toLong(), val hostAddress: String = "", - val isBluetoothEnabled: Boolean = false + val isBluetoothEnabled: Boolean = false, + val keepScreenOn: Boolean = false ) sealed interface ControlPadPlayScreenEvent { data object OnConnectClick : ControlPadPlayScreenEvent @@ -133,7 +134,6 @@ class ControlPadPlayScreenViewModel @Inject constructor( private var sendJsonOverBluetooth = false private var samplingRate = 200000 private var vibrate = false - private var keepScreenOn = false private val tag = javaClass.simpleName @@ -151,7 +151,9 @@ class ControlPadPlayScreenViewModel @Inject constructor( sendJsonOverBluetooth = preference.sendJsonOverBluetooth samplingRate = preference.sensorSamplingRate vibrate = preference.vibrate - keepScreenOn = preference.keepScreenOn + _uiState.update { + it.copy(keepScreenOn = preference.keepScreenOn) + } } } @@ -172,11 +174,6 @@ class ControlPadPlayScreenViewModel @Inject constructor( } - fun enableKeepScreenOn(window: Window?){ - if (keepScreenOn.equals(true)){ - window?.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) - } - } fun loadControlPadItemsFor(controlPad: ControlPad) {