wrap homescreen in route
This commit is contained in:
		
							parent
							
								
									05c37b4168
								
							
						
					
					
						commit
						8fc4ac8cf1
					
				
					 4 changed files with 55 additions and 30 deletions
				
			
		|  | @ -2,7 +2,13 @@ package be.ugent.sel.studeez | ||||||
| 
 | 
 | ||||||
| import android.content.res.Resources | import android.content.res.Resources | ||||||
| import androidx.compose.foundation.layout.padding | import androidx.compose.foundation.layout.padding | ||||||
| import androidx.compose.material.* | import androidx.compose.material.MaterialTheme | ||||||
|  | import androidx.compose.material.Scaffold | ||||||
|  | import androidx.compose.material.ScaffoldState | ||||||
|  | import androidx.compose.material.Snackbar | ||||||
|  | import androidx.compose.material.SnackbarHost | ||||||
|  | import androidx.compose.material.Surface | ||||||
|  | import androidx.compose.material.rememberScaffoldState | ||||||
| import androidx.compose.runtime.Composable | import androidx.compose.runtime.Composable | ||||||
| import androidx.compose.runtime.ReadOnlyComposable | import androidx.compose.runtime.ReadOnlyComposable | ||||||
| import androidx.compose.runtime.remember | import androidx.compose.runtime.remember | ||||||
|  | @ -11,6 +17,7 @@ import androidx.compose.ui.Modifier | ||||||
| import androidx.compose.ui.platform.LocalConfiguration | import androidx.compose.ui.platform.LocalConfiguration | ||||||
| import androidx.compose.ui.platform.LocalContext | import androidx.compose.ui.platform.LocalContext | ||||||
| import androidx.compose.ui.unit.dp | import androidx.compose.ui.unit.dp | ||||||
|  | import androidx.hilt.navigation.compose.hiltViewModel | ||||||
| import androidx.navigation.NavGraphBuilder | import androidx.navigation.NavGraphBuilder | ||||||
| import androidx.navigation.NavHostController | import androidx.navigation.NavHostController | ||||||
| import androidx.navigation.compose.NavHost | import androidx.navigation.compose.NavHost | ||||||
|  | @ -18,11 +25,11 @@ import androidx.navigation.compose.composable | ||||||
| import androidx.navigation.compose.rememberNavController | import androidx.navigation.compose.rememberNavController | ||||||
| import be.ugent.sel.studeez.common.snackbar.SnackbarManager | import be.ugent.sel.studeez.common.snackbar.SnackbarManager | ||||||
| import be.ugent.sel.studeez.navigation.StudeezDestinations | import be.ugent.sel.studeez.navigation.StudeezDestinations | ||||||
| import be.ugent.sel.studeez.screens.home.HomeScreen | import be.ugent.sel.studeez.screens.home.HomeRoute | ||||||
| import be.ugent.sel.studeez.screens.log_in.LoginScreen | import be.ugent.sel.studeez.screens.log_in.LoginScreen | ||||||
| import be.ugent.sel.studeez.screens.session.SessionScreen |  | ||||||
| import be.ugent.sel.studeez.screens.profile.EditProfileScreen | import be.ugent.sel.studeez.screens.profile.EditProfileScreen | ||||||
| import be.ugent.sel.studeez.screens.profile.ProfileScreen | import be.ugent.sel.studeez.screens.profile.ProfileScreen | ||||||
|  | import be.ugent.sel.studeez.screens.session.SessionScreen | ||||||
| import be.ugent.sel.studeez.screens.sign_up.SignUpScreen | import be.ugent.sel.studeez.screens.sign_up.SignUpScreen | ||||||
| import be.ugent.sel.studeez.screens.splash.SplashScreen | import be.ugent.sel.studeez.screens.splash.SplashScreen | ||||||
| import be.ugent.sel.studeez.screens.timer_overview.TimerOverviewScreen | import be.ugent.sel.studeez.screens.timer_overview.TimerOverviewScreen | ||||||
|  | @ -85,12 +92,12 @@ fun NavGraphBuilder.studeezGraph(appState: StudeezAppstate) { | ||||||
|         appState.popUp() |         appState.popUp() | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     val open: (String) -> Unit = { |     val open: (String) -> Unit = { route -> | ||||||
|             route -> appState.navigate(route) |         appState.navigate(route) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     val openAndPopUp: (String, String) -> Unit = { |     val openAndPopUp: (String, String) -> Unit = { route, popUp -> | ||||||
|             route, popUp -> appState.navigateAndPopUp(route, popUp) |         appState.navigateAndPopUp(route, popUp) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     composable(StudeezDestinations.SPLASH_SCREEN) { |     composable(StudeezDestinations.SPLASH_SCREEN) { | ||||||
|  | @ -106,7 +113,7 @@ fun NavGraphBuilder.studeezGraph(appState: StudeezAppstate) { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     composable(StudeezDestinations.HOME_SCREEN) { |     composable(StudeezDestinations.HOME_SCREEN) { | ||||||
|         HomeScreen(open, openAndPopUp) |         HomeRoute(open, openAndPopUp, viewModel = hiltViewModel()) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // TODO Tasks screen |     // TODO Tasks screen | ||||||
|  |  | ||||||
|  | @ -31,6 +31,20 @@ data class DrawerActions( | ||||||
|     val onAboutClick: () -> Unit, |     val onAboutClick: () -> Unit, | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | fun getDrawerActions( | ||||||
|  |     drawerViewModel: DrawerViewModel, | ||||||
|  |     open: (String) -> Unit, | ||||||
|  |     openAndPopUp: (String, String) -> Unit, | ||||||
|  | ): DrawerActions { | ||||||
|  |     return DrawerActions( | ||||||
|  |         onHomeButtonClick = { drawerViewModel.onHomeButtonClick(open) }, | ||||||
|  |         onTimersClick = { drawerViewModel.onTimersClick(open) }, | ||||||
|  |         onSettingsClick = { drawerViewModel.onSettingsClick(open) }, | ||||||
|  |         onLogoutClick = { drawerViewModel.onLogoutClick(openAndPopUp) }, | ||||||
|  |         onAboutClick = { drawerViewModel.onAboutClick(open) }, | ||||||
|  |     ) | ||||||
|  | } | ||||||
|  | 
 | ||||||
| @Composable | @Composable | ||||||
| fun Drawer( | fun Drawer( | ||||||
|     drawerActions: DrawerActions, |     drawerActions: DrawerActions, | ||||||
|  |  | ||||||
|  | @ -15,8 +15,10 @@ import be.ugent.sel.studeez.common.ext.basicButton | ||||||
| import be.ugent.sel.studeez.resources | import be.ugent.sel.studeez.resources | ||||||
| import be.ugent.sel.studeez.screens.drawer.DrawerActions | import be.ugent.sel.studeez.screens.drawer.DrawerActions | ||||||
| import be.ugent.sel.studeez.screens.drawer.DrawerViewModel | import be.ugent.sel.studeez.screens.drawer.DrawerViewModel | ||||||
|  | import be.ugent.sel.studeez.screens.drawer.getDrawerActions | ||||||
| import be.ugent.sel.studeez.screens.navbar.NavigationBarActions | import be.ugent.sel.studeez.screens.navbar.NavigationBarActions | ||||||
| import be.ugent.sel.studeez.screens.navbar.NavigationBarViewModel | import be.ugent.sel.studeez.screens.navbar.NavigationBarViewModel | ||||||
|  | import be.ugent.sel.studeez.screens.navbar.getNavigationBarActions | ||||||
| 
 | 
 | ||||||
| @Composable | @Composable | ||||||
| fun HomeRoute( | fun HomeRoute( | ||||||
|  | @ -25,33 +27,19 @@ fun HomeRoute( | ||||||
|     viewModel: HomeViewModel, |     viewModel: HomeViewModel, | ||||||
| ) { | ) { | ||||||
|     HomeScreen( |     HomeScreen( | ||||||
|         open = open, |         onStartSessionClick = { viewModel.onStartSessionClick(open) }, | ||||||
|         openAndPopUp = openAndPopUp, |         drawerActions = getDrawerActions(hiltViewModel(), open, openAndPopUp), | ||||||
|         onStartSessionClick = { viewModel.onStartSessionClick(open) } |         navigationBarActions = getNavigationBarActions(hiltViewModel(), open), | ||||||
|     ) |     ) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @Composable | @Composable | ||||||
| fun HomeScreen( | fun HomeScreen( | ||||||
|     open: (String) -> Unit, |  | ||||||
|     openAndPopUp: (String, String) -> Unit, |  | ||||||
|     onStartSessionClick: () -> Unit, |     onStartSessionClick: () -> Unit, | ||||||
|  |     drawerActions: DrawerActions, | ||||||
|  |     navigationBarActions: NavigationBarActions, | ||||||
| ) { | ) { | ||||||
|     val drawerViewModel: DrawerViewModel = hiltViewModel() | 
 | ||||||
|     val drawerActions = DrawerActions( |  | ||||||
|         onHomeButtonClick = { drawerViewModel.onHomeButtonClick(open) }, |  | ||||||
|         onTimersClick = { drawerViewModel.onTimersClick(open) }, |  | ||||||
|         onSettingsClick = { drawerViewModel.onSettingsClick(open) }, |  | ||||||
|         onLogoutClick = { drawerViewModel.onLogoutClick(openAndPopUp) }, |  | ||||||
|         onAboutClick = { drawerViewModel.onAboutClick(open) }, |  | ||||||
|     ) |  | ||||||
|     val navigationBarViewModel: NavigationBarViewModel = hiltViewModel() |  | ||||||
|     val navigationBarActions = NavigationBarActions( |  | ||||||
|         onHomeClick = { navigationBarViewModel.onHomeClick(open) }, |  | ||||||
|         onTasksClick = { navigationBarViewModel.onTasksClick(open) }, |  | ||||||
|         onSessionsClick = { navigationBarViewModel.onSessionsClick(open) }, |  | ||||||
|         onProfileClick = { navigationBarViewModel.onProfileClick(open) }, |  | ||||||
|     ) |  | ||||||
|     PrimaryScreenTemplate( |     PrimaryScreenTemplate( | ||||||
|         title = resources().getString(R.string.home), |         title = resources().getString(R.string.home), | ||||||
|         drawerActions = drawerActions, |         drawerActions = drawerActions, | ||||||
|  | @ -77,5 +65,9 @@ fun FriendsAction() { | ||||||
| @Preview | @Preview | ||||||
| @Composable | @Composable | ||||||
| fun HomeScreenPreview() { | fun HomeScreenPreview() { | ||||||
|     HomeScreen(open = {}, openAndPopUp = { _, _ -> run {} }, onStartSessionClick = {}) |     HomeScreen( | ||||||
|  |         onStartSessionClick = {}, | ||||||
|  |         drawerActions = DrawerActions({}, {}, {}, {}, {}), | ||||||
|  |         navigationBarActions = NavigationBarActions({}, {}, {}, {}) | ||||||
|  |     ) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -23,6 +23,18 @@ data class NavigationBarActions( | ||||||
|     val onProfileClick: () -> Unit, |     val onProfileClick: () -> Unit, | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | fun getNavigationBarActions( | ||||||
|  |     navigationBarViewModel: NavigationBarViewModel, | ||||||
|  |     open: (String) -> Unit, | ||||||
|  | ): NavigationBarActions { | ||||||
|  |     return NavigationBarActions( | ||||||
|  |         onHomeClick = { navigationBarViewModel.onHomeClick(open) }, | ||||||
|  |         onTasksClick = { navigationBarViewModel.onTasksClick(open) }, | ||||||
|  |         onSessionsClick = { navigationBarViewModel.onSessionsClick(open) }, | ||||||
|  |         onProfileClick = { navigationBarViewModel.onProfileClick(open) }, | ||||||
|  |     ) | ||||||
|  | } | ||||||
|  | 
 | ||||||
| @Composable | @Composable | ||||||
| fun NavigationBar( | fun NavigationBar( | ||||||
|     navigationBarActions: NavigationBarActions, |     navigationBarActions: NavigationBarActions, | ||||||
|  |  | ||||||
		Reference in a new issue
	
	 brreynie
						brreynie