diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/config/ConfigAccessor.kt b/app/src/main/kotlin/me/rhunk/snapenhance/config/ConfigAccessor.kt index 5b366ced..2361bab5 100644 --- a/app/src/main/kotlin/me/rhunk/snapenhance/config/ConfigAccessor.kt +++ b/app/src/main/kotlin/me/rhunk/snapenhance/config/ConfigAccessor.kt @@ -44,6 +44,10 @@ open class ConfigAccessor( return get(key).value() as Map } + fun state(key: ConfigProperty): String { + return get(key).value() as String + } + fun get(key: ConfigProperty): ConfigValue<*> { return configMap[key]!! } diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/config/impl/ConfigStateSelection.kt b/app/src/main/kotlin/me/rhunk/snapenhance/config/impl/ConfigStateSelection.kt new file mode 100644 index 00000000..cc3d02dc --- /dev/null +++ b/app/src/main/kotlin/me/rhunk/snapenhance/config/impl/ConfigStateSelection.kt @@ -0,0 +1,28 @@ +package me.rhunk.snapenhance.config.impl + +import me.rhunk.snapenhance.config.ConfigValue + +class ConfigStateSelection( + private val keys: List, + var state: String = "" +) : ConfigValue() { + + fun keys(): List { + return keys + } + override fun value(): String { + return state + } + + fun value(key: String) { + state = key + } + + override fun write(): String { + return state + } + + override fun read(value: String) { + state = value + } +} \ No newline at end of file diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/features/impl/ui/menus/impl/SettingsMenu.kt b/app/src/main/kotlin/me/rhunk/snapenhance/features/impl/ui/menus/impl/SettingsMenu.kt index 44bc1ab5..02fe23ca 100644 --- a/app/src/main/kotlin/me/rhunk/snapenhance/features/impl/ui/menus/impl/SettingsMenu.kt +++ b/app/src/main/kotlin/me/rhunk/snapenhance/features/impl/ui/menus/impl/SettingsMenu.kt @@ -13,6 +13,7 @@ import me.rhunk.snapenhance.Constants import me.rhunk.snapenhance.config.ConfigProperty import me.rhunk.snapenhance.config.impl.ConfigIntegerValue import me.rhunk.snapenhance.config.impl.ConfigStateListValue +import me.rhunk.snapenhance.config.impl.ConfigStateSelection import me.rhunk.snapenhance.config.impl.ConfigStateValue import me.rhunk.snapenhance.config.impl.ConfigStringValue import me.rhunk.snapenhance.features.impl.ui.menus.AbstractMenu @@ -89,6 +90,30 @@ class SettingsMenu : AbstractMenu() { ViewAppearanceHelper.applyTheme(viewModel, switch) switch } + is ConfigStateSelection -> { + val button = Button(viewModel.context) + updateButtonText(button, property.valueContainer.value()) + + button.setOnClickListener {_ -> + val builder = AlertDialog.Builder(viewModel.context) + builder.setTitle(context.translation.get(property.nameKey)) + + builder.setSingleChoiceItems( + property.valueContainer.keys().toTypedArray(), + property.valueContainer.keys().indexOf(property.valueContainer.value()) + ) { _, which -> + property.valueContainer.value(property.valueContainer.keys()[which]) + } + + builder.setPositiveButton("OK") { _, _ -> + updateButtonText(button, property.valueContainer.value()) + } + + builder.show() + } + ViewAppearanceHelper.applyTheme(viewModel, button) + button + } is ConfigStateListValue -> { val button = Button(viewModel.context) updateButtonText(button, property.valueContainer.toString())