From a3ecae302ecbf4776ab2208e95f3d35131993f1f Mon Sep 17 00:00:00 2001 From: Sweetbread Date: Tue, 22 Sep 2026 17:02:24 +0300 Subject: [PATCH] wip: group highlight --- .../unn/feature/schedule/Schedule.kt | 11 ++++++++++- .../schedule/components/GroupsNameText.kt | 9 +++++++-- .../main/java/ru/sweetbread/unn/model/User.kt | 18 +++++++++++------- 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/ru/sweetbread/unn/feature/schedule/Schedule.kt b/app/src/main/java/ru/sweetbread/unn/feature/schedule/Schedule.kt index f8fe112..8caa897 100644 --- a/app/src/main/java/ru/sweetbread/unn/feature/schedule/Schedule.kt +++ b/app/src/main/java/ru/sweetbread/unn/feature/schedule/Schedule.kt @@ -44,6 +44,7 @@ import androidx.compose.ui.zIndex import androidx.lifecycle.viewmodel.compose.viewModel import kotlinx.coroutines.delay import ru.sweetbread.unn.R +import ru.sweetbread.unn.app.UNNApp import ru.sweetbread.unn.feature.schedule.components.BoundedWeekPicker import ru.sweetbread.unn.feature.schedule.components.GroupsNameText import ru.sweetbread.unn.model.Auditorium @@ -53,7 +54,10 @@ import ru.sweetbread.unn.model.KindOfWork import ru.sweetbread.unn.model.Lecturer import ru.sweetbread.unn.model.LecturerRank import ru.sweetbread.unn.model.ScheduleUnit +import ru.sweetbread.unn.model.Student +import ru.sweetbread.unn.model.Type import ru.sweetbread.unn.ui.theme.UNNTheme +import splitties.init.appCtx import splitties.resources.appStr import java.time.LocalDate import java.time.LocalDateTime @@ -113,6 +117,9 @@ fun ScheduleDay(modifier: Modifier = Modifier, viewModel: ScheduleViewModel) { @Composable fun ScheduleItem(modifier: Modifier = Modifier, unit: ScheduleUnit, expanded: Boolean = false) { + val me = (appCtx as UNNApp).container.sessionManager.user.collectAsState().value + val currentGroup = if (me?.type == Type.Student) (me as Student).group else null + fun getRatio(): Float { val begin = LocalDateTime.of(unit.date, unit.begin).atZone(ZoneId.of("Europe/Moscow")).toEpochSecond() val end = LocalDateTime.of(unit.date, unit.end).atZone(ZoneId.of("Europe/Moscow")).toEpochSecond() @@ -202,7 +209,9 @@ fun ScheduleItem(modifier: Modifier = Modifier, unit: ScheduleUnit, expanded: Bo AnimatedVisibility (expanded) { GroupsNameText( unit.stream, - highlightColor = MaterialTheme.colorScheme.inversePrimary + highlightColor = MaterialTheme.colorScheme.inversePrimary, + currentGroupName = currentGroup, + currentGroupColor = MaterialTheme.colorScheme.inverseSurface ) } } diff --git a/app/src/main/java/ru/sweetbread/unn/feature/schedule/components/GroupsNameText.kt b/app/src/main/java/ru/sweetbread/unn/feature/schedule/components/GroupsNameText.kt index e7fe6a9..77465a3 100644 --- a/app/src/main/java/ru/sweetbread/unn/feature/schedule/components/GroupsNameText.kt +++ b/app/src/main/java/ru/sweetbread/unn/feature/schedule/components/GroupsNameText.kt @@ -20,9 +20,11 @@ import androidx.compose.ui.unit.dp fun GroupsNameText( text: String, modifier: Modifier = Modifier, - highlightColor: Color = MaterialTheme.colorScheme.secondaryContainer, + highlightColor: Color = MaterialTheme.colorScheme.tertiaryContainer, highlightPadding: PaddingValues = PaddingValues(horizontal = 6.dp, vertical = 2.dp), highlightShape: Shape = MaterialTheme.shapes.small, + currentGroupName: String? = null, + currentGroupColor: Color = MaterialTheme.colorScheme.secondaryContainer, horizontalArrangement: Arrangement.Horizontal = Arrangement.Start, ) { val suffix = if (text.endsWith("-В-OUP")) "-В-OUP" else null @@ -47,7 +49,10 @@ fun GroupsNameText( Box( modifier = Modifier .padding(end = 2.dp) - .background(highlightColor, highlightShape) + .background( + if (currentGroupName == block) currentGroupColor + else highlightColor, highlightShape + ) .padding(highlightPadding) ) { Text(text = block) diff --git a/app/src/main/java/ru/sweetbread/unn/model/User.kt b/app/src/main/java/ru/sweetbread/unn/model/User.kt index 21c2d2e..0440349 100644 --- a/app/src/main/java/ru/sweetbread/unn/model/User.kt +++ b/app/src/main/java/ru/sweetbread/unn/model/User.kt @@ -46,17 +46,17 @@ open class User( companion object { fun fromProfile(json: JSONObject): User { - val user = json.getJSONObject("user") - return User( - user.getInt("id"), + val userField = json.getJSONObject("user") + val user = User( + userField.getInt("id"), when (json.getString("type")) { "student" -> Type.Student else -> Type.Employee }, - user.getString("email"), - user.getString("fullname"), - user.getString("fullname_en"), - user.getJSONObject("photo").let { + userField.getString("email"), + userField.getString("fullname"), + userField.getString("fullname_en"), + userField.getJSONObject("photo").let { AvatarSet( it.getString("orig"), it.getString("thumbnail"), @@ -64,6 +64,10 @@ open class User( ) } ) + + if (user.type == Type.Student) + + return user } fun getPlaceholder() = User(