Pith - kiln
kiln/app/src/main/java/com/vgmlr/kiln/KilnHomeSettings.kt [2.7 kb]
Modified: 18:59:25 154 026 (20 Aug 026)
3 Days Ago
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()))
        }
    }
}
Updates
Kerf - Android 157.026
Kiln - Android 157.026
Wedge - Android 156.026
Whittle - Linux 155.026
Grit - Firefox/Chrome 154.026

Menu
Calendar
Project Tin (024/029)
Miter
RSS Feed
User Avatar
@vgmlr
=SUM(parts)
0.00306
257,122 (+376)