From c0301aa604019565accf9c7b973e96247ee439d4 Mon Sep 17 00:00:00 2001 From: brongniart Date: Thu, 20 Feb 2025 12:00:04 +0100 Subject: [PATCH 01/32] =?UTF-8?q?cr=C3=A9ation=20navbar=20a=20finir?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../what_the_fantasy/ui/components/NavBar.kt | 30 ++++++++++++++++++- .../what_the_fantasy/ui/screens/LoginPage.kt | 3 ++ .../what_the_fantasy/ui/theme/Color.kt | 4 ++- 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt index dedbd00..14dba5f 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt @@ -1,4 +1,32 @@ package com.example.what_the_fantasy.ui.components -class NavBar { +import android.widget.ImageView +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.FlowRow + +import androidx.compose.foundation.layout.Row +import androidx.compose.material3.BottomAppBar +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource +import com.example.what_the_fantasy.R +import com.example.what_the_fantasy.ui.theme.colorNavBar + + +@Composable +fun NavBar(actualPage :String) { + FlowRow(modifier = Modifier + .background(colorNavBar), + Arrangement.SpaceAround + ){ + Text("Favorie") + Image( painter = painterResource(R.mipmap.ic_launcher_foreground), contentDescription = "Accueil") + Text("Quiz") + + } + } \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt index f6e1023..86c06ff 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt @@ -38,6 +38,7 @@ import androidx.navigation.compose.composable import com.example.what_the_fantasy.R import com.example.what_the_fantasy.data.local.UserStub import com.example.what_the_fantasy.data.model.User +import com.example.what_the_fantasy.ui.components.NavBar import com.example.what_the_fantasy.ui.components.SpaceHeightComponent import com.example.what_the_fantasy.ui.components.TitlePageComponent import com.example.what_the_fantasy.ui.theme.colorBackground @@ -56,6 +57,7 @@ fun LoginPage(navControllerSignUp: () -> Unit, navControllerProfil: () -> Unit) .background(colorBackground), contentAlignment = Alignment.Center ){ + Column( modifier = Modifier .fillMaxWidth(0.9f) @@ -74,6 +76,7 @@ fun LoginPage(navControllerSignUp: () -> Unit, navControllerProfil: () -> Unit) SpaceHeightComponent(16) CreateAccountButton(R.string.ButtonCreateLogin,12, Color.White, navControllerSignUp) } + NavBar("") } } diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/theme/Color.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/theme/Color.kt index 41c8deb..64ce917 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/theme/Color.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/theme/Color.kt @@ -16,4 +16,6 @@ val gradienBox = Brush.linearGradient( start = Offset(0f, 1000f), // Départ en bas à gauche end = Offset(1000f, 0f) // Fin en haut à droite ) -val colorBackground = Color(0xFF100C1B) \ No newline at end of file +val colorBackground = Color(0xFF100C1B) + +val colorNavBar = Color(0xFF2F0E62) \ No newline at end of file From 407dd4f22abf5fcf8270579494ebef671c7eec82 Mon Sep 17 00:00:00 2001 From: tomivt Date: Thu, 20 Feb 2025 15:25:04 +0100 Subject: [PATCH 02/32] Add Navigation into Quiz pages --- .../example/what_the_fantasy/MainActivity.kt | 12 ------- .../ui/navigations/AppNavigator.kt | 27 ++++++++++++++-- .../what_the_fantasy/ui/screens/LoginPage.kt | 7 ---- .../ui/screens/QuizEndPage.kt | 2 +- .../screens/{QuizAccueil.kt => QuizMenu.kt} | 32 +++---------------- .../what_the_fantasy/ui/screens/QuizPage.kt | 14 +++----- 6 files changed, 35 insertions(+), 59 deletions(-) rename What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/{QuizAccueil.kt => QuizMenu.kt} (80%) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/MainActivity.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/MainActivity.kt index 2d893b5..2c953cc 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/MainActivity.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/MainActivity.kt @@ -4,19 +4,8 @@ import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.padding -import androidx.compose.material3.Scaffold -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.navigation.NavController import com.example.what_the_fantasy.ui.navigations.AppNavigator import com.example.what_the_fantasy.ui.theme.What_The_FantasyTheme -import com.example.what_the_fantasy.ui.screens.LoginPage -import com.example.what_the_fantasy.ui.screens.ProfilPage -import com.example.what_the_fantasy.ui.screens.QuizPage class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -26,7 +15,6 @@ class MainActivity : ComponentActivity() { What_The_FantasyTheme { AppNavigator() - //QuizPage() } } } diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt index fc05703..4475a7f 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt @@ -8,6 +8,8 @@ import com.example.what_the_fantasy.ui.screens.AccueilPage import com.example.what_the_fantasy.ui.screens.FavoritePage import com.example.what_the_fantasy.ui.screens.LoginPage import com.example.what_the_fantasy.ui.screens.ProfilPage +import com.example.what_the_fantasy.ui.screens.QuizEndPage +import com.example.what_the_fantasy.ui.screens.QuizMenu import com.example.what_the_fantasy.ui.screens.QuizPage import com.example.what_the_fantasy.ui.screens.QuotePage import com.example.what_the_fantasy.ui.screens.SearchPage @@ -21,7 +23,12 @@ sealed class Destination(val route: String) { data object Accueil : Destination("Accueil") data object Favorite : Destination("Favorite") data object Profil : Destination("Profil") + data object QuizMenu : Destination("QuizMenu") data object Quiz : Destination("Quiz") + data object QuizEnd : Destination("QuizEnd/{idQuiz}/{pts}") { + // Ajout paramètres idQuiz et pts + fun createIdAndPts(idQuiz : Int, pts : Int) = "QuizEnd/$idQuiz/$pts" + } data object Quote : Destination("Quote") data object Search : Destination("Search") data object SignUp : Destination("SignUp") @@ -32,7 +39,7 @@ sealed class Destination(val route: String) { fun AppNavigator() { val navController = rememberNavController() - NavHost(navController, startDestination = Destination.Login.route) { + NavHost(navController, startDestination = Destination.QuizMenu.route) { composable(Destination.Login.route) { LoginPage( navControllerSignUp = { navController.navigate(Destination.SignUp.route) }, @@ -42,7 +49,23 @@ fun AppNavigator() { composable(Destination.Accueil.route) { AccueilPage() } composable(Destination.Favorite.route) { FavoritePage() } composable(Destination.Profil.route) { ProfilPage(navController) } - composable(Destination.Quiz.route) { QuizPage() } + composable(Destination.QuizMenu.route) { + QuizMenu( + navControllerQuiz = { navController.navigate(Destination.Quiz.route) } + ) + } + composable(Destination.Quiz.route) { + QuizPage( + navControllerQuizEnd = { idQuiz, pts -> + navController.navigate(Destination.QuizEnd.createIdAndPts(idQuiz, pts)) + } + ) + } + composable(Destination.QuizEnd.route) { backStackEntry -> + val idQuiz = backStackEntry.arguments?.getString("idQuiz")?.toInt() ?: 0 + val pts = backStackEntry.arguments?.getString("pts")?.toInt() ?: 0 + QuizEndPage(idQuiz, pts) + } composable(Destination.Quote.route) { QuotePage() } composable(Destination.Search.route) { SearchPage() } composable(Destination.SignUp.route) { SignUpPage(navController) } diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt index f6e1023..252b217 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt @@ -22,8 +22,6 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip -import androidx.compose.ui.geometry.Offset -import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.KeyboardType @@ -31,10 +29,6 @@ import androidx.compose.ui.text.input.PasswordVisualTransformation import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import androidx.navigation.NavController -import androidx.navigation.compose.rememberNavController -import androidx.navigation.compose.NavHost -import androidx.navigation.compose.composable import com.example.what_the_fantasy.R import com.example.what_the_fantasy.data.local.UserStub import com.example.what_the_fantasy.data.model.User @@ -49,7 +43,6 @@ fun LoginPage(navControllerSignUp: () -> Unit, navControllerProfil: () -> Unit) val users = UserStub.allUsers; - Box( modifier = Modifier .fillMaxSize() diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt index 359e7f7..686a127 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt @@ -34,7 +34,7 @@ val gradient = Brush.linearGradient( @Composable -fun QuizEndPage(points: Int, idQuiz: Int) { +fun QuizEndPage(idQuiz: Int, points: Int) { Column( modifier = Modifier.fillMaxSize().background(Color(0xFF100C1B)) ) { diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizAccueil.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizMenu.kt similarity index 80% rename from What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizAccueil.kt rename to What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizMenu.kt index b237afd..08225f0 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizAccueil.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizMenu.kt @@ -19,15 +19,11 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp -import androidx.navigation.NavController -import androidx.navigation.compose.NavHost -import androidx.navigation.compose.composable -import androidx.navigation.compose.rememberNavController import com.example.what_the_fantasy.R @Composable -fun QuizAccueil(navController: NavController) { +fun QuizMenu(navControllerQuiz: () -> Unit) { Row( modifier = Modifier .fillMaxSize() @@ -47,7 +43,7 @@ fun QuizAccueil(navController: NavController) { .size(width = 150.dp, height = 100.dp) .padding(8.dp) .clickable { - navController.navigate("quizPage") + navControllerQuiz() } ) { Image( @@ -63,8 +59,7 @@ fun QuizAccueil(navController: NavController) { .size(width = 150.dp, height = 100.dp) .padding(8.dp) .clickable { - - navController.navigate("quizPage") + navControllerQuiz() } ) { Image( @@ -89,7 +84,7 @@ fun QuizAccueil(navController: NavController) { .size(width = 150.dp, height = 100.dp) .padding(8.dp) .clickable { - navController.navigate("quizPage") + navControllerQuiz() } ) { Image( @@ -105,7 +100,7 @@ fun QuizAccueil(navController: NavController) { .size(width = 150.dp, height = 100.dp) .padding(8.dp) .clickable { - navController.navigate("quizPage") + navControllerQuiz() } ) { Image( @@ -119,21 +114,4 @@ fun QuizAccueil(navController: NavController) { Spacer(modifier = Modifier.weight(0.1f)) } -} - -@Composable -fun QuizApp() { - val navController = rememberNavController() - - NavHost(navController = navController, startDestination = "quizEndPage") { - composable("quizAccueil") { - QuizAccueil(navController = navController) - } - composable("quizPage") { - QuizPage(navController = navController) - } - composable("quizEndPage") { - QuizEndPage(5, 1) - } - } } \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt index 4317669..b1d9dc7 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt @@ -4,11 +4,6 @@ import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack -import androidx.compose.material.icons.filled.ArrowBack -import androidx.compose.material3.Icon -import androidx.compose.material3.IconButton import androidx.compose.material3.Text import androidx.compose.runtime.* import androidx.compose.ui.Alignment @@ -18,11 +13,10 @@ import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import androidx.navigation.NavController import com.example.what_the_fantasy.data.local.QuestionStub @Composable -fun QuizPage(navController: NavController) { +fun QuizPage(navControllerQuizEnd: (Int, Int) -> Unit) { val questions = QuestionStub.allQuestions var idCurrentQuestion by remember { mutableIntStateOf(0) } var pts by remember { mutableIntStateOf(0) } @@ -44,7 +38,7 @@ fun QuizPage(navController: NavController) { if (answer == correctAnswer) pts++ if (idCurrentQuestion < questions.size - 1) idCurrentQuestion++ - else navController.popBackStack() // Retour menu + else navControllerQuizEnd(0, pts) // Retour menu } Box( @@ -66,12 +60,12 @@ fun QuizPage(navController: NavController) { Box( modifier = Modifier.fillMaxWidth() ) { - IconButton( + /*IconButton( onClick = { navController.popBackStack() }, modifier = Modifier.align(Alignment.TopStart) ) { Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Retour", tint = Color.White) - } + }*/ } Text("Question ${question.id}", color = Color.White, fontSize = 18.sp, modifier = Modifier.padding(top = 20.dp)) Text("Points : $pts", color = Color.White, fontSize = 18.sp, modifier = Modifier.padding(top = 40.dp)) From 0224bbf149b51b8b2dca6a213f47489ecd25830f Mon Sep 17 00:00:00 2001 From: brongniart Date: Thu, 20 Feb 2025 15:53:25 +0100 Subject: [PATCH 03/32] =?UTF-8?q?NavBar=20inf=C3=A9rieur=20et=20sup=C3=A9r?= =?UTF-8?q?ieur=20faite=20style=20bouton=20a=20corig=C3=A9=20&=20mettre=20?= =?UTF-8?q?la=20nav=20dans=20les=20onclick?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../what_the_fantasy/ui/components/NavBar.kt | 81 +++++++++++-- .../ui/screens/AccueilPage.kt | 7 +- .../ui/screens/FavoritePage.kt | 7 +- .../what_the_fantasy/ui/screens/LoginPage.kt | 4 +- .../what_the_fantasy/ui/screens/ProfilPage.kt | 78 ++++++------- .../what_the_fantasy/ui/screens/QuizPage.kt | 106 +++++++++--------- .../what_the_fantasy/ui/screens/QuotePage.kt | 7 +- .../what_the_fantasy/ui/screens/SearchPage.kt | 7 +- .../ui/screens/SubmitQuotePage.kt | 7 +- 9 files changed, 198 insertions(+), 106 deletions(-) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt index 14dba5f..a922a8e 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt @@ -4,29 +4,92 @@ import android.widget.ImageView import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.FlowRow +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.BottomAppBar +import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.onGloballyPositioned import androidx.compose.ui.res.painterResource +import androidx.compose.ui.unit.TextUnit +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp import com.example.what_the_fantasy.R +import com.example.what_the_fantasy.ui.navigations.AppNavigator import com.example.what_the_fantasy.ui.theme.colorNavBar @Composable -fun NavBar(actualPage :String) { - FlowRow(modifier = Modifier - .background(colorNavBar), - Arrangement.SpaceAround - ){ - Text("Favorie") - Image( painter = painterResource(R.mipmap.ic_launcher_foreground), contentDescription = "Accueil") - Text("Quiz") +fun NavBar(content : @Composable ()-> Unit ) { + val nav = AppNavigator() + + Column( + modifier = Modifier + .fillMaxSize() + ) { + Row( + modifier = Modifier + .fillMaxWidth() + .height(55.dp) + .background(colorNavBar) + .padding(10.dp), + Arrangement.SpaceBetween, + verticalAlignment = Alignment.Bottom + ) { + Button(onClick = {}, Modifier.background(Color.Unspecified)) { + Text("Profile", fontSize = 25.sp, color = Color.White) + } + Button(onClick = {}) { + Text("Theme", fontSize = 25.sp, color = Color.White) + } + + } + + Box(modifier = Modifier.background(Color.Black).fillMaxHeight(0.92f)){ + content() + } + + Row(modifier = Modifier + .background(colorNavBar) + .fillMaxSize(), + horizontalArrangement = Arrangement.SpaceAround, + verticalAlignment = Alignment.CenterVertically + ) { + + Button(onClick = {}) { + Text("Favorie", fontSize = 25.sp, color = Color.White) + } + + Button(onClick = {}) { + Image( + painter = painterResource(R.mipmap.ic_launcher_foreground), + contentDescription = "Accueil", + modifier = Modifier + .size(100.dp) + ) + } + + Button(onClick = {}) { + Text("Quiz", fontSize = 25.sp, color = Color.White) + } } + + } } \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/AccueilPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/AccueilPage.kt index 8fd4c97..4f5b249 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/AccueilPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/AccueilPage.kt @@ -1,6 +1,11 @@ package com.example.what_the_fantasy.ui.screens import androidx.compose.runtime.Composable +import com.example.what_the_fantasy.ui.components.NavBar @Composable -fun AccueilPage() {} \ No newline at end of file +fun AccueilPage() { + NavBar { + + } +} \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt index 72c2e72..8945f9e 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt @@ -1,6 +1,11 @@ package com.example.what_the_fantasy.ui.screens import androidx.compose.runtime.Composable +import com.example.what_the_fantasy.ui.components.NavBar @Composable -fun FavoritePage() {} \ No newline at end of file +fun FavoritePage() { + NavBar { + + } +} \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt index 86c06ff..ab97777 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt @@ -50,7 +50,6 @@ fun LoginPage(navControllerSignUp: () -> Unit, navControllerProfil: () -> Unit) val users = UserStub.allUsers; - Box( modifier = Modifier .fillMaxSize() @@ -76,8 +75,9 @@ fun LoginPage(navControllerSignUp: () -> Unit, navControllerProfil: () -> Unit) SpaceHeightComponent(16) CreateAccountButton(R.string.ButtonCreateLogin,12, Color.White, navControllerSignUp) } - NavBar("") + } + } diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt index cdfbec9..e9ab71f 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt @@ -62,6 +62,7 @@ import com.example.what_the_fantasy.R import com.example.what_the_fantasy.data.local.QuestionStub import com.example.what_the_fantasy.data.local.UserStub import com.example.what_the_fantasy.ui.components.ErrorMessageProfileComponent +import com.example.what_the_fantasy.ui.components.NavBar import com.example.what_the_fantasy.ui.components.SpaceHeightComponent import com.example.what_the_fantasy.ui.components.TitlePageComponent import com.example.what_the_fantasy.ui.theme.What_The_FantasyTheme @@ -75,47 +76,48 @@ fun ProfilPage(navController: NavController) { ) val user = UserStub.allUsers val index = 2 // Pour changer l'utilisateur pour le moment - - Box( - modifier = Modifier - .fillMaxSize() - .background(Color(0xFF100C1B)), - contentAlignment = Alignment.Center - ) { - Column( + NavBar { + Box( modifier = Modifier - .fillMaxWidth(0.9f) - .padding(20.dp) - .clip(RoundedCornerShape(16.dp)) - .background(gradient) - .padding(20.dp), - horizontalAlignment = Alignment.CenterHorizontally + .fillMaxSize() + .background(Color(0xFF100C1B)), + contentAlignment = Alignment.Center ) { + Column( + modifier = Modifier + .fillMaxWidth(0.9f) + .padding(20.dp) + .clip(RoundedCornerShape(16.dp)) + .background(gradient) + .padding(20.dp), + horizontalAlignment = Alignment.CenterHorizontally + ) { + + // Titre + TitlePageComponent(R.string.titleProfile, 20, Color.White) + SpaceHeightComponent(16) + + // Image de profil + ImageProfil(user[index].imgUrl, 120, 2, Color.White) + SpaceHeightComponent(16) + + EditUsername(user[index].username)// Édition du Username + SpaceHeightComponent(16) + + EditEmail(user[index].email)// Édition du Email + Spacer(modifier = Modifier.height(8.dp)) + + EditPasswd() + SpaceHeightComponent(16) + + // Bouton + ButtonProfile(R.string.ButtonAddQuoteprofile, 18, Color.Black, Color.White) + SpaceHeightComponent(16) + ButtonProfile(R.string.ButtonLanguageprofile, 18, Color.Black, Color.White) + SpaceHeightComponent(16) + ButtonProfile(R.string.ButtonUnlogprofile, 18, Color.Black, Color.White) - // Titre - TitlePageComponent(R.string.titleProfile, 20, Color.White) - SpaceHeightComponent(16) - - // Image de profil - ImageProfil(user[index].imgUrl, 120, 2, Color.White) - SpaceHeightComponent(16) - - EditUsername(user[index].username)// Édition du Username - SpaceHeightComponent(16) - - EditEmail(user[index].email)// Édition du Email - Spacer(modifier = Modifier.height(8.dp)) - - EditPasswd() - SpaceHeightComponent(16) - - // Bouton - ButtonProfile(R.string.ButtonAddQuoteprofile,18, Color.Black, Color.White) - SpaceHeightComponent(16) - ButtonProfile(R.string.ButtonLanguageprofile,18, Color.Black, Color.White) - SpaceHeightComponent(16) - ButtonProfile(R.string.ButtonUnlogprofile, 18, Color.Black, Color.White) - + } } } } diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt index a342a02..0405ae3 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt @@ -27,6 +27,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.example.what_the_fantasy.data.local.QuestionStub import com.example.what_the_fantasy.data.model.Question +import com.example.what_the_fantasy.ui.components.NavBar @Composable fun QuizPage() { @@ -37,68 +38,69 @@ fun QuizPage() { ) val questions = QuestionStub.allQuestions - - Box( - modifier = Modifier - .fillMaxSize() - .background(Color(0xFF100C1B)) // Fond global de l'écran - .padding(16.dp) // Marges autour de tout le contenu - ) { - // Numéro de la question en haut - Text( - text = "Question numéro : " + questions.first().id.toString(), - color = Color.White, - fontSize = 18.sp, // Taille réduite pour tenir sur un écran portrait - modifier = Modifier - .align(Alignment.TopCenter) // Position en haut au centre - .padding(top = 16.dp) // Un peu d'espace en haut - ) - - // Contenu centré, mais avec une gestion plus équilibrée du placement - Column( + NavBar { + Box( modifier = Modifier .fillMaxSize() - .padding(top = 48.dp), // Réduit l'espace entre le numéro de la question et la question elle-même - verticalArrangement = Arrangement.Center, // Centre verticalement - horizontalAlignment = Alignment.CenterHorizontally // Centre horizontalement + .background(Color(0xFF100C1B)) // Fond global de l'écran + .padding(16.dp) // Marges autour de tout le contenu ) { - // Question principale + // Numéro de la question en haut Text( - text = questions.first().question, + text = "Question numéro : " + questions.first().id.toString(), color = Color.White, - fontSize = 22.sp, // Taille plus petite pour tenir sur un écran portrait - modifier = Modifier.padding(bottom = 16.dp) // Réduit l'espacement entre la question et les réponses + fontSize = 18.sp, // Taille réduite pour tenir sur un écran portrait + modifier = Modifier + .align(Alignment.TopCenter) // Position en haut au centre + .padding(top = 16.dp) // Un peu d'espace en haut ) - // Liste des réponses - val answers = listOf( - questions.first().ansA, - questions.first().ansB, - questions.first().ansC, - questions.first().ansD - ) + // Contenu centré, mais avec une gestion plus équilibrée du placement + Column( + modifier = Modifier + .fillMaxSize() + .padding(top = 48.dp), // Réduit l'espace entre le numéro de la question et la question elle-même + verticalArrangement = Arrangement.Center, // Centre verticalement + horizontalAlignment = Alignment.CenterHorizontally // Centre horizontalement + ) { + // Question principale + Text( + text = questions.first().question, + color = Color.White, + fontSize = 22.sp, // Taille plus petite pour tenir sur un écran portrait + modifier = Modifier.padding(bottom = 16.dp) // Réduit l'espacement entre la question et les réponses + ) + + // Liste des réponses + val answers = listOf( + questions.first().ansA, + questions.first().ansB, + questions.first().ansC, + questions.first().ansD + ) - // Pour chaque réponse, on applique une Box avec un espacement uniforme - answers.forEach { answer -> - Box( - modifier = Modifier - .width(220.dp) // Largeur plus petite pour que ça tienne mieux - .height(50.dp) // Hauteur ajustée - .background( - brush = gradient, - shape = RoundedCornerShape(16.dp) // Coins arrondis + // Pour chaque réponse, on applique une Box avec un espacement uniforme + answers.forEach { answer -> + Box( + modifier = Modifier + .width(220.dp) // Largeur plus petite pour que ça tienne mieux + .height(50.dp) // Hauteur ajustée + .background( + brush = gradient, + shape = RoundedCornerShape(16.dp) // Coins arrondis + ) + .clickable { /* Action pour la réponse */ } + .padding(horizontal = 8.dp), // Padding interne + contentAlignment = Alignment.Center + ) { + Text( + text = answer, + color = Color.White, + fontSize = 18.sp // Taille du texte ajustée pour un écran portrait ) - .clickable { /* Action pour la réponse */ } - .padding(horizontal = 8.dp), // Padding interne - contentAlignment = Alignment.Center - ) { - Text( - text = answer, - color = Color.White, - fontSize = 18.sp // Taille du texte ajustée pour un écran portrait - ) + } + Spacer(modifier = Modifier.height(16.dp)) // Espacement réduit entre les réponses } - Spacer(modifier = Modifier.height(16.dp)) // Espacement réduit entre les réponses } } } diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuotePage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuotePage.kt index cfb1d2f..a5b82e7 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuotePage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuotePage.kt @@ -1,6 +1,11 @@ package com.example.what_the_fantasy.ui.screens import androidx.compose.runtime.Composable +import com.example.what_the_fantasy.ui.components.NavBar @Composable -fun QuotePage() {} \ No newline at end of file +fun QuotePage() { + NavBar { + + } +} \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SearchPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SearchPage.kt index 9b8d6ac..be429f8 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SearchPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SearchPage.kt @@ -1,6 +1,11 @@ package com.example.what_the_fantasy.ui.screens import androidx.compose.runtime.Composable +import com.example.what_the_fantasy.ui.components.NavBar @Composable -fun SearchPage() {} \ No newline at end of file +fun SearchPage() { + NavBar { + + } +} \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SubmitQuotePage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SubmitQuotePage.kt index 0b88b35..42913ae 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SubmitQuotePage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SubmitQuotePage.kt @@ -1,6 +1,11 @@ package com.example.what_the_fantasy.ui.screens import androidx.compose.runtime.Composable +import com.example.what_the_fantasy.ui.components.NavBar @Composable -fun SubmitQuotePage() {} \ No newline at end of file +fun SubmitQuotePage() { + NavBar { + + } +} \ No newline at end of file From 3b51e3568d43cece7600aecb9e97147927dbc9c8 Mon Sep 17 00:00:00 2001 From: beaulaton Date: Fri, 21 Feb 2025 15:16:58 +0100 Subject: [PATCH 04/32] Ajout IServices avec ServicesStub et ServicesApi --- .../data/services/IServices.kt | 16 ++++++++++ .../data/services/ServicesAPI.kt | 31 +++++++++++++++++++ .../data/services/ServicesStub.kt | 31 +++++++++++++++++++ .../what_the_fantasy/ui/screens/LoginPage.kt | 2 -- .../what_the_fantasy/ui/screens/ProfilPage.kt | 21 ++++++------- 5 files changed, 87 insertions(+), 14 deletions(-) create mode 100644 What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/IServices.kt create mode 100644 What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesAPI.kt create mode 100644 What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/IServices.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/IServices.kt new file mode 100644 index 0000000..df15ebd --- /dev/null +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/IServices.kt @@ -0,0 +1,16 @@ +package com.example.what_the_fantasy.data.services + +interface IServices { + fun EditUsername(username : String) + fun EditEmail(email : String) + fun EditPasswd(passwd : String, passwdValid : String) + fun EditImage(imageURL : String) + + fun CreateUser(username : String, email : String, passwd : String, imageURL: String) + fun getFavorite(username: String) + + fun SearchQuote(quote : String) + + + +} \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesAPI.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesAPI.kt new file mode 100644 index 0000000..9743f68 --- /dev/null +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesAPI.kt @@ -0,0 +1,31 @@ +package com.example.what_the_fantasy.data.services + +class ServicesAPI : IServices { + override fun EditUsername(username: String) { + TODO("Not yet implemented") + } + + override fun EditEmail(email: String) { + TODO("Not yet implemented") + } + + override fun EditPasswd(passwd: String, passwdValid: String) { + TODO("Not yet implemented") + } + + override fun EditImage(imageURL: String) { + TODO("Not yet implemented") + } + + override fun CreateUser(username: String, email: String, passwd: String, imageURL: String) { + TODO("Not yet implemented") + } + + override fun SearchQuote(quote: String) { + TODO("Not yet implemented") + } + + override fun getFavorite(username: String) { + TODO("Not yet implemented") + } +} \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt new file mode 100644 index 0000000..8c84176 --- /dev/null +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt @@ -0,0 +1,31 @@ +package com.example.what_the_fantasy.data.services + +class ServicesStub : IServices { + override fun EditUsername(username: String) { + TODO("Not yet implemented") + } + + override fun EditEmail(email: String) { + TODO("Not yet implemented") + } + + override fun EditPasswd(passwd: String, passwdValid: String) { + TODO("Not yet implemented") + } + + override fun EditImage(imageURL: String) { + TODO("Not yet implemented") + } + + override fun CreateUser(username: String, email: String, passwd: String, imageURL: String) { + TODO("Not yet implemented") + } + + override fun SearchQuote(quote: String) { + TODO("Not yet implemented") + } + + override fun getFavorite(username: String) { + TODO("Not yet implemented") + } +} \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt index d5d3fd7..47309cc 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt @@ -79,8 +79,6 @@ fun LoginPage(navControllerSignUp: () -> Unit, navControllerProfil: (Int) -> Uni } - - @Composable fun IdentifiantTextField(textIdentifiantResId : Int) : String{ val textIdentifiant = stringResource(id = textIdentifiantResId) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt index c2c0702..98e7838 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt @@ -65,16 +65,13 @@ import com.example.what_the_fantasy.ui.components.ErrorMessageProfileComponent import com.example.what_the_fantasy.ui.components.SpaceHeightComponent import com.example.what_the_fantasy.ui.components.TitlePageComponent import com.example.what_the_fantasy.ui.theme.What_The_FantasyTheme +import com.example.what_the_fantasy.ui.theme.gradienBox @Composable fun ProfilPage(index: Int, navController: NavController) { - val gradient = Brush.linearGradient( - colors = listOf(Color(0xFF7B1FA2), Color(0xFF311B92)), // Violet clair → Violet foncé - start = Offset(0f, 1000f), // Départ en bas à gauche - end = Offset(1000f, 0f) // Fin en haut à droite - ) - val user = UserStub.allUsers - //val index = 2 // Pour changer l'utilisateur pour le moment + + val userList = UserStub.allUsers + val user = userList[index] Box( modifier = Modifier @@ -87,7 +84,7 @@ fun ProfilPage(index: Int, navController: NavController) { .fillMaxWidth(0.9f) .padding(20.dp) .clip(RoundedCornerShape(16.dp)) - .background(gradient) + .background(gradienBox) .padding(20.dp), horizontalAlignment = Alignment.CenterHorizontally ) { @@ -97,13 +94,13 @@ fun ProfilPage(index: Int, navController: NavController) { SpaceHeightComponent(16) // Image de profil - ImageProfil(user[index].imgUrl, 120, 2, Color.White) + ImageProfil(user.imgUrl, 120) SpaceHeightComponent(16) - EditUsername(user[index].username)// Édition du Username + EditUsername(user.username)// Édition du Username SpaceHeightComponent(16) - EditEmail(user[index].email)// Édition du Email + EditEmail(user.email)// Édition du Email Spacer(modifier = Modifier.height(8.dp)) EditPasswd() @@ -122,7 +119,7 @@ fun ProfilPage(index: Int, navController: NavController) { @Composable -fun ImageProfil(imgProfil : String, size :Int, sizeBorber : Int, colorBorder : Color){ +fun ImageProfil(imgProfil : String, size :Int){ AsyncImage( model = imgProfil, From be33806593be3ce9d7f038f58b00d8843e5c7c07 Mon Sep 17 00:00:00 2001 From: brongniart Date: Thu, 20 Feb 2025 12:00:04 +0100 Subject: [PATCH 05/32] =?UTF-8?q?cr=C3=A9ation=20navbar=20a=20finir?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../what_the_fantasy/ui/components/NavBar.kt | 30 ++++++++++++++++++- .../what_the_fantasy/ui/screens/LoginPage.kt | 3 ++ .../what_the_fantasy/ui/theme/Color.kt | 4 ++- 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt index dedbd00..14dba5f 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt @@ -1,4 +1,32 @@ package com.example.what_the_fantasy.ui.components -class NavBar { +import android.widget.ImageView +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.FlowRow + +import androidx.compose.foundation.layout.Row +import androidx.compose.material3.BottomAppBar +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource +import com.example.what_the_fantasy.R +import com.example.what_the_fantasy.ui.theme.colorNavBar + + +@Composable +fun NavBar(actualPage :String) { + FlowRow(modifier = Modifier + .background(colorNavBar), + Arrangement.SpaceAround + ){ + Text("Favorie") + Image( painter = painterResource(R.mipmap.ic_launcher_foreground), contentDescription = "Accueil") + Text("Quiz") + + } + } \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt index 47309cc..c84383c 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt @@ -39,6 +39,7 @@ import androidx.navigation.compose.composable import com.example.what_the_fantasy.R import com.example.what_the_fantasy.data.local.UserStub import com.example.what_the_fantasy.data.model.User +import com.example.what_the_fantasy.ui.components.NavBar import com.example.what_the_fantasy.ui.components.SpaceHeightComponent import com.example.what_the_fantasy.ui.components.TitlePageComponent import com.example.what_the_fantasy.ui.theme.colorBackground @@ -57,6 +58,7 @@ fun LoginPage(navControllerSignUp: () -> Unit, navControllerProfil: (Int) -> Uni .background(colorBackground), contentAlignment = Alignment.Center ){ + Column( modifier = Modifier .fillMaxWidth(0.9f) @@ -75,6 +77,7 @@ fun LoginPage(navControllerSignUp: () -> Unit, navControllerProfil: (Int) -> Uni SpaceHeightComponent(16) CreateAccountButton(R.string.ButtonCreateLogin,12, Color.White, navControllerSignUp) } + NavBar("") } } diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/theme/Color.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/theme/Color.kt index 41c8deb..64ce917 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/theme/Color.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/theme/Color.kt @@ -16,4 +16,6 @@ val gradienBox = Brush.linearGradient( start = Offset(0f, 1000f), // Départ en bas à gauche end = Offset(1000f, 0f) // Fin en haut à droite ) -val colorBackground = Color(0xFF100C1B) \ No newline at end of file +val colorBackground = Color(0xFF100C1B) + +val colorNavBar = Color(0xFF2F0E62) \ No newline at end of file From a36665b102dc44c772514bc35312b8f90c87f6ff Mon Sep 17 00:00:00 2001 From: brongniart Date: Thu, 20 Feb 2025 15:53:25 +0100 Subject: [PATCH 06/32] =?UTF-8?q?NavBar=20inf=C3=A9rieur=20et=20sup=C3=A9r?= =?UTF-8?q?ieur=20faite=20style=20bouton=20a=20corig=C3=A9=20&=20mettre=20?= =?UTF-8?q?la=20nav=20dans=20les=20onclick?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../what_the_fantasy/ui/components/NavBar.kt | 81 ++++++++++++++++--- .../ui/screens/AccueilPage.kt | 7 +- .../ui/screens/FavoritePage.kt | 7 +- .../what_the_fantasy/ui/screens/LoginPage.kt | 4 +- .../what_the_fantasy/ui/screens/ProfilPage.kt | 1 + .../what_the_fantasy/ui/screens/QuizPage.kt | 2 + .../what_the_fantasy/ui/screens/QuotePage.kt | 7 +- .../what_the_fantasy/ui/screens/SearchPage.kt | 7 +- .../ui/screens/SubmitQuotePage.kt | 7 +- 9 files changed, 107 insertions(+), 16 deletions(-) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt index 14dba5f..a922a8e 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt @@ -4,29 +4,92 @@ import android.widget.ImageView import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.FlowRow +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.BottomAppBar +import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.onGloballyPositioned import androidx.compose.ui.res.painterResource +import androidx.compose.ui.unit.TextUnit +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp import com.example.what_the_fantasy.R +import com.example.what_the_fantasy.ui.navigations.AppNavigator import com.example.what_the_fantasy.ui.theme.colorNavBar @Composable -fun NavBar(actualPage :String) { - FlowRow(modifier = Modifier - .background(colorNavBar), - Arrangement.SpaceAround - ){ - Text("Favorie") - Image( painter = painterResource(R.mipmap.ic_launcher_foreground), contentDescription = "Accueil") - Text("Quiz") +fun NavBar(content : @Composable ()-> Unit ) { + val nav = AppNavigator() + + Column( + modifier = Modifier + .fillMaxSize() + ) { + Row( + modifier = Modifier + .fillMaxWidth() + .height(55.dp) + .background(colorNavBar) + .padding(10.dp), + Arrangement.SpaceBetween, + verticalAlignment = Alignment.Bottom + ) { + Button(onClick = {}, Modifier.background(Color.Unspecified)) { + Text("Profile", fontSize = 25.sp, color = Color.White) + } + Button(onClick = {}) { + Text("Theme", fontSize = 25.sp, color = Color.White) + } + + } + + Box(modifier = Modifier.background(Color.Black).fillMaxHeight(0.92f)){ + content() + } + + Row(modifier = Modifier + .background(colorNavBar) + .fillMaxSize(), + horizontalArrangement = Arrangement.SpaceAround, + verticalAlignment = Alignment.CenterVertically + ) { + + Button(onClick = {}) { + Text("Favorie", fontSize = 25.sp, color = Color.White) + } + + Button(onClick = {}) { + Image( + painter = painterResource(R.mipmap.ic_launcher_foreground), + contentDescription = "Accueil", + modifier = Modifier + .size(100.dp) + ) + } + + Button(onClick = {}) { + Text("Quiz", fontSize = 25.sp, color = Color.White) + } } + + } } \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/AccueilPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/AccueilPage.kt index 8fd4c97..4f5b249 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/AccueilPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/AccueilPage.kt @@ -1,6 +1,11 @@ package com.example.what_the_fantasy.ui.screens import androidx.compose.runtime.Composable +import com.example.what_the_fantasy.ui.components.NavBar @Composable -fun AccueilPage() {} \ No newline at end of file +fun AccueilPage() { + NavBar { + + } +} \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt index 72c2e72..8945f9e 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt @@ -1,6 +1,11 @@ package com.example.what_the_fantasy.ui.screens import androidx.compose.runtime.Composable +import com.example.what_the_fantasy.ui.components.NavBar @Composable -fun FavoritePage() {} \ No newline at end of file +fun FavoritePage() { + NavBar { + + } +} \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt index c84383c..4dbc28a 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt @@ -51,7 +51,6 @@ fun LoginPage(navControllerSignUp: () -> Unit, navControllerProfil: (Int) -> Uni val users = UserStub.allUsers; - Box( modifier = Modifier .fillMaxSize() @@ -77,8 +76,9 @@ fun LoginPage(navControllerSignUp: () -> Unit, navControllerProfil: (Int) -> Uni SpaceHeightComponent(16) CreateAccountButton(R.string.ButtonCreateLogin,12, Color.White, navControllerSignUp) } - NavBar("") + } + } diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt index 98e7838..35fc035 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt @@ -62,6 +62,7 @@ import com.example.what_the_fantasy.R import com.example.what_the_fantasy.data.local.QuestionStub import com.example.what_the_fantasy.data.local.UserStub import com.example.what_the_fantasy.ui.components.ErrorMessageProfileComponent +import com.example.what_the_fantasy.ui.components.NavBar import com.example.what_the_fantasy.ui.components.SpaceHeightComponent import com.example.what_the_fantasy.ui.components.TitlePageComponent import com.example.what_the_fantasy.ui.theme.What_The_FantasyTheme diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt index 4317669..4897a92 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt @@ -20,6 +20,8 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.navigation.NavController import com.example.what_the_fantasy.data.local.QuestionStub +import com.example.what_the_fantasy.data.model.Question +import com.example.what_the_fantasy.ui.components.NavBar @Composable fun QuizPage(navController: NavController) { diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuotePage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuotePage.kt index cfb1d2f..a5b82e7 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuotePage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuotePage.kt @@ -1,6 +1,11 @@ package com.example.what_the_fantasy.ui.screens import androidx.compose.runtime.Composable +import com.example.what_the_fantasy.ui.components.NavBar @Composable -fun QuotePage() {} \ No newline at end of file +fun QuotePage() { + NavBar { + + } +} \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SearchPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SearchPage.kt index 9b8d6ac..be429f8 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SearchPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SearchPage.kt @@ -1,6 +1,11 @@ package com.example.what_the_fantasy.ui.screens import androidx.compose.runtime.Composable +import com.example.what_the_fantasy.ui.components.NavBar @Composable -fun SearchPage() {} \ No newline at end of file +fun SearchPage() { + NavBar { + + } +} \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SubmitQuotePage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SubmitQuotePage.kt index 0b88b35..42913ae 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SubmitQuotePage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SubmitQuotePage.kt @@ -1,6 +1,11 @@ package com.example.what_the_fantasy.ui.screens import androidx.compose.runtime.Composable +import com.example.what_the_fantasy.ui.components.NavBar @Composable -fun SubmitQuotePage() {} \ No newline at end of file +fun SubmitQuotePage() { + NavBar { + + } +} \ No newline at end of file From 2c3ea83a4b0dae908e1c82a5ba6f1ec8227a3406 Mon Sep 17 00:00:00 2001 From: Kentin BRONGNIART Date: Tue, 25 Feb 2025 15:38:55 +0100 Subject: [PATCH 07/32] =?UTF-8?q?Navigation=20faite=20sur=20Accueil,Favori?= =?UTF-8?q?te,Quiz=20=20/=20=20A=20finir=20la=20nav=20vers=20Profil=20=20/?= =?UTF-8?q?=20=20Corection=20nav=20dans=20Quiz(supertion=20du=20passage=20?= =?UTF-8?q?en=20param=C3=A9tre=20directement=20du=20nav=20controleur)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../what_the_fantasy/ui/components/NavBar.kt | 121 ++++++++---- .../ui/navigations/AppNavigator.kt | 61 ++++-- .../ui/screens/AccueilPage.kt | 33 +++- .../ui/screens/FavoritePage.kt | 33 +++- .../what_the_fantasy/ui/screens/ProfilPage.kt | 86 +++++---- .../ui/screens/QuizAccueil.kt | 182 +++++++++--------- .../what_the_fantasy/ui/screens/QuizPage.kt | 9 +- .../what_the_fantasy/ui/screens/QuotePage.kt | 3 - .../what_the_fantasy/ui/screens/SearchPage.kt | 3 - .../ui/screens/SubmitQuotePage.kt | 3 - .../what_the_fantasy/ui/theme/Color.kt | 4 +- 11 files changed, 333 insertions(+), 205 deletions(-) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt index a922a8e..fb0ead1 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt @@ -1,7 +1,5 @@ package com.example.what_the_fantasy.ui.components -import android.widget.ImageView -import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box @@ -12,31 +10,39 @@ import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.width -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material3.BottomAppBar +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.rounded.* import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.IconButtonColors import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color -import androidx.compose.ui.layout.onGloballyPositioned +import androidx.compose.ui.graphics.painter.Painter +import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.res.painterResource -import androidx.compose.ui.unit.TextUnit import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.example.what_the_fantasy.R -import com.example.what_the_fantasy.ui.navigations.AppNavigator -import com.example.what_the_fantasy.ui.theme.colorNavBar - +import com.example.what_the_fantasy.ui.theme.* @Composable -fun NavBar(content : @Composable ()-> Unit ) { - val nav = AppNavigator() +fun NavBar(onProfile : Boolean = false , + onFavorite : Boolean = false , + onAccueil : Boolean = false , + onQuiz : Boolean = false , + + navControllerProfil: (Int) -> Unit, + navControllerFavorite: () -> Unit, + navControllerAccueil: () -> Unit, + navControllerQuiz: () -> Unit, + + content : @Composable ()-> Unit ) { Column( modifier = Modifier @@ -45,16 +51,17 @@ fun NavBar(content : @Composable ()-> Unit ) { Row( modifier = Modifier .fillMaxWidth() - .height(55.dp) - .background(colorNavBar) - .padding(10.dp), + .height(70.dp) + .background(colorNavBar), Arrangement.SpaceBetween, verticalAlignment = Alignment.Bottom ) { - Button(onClick = {}, Modifier.background(Color.Unspecified)) { - Text("Profile", fontSize = 25.sp, color = Color.White) - } - Button(onClick = {}) { + ButtonIconVectorInt(Icons.Rounded.AccountCircle,"Profile",{},onProfile) + + + Button(onClick = {}, + colors = ButtonDefaults.buttonColors(containerColor = Color.Transparent) + ) { Text("Theme", fontSize = 25.sp, color = Color.White) } @@ -65,31 +72,67 @@ fun NavBar(content : @Composable ()-> Unit ) { } Row(modifier = Modifier - .background(colorNavBar) - .fillMaxSize(), + .background(colorNavBar) + .fillMaxSize(), horizontalArrangement = Arrangement.SpaceAround, verticalAlignment = Alignment.CenterVertically ) { - Button(onClick = {}) { - Text("Favorie", fontSize = 25.sp, color = Color.White) - } + ButtonIconVector(Icons.Rounded.Favorite,"Favorite",navControllerFavorite,onFavorite) - Button(onClick = {}) { - Image( - painter = painterResource(R.mipmap.ic_launcher_foreground), - contentDescription = "Accueil", - modifier = Modifier - .size(100.dp) - ) - } - - Button(onClick = {}) { - Text("Quiz", fontSize = 25.sp, color = Color.White) - } + ButtonIconPainter(painterResource(R.mipmap.ic_launcher_foreground),"Accueil",navControllerAccueil,onAccueil) + ButtonIconVector(Icons.Rounded.Create,"Quiz",navControllerQuiz,onQuiz) } + } +} +@Composable +fun ButtonIconVector(img : ImageVector, name : String, nav : ()->Unit ,onPage : Boolean){ + IconButton(onClick = {nav()}, + enabled = !onPage, + colors = IconButtonColors(Color.Transparent,Color.White,//couleur quand il n'est pas selectionné + Color.Transparent, colorButtonNav),//couleur quand il est selectionné + modifier = Modifier + .size(60.dp) + ) { + Icon(img, + contentDescription = name, + modifier = Modifier + .size(60.dp) + ) + } +} +@Composable +fun ButtonIconVectorInt(img : ImageVector, name : String, nav : (Int)->Unit ,onPage : Boolean){ + IconButton(onClick = {}, + enabled = !onPage, + colors = IconButtonColors(Color.Transparent,Color.White,//couleur quand il n'est pas selectionné + Color.Transparent, colorButtonNav),//couleur quand il est selectionné + modifier = Modifier + .size(60.dp) + ) { + Icon(img, + contentDescription = name, + modifier = Modifier + .size(60.dp) + ) + } +} +@Composable +fun ButtonIconPainter(img : Painter, name : String, nav : ()->Unit,onPage : Boolean){ + IconButton(onClick = {nav()}, + enabled = !onPage, + colors = IconButtonColors(Color.Transparent,Color.White,//couleur quand il n'est pas selectionné + Color.Transparent, colorButtonNav),//couleur quand il est selectionné + modifier = Modifier + .size(60.dp) + ) { + Icon(img, + contentDescription = name, + modifier = Modifier + .size(60.dp) + ) } -} \ No newline at end of file +} diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt index d7c38e5..a957940 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt @@ -8,6 +8,8 @@ import com.example.what_the_fantasy.ui.screens.AccueilPage import com.example.what_the_fantasy.ui.screens.FavoritePage import com.example.what_the_fantasy.ui.screens.LoginPage import com.example.what_the_fantasy.ui.screens.ProfilPage +import com.example.what_the_fantasy.ui.screens.QuizAccueil +import com.example.what_the_fantasy.ui.screens.QuizEndPage import com.example.what_the_fantasy.ui.screens.QuizPage import com.example.what_the_fantasy.ui.screens.QuotePage import com.example.what_the_fantasy.ui.screens.SearchPage @@ -23,38 +25,69 @@ sealed class Destination(val route: String) { data object Profil : Destination("Profil/{userIndex}") { // Ajout du paramètre userIndex fun createRoute(userIndex: Int) = "Profil/$userIndex" // Fonction pour créer la route avec l'index } - data object Quiz : Destination("Quiz") + data object Quote : Destination("Quote") data object Search : Destination("Search") data object SignUp : Destination("SignUp") data object SubmitQuote : Destination("SubmitQuote") + + data object QuizAccueil : Destination("QuizAccueil") + data object QuizPage : Destination("QuizPage") + data object QuizEndPage : Destination("QuizEndPage") } @Composable fun AppNavigator() { val navController = rememberNavController() - NavHost(navController, startDestination = Destination.Login.route) { - composable(Destination.Login.route) { - LoginPage( - navControllerSignUp = { navController.navigate(Destination.SignUp.route) }, - navControllerProfil = { userIndex -> - navController.navigate(Destination.Profil.createRoute(userIndex)) // Passe l'index à Profil - } - ) - } - composable(Destination.Accueil.route) { AccueilPage() } - composable(Destination.Favorite.route) { FavoritePage() } + NavHost(navController, startDestination = Destination.Accueil.route) { + composable(Destination.Login.route) { LoginPage( + navControllerSignUp = { navController.navigate(Destination.SignUp.route) }, + navControllerProfil = { userIndex -> + navController.navigate(Destination.Profil.createRoute(userIndex)) // Passe l'index à Profil + } + ) } + composable(Destination.Accueil.route) { AccueilPage( + navFavorite = { navController.navigate(Destination.Favorite.route) }, + navQuiz = { navController.navigate(Destination.QuizAccueil.route) } + ) } + composable(Destination.Favorite.route) { FavoritePage( + navAccueil = { navController.navigate(Destination.Accueil.route) }, + navQuiz = { navController.navigate(Destination.QuizAccueil.route) } + ) } composable(Destination.Profil.route) { backStackEntry -> // Récupère l'index passé dans la route val userIndex = backStackEntry.arguments?.getString("userIndex")?.toInt() ?: -1 - ProfilPage(index = userIndex, navController = navController) + ProfilPage(index = userIndex, + navController = navController, + + + ) } - composable(Destination.Quiz.route) { QuizPage(navController) } composable(Destination.Quote.route) { QuotePage() } composable(Destination.Search.route) { SearchPage() } composable(Destination.SignUp.route) { SignUpPage(navController) } composable(Destination.SubmitQuote.route) { SubmitQuotePage() } + + + + composable(Destination.QuizAccueil.route) { QuizAccueil( + navFavorite = { navController.navigate(Destination.Favorite.route) }, + navAccueil = { navController.navigate(Destination.Accueil.route) }, + + navControllerQuizPage = { navController.navigate(Destination.QuizPage.route) }, + navControllerQuizEndPage = { navController.navigate(Destination.QuizEndPage.route) } + ) } + + composable(Destination.QuizPage.route) { QuizPage( + navControllerQuiz = {navController.navigate(Destination.QuizAccueil.route)}, + navControllerQuizEndPage = {navController.navigate(Destination.QuizEndPage.route)} + ) } + composable(Destination.QuizEndPage.route) { QuizEndPage( + points = 5, + idQuiz = 1 + ) } + } } diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/AccueilPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/AccueilPage.kt index 4f5b249..16fe4f8 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/AccueilPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/AccueilPage.kt @@ -1,11 +1,38 @@ package com.example.what_the_fantasy.ui.screens +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +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.unit.sp import com.example.what_the_fantasy.ui.components.NavBar +import com.example.what_the_fantasy.ui.theme.colorBackground @Composable -fun AccueilPage() { - NavBar { - +fun AccueilPage( + navFavorite: () -> Unit, + navQuiz: () -> Unit +) { + NavBar(onAccueil = true, + navControllerFavorite = navFavorite, + navControllerAccueil = { }, + navControllerProfil = {}, + navControllerQuiz = navQuiz + ){ + Box( + modifier = Modifier + .fillMaxSize() + .background(colorBackground), + contentAlignment = Alignment.Center + ){ + Column { + Text("Accueil", color = Color.White, fontSize = 20.sp) + } + } } } \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt index 8945f9e..2914701 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt @@ -1,11 +1,38 @@ package com.example.what_the_fantasy.ui.screens +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +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.unit.sp import com.example.what_the_fantasy.ui.components.NavBar +import com.example.what_the_fantasy.ui.theme.colorBackground @Composable -fun FavoritePage() { - NavBar { - +fun FavoritePage( + navAccueil: () -> Unit, + navQuiz: () -> Unit +) { + NavBar(onFavorite = true, + navControllerFavorite = { }, + navControllerAccueil = navAccueil, + navControllerProfil = {}, + navControllerQuiz = navQuiz + ) { + Box( + modifier = Modifier + .fillMaxSize() + .background(colorBackground), + contentAlignment = Alignment.Center + ){ + Column { + Text("Favorite", color = Color.White, fontSize = 20.sp) + } + } } } \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt index 35fc035..5937840 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt @@ -70,50 +70,56 @@ import com.example.what_the_fantasy.ui.theme.gradienBox @Composable fun ProfilPage(index: Int, navController: NavController) { - - val userList = UserStub.allUsers - val user = userList[index] - - Box( - modifier = Modifier - .fillMaxSize() - .background(Color(0xFF100C1B)), - contentAlignment = Alignment.Center + NavBar(onProfile = true, + navControllerFavorite = {}, + navControllerAccueil = {}, + navControllerProfil = {}, + navControllerQuiz = {} ) { - Column( + val userList = UserStub.allUsers + val user = userList[index] + + Box( modifier = Modifier - .fillMaxWidth(0.9f) - .padding(20.dp) - .clip(RoundedCornerShape(16.dp)) - .background(gradienBox) - .padding(20.dp), - horizontalAlignment = Alignment.CenterHorizontally + .fillMaxSize() + .background(Color(0xFF100C1B)), + contentAlignment = Alignment.Center ) { + Column( + modifier = Modifier + .fillMaxWidth(0.9f) + .padding(20.dp) + .clip(RoundedCornerShape(16.dp)) + .background(gradienBox) + .padding(20.dp), + horizontalAlignment = Alignment.CenterHorizontally + ) { + + // Titre + TitlePageComponent(R.string.titleProfile, 20, Color.White) + SpaceHeightComponent(16) + + // Image de profil + ImageProfil(user.imgUrl, 120) + SpaceHeightComponent(16) + + EditUsername(user.username)// Édition du Username + SpaceHeightComponent(16) + + EditEmail(user.email)// Édition du Email + Spacer(modifier = Modifier.height(8.dp)) + + EditPasswd() + SpaceHeightComponent(16) + + // Bouton + ButtonProfile(R.string.ButtonAddQuoteprofile, 18, Color.Black, Color.White) + SpaceHeightComponent(16) + ButtonProfile(R.string.ButtonLanguageprofile, 18, Color.Black, Color.White) + SpaceHeightComponent(16) + ButtonProfile(R.string.ButtonUnlogprofile, 18, Color.Black, Color.White) - // Titre - TitlePageComponent(R.string.titleProfile, 20, Color.White) - SpaceHeightComponent(16) - - // Image de profil - ImageProfil(user.imgUrl, 120) - SpaceHeightComponent(16) - - EditUsername(user.username)// Édition du Username - SpaceHeightComponent(16) - - EditEmail(user.email)// Édition du Email - Spacer(modifier = Modifier.height(8.dp)) - - EditPasswd() - SpaceHeightComponent(16) - - // Bouton - ButtonProfile(R.string.ButtonAddQuoteprofile,18, Color.Black, Color.White) - SpaceHeightComponent(16) - ButtonProfile(R.string.ButtonLanguageprofile,18, Color.Black, Color.White) - SpaceHeightComponent(16) - ButtonProfile(R.string.ButtonUnlogprofile, 18, Color.Black, Color.White) - + } } } } diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizAccueil.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizAccueil.kt index b237afd..a5fcaac 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizAccueil.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizAccueil.kt @@ -24,116 +24,112 @@ import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController import com.example.what_the_fantasy.R +import com.example.what_the_fantasy.ui.components.NavBar @Composable -fun QuizAccueil(navController: NavController) { - Row( - modifier = Modifier - .fillMaxSize() - .background(Color(0xFF100C1B)) - .padding(top = 100.dp) +fun QuizAccueil( + navFavorite: () -> Unit, + navAccueil: () -> Unit, + navControllerQuizPage: () -> Unit, + navControllerQuizEndPage: () -> Unit +) { + NavBar(onQuiz = true, + navControllerFavorite = navFavorite, + navControllerAccueil = navAccueil, + navControllerProfil = {}, + navControllerQuiz = { } ) { - Spacer(modifier = Modifier.weight(0.1f)) - Column( + Row( modifier = Modifier - .weight(0.9f) - .fillMaxHeight(), - horizontalAlignment = Alignment.CenterHorizontally + .fillMaxSize() + .background(Color(0xFF100C1B)) + .padding(top = 100.dp) ) { - Box( - modifier = Modifier - .size(width = 150.dp, height = 100.dp) - .padding(8.dp) - .clickable { - navController.navigate("quizPage") - } - ) { - Image( - painter = painterResource(id = R.drawable.quiz), - contentDescription = "Quiz 1", - modifier = Modifier.fillMaxSize(), - contentScale = ContentScale.Crop - ) - } + Spacer(modifier = Modifier.weight(0.1f)) - Box( + Column( modifier = Modifier - .size(width = 150.dp, height = 100.dp) - .padding(8.dp) - .clickable { - - navController.navigate("quizPage") - } + .weight(0.9f) + .fillMaxHeight(), + horizontalAlignment = Alignment.CenterHorizontally ) { - Image( - painter = painterResource(id = R.drawable.quiz), - contentDescription = "Quiz 2", - modifier = Modifier.fillMaxSize(), - contentScale = ContentScale.Crop - ) + Box( + modifier = Modifier + .size(width = 150.dp, height = 100.dp) + .padding(8.dp) + .clickable { + navControllerQuizPage() + } + ) { + Image( + painter = painterResource(id = R.drawable.quiz), + contentDescription = "Quiz 1", + modifier = Modifier.fillMaxSize(), + contentScale = ContentScale.Crop + ) + } + + Box( + modifier = Modifier + .size(width = 150.dp, height = 100.dp) + .padding(8.dp) + .clickable { + navControllerQuizPage() + } + ) { + Image( + painter = painterResource(id = R.drawable.quiz), + contentDescription = "Quiz 2", + modifier = Modifier.fillMaxSize(), + contentScale = ContentScale.Crop + ) + } } - } - Spacer(modifier = Modifier.width(10.dp)) + Spacer(modifier = Modifier.width(10.dp)) - Column( - modifier = Modifier - .weight(0.9f) - .fillMaxHeight(), - horizontalAlignment = Alignment.CenterHorizontally - ) { - Box( + Column( modifier = Modifier - .size(width = 150.dp, height = 100.dp) - .padding(8.dp) - .clickable { - navController.navigate("quizPage") - } + .weight(0.9f) + .fillMaxHeight(), + horizontalAlignment = Alignment.CenterHorizontally ) { - Image( - painter = painterResource(id = R.drawable.quiz), - contentDescription = "Quiz 3", - modifier = Modifier.fillMaxSize(), - contentScale = ContentScale.Crop - ) - } + Box( + modifier = Modifier + .size(width = 150.dp, height = 100.dp) + .padding(8.dp) + .clickable { + navControllerQuizPage() + } + ) { + Image( + painter = painterResource(id = R.drawable.quiz), + contentDescription = "Quiz 3", + modifier = Modifier.fillMaxSize(), + contentScale = ContentScale.Crop + ) + } - Box( - modifier = Modifier - .size(width = 150.dp, height = 100.dp) - .padding(8.dp) - .clickable { - navController.navigate("quizPage") - } - ) { - Image( - painter = painterResource(id = R.drawable.quiz), - contentDescription = "Quiz 4", - modifier = Modifier.fillMaxSize(), - contentScale = ContentScale.Crop - ) + Box( + modifier = Modifier + .size(width = 150.dp, height = 100.dp) + .padding(8.dp) + .clickable { + navControllerQuizPage() + } + ) { + Image( + painter = painterResource(id = R.drawable.quiz), + contentDescription = "Quiz 4", + modifier = Modifier.fillMaxSize(), + contentScale = ContentScale.Crop + ) + } } - } - - Spacer(modifier = Modifier.weight(0.1f)) - } -} -@Composable -fun QuizApp() { - val navController = rememberNavController() - - NavHost(navController = navController, startDestination = "quizEndPage") { - composable("quizAccueil") { - QuizAccueil(navController = navController) - } - composable("quizPage") { - QuizPage(navController = navController) - } - composable("quizEndPage") { - QuizEndPage(5, 1) + Spacer(modifier = Modifier.weight(0.1f)) } } -} \ No newline at end of file +} diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt index 4897a92..94bc2ba 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt @@ -24,7 +24,10 @@ import com.example.what_the_fantasy.data.model.Question import com.example.what_the_fantasy.ui.components.NavBar @Composable -fun QuizPage(navController: NavController) { +fun QuizPage( + navControllerQuiz: () -> Unit, + navControllerQuizEndPage: () -> Unit +) { val questions = QuestionStub.allQuestions var idCurrentQuestion by remember { mutableIntStateOf(0) } var pts by remember { mutableIntStateOf(0) } @@ -46,7 +49,7 @@ fun QuizPage(navController: NavController) { if (answer == correctAnswer) pts++ if (idCurrentQuestion < questions.size - 1) idCurrentQuestion++ - else navController.popBackStack() // Retour menu + else navControllerQuiz() // Retour menu } Box( @@ -69,7 +72,7 @@ fun QuizPage(navController: NavController) { modifier = Modifier.fillMaxWidth() ) { IconButton( - onClick = { navController.popBackStack() }, + onClick = { navControllerQuiz() }, modifier = Modifier.align(Alignment.TopStart) ) { Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Retour", tint = Color.White) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuotePage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuotePage.kt index a5b82e7..078c936 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuotePage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuotePage.kt @@ -5,7 +5,4 @@ import com.example.what_the_fantasy.ui.components.NavBar @Composable fun QuotePage() { - NavBar { - - } } \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SearchPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SearchPage.kt index be429f8..3d081c1 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SearchPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SearchPage.kt @@ -5,7 +5,4 @@ import com.example.what_the_fantasy.ui.components.NavBar @Composable fun SearchPage() { - NavBar { - - } } \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SubmitQuotePage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SubmitQuotePage.kt index 42913ae..dd6dce6 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SubmitQuotePage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SubmitQuotePage.kt @@ -5,7 +5,4 @@ import com.example.what_the_fantasy.ui.components.NavBar @Composable fun SubmitQuotePage() { - NavBar { - - } } \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/theme/Color.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/theme/Color.kt index 64ce917..880122c 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/theme/Color.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/theme/Color.kt @@ -18,4 +18,6 @@ val gradienBox = Brush.linearGradient( ) val colorBackground = Color(0xFF100C1B) -val colorNavBar = Color(0xFF2F0E62) \ No newline at end of file +val colorNavBar = Color(0xFF2F0E62) + +val colorButtonNav = Color.Cyan \ No newline at end of file From bba419bff0fdd2a37f88ab6dd1845ebebedc70ad Mon Sep 17 00:00:00 2001 From: "leni.beaulaton" Date: Wed, 26 Feb 2025 18:26:35 +0100 Subject: [PATCH 08/32] La page d'inscription fonctionne --- .../data/services/IServices.kt | 2 +- .../data/services/ServicesAPI.kt | 2 +- .../data/services/ServicesStub.kt | 30 +++- .../ui/components/hashPassword.kt | 14 ++ .../what_the_fantasy/ui/screens/LoginPage.kt | 13 +- .../what_the_fantasy/ui/screens/SignUpPage.kt | 131 +++++++++++++----- .../app/src/main/res/values-fr/strings.xml | 5 + .../app/src/main/res/values/strings.xml | 5 + 8 files changed, 152 insertions(+), 50 deletions(-) create mode 100644 What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/hashPassword.kt diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/IServices.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/IServices.kt index df15ebd..2b8febf 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/IServices.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/IServices.kt @@ -6,7 +6,7 @@ interface IServices { fun EditPasswd(passwd : String, passwdValid : String) fun EditImage(imageURL : String) - fun CreateUser(username : String, email : String, passwd : String, imageURL: String) + fun CreateUser(username : String, email : String, passwd : String, imageURL: String) : Boolean fun getFavorite(username: String) fun SearchQuote(quote : String) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesAPI.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesAPI.kt index 9743f68..fdbcb49 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesAPI.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesAPI.kt @@ -17,7 +17,7 @@ class ServicesAPI : IServices { TODO("Not yet implemented") } - override fun CreateUser(username: String, email: String, passwd: String, imageURL: String) { + override fun CreateUser(username: String, email: String, passwd: String, imageURL: String) : Boolean { TODO("Not yet implemented") } diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt index 8c84176..dc4519f 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt @@ -1,5 +1,12 @@ package com.example.what_the_fantasy.data.services +import android.annotation.SuppressLint +import android.util.Log +import com.example.what_the_fantasy.data.local.UserStub +import com.example.what_the_fantasy.data.model.User +import com.example.what_the_fantasy.ui.components.hashPassword +import java.time.LocalDate + class ServicesStub : IServices { override fun EditUsername(username: String) { TODO("Not yet implemented") @@ -17,10 +24,29 @@ class ServicesStub : IServices { TODO("Not yet implemented") } - override fun CreateUser(username: String, email: String, passwd: String, imageURL: String) { - TODO("Not yet implemented") + override fun CreateUser(username: String, email: String, passwd: String, imageURL: String) : Boolean { + val date =dateDuJour() + val passwordhash = hashPassword(passwd) + + //Check si user existe déjà + val users = UserStub.allUsers + for (user in users) { + if (user.username == username) { + return false + } + } + val user = User(100,username, email, imageURL, date, passwordhash) + //A ajouter au stub + Log.e("CreateUser", "User created: ${user.username} => ${user.password}") + return true + } + @SuppressLint("NewApi") + fun dateDuJour(): String { + val date = LocalDate.now() + return date.toString() + } override fun SearchQuote(quote: String) { TODO("Not yet implemented") } diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/hashPassword.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/hashPassword.kt new file mode 100644 index 0000000..2f46a9d --- /dev/null +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/hashPassword.kt @@ -0,0 +1,14 @@ +package com.example.what_the_fantasy.ui.components + +import java.security.MessageDigest + +fun hashPassword(password: String): String { + // SHA-256 + val digest = MessageDigest.getInstance("SHA-256") + + // Convertir mdp en bytes et appliquer le hash + val hashedBytes = digest.digest(password.toByteArray()) + + // Convertir le tableau de bytes en une chaîne hexadécimale + return hashedBytes.joinToString("") { "%02x".format(it) } +} \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt index 47309cc..9aec7bd 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt @@ -41,6 +41,7 @@ import com.example.what_the_fantasy.data.local.UserStub import com.example.what_the_fantasy.data.model.User import com.example.what_the_fantasy.ui.components.SpaceHeightComponent import com.example.what_the_fantasy.ui.components.TitlePageComponent +import com.example.what_the_fantasy.ui.components.hashPassword import com.example.what_the_fantasy.ui.theme.colorBackground import com.example.what_the_fantasy.ui.theme.gradienBox import java.security.MessageDigest @@ -148,18 +149,6 @@ fun validLogin(identifiant : String, passwd : String, users : List, navCon } } -fun hashPassword(password: String): String { - // SHA-256 - val digest = MessageDigest.getInstance("SHA-256") - - // Convertir mdp en bytes et appliquer le hash - val hashedBytes = digest.digest(password.toByteArray()) - - // Convertir le tableau de bytes en une chaîne hexadécimale - return hashedBytes.joinToString("") { "%02x".format(it) } -} - - @Composable fun CreateAccountButton(titleResId : Int, size : Int, color : Color, navController: () -> Unit){ val title = stringResource(id = titleResId) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SignUpPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SignUpPage.kt index 3e77782..d344889 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SignUpPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SignUpPage.kt @@ -15,8 +15,11 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Check import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text @@ -45,10 +48,17 @@ import com.example.what_the_fantasy.ui.components.TitlePageComponent import com.example.what_the_fantasy.ui.theme.What_The_FantasyTheme import com.example.what_the_fantasy.ui.theme.colorBackground import com.example.what_the_fantasy.ui.theme.gradienBox +import com.example.what_the_fantasy.data.services.ServicesStub +import com.example.what_the_fantasy.ui.components.ErrorMessageProfileComponent @Composable fun SignUpPage(navController: NavController) { - + var username by remember { mutableStateOf("") } + var email by remember { mutableStateOf("") } + var password by remember { mutableStateOf("") } + var confirmPassword by remember { mutableStateOf("") } + var passwordVisible by remember { mutableStateOf(false) } + val servicesStub = ServicesStub() Box( modifier = Modifier @@ -67,14 +77,14 @@ fun SignUpPage(navController: NavController) { ) { TitlePageComponent(R.string.titleSignUp, 20,Color.White) - IdentifiantTextFieldSign(R.string.IdentifiantLogin) - EmailTextFieldSign("Email*") - PassWdTextFieldSign(R.string.PasswdLogin) - PassWdConfirmTextFieldSign(R.string.ConfirmPassWdSignUp) + IdentifiantTextFieldSign(R.string.IdentifiantLogin,identifiant = username,onValueChange = { username = it }) + EmailTextFieldSign(R.string.EmailSignUp, email, onValueChange = { email = it }) + PassWdTextFieldSign(R.string.PasswdLogin,password, onValueChange = { password = it },passwordVisible,onPasswordVisibilityChange = { passwordVisible = !passwordVisible }) + PassWdConfirmTextFieldSign(R.string.ConfirmPassWdSignUp,confirmPassword,onValueChange = { confirmPassword = it },passwordVisible,onPasswordVisibilityChange = { passwordVisible = !passwordVisible }) SpaceHeightComponent(16) - ConnexionButtonSign(R.string.ButtonSignUp,18, Color.White, Color.Black) + ConnexionButtonSign(R.string.ButtonSignUp,18, Color.White, Color.Black, username, email, password, confirmPassword, servicesStub, navController = navController) SpaceHeightComponent(16) - CreateAccountButtonSign(R.string.ButtonLogin,12, Color.White, navController = navController) + ReturnLogin(R.string.ButtonLogin,12, Color.White, navController = navController) } } @@ -84,50 +94,47 @@ fun SignUpPage(navController: NavController) { @Composable -fun IdentifiantTextFieldSign(textIdentifiantResId : Int){ +fun IdentifiantTextFieldSign(textIdentifiantResId : Int, identifiant: String, onValueChange: (String) -> Unit){ val textIdentifiant = stringResource(id = textIdentifiantResId) - var identifiant by remember { mutableStateOf("") } // Stocke la valeur du champ Column(modifier = Modifier.padding(top = 16.dp)) { OutlinedTextField( value = identifiant, - onValueChange = { identifiant = it }, + onValueChange = onValueChange, label = { Text(textIdentifiant) }, modifier = Modifier .fillMaxWidth() .padding(top = 8.dp), keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Text), - shape = RoundedCornerShape(16.dp) // 🔹 Bords arrondis + shape = RoundedCornerShape(16.dp) ) } } @Composable -fun EmailTextFieldSign(textIdentifiant : String){ - var identifiant by remember { mutableStateOf("") } // Stocke la valeur du champ +fun EmailTextFieldSign(textIdentifiantResId: Int, email: String, onValueChange: (String) -> Unit){ + val textIdentifiant = stringResource(id = textIdentifiantResId) Column(modifier = Modifier.padding(top = 16.dp)) { OutlinedTextField( - value = identifiant, - onValueChange = { identifiant = it }, + value = email, + onValueChange = onValueChange, label = { Text(textIdentifiant) }, modifier = Modifier .fillMaxWidth() .padding(top = 8.dp), keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Email), - shape = RoundedCornerShape(16.dp) // Bords arrondis + shape = RoundedCornerShape(16.dp) ) } } @Composable -fun PassWdTextFieldSign(textpasswdResId : Int){ +fun PassWdTextFieldSign(textpasswdResId : Int, passwd: String, onValueChange: (String) -> Unit, passwordVisible: Boolean, onPasswordVisibilityChange: () -> Unit){ val textpasswd = stringResource(id = textpasswdResId) - var passwd by remember { mutableStateOf("") } // Stocke la valeur du champ - var passwordVisible by remember { mutableStateOf(false) } // État pour afficher/masquer Column(modifier = Modifier.padding(top = 10.dp)) { OutlinedTextField( value = passwd, - onValueChange = { passwd = it }, + onValueChange = onValueChange, label = { Text(textpasswd) }, modifier = Modifier .fillMaxWidth() @@ -135,23 +142,22 @@ fun PassWdTextFieldSign(textpasswdResId : Int){ keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Password), visualTransformation = if (passwordVisible) VisualTransformation.None else PasswordVisualTransformation(), trailingIcon = { - IconButton(onClick = { passwordVisible = !passwordVisible }) { + IconButton(onClick = onPasswordVisibilityChange) { + Icon(imageVector = Icons.Default.Check, contentDescription = "Valider") } }, - shape = RoundedCornerShape(16.dp) // 🔹 Bords arrondis + shape = RoundedCornerShape(16.dp) ) } } @Composable -fun PassWdConfirmTextFieldSign(textpasswdResId : Int){ +fun PassWdConfirmTextFieldSign(textpasswdResId : Int,confirmPassword: String, onValueChange: (String) -> Unit, passwordVisible: Boolean, onPasswordVisibilityChange: () -> Unit){ val textpasswd = stringResource(id = textpasswdResId) - var passwd by remember { mutableStateOf("") } // Stocke la valeur du champ - var passwordVisible by remember { mutableStateOf(false) } // État pour afficher/masquer Column(modifier = Modifier.padding(top = 10.dp)) { OutlinedTextField( - value = passwd, - onValueChange = { passwd = it }, + value = confirmPassword, + onValueChange = onValueChange, label = { Text(textpasswd) }, modifier = Modifier .fillMaxWidth() @@ -159,31 +165,88 @@ fun PassWdConfirmTextFieldSign(textpasswdResId : Int){ keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Password), visualTransformation = if (passwordVisible) VisualTransformation.None else PasswordVisualTransformation(), trailingIcon = { - IconButton(onClick = { passwordVisible = !passwordVisible }) { + IconButton(onClick = onPasswordVisibilityChange) { + Icon(imageVector = Icons.Default.Check, contentDescription = "Valider") } }, - shape = RoundedCornerShape(16.dp) // 🔹 Bords arrondis + shape = RoundedCornerShape(16.dp) ) } } +// Validation de email +fun isValidEmail(email: String): Boolean { + val emailRegex = "[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}" + return email.matches(emailRegex.toRegex()) +} + +// Vérification mots de passe +fun arePasswordsMatching(password: String, confirmPassword: String): Boolean { + return password == confirmPassword +} @Composable -fun ConnexionButtonSign(titleResId : Int, size : Int, colorButton : Color, colorText : Color){ +fun ConnexionButtonSign( + titleResId: Int, + size: Int, + colorButton: Color, + colorText: Color, + username: String, + email: String, + password: String, + confirmPassword: String, + service: ServicesStub, + navController: NavController +) { val title = stringResource(id = titleResId) + var emailError by remember { mutableStateOf(false) } + var passwordError by remember { mutableStateOf(false) } + var usernameErrorEmpty by remember { mutableStateOf(false) } + var usernameErrorExist by remember { mutableStateOf(false) } + + Button( - onClick = { /* Action */ }, + onClick = { + emailError = !isValidEmail(email) + + passwordError = !arePasswordsMatching(password, confirmPassword) + + usernameErrorEmpty = username.isBlank() + + if (!emailError && !passwordError && !usernameErrorEmpty) { + usernameErrorExist = !service.CreateUser(username, email, password, "https://img.freepik.com/vecteurs-libre/personnage-magicien-malefique-fantaisie_1045-193.jpg?size=338&ext=jpg") + } + }, colors = ButtonDefaults.buttonColors(containerColor = colorButton), - modifier = Modifier - .fillMaxWidth(), + modifier = Modifier.fillMaxWidth(), ) { Text(title, fontSize = size.sp, color = colorText) } + + // Afficher erreurs + if (usernameErrorEmpty) { + ErrorMessageProfileComponent(R.string.ErrorUserEmptySignUp) + } + + if (usernameErrorExist) { + ErrorMessageProfileComponent(R.string.ErrorUserExistSignUp) + } + + if (emailError) { + ErrorMessageProfileComponent(R.string.ErrorEmailSignUp) + + } + if (passwordError) { + ErrorMessageProfileComponent(R.string.ErrorPasswordSignUp) + } + } + + @Composable -fun CreateAccountButtonSign(titleResId: Int, size: Int, color: Color, navController: NavController) { +fun ReturnLogin(titleResId: Int, size: Int, color: Color, navController: NavController) { val title = stringResource(id = titleResId) Text( text = title, diff --git a/What_The_Fantasy/app/src/main/res/values-fr/strings.xml b/What_The_Fantasy/app/src/main/res/values-fr/strings.xml index 9d55b61..899a998 100644 --- a/What_The_Fantasy/app/src/main/res/values-fr/strings.xml +++ b/What_The_Fantasy/app/src/main/res/values-fr/strings.xml @@ -16,6 +16,11 @@ Inscription Confirmer mot de passe* S\'inscrire + Email* + Email invalide + Les mots de passe ne correspondent pas + Le nom d\'utilisateur ne peut pas être vide + Le nom d\'utilisateur n\'est pas disponible //Page Profil Profil diff --git a/What_The_Fantasy/app/src/main/res/values/strings.xml b/What_The_Fantasy/app/src/main/res/values/strings.xml index c9ab3e1..4e02f70 100644 --- a/What_The_Fantasy/app/src/main/res/values/strings.xml +++ b/What_The_Fantasy/app/src/main/res/values/strings.xml @@ -15,6 +15,11 @@ Account creation Confirm your password* Create + Your email* + Invalid email + Passwords do not match + Username cannot be empty + Username is not available //Page Profil Profile From b93310671e5335d68a469dddcd09884501b50efb Mon Sep 17 00:00:00 2001 From: tomivt Date: Thu, 27 Feb 2025 03:33:48 +0100 Subject: [PATCH 09/32] UI QuizPage + Add Icons --- .../example/what_the_fantasy/MainActivity.kt | 1 - .../ui/navigations/AppNavigator.kt | 9 +- .../ui/screens/QuizEndPage.kt | 20 +-- .../what_the_fantasy/ui/screens/QuizPage.kt | 147 +++++++++++++----- .../app/src/main/res/drawable/like_icon.png | Bin 0 -> 19932 bytes .../src/main/res/drawable/profile_icon.png | Bin 0 -> 16875 bytes .../app/src/main/res/drawable/quiz_icon.png | Bin 0 -> 10876 bytes .../app/src/main/res/drawable/toggle.png | Bin 0 -> 10431 bytes .../app/src/main/res/drawable/wf_logo.png | Bin 0 -> 8339 bytes 9 files changed, 126 insertions(+), 51 deletions(-) create mode 100644 What_The_Fantasy/app/src/main/res/drawable/like_icon.png create mode 100644 What_The_Fantasy/app/src/main/res/drawable/profile_icon.png create mode 100644 What_The_Fantasy/app/src/main/res/drawable/quiz_icon.png create mode 100644 What_The_Fantasy/app/src/main/res/drawable/toggle.png create mode 100644 What_The_Fantasy/app/src/main/res/drawable/wf_logo.png diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/MainActivity.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/MainActivity.kt index 2c953cc..cbed7f2 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/MainActivity.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/MainActivity.kt @@ -13,7 +13,6 @@ class MainActivity : ComponentActivity() { enableEdgeToEdge() setContent { What_The_FantasyTheme { - AppNavigator() } } diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt index 4475a7f..f872ec4 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt @@ -58,13 +58,18 @@ fun AppNavigator() { QuizPage( navControllerQuizEnd = { idQuiz, pts -> navController.navigate(Destination.QuizEnd.createIdAndPts(idQuiz, pts)) - } + }, + navControllerQuizMenu = { navController.navigate(Destination.QuizMenu.route) } ) } composable(Destination.QuizEnd.route) { backStackEntry -> val idQuiz = backStackEntry.arguments?.getString("idQuiz")?.toInt() ?: 0 val pts = backStackEntry.arguments?.getString("pts")?.toInt() ?: 0 - QuizEndPage(idQuiz, pts) + QuizEndPage( + idQuiz, + pts, + navControllerQuizMenu = { navController.navigate(Destination.QuizMenu.route) } + ) } composable(Destination.Quote.route) { QuotePage() } composable(Destination.Search.route) { SearchPage() } diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt index 686a127..c66c04c 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt @@ -2,6 +2,7 @@ package com.example.what_the_fantasy.ui.screens import androidx.compose.foundation.Image import androidx.compose.foundation.background +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape @@ -31,10 +32,8 @@ val gradient = Brush.linearGradient( end = Offset(1000f, 0f) ) - - @Composable -fun QuizEndPage(idQuiz: Int, points: Int) { +fun QuizEndPage(idQuiz: Int, points: Int, navControllerQuizMenu: () -> Unit) { Column( modifier = Modifier.fillMaxSize().background(Color(0xFF100C1B)) ) { @@ -48,9 +47,6 @@ fun QuizEndPage(idQuiz: Int, points: Int) { horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically ) { - IconButton(onClick = { }) { - Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Retour", tint = Color.White) - } Image( painter = painterResource(id = R.drawable.quiz), contentDescription = "Profil", @@ -58,8 +54,7 @@ fun QuizEndPage(idQuiz: Int, points: Int) { ) Image( painter = painterResource(id = R.drawable.quiz), - contentDescription = "Profil", - modifier = Modifier.size(50.dp).background(Color.Yellow, CircleShape) + contentDescription = "Profil" ) } @@ -122,8 +117,7 @@ fun QuizEndPage(idQuiz: Int, points: Int) { // Bouton Quiz Suivant Image( painter = painterResource(id = R.drawable.quiz), - contentDescription = "Profil", - modifier = Modifier.size(50.dp).background(Color.Yellow, CircleShape) + contentDescription = "Profil" ) } @@ -148,9 +142,9 @@ fun QuizEndPage(idQuiz: Int, points: Int) { ) // Bouton WhatTheFantasy Image( - painter = painterResource(id = R.drawable.quiz), - contentDescription = "Bouton", - modifier = Modifier.size(50.dp).background(Color.Yellow, CircleShape) + painter = painterResource(R.drawable.wf_logo), + contentDescription = "Menu Button", + Modifier.clickable { navControllerQuizMenu() } ) // Bouton Quiz Image( diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt index b1d9dc7..721d37d 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt @@ -1,8 +1,10 @@ package com.example.what_the_fantasy.ui.screens +import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* +import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Text import androidx.compose.runtime.* @@ -11,12 +13,20 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import com.example.what_the_fantasy.R import com.example.what_the_fantasy.data.local.QuestionStub @Composable -fun QuizPage(navControllerQuizEnd: (Int, Int) -> Unit) { +fun QuizPage( + navControllerQuizEnd: (Int, Int) -> Unit, + navControllerQuizMenu: () -> Unit + ) { val questions = QuestionStub.allQuestions var idCurrentQuestion by remember { mutableIntStateOf(0) } var pts by remember { mutableIntStateOf(0) } @@ -41,56 +51,123 @@ fun QuizPage(navControllerQuizEnd: (Int, Int) -> Unit) { else navControllerQuizEnd(0, pts) // Retour menu } - Box( - modifier = Modifier - .fillMaxSize() - .background(Color(0xFF100C1B)) - .padding(16.dp) + Column ( + modifier = Modifier.fillMaxSize().background(Color(0xFF100C1B)) ) { + // Bandeau supérieur + Row( + modifier = Modifier + .fillMaxWidth() + .weight(0.1f) + //.background(Color(0xFF300052)) + .padding(20.dp), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Image( + painter = painterResource(id = R.drawable.profile_icon), + contentDescription = "Profil" + ) + Image( + painter = painterResource(id = R.drawable.toggle), + contentDescription = "Profil" + ) + } + + // Contenu princiapl Column( modifier = Modifier - .fillMaxSize(), + .weight(0.8f) + .fillMaxWidth() + .padding(horizontal = 50.dp, vertical = 20.dp), horizontalAlignment = Alignment.CenterHorizontally ) { val question = questions[idCurrentQuestion] - Column ( + Column( horizontalAlignment = Alignment.CenterHorizontally, ) { - Box( - modifier = Modifier.fillMaxWidth() + Text( + text = "▶ Quiz ◀", + color = Color.White, + style = TextStyle(fontSize = 25.sp, fontWeight = FontWeight.Bold, textAlign = TextAlign.Center) + ) + Column ( + modifier = Modifier + .background(brush = gradient, shape = RoundedCornerShape(20.dp)), + horizontalAlignment = Alignment.CenterHorizontally ) { - /*IconButton( - onClick = { navController.popBackStack() }, - modifier = Modifier.align(Alignment.TopStart) - ) { - Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Retour", tint = Color.White) - }*/ - } - Text("Question ${question.id}", color = Color.White, fontSize = 18.sp, modifier = Modifier.padding(top = 20.dp)) - Text("Points : $pts", color = Color.White, fontSize = 18.sp, modifier = Modifier.padding(top = 40.dp)) - Text(question.question, color = Color.White, fontSize = 22.sp, modifier = Modifier.padding(40.dp)) - } - Column ( - modifier = Modifier - .padding(top = 30.dp) - ) { - listOf(question.ansA, question.ansB, question.ansC, question.ansD).forEach { answer -> - Box( + Text( + "Question ${question.id}", + color = Color.White, + fontSize = 18.sp, + modifier = Modifier.padding(top = 20.dp), + style = TextStyle( + fontSize = 25.sp, + fontWeight = FontWeight.Bold, + textAlign = TextAlign.Center + ) + ) + Text( + question.question, + color = Color.White, + fontSize = 22.sp, + modifier = Modifier.padding(40.dp) + ) + Column( modifier = Modifier - .width(220.dp) - .height(50.dp) - .background(brush = gradient, shape = RoundedCornerShape(16.dp)) - .clickable { onAnswerSelected(answer) } - .padding(horizontal = 8.dp), - contentAlignment = Alignment.Center + .padding(top = 30.dp) ) { - Text(answer, color = Color.White, fontSize = 18.sp) + listOf( + question.ansA, + question.ansB, + question.ansC, + question.ansD + ).forEach { answer -> + Box( + modifier = Modifier + .width(220.dp) + .height(50.dp) + .background(Color.White, shape = RoundedCornerShape(16.dp)) + .clickable { onAnswerSelected(answer) } + .padding(horizontal = 8.dp), + contentAlignment = Alignment.Center + ) { + Text(answer, color = Color.Black, fontSize = 18.sp) + } + Spacer(modifier = Modifier.height(60.dp)) + } } - Spacer(modifier = Modifier.height(60.dp)) } } + } + // Bandeau inférieur + Row( + modifier = Modifier + .fillMaxWidth() + .weight(0.1f) + .background(Color(0xFF300052)) + .padding(20.dp), + horizontalArrangement = Arrangement.SpaceAround, + verticalAlignment = Alignment.CenterVertically + ) { + // Bouton Likes + Image( + painter = painterResource(id = R.drawable.like_icon), + contentDescription = "Bouton" + ) + // Bouton WhatTheFantasy + Image( + painter = painterResource(R.drawable.wf_logo), + contentDescription = "Menu Button", + Modifier.clickable { navControllerQuizMenu() } + ) + // Bouton Quiz + Image( + painter = painterResource(id = R.drawable.quiz_icon), + contentDescription = "Bouton" + ) } } } \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/res/drawable/like_icon.png b/What_The_Fantasy/app/src/main/res/drawable/like_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6d62a6cf2999c0d640e96085a9ea5c879bc7e4ec GIT binary patch literal 19932 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 pe<-Mg`#{p$|N4;a=Uu&0_&suium{txdoaO400 literal 0 HcmV?d00001 diff --git a/What_The_Fantasy/app/src/main/res/drawable/wf_logo.png b/What_The_Fantasy/app/src/main/res/drawable/wf_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7388be92954e0d44f6b46f3455a0dbd72b16cb4e GIT binary patch literal 8339 zcmdUVRa8`O^!60Y&_g$jl2XzkpaT*=2?3Fk?ncs~nL$cQ1(fdY?ix@DX+cV2=q_nN z_;7tU-&)`0|LT8n&b!ump7T6=@3q%C>y3As&y`6C83+LY0Lioe6kgno-Ty8a{@tB% ziCO4w0D8PomIqV}Gi?C?2*5K1xtHE1d&UF_d^$ciHU+JPt+wm@f0jYt!Ni0`Kz5~E z?kFOjIOu<0ISv70oaA`alt#;Mxg8V&+9GT|>X3hJLgwT&0mkg2wXml+kX`gUg@6IR z`ElcU=b)cDUL^-}+Z9_CEsX^Wx0xcg3#k=pekdP2?H&6{m_HTf}6<{IY zRrD_GKC~MM4DLg_X7vJR$Q39;z#zy+;L<+?+>Jqla~R$U!k`Lb6!dV?2nTjy1QYz{ ze^y9I_&RzTcAu;pSWT{g9|E>uiy($Uzbe81(P9vHG)+lFPfbLKD>B;ppB~-7ogPr= zv*JH8U(`RcKFuAuY!&StqrejaUjDxpQ~$&fCT#!SxdZOl|1XfWhHlbO6uf)*nEId7 z)yseEeeHkjJK!Jt{{xUzQ1)0v%{`_MlK=8VF5hM52ZZtz$@qin*_d!R{KMy3F=xTg z67?YKXmxd*8B}rxm_cM_3J?L@kYU{bfmti@cge~+W`H?xW6ZcFPFG>HGT2-5t7b0i2v%;$n%Z)}D_@1*;uF z>9^U#;&}e01lMrvKDo*B4vKj2L?$y1!4S)A)=64b3|4EzyaHZavb&OPPA^^IeN2f+%z0`53ZYD+*@7A$Q>*DoQo-ZlO z<5Og*m%9Ly-*7WQ;EP$R!y_r&XJaJdnNUY-ifX|+Iz|kaC4Lwp?#hSm^?r2YG{<-u zJhFIAK#6hPNJsq%y5E!u!Wq5;Wxp!lUzuPuWOUx(0FVL%=~0JID;zzlw6Wj#aXlgX z%~Nv)(cN17l9hHK4QQ2pG;JZF+X4IG7y)iT5qITUVCz0W)t4uoFN@8lA`&c-mZ(qb&gJ0oO&xk|94J z%U9?<3nFmqFP!dr38ZwR2F~)li9LTx%ZbW~0a#R?+`N5oVeV!70atnuFs4Ym)J^n| z_%`{r*^Un}s6Ha=K4TF0I`^mdx}efk%k274Y8UMhbR;OgsPSl{@X6oeR+ zhhiauwq}y+y{Zk)>q~{=LJih&NG#MfqA~aruBA*59*X&Oa0|MyA!rJqSgV}W>eRE% z;t-qUDQMu!J{1RqleQE-)Vv<@SxUP&mS5;ii^>aQ_R0K0_GHd@@6vDJGyinc#|!$H zCPr61*w`mPQP+tUpQX=yix*kZo3J<67`=xA6=YOa-j<=(Y1VXj_H( zc;2naazj0SO^F3>wx*P@lbyV@3R8nI@DG!nEx8E#z(01HI!$U~Xg*%{``=$(p;$_J1 zA1K+w+G8^l^1-B8mkgsQfXuMA<=ZDpAoDL_B#i5*y^glf;bTuS$>Tv0W1Hj9ANM;T zV`W;&E&$hp!o>G~FDME!rjR@38II1lzy4nGjVoIJNlt!f71%au{H*o3HP$yzfbR4g zg-W>i=*0(#HZn; zmD%j-Y_AxExJC-6nT?jozuqsgfBkL%KJPU?KK|ZGENvj|xnq{Y(oWeI8LAtRYn|hQ zR2Ps=H0;+#F9$9GA4|l9|P!T1Jf5~e>;y_{~Dm2!(AQE=Sol?A% zT{%r&AapusUDvdHa+%kME3IhxUJq8&hR}Tmx(a48o6At*sdWs?rLu%X{t4*dJ$2|P z-A-g#GN>4O`c@qraqtqelIYuWDwvatt1pRJFD-Z$?J*6Q+}KtLRJ#f2R$`bdf72b&#RS6Q=PuiEUWgBEC6}9ao=g&6eQlImOH$ zKiuSq8atJY=!iB+5JT(_)`3ItJ&-_NU?_w)J~X}f zfqI-k$Sv~?^JU(p)>p`xg;004Bov>x`~mJ8Kl;rG;!jkC#!bKto>7`h`{`u%L0h9K z7Vo87=S?>lWO*N0Ttfbq`F7gtT*!ck{_BTZ?eL~h`n2T=?9ajcbZJxp>0CW2`|M{UnWrbt z0OcN`&jh5PC1#V)rmkd!BzpILnPnZRwM#3^BA#s?e`$GmTWRuJ_t170NYz(|0_r5) zpOEq0cr2uFXg3Zq6zP4=X26{S_SENo!|$VZ?w85Ku=SW97%uAD3XV?@#=}?t5aP?4 zJ1_U5b&oOkZ)~q#6Pa?O#pJpU|~@ zzp~Ru#t;|=L2;oxbo)&!q$|Ak-oz=!OTvIkCIpo!^bmTpF*l=D^0dVmgUQew#N>wz zl3O_VQjNv;mZ#hIR}iHhBkmMAt`cZ}=nQ|e(m~?B<%14s3TfR)(3ZdS$9D;d6J$Dw z!c3K`LWRO5E;FsWfLZ972LP@|U*@~YnysI=m*y<^Jv24^uNSB;7_+rzNCEGsp1<$!>tF6y zWz8&%iB`z=xc%7`8uA-eAM|vcQpzRLvEzVp)2bYPlA{I5rS3MRFn0yao=i-5d^Rk9 zAF561#E=o`tB^<+Khli19nm_Y{I{=J9q!?pq7xN0=n)1x(`Y$BAu9WWeG?Vo4l;^j z04_j8G_ryLwh(2?BH&UbbuXox=nv&grw!gG%-?NnXZQ-6_}dq30L&Q)O1km-hxmtD z7)V`_VJCcX9)Flsbm1c!TQ;<|X024GpLOtq>&fLaM*<%eSo*vmozyN-w%?c4t3aN% z?O6ti-dwF1eQ!^PiID2nr|q=7Zlx=9+{+iCzD%Q-tX31v=eK>l4`Zx;{)fcPb7DH} z!Nkv-tUSD4_y!70FDfBFZ!-KY_K z!+0I(%jx_rUgNRBkT`BF0mvyz8adR|$V?Ags6aj>jz2Z3vF5e&lqaMNb-*jH)O|nK zUiTFp=_OIp?|Gi@Q}b8rZ^)$z>SkG6A-vVh z2$iaWX9zDHA=`w2hd=?x4z*6+g0EF$*DBGYrx@#^{H3#D3*X@@wjO!>7^&FG2I!0XfSaL z9(}`|pf#7F0DwypV0rJ6#U!6`A)iPcAx=N;6Hd{SCuFBU$~1);t&!)Lkb*U>Xz2Q) zk30m7(&pWNk^Iv>WwY4=)2uuwWy@`BcqvAZHjclrW9l^UT+^s?cTkS))`j`tJND)@ zV|d3m+G&lRyp2kYVLNc+oz}+e`SGzt5cgalf8A{(kUwyuS9mM3tFNPOwaJo^7ABf9 z@;dxP*HB3$hGP=y_jN(uiKf(CFeztXLPqD`4xO8j3w4s~&R#oLxL#PY->JaE9rM*;ge5pTV)>)GXmMl{|CLj* zGQ-piJ&T8~U>)IZEyQ(j7i+^IU+R|rqH^!`+{}~Tjp4jUNrCFAgY5Pt?P`w~f@rik znpSEh1b($aP3qk6Ma1E4XMtsD7VCwo;%&+)ScY2lnJsx`Bb`o)1~#<~HGAS~bB;pO zz2}dvLR+kS+x!b`23PtPvJTvpZLidnLS{_j9&De0+^TV)9-FZMl9nFk|0s|+-NQ-o zL!}@=aZi^a!hx5O8~%$hQkCcLv@c)Aa_*PGicShWCb@ zUNnhHDb4NApb;g7yiXV97HJsIFgCqwNd_xIHJC?nUkgt1^U&C()6@Ct>@PgUG)C6; zjS6@=(}|h$Y-b|nE_S>0G%HoyT#=jNB(K_k;mSELdiQ@}9;LFgz~nT|C5>-@9X^*n@Hqh6^vxJ`1QSkd z@~Acdkz5#Q-id6BXfqlKmwOy1M+zw$C&W`z7q96}Tkk6b4HoFWQVh+7uJ+F-e8}8k zcOaB(rCu(L5&awy`-2bteJC0A41|d`Pnh9g{HVe48Ho^FTx|iW(!|d#;DTJbJ@Wb` z+xvf!=S2S(`=sbq?MKoattdLIg-H0^KjWWNvSKc}g)zeNLm|~1CZ?)V*6SuT&)r3` zhwY6%$ebr)?lD)lGW%>dyuO$GVzK+}SdpTPuv6a4u(JDH&k$AmA&(jz{b!RzW5~ZN zJ(n8_v7wkYjn-qGc!X$yoR;n~uKwpn0D{_hn{WRUIdCSp8hKiW;O0KAmD# zR48D?8G?;m5rU~dn*T~nC_GN)ys-sKVqflMx!iL`*cp8&i$cKd1a~6TgJ!O$I2c{D zhe&(8@wL13ELp2gACnmlIvpglW6;GGM}Kr{FF`@eYMXQBTVtDxgWZ;)FR1o5d+1Hp zf|43;%KO7DnE9n0HzT+q)FIm$HFuVHMg5D;@jd6K zFCW;MzY;S3;2BeqCG4ukj0;}=Ewne!6Z`VV=y{ZV&hyce-tF7TU2d5MiL<45ZatqS z#O@}tFN${!OMfQqu2foRPxr+_d)ikneREdNb%^Io_Eu_*rS z^wIFpXLZIZhDL$Y+ahhimb1Byt*gR>?D?GKDWX>kPi+S8+|$v|J8WDwcj4jC0S6(Z zGAXmZF*>5fs>Qh(1X(|FRn}}>7|Z`N(&6~fIoHIJRiQf} z)4uMkjF$b;GubzJSL`H^Khe#Et@T*;@drRcc$2i7a#l7CXMrrVM0xfMgAe;?PpyrG zzRJ!}vw!c*Ui|KeLp__SU9oN|r_D-eKV^aA9oQU1i9(I~ggjZT3pnO+OxR08W?^Uq zE-lG8OIRQgs`l@-z>syx>W}WMI+{NEBw~{az*Kpnr1 zV#S5;S(W0+lS`J(@ZNW4+)B}u6-AmQZ~ok#j>0AnEs!?}%=GcAsHlh$d{7JAm8O*} zw&ifk%)bo^447&Tw%YMMUmmb>hx}yu=U^H>K_cX z9N_#z>Pu*j+UcI=#A6E|;OcY_oFdg;EF-y}YXlWHw+((5OjK)pGX}uSuUvmwx#$>t zVv*`q+HYr!pq=w44IL(;WBxdMVN$k%L62)$1>yPg$ z<6CjPwRZW)!_G)W`lEWlj2x01oVwEOBkW5Y5*r zwpq!g>nfbjRXQJM>M1!$mxP!6+@@AlRqdj;`HTv=YFki(fNIsG9?0!~d@z*sKz@#ITC$I+SMNU_gn(hlH4<-t7UavAn2Ot7`B-&Z>WUcQP(HN=px z9M5OEfl6Rjp~ooTDh~_aTFWlW$e$h=?}eG_#j@oZqk^+P?zN z5`U2QhgDGxO={PdLG5K^Qt_ZsjlLoAb3supIO}?i1zT0e=lN-F{{v!_iC{jBn-d{? zdL_Q3yYbS1+}l9JQziBpy2W?Exe+6CObfl81IJpzwKlg{ta$?$o<8N{SvKcudCDvT zjsA)el$LIFHaB0Azg1Vaea?e4Gq~p$S))T3qt)Q!*>80}6$DXg^*I#N=rlj257?0b zPjkcr){gP17d00PZHJzmqo+hv6QMQ4l8fl=Q8AO+Mlm3$L+>u=Qr$(t&bqHgL5X}| zj3T0!MpJSWb8JuiD*h! z^5{p00drS{XMgXa)Xr!&tM2G~%3lKtS>Y18ycVBzQn9vHBZMa<^f52(gAU(7o3N~j zThnsE`AJ5u-U7_6VO6SUDY<}ZRSN#l>??Imitu4=>yrATB>YHVIj??{5oqQCL#7^1 z(#|}X`MzB`4eLzKs4!}4Gg^5NweK@3?tgOEb1&q#^7@OHKb}tBXJpow(w3+EYpmVl z{A2U3J8FM!r_y}>?Clg!jo?0oaVL~6qPA7#zSqBFm-dRILd@wUCHvSrx?Q%BGPP(K z3p=y(DvFemd*7gA=bjB1ukRZWVEY| zh1*r_e{|2h3d8s3^dn71sxKp}n3XkAA%c|Z6D*sY>Xr#V(swc++FTdutDis0&=}PA zIeT>%TLasGigaSfJF)UWgPo?Z0O>q;#3bbjLL0wkuVFl&U zJKy)-G_F@v>1i)Z%Uc)x&Yrc1asFcboe=I+thkDCw|RwdEr_xDRo_Z-ZI;5F?u6SgcRg=EqPfC+6;1`NK2`paFXul{5t3}yYs*ekuWu6WV%>uw-*gb zcd&Zob&nLDG}r@aaFsVq`B7A@tuG00avk?Sd)0(mMi!N2{{7GSyxU&iepZv2N zSxb^GElu2v!}5fj>eOP&SlP6GL*=)c7uRK!j*5P)aw@_%=jNEJZV(P)X zspckhS9C3JL+0TfJXk@2<}Fi9`eC-qz?8^tEKjS31`~{$%0&C^vCHizb<~&PyMSZW zEV=wEe|_2~n2*Kn+HvK%BJdCi&&#vBwD*jKlTixVq3axZz_2-;wC942-r>nn|A6rZJm=~(X{z+r+kT9doV#ad+=FJzEVksPlfD8#c za!Iaryt$)!ofbP}Jxa^T0I|;J`zCvYs1UwjOanlpO^fvWY-Vu9(I;zh?MMMxaUc2u z4}_KiWC9LP1Y3(a$7}?Dt~rms^w3$u{E~Snx!w12oa?Pp3mZO`#}t_EK7btR=OHOmd`xlh zazHGgDARu7ξR@^~kE;ogKyh8><(pWPFunVN4g3S7>4?)in-#lWk*3PBP$cWlf8 zbw+3#0XA^kOiDbctd2E~g*UVJ$UQuVF=2ZI{iPiRx}XDOxM78eV)}sENZes0zyuGS zTrATd8VAD`t~xI}+04bZIj{;x4- zCuY7DJiQz!?ojo%N9DsNdij0)IXm()h)}k-|MvJCZn4Z{36^P3aB;{Mk}{)!-Dr~S z&vMdwaUF(KDccX8)1B_@o}C#3ro8lSd0YR8=}ikBrPWflhVLE`V|x9}SWXR|`M(c4 zECjYy{>qG4OOz*Y!{WoQvu`VCf7@mUxo*CZKM>m$N1+_OpWvYh>=w7hzwHoT%F|q+5PYLIw|>zP6@>-OzdC&M<)3<5xh@6B$w%eEH~E#doPYNGj9Jr`?$mTbBmx=H%hk-YaR;sX2d|wjyCKo=_Zsdx!%_%j-z8*V=i3SzaE~Q(wIt00 ziT-d*@Odh#7YLM>dEBofwQ&b+Q1VsMzQ1$z_Kz!dAHIWzx%5pQ{;vt>7fd(o?qGo2 gzq0`UgK8Zbf~be>7^#wE@5BJl6rU?p$eRWKADs=T Date: Thu, 27 Feb 2025 13:36:17 +0100 Subject: [PATCH 10/32] Les pages se partagent les services --- .../what_the_fantasy/data/local/UserStub.kt | 121 +++++------------- .../data/services/IServices.kt | 8 +- .../data/services/ServicesAPI.kt | 12 +- .../data/services/ServicesStub.kt | 28 +++- .../ui/navigations/AppNavigator.kt | 15 ++- .../what_the_fantasy/ui/screens/LoginPage.kt | 8 +- .../what_the_fantasy/ui/screens/ProfilPage.kt | 8 +- .../what_the_fantasy/ui/screens/SignUpPage.kt | 11 +- 8 files changed, 94 insertions(+), 117 deletions(-) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/local/UserStub.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/local/UserStub.kt index 552ad3e..e166cd4 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/local/UserStub.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/local/UserStub.kt @@ -3,95 +3,38 @@ package com.example.what_the_fantasy.data.local import com.example.what_the_fantasy.data.model.User object UserStub { - val user1 = User( - id = 1, - username = "Aragorn123", - email = "aragorn@example.com", - date = "2022-01-15", - imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-guerrier-fantaisie_1045-185.jpg?size=338&ext=jpg", - password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 - - val user2 = User( - id = 2, - username = "Legolas456", - email = "legolas@example.com", - date = "2021-05-23", - imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-elfe-fantaisie_1045-186.jpg?size=338&ext=jpg", - password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 - - val user3 = User( - id = 3, - username = "Gandalf789", - email = "gandalf@example.com", - date = "2020-09-10", - imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-magicien-fantaisie_1045-187.jpg?size=338&ext=jpg", - password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 - - val user4 = User( - id = 4, - username = "FrodoBaggins", - email = "frodo@example.com", - date = "2023-03-18", - imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-hobbit-fantaisie_1045-188.jpg?size=338&ext=jpg", - password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 - - val user5 = User( - id = 5, - username = "Gimli999", - email = "gimli@example.com", - date = "2022-07-04", - imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-nain-fantaisie_1045-189.jpg?size=338&ext=jpg", - password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 - - val user6 = User( - id = 6, - username = "Galadriel321", - email = "galadriel@example.com", - date = "2021-11-30", - imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-elfe-femme-fantaisie_1045-190.jpg?size=338&ext=jpg", - password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 - - val user7 = User( - id = 7, - username = "Boromir654", - email = "boromir@example.com", - date = "2023-06-22", - imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-guerrier-homme-fantaisie_1045-191.jpg?size=338&ext=jpg", - password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 - - val user8 = User( - id = 8, - username = "Eowyn777", - email = "eowyn@example.com", - date = "2022-04-11", - imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-guerriere-femme-fantaisie_1045-192.jpg?size=338&ext=jpg", - password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 - - val user9 = User( - id = 9, - username = "Saruman888", - email = "saruman@example.com", - date = "2021-08-15", - imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-magicien-malefique-fantaisie_1045-193.jpg?size=338&ext=jpg", - password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 - - val user10 = User( - id = 10, - username = "Faramir222", - email = "faramir@example.com", - date = "2023-02-08", - imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-guerrier-homme-fantaisie_1045-194.jpg?size=338&ext=jpg", - password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 + //LE MOT DE PASSE POUR TOUS LES UTILISATEURS EST : 1234 + val users: MutableList = mutableListOf( + User(1, "Aragorn123", "aragorn@example.com", "2022-01-15", "https://img.freepik.com/vecteurs-libre/personnage-guerrier-fantaisie_1045-185.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"), //1234 + User(2, "Legolas456", "legolas@example.com", "2021-05-23", "https://img.freepik.com/vecteurs-libre/personnage-elfe-fantaisie_1045-186.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"),//1234 + User(3, "Gandalf789", "gandalf@example.com", "2020-09-10", "https://img.freepik.com/vecteurs-libre/personnage-magicien-fantaisie_1045-187.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"),//1234 + User(4, "FrodoBaggins", "frodo@example.com", "2023-03-18", "https://img.freepik.com/vecteurs-libre/personnage-hobbit-fantaisie_1045-188.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"),//1234 + User(5, "Gimli999", "gimli@example.com", "2022-07-04", "https://img.freepik.com/vecteurs-libre/personnage-nain-fantaisie_1045-189.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"),//1234 + User(6, "Galadriel321", "galadriel@example.com", "2021-11-30", "https://img.freepik.com/vecteurs-libre/personnage-elfe-femme-fantaisie_1045-190.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"),//1234 + User(7, "Boromir654", "boromir@example.com", "2023-06-22", "https://img.freepik.com/vecteurs-libre/personnage-guerrier-homme-fantaisie_1045-191.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"),//1234 + User(8, "Eowyn777", "eowyn@example.com", "2022-04-11", "https://img.freepik.com/vecteurs-libre/personnage-guerriere-femme-fantaisie_1045-192.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"),//1234 + User(9, "Saruman888", "saruman@example.com", "2021-08-15", "https://img.freepik.com/vecteurs-libre/personnage-magicien-malefique-fantaisie_1045-193.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"),//1234 + User(10, "Faramir222", "faramir@example.com", "2023-02-08", "https://img.freepik.com/vecteurs-libre/personnage-guerrier-homme-fantaisie_1045-194.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"),//1234 + User(11, "dev", "testeur@example.com", "2023-02-08", "https://img.freepik.com/vecteurs-libre/personnage-guerrier-homme-fantaisie_1045-194.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4")//1234 + ) - val user11 = User( - id = 10, - username = "dev", - email = "testeur@example.com", - date = "2023-02-08", - imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-guerrier-homme-fantaisie_1045-194.jpg?size=338&ext=jpg", - password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 + fun addUser(user: User) { + users.add(user) + } + +// +// // Modifier un utilisateur +// fun updateUser(id: Int, updatedUser: User) { +// val index = users.indexOfFirst { it.id == id } +// if (index != -1) { +// users[index] = updatedUser +// } +// } +// +// // Supprimer un utilisateur +// fun removeUser(id: Int) { +// users.removeAll { it.id == id } +// } +// - val allUsers: List = listOf( - user1, user2, user3, user4, user5, user6, user7, user8, user9, user10, user11 - ) } \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/IServices.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/IServices.kt index 2b8febf..d48fd2f 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/IServices.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/IServices.kt @@ -1,13 +1,19 @@ package com.example.what_the_fantasy.data.services +import com.example.what_the_fantasy.data.local.UserStub.users +import com.example.what_the_fantasy.data.model.User + interface IServices { fun EditUsername(username : String) fun EditEmail(email : String) fun EditPasswd(passwd : String, passwdValid : String) fun EditImage(imageURL : String) - fun CreateUser(username : String, email : String, passwd : String, imageURL: String) : Boolean + fun CreateUser(username : String, email : String, passwd : String, imageURL: String, services : IServices) : Boolean fun getFavorite(username: String) + fun getAllUsers(): List + + fun getUserById(id: Int): User? fun SearchQuote(quote : String) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesAPI.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesAPI.kt index fdbcb49..5ac90ee 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesAPI.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesAPI.kt @@ -1,5 +1,7 @@ package com.example.what_the_fantasy.data.services +import com.example.what_the_fantasy.data.model.User + class ServicesAPI : IServices { override fun EditUsername(username: String) { TODO("Not yet implemented") @@ -17,7 +19,7 @@ class ServicesAPI : IServices { TODO("Not yet implemented") } - override fun CreateUser(username: String, email: String, passwd: String, imageURL: String) : Boolean { + override fun CreateUser(username: String, email: String, passwd: String, imageURL: String, services: IServices) : Boolean { TODO("Not yet implemented") } @@ -28,4 +30,12 @@ class ServicesAPI : IServices { override fun getFavorite(username: String) { TODO("Not yet implemented") } + + override fun getAllUsers(): List { + TODO("Not yet implemented") + } + + override fun getUserById(id: Int): User? { + TODO("Not yet implemented") + } } \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt index dc4519f..d6cbfe3 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt @@ -3,6 +3,7 @@ package com.example.what_the_fantasy.data.services import android.annotation.SuppressLint import android.util.Log import com.example.what_the_fantasy.data.local.UserStub +import com.example.what_the_fantasy.data.local.UserStub.users import com.example.what_the_fantasy.data.model.User import com.example.what_the_fantasy.ui.components.hashPassword import java.time.LocalDate @@ -24,22 +25,26 @@ class ServicesStub : IServices { TODO("Not yet implemented") } - override fun CreateUser(username: String, email: String, passwd: String, imageURL: String) : Boolean { + override fun CreateUser(username: String, email: String, passwd: String, imageURL: String, services : IServices) : Boolean { val date =dateDuJour() val passwordhash = hashPassword(passwd) //Check si user existe déjà - val users = UserStub.allUsers - for (user in users) { + val userStub = services.getAllUsers() + val nbUser = userStub.size + for (user in userStub) { if (user.username == username) { return false } } - val user = User(100,username, email, imageURL, date, passwordhash) - //A ajouter au stub - Log.e("CreateUser", "User created: ${user.username} => ${user.password}") - return true + val user = User(nbUser+1,username, email, imageURL, date, passwordhash) + users.add(user)//ajout au stub + //Afficher tous les users + for(user in userStub){ + Log.e("CreateUser", "User created: ${user.username} => ${user.password}") + } + return true } @SuppressLint("NewApi") @@ -47,6 +52,15 @@ class ServicesStub : IServices { val date = LocalDate.now() return date.toString() } + + + // Récupérer tous les utilisateurs + override fun getAllUsers(): List = users + + override fun getUserById(id: Int): User? { + return (users.find { it.id == id+1 }) + } + override fun SearchQuote(quote: String) { TODO("Not yet implemented") } diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt index d7c38e5..bda1463 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt @@ -4,6 +4,7 @@ import androidx.compose.runtime.Composable import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController +import com.example.what_the_fantasy.data.services.ServicesStub import com.example.what_the_fantasy.ui.screens.AccueilPage import com.example.what_the_fantasy.ui.screens.FavoritePage import com.example.what_the_fantasy.ui.screens.LoginPage @@ -33,28 +34,28 @@ sealed class Destination(val route: String) { @Composable fun AppNavigator() { val navController = rememberNavController() - + val services = ServicesStub() // A changer si l'on veut passer au service API NavHost(navController, startDestination = Destination.Login.route) { composable(Destination.Login.route) { LoginPage( navControllerSignUp = { navController.navigate(Destination.SignUp.route) }, navControllerProfil = { userIndex -> navController.navigate(Destination.Profil.createRoute(userIndex)) // Passe l'index à Profil - } + }, + services ) } composable(Destination.Accueil.route) { AccueilPage() } composable(Destination.Favorite.route) { FavoritePage() } - composable(Destination.Profil.route) { backStackEntry -> + composable(Destination.Profil.route) { // Récupère l'index passé dans la route - val userIndex = backStackEntry.arguments?.getString("userIndex")?.toInt() ?: -1 - ProfilPage(index = userIndex, navController = navController) + val userIndex = it.arguments?.getString("userIndex")?.toInt() ?: -1 + ProfilPage(index = userIndex, navController = navController, services) } composable(Destination.Quiz.route) { QuizPage(navController) } composable(Destination.Quote.route) { QuotePage() } composable(Destination.Search.route) { SearchPage() } - composable(Destination.SignUp.route) { SignUpPage(navController) } + composable(Destination.SignUp.route) { SignUpPage(navController, services) } composable(Destination.SubmitQuote.route) { SubmitQuotePage() } } } - diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt index 9aec7bd..a824491 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt @@ -39,6 +39,8 @@ import androidx.navigation.compose.composable import com.example.what_the_fantasy.R import com.example.what_the_fantasy.data.local.UserStub import com.example.what_the_fantasy.data.model.User +import com.example.what_the_fantasy.data.services.IServices +import com.example.what_the_fantasy.data.services.ServicesStub import com.example.what_the_fantasy.ui.components.SpaceHeightComponent import com.example.what_the_fantasy.ui.components.TitlePageComponent import com.example.what_the_fantasy.ui.components.hashPassword @@ -47,10 +49,8 @@ import com.example.what_the_fantasy.ui.theme.gradienBox import java.security.MessageDigest @Composable -fun LoginPage(navControllerSignUp: () -> Unit, navControllerProfil: (Int) -> Unit) { - - val users = UserStub.allUsers; - +fun LoginPage(navControllerSignUp: () -> Unit, navControllerProfil: (Int) -> Unit, services : IServices) { + val users = services.getAllUsers() Box( modifier = Modifier diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt index 98e7838..c8ee9aa 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt @@ -61,6 +61,9 @@ import coil.compose.AsyncImage import com.example.what_the_fantasy.R import com.example.what_the_fantasy.data.local.QuestionStub import com.example.what_the_fantasy.data.local.UserStub +//import com.example.what_the_fantasy.data.local.UserStub.users +import com.example.what_the_fantasy.data.services.IServices +import com.example.what_the_fantasy.data.services.ServicesStub import com.example.what_the_fantasy.ui.components.ErrorMessageProfileComponent import com.example.what_the_fantasy.ui.components.SpaceHeightComponent import com.example.what_the_fantasy.ui.components.TitlePageComponent @@ -68,10 +71,9 @@ import com.example.what_the_fantasy.ui.theme.What_The_FantasyTheme import com.example.what_the_fantasy.ui.theme.gradienBox @Composable -fun ProfilPage(index: Int, navController: NavController) { +fun ProfilPage(index: Int, navController: NavController, services: IServices) { - val userList = UserStub.allUsers - val user = userList[index] + val user = services.getUserById(index) ?: return Box( modifier = Modifier diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SignUpPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SignUpPage.kt index d344889..48c21b8 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SignUpPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SignUpPage.kt @@ -43,6 +43,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.navigation.NavController import com.example.what_the_fantasy.R +import com.example.what_the_fantasy.data.services.IServices import com.example.what_the_fantasy.ui.components.SpaceHeightComponent import com.example.what_the_fantasy.ui.components.TitlePageComponent import com.example.what_the_fantasy.ui.theme.What_The_FantasyTheme @@ -52,13 +53,13 @@ import com.example.what_the_fantasy.data.services.ServicesStub import com.example.what_the_fantasy.ui.components.ErrorMessageProfileComponent @Composable -fun SignUpPage(navController: NavController) { +fun SignUpPage(navController: NavController, services : IServices) { var username by remember { mutableStateOf("") } var email by remember { mutableStateOf("") } var password by remember { mutableStateOf("") } var confirmPassword by remember { mutableStateOf("") } var passwordVisible by remember { mutableStateOf(false) } - val servicesStub = ServicesStub() + //val servicesStub = ServicesStub() Box( modifier = Modifier @@ -82,7 +83,7 @@ fun SignUpPage(navController: NavController) { PassWdTextFieldSign(R.string.PasswdLogin,password, onValueChange = { password = it },passwordVisible,onPasswordVisibilityChange = { passwordVisible = !passwordVisible }) PassWdConfirmTextFieldSign(R.string.ConfirmPassWdSignUp,confirmPassword,onValueChange = { confirmPassword = it },passwordVisible,onPasswordVisibilityChange = { passwordVisible = !passwordVisible }) SpaceHeightComponent(16) - ConnexionButtonSign(R.string.ButtonSignUp,18, Color.White, Color.Black, username, email, password, confirmPassword, servicesStub, navController = navController) + ConnexionButtonSign(R.string.ButtonSignUp,18, Color.White, Color.Black, username, email, password, confirmPassword, services, navController = navController) SpaceHeightComponent(16) ReturnLogin(R.string.ButtonLogin,12, Color.White, navController = navController) @@ -196,7 +197,7 @@ fun ConnexionButtonSign( email: String, password: String, confirmPassword: String, - service: ServicesStub, + service: IServices, navController: NavController ) { val title = stringResource(id = titleResId) @@ -215,7 +216,7 @@ fun ConnexionButtonSign( usernameErrorEmpty = username.isBlank() if (!emailError && !passwordError && !usernameErrorEmpty) { - usernameErrorExist = !service.CreateUser(username, email, password, "https://img.freepik.com/vecteurs-libre/personnage-magicien-malefique-fantaisie_1045-193.jpg?size=338&ext=jpg") + usernameErrorExist = !service.CreateUser(username, email, password, "https://img.freepik.com/vecteurs-libre/personnage-magicien-malefique-fantaisie_1045-193.jpg?size=338&ext=jpg", service) } }, colors = ButtonDefaults.buttonColors(containerColor = colorButton), From 6a639eb6d38a99598f2d0723068775ce104bfdf5 Mon Sep 17 00:00:00 2001 From: Leni BEAULATON Date: Thu, 27 Feb 2025 15:09:20 +0100 Subject: [PATCH 11/32] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'README.md'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6210e70..b0bfd5d 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,42 @@ -# WF-Android +# Projet Android What the Fantasy +# Description +L'application mobile **What the Fantasy** est une application pour android permettant aux utilisateurs de découvrir des citations célèbres du monde de la fantasy. En plus de pouvoir lire et apprécier les citations, les utilisateurs peuvent créer un compte pour interagir avec elles en les likant, en les commentant, et en participant à des quiz à thème ou aléatoires. + +### Fonctionnalités principales + +- **Découverte de citations** : Parcourez une large sélection de citations tirées de l'univers de la fantasy. +- **Interaction avec les citations** : Les utilisateurs connectés peuvent **liker** et **commenter** les citations. +- **Création de compte utilisateur** : Inscription et connexion des utilisateurs pour accéder à des fonctionnalités supplémentaires. +- **Quiz interactifs** : Les utilisateurs peuvent participer à des quiz à thème (par exemple, quiz sur les personnages de la fantasy) ou un quiz aléatoire pour deviner qui a dit une citation parmi une liste d'auteurs célèbres. + +## Prérequis + +Avant d'exécuter l'application sur votre android, vous devez avoir installé les éléments suivants sur votre machine : + +- **Android Studio** : L'IDE officiel des applications Android + - [Installation d'Android Studio](https://developer.android.com/studio?hl=fr) + + +## Installation +### 1. Cloner le dépôt + +Clonez le dépôt Git sur votre machine locale avec la commande suivante : + +```bash +git clone https://codefirst.iut.uca.fr/git/WhatTheFantasy/WF-Android.git +``` +### 2. Lancer l'application à travers Android Studio +Une fois le projet ouvert dans Android Studio, lancer le build du projet, soit sur votre smartphone android physique, soit par un émulateur intégré à Android Studio + + + + +## Auteurs +BRONGNIART Kentin
+BEAULATON Léni
+ROCHER Maxime
+MONDEJAR Kevin
+GUICHARD-MONTGUERS Louis
+NGUYEN Tommy
+ \ No newline at end of file From 65bc43f40e7c2e7d780712c5bac2dc5239f0be1e Mon Sep 17 00:00:00 2001 From: "leni.beaulaton" Date: Thu, 27 Feb 2025 19:45:57 +0100 Subject: [PATCH 12/32] =?UTF-8?q?Lien=20entre=20le=20stub=20est=20la=20maj?= =?UTF-8?q?=20des=20donn=C3=A9es=20des=20utilisateur=20sur=20la=20page=20p?= =?UTF-8?q?rofil=20(seul=20image=20n'a=20pas=20encore=20=C3=A9t=C3=A9=20fa?= =?UTF-8?q?it)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../what_the_fantasy/data/model/User.kt | 2 +- .../data/services/IServices.kt | 8 +-- .../data/services/ServicesAPI.kt | 8 +-- .../data/services/ServicesStub.kt | 56 ++++++++++++------- .../what_the_fantasy/ui/screens/LoginPage.kt | 3 + .../what_the_fantasy/ui/screens/ProfilPage.kt | 53 +++++++++++------- .../app/src/main/res/values-fr/strings.xml | 1 + .../app/src/main/res/values/strings.xml | 1 + 8 files changed, 84 insertions(+), 48 deletions(-) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/model/User.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/model/User.kt index ce4cb2f..febe20d 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/model/User.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/model/User.kt @@ -6,5 +6,5 @@ class User( var email:String, var date:String, val imgUrl: String, - val password: String + var password: String ) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/IServices.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/IServices.kt index d48fd2f..5f8ab42 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/IServices.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/IServices.kt @@ -4,10 +4,10 @@ import com.example.what_the_fantasy.data.local.UserStub.users import com.example.what_the_fantasy.data.model.User interface IServices { - fun EditUsername(username : String) - fun EditEmail(email : String) - fun EditPasswd(passwd : String, passwdValid : String) - fun EditImage(imageURL : String) + fun EditUsername(username : String, index : Int) + fun EditEmail(email : String, index : Int) + fun EditPasswd(passwd : String, index : Int) + fun EditImage(imageURL : String, index : Int) fun CreateUser(username : String, email : String, passwd : String, imageURL: String, services : IServices) : Boolean fun getFavorite(username: String) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesAPI.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesAPI.kt index 5ac90ee..bf6d27e 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesAPI.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesAPI.kt @@ -3,19 +3,19 @@ package com.example.what_the_fantasy.data.services import com.example.what_the_fantasy.data.model.User class ServicesAPI : IServices { - override fun EditUsername(username: String) { + override fun EditUsername(username: String, index : Int) { TODO("Not yet implemented") } - override fun EditEmail(email: String) { + override fun EditEmail(email: String, index : Int) { TODO("Not yet implemented") } - override fun EditPasswd(passwd: String, passwdValid: String) { + override fun EditPasswd(passwd: String, index : Int) { TODO("Not yet implemented") } - override fun EditImage(imageURL: String) { + override fun EditImage(imageURL: String, index : Int) { TODO("Not yet implemented") } diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt index d6cbfe3..c6c3ed1 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt @@ -9,19 +9,33 @@ import com.example.what_the_fantasy.ui.components.hashPassword import java.time.LocalDate class ServicesStub : IServices { - override fun EditUsername(username: String) { - TODO("Not yet implemented") + override fun EditUsername(username: String, index : Int) { + val user = getUserById(index) + user?.username = username + + //Afficher tous les users + debugDisplayUser(getAllUsers(), "UsernameUpdate") + } - override fun EditEmail(email: String) { - TODO("Not yet implemented") + override fun EditEmail(email: String,index : Int) { + val user = getUserById(index) + user?.email = email + + //Afficher tous les users + debugDisplayUser(getAllUsers(), "EmailUpdate") } - override fun EditPasswd(passwd: String, passwdValid: String) { - TODO("Not yet implemented") + override fun EditPasswd(passwd: String,index : Int) { + val user = getUserById(index) + val passwordhash = hashPassword(passwd) + user?.password = passwordhash + + //Afficher tous les users en log + debugDisplayUser(getAllUsers(), "PasswordUpdate") } - override fun EditImage(imageURL: String) { + override fun EditImage(imageURL: String,index : Int) { TODO("Not yet implemented") } @@ -29,7 +43,6 @@ class ServicesStub : IServices { val date =dateDuJour() val passwordhash = hashPassword(passwd) - //Check si user existe déjà val userStub = services.getAllUsers() val nbUser = userStub.size for (user in userStub) { @@ -41,20 +54,10 @@ class ServicesStub : IServices { users.add(user)//ajout au stub //Afficher tous les users - for(user in userStub){ - Log.e("CreateUser", "User created: ${user.username} => ${user.password}") - } + debugDisplayUser(users, "CreateUser") return true } - @SuppressLint("NewApi") - fun dateDuJour(): String { - val date = LocalDate.now() - return date.toString() - } - - - // Récupérer tous les utilisateurs override fun getAllUsers(): List = users override fun getUserById(id: Int): User? { @@ -68,4 +71,19 @@ class ServicesStub : IServices { override fun getFavorite(username: String) { TODO("Not yet implemented") } + + +//------------------------------------------------------ + @SuppressLint("NewApi") + fun dateDuJour(): String { + val date = LocalDate.now() + return date.toString() + } + + + private fun debugDisplayUser(users : List, titleLog : String){ + for(user in users){ + Log.e(titleLog, "User created: ${user.username} => ${user.email} => ${user.password}") + } + } } \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt index a824491..f4689c9 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt @@ -41,6 +41,7 @@ import com.example.what_the_fantasy.data.local.UserStub import com.example.what_the_fantasy.data.model.User import com.example.what_the_fantasy.data.services.IServices import com.example.what_the_fantasy.data.services.ServicesStub +import com.example.what_the_fantasy.ui.components.ErrorMessageProfileComponent import com.example.what_the_fantasy.ui.components.SpaceHeightComponent import com.example.what_the_fantasy.ui.components.TitlePageComponent import com.example.what_the_fantasy.ui.components.hashPassword @@ -128,6 +129,7 @@ fun PassWdTextField(textpasswdResId : Int) : String{ @Composable fun ConnexionButtonLogin(userStub : List, id : String, passwd : String, titleResId : Int, size : Int, colorButton : Color, colorText : Color, navController: (Int) -> Unit){ val title = stringResource(id = titleResId) + Button( onClick = { validLogin(id, passwd, userStub, navController) }, colors = ButtonDefaults.buttonColors(containerColor = colorButton), @@ -140,6 +142,7 @@ fun ConnexionButtonLogin(userStub : List, id : String, passwd : String, ti fun validLogin(identifiant : String, passwd : String, users : List, navController: (Int) -> Unit){ + users.forEachIndexed { index, user -> val hashPassWd = hashPassword(passwd) if (user.username == identifiant && user.password == hashPassWd) { diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt index c8ee9aa..54b17af 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt @@ -99,13 +99,13 @@ fun ProfilPage(index: Int, navController: NavController, services: IServices) { ImageProfil(user.imgUrl, 120) SpaceHeightComponent(16) - EditUsername(user.username)// Édition du Username + EditUsername(user.username, index, services)// Édition du Username SpaceHeightComponent(16) - EditEmail(user.email)// Édition du Email + EditEmail(user.email,index, services)// Édition du Email Spacer(modifier = Modifier.height(8.dp)) - EditPasswd() + EditPasswd(index, services) SpaceHeightComponent(16) // Bouton @@ -133,20 +133,27 @@ fun ImageProfil(imgProfil : String, size :Int){ } @Composable -fun EditEmail(userEmail: String) { +fun EditEmail(userEmail: String, index: Int, service: IServices) { var email by remember { mutableStateOf(userEmail) } var isEditingEmail by remember { mutableStateOf(false) } var emailError by remember { mutableStateOf(false) } + fun onDoneEditing() { + service.EditEmail(email, index) + isEditingEmail = false + } + if (isEditingEmail) { EmailEditingField( email = email, onEmailChange = { newEmail -> email = newEmail - emailError = !Patterns.EMAIL_ADDRESS.matcher(newEmail).matches() + emailError = !Patterns.EMAIL_ADDRESS.matcher(newEmail).matches() // Validation email }, onDone = { - if (!emailError) isEditingEmail = false + if (!emailError) { + onDoneEditing() + } }, emailError = emailError ) @@ -212,18 +219,21 @@ fun DisplayEmail(email: String, onEdit: () -> Unit) { - - @Composable -fun EditUsername(userName: String) { +fun EditUsername(userName: String, index: Int, service : IServices) { var username by remember { mutableStateOf(userName) } var isEditingUsername by remember { mutableStateOf(false) } + fun onDoneEditing() { + service.EditUsername(username, index) + isEditingUsername = false + } + if (isEditingUsername) { UsernameEditingField( username = username, onUsernameChange = { username = it }, - onDone = { isEditingUsername = false } + onDone = { onDoneEditing() } ) } else { DisplayUsername(username = username, onEdit = { isEditingUsername = true }) @@ -246,7 +256,7 @@ fun UsernameEditingField( imeAction = ImeAction.Done ), keyboardActions = KeyboardActions( - onDone = { onDone() } // Quand on appuie sur "Done", on met fin à l'édition + onDone = { onDone() } ), trailingIcon = { IconButton(onClick = { onDone() }) { @@ -279,18 +289,22 @@ fun DisplayUsername(username: String, onEdit: () -> Unit) { - - - @Composable -fun EditPasswd() { - var password by remember { mutableStateOf("*******") } +fun EditPasswd(index: Int, service: IServices) { + var password by remember { mutableStateOf("*******") } // Mot de passe actuel (affiché comme un masque) var isEditingPassword by remember { mutableStateOf(false) } var newPassword by remember { mutableStateOf("") } var confirmPassword by remember { mutableStateOf("") } var passwordVisible by remember { mutableStateOf(false) } var passwordError by remember { mutableStateOf(false) } + // Fonction pour finaliser l'édition du mot de passe et appeler la méthode EditPasswd2 + fun onDoneEditing() { + // Appeler EditPasswd2 pour mettre à jour le mot de passe de l'utilisateur + service.EditPasswd(newPassword, index) + isEditingPassword = false + } + if (isEditingPassword) { PasswordEditingFields( newPassword = newPassword, @@ -298,20 +312,19 @@ fun EditPasswd() { onNewPasswordChange = { newPassword = it }, onConfirmPasswordChange = { confirmPassword = it - passwordError = newPassword != it + passwordError = newPassword != it // Vérifier si les mots de passe correspondent }, passwordVisible = passwordVisible, onPasswordVisibilityChange = { passwordVisible = it }, passwordError = passwordError, onDone = { if (!passwordError && newPassword.isNotEmpty()) { - password = newPassword - isEditingPassword = false + onDoneEditing() // Appeler la fonction onDoneEditing() pour mettre à jour le mot de passe } } ) } else { - DisplayPassword(onEdit = { isEditingPassword = true }) + DisplayPassword(onEdit = { isEditingPassword = true }) // Afficher l'option pour modifier le mot de passe } } diff --git a/What_The_Fantasy/app/src/main/res/values-fr/strings.xml b/What_The_Fantasy/app/src/main/res/values-fr/strings.xml index 899a998..a9a859b 100644 --- a/What_The_Fantasy/app/src/main/res/values-fr/strings.xml +++ b/What_The_Fantasy/app/src/main/res/values-fr/strings.xml @@ -11,6 +11,7 @@ Votre mot de passe* Se connecter Créer son compte + Identifiant ou mot de passe incorrect //Page Sign Up Inscription diff --git a/What_The_Fantasy/app/src/main/res/values/strings.xml b/What_The_Fantasy/app/src/main/res/values/strings.xml index 4e02f70..b74a681 100644 --- a/What_The_Fantasy/app/src/main/res/values/strings.xml +++ b/What_The_Fantasy/app/src/main/res/values/strings.xml @@ -10,6 +10,7 @@ Your password* Login Create your account + Incorrect username or password //Page Sign Up Account creation From be237dce7a689b7a888b4babc38ecaaac49462c5 Mon Sep 17 00:00:00 2001 From: tomivt Date: Thu, 27 Feb 2025 21:53:33 +0100 Subject: [PATCH 13/32] Fix Merge issues --- .../ui/navigations/AppNavigator.kt | 2 +- .../ui/screens/QuizEndPage.kt | 43 ++++--------------- 2 files changed, 10 insertions(+), 35 deletions(-) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt index d696041..e68c8d3 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt @@ -42,7 +42,7 @@ sealed class Destination(val route: String) { fun AppNavigator() { val navController = rememberNavController() val services = ServicesStub() // A changer si l'on veut passer au service API - NavHost(navController, startDestination = Destination.Login.route) { + NavHost(navController, startDestination = Destination.QuizMenu.route) { composable(Destination.Login.route) { LoginPage( navControllerSignUp = { navController.navigate(Destination.SignUp.route) }, diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt index c66c04c..3c40225 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt @@ -42,18 +42,17 @@ fun QuizEndPage(idQuiz: Int, points: Int, navControllerQuizMenu: () -> Unit) { modifier = Modifier .fillMaxWidth() .weight(0.1f) - .background(Color(0xFF300052)) .padding(20.dp), horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically ) { Image( - painter = painterResource(id = R.drawable.quiz), + painter = painterResource(id = R.drawable.profile_icon), contentDescription = "Profil", - modifier = Modifier.size(50.dp).background(Color.Yellow, CircleShape) + modifier = Modifier.size(50.dp) ) Image( - painter = painterResource(id = R.drawable.quiz), + painter = painterResource(id = R.drawable.toggle), contentDescription = "Profil" ) } @@ -97,30 +96,6 @@ fun QuizEndPage(idQuiz: Int, points: Int, navControllerQuizMenu: () -> Unit) { color = Color.White, style = TextStyle(fontSize = 15.sp, fontWeight = FontWeight.Bold, textAlign = TextAlign.Center) ) - Row ( - modifier = Modifier - .fillMaxWidth(), - horizontalArrangement = Arrangement.SpaceAround - ) { - // Bouton Quiz Précédent - Image( - painter = painterResource(id = R.drawable.quiz), - contentDescription = "Profil", - modifier = Modifier.size(50.dp).background(Color.Yellow, CircleShape) - ) - // Bouton Retour Menu Quiz - Image( - painter = painterResource(id = R.drawable.quiz), - contentDescription = "Profil", - modifier = Modifier.size(50.dp).background(Color.Yellow, CircleShape) - ) - // Bouton Quiz Suivant - Image( - painter = painterResource(id = R.drawable.quiz), - contentDescription = "Profil" - ) - } - } } @@ -136,9 +111,9 @@ fun QuizEndPage(idQuiz: Int, points: Int, navControllerQuizMenu: () -> Unit) { ) { // Bouton Likes Image( - painter = painterResource(id = R.drawable.quiz), + painter = painterResource(id = R.drawable.like_icon), contentDescription = "Bouton", - modifier = Modifier.size(50.dp).background(Color.Yellow, CircleShape) + modifier = Modifier.size(50.dp) ) // Bouton WhatTheFantasy Image( @@ -148,10 +123,10 @@ fun QuizEndPage(idQuiz: Int, points: Int, navControllerQuizMenu: () -> Unit) { ) // Bouton Quiz Image( - painter = painterResource(id = R.drawable.quiz), - contentDescription = "Bouton", - modifier = Modifier.size(50.dp).background(Color.Yellow, CircleShape) - ) + painter = painterResource(id = R.drawable.quiz_icon), + contentDescription = "Bouton", + modifier = Modifier.size(50.dp) + ) } } } From e70d3e690bbdcd40ee64aee2d2f90d839014e15d Mon Sep 17 00:00:00 2001 From: tomivt Date: Thu, 27 Feb 2025 22:07:46 +0100 Subject: [PATCH 14/32] Add note feature --- .../ui/screens/QuizEndPage.kt | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt index 3c40225..36ebbfc 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt @@ -3,6 +3,7 @@ package com.example.what_the_fantasy.ui.screens import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.clickable +import androidx.compose.foundation.gestures.snapping.SnapPosition import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape @@ -76,7 +77,8 @@ fun QuizEndPage(idQuiz: Int, points: Int, navControllerQuizMenu: () -> Unit) { .background(brush = gradient, shape = RoundedCornerShape(20.dp)) .padding(30.dp) .fillMaxSize(), - horizontalAlignment = Alignment.CenterHorizontally + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.SpaceEvenly ) { Text ( text = "Quiz N°$idQuiz", @@ -96,6 +98,30 @@ fun QuizEndPage(idQuiz: Int, points: Int, navControllerQuizMenu: () -> Unit) { color = Color.White, style = TextStyle(fontSize = 15.sp, fontWeight = FontWeight.Bold, textAlign = TextAlign.Center) ) + + val note = when { + points == 10 -> "S" + points >= 7 -> "A" + points >= 4 -> "B" + else -> "C" + } + + Box( + contentAlignment = Alignment.Center, + modifier = Modifier + .size(100.dp) + .background(Color.White, shape = RoundedCornerShape(50.dp)) + ) { + Text( + text = note, + color = Color.Red, + style = TextStyle( + fontSize = 40.sp, + fontWeight = FontWeight.Bold, + textAlign = TextAlign.Center + ) + ) + } } } From 69859097ac502305b4e307f6306bea465120ad54 Mon Sep 17 00:00:00 2001 From: Kentin BRONGNIART Date: Fri, 28 Feb 2025 11:09:22 +0100 Subject: [PATCH 15/32] e --- .../java/com/example/what_the_fantasy/ui/components/NavBar.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt index fb0ead1..a13609e 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt @@ -42,6 +42,8 @@ fun NavBar(onProfile : Boolean = false , navControllerAccueil: () -> Unit, navControllerQuiz: () -> Unit, + + content : @Composable ()-> Unit ) { Column( From 4f9e791fd371033c750a4fe1c3bd8c78edbcc7ed Mon Sep 17 00:00:00 2001 From: Kentin BRONGNIART Date: Fri, 28 Feb 2025 12:25:04 +0100 Subject: [PATCH 16/32] finition de la barre de navigation (avec sauvegarde de l'utilisateur) --- .../what_the_fantasy/data/local/UserStub.kt | 121 +++++----------- .../what_the_fantasy/data/model/User.kt | 4 +- .../data/services/IServices.kt | 16 ++- .../data/services/ServicesAPI.kt | 20 ++- .../data/services/ServicesStub.kt | 76 ++++++++-- .../what_the_fantasy/ui/components/NavBar.kt | 41 ++++-- .../ui/components/hasPassword.kt | 14 ++ .../ui/navigations/AppNavigator.kt | 130 ++++++++++++------ .../ui/screens/AccueilPage.kt | 10 +- .../ui/screens/FavoritePage.kt | 10 +- .../what_the_fantasy/ui/screens/LoginPage.kt | 29 ++-- .../what_the_fantasy/ui/screens/ProfilPage.kt | 19 ++- .../ui/screens/QuizEndPage.kt | 85 +----------- .../screens/{QuizAccueil.kt => QuizMenu.kt} | 28 ++-- .../what_the_fantasy/ui/screens/QuizPage.kt | 117 +++++++++------- 15 files changed, 379 insertions(+), 341 deletions(-) create mode 100644 What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/hasPassword.kt rename What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/{QuizAccueil.kt => QuizMenu.kt} (87%) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/local/UserStub.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/local/UserStub.kt index 552ad3e..d5250eb 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/local/UserStub.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/local/UserStub.kt @@ -3,95 +3,38 @@ package com.example.what_the_fantasy.data.local import com.example.what_the_fantasy.data.model.User object UserStub { - val user1 = User( - id = 1, - username = "Aragorn123", - email = "aragorn@example.com", - date = "2022-01-15", - imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-guerrier-fantaisie_1045-185.jpg?size=338&ext=jpg", - password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 - - val user2 = User( - id = 2, - username = "Legolas456", - email = "legolas@example.com", - date = "2021-05-23", - imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-elfe-fantaisie_1045-186.jpg?size=338&ext=jpg", - password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 - - val user3 = User( - id = 3, - username = "Gandalf789", - email = "gandalf@example.com", - date = "2020-09-10", - imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-magicien-fantaisie_1045-187.jpg?size=338&ext=jpg", - password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 - - val user4 = User( - id = 4, - username = "FrodoBaggins", - email = "frodo@example.com", - date = "2023-03-18", - imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-hobbit-fantaisie_1045-188.jpg?size=338&ext=jpg", - password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 - - val user5 = User( - id = 5, - username = "Gimli999", - email = "gimli@example.com", - date = "2022-07-04", - imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-nain-fantaisie_1045-189.jpg?size=338&ext=jpg", - password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 - - val user6 = User( - id = 6, - username = "Galadriel321", - email = "galadriel@example.com", - date = "2021-11-30", - imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-elfe-femme-fantaisie_1045-190.jpg?size=338&ext=jpg", - password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 - - val user7 = User( - id = 7, - username = "Boromir654", - email = "boromir@example.com", - date = "2023-06-22", - imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-guerrier-homme-fantaisie_1045-191.jpg?size=338&ext=jpg", - password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 - - val user8 = User( - id = 8, - username = "Eowyn777", - email = "eowyn@example.com", - date = "2022-04-11", - imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-guerriere-femme-fantaisie_1045-192.jpg?size=338&ext=jpg", - password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 - - val user9 = User( - id = 9, - username = "Saruman888", - email = "saruman@example.com", - date = "2021-08-15", - imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-magicien-malefique-fantaisie_1045-193.jpg?size=338&ext=jpg", - password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 - - val user10 = User( - id = 10, - username = "Faramir222", - email = "faramir@example.com", - date = "2023-02-08", - imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-guerrier-homme-fantaisie_1045-194.jpg?size=338&ext=jpg", - password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 + //LE MOT DE PASSE POUR TOUS LES UTILISATEURS EST : 1234 + val users: MutableList = mutableListOf( + User(1, "Aragorn123", "aragorn@example.com", "2022-01-15", "https://img.freepik.com/vecteurs-libre/personnage-guerrier-fantaisie_1045-185.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"), //1234 + User(2, "Legolas456", "legolas@example.com", "2021-05-23", "https://img.freepik.com/vecteurs-libre/personnage-elfe-fantaisie_1045-186.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"),//1234 + User(3, "Gandalf789", "gandalf@example.com", "2020-09-10", "https://img.freepik.com/vecteurs-libre/personnage-magicien-fantaisie_1045-187.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"),//1234 + User(4, "FrodoBaggins", "frodo@example.com", "2023-03-18", "https://img.freepik.com/vecteurs-libre/personnage-hobbit-fantaisie_1045-188.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"),//1234 + User(5, "Gimli999", "gimli@example.com", "2022-07-04", "https://img.freepik.com/vecteurs-libre/personnage-nain-fantaisie_1045-189.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"),//1234 + User(6, "Galadriel321", "galadriel@example.com", "2021-11-30", "https://img.freepik.com/vecteurs-libre/personnage-elfe-femme-fantaisie_1045-190.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"),//1234 + User(7, "Boromir654", "boromir@example.com", "2023-06-22", "https://img.freepik.com/vecteurs-libre/personnage-guerrier-homme-fantaisie_1045-191.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"),//1234 + User(8, "Eowyn777", "eowyn@example.com", "2022-04-11", "https://img.freepik.com/vecteurs-libre/personnage-guerriere-femme-fantaisie_1045-192.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"),//1234 + User(9, "Saruman888", "saruman@example.com", "2021-08-15", "https://img.freepik.com/vecteurs-libre/personnage-magicien-malefique-fantaisie_1045-193.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"),//1234 + User(10, "Faramir222", "faramir@example.com", "2023-02-08", "https://img.freepik.com/vecteurs-libre/personnage-guerrier-homme-fantaisie_1045-194.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"),//1234 + User(11, "dev", "testeur@example.com", "2023-02-08", "https://img.freepik.com/vecteurs-libre/personnage-guerrier-homme-fantaisie_1045-194.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4")//1234 + ) - val user11 = User( - id = 10, - username = "dev", - email = "testeur@example.com", - date = "2023-02-08", - imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-guerrier-homme-fantaisie_1045-194.jpg?size=338&ext=jpg", - password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 + fun addUser(user: User) { + users.add(user) + } + +// +// // Modifier un utilisateur +// fun updateUser(id: Int, updatedUser: User) { +// val index = users.indexOfFirst { it.id == id } +// if (index != -1) { +// users[index] = updatedUser +// } +// } +// +// // Supprimer un utilisateur +// fun removeUser(id: Int) { +// users.removeAll { it.id == id } +// } +// - val allUsers: List = listOf( - user1, user2, user3, user4, user5, user6, user7, user8, user9, user10, user11 - ) } \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/model/User.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/model/User.kt index ce4cb2f..811561b 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/model/User.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/model/User.kt @@ -6,5 +6,5 @@ class User( var email:String, var date:String, val imgUrl: String, - val password: String -) + var password: String +) \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/IServices.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/IServices.kt index df15ebd..5f8ab42 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/IServices.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/IServices.kt @@ -1,13 +1,19 @@ package com.example.what_the_fantasy.data.services +import com.example.what_the_fantasy.data.local.UserStub.users +import com.example.what_the_fantasy.data.model.User + interface IServices { - fun EditUsername(username : String) - fun EditEmail(email : String) - fun EditPasswd(passwd : String, passwdValid : String) - fun EditImage(imageURL : String) + fun EditUsername(username : String, index : Int) + fun EditEmail(email : String, index : Int) + fun EditPasswd(passwd : String, index : Int) + fun EditImage(imageURL : String, index : Int) - fun CreateUser(username : String, email : String, passwd : String, imageURL: String) + fun CreateUser(username : String, email : String, passwd : String, imageURL: String, services : IServices) : Boolean fun getFavorite(username: String) + fun getAllUsers(): List + + fun getUserById(id: Int): User? fun SearchQuote(quote : String) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesAPI.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesAPI.kt index 9743f68..bf6d27e 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesAPI.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesAPI.kt @@ -1,23 +1,25 @@ package com.example.what_the_fantasy.data.services +import com.example.what_the_fantasy.data.model.User + class ServicesAPI : IServices { - override fun EditUsername(username: String) { + override fun EditUsername(username: String, index : Int) { TODO("Not yet implemented") } - override fun EditEmail(email: String) { + override fun EditEmail(email: String, index : Int) { TODO("Not yet implemented") } - override fun EditPasswd(passwd: String, passwdValid: String) { + override fun EditPasswd(passwd: String, index : Int) { TODO("Not yet implemented") } - override fun EditImage(imageURL: String) { + override fun EditImage(imageURL: String, index : Int) { TODO("Not yet implemented") } - override fun CreateUser(username: String, email: String, passwd: String, imageURL: String) { + override fun CreateUser(username: String, email: String, passwd: String, imageURL: String, services: IServices) : Boolean { TODO("Not yet implemented") } @@ -28,4 +30,12 @@ class ServicesAPI : IServices { override fun getFavorite(username: String) { TODO("Not yet implemented") } + + override fun getAllUsers(): List { + TODO("Not yet implemented") + } + + override fun getUserById(id: Int): User? { + TODO("Not yet implemented") + } } \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt index 8c84176..f87ede9 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt @@ -1,24 +1,67 @@ package com.example.what_the_fantasy.data.services +import android.annotation.SuppressLint +import android.util.Log +import com.example.what_the_fantasy.data.local.UserStub +import com.example.what_the_fantasy.data.local.UserStub.users +import com.example.what_the_fantasy.data.model.User +import com.example.what_the_fantasy.ui.components.hashPassword +import java.time.LocalDate + class ServicesStub : IServices { - override fun EditUsername(username: String) { - TODO("Not yet implemented") + override fun EditUsername(username: String, index : Int) { + val user = getUserById(index) + user?.username = username + + //Afficher tous les users + debugDisplayUser(getAllUsers(), "UsernameUpdate") + } - override fun EditEmail(email: String) { - TODO("Not yet implemented") + override fun EditEmail(email: String,index : Int) { + val user = getUserById(index) + user?.email = email + + //Afficher tous les users + debugDisplayUser(getAllUsers(), "EmailUpdate") } - override fun EditPasswd(passwd: String, passwdValid: String) { - TODO("Not yet implemented") + override fun EditPasswd(passwd: String,index : Int) { + val user = getUserById(index) + val passwordhash = hashPassword(passwd) + user?.password = passwordhash + + //Afficher tous les users en log + debugDisplayUser(getAllUsers(), "PasswordUpdate") } - override fun EditImage(imageURL: String) { + override fun EditImage(imageURL: String,index : Int) { TODO("Not yet implemented") } - override fun CreateUser(username: String, email: String, passwd: String, imageURL: String) { - TODO("Not yet implemented") + override fun CreateUser(username: String, email: String, passwd: String, imageURL: String, services : IServices) : Boolean { + val date =dateDuJour() + val passwordhash = hashPassword(passwd) + + val userStub = services.getAllUsers() + val nbUser = userStub.size + for (user in userStub) { + if (user.username == username) { + return false + } + } + val user = User(nbUser+1,username, email, imageURL, date, passwordhash) + users.add(user)//ajout au stub + + //Afficher tous les users + debugDisplayUser(users, "CreateUser") + return true + } + + override fun getAllUsers(): List = users + + override fun getUserById(id: Int): User? { + return (users.find { it.id == id+1 }) } override fun SearchQuote(quote: String) { @@ -28,4 +71,19 @@ class ServicesStub : IServices { override fun getFavorite(username: String) { TODO("Not yet implemented") } + + + //------------------------------------------------------ + @SuppressLint("NewApi") + fun dateDuJour(): String { + val date = LocalDate.now() + return date.toString() + } + + + private fun debugDisplayUser(users : List, titleLog : String){ + for(user in users){ + Log.e(titleLog, "User created: ${user.username} => ${user.email} => ${user.password}") + } + } } \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt index a13609e..9b64162 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt @@ -29,6 +29,7 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.example.what_the_fantasy.R +import com.example.what_the_fantasy.data.services.IServices import com.example.what_the_fantasy.ui.theme.* @Composable @@ -36,12 +37,11 @@ fun NavBar(onProfile : Boolean = false , onFavorite : Boolean = false , onAccueil : Boolean = false , onQuiz : Boolean = false , - + index:Int, navControllerProfil: (Int) -> Unit, - navControllerFavorite: () -> Unit, - navControllerAccueil: () -> Unit, - navControllerQuiz: () -> Unit, - + navControllerFavorite:(Int) -> Unit, + navControllerAccueil: (Int) -> Unit, + navControllerQuiz: (Int) -> Unit, content : @Composable ()-> Unit ) { @@ -58,7 +58,7 @@ fun NavBar(onProfile : Boolean = false , Arrangement.SpaceBetween, verticalAlignment = Alignment.Bottom ) { - ButtonIconVectorInt(Icons.Rounded.AccountCircle,"Profile",{},onProfile) + ButtonIconVectorInt(Icons.Rounded.AccountCircle,"Profile",navControllerProfil,index,onProfile) Button(onClick = {}, @@ -80,11 +80,11 @@ fun NavBar(onProfile : Boolean = false , verticalAlignment = Alignment.CenterVertically ) { - ButtonIconVector(Icons.Rounded.Favorite,"Favorite",navControllerFavorite,onFavorite) + ButtonIconVectorInt(Icons.Rounded.Favorite,"Favorite",navControllerFavorite,index,onFavorite) - ButtonIconPainter(painterResource(R.mipmap.ic_launcher_foreground),"Accueil",navControllerAccueil,onAccueil) + ButtonIconPainterInt(painterResource(R.mipmap.ic_launcher_foreground),"Accueil",navControllerAccueil,index,onAccueil) - ButtonIconVector(Icons.Rounded.Create,"Quiz",navControllerQuiz,onQuiz) + ButtonIconVectorInt(Icons.Rounded.Create,"Quiz",navControllerQuiz,index,onQuiz) } } } @@ -105,8 +105,8 @@ fun ButtonIconVector(img : ImageVector, name : String, nav : ()->Unit ,onPage : } } @Composable -fun ButtonIconVectorInt(img : ImageVector, name : String, nav : (Int)->Unit ,onPage : Boolean){ - IconButton(onClick = {}, +fun ButtonIconVectorInt(img : ImageVector, name : String, nav : (Int)->Unit ,index: Int,onPage : Boolean){ + IconButton(onClick = {nav(index)}, enabled = !onPage, colors = IconButtonColors(Color.Transparent,Color.White,//couleur quand il n'est pas selectionné Color.Transparent, colorButtonNav),//couleur quand il est selectionné @@ -127,7 +127,7 @@ fun ButtonIconPainter(img : Painter, name : String, nav : ()->Unit,onPage : Bool IconButton(onClick = {nav()}, enabled = !onPage, colors = IconButtonColors(Color.Transparent,Color.White,//couleur quand il n'est pas selectionné - Color.Transparent, colorButtonNav),//couleur quand il est selectionné + Color.Transparent, colorButtonNav),//couleur quand il est selectionné modifier = Modifier .size(60.dp) ) { @@ -138,3 +138,20 @@ fun ButtonIconPainter(img : Painter, name : String, nav : ()->Unit,onPage : Bool ) } } +@Composable +fun ButtonIconPainterInt(img : Painter, name : String, nav : (Int)->Unit,index: Int,onPage : Boolean){ + IconButton(onClick = {nav(index)}, + enabled = !onPage, + colors = IconButtonColors(Color.Transparent,Color.White,//couleur quand il n'est pas selectionné + Color.Transparent, colorButtonNav),//couleur quand il est selectionné + modifier = Modifier + .size(60.dp) + ) { + Icon(img, + contentDescription = name, + modifier = Modifier + .size(60.dp) + ) + } +} + diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/hasPassword.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/hasPassword.kt new file mode 100644 index 0000000..2f46a9d --- /dev/null +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/hasPassword.kt @@ -0,0 +1,14 @@ +package com.example.what_the_fantasy.ui.components + +import java.security.MessageDigest + +fun hashPassword(password: String): String { + // SHA-256 + val digest = MessageDigest.getInstance("SHA-256") + + // Convertir mdp en bytes et appliquer le hash + val hashedBytes = digest.digest(password.toByteArray()) + + // Convertir le tableau de bytes en une chaîne hexadécimale + return hashedBytes.joinToString("") { "%02x".format(it) } +} \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt index a957940..cdfdc50 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt @@ -4,12 +4,13 @@ import androidx.compose.runtime.Composable import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController +import com.example.what_the_fantasy.data.services.ServicesStub import com.example.what_the_fantasy.ui.screens.AccueilPage import com.example.what_the_fantasy.ui.screens.FavoritePage import com.example.what_the_fantasy.ui.screens.LoginPage import com.example.what_the_fantasy.ui.screens.ProfilPage -import com.example.what_the_fantasy.ui.screens.QuizAccueil import com.example.what_the_fantasy.ui.screens.QuizEndPage +import com.example.what_the_fantasy.ui.screens.QuizMenu import com.example.what_the_fantasy.ui.screens.QuizPage import com.example.what_the_fantasy.ui.screens.QuotePage import com.example.what_the_fantasy.ui.screens.SearchPage @@ -17,11 +18,14 @@ import com.example.what_the_fantasy.ui.screens.SignUpPage import com.example.what_the_fantasy.ui.screens.SubmitQuotePage - sealed class Destination(val route: String) { data object Login : Destination("Login") - data object Accueil : Destination("Accueil") - data object Favorite : Destination("Favorite") + data object Accueil : Destination("Accueil/{userIndex}") { // Ajout du paramètre userIndex + fun createRoute(userIndex: Int) = "Accueil/$userIndex" // Fonction pour créer la route avec l'index + } + data object Favorite : Destination("Favorite/{userIndex}") { // Ajout du paramètre userIndex + fun createRoute(userIndex: Int) = "Favorite/$userIndex" // Fonction pour créer la route avec l'index + } data object Profil : Destination("Profil/{userIndex}") { // Ajout du paramètre userIndex fun createRoute(userIndex: Int) = "Profil/$userIndex" // Fonction pour créer la route avec l'index } @@ -31,37 +35,71 @@ sealed class Destination(val route: String) { data object SignUp : Destination("SignUp") data object SubmitQuote : Destination("SubmitQuote") - data object QuizAccueil : Destination("QuizAccueil") - data object QuizPage : Destination("QuizPage") - data object QuizEndPage : Destination("QuizEndPage") + data object QuizMenu : Destination("QuizMenu/{userIndex}") { // Ajout du paramètre userIndex + fun createRoute(userIndex: Int) = "QuizMenu/$userIndex" // Fonction pour créer la route avec l'index + } + data object Quiz : Destination("Quiz") + data object QuizEnd : Destination("QuizEnd/{idQuiz}/{pts}") { + // Ajout paramètres idQuiz et pts + fun createIdAndPts(idQuiz : Int, pts : Int) = "QuizEnd/$idQuiz/$pts" + } } @Composable fun AppNavigator() { val navController = rememberNavController() - - NavHost(navController, startDestination = Destination.Accueil.route) { + val services = ServicesStub() + NavHost(navController, startDestination = Destination.Login.route) { composable(Destination.Login.route) { LoginPage( navControllerSignUp = { navController.navigate(Destination.SignUp.route) }, navControllerProfil = { userIndex -> navController.navigate(Destination.Profil.createRoute(userIndex)) // Passe l'index à Profil - } + }, + services ) } - composable(Destination.Accueil.route) { AccueilPage( - navFavorite = { navController.navigate(Destination.Favorite.route) }, - navQuiz = { navController.navigate(Destination.QuizAccueil.route) } + composable(Destination.Accueil.route) { + val userIndex = it.arguments?.getString("userIndex")?.toInt() ?: -1 + AccueilPage( + index = userIndex, + navFavorite = { userIndex -> + navController.navigate(Destination.Favorite.createRoute(userIndex)) // Passe l'index à Profil + }, + navQuiz = { userIndex -> + navController.navigate(Destination.QuizMenu.createRoute(userIndex)) // Passe l'index à Profil + }, + navProfil = { userIndex -> + navController.navigate(Destination.Profil.createRoute(userIndex)) // Passe l'index à Profil + } ) } - composable(Destination.Favorite.route) { FavoritePage( - navAccueil = { navController.navigate(Destination.Accueil.route) }, - navQuiz = { navController.navigate(Destination.QuizAccueil.route) } + composable(Destination.Favorite.route) { + val userIndex = it.arguments?.getString("userIndex")?.toInt() ?: -1 + FavoritePage( + index = userIndex, + navAccueil ={ userIndex -> + navController.navigate(Destination.Accueil.createRoute(userIndex)) // Passe l'index à Profil + }, + navQuiz = { userIndex -> + navController.navigate(Destination.QuizMenu.createRoute(userIndex)) // Passe l'index à Profil + }, + navProfil = { userIndex -> + navController.navigate(Destination.Profil.createRoute(userIndex)) // Passe l'index à Profil + } ) } - composable(Destination.Profil.route) { backStackEntry -> + composable(Destination.Profil.route) { // Récupère l'index passé dans la route - val userIndex = backStackEntry.arguments?.getString("userIndex")?.toInt() ?: -1 - ProfilPage(index = userIndex, - navController = navController, - - + val userIndex = it.arguments?.getString("userIndex")?.toInt() ?: -1 + ProfilPage( + index = userIndex, + navFavorite = { userIndex -> + navController.navigate(Destination.Favorite.createRoute(userIndex)) // Passe l'index à Profil + }, + navAccueil ={ userIndex -> + navController.navigate(Destination.Accueil.createRoute(userIndex)) // Passe l'index à Profil + }, + navQuiz = { userIndex -> + navController.navigate(Destination.QuizMenu.createRoute(userIndex)) // Passe l'index à Profil + }, + services = services ) } composable(Destination.Quote.route) { QuotePage() } @@ -69,25 +107,35 @@ fun AppNavigator() { composable(Destination.SignUp.route) { SignUpPage(navController) } composable(Destination.SubmitQuote.route) { SubmitQuotePage() } - - - composable(Destination.QuizAccueil.route) { QuizAccueil( - navFavorite = { navController.navigate(Destination.Favorite.route) }, - navAccueil = { navController.navigate(Destination.Accueil.route) }, - - navControllerQuizPage = { navController.navigate(Destination.QuizPage.route) }, - navControllerQuizEndPage = { navController.navigate(Destination.QuizEndPage.route) } - ) } - - composable(Destination.QuizPage.route) { QuizPage( - navControllerQuiz = {navController.navigate(Destination.QuizAccueil.route)}, - navControllerQuizEndPage = {navController.navigate(Destination.QuizEndPage.route)} - ) } - composable(Destination.QuizEndPage.route) { QuizEndPage( - points = 5, - idQuiz = 1 - ) } - + composable(Destination.QuizMenu.route) { + val userIndex = it.arguments?.getString("userIndex")?.toInt() ?: -1 + QuizMenu( + index = userIndex, + navAccueil = { navController.navigate(Destination.Accueil.route) }, + navFavorite = { navController.navigate(Destination.Favorite.route) }, + navControllerQuiz = { navController.navigate(Destination.Quiz.route) }, + navProfil = { userIndex -> + navController.navigate(Destination.Profil.createRoute(userIndex)) // Passe l'index à Profil + } + ) + } + composable(Destination.Quiz.route) { + QuizPage( + navControllerQuizEnd = { idQuiz, pts -> + navController.navigate(Destination.QuizEnd.createIdAndPts(idQuiz, pts)) + }, + navControllerQuizMenu = { navController.navigate(Destination.QuizMenu.route) } + ) + } + composable(Destination.QuizEnd.route) { backStackEntry -> + val idQuiz = backStackEntry.arguments?.getString("idQuiz")?.toInt() ?: 0 + val pts = backStackEntry.arguments?.getString("pts")?.toInt() ?: 0 + QuizEndPage( + idQuiz, + pts, + navControllerQuizMenu = { navController.navigate(Destination.QuizMenu.route) } + ) + } } } diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/AccueilPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/AccueilPage.kt index 16fe4f8..f56508f 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/AccueilPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/AccueilPage.kt @@ -10,18 +10,22 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.sp +import com.example.what_the_fantasy.data.services.IServices import com.example.what_the_fantasy.ui.components.NavBar import com.example.what_the_fantasy.ui.theme.colorBackground @Composable fun AccueilPage( - navFavorite: () -> Unit, - navQuiz: () -> Unit + index: Int, + navFavorite:(Int) -> Unit, + navQuiz: (Int) -> Unit, + navProfil:(Int) -> Unit ) { NavBar(onAccueil = true, + index = index, navControllerFavorite = navFavorite, navControllerAccueil = { }, - navControllerProfil = {}, + navControllerProfil = navProfil, navControllerQuiz = navQuiz ){ Box( diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt index 2914701..fc7f309 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt @@ -10,18 +10,22 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.sp +import com.example.what_the_fantasy.data.services.IServices import com.example.what_the_fantasy.ui.components.NavBar import com.example.what_the_fantasy.ui.theme.colorBackground @Composable fun FavoritePage( - navAccueil: () -> Unit, - navQuiz: () -> Unit + index: Int, + navAccueil: (Int) -> Unit, + navQuiz: (Int) -> Unit, + navProfil:(Int) -> Unit ) { NavBar(onFavorite = true, + index = index, navControllerFavorite = { }, navControllerAccueil = navAccueil, - navControllerProfil = {}, + navControllerProfil = navProfil, navControllerQuiz = navQuiz ) { Box( diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt index 4dbc28a..767b2ad 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt @@ -39,17 +39,19 @@ import androidx.navigation.compose.composable import com.example.what_the_fantasy.R import com.example.what_the_fantasy.data.local.UserStub import com.example.what_the_fantasy.data.model.User -import com.example.what_the_fantasy.ui.components.NavBar +import com.example.what_the_fantasy.data.services.IServices +import com.example.what_the_fantasy.data.services.ServicesStub +import com.example.what_the_fantasy.ui.components.ErrorMessageProfileComponent import com.example.what_the_fantasy.ui.components.SpaceHeightComponent import com.example.what_the_fantasy.ui.components.TitlePageComponent +import com.example.what_the_fantasy.ui.components.hashPassword import com.example.what_the_fantasy.ui.theme.colorBackground import com.example.what_the_fantasy.ui.theme.gradienBox import java.security.MessageDigest @Composable -fun LoginPage(navControllerSignUp: () -> Unit, navControllerProfil: (Int) -> Unit) { - - val users = UserStub.allUsers; +fun LoginPage(navControllerSignUp: () -> Unit, navControllerProfil: (Int) -> Unit, services : IServices) { + val users = services.getAllUsers() Box( modifier = Modifier @@ -57,7 +59,6 @@ fun LoginPage(navControllerSignUp: () -> Unit, navControllerProfil: (Int) -> Uni .background(colorBackground), contentAlignment = Alignment.Center ){ - Column( modifier = Modifier .fillMaxWidth(0.9f) @@ -76,9 +77,7 @@ fun LoginPage(navControllerSignUp: () -> Unit, navControllerProfil: (Int) -> Uni SpaceHeightComponent(16) CreateAccountButton(R.string.ButtonCreateLogin,12, Color.White, navControllerSignUp) } - } - } @@ -130,6 +129,7 @@ fun PassWdTextField(textpasswdResId : Int) : String{ @Composable fun ConnexionButtonLogin(userStub : List, id : String, passwd : String, titleResId : Int, size : Int, colorButton : Color, colorText : Color, navController: (Int) -> Unit){ val title = stringResource(id = titleResId) + Button( onClick = { validLogin(id, passwd, userStub, navController) }, colors = ButtonDefaults.buttonColors(containerColor = colorButton), @@ -142,6 +142,7 @@ fun ConnexionButtonLogin(userStub : List, id : String, passwd : String, ti fun validLogin(identifiant : String, passwd : String, users : List, navController: (Int) -> Unit){ + users.forEachIndexed { index, user -> val hashPassWd = hashPassword(passwd) if (user.username == identifiant && user.password == hashPassWd) { @@ -151,18 +152,6 @@ fun validLogin(identifiant : String, passwd : String, users : List, navCon } } -fun hashPassword(password: String): String { - // SHA-256 - val digest = MessageDigest.getInstance("SHA-256") - - // Convertir mdp en bytes et appliquer le hash - val hashedBytes = digest.digest(password.toByteArray()) - - // Convertir le tableau de bytes en une chaîne hexadécimale - return hashedBytes.joinToString("") { "%02x".format(it) } -} - - @Composable fun CreateAccountButton(titleResId : Int, size : Int, color : Color, navController: () -> Unit){ val title = stringResource(id = titleResId) @@ -174,4 +163,4 @@ fun CreateAccountButton(titleResId : Int, size : Int, color : Color, navControll navController()// rediriger vers la page de création de compte } ) -} +} \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt index 5937840..4df4756 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt @@ -61,6 +61,7 @@ import coil.compose.AsyncImage import com.example.what_the_fantasy.R import com.example.what_the_fantasy.data.local.QuestionStub import com.example.what_the_fantasy.data.local.UserStub +import com.example.what_the_fantasy.data.services.IServices import com.example.what_the_fantasy.ui.components.ErrorMessageProfileComponent import com.example.what_the_fantasy.ui.components.NavBar import com.example.what_the_fantasy.ui.components.SpaceHeightComponent @@ -69,15 +70,21 @@ import com.example.what_the_fantasy.ui.theme.What_The_FantasyTheme import com.example.what_the_fantasy.ui.theme.gradienBox @Composable -fun ProfilPage(index: Int, navController: NavController) { +fun ProfilPage(index: Int, + navFavorite: (Int) -> Unit, + navAccueil: (Int) -> Unit, + navQuiz: (Int) -> Unit, + services: IServices +) { + val user = services.getUserById(index) ?: return + NavBar(onProfile = true, - navControllerFavorite = {}, - navControllerAccueil = {}, + index = index, + navControllerFavorite = navFavorite, + navControllerAccueil = navAccueil, navControllerProfil = {}, - navControllerQuiz = {} + navControllerQuiz = navQuiz ) { - val userList = UserStub.allUsers - val user = userList[index] Box( modifier = Modifier diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt index 359e7f7..3548590 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt @@ -2,6 +2,7 @@ package com.example.what_the_fantasy.ui.screens import androidx.compose.foundation.Image import androidx.compose.foundation.background +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape @@ -31,37 +32,11 @@ val gradient = Brush.linearGradient( end = Offset(1000f, 0f) ) - - @Composable -fun QuizEndPage(points: Int, idQuiz: Int) { +fun QuizEndPage(idQuiz: Int, points: Int, navControllerQuizMenu: () -> Unit) { Column( modifier = Modifier.fillMaxSize().background(Color(0xFF100C1B)) ) { - // Bandeau supérieur - Row( - modifier = Modifier - .fillMaxWidth() - .weight(0.1f) - .background(Color(0xFF300052)) - .padding(20.dp), - horizontalArrangement = Arrangement.SpaceBetween, - verticalAlignment = Alignment.CenterVertically - ) { - IconButton(onClick = { }) { - Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Retour", tint = Color.White) - } - Image( - painter = painterResource(id = R.drawable.quiz), - contentDescription = "Profil", - modifier = Modifier.size(50.dp).background(Color.Yellow, CircleShape) - ) - Image( - painter = painterResource(id = R.drawable.quiz), - contentDescription = "Profil", - modifier = Modifier.size(50.dp).background(Color.Yellow, CircleShape) - ) - } // Contenu principal Column( @@ -102,62 +77,8 @@ fun QuizEndPage(points: Int, idQuiz: Int) { color = Color.White, style = TextStyle(fontSize = 15.sp, fontWeight = FontWeight.Bold, textAlign = TextAlign.Center) ) - Row ( - modifier = Modifier - .fillMaxWidth(), - horizontalArrangement = Arrangement.SpaceAround - ) { - // Bouton Quiz Précédent - Image( - painter = painterResource(id = R.drawable.quiz), - contentDescription = "Profil", - modifier = Modifier.size(50.dp).background(Color.Yellow, CircleShape) - ) - // Bouton Retour Menu Quiz - Image( - painter = painterResource(id = R.drawable.quiz), - contentDescription = "Profil", - modifier = Modifier.size(50.dp).background(Color.Yellow, CircleShape) - ) - // Bouton Quiz Suivant - Image( - painter = painterResource(id = R.drawable.quiz), - contentDescription = "Profil", - modifier = Modifier.size(50.dp).background(Color.Yellow, CircleShape) - ) - } - } } - // Bandeau inférieur - Row( - modifier = Modifier - .fillMaxWidth() - .weight(0.1f) - .background(Color(0xFF300052)) - .padding(20.dp), - horizontalArrangement = Arrangement.SpaceAround, - verticalAlignment = Alignment.CenterVertically - ) { - // Bouton Likes - Image( - painter = painterResource(id = R.drawable.quiz), - contentDescription = "Bouton", - modifier = Modifier.size(50.dp).background(Color.Yellow, CircleShape) - ) - // Bouton WhatTheFantasy - Image( - painter = painterResource(id = R.drawable.quiz), - contentDescription = "Bouton", - modifier = Modifier.size(50.dp).background(Color.Yellow, CircleShape) - ) - // Bouton Quiz - Image( - painter = painterResource(id = R.drawable.quiz), - contentDescription = "Bouton", - modifier = Modifier.size(50.dp).background(Color.Yellow, CircleShape) - ) - } } -} +} \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizAccueil.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizMenu.kt similarity index 87% rename from What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizAccueil.kt rename to What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizMenu.kt index a5fcaac..1a26099 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizAccueil.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizMenu.kt @@ -19,28 +19,26 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp -import androidx.navigation.NavController -import androidx.navigation.compose.NavHost -import androidx.navigation.compose.composable -import androidx.navigation.compose.rememberNavController import com.example.what_the_fantasy.R +import com.example.what_the_fantasy.data.services.IServices import com.example.what_the_fantasy.ui.components.NavBar @Composable -fun QuizAccueil( - navFavorite: () -> Unit, - navAccueil: () -> Unit, - navControllerQuizPage: () -> Unit, - navControllerQuizEndPage: () -> Unit +fun QuizMenu( + index: Int, + navFavorite: (Int) -> Unit, + navAccueil: (Int) -> Unit, + navProfil:(Int) -> Unit, + navControllerQuiz: () -> Unit ) { NavBar(onQuiz = true, + index = index, navControllerFavorite = navFavorite, navControllerAccueil = navAccueil, - navControllerProfil = {}, + navControllerProfil = navProfil, navControllerQuiz = { } ) { - Row( modifier = Modifier .fillMaxSize() @@ -60,7 +58,7 @@ fun QuizAccueil( .size(width = 150.dp, height = 100.dp) .padding(8.dp) .clickable { - navControllerQuizPage() + navControllerQuiz() } ) { Image( @@ -76,7 +74,7 @@ fun QuizAccueil( .size(width = 150.dp, height = 100.dp) .padding(8.dp) .clickable { - navControllerQuizPage() + navControllerQuiz() } ) { Image( @@ -101,7 +99,7 @@ fun QuizAccueil( .size(width = 150.dp, height = 100.dp) .padding(8.dp) .clickable { - navControllerQuizPage() + navControllerQuiz() } ) { Image( @@ -117,7 +115,7 @@ fun QuizAccueil( .size(width = 150.dp, height = 100.dp) .padding(8.dp) .clickable { - navControllerQuizPage() + navControllerQuiz() } ) { Image( diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt index 0d7e3a3..8647b43 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt @@ -1,14 +1,11 @@ package com.example.what_the_fantasy.ui.screens +import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* +import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack -import androidx.compose.material.icons.filled.ArrowBack -import androidx.compose.material3.Icon -import androidx.compose.material3.IconButton import androidx.compose.material3.Text import androidx.compose.runtime.* import androidx.compose.ui.Alignment @@ -16,17 +13,19 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import androidx.navigation.NavController +import com.example.what_the_fantasy.R import com.example.what_the_fantasy.data.local.QuestionStub -import com.example.what_the_fantasy.data.model.Question -import com.example.what_the_fantasy.ui.components.NavBar @Composable fun QuizPage( - navControllerQuiz: () -> Unit, - navControllerQuizEndPage: () -> Unit + navControllerQuizEnd: (Int, Int) -> Unit, + navControllerQuizMenu: () -> Unit ) { val questions = QuestionStub.allQuestions var idCurrentQuestion by remember { mutableIntStateOf(0) } @@ -49,61 +48,81 @@ fun QuizPage( if (answer == correctAnswer) pts++ if (idCurrentQuestion < questions.size - 1) idCurrentQuestion++ - else navControllerQuiz() // Retour menu + else navControllerQuizEnd(0, pts) // Retour menu } - Box( - modifier = Modifier - .fillMaxSize() - .background(Color(0xFF100C1B)) - .padding(16.dp) + Column ( + modifier = Modifier.fillMaxSize().background(Color(0xFF100C1B)) ) { + + + // Contenu princiapl Column( modifier = Modifier - .fillMaxSize(), + .weight(0.8f) + .fillMaxWidth() + .padding(horizontal = 50.dp, vertical = 20.dp), horizontalAlignment = Alignment.CenterHorizontally ) { val question = questions[idCurrentQuestion] - Column ( + Column( horizontalAlignment = Alignment.CenterHorizontally, ) { - Box( - modifier = Modifier.fillMaxWidth() + Text( + text = "▶ Quiz ◀", + color = Color.White, + style = TextStyle(fontSize = 25.sp, fontWeight = FontWeight.Bold, textAlign = TextAlign.Center) + ) + Column ( + modifier = Modifier + .background(brush = gradient, shape = RoundedCornerShape(20.dp)), + horizontalAlignment = Alignment.CenterHorizontally ) { - IconButton( - onClick = { navControllerQuiz() }, - modifier = Modifier.align(Alignment.TopStart) - ) { - Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Retour", tint = Color.White) - } - } - Text("Question ${question.id}", color = Color.White, fontSize = 18.sp, modifier = Modifier.padding(top = 20.dp)) - Text("Points : $pts", color = Color.White, fontSize = 18.sp, modifier = Modifier.padding(top = 40.dp)) - Text(question.question, color = Color.White, fontSize = 22.sp, modifier = Modifier.padding(40.dp)) - } - Column ( - modifier = Modifier - .padding(top = 30.dp) - ) { - listOf(question.ansA, question.ansB, question.ansC, question.ansD).forEach { answer -> - Box( + Text( + "Question ${question.id}", + color = Color.White, + fontSize = 18.sp, + modifier = Modifier.padding(top = 20.dp), + style = TextStyle( + fontSize = 25.sp, + fontWeight = FontWeight.Bold, + textAlign = TextAlign.Center + ) + ) + Text( + question.question, + color = Color.White, + fontSize = 22.sp, + modifier = Modifier.padding(40.dp) + ) + Column( modifier = Modifier - .width(220.dp) - .height(50.dp) - .background(brush = gradient, shape = RoundedCornerShape(16.dp)) - .clickable { onAnswerSelected(answer) } - .padding(horizontal = 8.dp), - contentAlignment = Alignment.Center + .padding(top = 30.dp) ) { - Text(answer, color = Color.White, fontSize = 18.sp) + listOf( + question.ansA, + question.ansB, + question.ansC, + question.ansD + ).forEach { answer -> + Box( + modifier = Modifier + .width(220.dp) + .height(50.dp) + .background(Color.White, shape = RoundedCornerShape(16.dp)) + .clickable { onAnswerSelected(answer) } + .padding(horizontal = 8.dp), + contentAlignment = Alignment.Center + ) { + Text(answer, color = Color.Black, fontSize = 18.sp) + } + Spacer(modifier = Modifier.height(60.dp)) + } } - Spacer(modifier = Modifier.height(60.dp)) } } - } - } -} - + } +} \ No newline at end of file From 9a5ceb0c3a37abcbbcd0707894b7829a76ec3b7e Mon Sep 17 00:00:00 2001 From: Kentin BRONGNIART Date: Fri, 28 Feb 2025 14:24:18 +0100 Subject: [PATCH 17/32] correction erreur de merge --- .../what_the_fantasy/ui/components/hasPassword.kt | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/hasPassword.kt diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/hasPassword.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/hasPassword.kt deleted file mode 100644 index 2f46a9d..0000000 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/hasPassword.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.example.what_the_fantasy.ui.components - -import java.security.MessageDigest - -fun hashPassword(password: String): String { - // SHA-256 - val digest = MessageDigest.getInstance("SHA-256") - - // Convertir mdp en bytes et appliquer le hash - val hashedBytes = digest.digest(password.toByteArray()) - - // Convertir le tableau de bytes en une chaîne hexadécimale - return hashedBytes.joinToString("") { "%02x".format(it) } -} \ No newline at end of file From 54d3102b9315dbf3000b1475e5cddf0c742b26e2 Mon Sep 17 00:00:00 2001 From: Kentin BRONGNIART Date: Fri, 28 Feb 2025 14:37:18 +0100 Subject: [PATCH 18/32] correction erreur de merge --- .../what_the_fantasy/ui/navigations/AppNavigator.kt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt index e331f2c..529a1dc 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt @@ -111,8 +111,12 @@ fun AppNavigator() { val userIndex = it.arguments?.getString("userIndex")?.toInt() ?: -1 QuizMenu( index = userIndex, - navAccueil = { navController.navigate(Destination.Accueil.route) }, - navFavorite = { navController.navigate(Destination.Favorite.route) }, + navAccueil = { userIndex -> + navController.navigate(Destination.Accueil.createRoute(userIndex)) // Passe l'index à Profil + }, + navFavorite = { userIndex -> + navController.navigate(Destination.Favorite.createRoute(userIndex)) // Passe l'index à Profil + }, navControllerQuiz = { navController.navigate(Destination.Quiz.route) }, navProfil = { userIndex -> navController.navigate(Destination.Profil.createRoute(userIndex)) // Passe l'index à Profil From 1715270d134ad1798fdff89b32139b4e51af913f Mon Sep 17 00:00:00 2001 From: "leni.beaulaton" Date: Fri, 28 Feb 2025 16:14:54 +0100 Subject: [PATCH 19/32] Modification de la navigation --- .../ui/navigations/AppNavigator.kt | 29 ++++++++++++----- .../what_the_fantasy/ui/screens/SignUpPage.kt | 32 ++++++++++++------- .../app/src/main/res/values-fr/strings.xml | 1 + .../app/src/main/res/values/strings.xml | 1 + 4 files changed, 44 insertions(+), 19 deletions(-) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt index 529a1dc..f80a11c 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt @@ -50,13 +50,20 @@ fun AppNavigator() { val navController = rememberNavController() val services = ServicesStub() NavHost(navController, startDestination = Destination.Login.route) { - composable(Destination.Login.route) { LoginPage( - navControllerSignUp = { navController.navigate(Destination.SignUp.route) }, - navControllerProfil = { userIndex -> - navController.navigate(Destination.Profil.createRoute(userIndex)) // Passe l'index à Profil - }, - services - ) } + composable(Destination.Login.route) { + LoginPage( + navControllerSignUp = { + navController.navigate(Destination.SignUp.route) + }, + navControllerProfil = { userIndex -> + navController.navigate(Destination.Profil.createRoute(userIndex)) { + // Vider pile de navigation pour empêcher le retour à la page Login + popUpTo(Destination.Login.route) { inclusive = true } + } + }, + services + ) + } composable(Destination.Accueil.route) { val userIndex = it.arguments?.getString("userIndex")?.toInt() ?: -1 AccueilPage( @@ -104,7 +111,13 @@ fun AppNavigator() { } composable(Destination.Quote.route) { QuotePage() } composable(Destination.Search.route) { SearchPage() } - composable(Destination.SignUp.route) { SignUpPage(navController, services) } + composable(Destination.SignUp.route) { SignUpPage( + navControllerLogin = { + navController.navigate(Destination.Login.route){ + // Vider pile de navigation pour empêcher le retour à la page Sign up + popUpTo(Destination.Login.route) { inclusive = true } + } + },services) } composable(Destination.SubmitQuote.route) { SubmitQuotePage() } composable(Destination.QuizMenu.route) { diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SignUpPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SignUpPage.kt index 48c21b8..bb51217 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SignUpPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SignUpPage.kt @@ -51,15 +51,15 @@ import com.example.what_the_fantasy.ui.theme.colorBackground import com.example.what_the_fantasy.ui.theme.gradienBox import com.example.what_the_fantasy.data.services.ServicesStub import com.example.what_the_fantasy.ui.components.ErrorMessageProfileComponent +import com.example.what_the_fantasy.ui.components.hashPassword @Composable -fun SignUpPage(navController: NavController, services : IServices) { +fun SignUpPage(navControllerLogin: () -> Unit, services : IServices) { var username by remember { mutableStateOf("") } var email by remember { mutableStateOf("") } var password by remember { mutableStateOf("") } var confirmPassword by remember { mutableStateOf("") } var passwordVisible by remember { mutableStateOf(false) } - //val servicesStub = ServicesStub() Box( modifier = Modifier @@ -83,9 +83,9 @@ fun SignUpPage(navController: NavController, services : IServices) { PassWdTextFieldSign(R.string.PasswdLogin,password, onValueChange = { password = it },passwordVisible,onPasswordVisibilityChange = { passwordVisible = !passwordVisible }) PassWdConfirmTextFieldSign(R.string.ConfirmPassWdSignUp,confirmPassword,onValueChange = { confirmPassword = it },passwordVisible,onPasswordVisibilityChange = { passwordVisible = !passwordVisible }) SpaceHeightComponent(16) - ConnexionButtonSign(R.string.ButtonSignUp,18, Color.White, Color.Black, username, email, password, confirmPassword, services, navController = navController) + ConnexionButtonSign(R.string.ButtonSignUp,18, Color.White, Color.Black, username, email, password, confirmPassword, services, navControllerLogin) SpaceHeightComponent(16) - ReturnLogin(R.string.ButtonLogin,12, Color.White, navController = navController) + ReturnLogin(R.string.ButtonLogin,12, Color.White, navController = navControllerLogin) } } @@ -198,25 +198,28 @@ fun ConnexionButtonSign( password: String, confirmPassword: String, service: IServices, - navController: NavController + navController: ()-> Unit ) { val title = stringResource(id = titleResId) var emailError by remember { mutableStateOf(false) } var passwordError by remember { mutableStateOf(false) } + var passwordErrorEmpty by remember { mutableStateOf(false) } var usernameErrorEmpty by remember { mutableStateOf(false) } var usernameErrorExist by remember { mutableStateOf(false) } - Button( onClick = { emailError = !isValidEmail(email) - passwordError = !arePasswordsMatching(password, confirmPassword) - usernameErrorEmpty = username.isBlank() + passwordErrorEmpty = password.isBlank() || confirmPassword.isBlank() - if (!emailError && !passwordError && !usernameErrorEmpty) { + if (!emailError && !passwordError && !usernameErrorEmpty && !passwordErrorEmpty) { usernameErrorExist = !service.CreateUser(username, email, password, "https://img.freepik.com/vecteurs-libre/personnage-magicien-malefique-fantaisie_1045-193.jpg?size=338&ext=jpg", service) + if(!usernameErrorExist){ + navController() // retour à la page login + } + } }, colors = ButtonDefaults.buttonColors(containerColor = colorButton), @@ -242,19 +245,26 @@ fun ConnexionButtonSign( ErrorMessageProfileComponent(R.string.ErrorPasswordSignUp) } + if (passwordErrorEmpty) { + ErrorMessageProfileComponent(R.string.ErrorPasswordEmpty) + } + + } + + @Composable -fun ReturnLogin(titleResId: Int, size: Int, color: Color, navController: NavController) { +fun ReturnLogin(titleResId: Int, size: Int, color: Color, navController: () -> Unit) { val title = stringResource(id = titleResId) Text( text = title, fontSize = size.sp, color = color, modifier = Modifier.clickable { - navController.popBackStack() // Revenir à la page précédente + navController() // Revenir à la page login } ) } diff --git a/What_The_Fantasy/app/src/main/res/values-fr/strings.xml b/What_The_Fantasy/app/src/main/res/values-fr/strings.xml index a9a859b..6485726 100644 --- a/What_The_Fantasy/app/src/main/res/values-fr/strings.xml +++ b/What_The_Fantasy/app/src/main/res/values-fr/strings.xml @@ -22,6 +22,7 @@ Les mots de passe ne correspondent pas Le nom d\'utilisateur ne peut pas être vide Le nom d\'utilisateur n\'est pas disponible + Vous devez mettre un mot de passe //Page Profil Profil diff --git a/What_The_Fantasy/app/src/main/res/values/strings.xml b/What_The_Fantasy/app/src/main/res/values/strings.xml index b74a681..254d478 100644 --- a/What_The_Fantasy/app/src/main/res/values/strings.xml +++ b/What_The_Fantasy/app/src/main/res/values/strings.xml @@ -21,6 +21,7 @@ Passwords do not match Username cannot be empty Username is not available + You must put a password //Page Profil Profile From c8f704627baf2f95c1cb47e1c4625226ca16366d Mon Sep 17 00:00:00 2001 From: "leni.beaulaton" Date: Sat, 1 Mar 2025 19:33:27 +0100 Subject: [PATCH 20/32] =?UTF-8?q?D=C3=A9connexion=20de=20l'utilisateur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../what_the_fantasy/ui/navigations/AppNavigator.kt | 6 ++++++ .../example/what_the_fantasy/ui/screens/ProfilPage.kt | 11 ++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt index f80a11c..5ab890c 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt @@ -106,6 +106,12 @@ fun AppNavigator() { navQuiz = { userIndex -> navController.navigate(Destination.QuizMenu.createRoute(userIndex)) // Passe l'index à Profil }, + navUnLog = { + navController.navigate(Destination.Login.route) { + // Vider pile de navigation pour empêcher le retour à la page profil + popUpTo(Destination.Profil.route) { inclusive = true } + } + }, services = services ) } diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt index 57a1fe5..02d00bc 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt @@ -76,6 +76,7 @@ fun ProfilPage(index: Int, navFavorite: (Int) -> Unit, navAccueil: (Int) -> Unit, navQuiz: (Int) -> Unit, + navUnLog: () -> Unit, services: IServices ) { val user = services.getUserById(index) ?: return @@ -122,11 +123,11 @@ fun ProfilPage(index: Int, SpaceHeightComponent(16) // Bouton - ButtonProfile(R.string.ButtonAddQuoteprofile, 18, Color.Black, Color.White) + ButtonProfile(R.string.ButtonAddQuoteprofile, 18, Color.Black, Color.White,navUnLog) // Pas encore de navigation definie SpaceHeightComponent(16) - ButtonProfile(R.string.ButtonLanguageprofile, 18, Color.Black, Color.White) + ButtonProfile(R.string.ButtonLanguageprofile, 18, Color.Black, Color.White,navUnLog) // Pas encore de navigation definie SpaceHeightComponent(16) - ButtonProfile(R.string.ButtonUnlogprofile, 18, Color.Black, Color.White) + ButtonProfile(R.string.ButtonUnlogprofile, 18, Color.Black, Color.White, navUnLog) } } @@ -461,10 +462,10 @@ fun DisplayPassword(onEdit: () -> Unit) { @Composable -fun ButtonProfile(textResId : Int, size :Int, colorTexte : Color, colorButton : Color){ +fun ButtonProfile(textResId : Int, size :Int, colorTexte : Color, colorButton : Color,navController: () -> Unit){ val text = stringResource(id = textResId) Button( - onClick = { /* Action */ }, + onClick = { navController() }, colors = ButtonDefaults.buttonColors(containerColor = colorButton), modifier = Modifier.fillMaxWidth(), ) { From 0867d41e1fa51093c7268b06fc5e0ce9ef1168f7 Mon Sep 17 00:00:00 2001 From: "louis.guichard-montguers" Date: Mon, 3 Mar 2025 10:59:26 +0100 Subject: [PATCH 21/32] ajout message d'erreur sur login si le user ou password n'existe pas --- .../what_the_fantasy/ui/screens/LoginPage.kt | 34 ++++++++++++++++--- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt index 767b2ad..913795b 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt @@ -5,14 +5,18 @@ import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -81,6 +85,8 @@ fun LoginPage(navControllerSignUp: () -> Unit, navControllerProfil: (Int) -> Uni } + + @Composable fun IdentifiantTextField(textIdentifiantResId : Int) : String{ val textIdentifiant = stringResource(id = textIdentifiantResId) @@ -129,31 +135,49 @@ fun PassWdTextField(textpasswdResId : Int) : String{ @Composable fun ConnexionButtonLogin(userStub : List, id : String, passwd : String, titleResId : Int, size : Int, colorButton : Color, colorText : Color, navController: (Int) -> Unit){ val title = stringResource(id = titleResId) - + var showError by remember { mutableStateOf(false) } Button( - onClick = { validLogin(id, passwd, userStub, navController) }, + onClick = { showError = !validLogin(id, passwd, userStub, navController) + }, colors = ButtonDefaults.buttonColors(containerColor = colorButton), modifier = Modifier .fillMaxWidth(), ) { Text(title, fontSize = size.sp, color = colorText) } + + if( showError){ + ErrorMessage() + } } -fun validLogin(identifiant : String, passwd : String, users : List, navController: (Int) -> Unit){ +fun validLogin(identifiant : String, passwd : String, users : List, navController: (Int) -> Unit): Boolean { + users.forEachIndexed { index, user -> val hashPassWd = hashPassword(passwd) if (user.username == identifiant && user.password == hashPassWd) { // Utilise l'index pour naviguer à la position correspondante navController(index) // Passer l'index à la fonction navController + return true } + } -} + return false + +} +@Composable +fun ErrorMessage() { + Text( + text = "Username or Password does not exist.", + color = Color.Red, + modifier = Modifier.padding(top = 8.dp) + ) +} @Composable -fun CreateAccountButton(titleResId : Int, size : Int, color : Color, navController: () -> Unit){ +fun CreateAccountButton(titleResId : Int, size : Int, color : Color, navController: () -> Unit) { val title = stringResource(id = titleResId) Text( text = title, From 347f28b7b34824b5a7a629a172adb769cdf30a6b Mon Sep 17 00:00:00 2001 From: tomivt Date: Tue, 4 Mar 2025 12:09:37 +0100 Subject: [PATCH 22/32] Add Scrollable Quiz Menu + QuizStub + Navigation --- .../what_the_fantasy/data/local/QuizStub.kt | 126 +++++++++++ .../what_the_fantasy/data/model/Quiz.kt | 8 + .../ui/navigations/AppNavigator.kt | 15 +- .../what_the_fantasy/ui/screens/QuizMenu.kt | 195 +++++++++++------- .../what_the_fantasy/ui/screens/QuizPage.kt | 3 +- .../app/src/main/res/drawable/hp.jpg | Bin 0 -> 35142 bytes .../app/src/main/res/drawable/lotr.jpg | Bin 0 -> 198780 bytes 7 files changed, 266 insertions(+), 81 deletions(-) create mode 100644 What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/local/QuizStub.kt create mode 100644 What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/model/Quiz.kt create mode 100644 What_The_Fantasy/app/src/main/res/drawable/hp.jpg create mode 100644 What_The_Fantasy/app/src/main/res/drawable/lotr.jpg diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/local/QuizStub.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/local/QuizStub.kt new file mode 100644 index 0000000..0561a26 --- /dev/null +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/local/QuizStub.kt @@ -0,0 +1,126 @@ +package com.example.what_the_fantasy.data.local + +import com.example.what_the_fantasy.data.model.Quiz + +object QuizStub { + val quiz1 = Quiz( + id = 1, + name = "Quiz Seigneur des Anneaux", + questions = listOf( + QuestionStub.question1, + QuestionStub.question4, + QuestionStub.question8, + QuestionStub.question9 + ), + img = "lotr" + ) + + val quiz2 = Quiz( + id = 2, + name = "Quiz Harry Potter", + questions = listOf( + QuestionStub.question2, + QuestionStub.question7, + QuestionStub.question10 + ), + img = "hp" + ) + + val quiz3 = Quiz( + id = 3, + name = "Quiz Divers Fantasy", + questions = listOf( + QuestionStub.question3, + QuestionStub.question5, + QuestionStub.question6 + ), + img = "hp" + ) + val quiz4 = Quiz( + id = 3, + name = "Quiz Divers Fantasy", + questions = listOf( + QuestionStub.question3, + QuestionStub.question5, + QuestionStub.question6 + ), + img = "hp" + ) + + val quiz5 = Quiz( + id = 3, + name = "Quiz Divers Fantasy", + questions = listOf( + QuestionStub.question3, + QuestionStub.question5, + QuestionStub.question6 + ), + img = "hp" + ) + val quiz6 = Quiz( + id = 3, + name = "Quiz Divers Fantasy", + questions = listOf( + QuestionStub.question3, + QuestionStub.question5, + QuestionStub.question6 + ), + img = "hp" + ) + val quiz7 = Quiz( + id = 3, + name = "Quiz Divers Fantasy", + questions = listOf( + QuestionStub.question3, + QuestionStub.question5, + QuestionStub.question6 + ), + img = "hp" + ) + val quiz8 = Quiz( + id = 3, + name = "Quiz Divers Fantasy", + questions = listOf( + QuestionStub.question3, + QuestionStub.question5, + QuestionStub.question6 + ), + img = "hp" + ) + val quiz9 = Quiz( + id = 3, + name = "Quiz Divers Fantasy", + questions = listOf( + QuestionStub.question3, + QuestionStub.question5, + QuestionStub.question6 + ), + img = "hp" + ) + val quiz10 = Quiz( + id = 3, + name = "Quiz Divers Fantasy", + questions = listOf( + QuestionStub.question3, + QuestionStub.question5, + QuestionStub.question6 + ), + img = "hp" + ) + val quiz11 = Quiz( + id = 3, + name = "Quiz Divers Fantasy", + questions = listOf( + QuestionStub.question3, + QuestionStub.question5, + QuestionStub.question6 + ), + img = "hp" + ) + + val allQuizzes: List = listOf(quiz1, quiz2, quiz3, quiz4, quiz5, quiz6, quiz7, quiz8, quiz9, quiz10, quiz11) + + fun getQuizById(id: Int): Quiz? { + return allQuizzes.find { it.id == id } + } +} diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/model/Quiz.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/model/Quiz.kt new file mode 100644 index 0000000..bfea084 --- /dev/null +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/model/Quiz.kt @@ -0,0 +1,8 @@ +package com.example.what_the_fantasy.data.model + +class Quiz ( + val id : Int, + val name : String, + val questions : List, + val img : String +) \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt index e68c8d3..97c04bb 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt @@ -27,7 +27,10 @@ sealed class Destination(val route: String) { fun createRoute(userIndex: Int) = "Profil/$userIndex" // Fonction pour créer la route avec l'index } data object QuizMenu : Destination("QuizMenu") - data object Quiz : Destination("Quiz") + data object Quiz : Destination("Quiz/{idQuiz}") { + // Ajout paramètre idQuiz + fun createId(idQuiz : Int) = "Quiz/$idQuiz" + } data object QuizEnd : Destination("QuizEnd/{idQuiz}/{pts}") { // Ajout paramètres idQuiz et pts fun createIdAndPts(idQuiz : Int, pts : Int) = "QuizEnd/$idQuiz/$pts" @@ -56,15 +59,19 @@ fun AppNavigator() { composable(Destination.Favorite.route) { FavoritePage() } composable(Destination.QuizMenu.route) { QuizMenu( - navControllerQuiz = { navController.navigate(Destination.Quiz.route) } + navControllerQuiz = { id -> + navController.navigate(Destination.Quiz.createId(id)) + } ) } - composable(Destination.Quiz.route) { + composable(Destination.Quiz.route) { backStackEntry -> + val idQuiz = backStackEntry.arguments?.getString("idQuiz")?.toInt() ?: 0 QuizPage( navControllerQuizEnd = { idQuiz, pts -> navController.navigate(Destination.QuizEnd.createIdAndPts(idQuiz, pts)) }, - navControllerQuizMenu = { navController.navigate(Destination.QuizMenu.route) } + navControllerQuizMenu = { navController.navigate(Destination.QuizMenu.route) }, + idQuiz ) } composable(Destination.QuizEnd.route) { backStackEntry -> diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizMenu.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizMenu.kt index 08225f0..08a80dc 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizMenu.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizMenu.kt @@ -2,116 +2,159 @@ package com.example.what_the_fantasy.ui.screens import androidx.compose.foundation.Image import androidx.compose.foundation.background +import androidx.compose.foundation.border import androidx.compose.foundation.clickable +import androidx.compose.foundation.gestures.scrollable +import androidx.compose.foundation.horizontalScroll +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.width +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.verticalScroll +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp import com.example.what_the_fantasy.R +import com.example.what_the_fantasy.data.local.QuizStub @Composable -fun QuizMenu(navControllerQuiz: () -> Unit) { - Row( - modifier = Modifier - .fillMaxSize() - .background(Color(0xFF100C1B)) - .padding(top = 100.dp) - ) { - Spacer(modifier = Modifier.weight(0.1f)) +fun QuizMenu(navControllerQuiz: (Int) -> Unit) { - Column( + Column ( + modifier = Modifier.fillMaxSize().background(Color(0xFF100C1B)) + ) { + // Bandeau supérieur + Row( modifier = Modifier - .weight(0.9f) - .fillMaxHeight(), - horizontalAlignment = Alignment.CenterHorizontally + .fillMaxWidth() + .weight(0.1f) + //background(Color(0xFF300052)) + .padding(20.dp), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically ) { - Box( - modifier = Modifier - .size(width = 150.dp, height = 100.dp) - .padding(8.dp) - .clickable { - navControllerQuiz() - } - ) { - Image( - painter = painterResource(id = R.drawable.quiz), - contentDescription = "Quiz 1", - modifier = Modifier.fillMaxSize(), - contentScale = ContentScale.Crop - ) - } - - Box( - modifier = Modifier - .size(width = 150.dp, height = 100.dp) - .padding(8.dp) - .clickable { - navControllerQuiz() - } - ) { - Image( - painter = painterResource(id = R.drawable.quiz), - contentDescription = "Quiz 2", - modifier = Modifier.fillMaxSize(), - contentScale = ContentScale.Crop - ) - } + Image( + painter = painterResource(id = R.drawable.profile_icon), + contentDescription = "Profil" + ) + Image( + painter = painterResource(id = R.drawable.toggle), + contentDescription = "Profil" + ) } - Spacer(modifier = Modifier.width(10.dp)) - + // Contenu princiapl Column( modifier = Modifier .weight(0.9f) - .fillMaxHeight(), + .fillMaxSize() + .padding(20.dp), horizontalAlignment = Alignment.CenterHorizontally ) { - Box( + Text( + text = "▶ Menu des Quiz ◀", + color = Color.White, + style = TextStyle(fontSize = 25.sp, fontWeight = FontWeight.Bold, textAlign = TextAlign.Center) + ) + Spacer(Modifier.height(20.dp)) + Column ( modifier = Modifier - .size(width = 150.dp, height = 100.dp) - .padding(8.dp) - .clickable { - navControllerQuiz() - } + .background(brush = gradient, shape = RoundedCornerShape(20.dp)) + .fillMaxSize() + .padding(vertical = 30.dp) + .verticalScroll(rememberScrollState()), + horizontalAlignment = Alignment.CenterHorizontally ) { - Image( - painter = painterResource(id = R.drawable.quiz), - contentDescription = "Quiz 3", - modifier = Modifier.fillMaxSize(), - contentScale = ContentScale.Crop - ) - } - - Box( - modifier = Modifier - .size(width = 150.dp, height = 100.dp) - .padding(8.dp) - .clickable { - navControllerQuiz() + val quizzes = QuizStub.allQuizzes.chunked(2) + val context = LocalContext.current + for (rowQuizzes in quizzes) { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceEvenly + ) { + for (quiz in rowQuizzes) { + val imageResId = context.resources.getIdentifier( + quiz.img, + "drawable", + context.packageName + ) + Column ( + modifier = Modifier + .size(width = 150.dp, height = 145.dp) + .clickable { navControllerQuiz(quiz.id) }, + ) { + Image( + painter = painterResource(id = imageResId), + contentDescription = quiz.name, + modifier = Modifier + .size(width = 150.dp, height = 100.dp) + .clip(shape = RoundedCornerShape(20.dp)), + contentScale = ContentScale.Crop + ) + Spacer(Modifier.height(10.dp)) + Text( + text = quiz.name, + style = TextStyle( + fontSize = 17.sp, + fontWeight = FontWeight.Medium, + textAlign = TextAlign.Center, + color = Color.White + ) + ) + } + } } - ) { - Image( - painter = painterResource(id = R.drawable.quiz), - contentDescription = "Quiz 4", - modifier = Modifier.fillMaxSize(), - contentScale = ContentScale.Crop - ) + Spacer(Modifier.height(30.dp)) + } } } - Spacer(modifier = Modifier.weight(0.1f)) + // Bandeau inférieur + Row( + modifier = Modifier + .fillMaxWidth() + .weight(0.1f) + .background(Color(0xFF300052)) + .padding(20.dp), + horizontalArrangement = Arrangement.SpaceAround, + verticalAlignment = Alignment.CenterVertically + ) { + // Bouton Likes + Image( + painter = painterResource(id = R.drawable.like_icon), + contentDescription = "Bouton" + ) + // Bouton WhatTheFantasy + Image( + painter = painterResource(R.drawable.wf_logo), + contentDescription = "Menu Button", + Modifier.clickable { } + ) + // Bouton Quiz + Image( + painter = painterResource(id = R.drawable.quiz_icon), + contentDescription = "Bouton" + ) + } } } \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt index 721d37d..b5b3f1c 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt @@ -25,7 +25,8 @@ import com.example.what_the_fantasy.data.local.QuestionStub @Composable fun QuizPage( navControllerQuizEnd: (Int, Int) -> Unit, - navControllerQuizMenu: () -> Unit + navControllerQuizMenu: () -> Unit, + id: Int ) { val questions = QuestionStub.allQuestions var idCurrentQuestion by remember { mutableIntStateOf(0) } diff --git a/What_The_Fantasy/app/src/main/res/drawable/hp.jpg b/What_The_Fantasy/app/src/main/res/drawable/hp.jpg new file mode 100644 index 0000000000000000000000000000000000000000..38165f455498d906215f8a80fccbfd7361eacf42 GIT binary patch literal 35142 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

MS*2JOS{0uB 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 Sf1DbQzJnFpMu*?`SO3|HRD#9; literal 0 HcmV?d00001 From 89678928fbf97c1dd38afdc1e840c9927d0ca71b Mon Sep 17 00:00:00 2001 From: tomivt Date: Tue, 4 Mar 2025 14:40:10 +0100 Subject: [PATCH 23/32] Add QuizMenu Button + Finish view --- .../what_the_fantasy/data/local/QuizStub.kt | 18 +++++----- .../ui/navigations/AppNavigator.kt | 4 ++- .../ui/screens/QuizEndPage.kt | 34 ++++++++++++------ .../what_the_fantasy/ui/screens/QuizPage.kt | 32 ++++++++++------- .../app/src/main/res/drawable/quiz.jpg | Bin 13644 -> 291119 bytes 5 files changed, 54 insertions(+), 34 deletions(-) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/local/QuizStub.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/local/QuizStub.kt index 0561a26..7e47169 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/local/QuizStub.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/local/QuizStub.kt @@ -34,7 +34,7 @@ object QuizStub { QuestionStub.question5, QuestionStub.question6 ), - img = "hp" + img = "quiz" ) val quiz4 = Quiz( id = 3, @@ -44,7 +44,7 @@ object QuizStub { QuestionStub.question5, QuestionStub.question6 ), - img = "hp" + img = "quiz" ) val quiz5 = Quiz( @@ -55,7 +55,7 @@ object QuizStub { QuestionStub.question5, QuestionStub.question6 ), - img = "hp" + img = "quiz" ) val quiz6 = Quiz( id = 3, @@ -65,7 +65,7 @@ object QuizStub { QuestionStub.question5, QuestionStub.question6 ), - img = "hp" + img = "quiz" ) val quiz7 = Quiz( id = 3, @@ -75,7 +75,7 @@ object QuizStub { QuestionStub.question5, QuestionStub.question6 ), - img = "hp" + img = "quiz" ) val quiz8 = Quiz( id = 3, @@ -85,7 +85,7 @@ object QuizStub { QuestionStub.question5, QuestionStub.question6 ), - img = "hp" + img = "quiz" ) val quiz9 = Quiz( id = 3, @@ -95,7 +95,7 @@ object QuizStub { QuestionStub.question5, QuestionStub.question6 ), - img = "hp" + img = "quiz" ) val quiz10 = Quiz( id = 3, @@ -105,7 +105,7 @@ object QuizStub { QuestionStub.question5, QuestionStub.question6 ), - img = "hp" + img = "quiz" ) val quiz11 = Quiz( id = 3, @@ -115,7 +115,7 @@ object QuizStub { QuestionStub.question5, QuestionStub.question6 ), - img = "hp" + img = "quiz" ) val allQuizzes: List = listOf(quiz1, quiz2, quiz3, quiz4, quiz5, quiz6, quiz7, quiz8, quiz9, quiz10, quiz11) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt index 97c04bb..3ef0793 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt @@ -71,6 +71,7 @@ fun AppNavigator() { navController.navigate(Destination.QuizEnd.createIdAndPts(idQuiz, pts)) }, navControllerQuizMenu = { navController.navigate(Destination.QuizMenu.route) }, + navControllerMenu = { navController.navigate(Destination.Accueil.route) }, idQuiz ) } @@ -80,7 +81,8 @@ fun AppNavigator() { QuizEndPage( idQuiz, pts, - navControllerQuizMenu = { navController.navigate(Destination.QuizMenu.route) } + navControllerQuizMenu = { navController.navigate(Destination.QuizMenu.route) }, + navControllerMenu = { navController.navigate(Destination.Accueil.route) } ) } composable(Destination.Profil.route) { diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt index 36ebbfc..14c3f04 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt @@ -26,6 +26,8 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.example.what_the_fantasy.R import com.example.what_the_fantasy.data.local.QuestionStub +import com.example.what_the_fantasy.data.local.QuizStub +import com.example.what_the_fantasy.ui.navigations.Destination val gradient = Brush.linearGradient( colors = listOf(Color(0xFF7B1FA2), Color(0xFF311B92)), @@ -34,7 +36,12 @@ val gradient = Brush.linearGradient( ) @Composable -fun QuizEndPage(idQuiz: Int, points: Int, navControllerQuizMenu: () -> Unit) { +fun QuizEndPage( + idQuiz: Int, + points: Int, + navControllerQuizMenu: () -> Unit, + navControllerMenu: () -> Unit +) { Column( modifier = Modifier.fillMaxSize().background(Color(0xFF100C1B)) ) { @@ -80,14 +87,13 @@ fun QuizEndPage(idQuiz: Int, points: Int, navControllerQuizMenu: () -> Unit) { horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.SpaceEvenly ) { + val quiz = QuizStub.getQuizById(idQuiz) + val nbQuestions = quiz?.questions?.size Text ( - text = "Quiz N°$idQuiz", + text = "${quiz?.name}", color = Color.White, style = TextStyle(fontSize = 25.sp, fontWeight = FontWeight.Bold, textAlign = TextAlign.Center) ) - - val nbQuestions = QuestionStub.allQuestions.size - Text ( text = "Nombres de Questions : $nbQuestions", color = Color.White, @@ -99,13 +105,17 @@ fun QuizEndPage(idQuiz: Int, points: Int, navControllerQuizMenu: () -> Unit) { style = TextStyle(fontSize = 15.sp, fontWeight = FontWeight.Bold, textAlign = TextAlign.Center) ) + val pourcentage = (points.toDouble() / nbQuestions!!) * 100 + val note = when { - points == 10 -> "S" - points >= 7 -> "A" - points >= 4 -> "B" + pourcentage == 100.0 -> "S" + pourcentage >= 70.0 -> "A" + pourcentage >= 40.0 -> "B" else -> "C" } + println("Note obtenue : $note") + Box( contentAlignment = Alignment.Center, modifier = Modifier @@ -145,13 +155,15 @@ fun QuizEndPage(idQuiz: Int, points: Int, navControllerQuizMenu: () -> Unit) { Image( painter = painterResource(R.drawable.wf_logo), contentDescription = "Menu Button", - Modifier.clickable { navControllerQuizMenu() } + Modifier.clickable { navControllerMenu() } ) - // Bouton Quiz + // Bouton Menu Quiz Image( painter = painterResource(id = R.drawable.quiz_icon), contentDescription = "Bouton", - modifier = Modifier.size(50.dp) + modifier = Modifier + .size(50.dp) + .clickable { navControllerQuizMenu() } ) } } diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt index b5b3f1c..f8d6033 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt @@ -21,14 +21,17 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.example.what_the_fantasy.R import com.example.what_the_fantasy.data.local.QuestionStub +import com.example.what_the_fantasy.data.local.QuizStub @Composable fun QuizPage( navControllerQuizEnd: (Int, Int) -> Unit, navControllerQuizMenu: () -> Unit, - id: Int + navControllerMenu: () -> Unit, + idQuiz: Int ) { - val questions = QuestionStub.allQuestions + val quiz = QuizStub.getQuizById(idQuiz) + val questions = quiz?.questions ?: emptyList() var idCurrentQuestion by remember { mutableIntStateOf(0) } var pts by remember { mutableIntStateOf(0) } @@ -49,7 +52,7 @@ fun QuizPage( if (answer == correctAnswer) pts++ if (idCurrentQuestion < questions.size - 1) idCurrentQuestion++ - else navControllerQuizEnd(0, pts) // Retour menu + else navControllerQuizEnd(idQuiz, pts) // Retour menu } Column ( @@ -84,22 +87,24 @@ fun QuizPage( horizontalAlignment = Alignment.CenterHorizontally ) { val question = questions[idCurrentQuestion] - Column( horizontalAlignment = Alignment.CenterHorizontally, ) { - Text( - text = "▶ Quiz ◀", - color = Color.White, - style = TextStyle(fontSize = 25.sp, fontWeight = FontWeight.Bold, textAlign = TextAlign.Center) - ) + if (quiz != null) { + Text( + text = "▶ ${quiz.name} ◀", + color = Color.White, + style = TextStyle(fontSize = 20.sp, fontWeight = FontWeight.Bold, textAlign = TextAlign.Center) + ) + } + Spacer(Modifier.height(20.dp)) Column ( modifier = Modifier .background(brush = gradient, shape = RoundedCornerShape(20.dp)), horizontalAlignment = Alignment.CenterHorizontally ) { Text( - "Question ${question.id}", + "Question ${idCurrentQuestion+1}", color = Color.White, fontSize = 18.sp, modifier = Modifier.padding(top = 20.dp), @@ -162,12 +167,13 @@ fun QuizPage( Image( painter = painterResource(R.drawable.wf_logo), contentDescription = "Menu Button", - Modifier.clickable { navControllerQuizMenu() } + Modifier.clickable { navControllerMenu() } ) - // Bouton Quiz + // Bouton Menu Quiz Image( painter = painterResource(id = R.drawable.quiz_icon), - contentDescription = "Bouton" + contentDescription = "Bouton", + Modifier.clickable { navControllerQuizMenu() } ) } } diff --git a/What_The_Fantasy/app/src/main/res/drawable/quiz.jpg b/What_The_Fantasy/app/src/main/res/drawable/quiz.jpg index d0bcef9fef19346165fa1fc927c32b73f58f5e7c..3c41482cd1a2c3ba0cd756a1ed53d4b239439f74 100644 GIT binary patch literal 291119 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ᣯMK)dBK4%HcTF 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ʿ~VYvXw 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

s9vma+5kY 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

DCAZe^op%wRSru?%N($@4&!nw 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 O;r{>)dWYe>6aU$pp%L={ literal 13644 zcmeHtc_38p_y3*EGIk-^8cP&m#=aYSBH4;ij4@=H!ORGSP|22vl3g2Zw#d>()?`m* z4W&dVMfT-;hwAfwf8PA@`+h&a|31fc?{lB?I_EskdCv3P=bk%j-D^Vt`+h@XLjVHO zUdUbmSbGno8U(nz0)VlxB)|Xw01RM-Kml{GBnSTUK@b20yoQ7S{J+Z4V3|f1egq2D z-J67>xRcyau3k7Q${p`bk~vJkQ@zP3cP}qL3YCmohqzO`K|a9+1;YK0yHg1$XB^(s zjqL45a*;9cp`b8mnZ2MPnyug0wfBhj<5a4Tnyf5|B7<}Bb|%Q+y@|2`I3HPz3|bb@ z&<^kcwGgN%XM&qMNmJz8<4O^fyNjlXjp70H0UtfWarb>E$povDX4d$Vo_JLk5p6A` zMu1uX(T7N&;!puZFA_y9KvQI0xf)oeRm+NKAsIEuF0N{p`i8$S;GL$(ug3WM`^)&t z%XpLBWHG9$s#MK(E5)SP^*j^jpx43TX(pdyDRl?_FeFQ@IHQIuXU>~cv*rM zfk+@xDIgXDn%eNL4;Tf1&|u&EC9)W2E$XXKFAF`(2R_p0fU2`=uS(RII|HXI}CZbkLRd#-~- zQ2*vJH603tKsDCa6v4>fbg#rdLEq2@~f3&W< z*NfnW^OE&)#}h~tf;7&JOjsAv_M;LViD0Yzh?-!m;YjXyaU9V{omNfp_9Np7nr`0S zZeD~xwRn(?b9W5SP^_T z3SRD723`ab4y8->KH=%DAxn#VuyUiY4wL<>Fj#i^*F4$Kq2opUt&A2KYF;>62LhyB z2(CCkFRF;ve|r7-w^pv(r?v90EkkOoyVP`jur}#7iq=sd9GOC}4)h^tN>~y$hDt)~ z?}CRcO|@w8y;V%C$K0Qoa3lUJ#-#u6aiJmmw@%R7@^5|L7@@zR))%z(as11QMq4P? z>%f%~j0f32ODlNuXK^Nwz!lk_w)Cz|0@>!j7d(`_3>r|;H9i1`uRl)C2tdsN=D&uG z05kwF|4)yy0F(sqZZ*q+wLU-(K+@AQ(9v=^PE!IwGBL5TunMrV3#jiF*{%Nn zOl#Eu2Lsdv>H>ps08kDHj03V(3-E)FZU6>8z1Ll~eu6*|bTBwQ$mIJ64}d^na0K02 zFTf0g08n-qJNSs5sQQ=ie@p)-4=@B6ta?liZ?9?;N<5g;6Ku7AD|Kw)kH?B9-*gsK zmqEqgU9TuT?u}0>gWy(l223=h=E`( zR6IWVq~*e<0*W)E!#=Y`QMYGP=j*OxK|Elbdu!ow%ag1lp|rbyqk4(+pXWmCzWl1L z?*8WY{!7WwzoBTiEJ8>7pK09&fYe1Z`%^zwN}Ch{4SxO{1zpA)4>0C$|GWb879H@| zMD&B|)3)fxp%C6a&9~`-hUr>~0OUv4F%ve&5BWm?`kA2CGk={B>^~(nM3#5TR&oNo z_JXbHM@i3u0f3FSlBMPAfilC5b?}j^4wA&>Yrln@{^wme};mJ3o9jvWmiFj!V&*z-o;Rec#31%jOKFaKZO)u zkG}3K1jITg%e1~OSAqNU)P~M>!YBYwJvo>>!?GOzPnnGxIt~qG?WfaSSfIYg%e%36 za%3wcB&zZKga>6DfSj8eQD&e@>s6`@9*9 zRyRLhwyo_eo)ds5+GiE@HTU#^OX{Ws0lWW29&Bi8L0hlqrwQpTM`|i&Dt%xTg95JB z_pjs+9IM}IQ2-z}+8!s@ya5NQaP;BO81=)ZmT8q_+mnm2OJFOjm)C%7;>S}h*sZVv z%F2&_*f@baPYjfu7g+*4FJgLXvIW3J64`X|)5qElO8vMpL&0{qGrIyxz`rY&=RX zJtak%AYRy7ljog|CfsLyzZ3 z`&M99$DLM3v)o#E>QGS7A^pTpURy_vfRS>=_pamd0Iwr!nxp!)O4L?r*O4|p0F3GV ztFg~iJMvaQ2>2`*lm7|;Mi~oB#3xTLZ~6?NNy9$oKRKvfan=^Vl%5Wr2f;75QVJ+q zfBA&|x%{EZxNW>M5nNH{QbV@{PsNN;CKse0rq3#m^gE`Zwgmn!8PMNyyMGscUqiv< z0~}cAL$C+{8VdXc5(;3!?I3oY0Dub`9-hQSBLMkJ91gIvv!8_vGw8BMh=FG)U>Tmm zb!*Rl7t8RZTL=UK$lgG*L!lrLMDWJfMu>}xi(x=Q$jQm=NdU<-+QkwSL+sJf!TvIj z0zyH(5axZl?6qex!p!@yko_Pg$6!yweoIjG?%lf)zZwBuPwapV)rCUAjvzqZp8ZIq zxjFLhePIAl8$IO$%po*8=D!sDzF>bBKrj54{(pNw8{E6gvI77e1V$sougyJe@6N%A zKsjyWHfKj;xP(PS<>bY%KB4j1;D(+7-0VXT&@~``fACFM7VmkolfRM?#fj$zZ?#L| zGlrS^Bdi`IUi+^VWA>LGmh!(Iz`9ao1LtlkRXe7S51dUfco4~VqWz-kTNo#Qe3r6| zyBya;X>8(n0&_hclK{(mVb|+m9ChiKt5<9CU6b}V-*)XMTI}Mwvizh%+pH%gWpPLQ zY1e3F`F2u&_6wgXTpKqtPiO+L)B5QZm;VYpd=|3O| zH|G*kt((qHYgyW798tfo-`P@?w2QHK=ER_BWK&#Ty+W?E(1A}gJ^lEDQEzMt$BhHa z_?6Oo@du8{EoWxmjjGtAxF@GE=V^uo*V7zPA-SN;+o!LU)Mv)#oU+UPPSlR5Olxe4 zBU|*oRkv&Kw4L-6%yXK_g{w%$etURVcDna8$IFjX2D{^vGn6xX@n(irDmyZ`dV>8( zn44v@LxwJwQqTjMYk-7cevAOZ)5JX)W62hHK}p+U06Kn$!0D2&`!u4@DqpTct_$$3 zEs5gf77l56XM~jK%njXfyVs?uAMHO4xE+` z5=&~~ZnELGC+$t$_bkr~ufA)TzL`8aWf1ai5qH}7`6;~U!w2g2e@<4yS1fBzk0A1- zFa1=C6uMhzSLktybt=lTQ{W2e$qmV$*LcX?3eqy7;acC(Z_=VIi*~9rV=uQ;!aYd# zceJZo+o;=576k~@RGe!2Y^>cmM1Fb8TRTInl9m2WSV7jkED#PUiECM4t>l54m5wa8j$3~wwQ3_>f=Ds;~U zN^V?{ys?I&92)?zpt~V(?C{3**DdWLwFUr#v>6D#W<#KG1RMf~!q%remCva;w*iAe$7DeMO+)Q29yaO=)=+R+?iBSOANoGq89)DE^B+IZ{PDh z@4skup!aKbxL==8>^8ifw-c#ubbWk!W=v7L}`$2$26GykjoRv8Xqa_4q5~5lrCr0J-T^JZdNW&@8C(`;a%awYTcMuRQO3>^jN`_jviZzCNznx8SErZ#>?pF z(g!laf;aLHm%VH^O{#j^_EWN}Y}eVuXLtSVQarP^#cUHQ_=p_Q(T^y;ZY z3pUXHXl_qfz@l`GD z_(126t0$`yD$+ex%oIa%`6{h0INqr*c4PbQN0gS;T|MVH@8EH}adld5A!jl>*=KhI zF|t<_CLPZcZWr%JtsYT#Ri5I~9jUgwxhIA-q9gV2z4UJ45bBuujj@8c4%f@~Tt6yJ z?cKF=mL;l0?;27wWhfO zAwxHUiBIZIoe#h8Gh;+zaH!w2Rq-?5^o79sC&R~l4+=J=Wi6buE-H)(r#u-l>i60q zIBf1W70tz>w_f8ZM)#Iw@uS;u*{N+LJ+X z9k%H5_7-=`+xwbr`{&iHU1sa**MRtR55szf?kno2Cyc-ev5Nx$A4uTS=+|_heVu`F zY(qQ2z$syl71sGZ4WP7Xu-bo9`n@+Y+rGM=E0(<+?uSgoli74?2E{o7l?n7Hw|>fv z_XwC)XU0yH{Df-9k24e7Bt9|bz71SC!eadfedpW(9)7(yzKN~u-f|FwqGs`v=ksw2 zM?@?*UWm_q(JqLwir1^OvdY&{eta_h{N4AGsX2GL@?qZq3BW z!znp0s`|$Yw;94sCDe$_@T>YQIgwTAV zYwb9kf>Xga7XP4d?*J#$8mKGZK%ocD3VGGKI)@uw3WuLYzr4+D@RY=>m%)(oez!WE zI6XQQk9e(Q|CZtF1iYE!T{q)Z@$BUuZ(Gr`aX5&Ie3}M$*5Qmx%{g3Gwi3ApfL>K( z2ltpzItFl|*;r-3938*`;}k|?oKPZiI_4I*ux;`QMOaH`-)o|}&%7Z*qyJGA}4t)3-a|J<^(dVC^GTAKHKl1dhB~XEHdd!nP|hv=aPLM zvckcl_n*WbU?ZtoNS{7_zus*~N;n~kUw|}xOi*aB?0JNhi0C+P9LBY$THJRYI}YiB z)x`+Fw`)G*f9}Q4x_9^auk|C=$L$pRWk;k>U}6^Q^Mt?gJvd#mFN#0ZP=qJmTi{UK z1fn6z#QCehhr3ZMdsM!0DqX05e|y2cPOyUMB6t1mn!HBCK?FZX4t?{kI<}+e8{3d) z{9b9RD~z_iR=K_gNGpyJdxK{>7g%>^qd74ndjn&HoExqd(F)v6FqixeRr_2+t!oJ; zO3)pxD~e+z{gmjKLTzO>lWrH)L}6~u+PU&1NpgemVLVDixAqg|Lq^ivi$ncAJl&7a zy)dY)x^c7z{+J(b`o7%Zg@Nld+c2v6J&zZ&jEiXP&A!0yDOC){e_`gNl?D1gkomQRx2chN*2^Nf%_J7};AD|E3x??t^Va+k1~)aS zUAHQDGapeeyf6_-JFn3vl6G-2p)^zJFMk?}>5tZctF9Bk1p{dw3pU%g*Jd!1Zw`t# za@Ms%rBpla_BKvJl9~mg9cIt$n@!9;6n7&;ZugA^l6AVlc@fLtukQ2?QO0u>H#Nzq z;AWY_0S_zKb5`09osH})!}-2=bERP}`o0*|tH{3uuH$Nycz<|iOcT%jGv=uNfsqlh zy=y=b8yJi-?BJ9JV07T?$?s<#z#)vWKWNj2n6B2vAhq|9Kj8!W*)nWigFX~7NQih(A)5YKnvJzl@Qdqj0(yOx#tt5 zzLPHQY&G&}Nsd`CY8#CUz?OMQKN7y8E)#is4Y)tihW?q-AU(F?(@0ERk!;hx9^sqp zGLezBf21X;-2K**tFCPxUwrS5JGZQU=C-$YyoIP^9=RBu%pQKlIx;onp`Kz(9Yg}+!_Wqt)seFuA%jw4!4=Z~_zR55oI?>!=@X0juH*XKIlHrPjgQlz`boKt+0577-)?rJ*wj5OeW zs$#6?Lk7W$NIDmrMOOfa6wjn|DVDW={CU!M|FgngJ8@Aa{TIz$XPv+HHF@q`?QMuQ zw_6l^rucG|e{qqR)!r42uQzq8mml8oJ$Al62+uu<**C|aA!ksYS6tw@M3(xgjD|Y*&ijiTdUO#_wBLIzc}d7%Ojz?oIzvP3U2%&;WLb*% z;LcAMKfQQIGJ6{slC=CxmHQQS3VG7%=Zo^k{3PH`4i21XIASOZiXe}C)&f5`y=;9KQ?=|AHE&RYY8TWLb-ee<$LZO(=E z@Iv^#w@7FQRI&H+^l@T06NLvLXZwhyHA9;*g`X}FOZ$jrrkgOK{4^GLgl@v5FYUvx z6^{!*Xwro5o5MuLIg{@&9`F8f!?dyiYZ;% zr?V9k*+(p#*+LMSQQF54x&@OC6dc`x2jEKkwqv(qrV)!`x8fm{`rx5kF}D#*k8i~T z#QU7lTQUVpJGaydS0|QiDTpZTv)qyiM&@P_yMY(GWW1%||A7I0w$*nZP^tD@Sm;)| zVGWb9TQZSCeblP0BzH`fR&OaO)JHtOl^_5H-h(ZfZp0GWT-ls<_o;_&&H-y-mf&}| z|1cSY<3&3{|4lDMES?dFhll|Ht#AqQ7XU;I3T9UrP~nUKfJKGtz}aBKs+Nn)cBXqKLF_OZvJWKAJ%^h z|8WoOq`j1I&|XRq5C$j|{KYAaAOHtS7^8!8Vn>@>gk3A@@J*Qd{vHdy89!ftDWT=z zz|CB;v~RG)f-wD$l~%olF^(TAv)inXGG2|==t+^9P2GFq$T_0%{cVnkA6y^0328fM zJvQxhrm%@`*-C zl4j#1nW5cRaEHf2z%9{F0mYFJi_72MskIcZeBks_2{Qley9VS)#G4G9s`QRIcFL%Z z{apV@s~7EPsgrUp{`zHl0e?uDO*eFJx2sa^55`k%y3pHig+^xU^W`;m`(h?J-u3GocRtMc=nR8ZOWN|guUtG$^3+UQH3U0f zP3xP2E}v}sy)CaqSLbxBZRVH00`@A^a;ptGD#XF>fJF|PrwZ{Sx+7Vqn6;AGRXTM0 zOCOmt7RpWt-cWl*RF9n?qlXvR^F;l{8QG7lQW4TT^){8dUGrcwy<3kmyJNH>0NeWM zx`YPZG5p);6-}g~%E8kW)u&ckw+(*v$y@^{XXlpEB`W(Z9%&DtUXS#oqvx`!55Ril zql@DrAF8sf-m<-|+~?|>^6|V*mTuV2Y9t?{3-bAcGxk>3yp9z-r}Noeot(t=`U#7` zBIlU~A2CWX@XlRes(42)d}nArjUHa_Ekv5P?o>o|dt%Z|nQ`2I>A z({g5D$mSapBByU)7Q!hV7Q8WpE-wyF(ZQ6#7B~jR7NE{tcX&|c^+(~Q98A_LzB7$d zr=lx+vO4*alyn}fJm{bVtQ?Z`?6VF4ig<&y1ysdv zDfo;|v@n^n81l)ktAQm7XB$^S9e! z;fF_)tZaKJR2#q7Jgd;?(YphM&tm=kaCGAx4xZIG@Pz5i26o#loTHo2+qQx_hRQ&( z&5D%i{NxSam9ae_I`2_3=Nqa$-xPfu)h4ZrZCfL$8(KmUdbR`bAxJ10)mFsRkgF)qCFqEHS1Vc zH?s_@Mi2R?zn*q=bZBTcwSrYLln>!+HDqc}s1YzOW=H04ur7v-<39yZlN$lQhWv z0gD*N(|30mt^qtHib+*Yac-D?pXI_ZcRqOKwa40`^Cb#zwZytFT2HHIU9lT0R8R|i zHi%ascs6&Ow@QGrQQK!x-DNrxb+NDjIB6!g#{xs2`IN2JZo!1{Q-hNcgN1@&BbIBQ z!s|fgg+p5J(nAKdG_|cIe6dx5PvRzCHu%Mf)fnfDRc=$g$WViC?2GLj5Hv z1|-$;ovbeWW^u@d`@_@RbbKfQz2edYn>gg>^rhs$`#o1RT6W3{35V8~+zLthwxG+^ z`R?0r^!u|<87YUaoi{2|wrMGwWU$U3Pb}`cpp%+?5*54#>?s)^tKAFTb}o8>*Z*MI z(ebWrY6=wXumz+0^7{w4bGHllHXu{cCPPRLizg?8%S<=~?KCr08CH-1T$4{OFp`au zc!ER}wiQxorTrfD zn!=&3_vPNYczi$h49ektJW@umWev#fF3L@JDNXs&KGW7&r6VEfQ9*aVBzmf!Wx%_; zUYygG*m45pK5~KZWgd>>8}Q8b<}E%)4_g|X*exA-;d!2ou|031W^P;Pfu()sbVWXw zC6rHm^DfLT74gq`h#LxVQsw_Pw5#)j87WI*0w|Tf1lB$f4?L4lsa$2teN5gaIVZ&8 zn?~%LVThNmy9LAT2UGL><3ozIXA*7FhMQs$MWUr=4h-nu;WCYD5UrwOBI#}P-rjIH zB4`tdC}NFDle)_~;_ ztxJKAo)PD_b9`fLKR)}xmR`ke`|0?arvcnm70#>gKO8x6h4GT+{v{2j5|+t^6!cD^ zs*q)*`*cWu;0nR!r_T2wbAwAZLi$mhV*4KZ#t~kd=auCyoLktwD_FJOn8kLWd^XZY zVpoVTEO07uL{1>vdGynOThx%R2$M1_IP-h7qm+{>T_R*IbEp0H8I!mB?P^lzXTt=& zG?*NLd}4y2$ARL^!}{d6Px!o59_~T-w69ct4kMd7F1jBpVi@9&Q+(`m>oRB3Cybrg z$j8ZJaKrw`K+pl5Tr-W)#`2vb5@E=q)Svk2S@|26(M&HKv!Dbx(~H@H!aR*3!7#1X z=R-z6S+$L1yV6~dqL>f&b1E7>m3L@78E6L}I-x>{>YAZ)`ov0c+3{Mb&_dqA>a#;= zCDmd}ML)ZH_l8a?wZxrC5!gF+s$wzHB4{EA>oDdrD@38+>C=e zcT^ZH2X^{J0B^mvAtn~@TYmqr6nAuO?P6%73i%qRJ_50A8zTIE)hyC0qI=^ohF{WwUowWXW3ge9)&-wHnR1=QS>6*yUMK2p z$KrZA)FkxBGURipttp*gaWtZ*lO;a Date: Tue, 4 Mar 2025 15:20:36 +0100 Subject: [PATCH 24/32] Correct Merge issues --- .../ui/navigations/AppNavigator.kt | 22 +++++++++---------- .../ui/screens/QuizEndPage.kt | 1 + 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt index 6b81787..8b9186b 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt @@ -129,20 +129,20 @@ fun AppNavigator() { composable(Destination.SubmitQuote.route) { SubmitQuotePage() } composable(Destination.QuizMenu.route) { - val userIndex = it.arguments?.getString("userIndex")?.toInt() ?: -1 + //val userIndex = it.arguments?.getString("userIndex")?.toInt() ?: -1 QuizMenu( - index = userIndex, - navAccueil = { userIndex -> - navController.navigate(Destination.Accueil.createRoute(userIndex)) // Passe l'index à Profil - }, - navFavorite = { userIndex -> - navController.navigate(Destination.Favorite.createRoute(userIndex)) // Passe l'index à Profil - }, + //index = userIndex, +// navAccueil = { userIndex -> +// navController.navigate(Destination.Accueil.createRoute(userIndex)) // Passe l'index à Profil +// }, +// navFavorite = { userIndex -> +// navController.navigate(Destination.Favorite.createRoute(userIndex)) // Passe l'index à Profil +// }, +// navProfil = { userIndex -> +// navController.navigate(Destination.Profil.createRoute(userIndex)) // Passe l'index à Profil +// }, navControllerQuiz = { id -> navController.navigate(Destination.Quiz.createId(id)) - }, - navProfil = { userIndex -> - navController.navigate(Destination.Profil.createRoute(userIndex)) // Passe l'index à Profil } ) } diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt index 945366e..69fb7a4 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt @@ -25,6 +25,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.example.what_the_fantasy.R import com.example.what_the_fantasy.data.local.QuestionStub +import com.example.what_the_fantasy.data.local.QuizStub val gradient = Brush.linearGradient( colors = listOf(Color(0xFF7B1FA2), Color(0xFF311B92)), From 1c4c27bff6898b3a0142d91b7ffc7457e0eac6e4 Mon Sep 17 00:00:00 2001 From: beaulaton Date: Wed, 5 Mar 2025 15:12:28 +0100 Subject: [PATCH 25/32] Modifications --- .../what_the_fantasy/Logs/LogsUsers.kt | 16 ++++++++++++++ .../data/services/IServices.kt | 2 +- .../data/services/ServicesAPI.kt | 2 +- .../data/services/ServicesStub.kt | 22 +++++++++---------- .../what_the_fantasy/ui/screens/LoginPage.kt | 21 +++++------------- .../what_the_fantasy/ui/screens/ProfilPage.kt | 17 ++++++-------- .../what_the_fantasy/ui/screens/SignUpPage.kt | 6 +---- .../what_the_fantasy/ui/theme/Color.kt | 4 ++-- .../app/src/main/res/values/colors.xml | 6 ++++- 9 files changed, 49 insertions(+), 47 deletions(-) create mode 100644 What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/Logs/LogsUsers.kt diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/Logs/LogsUsers.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/Logs/LogsUsers.kt new file mode 100644 index 0000000..2e16aa8 --- /dev/null +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/Logs/LogsUsers.kt @@ -0,0 +1,16 @@ +package com.example.what_the_fantasy.Logs + +import android.util.Log +import com.example.what_the_fantasy.data.model.User + +class LogsUsers{ + fun logDebugDisplayUsers(users : List, titleLog : String){ + for(user in users){ + Log.e(titleLog, "User created: ${user.username} => ${user.email} => ${user.imgUrl}") + } + } + + fun logDebugDisplayUser(user : User, titleLog : String){ + Log.e(titleLog, "User created: ${user.username} => ${user.email}") + } +} diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/IServices.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/IServices.kt index 5f8ab42..1b66358 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/IServices.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/IServices.kt @@ -9,7 +9,7 @@ interface IServices { fun EditPasswd(passwd : String, index : Int) fun EditImage(imageURL : String, index : Int) - fun CreateUser(username : String, email : String, passwd : String, imageURL: String, services : IServices) : Boolean + fun CreateUser(username : String, email : String, passwd : String, services : IServices) : Boolean fun getFavorite(username: String) fun getAllUsers(): List diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesAPI.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesAPI.kt index bf6d27e..25cd320 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesAPI.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesAPI.kt @@ -19,7 +19,7 @@ class ServicesAPI : IServices { TODO("Not yet implemented") } - override fun CreateUser(username: String, email: String, passwd: String, imageURL: String, services: IServices) : Boolean { + override fun CreateUser(username: String, email: String, passwd: String, services: IServices) : Boolean { TODO("Not yet implemented") } diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt index f87ede9..192de77 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt @@ -5,16 +5,19 @@ import android.util.Log import com.example.what_the_fantasy.data.local.UserStub import com.example.what_the_fantasy.data.local.UserStub.users import com.example.what_the_fantasy.data.model.User +import com.example.what_the_fantasy.Logs.LogsUsers import com.example.what_the_fantasy.ui.components.hashPassword import java.time.LocalDate class ServicesStub : IServices { + val logsUser = LogsUsers() //gestion des logs pour les utilisateurs + override fun EditUsername(username: String, index : Int) { val user = getUserById(index) user?.username = username //Afficher tous les users - debugDisplayUser(getAllUsers(), "UsernameUpdate") + logsUser.logDebugDisplayUsers(getAllUsers(), "UsernameUpdate") } @@ -23,7 +26,7 @@ class ServicesStub : IServices { user?.email = email //Afficher tous les users - debugDisplayUser(getAllUsers(), "EmailUpdate") + logsUser.logDebugDisplayUsers(getAllUsers(), "EmailUpdate") } override fun EditPasswd(passwd: String,index : Int) { @@ -32,14 +35,14 @@ class ServicesStub : IServices { user?.password = passwordhash //Afficher tous les users en log - debugDisplayUser(getAllUsers(), "PasswordUpdate") + logsUser.logDebugDisplayUsers(getAllUsers(), "PasswordUpdate") } override fun EditImage(imageURL: String,index : Int) { TODO("Not yet implemented") } - override fun CreateUser(username: String, email: String, passwd: String, imageURL: String, services : IServices) : Boolean { + override fun CreateUser(username: String, email: String, passwd: String, services : IServices) : Boolean { val date =dateDuJour() val passwordhash = hashPassword(passwd) @@ -50,11 +53,11 @@ class ServicesStub : IServices { return false } } - val user = User(nbUser+1,username, email, imageURL, date, passwordhash) + val user = User(nbUser+1,username, email, date,randomImage(userStub), passwordhash) users.add(user)//ajout au stub //Afficher tous les users - debugDisplayUser(users, "CreateUser") + logsUser.logDebugDisplayUsers(users, "CreateUser") return true } @@ -80,10 +83,7 @@ class ServicesStub : IServices { return date.toString() } - - private fun debugDisplayUser(users : List, titleLog : String){ - for(user in users){ - Log.e(titleLog, "User created: ${user.username} => ${user.email} => ${user.password}") - } + fun randomImage(usersImage : List) : String{ + return "https://img.freepik.com/vecteurs-libre/personnage-guerrier-homme-fantaisie_1045-194.jpg?size=338&ext=jpg" } } \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt index 913795b..153a535 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt @@ -74,10 +74,8 @@ fun LoginPage(navControllerSignUp: () -> Unit, navControllerProfil: (Int) -> Uni ) { TitlePageComponent(R.string.titleLogin, 20,Color.White) - val identifiant =IdentifiantTextField(R.string.IdentifiantLogin) - val passwd = PassWdTextField(R.string.PasswdLogin) SpaceHeightComponent(16) - ConnexionButtonLogin(users,identifiant, passwd, R.string.ButtonLogin,18, Color.White, Color.Black,navControllerProfil) + ConnexionButtonLogin(users,IdentifiantTextField(R.string.IdentifiantLogin), PassWdTextField(R.string.PasswdLogin), R.string.ButtonLogin,18, Color.White, Color.Black,navControllerProfil) SpaceHeightComponent(16) CreateAccountButton(R.string.ButtonCreateLogin,12, Color.White, navControllerSignUp) } @@ -100,7 +98,7 @@ fun IdentifiantTextField(textIdentifiantResId : Int) : String{ .fillMaxWidth() .padding(top = 8.dp), keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Text), - shape = RoundedCornerShape(16.dp) // 🔹 Bords arrondis + shape = RoundedCornerShape(16.dp) // Bords arrondis ) } return identifiant; @@ -146,8 +144,8 @@ fun ConnexionButtonLogin(userStub : List, id : String, passwd : String, ti Text(title, fontSize = size.sp, color = colorText) } - if( showError){ - ErrorMessage() + if(showError){ + ErrorMessageProfileComponent(R.string.ErrorLogin) } } @@ -162,20 +160,11 @@ fun validLogin(identifiant : String, passwd : String, users : List, navCon navController(index) // Passer l'index à la fonction navController return true } - } - return false } -@Composable -fun ErrorMessage() { - Text( - text = "Username or Password does not exist.", - color = Color.Red, - modifier = Modifier.padding(top = 8.dp) - ) -} + @Composable fun CreateAccountButton(titleResId : Int, size : Int, color : Color, navController: () -> Unit) { val title = stringResource(id = titleResId) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt index 02d00bc..6d6a2b9 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt @@ -26,7 +26,9 @@ import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Check +import androidx.compose.material.icons.filled.CheckCircle import androidx.compose.material.icons.filled.Edit +import androidx.compose.material.icons.rounded.Face import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Icon @@ -123,8 +125,8 @@ fun ProfilPage(index: Int, SpaceHeightComponent(16) // Bouton - ButtonProfile(R.string.ButtonAddQuoteprofile, 18, Color.Black, Color.White,navUnLog) // Pas encore de navigation definie - SpaceHeightComponent(16) + //ButtonProfile(R.string.ButtonAddQuoteprofile, 18, Color.Black, Color.White,navUnLog) // Pas encore de navigation definie + //SpaceHeightComponent(16) ButtonProfile(R.string.ButtonLanguageprofile, 18, Color.Black, Color.White,navUnLog) // Pas encore de navigation definie SpaceHeightComponent(16) ButtonProfile(R.string.ButtonUnlogprofile, 18, Color.Black, Color.White, navUnLog) @@ -199,7 +201,7 @@ fun EmailEditingField( ), trailingIcon = { IconButton(onClick = { if (!emailError) onDone() }) { - Icon(imageVector = Icons.Default.Check, contentDescription = "Valider") + Icon(imageVector = Icons.Default.CheckCircle, contentDescription = "Valider") } }, isError = emailError @@ -275,7 +277,7 @@ fun UsernameEditingField( ), trailingIcon = { IconButton(onClick = { onDone() }) { - Icon(imageVector = Icons.Default.Check, contentDescription = "Valider") + Icon(imageVector = Icons.Default.CheckCircle, contentDescription = "Valider") } } ) @@ -315,7 +317,7 @@ fun EditPasswd(index: Int, service: IServices) { // Fonction pour finaliser l'édition du mot de passe et appeler la méthode EditPasswd2 fun onDoneEditing() { - // Appeler EditPasswd2 pour mettre à jour le mot de passe de l'utilisateur + // Appeler EditPasswd pour mettre à jour le mot de passe de l'utilisateur service.EditPasswd(newPassword, index) isEditingPassword = false } @@ -456,11 +458,6 @@ fun DisplayPassword(onEdit: () -> Unit) { } } - - - - - @Composable fun ButtonProfile(textResId : Int, size :Int, colorTexte : Color, colorButton : Color,navController: () -> Unit){ val text = stringResource(id = textResId) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SignUpPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SignUpPage.kt index bb51217..84e592b 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SignUpPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SignUpPage.kt @@ -215,11 +215,10 @@ fun ConnexionButtonSign( passwordErrorEmpty = password.isBlank() || confirmPassword.isBlank() if (!emailError && !passwordError && !usernameErrorEmpty && !passwordErrorEmpty) { - usernameErrorExist = !service.CreateUser(username, email, password, "https://img.freepik.com/vecteurs-libre/personnage-magicien-malefique-fantaisie_1045-193.jpg?size=338&ext=jpg", service) + usernameErrorExist = !service.CreateUser(username, email, password, service) if(!usernameErrorExist){ navController() // retour à la page login } - } }, colors = ButtonDefaults.buttonColors(containerColor = colorButton), @@ -253,9 +252,6 @@ fun ConnexionButtonSign( } - - - @Composable fun ReturnLogin(titleResId: Int, size: Int, color: Color, navController: () -> Unit) { val title = stringResource(id = titleResId) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/theme/Color.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/theme/Color.kt index 880122c..dcced89 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/theme/Color.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/theme/Color.kt @@ -3,6 +3,7 @@ package com.example.what_the_fantasy.ui.theme import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color +import com.example.what_the_fantasy.R val Purple80 = Color(0xFFD0BCFF) val PurpleGrey80 = Color(0xFFCCC2DC) @@ -11,13 +12,12 @@ val Pink80 = Color(0xFFEFB8C8) val Purple40 = Color(0xFF6650a4) val PurpleGrey40 = Color(0xFF625b71) val Pink40 = Color(0xFF7D5260) + val gradienBox = Brush.linearGradient( colors = listOf(Color(0xFF7B1FA2), Color(0xFF311B92)), // Violet clair → Violet foncé start = Offset(0f, 1000f), // Départ en bas à gauche end = Offset(1000f, 0f) // Fin en haut à droite ) val colorBackground = Color(0xFF100C1B) - val colorNavBar = Color(0xFF2F0E62) - val colorButtonNav = Color.Cyan \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/res/values/colors.xml b/What_The_Fantasy/app/src/main/res/values/colors.xml index f8c6127..86395c4 100644 --- a/What_The_Fantasy/app/src/main/res/values/colors.xml +++ b/What_The_Fantasy/app/src/main/res/values/colors.xml @@ -5,6 +5,10 @@ #FF3700B3 #FF03DAC5 #FF018786 - #FF000000 #FFFFFFFF + + + #FF100C1B + #FF7B1FA2 + #FF311B92 \ No newline at end of file From 0a06a5ab1c466fec81d2adfd57cee7afda967d04 Mon Sep 17 00:00:00 2001 From: brongniart Date: Wed, 5 Mar 2025 15:23:03 +0100 Subject: [PATCH 26/32] correction de la navbar + remise en forme du AppNavigator --- What_The_Fantasy/app/build.gradle.kts | 1 + .../what_the_fantasy/ui/components/BackBar.kt | 64 ++++++ .../what_the_fantasy/ui/components/NavBar.kt | 35 +--- .../ui/navigations/AppNavigator.kt | 190 ++++++++--------- .../ui/screens/QuizEndPage.kt | 194 ++++++++---------- .../what_the_fantasy/ui/screens/QuizMenu.kt | 173 +++++++--------- .../what_the_fantasy/ui/screens/QuizPage.kt | 189 +++++++---------- What_The_Fantasy/gradle/libs.versions.toml | 2 +- 8 files changed, 385 insertions(+), 463 deletions(-) create mode 100644 What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/BackBar.kt diff --git a/What_The_Fantasy/app/build.gradle.kts b/What_The_Fantasy/app/build.gradle.kts index 4b7e70e..eb95a8a 100644 --- a/What_The_Fantasy/app/build.gradle.kts +++ b/What_The_Fantasy/app/build.gradle.kts @@ -1,6 +1,7 @@ plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) + alias(libs.plugins.kotlinx.serialization) } android { diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/BackBar.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/BackBar.kt new file mode 100644 index 0000000..c2deeda --- /dev/null +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/BackBar.kt @@ -0,0 +1,64 @@ +package com.example.what_the_fantasy.ui.components + +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.size +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.rounded.AccountCircle +import androidx.compose.material.icons.rounded.ArrowBack +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.IconButtonColors +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.res.painterResource +import androidx.compose.ui.unit.dp +import com.example.what_the_fantasy.R +import com.example.what_the_fantasy.ui.theme.colorButtonNav +import com.example.what_the_fantasy.ui.theme.colorNavBar + +@Composable +fun BackBar(navBack : () ->Unit , + content : @Composable ()-> Unit ){ + Column( + modifier = Modifier + .fillMaxSize() + ) { + Row( + modifier = Modifier + .fillMaxWidth() + .height(70.dp) + .background(colorNavBar), + Arrangement.SpaceBetween, + verticalAlignment = Alignment.Bottom + ) { + IconButton(onClick = {navBack()}, + modifier = Modifier + .size(60.dp) + ) { + Icon(Icons.Rounded.ArrowBack, + contentDescription = "Back", + modifier = Modifier + .size(60.dp) + ) + } + + } + + Box(modifier = Modifier.background(Color.Black).fillMaxHeight()) { + content() + } + } +} \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt index 49cc408..6b8b019 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt @@ -44,7 +44,6 @@ fun NavBar(onProfile : Boolean = false , navControllerAccueil: (Int) -> Unit, navControllerQuiz: (Int) -> Unit, - content : @Composable ()-> Unit ) { Column( @@ -89,25 +88,11 @@ fun NavBar(onProfile : Boolean = false , ButtonIconPainterInt(painterResource(R.mipmap.ic_launcher_foreground),"Accueil",navControllerAccueil,index,onAccueil) ButtonIconVectorInt(Icons.Rounded.Create,"Quiz",navControllerQuiz,index,onQuiz) + } } } -@Composable -fun ButtonIconVector(img : ImageVector, name : String, nav : ()->Unit ,onPage : Boolean){ - IconButton(onClick = {nav()}, - enabled = !onPage, - colors = IconButtonColors(Color.Transparent,Color.White,//couleur quand il n'est pas selectionné - Color.Transparent, colorButtonNav),//couleur quand il est selectionné - modifier = Modifier - .size(60.dp) - ) { - Icon(img, - contentDescription = name, - modifier = Modifier - .size(60.dp) - ) - } -} + @Composable fun ButtonIconVectorInt(img : ImageVector, name : String, nav : (Int)->Unit ,index: Int,onPage : Boolean){ IconButton(onClick = {nav(index)}, @@ -126,22 +111,6 @@ fun ButtonIconVectorInt(img : ImageVector, name : String, nav : (Int)->Unit ,ind } -@Composable -fun ButtonIconPainter(img : Painter, name : String, nav : ()->Unit,onPage : Boolean){ - IconButton(onClick = {nav()}, - enabled = !onPage, - colors = IconButtonColors(Color.Transparent,Color.White,//couleur quand il n'est pas selectionné - Color.Transparent, colorButtonNav),//couleur quand il est selectionné - modifier = Modifier - .size(60.dp) - ) { - Icon(img, - contentDescription = name, - modifier = Modifier - .size(60.dp) - ) - } -} @Composable fun ButtonIconPainterInt(img : Painter, name : String, nav : (Int)->Unit,index: Int,onPage : Boolean){ IconButton(onClick = {nav(index)}, diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt index 8b9186b..1425e65 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt @@ -4,6 +4,7 @@ import androidx.compose.runtime.Composable import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController +import androidx.navigation.toRoute import com.example.what_the_fantasy.data.services.ServicesStub import com.example.what_the_fantasy.ui.screens.AccueilPage import com.example.what_the_fantasy.ui.screens.FavoritePage @@ -16,155 +17,128 @@ import com.example.what_the_fantasy.ui.screens.QuotePage import com.example.what_the_fantasy.ui.screens.SearchPage import com.example.what_the_fantasy.ui.screens.SignUpPage import com.example.what_the_fantasy.ui.screens.SubmitQuotePage +import kotlinx.serialization.Serializable +@Serializable +data class Accueil(val userIndex: Int) +@Serializable +data object Login +@Serializable +data class Favorite(val userIndex: Int) +@Serializable +data class Profil(val userIndex: Int) +@Serializable +data class QuizMenu(val userIndex: Int) +@Serializable +data class Quiz(val userIndex : Int, val idQuiz : Int) +@Serializable +data class QuizEnd(val userIndex : Int, val idQuiz : Int,val pts : Int) +@Serializable +data object Quote +@Serializable +data object Search +@Serializable +data object SignUp +@Serializable +data object SubmitQuote -sealed class Destination(val route: String) { - data object Login : Destination("Login") - data object Accueil : Destination("Accueil/{userIndex}") { // Ajout du paramètre userIndex - fun createRoute(userIndex: Int) = "Accueil/$userIndex" // Fonction pour créer la route avec l'index - } - data object Favorite : Destination("Favorite/{userIndex}") { // Ajout du paramètre userIndex - fun createRoute(userIndex: Int) = "Favorite/$userIndex" // Fonction pour créer la route avec l'index - } - data object Profil : Destination("Profil/{userIndex}") { // Ajout du paramètre userIndex - fun createRoute(userIndex: Int) = "Profil/$userIndex" // Fonction pour créer la route avec l'index - } - data object QuizMenu : Destination("QuizMenu/{userIndex}") { // Ajout du paramètre userIndex - fun createRoute(userIndex: Int) = "QuizMenu/$userIndex" // Fonction pour créer la route avec l'index - } - data object Quiz : Destination("Quiz/{idQuiz}") { - // Ajout paramètre idQuiz - fun createId(idQuiz : Int) = "Quiz/$idQuiz" - } - data object QuizEnd : Destination("QuizEnd/{idQuiz}/{pts}") { - // Ajout paramètres idQuiz et pts - fun createIdAndPts(idQuiz : Int, pts : Int) = "QuizEnd/$idQuiz/$pts" - } - data object Quote : Destination("Quote") - data object Search : Destination("Search") - data object SignUp : Destination("SignUp") - data object SubmitQuote : Destination("SubmitQuote") -} - @Composable fun AppNavigator() { val navController = rememberNavController() val services = ServicesStub() - NavHost(navController, startDestination = Destination.Login.route) { - composable(Destination.Login.route) { + NavHost(navController, startDestination = Login) { + composable { LoginPage( - navControllerSignUp = { - navController.navigate(Destination.SignUp.route) - }, + navControllerSignUp = { navController.navigate(SignUp) }, navControllerProfil = { userIndex -> - navController.navigate(Destination.Profil.createRoute(userIndex)) { + navController.navigate(Profil(userIndex)) { // Vider pile de navigation pour empêcher le retour à la page Login - popUpTo(Destination.Login.route) { inclusive = true } + popUpTo(Login) { inclusive = true } } }, - services + services = services ) } - composable(Destination.Accueil.route) { - val userIndex = it.arguments?.getString("userIndex")?.toInt() ?: -1 + composable { + val accueil: Accueil = it.toRoute() AccueilPage( - index = userIndex, - navFavorite = { userIndex -> - navController.navigate(Destination.Favorite.createRoute(userIndex)) // Passe l'index à Profil - }, - navQuiz = { userIndex -> - navController.navigate(Destination.QuizMenu.createRoute(userIndex)) // Passe l'index à Profil - }, - navProfil = { userIndex -> - navController.navigate(Destination.Profil.createRoute(userIndex)) // Passe l'index à Profil - } + index = accueil.userIndex, + navFavorite = { navController.navigate(Favorite(accueil.userIndex)) }, + navQuiz = { navController.navigate(QuizMenu(accueil.userIndex)) }, + navProfil = { navController.navigate(Profil(accueil.userIndex)) } ) } - composable(Destination.Favorite.route) { - val userIndex = it.arguments?.getString("userIndex")?.toInt() ?: -1 + composable { + val favorite: Favorite = it.toRoute() FavoritePage( - index = userIndex, - navAccueil ={ userIndex -> - navController.navigate(Destination.Accueil.createRoute(userIndex)) // Passe l'index à Profil - }, - navQuiz = { userIndex -> - navController.navigate(Destination.QuizMenu.createRoute(userIndex)) // Passe l'index à Profil - }, - navProfil = { userIndex -> - navController.navigate(Destination.Profil.createRoute(userIndex)) // Passe l'index à Profil - } + index = favorite.userIndex, + navAccueil ={ navController.navigate( Accueil(favorite.userIndex) ) }, + navQuiz = { navController.navigate(QuizMenu(favorite.userIndex)) }, + navProfil = { navController.navigate(Profil(favorite.userIndex)) } ) } - composable(Destination.Profil.route) { - // Récupère l'index passé dans la route - val userIndex = it.arguments?.getString("userIndex")?.toInt() ?: -1 + composable{ + val profil:Profil = it.toRoute() ProfilPage( - index = userIndex, - navFavorite = { userIndex -> - navController.navigate(Destination.Favorite.createRoute(userIndex)) // Passe l'index à Profil - }, - navAccueil ={ userIndex -> - navController.navigate(Destination.Accueil.createRoute(userIndex)) // Passe l'index à Profil - }, - navQuiz = { userIndex -> - navController.navigate(Destination.QuizMenu.createRoute(userIndex)) // Passe l'index à Profil - }, + index = profil.userIndex, + navFavorite = { navController.navigate(Favorite(profil.userIndex)) }, + navAccueil ={ navController.navigate( Accueil(profil.userIndex) ) }, + navQuiz = { navController.navigate( QuizMenu(profil.userIndex)) }, navUnLog = { - navController.navigate(Destination.Login.route) { + navController.navigate(Login) { // Vider pile de navigation pour empêcher le retour à la page profil - popUpTo(Destination.Profil.route) { inclusive = true } + popUpTo(profil) { inclusive = true } } }, services = services ) } - composable(Destination.Quote.route) { QuotePage() } - composable(Destination.Search.route) { SearchPage() } - composable(Destination.SignUp.route) { SignUpPage( + composable { QuotePage() } + composable { SearchPage() } + composable { SignUpPage( navControllerLogin = { - navController.navigate(Destination.Login.route){ + navController.navigate(Login){ // Vider pile de navigation pour empêcher le retour à la page Sign up - popUpTo(Destination.Login.route) { inclusive = true } + popUpTo(Login) { inclusive = true } } },services) } - composable(Destination.SubmitQuote.route) { SubmitQuotePage() } + composable { SubmitQuotePage() } - composable(Destination.QuizMenu.route) { - //val userIndex = it.arguments?.getString("userIndex")?.toInt() ?: -1 + composable { + val quizMenu:QuizMenu=it.toRoute() QuizMenu( - //index = userIndex, -// navAccueil = { userIndex -> -// navController.navigate(Destination.Accueil.createRoute(userIndex)) // Passe l'index à Profil -// }, -// navFavorite = { userIndex -> -// navController.navigate(Destination.Favorite.createRoute(userIndex)) // Passe l'index à Profil -// }, -// navProfil = { userIndex -> -// navController.navigate(Destination.Profil.createRoute(userIndex)) // Passe l'index à Profil -// }, - navControllerQuiz = { id -> - navController.navigate(Destination.Quiz.createId(id)) + index = quizMenu.userIndex, + navAccueil = { navController.navigate( Accueil(quizMenu.userIndex) ) }, + navFavorite = { navController.navigate(Favorite(quizMenu.userIndex)) }, + navProfil = { navController.navigate(Profil(quizMenu.userIndex)) }, + navControllerQuiz = { idQuiz -> + navController.navigate(Quiz(quizMenu.userIndex,idQuiz)) } ) } - composable(Destination.Quiz.route) { backStackEntry -> - val idQuiz = backStackEntry.arguments?.getString("idQuiz")?.toInt() ?: 0 + composable { + val quiz:Quiz=it.toRoute() QuizPage( + index = quiz.userIndex, + navAccueil = { navController.navigate( Accueil(quiz.userIndex) ) }, + navFavorite = { navController.navigate(Favorite(quiz.userIndex)) }, + navProfil = { navController.navigate(Profil(quiz.userIndex)) }, + navQuiz = { navController.navigate(QuizMenu(quiz.userIndex)) }, navControllerQuizEnd = { idQuiz, pts -> - navController.navigate(Destination.QuizEnd.createIdAndPts(idQuiz, pts)) + navController.navigate(QuizEnd(quiz.userIndex,idQuiz, pts)) }, - navControllerQuizMenu = { navController.navigate(Destination.QuizMenu.route) }, - navControllerMenu = { navController.navigate(Destination.Accueil.route) }, - idQuiz + idQuiz = quiz.idQuiz ) } - composable(Destination.QuizEnd.route) { backStackEntry -> - val idQuiz = backStackEntry.arguments?.getString("idQuiz")?.toInt() ?: 0 - val pts = backStackEntry.arguments?.getString("pts")?.toInt() ?: 0 + composable { + val quizEnd: QuizEnd = it.toRoute() QuizEndPage( - idQuiz, - pts, - navControllerQuizMenu = { navController.navigate(Destination.QuizMenu.route) }, - navControllerMenu = { navController.navigate(Destination.Accueil.route) } + idQuiz = quizEnd.idQuiz, + points = quizEnd.pts, + index = quizEnd.userIndex, + navAccueil = { navController.navigate( Accueil(quizEnd.userIndex) ) }, + navFavorite = { navController.navigate(Favorite(quizEnd.userIndex)) }, + navProfil = { navController.navigate(Profil(quizEnd.userIndex)) }, + navQuiz = { navController.navigate(QuizMenu(quizEnd.userIndex)) } ) } } diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt index 69fb7a4..6578b17 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizEndPage.kt @@ -26,6 +26,7 @@ import androidx.compose.ui.unit.sp import com.example.what_the_fantasy.R import com.example.what_the_fantasy.data.local.QuestionStub import com.example.what_the_fantasy.data.local.QuizStub +import com.example.what_the_fantasy.ui.components.NavBar val gradient = Brush.linearGradient( colors = listOf(Color(0xFF7B1FA2), Color(0xFF311B92)), @@ -37,132 +38,107 @@ val gradient = Brush.linearGradient( fun QuizEndPage( idQuiz: Int, points: Int, - navControllerQuizMenu: () -> Unit, - navControllerMenu: () -> Unit + index: Int, + navFavorite: (Int) -> Unit, + navAccueil: (Int) -> Unit, + navProfil:(Int) -> Unit, + navQuiz: (Int) -> Unit, ) { - Column( - modifier = Modifier.fillMaxSize().background(Color(0xFF100C1B)) - ) { - // Bandeau supérieur - Row( - modifier = Modifier - .fillMaxWidth() - .weight(0.1f) - .padding(20.dp), - horizontalArrangement = Arrangement.SpaceBetween, - verticalAlignment = Alignment.CenterVertically - ) { - Image( - painter = painterResource(id = R.drawable.profile_icon), - contentDescription = "Profil", - modifier = Modifier.size(50.dp) - ) - Image( - painter = painterResource(id = R.drawable.toggle), - contentDescription = "Profil" - ) - } - - // Contenu principal + NavBar(onQuiz = true, + index = index, + navControllerFavorite = navFavorite, + navControllerAccueil = navAccueil, + navControllerProfil = navProfil, + navControllerQuiz = navQuiz) { Column( - modifier = Modifier - .weight(0.8f) - .padding(horizontal = 50.dp, vertical = 20.dp) - .fillMaxWidth(), - horizontalAlignment = Alignment.CenterHorizontally + modifier = Modifier.fillMaxSize().background(Color(0xFF100C1B)) ) { - Text( - text = "▶ Résultats ◀", - color = Color.White, - style = TextStyle(fontSize = 25.sp, fontWeight = FontWeight.Bold, textAlign = TextAlign.Center) - ) - Spacer(modifier = Modifier.height(16.dp)) - Column ( + + // Contenu principal + Column( modifier = Modifier - .background(brush = gradient, shape = RoundedCornerShape(20.dp)) - .padding(30.dp) - .fillMaxSize(), - horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.SpaceEvenly + .weight(0.8f) + .padding(horizontal = 50.dp, vertical = 20.dp) + .fillMaxWidth(), + horizontalAlignment = Alignment.CenterHorizontally ) { - val quiz = QuizStub.getQuizById(idQuiz) - val nbQuestions = quiz?.questions?.size - Text ( - text = "${quiz?.name}", + Text( + text = "▶ Résultats ◀", color = Color.White, - style = TextStyle(fontSize = 25.sp, fontWeight = FontWeight.Bold, textAlign = TextAlign.Center) - ) - Text ( - text = "Nombres de Questions : $nbQuestions", - color = Color.White, - style = TextStyle(fontSize = 15.sp, fontWeight = FontWeight.Bold, textAlign = TextAlign.Center) - ) - Text ( - text = "Nombres de bonnes réponses : $points", - color = Color.White, - style = TextStyle(fontSize = 15.sp, fontWeight = FontWeight.Bold, textAlign = TextAlign.Center) + style = TextStyle( + fontSize = 25.sp, + fontWeight = FontWeight.Bold, + textAlign = TextAlign.Center + ) ) - - val pourcentage = (points.toDouble() / nbQuestions!!) * 100 - - val note = when { - pourcentage == 100.0 -> "S" - pourcentage >= 70.0 -> "A" - pourcentage >= 40.0 -> "B" - else -> "C" - } - - println("Note obtenue : $note") - - Box( - contentAlignment = Alignment.Center, + Spacer(modifier = Modifier.height(16.dp)) + Column( modifier = Modifier - .size(100.dp) - .background(Color.White, shape = RoundedCornerShape(50.dp)) + .background(brush = gradient, shape = RoundedCornerShape(20.dp)) + .padding(30.dp) + .fillMaxSize(), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.SpaceEvenly ) { + val quiz = QuizStub.getQuizById(idQuiz) + val nbQuestions = quiz?.questions?.size Text( - text = note, - color = Color.Red, + text = "${quiz?.name}", + color = Color.White, style = TextStyle( - fontSize = 40.sp, + fontSize = 25.sp, fontWeight = FontWeight.Bold, textAlign = TextAlign.Center ) ) + Text( + text = "Nombres de Questions : $nbQuestions", + color = Color.White, + style = TextStyle( + fontSize = 15.sp, + fontWeight = FontWeight.Bold, + textAlign = TextAlign.Center + ) + ) + Text( + text = "Nombres de bonnes réponses : $points", + color = Color.White, + style = TextStyle( + fontSize = 15.sp, + fontWeight = FontWeight.Bold, + textAlign = TextAlign.Center + ) + ) + + val pourcentage = (points.toDouble() / nbQuestions!!) * 100 + + val note = when { + pourcentage == 100.0 -> "S" + pourcentage >= 70.0 -> "A" + pourcentage >= 40.0 -> "B" + else -> "C" + } + + println("Note obtenue : $note") + + Box( + contentAlignment = Alignment.Center, + modifier = Modifier + .size(100.dp) + .background(Color.White, shape = RoundedCornerShape(50.dp)) + ) { + Text( + text = note, + color = Color.Red, + style = TextStyle( + fontSize = 40.sp, + fontWeight = FontWeight.Bold, + textAlign = TextAlign.Center + ) + ) + } } } } - - // Bandeau inférieur - Row( - modifier = Modifier - .fillMaxWidth() - .weight(0.1f) - .background(Color(0xFF300052)) - .padding(20.dp), - horizontalArrangement = Arrangement.SpaceAround, - verticalAlignment = Alignment.CenterVertically - ) { - // Bouton Likes - Image( - painter = painterResource(id = R.drawable.like_icon), - contentDescription = "Bouton", - modifier = Modifier.size(50.dp) - ) - // Bouton WhatTheFantasy - Image( - painter = painterResource(R.drawable.wf_logo), - contentDescription = "Menu Button", - Modifier.clickable { navControllerMenu() } - ) - // Bouton Menu Quiz - Image( - painter = painterResource(id = R.drawable.quiz_icon), - contentDescription = "Bouton", - modifier = Modifier - .size(50.dp) - .clickable { navControllerQuizMenu() } - ) - } } } diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizMenu.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizMenu.kt index 4625a8c..99c50af 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizMenu.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizMenu.kt @@ -41,123 +41,92 @@ import com.example.what_the_fantasy.ui.components.NavBar @Composable -fun QuizMenu(navControllerQuiz: (Int) -> Unit) { - - Column ( - modifier = Modifier.fillMaxSize().background(Color(0xFF100C1B)) +fun QuizMenu( index: Int, + navFavorite: (Int) -> Unit, + navAccueil: (Int) -> Unit, + navProfil:(Int) -> Unit, + navControllerQuiz: (Int) -> Unit +) { + NavBar(onQuiz = true, + index = index, + navControllerFavorite = navFavorite, + navControllerAccueil = navAccueil, + navControllerProfil = navProfil, + navControllerQuiz = { } ) { - // Bandeau supérieur - Row( - modifier = Modifier - .fillMaxWidth() - .weight(0.1f) - //background(Color(0xFF300052)) - .padding(20.dp), - horizontalArrangement = Arrangement.SpaceBetween, - verticalAlignment = Alignment.CenterVertically - ) { - Image( - painter = painterResource(id = R.drawable.profile_icon), - contentDescription = "Profil" - ) - Image( - painter = painterResource(id = R.drawable.toggle), - contentDescription = "Profil" - ) - } - // Contenu princiapl Column( - modifier = Modifier - .weight(0.9f) - .fillMaxSize() - .padding(20.dp), - horizontalAlignment = Alignment.CenterHorizontally + modifier = Modifier.fillMaxSize().background(Color(0xFF100C1B)) ) { - Text( - text = "▶ Menu des Quiz ◀", - color = Color.White, - style = TextStyle(fontSize = 25.sp, fontWeight = FontWeight.Bold, textAlign = TextAlign.Center) - ) - Spacer(Modifier.height(20.dp)) - Column ( + // Contenu princiapl + Column( modifier = Modifier - .background(brush = gradient, shape = RoundedCornerShape(20.dp)) + .weight(0.9f) .fillMaxSize() - .padding(vertical = 30.dp) - .verticalScroll(rememberScrollState()), + .padding(20.dp), horizontalAlignment = Alignment.CenterHorizontally ) { - val quizzes = QuizStub.allQuizzes.chunked(2) - val context = LocalContext.current - for (rowQuizzes in quizzes) { - Row( - modifier = Modifier.fillMaxWidth(), - horizontalArrangement = Arrangement.SpaceEvenly - ) { - for (quiz in rowQuizzes) { - val imageResId = context.resources.getIdentifier( - quiz.img, - "drawable", - context.packageName - ) - Column ( - modifier = Modifier - .size(width = 150.dp, height = 145.dp) - .clickable { navControllerQuiz(quiz.id) }, - ) { - Image( - painter = painterResource(id = imageResId), - contentDescription = quiz.name, - modifier = Modifier - .size(width = 150.dp, height = 100.dp) - .clip(shape = RoundedCornerShape(20.dp)), - contentScale = ContentScale.Crop + Text( + text = "▶ Menu des Quiz ◀", + color = Color.White, + style = TextStyle( + fontSize = 25.sp, + fontWeight = FontWeight.Bold, + textAlign = TextAlign.Center + ) + ) + Spacer(Modifier.height(20.dp)) + Column( + modifier = Modifier + .background(brush = gradient, shape = RoundedCornerShape(20.dp)) + .fillMaxSize() + .padding(vertical = 30.dp) + .verticalScroll(rememberScrollState()), + horizontalAlignment = Alignment.CenterHorizontally + ) { + val quizzes = QuizStub.allQuizzes.chunked(2) + val context = LocalContext.current + for (rowQuizzes in quizzes) { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceEvenly + ) { + for (quiz in rowQuizzes) { + val imageResId = context.resources.getIdentifier( + quiz.img, + "drawable", + context.packageName ) - Spacer(Modifier.height(10.dp)) - Text( - text = quiz.name, - style = TextStyle( - fontSize = 17.sp, - fontWeight = FontWeight.Medium, - textAlign = TextAlign.Center, - color = Color.White + Column( + modifier = Modifier + .size(width = 150.dp, height = 145.dp) + .clickable { navControllerQuiz(quiz.id) }, + ) { + Image( + painter = painterResource(id = imageResId), + contentDescription = quiz.name, + modifier = Modifier + .size(width = 150.dp, height = 100.dp) + .clip(shape = RoundedCornerShape(20.dp)), + contentScale = ContentScale.Crop ) - ) + Spacer(Modifier.height(10.dp)) + Text( + text = quiz.name, + style = TextStyle( + fontSize = 17.sp, + fontWeight = FontWeight.Medium, + textAlign = TextAlign.Center, + color = Color.White + ) + ) + } } } + Spacer(Modifier.height(30.dp)) } - Spacer(Modifier.height(30.dp)) } } } - - // Bandeau inférieur - Row( - modifier = Modifier - .fillMaxWidth() - .weight(0.1f) - .background(Color(0xFF300052)) - .padding(20.dp), - horizontalArrangement = Arrangement.SpaceAround, - verticalAlignment = Alignment.CenterVertically - ) { - // Bouton Likes - Image( - painter = painterResource(id = R.drawable.like_icon), - contentDescription = "Bouton" - ) - // Bouton WhatTheFantasy - Image( - painter = painterResource(R.drawable.wf_logo), - contentDescription = "Menu Button", - Modifier.clickable { } - ) - // Bouton Quiz - Image( - painter = painterResource(id = R.drawable.quiz_icon), - contentDescription = "Bouton" - ) - } } } \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt index 68cae66..e20a5f2 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt @@ -22,12 +22,19 @@ import androidx.compose.ui.unit.sp import com.example.what_the_fantasy.R import com.example.what_the_fantasy.data.local.QuestionStub import com.example.what_the_fantasy.data.local.QuizStub +import com.example.what_the_fantasy.ui.components.BackBar +import com.example.what_the_fantasy.ui.components.NavBar @Composable fun QuizPage( + index: Int, + navFavorite: (Int) -> Unit, + navAccueil: (Int) -> Unit, + navProfil:(Int) -> Unit, + navQuiz: (Int) -> Unit, + navControllerQuizEnd: (Int, Int) -> Unit, - navControllerQuizMenu: () -> Unit, - navControllerMenu: () -> Unit, + idQuiz: Int ) { val quiz = QuizStub.getQuizById(idQuiz) @@ -54,128 +61,90 @@ fun QuizPage( if (idCurrentQuestion < questions.size - 1) idCurrentQuestion++ else navControllerQuizEnd(idQuiz, pts) // Retour menu } - - Column ( + NavBar(onQuiz = true, + index = index, + navControllerFavorite = navFavorite, + navControllerAccueil = navAccueil, + navControllerProfil = navProfil, + navControllerQuiz = navQuiz + ){ + Column ( modifier = Modifier.fillMaxSize().background(Color(0xFF100C1B)) ) { - // Bandeau supérieur - Row( - modifier = Modifier - .fillMaxWidth() - .weight(0.1f) - //.background(Color(0xFF300052)) - .padding(20.dp), - horizontalArrangement = Arrangement.SpaceBetween, - verticalAlignment = Alignment.CenterVertically - ) { - Image( - painter = painterResource(id = R.drawable.profile_icon), - contentDescription = "Profil" - ) - Image( - painter = painterResource(id = R.drawable.toggle), - contentDescription = "Profil" - ) - } - - // Contenu princiapl - Column( - modifier = Modifier - .weight(0.8f) - .fillMaxWidth() - .padding(horizontal = 50.dp, vertical = 20.dp), - horizontalAlignment = Alignment.CenterHorizontally - ) { - val question = questions[idCurrentQuestion] - + // Contenu princiapl Column( - horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier + .weight(0.8f) + .fillMaxWidth() + .padding(horizontal = 50.dp, vertical = 20.dp), + horizontalAlignment = Alignment.CenterHorizontally ) { - if (quiz != null) { - Text( - text = "▶ ${quiz.name} ◀", - color = Color.White, - style = TextStyle(fontSize = 20.sp, fontWeight = FontWeight.Bold, textAlign = TextAlign.Center) - ) - } - Spacer(Modifier.height(20.dp)) - Column ( - modifier = Modifier - .background(brush = gradient, shape = RoundedCornerShape(20.dp)), - horizontalAlignment = Alignment.CenterHorizontally + val question = questions[idCurrentQuestion] + + Column( + horizontalAlignment = Alignment.CenterHorizontally, ) { - Text( - "Question ${idCurrentQuestion+1}", - color = Color.White, - fontSize = 18.sp, - modifier = Modifier.padding(top = 20.dp), - style = TextStyle( - fontSize = 25.sp, - fontWeight = FontWeight.Bold, - textAlign = TextAlign.Center + if (quiz != null) { + Text( + text = "▶ ${quiz.name} ◀", + color = Color.White, + style = TextStyle( + fontSize = 20.sp, + fontWeight = FontWeight.Bold, + textAlign = TextAlign.Center + ) ) - ) - Text( - question.question, - color = Color.White, - fontSize = 22.sp, - modifier = Modifier.padding(40.dp) - ) + } + Spacer(Modifier.height(20.dp)) Column( modifier = Modifier - .padding(top = 30.dp) + .background(brush = gradient, shape = RoundedCornerShape(20.dp)), + horizontalAlignment = Alignment.CenterHorizontally ) { - listOf( - question.ansA, - question.ansB, - question.ansC, - question.ansD - ).forEach { answer -> - Box( - modifier = Modifier - .width(220.dp) - .height(50.dp) - .background(Color.White, shape = RoundedCornerShape(16.dp)) - .clickable { onAnswerSelected(answer) } - .padding(horizontal = 8.dp), - contentAlignment = Alignment.Center - ) { - Text(answer, color = Color.Black, fontSize = 18.sp) + Text( + "Question ${idCurrentQuestion + 1}", + color = Color.White, + fontSize = 18.sp, + modifier = Modifier.padding(top = 20.dp), + style = TextStyle( + fontSize = 25.sp, + fontWeight = FontWeight.Bold, + textAlign = TextAlign.Center + ) + ) + Text( + question.question, + color = Color.White, + fontSize = 22.sp, + modifier = Modifier.padding(40.dp) + ) + Column( + modifier = Modifier + .padding(top = 30.dp) + ) { + listOf( + question.ansA, + question.ansB, + question.ansC, + question.ansD + ).forEach { answer -> + Box( + modifier = Modifier + .width(220.dp) + .height(50.dp) + .background(Color.White, shape = RoundedCornerShape(16.dp)) + .clickable { onAnswerSelected(answer) } + .padding(horizontal = 8.dp), + contentAlignment = Alignment.Center + ) { + Text(answer, color = Color.Black, fontSize = 18.sp) + } + Spacer(modifier = Modifier.height(60.dp)) } - Spacer(modifier = Modifier.height(60.dp)) } } } } } - - // Bandeau inférieur - Row( - modifier = Modifier - .fillMaxWidth() - .weight(0.1f) - .background(Color(0xFF300052)) - .padding(20.dp), - horizontalArrangement = Arrangement.SpaceAround, - verticalAlignment = Alignment.CenterVertically - ) { - // Bouton Likes - Image( - painter = painterResource(id = R.drawable.like_icon), - contentDescription = "Bouton" - ) - // Bouton WhatTheFantasy - Image( - painter = painterResource(R.drawable.wf_logo), - contentDescription = "Menu Button", - Modifier.clickable { navControllerMenu() } - ) - // Bouton Menu Quiz - Image( - painter = painterResource(id = R.drawable.quiz_icon), - contentDescription = "Bouton", - Modifier.clickable { navControllerQuizMenu() } - ) - } } } \ No newline at end of file diff --git a/What_The_Fantasy/gradle/libs.versions.toml b/What_The_Fantasy/gradle/libs.versions.toml index 258393f..2c630fb 100644 --- a/What_The_Fantasy/gradle/libs.versions.toml +++ b/What_The_Fantasy/gradle/libs.versions.toml @@ -38,4 +38,4 @@ androidx-navigation-common-android = { group = "androidx.navigation", name = "na [plugins] android-application = { id = "com.android.application", version.ref = "agp" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } - +kotlinx-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin"} From f86442800e39cefd8cacde37eed5736d08d6f148 Mon Sep 17 00:00:00 2001 From: beaulaton Date: Wed, 5 Mar 2025 15:23:33 +0100 Subject: [PATCH 27/32] Page favorite --- .../data/services/ServicesStub.kt | 1 - .../ui/screens/FavoritePage.kt | 32 ++++++++++++++++++- .../what_the_fantasy/ui/screens/ProfilPage.kt | 24 +++++++------- 3 files changed, 43 insertions(+), 14 deletions(-) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt index 192de77..a0848f3 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt @@ -18,7 +18,6 @@ class ServicesStub : IServices { //Afficher tous les users logsUser.logDebugDisplayUsers(getAllUsers(), "UsernameUpdate") - } override fun EditEmail(email: String,index : Int) { diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt index fc7f309..9a3438c 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt @@ -3,16 +3,28 @@ package com.example.what_the_fantasy.ui.screens import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import com.example.what_the_fantasy.R import com.example.what_the_fantasy.data.services.IServices import com.example.what_the_fantasy.ui.components.NavBar +import com.example.what_the_fantasy.ui.components.SpaceHeightComponent +import com.example.what_the_fantasy.ui.components.TitlePageComponent import com.example.what_the_fantasy.ui.theme.colorBackground +import com.example.what_the_fantasy.ui.theme.gradienBox @Composable fun FavoritePage( @@ -35,7 +47,25 @@ fun FavoritePage( contentAlignment = Alignment.Center ){ Column { - Text("Favorite", color = Color.White, fontSize = 20.sp) + Box( + modifier = Modifier + .fillMaxSize() + .background(Color(0xFF100C1B)), + contentAlignment = Alignment.Center + ) { + Row( + modifier = Modifier + .fillMaxWidth(0.9f) + .padding(20.dp) + .clip(RoundedCornerShape(16.dp)) + .background(gradienBox) + .padding(20.dp), + ) { + Text("Une image") + Text("Une citation d'un personnage") + + } + } } } } diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt index 6d6a2b9..7e88bc6 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt @@ -107,13 +107,13 @@ fun ProfilPage(index: Int, horizontalAlignment = Alignment.CenterHorizontally ) { - // Titre - TitlePageComponent(R.string.titleProfile, 20, Color.White) - SpaceHeightComponent(16) + // Titre + TitlePageComponent(R.string.titleProfile, 20, Color.White) + SpaceHeightComponent(16) - // Image de profil - ImageProfil(user.imgUrl, 120) - SpaceHeightComponent(16) + // Image de profil + ImageProfil(user.imgUrl, 120) + SpaceHeightComponent(16) EditUsername(user.username, index, services)// Édition du Username SpaceHeightComponent(16) @@ -124,12 +124,12 @@ fun ProfilPage(index: Int, EditPasswd(index, services) SpaceHeightComponent(16) - // Bouton - //ButtonProfile(R.string.ButtonAddQuoteprofile, 18, Color.Black, Color.White,navUnLog) // Pas encore de navigation definie - //SpaceHeightComponent(16) - ButtonProfile(R.string.ButtonLanguageprofile, 18, Color.Black, Color.White,navUnLog) // Pas encore de navigation definie - SpaceHeightComponent(16) - ButtonProfile(R.string.ButtonUnlogprofile, 18, Color.Black, Color.White, navUnLog) + // Bouton + //ButtonProfile(R.string.ButtonAddQuoteprofile, 18, Color.Black, Color.White,navUnLog) // Pas encore de navigation definie + //SpaceHeightComponent(16) + ButtonProfile(R.string.ButtonLanguageprofile, 18, Color.Black, Color.White,navUnLog) // Pas encore de navigation definie + SpaceHeightComponent(16) + ButtonProfile(R.string.ButtonUnlogprofile, 18, Color.Black, Color.White, navUnLog) } } From 34b150a548cc6fb1c3f58dea7d14e85cb28082a1 Mon Sep 17 00:00:00 2001 From: brongniart Date: Thu, 6 Mar 2025 14:01:06 +0100 Subject: [PATCH 28/32] rajoue de la bottomAppBar --- .../what_the_fantasy/ui/components/NavBar.kt | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt index 6b8b019..035646d 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt @@ -11,15 +11,18 @@ import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.* +import androidx.compose.material3.BottomAppBar import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.IconButtonColors import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -54,6 +57,7 @@ fun NavBar(onProfile : Boolean = false , modifier = Modifier .fillMaxWidth() .height(70.dp) + .padding(5.dp) .background(colorNavBar), Arrangement.SpaceBetween, verticalAlignment = Alignment.Bottom @@ -75,20 +79,21 @@ fun NavBar(onProfile : Boolean = false , Box(modifier = Modifier.background(Color.Black).fillMaxHeight(0.92f)){ content() } + BottomAppBar (modifier = Modifier.fillMaxSize(),) { + Row(modifier = Modifier + .background(colorNavBar) + .fillMaxSize(), + horizontalArrangement = Arrangement.SpaceAround, + verticalAlignment = Alignment.CenterVertically + ) { - Row(modifier = Modifier - .background(colorNavBar) - .fillMaxSize(), - horizontalArrangement = Arrangement.SpaceAround, - verticalAlignment = Alignment.CenterVertically - ) { - - ButtonIconVectorInt(Icons.Rounded.Favorite,"Favorite",navControllerFavorite,index,onFavorite) + ButtonIconVectorInt(Icons.Rounded.Favorite,"Favorite",navControllerFavorite,index,onFavorite) - ButtonIconPainterInt(painterResource(R.mipmap.ic_launcher_foreground),"Accueil",navControllerAccueil,index,onAccueil) + ButtonIconPainterInt(painterResource(R.mipmap.ic_launcher_foreground),"Accueil",navControllerAccueil,index,onAccueil) - ButtonIconVectorInt(Icons.Rounded.Create,"Quiz",navControllerQuiz,index,onQuiz) + ButtonIconVectorInt(Icons.Rounded.Create,"Quiz",navControllerQuiz,index,onQuiz) + } } } } From 2fae6eb9ad51636bd364f8df86fe60ed9dedae22 Mon Sep 17 00:00:00 2001 From: beaulaton Date: Thu, 6 Mar 2025 15:11:15 +0100 Subject: [PATCH 29/32] component little quote --- .../ui/components/LittleQuoteComponent.kt | 67 +++++++++++++++++++ .../ui/screens/FavoritePage.kt | 48 ++++++++----- .../what_the_fantasy/ui/screens/LoginPage.kt | 1 - .../app/src/main/res/values-fr/strings.xml | 5 ++ .../app/src/main/res/values/strings.xml | 4 ++ 5 files changed, 108 insertions(+), 17 deletions(-) create mode 100644 What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/LittleQuoteComponent.kt diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/LittleQuoteComponent.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/LittleQuoteComponent.kt new file mode 100644 index 0000000..8921b0b --- /dev/null +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/LittleQuoteComponent.kt @@ -0,0 +1,67 @@ +package com.example.what_the_fantasy.ui.components + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import coil.compose.AsyncImage +import com.example.what_the_fantasy.R +import com.example.what_the_fantasy.ui.theme.gradienBox + +@Composable +fun LittleQuoteComponent(imageQuote : String, textQuote : String, dateText : String, TypeText : String, titleText : String, CharacterText : String){ + Row( + modifier = Modifier + .fillMaxWidth(0.9f) + .clip(RoundedCornerShape(16.dp)) + .background(gradienBox) + ) { + val sizeTextInfoQuote = 13 + val lineHeightText = 12 + val sizeTextQuote = 16 + + AsyncImage( + model = imageQuote, + contentDescription = "Quote picture", + modifier = Modifier + .size(130.dp) + .clip(RoundedCornerShape(16.dp)) + ) + Column(modifier = Modifier.padding(10.dp)) { + + TextInfoQuote( + textQuote, + sizeTextQuote, + lineHeightText + ) + + SpaceHeightComponent(40) + + TextInfoQuote("${stringResource(R.string.dateQuote)} : $dateText", sizeTextInfoQuote, lineHeightText) + TextInfoQuote("$TypeText : $titleText", sizeTextInfoQuote, lineHeightText) + TextInfoQuote("${stringResource(R.string.CharacterQuote)}: $CharacterText", sizeTextInfoQuote, lineHeightText) + } + } +} + +@Composable +fun TextInfoQuote(text : String, fontSizeText : Int, lineHeightText : Int){ + Text(text, + color = Color.White, + fontSize = fontSizeText.sp, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + lineHeight = lineHeightText.sp) +} \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt index 9a3438c..826e2e3 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt @@ -1,25 +1,37 @@ package com.example.what_the_fantasy.ui.screens +import androidx.annotation.StringRes import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip +import androidx.compose.ui.geometry.CornerRadius import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.style.LineHeightStyle +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import coil.compose.AsyncImage import com.example.what_the_fantasy.R import com.example.what_the_fantasy.data.services.IServices +import com.example.what_the_fantasy.ui.components.LittleQuoteComponent import com.example.what_the_fantasy.ui.components.NavBar import com.example.what_the_fantasy.ui.components.SpaceHeightComponent import com.example.what_the_fantasy.ui.components.TitlePageComponent @@ -40,33 +52,37 @@ fun FavoritePage( navControllerProfil = navProfil, navControllerQuiz = navQuiz ) { + Box( modifier = Modifier .fillMaxSize() .background(colorBackground), contentAlignment = Alignment.Center ){ - Column { - Box( + LazyColumn( modifier = Modifier .fillMaxSize() - .background(Color(0xFF100C1B)), - contentAlignment = Alignment.Center + .background(Color(0xFF100C1B)) + .padding(top=40.dp), + contentPadding = PaddingValues(horizontal = 20.dp) + ) { - Row( - modifier = Modifier - .fillMaxWidth(0.9f) - .padding(20.dp) - .clip(RoundedCornerShape(16.dp)) - .background(gradienBox) - .padding(20.dp), - ) { - Text("Une image") - Text("Une citation d'un personnage") + item{ + LittleQuoteComponent( + "https://img.freepik.com/vecteurs-libre/personnage-guerrier-homme-fantaisie_1045-194.jpg?size=338&ext=jpg", + "La citation qui doit être raccourci par des 3 points pour ne pas trop dépasser.", + "2000", + "Film", + "Les aventures de M Rat", + "Le rat" + ) + + SpaceHeightComponent(30) + } - } } } } } -} \ No newline at end of file + + diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt index 153a535..7ba3364 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt @@ -156,7 +156,6 @@ fun validLogin(identifiant : String, passwd : String, users : List, navCon users.forEachIndexed { index, user -> val hashPassWd = hashPassword(passwd) if (user.username == identifiant && user.password == hashPassWd) { - // Utilise l'index pour naviguer à la position correspondante navController(index) // Passer l'index à la fonction navController return true } diff --git a/What_The_Fantasy/app/src/main/res/values-fr/strings.xml b/What_The_Fantasy/app/src/main/res/values-fr/strings.xml index 6485726..a30ccbc 100644 --- a/What_The_Fantasy/app/src/main/res/values-fr/strings.xml +++ b/What_The_Fantasy/app/src/main/res/values-fr/strings.xml @@ -34,4 +34,9 @@ Sauvegarder L\'adress email est invalide Les mots de passe ne correspondent pas + + + //Component quote + Date + Personnage \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/res/values/strings.xml b/What_The_Fantasy/app/src/main/res/values/strings.xml index 254d478..cf5680d 100644 --- a/What_The_Fantasy/app/src/main/res/values/strings.xml +++ b/What_The_Fantasy/app/src/main/res/values/strings.xml @@ -34,4 +34,8 @@ Invalid email address Passwords do not match + //Component quote + Date + Character + \ No newline at end of file From 485033c3032c7828781e0c08424733a60390b34d Mon Sep 17 00:00:00 2001 From: brongniart Date: Thu, 6 Mar 2025 16:12:40 +0100 Subject: [PATCH 30/32] =?UTF-8?q?amm=C3=A9lioration=20de=20l'=C3=A9st?= =?UTF-8?q?=C3=A9tique?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../what_the_fantasy/ui/components/NavBar.kt | 96 +++++++++++------- .../what_the_fantasy/ui/theme/Color.kt | 5 +- .../res/drawable/dark_mode_toggle_icon.xml | 9 ++ .../res/drawable/favorite_button_empty.xml | 12 +++ .../res/drawable/favorite_button_full.xml | 10 ++ .../main/res/drawable/home_button_empty.xml | 23 +++++ .../main/res/drawable/home_button_full.xml | 49 +++++++++ .../res/drawable/light_mode_toggle_icon.xml | 10 ++ .../app/src/main/res/drawable/like_icon.png | Bin 19932 -> 0 bytes .../src/main/res/drawable/profile_icon.png | Bin 16875 -> 0 bytes .../main/res/drawable/quiz_button_empty.xml | 11 ++ .../main/res/drawable/quiz_button_full.xml | 9 ++ .../app/src/main/res/drawable/quiz_icon.png | Bin 10876 -> 0 bytes .../app/src/main/res/drawable/toggle.png | Bin 10431 -> 0 bytes .../app/src/main/res/drawable/wf_logo.png | Bin 8339 -> 0 bytes 15 files changed, 193 insertions(+), 41 deletions(-) create mode 100644 What_The_Fantasy/app/src/main/res/drawable/dark_mode_toggle_icon.xml create mode 100644 What_The_Fantasy/app/src/main/res/drawable/favorite_button_empty.xml create mode 100644 What_The_Fantasy/app/src/main/res/drawable/favorite_button_full.xml create mode 100644 What_The_Fantasy/app/src/main/res/drawable/home_button_empty.xml create mode 100644 What_The_Fantasy/app/src/main/res/drawable/home_button_full.xml create mode 100644 What_The_Fantasy/app/src/main/res/drawable/light_mode_toggle_icon.xml delete mode 100644 What_The_Fantasy/app/src/main/res/drawable/like_icon.png delete mode 100644 What_The_Fantasy/app/src/main/res/drawable/profile_icon.png create mode 100644 What_The_Fantasy/app/src/main/res/drawable/quiz_button_empty.xml create mode 100644 What_The_Fantasy/app/src/main/res/drawable/quiz_button_full.xml delete mode 100644 What_The_Fantasy/app/src/main/res/drawable/quiz_icon.png delete mode 100644 What_The_Fantasy/app/src/main/res/drawable/toggle.png delete mode 100644 What_The_Fantasy/app/src/main/res/drawable/wf_logo.png diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt index 035646d..8d89f41 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/NavBar.kt @@ -1,39 +1,37 @@ package com.example.what_the_fantasy.ui.components -import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column - +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.* import androidx.compose.material3.BottomAppBar -import androidx.compose.material3.Button -import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.IconButtonColors -import androidx.compose.material3.Text -import androidx.compose.material3.TopAppBar +import androidx.compose.material3.IconToggleButton +import androidx.compose.material3.NavigationBar import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp import com.example.what_the_fantasy.R -import com.example.what_the_fantasy.data.services.IServices import com.example.what_the_fantasy.ui.theme.* @Composable @@ -49,49 +47,69 @@ fun NavBar(onProfile : Boolean = false , content : @Composable ()-> Unit ) { + var theme by remember { mutableStateOf(true) } Column( modifier = Modifier .fillMaxSize() ) { - Row( + NavigationBar( modifier = Modifier - .fillMaxWidth() - .height(70.dp) - .padding(5.dp) - .background(colorNavBar), - Arrangement.SpaceBetween, - verticalAlignment = Alignment.Bottom + .fillMaxWidth(), + containerColor = colorNavBar ) { - ButtonIconVectorInt(Icons.Rounded.AccountCircle,"Profile",navControllerProfil,index,onProfile) - - - Button(onClick = {}, - colors = ButtonDefaults.buttonColors(containerColor = Color.Transparent) + Row( + modifier = Modifier + .fillMaxWidth(), + Arrangement.SpaceBetween, + verticalAlignment = Alignment.Bottom ) { - Image( - painter = painterResource(id = R.drawable.toggle), - contentDescription = "Theme" - ) - } + ButtonIconVectorInt(Icons.Rounded.AccountCircle,"Profile",navControllerProfil,index,onProfile) + + + IconButton(onClick = { theme=!theme}, + modifier = Modifier.size(60.dp) + .clip(RoundedCornerShape(0)) + ) { + Icon(painterResource( + if(theme)R.drawable.dark_mode_toggle_icon + else R.drawable.light_mode_toggle_icon), + contentDescription = "Dark mode", + modifier = Modifier.fillMaxSize(), + tint = Color.White + ) + } + } } - Box(modifier = Modifier.background(Color.Black).fillMaxHeight(0.92f)){ + Box(modifier = Modifier.background(Color.Black).fillMaxHeight(0.90f)){ content() } - BottomAppBar (modifier = Modifier.fillMaxSize(),) { + + BottomAppBar (modifier = Modifier + .fillMaxSize(), + containerColor = colorNavBar + ) { Row(modifier = Modifier - .background(colorNavBar) .fillMaxSize(), horizontalArrangement = Arrangement.SpaceAround, verticalAlignment = Alignment.CenterVertically ) { - ButtonIconVectorInt(Icons.Rounded.Favorite,"Favorite",navControllerFavorite,index,onFavorite) + ButtonIconPainterInt(painterResource( + if(onFavorite)R.drawable.favorite_button_full + else R.drawable.favorite_button_empty + ),"Favorite",navControllerFavorite,index,onFavorite) - ButtonIconPainterInt(painterResource(R.mipmap.ic_launcher_foreground),"Accueil",navControllerAccueil,index,onAccueil) + ButtonIconPainterInt(painterResource( + if(onAccueil)R.drawable.home_button_full + else R.drawable.home_button_empty + ),"Accueil",navControllerAccueil,index,onAccueil) - ButtonIconVectorInt(Icons.Rounded.Create,"Quiz",navControllerQuiz,index,onQuiz) + ButtonIconPainterInt(painterResource( + if(onQuiz)R.drawable.quiz_button_full + else R.drawable.quiz_button_empty + ),"Quiz",navControllerQuiz,index,onQuiz) } } @@ -102,15 +120,15 @@ fun NavBar(onProfile : Boolean = false , fun ButtonIconVectorInt(img : ImageVector, name : String, nav : (Int)->Unit ,index: Int,onPage : Boolean){ IconButton(onClick = {nav(index)}, enabled = !onPage, - colors = IconButtonColors(Color.Transparent,Color.White,//couleur quand il n'est pas selectionné - Color.Transparent, colorButtonNav),//couleur quand il est selectionné + colors = IconButtonColors(Color.Transparent, colorButtonNav,//couleur quand il n'est pas selectionné + Color.Transparent, colorButtonNavSelected),//couleur quand il est selectionné modifier = Modifier .size(60.dp) ) { Icon(img, contentDescription = name, modifier = Modifier - .size(60.dp) + .fillMaxSize() ) } } @@ -120,15 +138,15 @@ fun ButtonIconVectorInt(img : ImageVector, name : String, nav : (Int)->Unit ,ind fun ButtonIconPainterInt(img : Painter, name : String, nav : (Int)->Unit,index: Int,onPage : Boolean){ IconButton(onClick = {nav(index)}, enabled = !onPage, - colors = IconButtonColors(Color.Transparent,Color.White,//couleur quand il n'est pas selectionné - Color.Transparent, colorButtonNav),//couleur quand il est selectionné + colors = IconButtonColors(Color.Transparent,colorButtonNav,//couleur quand il n'est pas selectionné + Color.Transparent, colorButtonNavSelected),//couleur quand il est selectionné modifier = Modifier .size(60.dp) ) { Icon(img, contentDescription = name, modifier = Modifier - .size(60.dp) + .fillMaxSize() ) } } diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/theme/Color.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/theme/Color.kt index 880122c..0ef8b24 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/theme/Color.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/theme/Color.kt @@ -18,6 +18,7 @@ val gradienBox = Brush.linearGradient( ) val colorBackground = Color(0xFF100C1B) -val colorNavBar = Color(0xFF2F0E62) +val colorNavBar = Color.Black -val colorButtonNav = Color.Cyan \ No newline at end of file +val colorButtonNavSelected= Color(0xFFC8C8C8) +val colorButtonNav = Color.White \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/res/drawable/dark_mode_toggle_icon.xml b/What_The_Fantasy/app/src/main/res/drawable/dark_mode_toggle_icon.xml new file mode 100644 index 0000000..752f388 --- /dev/null +++ b/What_The_Fantasy/app/src/main/res/drawable/dark_mode_toggle_icon.xml @@ -0,0 +1,9 @@ + + + diff --git a/What_The_Fantasy/app/src/main/res/drawable/favorite_button_empty.xml b/What_The_Fantasy/app/src/main/res/drawable/favorite_button_empty.xml new file mode 100644 index 0000000..33a5dda --- /dev/null +++ b/What_The_Fantasy/app/src/main/res/drawable/favorite_button_empty.xml @@ -0,0 +1,12 @@ + + + diff --git a/What_The_Fantasy/app/src/main/res/drawable/favorite_button_full.xml b/What_The_Fantasy/app/src/main/res/drawable/favorite_button_full.xml new file mode 100644 index 0000000..3443b39 --- /dev/null +++ b/What_The_Fantasy/app/src/main/res/drawable/favorite_button_full.xml @@ -0,0 +1,10 @@ + + + diff --git a/What_The_Fantasy/app/src/main/res/drawable/home_button_empty.xml b/What_The_Fantasy/app/src/main/res/drawable/home_button_empty.xml new file mode 100644 index 0000000..1eba6f8 --- /dev/null +++ b/What_The_Fantasy/app/src/main/res/drawable/home_button_empty.xml @@ -0,0 +1,23 @@ + + + + + + + + + + diff --git a/What_The_Fantasy/app/src/main/res/drawable/home_button_full.xml b/What_The_Fantasy/app/src/main/res/drawable/home_button_full.xml new file mode 100644 index 0000000..c2959b3 --- /dev/null +++ b/What_The_Fantasy/app/src/main/res/drawable/home_button_full.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/What_The_Fantasy/app/src/main/res/drawable/light_mode_toggle_icon.xml b/What_The_Fantasy/app/src/main/res/drawable/light_mode_toggle_icon.xml new file mode 100644 index 0000000..8e171be --- /dev/null +++ b/What_The_Fantasy/app/src/main/res/drawable/light_mode_toggle_icon.xml @@ -0,0 +1,10 @@ + + + diff --git a/What_The_Fantasy/app/src/main/res/drawable/like_icon.png b/What_The_Fantasy/app/src/main/res/drawable/like_icon.png deleted file mode 100644 index 6d62a6cf2999c0d640e96085a9ea5c879bc7e4ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19932 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 u-t;h+2o7`>DQyt|Q~UoP|G + + diff --git a/What_The_Fantasy/app/src/main/res/drawable/quiz_button_full.xml b/What_The_Fantasy/app/src/main/res/drawable/quiz_button_full.xml new file mode 100644 index 0000000..dd8a0a4 --- /dev/null +++ b/What_The_Fantasy/app/src/main/res/drawable/quiz_button_full.xml @@ -0,0 +1,9 @@ + + + diff --git a/What_The_Fantasy/app/src/main/res/drawable/quiz_icon.png b/What_The_Fantasy/app/src/main/res/drawable/quiz_icon.png deleted file mode 100644 index a4aca0e7c7ab3f86008d5df6a9e11cc0bd340f7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10876 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 pe<-Mg`#{p$|N4;a=Uu&0_&suium{txdoaO400 diff --git a/What_The_Fantasy/app/src/main/res/drawable/wf_logo.png b/What_The_Fantasy/app/src/main/res/drawable/wf_logo.png deleted file mode 100644 index 7388be92954e0d44f6b46f3455a0dbd72b16cb4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8339 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ξR@^~kE;ogKyh8><(pWPFunVN4g3S7>4?)in-#lWk*3PBP$cWlf8 zbw+3#0XA^kOiDbctd2E~g*UVJ$UQuVF=2ZI{iPiRx}XDOxM78eV)}sENZes0zyuGS zTrATd8VAD`t~xI}+04bZIj{;x4- zCuY7DJiQz!?ojo%N9DsNdij0)IXm()h)}k-|MvJCZn4Z{36^P3aB;{Mk}{)!-Dr~S z&vMdwaUF(KDccX8)1B_@o}C#3ro8lSd0YR8=}ikBrPWflhVLE`V|x9}SWXR|`M(c4 zECjYy{>qG4OOz*Y!{WoQvu`VCf7@mUxo*CZKM>m$N1+_OpWvYh>=w7hzwHoT%F|q+5PYLIw|>zP6@>-OzdC&M<)3<5xh@6B$w%eEH~E#doPYNGj9Jr`?$mTbBmx=H%hk-YaR;sX2d|wjyCKo=_Zsdx!%_%j-z8*V=i3SzaE~Q(wIt00 ziT-d*@Odh#7YLM>dEBofwQ&b+Q1VsMzQ1$z_Kz!dAHIWzx%5pQ{;vt>7fd(o?qGo2 gzq0`UgK8Zbf~be>7^#wE@5BJl6rU?p$eRWKADs=T Date: Thu, 6 Mar 2025 16:36:43 +0100 Subject: [PATCH 31/32] Ajout de la page favori, design fini --- .../what_the_fantasy/Logs/LogsUsers.kt | 2 +- .../what_the_fantasy/data/local/QuoteStub.kt | 120 ++++++++++++------ .../what_the_fantasy/data/local/UserStub.kt | 41 ++---- .../what_the_fantasy/data/model/Quote.kt | 9 +- .../data/model/SrcLanguage.kt | 6 + .../what_the_fantasy/data/model/User.kt | 3 +- .../data/services/ServicesStub.kt | 3 +- .../ui/components/LittleQuoteComponent.kt | 13 +- .../ui/components/TitleComponents.kt | 13 +- .../ui/screens/FavoritePage.kt | 61 +++------ .../what_the_fantasy/ui/screens/LoginPage.kt | 7 +- .../what_the_fantasy/ui/screens/ProfilPage.kt | 2 +- .../what_the_fantasy/ui/screens/SignUpPage.kt | 2 +- .../app/src/main/res/values-fr/strings.xml | 4 + .../app/src/main/res/values/strings.xml | 3 + 15 files changed, 161 insertions(+), 128 deletions(-) create mode 100644 What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/model/SrcLanguage.kt diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/Logs/LogsUsers.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/Logs/LogsUsers.kt index 2e16aa8..1ae774c 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/Logs/LogsUsers.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/Logs/LogsUsers.kt @@ -6,7 +6,7 @@ import com.example.what_the_fantasy.data.model.User class LogsUsers{ fun logDebugDisplayUsers(users : List, titleLog : String){ for(user in users){ - Log.e(titleLog, "User created: ${user.username} => ${user.email} => ${user.imgUrl}") + Log.e(titleLog, "User created: ${user.username} => ${user.email} => ${user.imgUrl} => ${user.language}") } } diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/local/QuoteStub.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/local/QuoteStub.kt index cc321e5..2922816 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/local/QuoteStub.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/local/QuoteStub.kt @@ -1,6 +1,8 @@ package com.example.what_the_fantasy.data.local import com.example.what_the_fantasy.data.model.Quote +import com.example.what_the_fantasy.data.model.SrcLanguage +import com.example.what_the_fantasy.data.model.SrcType object QuoteStub { @@ -8,181 +10,221 @@ object QuoteStub { id = 1, content = "All we have to decide is what to do with the time that is given us.", likes = 466, - language = "en", + language = SrcLanguage.vo, character = CharacterStub.gandalf.name, source = "The Lord of the Rings: The Fellowship of the Ring", + date = 2000, + type = SrcType.Movie, imgUrl = CharacterStub.gandalf.imgUrl ) val quote2 = Quote( id = 2, content = "A wizard is never late, nor is he early, he arrives precisely when he means to.", likes = 467, - language = "en", + language = SrcLanguage.vo, character = CharacterStub.gandalf.name, source = "The Lord of the Rings: The Fellowship of the Ring", - imgUrl = CharacterStub.gandalf.imgUrl + imgUrl = CharacterStub.gandalf.imgUrl, + date = 2000, + type = SrcType.Movie, ) val quote3 = Quote( id = 3, content = "Even the smallest person can change the course of the future.", likes = 466, - language = "en", + language = SrcLanguage.vo, character = CharacterStub.galadriel.name, source = "The Lord of the Rings: The Fellowship of the Ring", - imgUrl = CharacterStub.galadriel.imgUrl + imgUrl = CharacterStub.galadriel.imgUrl, + date = 2000, + type = SrcType.Movie, ) val quote4 = Quote( id = 4, content = "I would rather share one lifetime with you than face all the ages of this world alone.", likes = 120, - language = "en", + language = SrcLanguage.vo, character = CharacterStub.arwen.name, source = "The Lord of the Rings: The Fellowship of the Ring", - imgUrl = CharacterStub.arwen.imgUrl + imgUrl = CharacterStub.arwen.imgUrl, + date = 2000, + type = SrcType.Movie, ) val quote5 = Quote( id = 5, content = "Faithless is he that says farewell when the road darkens.", likes = 150, - language = "en", + language = SrcLanguage.vo, character = CharacterStub.gimli.name, source = "The Lord of the Rings: The Fellowship of the Ring", - imgUrl = CharacterStub.gimli.imgUrl + imgUrl = CharacterStub.gimli.imgUrl, + date = 2000, + type = SrcType.Movie, ) val quote6 = Quote( id = 6, content = "It's a dangerous business, Frodo, going out your door. You step onto the road, and if you don't keep your feet, there's no knowing where you might be swept off to.", likes = 200, - language = "en", + language = SrcLanguage.vo, character = CharacterStub.frodoBaggins.name, source = "The Lord of the Rings: The Fellowship of the Ring", - imgUrl = CharacterStub.frodoBaggins.imgUrl + imgUrl = CharacterStub.frodoBaggins.imgUrl, + date = 2000, + type = SrcType.Movie, ) val quote7 = Quote( id = 7, content = "I am no man.", likes = 300, - language = "en", + language = SrcLanguage.vo, character = CharacterStub.eowyn.name, source = "The Lord of the Rings: The Return of the King", - imgUrl = CharacterStub.eowyn.imgUrl + imgUrl = CharacterStub.eowyn.imgUrl, + date = 2000, + type = SrcType.Movie, ) val quote8 = Quote( id = 8, content = "The world is changed. I feel it in the water. I feel it in the earth. I smell it in the air.", likes = 400, - language = "en", + language = SrcLanguage.vo, character = CharacterStub.treebeard.name, source = "The Lord of the Rings: The Two Towers", - imgUrl = CharacterStub.treebeard.imgUrl + imgUrl = CharacterStub.treebeard.imgUrl, + date = 2000, + type = SrcType.Movie, ) val quote9 = Quote( id = 9, content = "We wants it, we needs it. Must have the precious.", likes = 500, - language = "en", + language = SrcLanguage.vo, character = CharacterStub.gollum.name, source = "The Lord of the Rings: The Two Towers", - imgUrl = CharacterStub.gollum.imgUrl + imgUrl = CharacterStub.gollum.imgUrl, + date = 2000, + type = SrcType.Movie, ) val quote10 = Quote( id = 10, content = "The board is set, the pieces are moving. We come to it at last, the great battle of our time.", likes = 600, - language = "en", + language = SrcLanguage.vo, character = CharacterStub.gandalf.name, source = "The Lord of the Rings: The Return of the King", - imgUrl = CharacterStub.gandalf.imgUrl + imgUrl = CharacterStub.gandalf.imgUrl, + date = 2000, + type = SrcType.Movie, ) val quote11 = Quote( id = 11, content = "Un grand pouvoir implique de grandes responsabilités.", likes = 466, - language = "fr", + language = SrcLanguage.fr, character = CharacterStub.aragorn.name, source = "Spider-Man", - imgUrl = CharacterStub.aragorn.imgUrl + imgUrl = CharacterStub.aragorn.imgUrl, + date = 2000, + type = SrcType.Movie, ) val quote12 = Quote( id = 12, content = "Que la Force soit avec toi.", likes = 467, - language = "fr", + language = SrcLanguage.fr, character = CharacterStub.legolas.name, source = "Star Wars", - imgUrl = CharacterStub.legolas.imgUrl + imgUrl = CharacterStub.legolas.imgUrl, + date = 2000, + type = SrcType.Movie, ) val quote13 = Quote( id = 13, content = "La magie est partout. Il suffit de savoir où la trouver.", likes = 466, - language = "fr", + language = SrcLanguage.fr, character = CharacterStub.gandalf.name, source = "Harry Potter", - imgUrl = CharacterStub.gandalf.imgUrl + imgUrl = CharacterStub.gandalf.imgUrl, + date = 2000, + type = SrcType.Movie, ) val quote14 = Quote( id = 14, content = "Le monde est plein de choses magiques, patientant que nos sens s'aiguisent.", likes = 120, - language = "fr", + language = SrcLanguage.fr, character = CharacterStub.frodoBaggins.name, source = "Le Seigneur des Anneaux", - imgUrl = CharacterStub.frodoBaggins.imgUrl + imgUrl = CharacterStub.frodoBaggins.imgUrl, + date = 2000, + type = SrcType.Movie, ) val quote15 = Quote( id = 15, content = "La peur mène à la colère, la colère mène à la haine, la haine mène à la souffrance.", likes = 150, - language = "fr", + language = SrcLanguage.fr, character = CharacterStub.gimli.name, source = "Star Wars", - imgUrl = CharacterStub.gimli.imgUrl + imgUrl = CharacterStub.gimli.imgUrl, + date = 2000, + type = SrcType.Movie, ) val quote16 = Quote( id = 16, content = "La vie est une aventure audacieuse ou rien du tout.", likes = 200, - language = "fr", + language = SrcLanguage.fr, character = CharacterStub.galadriel.name, source = "Helen Keller", - imgUrl = CharacterStub.galadriel.imgUrl + imgUrl = CharacterStub.galadriel.imgUrl, + date = 2000, + type = SrcType.Movie, ) val quote17 = Quote( id = 17, content = "Le courage n'est pas l'absence de peur, mais la capacité de vaincre ce qui fait peur.", likes = 300, - language = "fr", + language = SrcLanguage.fr, character = CharacterStub.boromir.name, source = "Nelson Mandela", - imgUrl = CharacterStub.boromir.imgUrl + imgUrl = CharacterStub.boromir.imgUrl, + date = 2000, + type = SrcType.Movie, ) val quote18 = Quote( id = 18, content = "La folie, c'est de faire toujours la même chose et de s'attendre à un résultat différent.", likes = 400, - language = "fr", + language = SrcLanguage.fr, character = CharacterStub.eowyn.name, source = "Albert Einstein", - imgUrl = CharacterStub.eowyn.imgUrl + imgUrl = CharacterStub.eowyn.imgUrl, + date = 2000, + type = SrcType.Movie, ) val quote19 = Quote( id = 19, content = "Le bonheur n'est pas quelque chose de tout fait. Il vient de vos propres actions.", likes = 500, - language = "fr", + language = SrcLanguage.fr, character = CharacterStub.saruman.name, source = "Dalaï Lama", - imgUrl = CharacterStub.saruman.imgUrl + imgUrl = CharacterStub.saruman.imgUrl, + date = 2000, + type = SrcType.Movie, ) val quote20 = Quote( id = 20, content = "La vie est un mystère qu'il faut vivre, et non un problème à résoudre.", likes = 600, - language = "fr", + language = SrcLanguage.fr, character = CharacterStub.samwiseGamgee.name, source = "Gandhi", - imgUrl = CharacterStub.samwiseGamgee.imgUrl + imgUrl = CharacterStub.samwiseGamgee.imgUrl, + date = 2000, + type = SrcType.Movie, ) val allQuotes: List = listOf( diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/local/UserStub.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/local/UserStub.kt index d5250eb..da7fe1c 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/local/UserStub.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/local/UserStub.kt @@ -1,40 +1,23 @@ package com.example.what_the_fantasy.data.local +import com.example.what_the_fantasy.data.model.SrcLanguage import com.example.what_the_fantasy.data.model.User object UserStub { //LE MOT DE PASSE POUR TOUS LES UTILISATEURS EST : 1234 val users: MutableList = mutableListOf( - User(1, "Aragorn123", "aragorn@example.com", "2022-01-15", "https://img.freepik.com/vecteurs-libre/personnage-guerrier-fantaisie_1045-185.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"), //1234 - User(2, "Legolas456", "legolas@example.com", "2021-05-23", "https://img.freepik.com/vecteurs-libre/personnage-elfe-fantaisie_1045-186.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"),//1234 - User(3, "Gandalf789", "gandalf@example.com", "2020-09-10", "https://img.freepik.com/vecteurs-libre/personnage-magicien-fantaisie_1045-187.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"),//1234 - User(4, "FrodoBaggins", "frodo@example.com", "2023-03-18", "https://img.freepik.com/vecteurs-libre/personnage-hobbit-fantaisie_1045-188.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"),//1234 - User(5, "Gimli999", "gimli@example.com", "2022-07-04", "https://img.freepik.com/vecteurs-libre/personnage-nain-fantaisie_1045-189.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"),//1234 - User(6, "Galadriel321", "galadriel@example.com", "2021-11-30", "https://img.freepik.com/vecteurs-libre/personnage-elfe-femme-fantaisie_1045-190.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"),//1234 - User(7, "Boromir654", "boromir@example.com", "2023-06-22", "https://img.freepik.com/vecteurs-libre/personnage-guerrier-homme-fantaisie_1045-191.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"),//1234 - User(8, "Eowyn777", "eowyn@example.com", "2022-04-11", "https://img.freepik.com/vecteurs-libre/personnage-guerriere-femme-fantaisie_1045-192.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"),//1234 - User(9, "Saruman888", "saruman@example.com", "2021-08-15", "https://img.freepik.com/vecteurs-libre/personnage-magicien-malefique-fantaisie_1045-193.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"),//1234 - User(10, "Faramir222", "faramir@example.com", "2023-02-08", "https://img.freepik.com/vecteurs-libre/personnage-guerrier-homme-fantaisie_1045-194.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"),//1234 - User(11, "dev", "testeur@example.com", "2023-02-08", "https://img.freepik.com/vecteurs-libre/personnage-guerrier-homme-fantaisie_1045-194.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4")//1234 + User(1, "Aragorn123", "aragorn@example.com", "2022-01-15", "https://img.freepik.com/vecteurs-libre/personnage-guerrier-fantaisie_1045-185.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4", SrcLanguage.fr), //1234 + User(2, "Legolas456", "legolas@example.com", "2021-05-23", "https://img.freepik.com/vecteurs-libre/personnage-elfe-fantaisie_1045-186.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4", SrcLanguage.fr),//1234 + User(3, "Gandalf789", "gandalf@example.com", "2020-09-10", "https://img.freepik.com/vecteurs-libre/personnage-magicien-fantaisie_1045-187.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4", SrcLanguage.fr),//1234 + User(4, "FrodoBaggins", "frodo@example.com", "2023-03-18", "https://img.freepik.com/vecteurs-libre/personnage-hobbit-fantaisie_1045-188.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4", SrcLanguage.fr),//1234 + User(5, "Gimli999", "gimli@example.com", "2022-07-04", "https://img.freepik.com/vecteurs-libre/personnage-nain-fantaisie_1045-189.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4", SrcLanguage.vo),//1234 + User(6, "Galadriel321", "galadriel@example.com", "2021-11-30", "https://img.freepik.com/vecteurs-libre/personnage-elfe-femme-fantaisie_1045-190.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4", SrcLanguage.vo),//1234 + User(7, "Boromir654", "boromir@example.com", "2023-06-22", "https://img.freepik.com/vecteurs-libre/personnage-guerrier-homme-fantaisie_1045-191.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4", SrcLanguage.vo),//1234 + User(8, "Eowyn777", "eowyn@example.com", "2022-04-11", "https://img.freepik.com/vecteurs-libre/personnage-guerriere-femme-fantaisie_1045-192.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4", SrcLanguage.vo),//1234 + User(9, "Saruman888", "saruman@example.com", "2021-08-15", "https://img.freepik.com/vecteurs-libre/personnage-magicien-malefique-fantaisie_1045-193.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4", SrcLanguage.vo),//1234 + User(10, "Faramir222", "faramir@example.com", "2023-02-08", "https://img.freepik.com/vecteurs-libre/personnage-guerrier-homme-fantaisie_1045-194.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4", SrcLanguage.vo),//1234 + User(11, "dev", "testeur@example.com", "2023-02-08", "https://img.freepik.com/vecteurs-libre/personnage-guerrier-homme-fantaisie_1045-194.jpg?size=338&ext=jpg", "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4", SrcLanguage.fr)//1234 ) - fun addUser(user: User) { - users.add(user) - } - -// -// // Modifier un utilisateur -// fun updateUser(id: Int, updatedUser: User) { -// val index = users.indexOfFirst { it.id == id } -// if (index != -1) { -// users[index] = updatedUser -// } -// } -// -// // Supprimer un utilisateur -// fun removeUser(id: Int) { -// users.removeAll { it.id == id } -// } -// } \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/model/Quote.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/model/Quote.kt index 8db4084..75da8b1 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/model/Quote.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/model/Quote.kt @@ -1,11 +1,16 @@ package com.example.what_the_fantasy.data.model +import java.util.Date + data class Quote ( val id: Int, val content: String, val likes: Int, - val language: String, + val language: SrcLanguage, val character: String, val source: String, - val imgUrl: String + val imgUrl: String, + val type: SrcType, + val date: Int + ) \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/model/SrcLanguage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/model/SrcLanguage.kt new file mode 100644 index 0000000..7c27fbb --- /dev/null +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/model/SrcLanguage.kt @@ -0,0 +1,6 @@ +package com.example.what_the_fantasy.data.model + +enum class SrcLanguage { + fr, + vo +} \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/model/User.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/model/User.kt index 811561b..2749a1c 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/model/User.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/model/User.kt @@ -6,5 +6,6 @@ class User( var email:String, var date:String, val imgUrl: String, - var password: String + var password: String, + val language : SrcLanguage ) \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt index a0848f3..70745e7 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt @@ -6,6 +6,7 @@ import com.example.what_the_fantasy.data.local.UserStub import com.example.what_the_fantasy.data.local.UserStub.users import com.example.what_the_fantasy.data.model.User import com.example.what_the_fantasy.Logs.LogsUsers +import com.example.what_the_fantasy.data.model.SrcLanguage import com.example.what_the_fantasy.ui.components.hashPassword import java.time.LocalDate @@ -52,7 +53,7 @@ class ServicesStub : IServices { return false } } - val user = User(nbUser+1,username, email, date,randomImage(userStub), passwordhash) + val user = User(nbUser+1,username, email, date,randomImage(userStub), passwordhash, SrcLanguage.vo) users.add(user)//ajout au stub //Afficher tous les users diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/LittleQuoteComponent.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/LittleQuoteComponent.kt index 8921b0b..3f9481c 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/LittleQuoteComponent.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/LittleQuoteComponent.kt @@ -18,10 +18,11 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import coil.compose.AsyncImage import com.example.what_the_fantasy.R +import com.example.what_the_fantasy.data.model.Quote import com.example.what_the_fantasy.ui.theme.gradienBox @Composable -fun LittleQuoteComponent(imageQuote : String, textQuote : String, dateText : String, TypeText : String, titleText : String, CharacterText : String){ +fun LittleQuoteComponent(quote : Quote){ Row( modifier = Modifier .fillMaxWidth(0.9f) @@ -33,7 +34,7 @@ fun LittleQuoteComponent(imageQuote : String, textQuote : String, dateText : Str val sizeTextQuote = 16 AsyncImage( - model = imageQuote, + model = quote.imgUrl, contentDescription = "Quote picture", modifier = Modifier .size(130.dp) @@ -42,16 +43,16 @@ fun LittleQuoteComponent(imageQuote : String, textQuote : String, dateText : Str Column(modifier = Modifier.padding(10.dp)) { TextInfoQuote( - textQuote, + quote.content, sizeTextQuote, lineHeightText ) SpaceHeightComponent(40) - TextInfoQuote("${stringResource(R.string.dateQuote)} : $dateText", sizeTextInfoQuote, lineHeightText) - TextInfoQuote("$TypeText : $titleText", sizeTextInfoQuote, lineHeightText) - TextInfoQuote("${stringResource(R.string.CharacterQuote)}: $CharacterText", sizeTextInfoQuote, lineHeightText) + TextInfoQuote("${stringResource(R.string.dateQuote)} : ${quote.date}", sizeTextInfoQuote, lineHeightText) + TextInfoQuote("${quote.type} : ${quote.source}", sizeTextInfoQuote, lineHeightText) + TextInfoQuote("${stringResource(R.string.CharacterQuote)}: ${quote.character}", sizeTextInfoQuote, lineHeightText) } } } diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/TitleComponents.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/TitleComponents.kt index 86aad8f..50c1ac7 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/TitleComponents.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/components/TitleComponents.kt @@ -1,21 +1,28 @@ package com.example.what_the_fantasy.ui.components +import androidx.compose.foundation.layout.padding 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.res.stringResource import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp @Composable -fun TitlePageComponent(titleResId : Int, size : Int, color : Color) { +fun TitlePageComponent(titleResId: Int, color: Color) { val title = stringResource(id = titleResId) Text( text = title, - fontSize = size.sp, + fontSize = 20.sp, fontWeight = FontWeight.Bold, - color = color + color = color, + textAlign = TextAlign.Center, + ) } diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt index 826e2e3..c6ce095 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt @@ -1,88 +1,69 @@ package com.example.what_the_fantasy.ui.screens -import androidx.annotation.StringRes import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.foundation.shape.CircleShape -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material3.Text +import androidx.compose.foundation.lazy.items import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip -import androidx.compose.ui.geometry.CornerRadius import androidx.compose.ui.graphics.Color -import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.style.LineHeightStyle -import androidx.compose.ui.text.style.TextOverflow -import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp -import coil.compose.AsyncImage import com.example.what_the_fantasy.R -import com.example.what_the_fantasy.data.services.IServices +import com.example.what_the_fantasy.data.local.QuoteStub import com.example.what_the_fantasy.ui.components.LittleQuoteComponent import com.example.what_the_fantasy.ui.components.NavBar -import com.example.what_the_fantasy.ui.components.SpaceHeightComponent import com.example.what_the_fantasy.ui.components.TitlePageComponent import com.example.what_the_fantasy.ui.theme.colorBackground -import com.example.what_the_fantasy.ui.theme.gradienBox @Composable fun FavoritePage( index: Int, navAccueil: (Int) -> Unit, navQuiz: (Int) -> Unit, - navProfil:(Int) -> Unit + navProfil: (Int) -> Unit ) { - NavBar(onFavorite = true, + NavBar( + onFavorite = true, index = index, - navControllerFavorite = { }, + navControllerFavorite = { }, navControllerAccueil = navAccueil, navControllerProfil = navProfil, navControllerQuiz = navQuiz ) { - Box( modifier = Modifier .fillMaxSize() .background(colorBackground), contentAlignment = Alignment.Center - ){ - LazyColumn( + ) { + Column(modifier = Modifier + .padding(top = 20.dp), + horizontalAlignment = Alignment.CenterHorizontally) { + TitlePageComponent(R.string.TitleFavorite, Color.White) + + LazyColumn( modifier = Modifier .fillMaxSize() .background(Color(0xFF100C1B)) - .padding(top=40.dp), - contentPadding = PaddingValues(horizontal = 20.dp) - + .padding(top = 16.dp), + horizontalAlignment = Alignment.CenterHorizontally ) { - item{ - LittleQuoteComponent( - "https://img.freepik.com/vecteurs-libre/personnage-guerrier-homme-fantaisie_1045-194.jpg?size=338&ext=jpg", - "La citation qui doit être raccourci par des 3 points pour ne pas trop dépasser.", - "2000", - "Film", - "Les aventures de M Rat", - "Le rat" - ) - - SpaceHeightComponent(30) - } + items(QuoteStub.allQuotes) { quote -> + LittleQuoteComponent(quote) + Spacer(modifier = Modifier.height(16.dp)) + } } } } } +} + diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt index 7ba3364..fca9d38 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt @@ -73,8 +73,8 @@ fun LoginPage(navControllerSignUp: () -> Unit, navControllerProfil: (Int) -> Uni horizontalAlignment = Alignment.CenterHorizontally ) { - TitlePageComponent(R.string.titleLogin, 20,Color.White) - SpaceHeightComponent(16) + TitlePageComponent(R.string.titleLogin, Color.White) + SpaceHeightComponent(20) ConnexionButtonLogin(users,IdentifiantTextField(R.string.IdentifiantLogin), PassWdTextField(R.string.PasswdLogin), R.string.ButtonLogin,18, Color.White, Color.Black,navControllerProfil) SpaceHeightComponent(16) CreateAccountButton(R.string.ButtonCreateLogin,12, Color.White, navControllerSignUp) @@ -109,7 +109,7 @@ fun PassWdTextField(textpasswdResId : Int) : String{ val textpasswd = stringResource(id = textpasswdResId) var passwd by remember { mutableStateOf("") } // Stocke la valeur du champ var passwordVisible by remember { mutableStateOf(false) } // État pour afficher/masquer - Column(modifier = Modifier.padding(top = 10.dp)) { + Column(modifier = Modifier.padding(top = 10.dp, bottom = 30.dp)) { OutlinedTextField( value = passwd, onValueChange = { passwd = it }, @@ -161,7 +161,6 @@ fun validLogin(identifiant : String, passwd : String, users : List, navCon } } return false - } @Composable diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt index 7e88bc6..b122258 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/ProfilPage.kt @@ -108,7 +108,7 @@ fun ProfilPage(index: Int, ) { // Titre - TitlePageComponent(R.string.titleProfile, 20, Color.White) + TitlePageComponent(R.string.titleProfile, Color.White) SpaceHeightComponent(16) // Image de profil diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SignUpPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SignUpPage.kt index 84e592b..13d5ca8 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SignUpPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SignUpPage.kt @@ -77,7 +77,7 @@ fun SignUpPage(navControllerLogin: () -> Unit, services : IServices) { horizontalAlignment = Alignment.CenterHorizontally ) { - TitlePageComponent(R.string.titleSignUp, 20,Color.White) + TitlePageComponent(R.string.titleSignUp,Color.White) IdentifiantTextFieldSign(R.string.IdentifiantLogin,identifiant = username,onValueChange = { username = it }) EmailTextFieldSign(R.string.EmailSignUp, email, onValueChange = { email = it }) PassWdTextFieldSign(R.string.PasswdLogin,password, onValueChange = { password = it },passwordVisible,onPasswordVisibilityChange = { passwordVisible = !passwordVisible }) diff --git a/What_The_Fantasy/app/src/main/res/values-fr/strings.xml b/What_The_Fantasy/app/src/main/res/values-fr/strings.xml index a30ccbc..84332fa 100644 --- a/What_The_Fantasy/app/src/main/res/values-fr/strings.xml +++ b/What_The_Fantasy/app/src/main/res/values-fr/strings.xml @@ -39,4 +39,8 @@ //Component quote Date Personnage + + + //Page Favori + Favoris \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/res/values/strings.xml b/What_The_Fantasy/app/src/main/res/values/strings.xml index cf5680d..2fcce63 100644 --- a/What_The_Fantasy/app/src/main/res/values/strings.xml +++ b/What_The_Fantasy/app/src/main/res/values/strings.xml @@ -38,4 +38,7 @@ Date Character + //Page Favori + Favorites + \ No newline at end of file From aeaa8e0b55fdb5b85a9b61a9cd04f9e4f8bb1799 Mon Sep 17 00:00:00 2001 From: beaulaton Date: Thu, 6 Mar 2025 17:28:40 +0100 Subject: [PATCH 32/32] =?UTF-8?q?Lien=20Favori=20=C3=A0=20quote?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../what_the_fantasy/ui/navigations/AppNavigator.kt | 3 ++- .../what_the_fantasy/ui/screens/FavoritePage.kt | 13 +++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt index 1425e65..169f329 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/navigations/AppNavigator.kt @@ -74,7 +74,8 @@ fun AppNavigator() { index = favorite.userIndex, navAccueil ={ navController.navigate( Accueil(favorite.userIndex) ) }, navQuiz = { navController.navigate(QuizMenu(favorite.userIndex)) }, - navProfil = { navController.navigate(Profil(favorite.userIndex)) } + navProfil = { navController.navigate(Profil(favorite.userIndex)) }, + navQuote = {navController.navigate(Quote)} ) } composable{ val profil:Profil = it.toRoute() diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt index c6ce095..2d34fb8 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/FavoritePage.kt @@ -1,6 +1,7 @@ package com.example.what_the_fantasy.ui.screens import androidx.compose.foundation.background +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer @@ -26,7 +27,8 @@ fun FavoritePage( index: Int, navAccueil: (Int) -> Unit, navQuiz: (Int) -> Unit, - navProfil: (Int) -> Unit + navProfil: (Int) -> Unit, + navQuote:() -> Unit ) { NavBar( onFavorite = true, @@ -34,7 +36,7 @@ fun FavoritePage( navControllerFavorite = { }, navControllerAccueil = navAccueil, navControllerProfil = navProfil, - navControllerQuiz = navQuiz + navControllerQuiz = navQuiz , ) { Box( modifier = Modifier @@ -55,9 +57,12 @@ fun FavoritePage( horizontalAlignment = Alignment.CenterHorizontally ) { items(QuoteStub.allQuotes) { quote -> - LittleQuoteComponent(quote) + Column (Modifier.clickable { navQuote()}){ + LittleQuoteComponent(quote) + + Spacer(modifier = Modifier.height(16.dp)) + } - Spacer(modifier = Modifier.height(16.dp)) } } }