commit b35bbfb6b20cff5fd5631eff583ecbb13ad57b01
parent c5def2e69db6aaa63903932340741af0ee9fa4fc
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date: Wed, 2 Aug 2023 10:14:36 +0200
ui: container state
- integer dialogs
Diffstat:
2 files changed, 52 insertions(+), 28 deletions(-)
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/manager/sections/features/Dialogs.kt b/app/src/main/kotlin/me/rhunk/snapenhance/manager/sections/features/Dialogs.kt
@@ -125,12 +125,9 @@ class Dialogs {
fieldValue.value = it
},
keyboardOptions = when (property.key.dataType.type) {
- DataProcessors.Type.INTEGER -> {
- KeyboardOptions(keyboardType = KeyboardType.Number)
- }
- else -> {
- KeyboardOptions(keyboardType = KeyboardType.Text)
- }
+ DataProcessors.Type.INTEGER -> KeyboardOptions(keyboardType = KeyboardType.Number)
+ DataProcessors.Type.FLOAT -> KeyboardOptions(keyboardType = KeyboardType.Decimal)
+ else -> KeyboardOptions(keyboardType = KeyboardType.Text)
},
singleLine = true
)
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/manager/sections/features/FeaturesSection.kt b/app/src/main/kotlin/me/rhunk/snapenhance/manager/sections/features/FeaturesSection.kt
@@ -1,13 +1,17 @@
package me.rhunk.snapenhance.manager.sections.features
+import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.widthIn
import androidx.compose.foundation.layout.wrapContentWidth
import androidx.compose.foundation.lazy.LazyColumn
@@ -106,7 +110,7 @@ class FeaturesSection : Section() {
)
}
- DataProcessors.Type.STRING_MULTIPLE_SELECTION, DataProcessors.Type.STRING, DataProcessors.Type.INTEGER -> {
+ DataProcessors.Type.STRING_MULTIPLE_SELECTION, DataProcessors.Type.STRING, DataProcessors.Type.INTEGER, DataProcessors.Type.FLOAT -> {
dialogComposable.value = {
when (dataType) {
DataProcessors.Type.STRING_MULTIPLE_SELECTION -> {
@@ -120,7 +124,7 @@ class FeaturesSection : Section() {
}
registerDialogOnClickCallback().let { { it.invoke(true) } }.also {
- if (dataType == DataProcessors.Type.INTEGER) {
+ if (dataType == DataProcessors.Type.INTEGER || dataType == DataProcessors.Type.FLOAT) {
FilledIconButton(onClick = it) {
Text(
text = propertyValue.get().toString(),
@@ -135,7 +139,36 @@ class FeaturesSection : Section() {
}
}
}
- else -> {}
+ DataProcessors.Type.CONTAINER -> {
+ val container = propertyValue.get() as ConfigContainer
+
+ registerClickCallback {
+ navController.navigate("container/${property.name}")
+ }
+
+ if (container.globalState == null) return
+
+ val state = remember { mutableStateOf(container.globalState!!) }
+
+ Box(
+ modifier = Modifier
+ .padding(end = 15.dp),
+ ) {
+
+ Box(modifier = Modifier
+ .height(50.dp)
+ .width(1.dp)
+ .background(color = MaterialTheme.colors.onBackground.copy(alpha = 0.12f), shape = RoundedCornerShape(5.dp)))
+ }
+
+ Switch(
+ checked = state.value,
+ onCheckedChange = {
+ state.value = state.value.not()
+ container.globalState = state.value
+ }
+ )
+ }
}
}
@@ -175,24 +208,16 @@ class FeaturesSection : Section() {
)
}
- when (property.key.dataType.type) {
- DataProcessors.Type.CONTAINER -> {
- clickCallback.value = {
- navController.navigate("container/${property.name}")
- }
- }
- else -> {
- Column(
- modifier = Modifier
- .align(Alignment.CenterVertically)
- .padding(all = 10.dp)
- ) {
- PropertyAction(property, registerClickCallback = { callback ->
- clickCallback.value = callback
- callback
- })
- }
- }
+ Row(
+ modifier = Modifier
+ .align(Alignment.CenterVertically)
+ .padding(all = 10.dp),
+ verticalAlignment = Alignment.CenterVertically
+ ) {
+ PropertyAction(property, registerClickCallback = { callback ->
+ clickCallback.value = callback
+ callback
+ })
}
}
}
@@ -249,7 +274,9 @@ class FeaturesSection : Section() {
},
content = { innerPadding ->
LazyColumn(
- modifier = Modifier.fillMaxHeight().padding(innerPadding),
+ modifier = Modifier
+ .fillMaxHeight()
+ .padding(innerPadding),
verticalArrangement = Arrangement.Center
) {
items(properties) {