From de4354dd559d175e392a4cc4f6f24e3918081bea Mon Sep 17 00:00:00 2001 From: "patrick.brugiere" Date: Fri, 29 Mar 2024 16:24:54 +0100 Subject: [PATCH] bottomNavBar fini --- .../java/sae/android/sae_2a/data/Screen.kt | 23 +++++ .../sae/android/sae_2a/view/HomeScreen.kt | 83 ++++++++++--------- .../java/sae/android/sae_2a/view/Screen.kt | 16 ---- .../app/src/main/res/values/strings.xml | 2 +- 4 files changed, 68 insertions(+), 56 deletions(-) create mode 100644 Project/android/app/src/main/java/sae/android/sae_2a/data/Screen.kt delete mode 100644 Project/android/app/src/main/java/sae/android/sae_2a/view/Screen.kt diff --git a/Project/android/app/src/main/java/sae/android/sae_2a/data/Screen.kt b/Project/android/app/src/main/java/sae/android/sae_2a/data/Screen.kt new file mode 100644 index 0000000..34ec444 --- /dev/null +++ b/Project/android/app/src/main/java/sae/android/sae_2a/data/Screen.kt @@ -0,0 +1,23 @@ +package sae.android.sae_2a.data + +import androidx.annotation.StringRes +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.AccountBox +import androidx.compose.material.icons.filled.Home +import androidx.compose.material.icons.filled.Menu +import androidx.compose.ui.graphics.vector.ImageVector +import sae.android.sae_2a.R + +sealed class Screen(val route: String, @StringRes val resourceId: Int, val image: ImageVector) { + object Profile : Screen("profile", R.string.profilePicture, Icons.Filled.AccountBox ) + object Home : Screen("profileScreen", R.string.home, Icons.Filled.Home ) + object VocabularyList : Screen("VocabularyListScreen", R.string.voc_image_description, Icons.Filled.Menu) + object Game : Screen("GameScreen", R.string.game ,Icons.Filled.Home) + object Register : Screen("RegisterScreen", R.string.register,Icons.Filled.Home ) + object Login : Screen("LoginScreen", R.string.logIn , Icons.Filled.Home) + + + + + +} \ No newline at end of file diff --git a/Project/android/app/src/main/java/sae/android/sae_2a/view/HomeScreen.kt b/Project/android/app/src/main/java/sae/android/sae_2a/view/HomeScreen.kt index 3ac4b34..25cf34a 100644 --- a/Project/android/app/src/main/java/sae/android/sae_2a/view/HomeScreen.kt +++ b/Project/android/app/src/main/java/sae/android/sae_2a/view/HomeScreen.kt @@ -12,8 +12,6 @@ import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.layout.wrapContentWidth import androidx.compose.material.BottomNavigation import androidx.compose.material.BottomNavigationItem -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Favorite import androidx.compose.material3.Button import androidx.compose.material3.Icon import androidx.compose.material3.Scaffold @@ -37,11 +35,13 @@ import androidx.navigation.compose.composable import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.rememberNavController import sae.android.sae_2a.R +import sae.android.sae_2a.data.Screen import sae.android.sae_2a.game.VocabularyScreen val items = listOf( + Screen.Game, Screen.VocabularyList, - Screen.Game + Screen.Profile ) @@ -50,44 +50,49 @@ val items = listOf( fun MyApp() { val navController = rememberNavController() Scaffold( - bottomBar = { - BottomNavigation { - val navBackStackEntry by navController.currentBackStackEntryAsState() - val currentDestination = navBackStackEntry?.destination - items.forEach { screen -> - BottomNavigationItem( - label = { Text(stringResource(screen.resourceId)) }, - selected = currentDestination?.hierarchy?.any { it.route == screen.route } == true, - onClick = { - navController.navigate(screen.route) { - popUpTo(navController.graph.findStartDestination().id) { - saveState = true - } - launchSingleTop = true - restoreState = true - } - }, - icon = { - Icon( - Icons.Filled.Favorite, contentDescription = null - ) - }) - } - } - } - ){ innerPadding -> - NavHost(navController, startDestination = Screen.Home.route, Modifier.padding(innerPadding)) { - composable(Screen.Home.route) { HomeScreen( NavigateToRegister = { navController.navigate(Screen.Register.route)} ,NavigateToLogin = { navController.navigate(Screen.Game.route) }) } - composable(Screen.VocabularyList.route) { VocabularyScreen(onNavigateToList = { navController.popBackStack() }) } - composable(Screen.Register.route) { RegisterScreen(NavigateToApp = { navController.navigate(Screen.VocabularyList.route) }) } - composable(Screen.Game.route){ GameScreen() { - } } - - + bottomBar = { + val navBackStackEntry by navController.currentBackStackEntryAsState() + val currentDestination = navBackStackEntry?.destination + if (currentDestination?.route !in listOf(Screen.Home.route, Screen.Login.route , Screen.Register.route)) { + BottomNavigation { + items.forEach { screen -> + BottomNavigationItem( + modifier = Modifier + .background(Color.Gray), + label = { Text(stringResource(screen.resourceId)) }, + selected = currentDestination?.hierarchy?.any { it.route == screen.route } == true, + onClick = { + navController.navigate(screen.route) { + popUpTo(navController.graph.findStartDestination().id) { + saveState = true + } + launchSingleTop = true + restoreState = true + } + }, + icon = { + Icon( + screen.image , contentDescription = null + ) + }) + } + } + } + } + ) { innerPadding -> + NavHost(navController, startDestination = Screen.Home.route, Modifier.padding(innerPadding)) { + composable(Screen.Home.route) { HomeScreen(NavigateToRegister = { navController.navigate( + Screen.Register.route) }, NavigateToLogin = { navController.navigate(Screen.Login.route) }) } + composable(Screen.VocabularyList.route) { VocabularyScreen(onNavigateToList = { navController.popBackStack() }) } + composable(Screen.Register.route) { RegisterScreen(NavigateToApp = { navController.navigate( + Screen.VocabularyList.route) }) } + composable(Screen.Game.route){ GameScreen() {} } + composable(Screen.Login.route){LoginScreen(onLoginClicked = { _, _ -> })} + composable(Screen.Profile.route){profileScreen()} + } } - -} } + @Composable fun HomeScreen(NavigateToRegister: () -> Unit,NavigateToLogin: () -> Unit ){ diff --git a/Project/android/app/src/main/java/sae/android/sae_2a/view/Screen.kt b/Project/android/app/src/main/java/sae/android/sae_2a/view/Screen.kt deleted file mode 100644 index 81cc02b..0000000 --- a/Project/android/app/src/main/java/sae/android/sae_2a/view/Screen.kt +++ /dev/null @@ -1,16 +0,0 @@ -package sae.android.sae_2a.view - -import androidx.annotation.StringRes -import sae.android.sae_2a.R - -sealed class Screen(val route: String, @StringRes val resourceId: Int) { - object Profile : Screen("profile", R.string.profilePicture) - object Home : Screen("HomeScreen", R.string.home) - object VocabularyList : Screen("VocabularyListScreen", R.string.voc_image_description) - object Game : Screen("GameScreen", R.string.game) - object Register : Screen("RegisterScreen", R.string.register) - - - - -} \ No newline at end of file diff --git a/Project/android/app/src/main/res/values/strings.xml b/Project/android/app/src/main/res/values/strings.xml index b933d62..8b56d0e 100644 --- a/Project/android/app/src/main/res/values/strings.xml +++ b/Project/android/app/src/main/res/values/strings.xml @@ -6,7 +6,7 @@ Log Out Sign In Password - Picture representing vocabulary + Vocabulary Created by\u0020 Unknown Profile Picture