From f0a4fd379f593da7f303737e50106c12d33c8c24 Mon Sep 17 00:00:00 2001 From: Abdelilah El Aissaoui Date: Thu, 4 Aug 2022 15:11:45 +0200 Subject: [PATCH] Added option to have a scale different than the ones predefined --- .../app/ui/dialogs/settings/SettingsDialog.kt | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/app/ui/dialogs/settings/SettingsDialog.kt b/src/main/kotlin/app/ui/dialogs/settings/SettingsDialog.kt index 26a7b45..4842e13 100644 --- a/src/main/kotlin/app/ui/dialogs/settings/SettingsDialog.kt +++ b/src/main/kotlin/app/ui/dialogs/settings/SettingsDialog.kt @@ -184,13 +184,17 @@ fun UiSettings(settingsViewModel: SettingsViewModel) { } val density = LocalDensity.current.density - val options = listOf( - ScaleDropDown(1f, "100%"), - ScaleDropDown(1.5f, "150%"), - ScaleDropDown(2f, "200%"), - ScaleDropDown(2.5f, "250%"), - ScaleDropDown(3f, "300%"), - ) + var options by remember { + mutableStateOf( + listOf( + ScaleDropDown(1f, "100%"), + ScaleDropDown(1.5f, "150%"), + ScaleDropDown(2f, "200%"), + ScaleDropDown(2.5f, "250%"), + ScaleDropDown(3f, "300%"), + ) + ) + } var scaleValue by remember { val savedScaleUi = settingsViewModel.scaleUi @@ -200,7 +204,17 @@ fun UiSettings(settingsViewModel: SettingsViewModel) { savedScaleUi } - val matchingOption = options.firstOrNull { it.value == scaleUi } ?: options.first() + var matchingOption = options.firstOrNull { it.value == scaleUi } + + if (matchingOption == null) { // Scale that we haven't taken in considerations + // Create a new scale and add it to the options list + matchingOption = ScaleDropDown(scaleUi, "${scaleUi * 100}%") + val newOptions = options.toMutableList() + newOptions.add(matchingOption) + newOptions.sortBy { it.value } + options = newOptions + } + mutableStateOf(matchingOption) }