diff --git a/app/src/main/java/be/ugent/sel/studeez/StudeezApp.kt b/app/src/main/java/be/ugent/sel/studeez/StudeezApp.kt index 04b4914..ce3e322 100644 --- a/app/src/main/java/be/ugent/sel/studeez/StudeezApp.kt +++ b/app/src/main/java/be/ugent/sel/studeez/StudeezApp.kt @@ -2,7 +2,13 @@ package be.ugent.sel.studeez import android.content.res.Resources 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.ReadOnlyComposable 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.LocalContext import androidx.compose.ui.unit.dp +import androidx.hilt.navigation.compose.hiltViewModel import androidx.navigation.NavGraphBuilder import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost @@ -18,11 +25,11 @@ import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController import be.ugent.sel.studeez.common.snackbar.SnackbarManager 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.session.SessionScreen import be.ugent.sel.studeez.screens.profile.EditProfileScreen 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.splash.SplashScreen import be.ugent.sel.studeez.screens.timer_overview.TimerOverviewScreen @@ -85,12 +92,12 @@ fun NavGraphBuilder.studeezGraph(appState: StudeezAppstate) { appState.popUp() } - val open: (String) -> Unit = { - route -> appState.navigate(route) + val open: (String) -> Unit = { route -> + appState.navigate(route) } - val openAndPopUp: (String, String) -> Unit = { - route, popUp -> appState.navigateAndPopUp(route, popUp) + val openAndPopUp: (String, String) -> Unit = { route, popUp -> + appState.navigateAndPopUp(route, popUp) } composable(StudeezDestinations.SPLASH_SCREEN) { @@ -106,7 +113,7 @@ fun NavGraphBuilder.studeezGraph(appState: StudeezAppstate) { } composable(StudeezDestinations.HOME_SCREEN) { - HomeScreen(open, openAndPopUp) + HomeRoute(open, openAndPopUp, viewModel = hiltViewModel()) } // TODO Tasks screen @@ -123,7 +130,7 @@ fun NavGraphBuilder.studeezGraph(appState: StudeezAppstate) { composable(StudeezDestinations.SESSION_SCREEN) { SessionScreen(open, openAndPopUp) } - + // TODO Timers screen // TODO Settings screen diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/drawer/DrawerComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/drawer/DrawerComposable.kt index 1ab739f..9bf0d20 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/drawer/DrawerComposable.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/drawer/DrawerComposable.kt @@ -31,6 +31,20 @@ data class DrawerActions( 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 fun Drawer( drawerActions: DrawerActions, diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/home/HomeScreen.kt b/app/src/main/java/be/ugent/sel/studeez/screens/home/HomeScreen.kt index 7abc9bc..e864032 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/home/HomeScreen.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/home/HomeScreen.kt @@ -15,8 +15,10 @@ import be.ugent.sel.studeez.common.ext.basicButton import be.ugent.sel.studeez.resources import be.ugent.sel.studeez.screens.drawer.DrawerActions 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.NavigationBarViewModel +import be.ugent.sel.studeez.screens.navbar.getNavigationBarActions @Composable fun HomeRoute( @@ -25,33 +27,19 @@ fun HomeRoute( viewModel: HomeViewModel, ) { HomeScreen( - open = open, - openAndPopUp = openAndPopUp, - onStartSessionClick = { viewModel.onStartSessionClick(open) } + onStartSessionClick = { viewModel.onStartSessionClick(open) }, + drawerActions = getDrawerActions(hiltViewModel(), open, openAndPopUp), + navigationBarActions = getNavigationBarActions(hiltViewModel(), open), ) } @Composable fun HomeScreen( - open: (String) -> Unit, - openAndPopUp: (String, String) -> 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( title = resources().getString(R.string.home), drawerActions = drawerActions, @@ -77,5 +65,9 @@ fun FriendsAction() { @Preview @Composable fun HomeScreenPreview() { - HomeScreen(open = {}, openAndPopUp = { _, _ -> run {} }, onStartSessionClick = {}) + HomeScreen( + onStartSessionClick = {}, + drawerActions = DrawerActions({}, {}, {}, {}, {}), + navigationBarActions = NavigationBarActions({}, {}, {}, {}) + ) } diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/navbar/NavigationBarComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/navbar/NavigationBarComposable.kt index d068973..2c62f29 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/navbar/NavigationBarComposable.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/navbar/NavigationBarComposable.kt @@ -23,6 +23,18 @@ data class NavigationBarActions( 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 fun NavigationBar( navigationBarActions: NavigationBarActions,