#42 highlight selected screen

This commit is contained in:
Tibo De Peuter 2023-04-25 19:27:14 +02:00
parent 7b3a82cc30
commit e73cc798f0
6 changed files with 39 additions and 16 deletions

View file

@ -77,7 +77,7 @@ fun PrimaryScreenPreview() {
PrimaryScreenTemplate(
"Preview screen",
DrawerActions({}, {}, {}, {}, {}),
NavigationBarActions({}, {}, {}, {}),
NavigationBarActions({ false }, {}, {}, {}, {}),
{
IconButton(onClick = { /*TODO*/ }) {
Icon(

View file

@ -17,6 +17,7 @@ import be.ugent.sel.studeez.ui.theme.StudeezTheme
import be.ugent.sel.studeez.R.string as AppText
data class NavigationBarActions(
val selectedTab: (Int) -> Boolean,
val onHomeClick: () -> Unit,
val onTasksClick: () -> Unit,
val onSessionsClick: () -> Unit,
@ -28,10 +29,19 @@ fun getNavigationBarActions(
open: (String) -> Unit,
): NavigationBarActions {
return NavigationBarActions(
onHomeClick = { navigationBarViewModel.onHomeClick(open) },
onTasksClick = { navigationBarViewModel.onTasksClick(open) },
onSessionsClick = { navigationBarViewModel.onSessionsClick(open) },
onProfileClick = { navigationBarViewModel.onProfileClick(open) },
selectedTab = { navigationBarViewModel.isSelected(it) },
onHomeClick = {
navigationBarViewModel.onHomeClick(open)
},
onTasksClick = {
navigationBarViewModel.onTasksClick(open)
},
onSessionsClick = {
navigationBarViewModel.onSessionsClick(open)
},
onProfileClick = {
navigationBarViewModel.onProfileClick(open)
},
)
}
@ -39,16 +49,14 @@ fun getNavigationBarActions(
fun NavigationBar(
navigationBarActions: NavigationBarActions,
) {
// TODO Pass functions and new screens.
// TODO Pass which screen is selected.
// TODO Disabled -> HIGH/MEDIUM_EMPHASIS if the page is implemented
BottomNavigation(
elevation = 10.dp
) {
BottomNavigationItem(
icon = { Icon(imageVector = Icons.Default.List, resources().getString(AppText.home)) },
label = { Text(text = resources().getString(AppText.home)) },
selected = false, // TODO
selected = navigationBarActions.selectedTab(0),
onClick = navigationBarActions.onHomeClick
)
@ -59,7 +67,7 @@ fun NavigationBar(
)
},
label = { Text(text = resources().getString(AppText.tasks)) },
selected = false, // TODO
selected = navigationBarActions.selectedTab(1),
onClick = navigationBarActions.onTasksClick
)
@ -73,7 +81,7 @@ fun NavigationBar(
)
},
label = { Text(text = resources().getString(AppText.sessions)) },
selected = false, // TODO
selected = navigationBarActions.selectedTab(2),
onClick = navigationBarActions.onSessionsClick
)
@ -84,7 +92,7 @@ fun NavigationBar(
)
},
label = { Text(text = resources().getString(AppText.profile)) },
selected = false, // TODO
selected = navigationBarActions.selectedTab(3),
onClick = navigationBarActions.onProfileClick
)
@ -95,6 +103,6 @@ fun NavigationBar(
@Composable
fun NavigationBarPreview() {
StudeezTheme {
NavigationBar(NavigationBarActions({}, {}, {}, {}))
NavigationBar(NavigationBarActions({ false }, {}, {}, {}, {}))
}
}

View file

@ -7,26 +7,41 @@ import be.ugent.sel.studeez.navigation.StudeezDestinations.PROFILE_SCREEN
import be.ugent.sel.studeez.screens.StudeezViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
import javax.inject.Singleton
@HiltViewModel
class NavigationBarViewModel @Inject constructor(
private val accountDAO: AccountDAO,
var selectedTab: SelectedTabState,
logService: LogService
) : StudeezViewModel(logService) {
fun isSelected(index: Int): Boolean {
return index == selectedTab.selectedTab
}
fun onHomeClick(open: (String) -> Unit) {
selectedTab.selectedTab = 0
open(HOME_SCREEN)
}
fun onTasksClick(open: (String) -> Unit) {
// TODO
selectedTab.selectedTab = 1
}
fun onSessionsClick(open: (String) -> Unit) {
// TODO
selectedTab.selectedTab = 2
}
fun onProfileClick(open: (String) -> Unit) {
selectedTab.selectedTab = 3
open(PROFILE_SCREEN)
}
}
@Singleton
class SelectedTabState @Inject constructor() {
var selectedTab: Int = 0
}

View file

@ -69,6 +69,6 @@ fun HomeScreenPreview() {
HomeScreen(
onStartSessionClick = {},
drawerActions = DrawerActions({}, {}, {}, {}, {}),
navigationBarActions = NavigationBarActions({}, {}, {}, {})
navigationBarActions = NavigationBarActions({ false }, {}, {}, {}, {})
)
}

View file

@ -90,6 +90,6 @@ fun ProfileScreenPreview() {
ProfileScreen(
profileActions = ProfileActions({ null }, {}),
drawerActions = DrawerActions({}, {}, {}, {}, {}),
navigationBarActions = NavigationBarActions({}, {}, {}, {})
navigationBarActions = NavigationBarActions({ false }, {}, {}, {}, {})
)
}

View file

@ -86,6 +86,6 @@ fun TimerSelectionPreview() {
TimerSelectionScreen(
timerSelectionActions = TimerSelectionActions({ flowOf() }, {}),
drawerActions = DrawerActions({}, {}, {}, {}, {}),
navigationBarActions = NavigationBarActions({}, {}, {}, {}),
navigationBarActions = NavigationBarActions({ false }, {}, {}, {}, {}),
)
}