package com.vgmlr.kiln
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material3.*
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.sp
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.ui.unit.dp
private const val NO_DEFAULT = "[none]"
@OptIn(ExperimentalMaterial3Api::class)
@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()
Scaffold(containerColor = CBg, topBar = {
TopAppBar(
title = { Text("Settings", color = TopBarFg, fontSize = 18.sp) },
colors = TopAppBarDefaults.topAppBarColors(containerColor = TopBarBg),
navigationIcon = {
IconButton(onClick = onBack) {
Icon(Icons.AutoMirrored.Filled.ArrowBack, "Back", tint = TopBarFg)
}
}
)
}) { pad ->
Column(
Modifier.fillMaxSize().background(CBg)
.padding(top = pad.calculateTopPadding())
.verticalScroll(rememberScrollState())
.padding(horizontal = 16.dp)
) {
Spacer(Modifier.height(20.dp))
WgSection("Global") {
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(24.dp + pad.calculateBottomPadding()))
}
}
}