diff --git a/Project/android/app/build.gradle.kts b/Project/android/app/build.gradle.kts index fac4187..1472c13 100644 --- a/Project/android/app/build.gradle.kts +++ b/Project/android/app/build.gradle.kts @@ -40,7 +40,7 @@ android { compose = true } composeOptions { - kotlinCompilerExtensionVersion = "1.5.1" + kotlinCompilerExtensionVersion = "1.5.11" } packaging { resources { @@ -50,7 +50,7 @@ android { } dependencies { - + implementation("androidx.compose.material:material:1.6.4") implementation("androidx.core:core-ktx:1.12.0") implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.1") implementation("androidx.activity:activity-compose:1.7.0") diff --git a/Project/android/app/src/main/java/sae/android/sae_2a/VM/GameViewModel.kt b/Project/android/app/src/main/java/sae/android/sae_2a/VM/GameViewModel.kt new file mode 100644 index 0000000..6daf3a0 --- /dev/null +++ b/Project/android/app/src/main/java/sae/android/sae_2a/VM/GameViewModel.kt @@ -0,0 +1,21 @@ +package sae.android.sae_2a.VM + +import android.text.Spannable.Factory +import androidx.lifecycle.ViewModel +import androidx.lifecycle.ViewModelProvider +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.SupervisorJob +import kotlinx.coroutines.cancel +import kotlinx.coroutines.flow.MutableStateFlow +import sae.android.sae_2a.data.Game + +class GameViewModel : ViewModel() { + + + + + + + +} \ No newline at end of file diff --git a/Project/android/app/src/main/java/sae/android/sae_2a/data/Game.kt b/Project/android/app/src/main/java/sae/android/sae_2a/data/Game.kt new file mode 100644 index 0000000..8a5d978 --- /dev/null +++ b/Project/android/app/src/main/java/sae/android/sae_2a/data/Game.kt @@ -0,0 +1,5 @@ +package sae.android.sae_2a.data + +data class Game( + val name: String +) \ No newline at end of file diff --git a/Project/android/app/src/main/java/sae/android/sae_2a/view/GameScreen.kt b/Project/android/app/src/main/java/sae/android/sae_2a/view/GameScreen.kt new file mode 100644 index 0000000..8bbf30f --- /dev/null +++ b/Project/android/app/src/main/java/sae/android/sae_2a/view/GameScreen.kt @@ -0,0 +1,76 @@ +package sae.android.sae_2a.view + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.paddingFrom +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.wrapContentHeight +import androidx.compose.foundation.layout.wrapContentWidth +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.material3.Button +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.AlignmentLine +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import sae.android.sae_2a.data.Game +import sae.android.sae_2a.data.Vocabulary +import sae.android.sae_2a.game.DisplayLists + +@Composable +fun GameScreen(NavigateToApp: () -> Unit ){ + val game = listOf( + Game("Quizz"), + Game("Memory"), + Game("Asteroid"), + Game("Flashcard"), + ) + + + Surface(modifier = Modifier + .wrapContentWidth(align = Alignment.CenterHorizontally) + .wrapContentHeight(align = Alignment.CenterVertically) + .fillMaxSize(),) { + Column( modifier = Modifier + .background(color = Color.LightGray) + .wrapContentWidth(align = Alignment.CenterHorizontally)) { + + Text(text = "Games", fontSize = 32.sp ,modifier = Modifier + .align(Alignment.CenterHorizontally) + .padding(vertical = 100.dp) + ) + + ListGame(games =game ) + + } + } + +} + +@Composable +fun ListGame(games : List){ + LazyColumn(){ + items( games.size ){ + DisplayGame(games[it]) + } + } +} + +@Composable +fun DisplayGame(game :Game){ + Button(onClick = { },modifier = Modifier + .padding(15.dp) + .width(150.dp) + .height(80.dp)) { + Text(text = game.name, fontSize = 20.sp) + } +} \ 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 6602b25..2b45163 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 @@ -10,7 +10,10 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width 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.material3.Button +import androidx.compose.material3.Scaffold import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -27,30 +30,46 @@ import androidx.navigation.compose.rememberNavController import sae.android.sae_2a.R import sae.android.sae_2a.game.VocabularyScreen - @Composable fun MyApp() { val navController = rememberNavController() +/* Scaffold( + bottomBar = { + BottomNavigation { + BottomNavigationItem(selected = , onClick = { /*TODO*/ }, icon = { /*TODO*/ }){ + + } + } + } + )*/ NavHost(navController, startDestination = "HomeScreen") { - composable("HomeScreen") { HomeScreen( NavigateToRegister = { navController.navigate("RegisterScreen")} ,NavigateToLogin = { navController.navigate("VocabularyScreen") }) } + composable("HomeScreen") { HomeScreen( NavigateToRegister = { navController.navigate("RegisterScreen")} ,NavigateToLogin = { navController.navigate("GameScreen") }) } composable("VocabularyScreen") { VocabularyScreen(onNavigateToList = { navController.popBackStack() }) } composable("RegisterScreen") { RegisterScreen(NavigateToApp = { navController.navigate("VocabularyScreen") }) } + composable("GameScreen"){ GameScreen() { +// + } } + } + } +@Composable +fun BottomNav(){ +} @Composable fun HomeScreen(NavigateToRegister: () -> Unit,NavigateToLogin: () -> Unit ){ Surface(modifier = Modifier - .wrapContentWidth(align = Alignment.CenterHorizontally) - .wrapContentHeight(align = Alignment.CenterVertically) - .fillMaxSize(),) { + .wrapContentWidth(align = Alignment.CenterHorizontally) + .wrapContentHeight(align = Alignment.CenterVertically) + .fillMaxSize(),) { Column( modifier = Modifier - .background(color = Color.Gray) - .wrapContentWidth(align = Alignment.CenterHorizontally)){ + .background(color = Color.Gray) + .wrapContentWidth(align = Alignment.CenterHorizontally)){ Image( painter = painterResource(id = R.drawable.logo), contentDescription = "Description de l'image", @@ -61,25 +80,25 @@ fun HomeScreen(NavigateToRegister: () -> Unit,NavigateToLogin: () -> Unit ){ .size(width = 200.dp, height = 200.dp) ) Text(text ="InEnglishPlease", color = Color.White, fontSize = 30.sp, fontWeight = FontWeight(1000) , modifier = Modifier - .padding(40.dp) - .wrapContentHeight(align = Alignment.Top) - .wrapContentWidth(align = Alignment.CenterHorizontally) - .align(alignment = Alignment.CenterHorizontally)) + .padding(40.dp) + .wrapContentHeight(align = Alignment.Top) + .wrapContentWidth(align = Alignment.CenterHorizontally) + .align(alignment = Alignment.CenterHorizontally)) Button( onClick = { NavigateToLogin() }, modifier = Modifier - .padding(30.dp) - .width(150.dp) - .height(80.dp) - .align(alignment = Alignment.CenterHorizontally)) { + .padding(30.dp) + .width(150.dp) + .height(80.dp) + .align(alignment = Alignment.CenterHorizontally)) { Text(text = "Login", fontSize = 20.sp) } Button(onClick = { NavigateToRegister() },modifier = Modifier - .padding(30.dp) - .width(150.dp) - .height(80.dp) - .align(alignment = Alignment.CenterHorizontally)) { + .padding(30.dp) + .width(150.dp) + .height(80.dp) + .align(alignment = Alignment.CenterHorizontally)) { Text(text = "Register", fontSize = 20.sp) } }