forked from agzam/vyatsu-schedule
74 lines
2.6 KiB
Kotlin
74 lines
2.6 KiB
Kotlin
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
|
||
|
|
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
|
||
|
|
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("Звонки"),
|
||
|
|
BUILDINGS("Корпуса")
|
||
|
|
}
|
||
|
|
|
||
|
|
@Composable
|
||
|
|
fun HomeScreen(
|
||
|
|
scheduleViewModel: ScheduleViewModel,
|
||
|
|
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
|
||
|
|
},
|
||
|
|
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()
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|