From 699bcd81f585861907586e075428380f47e18eb2 Mon Sep 17 00:00:00 2001 From: Agzamus Date: Fri, 4 Sep 2026 02:05:52 +0300 Subject: [PATCH] ui: header group display --- app/src/main/java/agzam/vyatsu/AppRoot.kt | 2 +- .../main/java/agzam/vyatsu/ui/schedule/ScheduleScreen.kt | 2 +- .../java/agzam/vyatsu/ui/schedule/ScheduleViewModel.kt | 9 +++++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/agzam/vyatsu/AppRoot.kt b/app/src/main/java/agzam/vyatsu/AppRoot.kt index 337221b..90b21e2 100644 --- a/app/src/main/java/agzam/vyatsu/AppRoot.kt +++ b/app/src/main/java/agzam/vyatsu/AppRoot.kt @@ -41,5 +41,5 @@ private class SimpleFactory(private val create: () -> T) : ViewMo override fun create(modelClass: Class): T = create() as T } -private fun scheduleFactory(c: AppContainer): ViewModelProvider.Factory = SimpleFactory { ScheduleViewModel(c.scheduleRepository, c.preferencesRepository) } +private fun scheduleFactory(c: AppContainer): ViewModelProvider.Factory = SimpleFactory { ScheduleViewModel(c.scheduleRepository, c.preferencesRepository, c.groupRepository) } private fun groupPickerFactory(c: AppContainer): ViewModelProvider.Factory = SimpleFactory { GroupPickerViewModel(c.groupRepository) } diff --git a/app/src/main/java/agzam/vyatsu/ui/schedule/ScheduleScreen.kt b/app/src/main/java/agzam/vyatsu/ui/schedule/ScheduleScreen.kt index 17ec1ec..649b6aa 100644 --- a/app/src/main/java/agzam/vyatsu/ui/schedule/ScheduleScreen.kt +++ b/app/src/main/java/agzam/vyatsu/ui/schedule/ScheduleScreen.kt @@ -57,7 +57,7 @@ fun ScheduleScreen(viewModel: ScheduleViewModel, onSwitchGroup: () -> Unit) { Column(Modifier.fillMaxSize()) { TopAppBar( - title = { Text("Расписание") }, + title = { Text(state.groupName ?: "Расписание", style = MaterialTheme.typography.titleMedium) }, actions = { TextButton(onClick = { onSwitchGroup() }) { Text("Сменить группу") diff --git a/app/src/main/java/agzam/vyatsu/ui/schedule/ScheduleViewModel.kt b/app/src/main/java/agzam/vyatsu/ui/schedule/ScheduleViewModel.kt index c976b92..09420ed 100644 --- a/app/src/main/java/agzam/vyatsu/ui/schedule/ScheduleViewModel.kt +++ b/app/src/main/java/agzam/vyatsu/ui/schedule/ScheduleViewModel.kt @@ -2,6 +2,7 @@ package agzam.vyatsu.ui.schedule import agzam.vyatsu.domain.ScheduleDates import agzam.vyatsu.domain.model.Schedule +import agzam.vyatsu.domain.repository.GroupRepository import agzam.vyatsu.domain.repository.PreferencesRepository import agzam.vyatsu.domain.repository.ScheduleRepository import androidx.lifecycle.ViewModel @@ -14,7 +15,8 @@ import java.time.LocalDate class ScheduleViewModel( private val scheduleRepository: ScheduleRepository, - private val preferencesRepository: PreferencesRepository + private val preferencesRepository: PreferencesRepository, + private val groupRepository: GroupRepository ) : ViewModel() { private val _uiState = MutableStateFlow(ScheduleUiState()) @@ -28,7 +30,7 @@ class ScheduleViewModel( if (groupId != null) { selectGroup(groupId) } else { - _uiState.value = _uiState.value.copy(noGroup = true) + _uiState.value = _uiState.value.copy(noGroup = true, groupName = null) } } } @@ -37,6 +39,7 @@ class ScheduleViewModel( currentGroupId = groupId viewModelScope.launch { preferencesRepository.setSelectedGroup(groupId) + val groupName = groupRepository.getGroups().firstOrNull { it.id == groupId }?.name val savedWeekStart = runCatching { preferencesRepository.selectedWeekStart()?.let(LocalDate::parse) @@ -46,6 +49,7 @@ class ScheduleViewModel( }.getOrNull() _uiState.value = _uiState.value.copy( noGroup = false, + groupName = groupName, weekStart = savedWeekStart, dayDate = savedDayDate ) @@ -174,6 +178,7 @@ data class ScheduleUiState( val isRefreshing: Boolean = false, val isSyncing: Boolean = false, val schedule: Schedule? = null, + val groupName: String? = null, val weekStart: LocalDate? = null, val dayDate: LocalDate? = null, val todayDate: LocalDate? = null