From 3d61474774340b7e3afd85dd73bd0f754666cbf0 Mon Sep 17 00:00:00 2001 From: Sweetbread Date: Sun, 15 Feb 2026 01:22:01 +0300 Subject: [PATCH] feat: format group names --- .../unn/ui/composes/GroupsNameText.kt | 50 +++++++++++++++++++ .../ru/sweetbread/unn/ui/composes/Schedule.kt | 5 +- 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/ru/sweetbread/unn/ui/composes/GroupsNameText.kt diff --git a/app/src/main/java/ru/sweetbread/unn/ui/composes/GroupsNameText.kt b/app/src/main/java/ru/sweetbread/unn/ui/composes/GroupsNameText.kt new file mode 100644 index 0000000..d0a8116 --- /dev/null +++ b/app/src/main/java/ru/sweetbread/unn/ui/composes/GroupsNameText.kt @@ -0,0 +1,50 @@ +// Copyright (c) 2026 Gleb Zaharov. License: GPLv3 (see LICENSE). + +package ru.sweetbread.unn.ui.composes + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.FlowRow +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Shape +import androidx.compose.ui.unit.dp + +@Composable +fun GroupsNameText( + text: String, + modifier: Modifier = Modifier, + highlightColor: Color = MaterialTheme.colorScheme.secondaryContainer, + highlightPadding: PaddingValues = PaddingValues(horizontal = 6.dp, vertical = 2.dp), + highlightShape: Shape = MaterialTheme.shapes.small, + horizontalArrangement: Arrangement.Horizontal = Arrangement.Start, +) { + val suffix = if (text.endsWith("-В-OUP")) "-В-OUP" else null + val mainPart = if (suffix != null) text.dropLast(6) else text + val blocks = mainPart.split('|') + + FlowRow( + modifier = modifier, + horizontalArrangement = horizontalArrangement, + verticalArrangement = Arrangement.spacedBy(4.dp) + ) { + blocks.forEach { block -> + Box( + modifier = Modifier + .padding(end = 2.dp) + .background(highlightColor, highlightShape) + .padding(highlightPadding) + ) { + Text(text = block) + } + } + + suffix?.let { Text(text = it) } + } +} \ No newline at end of file diff --git a/app/src/main/java/ru/sweetbread/unn/ui/composes/Schedule.kt b/app/src/main/java/ru/sweetbread/unn/ui/composes/Schedule.kt index 6f56219..2c448b8 100644 --- a/app/src/main/java/ru/sweetbread/unn/ui/composes/Schedule.kt +++ b/app/src/main/java/ru/sweetbread/unn/ui/composes/Schedule.kt @@ -191,7 +191,10 @@ fun ScheduleItem(modifier: Modifier = Modifier, unit: ScheduleUnit, expanded: Bo overflow = TextOverflow.Ellipsis ) AnimatedVisibility (expanded) { - Text(text = unit.stream) + GroupsNameText( + unit.stream, + highlightColor = MaterialTheme.colorScheme.inversePrimary + ) } }