Use labeled icons for Android settings section tabs

This commit is contained in:
evgeny committed 2026-10-30 22:09:05 +01:00
1 parent 9f59e0968e
commit bd453311ac
1 file changed
+13 -4
@@ -111,7 +111,9 @@ fun SettingsScreen(vm: ChatViewModel, onBack: () -> Unit, onExit: () -> Unit = {
var applyFailed by remember { mutableStateOf(false) }
var tabIndex by rememberSaveable { mutableStateOf(0) }
val tabs = listOf(R.string.settings, R.string.audio, R.string.storage, R.string.radio, R.string.broadcast, R.string.dev, R.string.bluetooth)
val tabs = listOf(R.string.settings to Icons.Default.Settings, R.string.audio to Icons.Default.VolumeUp,
R.string.storage to Icons.Default.Storage, R.string.radio to Icons.Default.Radio,
R.string.broadcast to Icons.Default.LiveTv, R.string.dev to Icons.Default.Code, R.string.bluetooth to Icons.Default.Bluetooth)
val handleBack: () -> Unit = back@{
if (applyingConfig) return@back
@@ -161,9 +163,16 @@ fun SettingsScreen(vm: ChatViewModel, onBack: () -> Unit, onExit: () -> Unit = {
}
) { padding ->
Column(modifier = Modifier.padding(padding)) {
ScrollableTabRow(selectedTabIndex = tabIndex, edgePadding = 0.dp) {
tabs.forEachIndexed { idx, name ->
Tab(selected = tabIndex == idx, onClick = { tabIndex = idx }, text = { Text(stringResource(name), maxLines = 1) })
TabRow(selectedTabIndex = tabIndex) {
tabs.forEachIndexed { idx, (name, image) ->
val title = stringResource(name)
TooltipBox(positionProvider = TooltipDefaults.rememberPlainTooltipPositionProvider(),
tooltip = { PlainTooltip { Text(title) } }, state = rememberTooltipState()) {
Tab(selected = tabIndex == idx, onClick = {
LogManager.addLog("DEBUG", "Settings", "Section selected index=$idx")
tabIndex = idx
}, icon = { Icon(image, contentDescription = title, modifier = Modifier.size(24.dp)) })
}
}
}
key(tabIndex) {