package com.vgmlr.kiln
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material.icons.outlined.FavoriteBorder
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
private const val NO_DEFAULT = "[none]"
@Composable
fun KilnHomeSettings(vm: KilnViewModel, onBack: () -> Unit) {
val accounts by vm.accounts.collectAsState()
val defaultId by vm.defaultAccountId.collectAsState()
val loadDefault by vm.loadDefaultOnStart.collectAsState()
val names = accounts.map { it.name }
val defaultName = accounts.firstOrNull { it.id == defaultId }?.name.orEmpty()
val loadOptions = listOf("False", "True")
val loadDisabled = if (defaultName.isBlank()) loadOptions else emptyList()
val topInset = WindowInsets.statusBars.asPaddingValues().calculateTopPadding()
Box(Modifier.fillMaxSize().background(CBg)) {
Column(
Modifier.fillMaxSize()
.navigationBarsPadding()
.verticalScroll(rememberScrollState())
.padding(horizontal = BAR_INSET_H)
) {
Spacer(Modifier.height(topInset + TOP_BAR_H + 12.dp))
WgSection("Global", Icons.Outlined.FavoriteBorder) {
WgRow("Default Account (Icon)") {
WgDropdown(defaultName, names, placeholder = NO_DEFAULT) { picked ->
accounts.getOrNull(names.indexOf(picked))
?.let { vm.setDefaultAccount(it.id) }
}
}
WgDivider()
WgRow("Load Default On Start") {
WgRadio(
value = if (loadDefault) "True" else "False",
options = loadOptions,
disabledOptions = loadDisabled
) { vm.setLoadDefaultOnStart(it == "True") }
}
}
Spacer(Modifier.height(8.dp))
}
Row(
Modifier.fillMaxWidth()
.padding(top = topInset)
.height(TOP_BAR_H)
.padding(horizontal = BAR_INSET_H),
horizontalArrangement = Arrangement.spacedBy(BAR_GAP),
verticalAlignment = Alignment.CenterVertically
) {
KilnBarButton(Icons.AutoMirrored.Filled.ArrowBack, "Back", onClick = onBack)
KilnBlankButton(Modifier.weight(1f), "Settings", Alignment.CenterStart)
}
}
}