commit 5278c912e0ada1080d3b37ba43ec9f65067a01bf
parent 5e41ccffd7d15351597959c3f5e253b4c67ff81d
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date:   Sat, 29 Jul 2023 01:39:29 +0200

ui: save config

Diffstat:
Mapp/src/main/kotlin/me/rhunk/snapenhance/manager/sections/FeaturesSection.kt | 70++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------
Mcore/src/main/kotlin/me/rhunk/snapenhance/bridge/wrapper/ConfigWrapper.kt | 4++++
2 files changed, 58 insertions(+), 16 deletions(-)

diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/manager/sections/FeaturesSection.kt b/app/src/main/kotlin/me/rhunk/snapenhance/manager/sections/FeaturesSection.kt @@ -10,22 +10,32 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.MaterialTheme +import androidx.compose.material.SnackbarHost import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.OpenInNew +import androidx.compose.material.icons.rounded.Save +import androidx.compose.material.rememberScaffoldState import androidx.compose.material3.Card import androidx.compose.material3.FilledIconButton +import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon import androidx.compose.material3.IconButton +import androidx.compose.material3.Scaffold import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import kotlinx.coroutines.launch import me.rhunk.snapenhance.config.ConfigProperty import me.rhunk.snapenhance.config.impl.ConfigIntegerValue import me.rhunk.snapenhance.config.impl.ConfigStateListValue @@ -109,7 +119,7 @@ class FeaturesSection : Section() { .weight(1f, fill = true) .padding(all = 10.dp) ) { - Text(text = manager.translation.propertyName(item), fontSize = 16.sp) + Text(text = manager.translation.propertyName(item), fontSize = 16.sp, fontWeight = FontWeight.Bold) Text( text = manager.translation.propertyDescription(item), fontSize = 12.sp, @@ -132,28 +142,56 @@ class FeaturesSection : Section() { } - @Composable @Preview override fun Content() { val configItems = remember { ConfigProperty.sortedByCategory() } - Column { - Text( - text = "Features", - modifier = Modifier.padding(all = 15.dp), - fontSize = 20.sp - ) - LazyColumn( - modifier = Modifier - .fillMaxSize(), - verticalArrangement = Arrangement.Center - ) { - items(configItems) { item -> - PropertyCard(item) + val scope = rememberCoroutineScope() + val scaffoldState = rememberScaffoldState() + Scaffold( + snackbarHost = { SnackbarHost(scaffoldState.snackbarHostState) }, + floatingActionButton = { + FloatingActionButton( + onClick = { + manager.config.save() + scope.launch { + scaffoldState.snackbarHostState.showSnackbar("Saved") + } + }, + containerColor = MaterialTheme.colors.primary, + shape = RoundedCornerShape(16.dp), + ) { + Icon( + imageVector = Icons.Rounded.Save, + contentDescription = null + ) + } + }, + modifier = Modifier.fillMaxSize(), + content = { innerPadding -> + Column( + modifier = Modifier + .fillMaxSize() + .padding(innerPadding) + ) { + Text( + text = "Features", + modifier = Modifier.padding(all = 10.dp), + fontSize = 20.sp + ) + LazyColumn( + modifier = Modifier + .fillMaxSize(), + verticalArrangement = Arrangement.Center + ) { + items(configItems) { item -> + PropertyCard(item) + } + } } } - } + ) } } \ No newline at end of file diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/bridge/wrapper/ConfigWrapper.kt b/core/src/main/kotlin/me/rhunk/snapenhance/bridge/wrapper/ConfigWrapper.kt @@ -35,6 +35,10 @@ class ConfigWrapper: ConfigAccessor() { } } + fun save() { + writeConfig() + } + private fun loadConfig() { val configContent = file.read()