2026-09-02 23:47:00 +03:00
|
|
|
package agzam.vyatsu.ui.home
|
|
|
|
|
|
|
|
|
|
import agzam.vyatsu.ui.info.BuildingsScreen
|
|
|
|
|
import agzam.vyatsu.ui.info.CallsScreen
|
|
|
|
|
import agzam.vyatsu.ui.schedule.ScheduleScreen
|
|
|
|
|
import agzam.vyatsu.ui.schedule.ScheduleViewModel
|
2026-09-06 12:38:00 +03:00
|
|
|
import agzam.vyatsu.ui.settings.SettingsScreen
|
|
|
|
|
import agzam.vyatsu.ui.settings.UpdateViewModel
|
2026-09-02 23:47:00 +03:00
|
|
|
import androidx.compose.foundation.layout.fillMaxSize
|
|
|
|
|
import androidx.compose.foundation.layout.padding
|
|
|
|
|
import androidx.compose.material.icons.Icons
|
|
|
|
|
import androidx.compose.material.icons.filled.DateRange
|
|
|
|
|
import androidx.compose.material.icons.filled.Home
|
|
|
|
|
import androidx.compose.material.icons.filled.Info
|
2026-09-06 12:38:00 +03:00
|
|
|
import androidx.compose.material.icons.filled.Settings
|
2026-09-02 23:47:00 +03:00
|
|
|
import androidx.compose.material3.Icon
|
|
|
|
|
import androidx.compose.material3.NavigationBar
|
|
|
|
|
import androidx.compose.material3.NavigationBarItem
|
|
|
|
|
import androidx.compose.material3.Scaffold
|
|
|
|
|
import androidx.compose.material3.Text
|
|
|
|
|
import androidx.compose.runtime.Composable
|
|
|
|
|
import androidx.compose.runtime.getValue
|
|
|
|
|
import androidx.compose.runtime.mutableStateOf
|
|
|
|
|
import androidx.compose.runtime.saveable.rememberSaveable
|
|
|
|
|
import androidx.compose.runtime.setValue
|
|
|
|
|
import androidx.compose.ui.Modifier
|
|
|
|
|
|
|
|
|
|
private enum class HomeTab(val label: String) {
|
|
|
|
|
SCHEDULE("Расписание"),
|
|
|
|
|
CALLS("Звонки"),
|
2026-09-06 12:38:00 +03:00
|
|
|
BUILDINGS("Корпуса"),
|
|
|
|
|
SETTINGS("Настройки")
|
2026-09-02 23:47:00 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Composable
|
|
|
|
|
fun HomeScreen(
|
|
|
|
|
scheduleViewModel: ScheduleViewModel,
|
2026-09-06 12:38:00 +03:00
|
|
|
updateViewModel: UpdateViewModel,
|
2026-09-02 23:47:00 +03:00
|
|
|
onSwitchGroup: () -> Unit
|
|
|
|
|
) {
|
|
|
|
|
var tab by rememberSaveable { mutableStateOf(HomeTab.SCHEDULE) }
|
|
|
|
|
|
|
|
|
|
Scaffold(
|
|
|
|
|
bottomBar = {
|
|
|
|
|
NavigationBar {
|
|
|
|
|
HomeTab.entries.forEach { t ->
|
|
|
|
|
NavigationBarItem(
|
|
|
|
|
selected = tab == t,
|
|
|
|
|
onClick = { tab = t },
|
|
|
|
|
icon = {
|
|
|
|
|
Icon(
|
|
|
|
|
imageVector = when (t) {
|
|
|
|
|
HomeTab.SCHEDULE -> Icons.Default.DateRange
|
|
|
|
|
HomeTab.CALLS -> Icons.Default.Info
|
|
|
|
|
HomeTab.BUILDINGS -> Icons.Default.Home
|
2026-09-06 12:38:00 +03:00
|
|
|
HomeTab.SETTINGS -> Icons.Default.Settings
|
2026-09-02 23:47:00 +03:00
|
|
|
},
|
|
|
|
|
contentDescription = t.label
|
|
|
|
|
)
|
|
|
|
|
},
|
|
|
|
|
label = { Text(t.label) }
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
) { innerPadding ->
|
|
|
|
|
androidx.compose.foundation.layout.Box(
|
|
|
|
|
Modifier
|
|
|
|
|
.fillMaxSize()
|
|
|
|
|
.padding(innerPadding)
|
|
|
|
|
) {
|
|
|
|
|
when (tab) {
|
|
|
|
|
HomeTab.SCHEDULE -> ScheduleScreen(viewModel = scheduleViewModel, onSwitchGroup = onSwitchGroup)
|
|
|
|
|
HomeTab.CALLS -> CallsScreen()
|
|
|
|
|
HomeTab.BUILDINGS -> BuildingsScreen()
|
2026-09-06 12:38:00 +03:00
|
|
|
HomeTab.SETTINGS -> SettingsScreen(viewModel = updateViewModel)
|
2026-09-02 23:47:00 +03:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|