diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/model/SrcType.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/model/SrcType.kt index 6e8671f..a5c6112 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/model/SrcType.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/model/SrcType.kt @@ -1,7 +1,10 @@ package com.example.what_the_fantasy.data.model +import androidx.compose.ui.res.stringResource +import com.example.what_the_fantasy.R + enum class SrcType (val value: String) { - Movie("@string/movie"), - VideoGame("@string/videoGame"), - Series("@string/series"), + Movie("movie" ), + VideoGame("videoGame"), + Series("series"), } \ 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 0ff0c06..cecc669 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 @@ -28,4 +28,6 @@ interface IServices { fun isFavorite(id : Int, user: User): Boolean fun getAllFavorite(): List fun getAllQuote(): List + + fun search(type : String ,search:String ,indexCount: Int): List } \ 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 index 0155073..eaa820f 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 @@ -78,4 +78,8 @@ class ServicesAPI : IServices { override fun getUserById(id: Int): User? { TODO("Not yet implemented") } + + override fun search(type : String ,search:String ,indexCount: Int): List{ + 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 8206708..de8de2c 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 @@ -161,4 +161,22 @@ class ServicesStub : IServices { } return false } + + override fun search(type : String ,search:String ,indexCount: Int): List { + return (getAllQuote().filter { + when (type) { + "personnage" -> { + it.character.uppercase().contains(search.uppercase()) + } + + "titre" -> { + it.source.uppercase().contains(search.uppercase()) + } + + else -> { + it.content.uppercase().contains(search.uppercase()) + } + } + }.take(indexCount)) + } } \ 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 2fe9b30..01216d0 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 @@ -31,6 +31,7 @@ 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.res.stringResource import androidx.compose.ui.unit.dp import com.example.what_the_fantasy.R import com.example.what_the_fantasy.ui.theme.* @@ -40,11 +41,11 @@ fun NavBar(onProfile : Boolean = false , onFavorite : Boolean = false , onAccueil : Boolean = false , onQuiz : Boolean = false , - index:Int, - navControllerProfil: (Int) -> Unit, - navControllerFavorite:(Int) -> Unit, - navControllerAccueil: (Int) -> Unit, - navControllerQuiz: (Int) -> Unit, + navControllerProfil: () -> Unit = {}, + navControllerFavorite:() -> Unit = {}, + navControllerAccueil: () -> Unit = {}, + navControllerQuiz: () -> Unit = {}, + navControllerSearch: () -> Unit = {}, content : @Composable ()-> Unit ) { @@ -64,26 +65,17 @@ fun NavBar(onProfile : Boolean = false , Arrangement.SpaceBetween, verticalAlignment = Alignment.Bottom ) { - 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 = MaterialTheme.colorScheme.primary - ) - } + ButtonIconVector(Icons.Rounded.AccountCircle,stringResource(R.string.NavProfile),navControllerProfil,onProfile) + + ButtonIconVector(Icons.Rounded.Search,stringResource(R.string.NavSearch),navControllerSearch,false) + } } - Box(modifier = Modifier.background(Color.Black).fillMaxHeight(0.90f)){ + Box(modifier = Modifier + .background(Color.Black) + .fillMaxHeight(0.90f)){ content() } @@ -97,20 +89,20 @@ fun NavBar(onProfile : Boolean = false , verticalAlignment = Alignment.CenterVertically ) { - ButtonIconPainterInt(painterResource( + ButtonIconPainter(painterResource( if(onFavorite)R.drawable.favorite_button_full else R.drawable.favorite_button_empty - ),"Favorite",navControllerFavorite,index,onFavorite) + ), stringResource(R.string.NavFavorite) ,navControllerFavorite,onFavorite) - ButtonIconPainterInt(painterResource( + ButtonIconPainter(painterResource( if(onAccueil)R.drawable.home_button_full else R.drawable.home_button_empty - ),"Accueil",navControllerAccueil,index,onAccueil) + ),stringResource(R.string.NavHome),navControllerAccueil,onAccueil) - ButtonIconPainterInt(painterResource( + ButtonIconPainter(painterResource( if(onQuiz)R.drawable.quiz_button_full else R.drawable.quiz_button_empty - ),"Quiz",navControllerQuiz,index,onQuiz) + ),stringResource(R.string.NavQuiz),navControllerQuiz,onQuiz) } } @@ -118,8 +110,8 @@ fun NavBar(onProfile : Boolean = false , } @Composable -fun ButtonIconVectorInt(img : ImageVector, name : String, nav : (Int)->Unit ,index: Int,onPage : Boolean){ - IconButton(onClick = {nav(index)}, +fun ButtonIconVector(img : ImageVector, name : String, nav : ()->Unit,onPage : Boolean){ + IconButton(onClick = {nav()}, enabled = !onPage, colors = IconButtonColors(Color.Transparent, MaterialTheme.colorScheme.onBackground,//couleur quand il n'est pas selectionné Color.Transparent, MaterialTheme.colorScheme.primary),//couleur quand il est selectionné @@ -136,8 +128,8 @@ fun ButtonIconVectorInt(img : ImageVector, name : String, nav : (Int)->Unit ,ind @Composable -fun ButtonIconPainterInt(img : Painter, name : String, nav : (Int)->Unit,index: Int,onPage : Boolean){ - IconButton(onClick = {nav(index)}, +fun ButtonIconPainter(img : Painter, name : String, nav : ()->Unit,onPage : Boolean){ + IconButton(onClick = {nav()}, enabled = !onPage, colors = IconButtonColors(Color.Transparent,MaterialTheme.colorScheme.onBackground,//couleur quand il n'est pas selectionné Color.Transparent, MaterialTheme.colorScheme.primary),//couleur quand il est selectionné 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 27546de..7af2928 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 @@ -41,10 +41,7 @@ data class QuizEnd(val userIndex: Int, val idQuiz: Int, val pts: Int) data class OneQuote(val quoteId: Int, val userIndex: Int) @Serializable -data class Quote(val quoteId: Int, val userIndex: Int) - -@Serializable -data object Search +data class Search(val userIndex: Int,val type : String = "contenue", val search: String = "") @Serializable data object SignUp @@ -88,14 +85,8 @@ fun AppNavigator() { navFavorite = { navController.navigate(Favorite(accueil.userIndex)) }, navQuiz = { navController.navigate(QuizMenu(accueil.userIndex)) }, navProfil = { navController.navigate(Profil(accueil.userIndex)) }, - navQuote = { quoteId -> - navController.navigate( - OneQuote( - quoteId, - accueil.userIndex - ) - ) - }, + navQuote = { quoteId -> navController.navigate(OneQuote(quoteId,accueil.userIndex)) }, + navSearch = { navController.navigate(Search(accueil.userIndex))}, services = services ) } @@ -106,14 +97,8 @@ fun AppNavigator() { navAccueil = { navController.navigate(Accueil(favorite.userIndex)) }, navQuiz = { navController.navigate(QuizMenu(favorite.userIndex)) }, navProfil = { navController.navigate(Profil(favorite.userIndex)) }, - navQuote = { quoteId -> - navController.navigate( - OneQuote( - quoteId, - favorite.userIndex - ) - ) - }, + navQuote = { quoteId -> navController.navigate(OneQuote(quoteId,favorite.userIndex)) }, + navSearch = { navController.navigate(Search(favorite.userIndex))}, services = services ) } @@ -130,6 +115,7 @@ fun AppNavigator() { popUpTo(profil) { inclusive = true } } }, + navSearch = { navController.navigate(Search(profil.userIndex))}, services = services ) } @@ -137,15 +123,29 @@ fun AppNavigator() { val quote: OneQuote = it.toRoute() QuotePage( quoteId = quote.quoteId, + service = services, index = quote.userIndex, navAccueil = { navController.navigate(Accueil(quote.userIndex)) }, navQuiz = { navController.navigate(QuizMenu(quote.userIndex)) }, navProfil = { navController.navigate(Profil(quote.userIndex)) }, navFavorite = { navController.navigate(Favorite(quote.userIndex)) }, - service = services + navSearch = { navController.navigate(Search(quote.userIndex))} ) } - composable { SearchPage() } + composable { + val search: Search = it.toRoute() + SearchPage( + navAccueil = { navController.navigate(Accueil(search.userIndex)) }, + navFavorite = { navController.navigate(Favorite(search.userIndex)) }, + navQuiz = { navController.navigate(QuizMenu(search.userIndex)) }, + navProfil = { navController.navigate(Profil(search.userIndex)) }, + navQuote = { quoteId -> navController.navigate(OneQuote(quoteId,search.userIndex)) }, + navSearch = {type,newSearch -> navController.navigate(Search(search.userIndex,type,newSearch))}, + services = services, + type = search.type, + search = search.search + ) + } composable { SignUpPage( navControllerLogin = { @@ -159,13 +159,10 @@ fun AppNavigator() { composable { val submitQuote: SubmitQuote = it.toRoute() SubmitQuotePage( - index = submitQuote.userIndex, navAccueil = { navController.navigate(Accueil(submitQuote.userIndex)) }, navFavorite = { navController.navigate(Favorite(submitQuote.userIndex)) }, navProfil = { navController.navigate(Profil(submitQuote.userIndex)) }, - navControllerQuiz = { idQuiz -> - navController.navigate(Quiz(submitQuote.userIndex, idQuiz)) - }, + navQuiz = { navController.navigate(QuizMenu(submitQuote.userIndex)) }, navRecap = { quoteContent, character, source -> navController.navigate( RecapSubmit( @@ -187,17 +184,19 @@ fun AppNavigator() { source = recapSubmit.source, navAccueil = { navController.navigate(Accueil(recapSubmit.userIndex)) }, navFavorite = { navController.navigate(Favorite(recapSubmit.userIndex)) }, - navProfil = { navController.navigate(Profil(recapSubmit.userIndex)) } - ) + navProfil = { navController.navigate(Profil(recapSubmit.userIndex)) }, + navSearch = { navController.navigate(Search(recapSubmit.userIndex))}, + navQuiz = { navController.navigate(QuizMenu(recapSubmit.userIndex)) } + ) } composable { val quizMenu: QuizMenu = it.toRoute() QuizMenu( - index = quizMenu.userIndex, navAccueil = { navController.navigate(Accueil(quizMenu.userIndex)) }, navFavorite = { navController.navigate(Favorite(quizMenu.userIndex)) }, navProfil = { navController.navigate(Profil(quizMenu.userIndex)) }, + navSearch = { navController.navigate(Search(quizMenu.userIndex))}, navControllerQuiz = { idQuiz -> navController.navigate(Quiz(quizMenu.userIndex, idQuiz)) } @@ -206,7 +205,6 @@ fun AppNavigator() { 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)) }, @@ -214,6 +212,7 @@ fun AppNavigator() { navControllerQuizEnd = { idQuiz, pts -> navController.navigate(QuizEnd(quiz.userIndex, idQuiz, pts)) }, + navSearch = { navController.navigate(Search(quiz.userIndex))}, idQuiz = quiz.idQuiz ) } @@ -222,11 +221,11 @@ fun AppNavigator() { QuizEndPage( 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)) } + navQuiz = { navController.navigate(QuizMenu(quizEnd.userIndex)) }, + navSearch = { navController.navigate(Search(quizEnd.userIndex))} ) } } 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 6161a81..cf8c5c3 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 @@ -26,12 +26,12 @@ import com.example.what_the_fantasy.ui.theme.colorBackground @Composable fun AccueilPage( index: Int, - navFavorite: (Int) -> Unit, - navQuiz: (Int) -> Unit, - navProfil: (Int) -> Unit, + navFavorite: () -> Unit, + navQuiz: () -> Unit, + navProfil: () -> Unit, + navSearch: () -> Unit, navQuote: (Int) -> Unit, services: IServices - ) { var itemCount by remember { mutableStateOf(15) } val dailyQuote = DailyQuoteStub.dailyQuote @@ -42,11 +42,10 @@ fun AccueilPage( val titleSuggestion = stringResource(R.string.TitleHomeSuggestion) NavBar( onAccueil = true, - index = index, navControllerFavorite = navFavorite, - navControllerAccueil = { }, navControllerProfil = navProfil, - navControllerQuiz = navQuiz + navControllerQuiz = navQuiz, + navControllerSearch = navSearch ) { Column( modifier = Modifier @@ -66,7 +65,11 @@ fun AccueilPage( textAlign = TextAlign.Center ) - QuoteLittle(dailyQuote) + Column(Modifier.clickable {navQuote(dailyQuote.id)} + ) { + QuoteLittle(dailyQuote) + } + } Text( text = titleSuggestion, 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 647aab2..03f86c4 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 @@ -26,9 +26,10 @@ import com.example.what_the_fantasy.ui.theme.colorBackground @Composable fun FavoritePage( index: Int, - navAccueil: (Int) -> Unit, - navQuiz: (Int) -> Unit, - navProfil: (Int) -> Unit, + navAccueil: () -> Unit, + navQuiz: () -> Unit, + navProfil: () -> Unit, + navSearch: () -> Unit, navQuote: (Int) -> Unit, services: IServices ) { @@ -38,11 +39,10 @@ fun FavoritePage( val TitlePage = stringResource(R.string.TitleFavorite) NavBar(onFavorite = true, - index = index, - navControllerFavorite = { }, navControllerAccueil = navAccueil, navControllerProfil = navProfil, - navControllerQuiz = navQuiz + navControllerQuiz = navQuiz, + navControllerSearch = navSearch ) { Box( modifier = Modifier 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 b08a21d..c185d7c 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 @@ -86,6 +86,7 @@ fun IdentifiantTextField(textIdentifiantResId : Int) : String{ .fillMaxWidth() .padding(top = 8.dp), keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Text), + maxLines = 1, shape = RoundedCornerShape(16.dp) ) } @@ -106,6 +107,7 @@ fun PassWdTextField(textpasswdResId : Int) : String{ .fillMaxWidth() .padding(top = 8.dp), keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Password), + maxLines = 1, visualTransformation = if (passwordVisible) VisualTransformation.None else PasswordVisualTransformation(), trailingIcon = { IconButton(onClick = { passwordVisible = !passwordVisible }) { 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 46893a8..131ffeb 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 @@ -57,9 +57,10 @@ import com.example.what_the_fantasy.ui.theme.gradienBox @Composable fun ProfilPage(index: Int, - navFavorite: (Int) -> Unit, - navAccueil: (Int) -> Unit, - navQuiz: (Int) -> Unit, + navFavorite: () -> Unit, + navAccueil: () -> Unit, + navQuiz: () -> Unit, + navSearch: () -> Unit, navUnLog: () -> Unit, navSubmitQuote: () -> Unit, services: IServices @@ -67,11 +68,10 @@ fun ProfilPage(index: Int, val user = services.getUserById(index) ?: return NavBar(onProfile = true, - index = index, navControllerFavorite = navFavorite, navControllerAccueil = navAccueil, - navControllerProfil = {}, - navControllerQuiz = navQuiz + navControllerQuiz = navQuiz, + navControllerSearch = navSearch ) { Box( @@ -90,29 +90,29 @@ fun ProfilPage(index: Int, horizontalAlignment = Alignment.CenterHorizontally ) { - // Titre - TitlePageComponent(R.string.titleProfile, Color.White) - SpaceHeightComponent(16) + // Titre + TitlePageComponent(R.string.titleProfile, MaterialTheme.colorScheme.onBackground) + 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) + EditUsername(user.username, index, services)// Édition du Username + SpaceHeightComponent(16) - EditEmail(user.email,index, services)// Édition du Email - Spacer(modifier = Modifier.height(8.dp)) + EditEmail(user.email,index, services)// Édition du Email + Spacer(modifier = Modifier.height(8.dp)) - EditPasswd(index, services) - SpaceHeightComponent(16) + EditPasswd(index, services) + SpaceHeightComponent(16) - // Bouton - //ButtonProfile(R.string.ButtonAddQuoteprofile, 18, Color.Black, Color.White,navUnLog) // Pas encore de navigation definie - //SpaceHeightComponent(16) - ButtonLanguage(R.string.ButtonLanguageprofile, 18, MaterialTheme.colorScheme.onPrimary, MaterialTheme.colorScheme.background,services, user) - SpaceHeightComponent(16) - ButtonUnLog(R.string.ButtonUnlogprofile, 18, MaterialTheme.colorScheme.onPrimary, MaterialTheme.colorScheme.background,navUnLog) + // Bouton + ButtonProfile(R.string.ButtonAddQuoteprofile, 18, MaterialTheme.colorScheme.primary, MaterialTheme.colorScheme.background,navSubmitQuote) // Pas encore de navigation definie + SpaceHeightComponent(16) + ButtonLanguage(R.string.ButtonLanguageprofile, 18, MaterialTheme.colorScheme.primary, MaterialTheme.colorScheme.background,services, user) + SpaceHeightComponent(16) + ButtonUnLog(R.string.ButtonUnlogprofile, 18, MaterialTheme.colorScheme.primary, MaterialTheme.colorScheme.background,navUnLog) @@ -431,12 +431,12 @@ fun DisplayPassword(onEdit: () -> Unit) { text = "*****", fontSize = 18.sp, fontWeight = FontWeight.Bold, - color = MaterialTheme.colorScheme.onPrimary + color = MaterialTheme.colorScheme.primary ) Icon( imageVector = Icons.Default.Edit, contentDescription = "Modifier", - tint = MaterialTheme.colorScheme.onPrimary, + tint =MaterialTheme.colorScheme.primary, modifier = Modifier.size(16.dp).padding(start = 8.dp) ) } @@ -452,10 +452,10 @@ fun ButtonUnLog(textResId : Int, size :Int, colorTexte : Color, colorButton : Co navController() logsUser.unlogInformationUserConnect("UserUnLog") }, - colors = ButtonDefaults.buttonColors(containerColor = MaterialTheme.colorScheme.background), + colors = ButtonDefaults.buttonColors(containerColor = colorButton), modifier = Modifier.fillMaxWidth(), ) { - Text(text, fontSize = size.sp, color = MaterialTheme.colorScheme.primary) + Text(text, fontSize = size.sp, color = colorTexte) } } @@ -471,12 +471,12 @@ fun ButtonLanguage(textResId : Int, size :Int, colorTexte : Color, colorButton : colors = ButtonDefaults.buttonColors(containerColor = colorButton), modifier = Modifier.fillMaxWidth(), ) { - Text("${text} (${currentLangage.value})", fontSize = size.sp, color = MaterialTheme.colorScheme.primary) + Text("${text} (${currentLangage.value})", fontSize = size.sp, color = colorTexte) } } @Composable -fun ButtonProfil(textResId : Int, size :Int, colorTexte : Color, colorButton : Color,navController: () -> Unit){ +fun ButtonProfile(textResId : Int, size :Int, colorTexte : Color, colorButton : Color,navController: () -> Unit){ val text = stringResource(id = textResId) Button( 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 bad6590..6b4bcf9 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 @@ -28,17 +28,19 @@ val gradient = Brush.linearGradient( fun QuizEndPage( idQuiz: Int, points: Int, - index: Int, - navFavorite: (Int) -> Unit, - navAccueil: (Int) -> Unit, - navProfil:(Int) -> Unit, - navQuiz: (Int) -> Unit, + navFavorite: () -> Unit, + navAccueil: () -> Unit, + navProfil:() -> Unit, + navQuiz: () -> Unit, + navSearch: () -> Unit, ) { - NavBar(index = index, + NavBar( navControllerFavorite = navFavorite, navControllerAccueil = navAccueil, navControllerProfil = navProfil, - navControllerQuiz = navQuiz) { + navControllerQuiz = navQuiz, + navControllerSearch = navSearch + ) { Column( modifier = Modifier.fillMaxSize().background(Color(0xFF100C1B)) ) { 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 35509ac..1131b43 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 @@ -34,18 +34,17 @@ import com.example.what_the_fantasy.ui.components.NavBar @Composable fun QuizMenu( - index: Int, - navFavorite: (Int) -> Unit, - navAccueil: (Int) -> Unit, - navProfil:(Int) -> Unit, + navFavorite: () -> Unit, + navAccueil: () -> Unit, + navProfil:() -> Unit, + navSearch: () -> Unit, navControllerQuiz: (Int) -> Unit ) { NavBar(onQuiz = true, - index = index, navControllerFavorite = navFavorite, navControllerAccueil = navAccueil, navControllerProfil = navProfil, - navControllerQuiz = { } + navControllerSearch = navSearch ) { Column( 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 14048e4..0bfc05c 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,11 +22,11 @@ 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, + navFavorite: () -> Unit, + navAccueil: () -> Unit, + navProfil:() -> Unit, + navQuiz: () -> Unit, + navSearch: () -> Unit, navControllerQuizEnd: (Int, Int) -> Unit, @@ -56,11 +56,12 @@ fun QuizPage( if (idCurrentQuestion < questions.size - 1) idCurrentQuestion++ else navControllerQuizEnd(idQuiz, pts) // Retour menu } - NavBar(index = index, + NavBar( navControllerFavorite = navFavorite, navControllerAccueil = navAccueil, navControllerProfil = navProfil, - navControllerQuiz = navQuiz + navControllerQuiz = navQuiz, + navControllerSearch = navSearch ){ Column ( modifier = Modifier.fillMaxSize().background(Color(0xFF100C1B)) 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 db092f5..c82842b 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 @@ -69,10 +69,11 @@ fun QuotePage( quoteId : Int, service : IServices, index : Int, - navAccueil: (Int) -> Unit, - navFavorite:(Int) -> Unit, - navQuiz: (Int) -> Unit, - navProfil:(Int) -> Unit) + navAccueil: () -> Unit, + navFavorite:() -> Unit, + navQuiz: () -> Unit, + navSearch: () -> Unit, + navProfil:() -> Unit) { // utiliser ViewModel val quote = service.getQuote(quoteId) ?: return @@ -81,11 +82,11 @@ fun QuotePage( val favorite by remember { mutableStateOf(service.isFavorite(id = quoteId, user = user)) } NavBar( - index = index, navControllerFavorite = navFavorite, navControllerAccueil = navAccueil, navControllerProfil = navProfil, - navControllerQuiz = navQuiz + navControllerQuiz = navQuiz, + navControllerSearch = navSearch ) { Box( modifier = Modifier diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/RecapSubmitPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/RecapSubmitPage.kt index 1c7a3db..007197e 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/RecapSubmitPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/RecapSubmitPage.kt @@ -31,6 +31,7 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll +import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -44,23 +45,27 @@ import com.example.what_the_fantasy.data.model.Character @Composable fun RecapSubmitPage( index: Int, - navFavorite: (Int) -> Unit, - navAccueil: (Int) -> Unit, - navProfil:(Int) -> Unit, + navFavorite: () -> Unit, + navAccueil: () -> Unit, + navProfil:() -> Unit, + navQuiz: () -> Unit, + navSearch: () -> Unit, quoteContent : String, character: String, source: String ) { - NavBar(onQuiz = true, - index = index, + NavBar( navControllerFavorite = navFavorite, navControllerAccueil = navAccueil, navControllerProfil = navProfil, - navControllerQuiz = { } + navControllerQuiz = navQuiz, + navControllerSearch = navSearch ) { Column( - modifier = Modifier.fillMaxSize().background(Color(0xFF100C1B)) + modifier = Modifier + .fillMaxSize() + .background(MaterialTheme.colorScheme.background) ) { // Contenu princiapl Column( @@ -72,7 +77,7 @@ fun RecapSubmitPage( ) { Text( text = "▶ Recap de la citation ◀", - color = Color.White, + color = MaterialTheme.colorScheme.onBackground, style = TextStyle( fontSize = 25.sp, fontWeight = FontWeight.Bold, @@ -133,7 +138,7 @@ fun QuoteText2(text: String ){ modifier = Modifier.padding(start = 10.dp, top = 15.dp), fontWeight = FontWeight(1000), fontSize = 20.sp, - color = Color.White + color = MaterialTheme.colorScheme.background ) } 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 3d081c1..4dbc806 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,8 +1,187 @@ package com.example.what_the_fantasy.ui.screens +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.IntrinsicSize +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.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.selection.selectable +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.rounded.Search +import androidx.compose.material3.Button +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.OutlinedTextField +import androidx.compose.material3.RadioButton +import androidx.compose.material3.SearchBar +import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +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.input.pointer.motionEventSpy +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.semantics.Role +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.text.input.TextFieldValue +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.DailyQuoteStub +import com.example.what_the_fantasy.data.local.QuoteStub +import com.example.what_the_fantasy.data.model.SrcType +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.NavBar +import com.example.what_the_fantasy.ui.components.QuoteLittle +import com.example.what_the_fantasy.ui.theme.colorBackground +import com.example.what_the_fantasy.ui.theme.colorNavBar @Composable -fun SearchPage() { +fun SearchPage( + navFavorite: () -> Unit, + navAccueil: () -> Unit, + navProfil:() -> Unit, + navQuiz: () -> Unit, + navQuote: (Int) -> Unit, + navSearch: (String,String) -> Unit, + services: IServices, + + type : String, + search:String + ) { + var itemCount by remember { mutableStateOf(15) } + val quotes = services.search(type,search,itemCount) + + var newSearch by remember { mutableStateOf(search) } + val filtre = listOf("contenue","personnage","titre") + val (newFiltre, onFiltreSelected) = remember { mutableStateOf(type) } + + NavBar( + onAccueil = true, + navControllerFavorite = navFavorite, + navControllerAccueil = navAccueil, + navControllerProfil = navProfil, + navControllerQuiz = navQuiz, + navControllerSearch = {navSearch("contenue","")} + ) { + Column( + modifier = Modifier + .fillMaxSize() + .background(MaterialTheme.colorScheme.background) + ) { + + Text( + text = "▶ "+stringResource(R.string.TitleSearch)+" ◀", + color = MaterialTheme.colorScheme.onBackground, + fontSize = 24.sp, + modifier = Modifier + .fillMaxWidth() + .padding(16.dp), + textAlign = TextAlign.Center + ) + Column (horizontalAlignment = Alignment.CenterHorizontally + ){ + OutlinedTextField( + value = newSearch, + onValueChange = { newSearch = it }, + textStyle = TextStyle(color = MaterialTheme.colorScheme.onBackground), + modifier = Modifier + .padding(top = 2.dp) + .fillMaxWidth() + .height(50.dp), + keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Text), + maxLines = 1, + shape = CircleShape, // Bords arrondis + trailingIcon = { + IconButton(onClick = { navSearch(newFiltre, newSearch) } , + modifier = Modifier + .size(50.dp) + .clip(CircleShape) + ) { + Icon(Icons.Rounded.Search, + contentDescription = stringResource(R.string.TitleSearch), + Modifier + .fillMaxSize() + .background(MaterialTheme.colorScheme.primary,CircleShape) + ) + } + } + ) + Row(horizontalArrangement = Arrangement.SpaceAround) { + filtre.forEach{ type -> + Row( + Modifier + .height(56.dp) + .selectable( + selected = (type == newFiltre), + onClick = { onFiltreSelected(type) }, + role = Role.RadioButton + ) + .padding(horizontal = 16.dp), + verticalAlignment = Alignment.CenterVertically + ) { + RadioButton( + selected = (type == newFiltre), + onClick = null // null recommended for accessibility with screen readers + ) + Text( + text = type, + style = MaterialTheme.typography.bodyLarge, + modifier = Modifier.padding(start = 16.dp), + color = MaterialTheme.colorScheme.onBackground + ) + } + } + } + } + LazyColumn(modifier = Modifier.weight(1f)) { + items(quotes) { quote -> + Column(Modifier.clickable {navQuote(quote.id)} + ) { + QuoteLittle(quote) + } + } + if (itemCount < quotes.size) { + item { + LaunchedEffect(itemCount) { + itemCount += 15 + } + Box( + modifier = Modifier + .fillMaxWidth() + .padding(16.dp), + contentAlignment = Alignment.Center + ) { + CircularProgressIndicator() + } + } + } + } + } + } } \ No newline at end of file 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 cce938e..f9f0fa3 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 @@ -17,6 +17,7 @@ import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Icon 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 @@ -53,7 +54,7 @@ fun SignUpPage(navControllerLogin: () -> Unit, services : IServices) { Box( modifier = Modifier .fillMaxSize() - .background(colorBackground) + .background(MaterialTheme.colorScheme.background) .verticalScroll(rememberScrollState()), contentAlignment = Alignment.Center ){ @@ -62,20 +63,20 @@ fun SignUpPage(navControllerLogin: () -> Unit, services : IServices) { .fillMaxWidth(0.9f) .padding(20.dp) .clip(RoundedCornerShape(16.dp)) - .background(gradienBox) + .background(MaterialTheme.colorScheme.onPrimary) .padding(20.dp), horizontalAlignment = Alignment.CenterHorizontally ) { - TitlePageComponent(R.string.titleSignUp,Color.White) + TitlePageComponent(R.string.titleSignUp,MaterialTheme.colorScheme.onBackground) 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, username, email, password, confirmPassword, services, navControllerLogin) + ConnexionButtonSign(R.string.ButtonSignUp,18, MaterialTheme.colorScheme.background, MaterialTheme.colorScheme.onBackground, username, email, password, confirmPassword, services, navControllerLogin) SpaceHeightComponent(16) - ReturnLogin(R.string.ButtonLogin,12, Color.White, navController = navControllerLogin) + ReturnLogin(R.string.ButtonLogin,12, MaterialTheme.colorScheme.primary, navController = navControllerLogin) } } 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 675dfac..5bb111b 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 @@ -14,6 +14,7 @@ import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -39,24 +40,22 @@ import com.example.what_the_fantasy.ui.theme.gradienBox @Composable fun SubmitQuotePage( - index: Int, - navFavorite: (Int) -> Unit, - navAccueil: (Int) -> Unit, - navProfil:(Int) -> Unit, - navControllerQuiz: (Int) -> Unit, + navFavorite: () -> Unit, + navAccueil: () -> Unit, + navProfil:() -> Unit, + navQuiz: () -> Unit, navRecap: (String, String, String) -> Unit ) { NavBar( - index = index, navControllerFavorite = navFavorite, navControllerAccueil = navAccueil, navControllerProfil = navProfil, - navControllerQuiz = navControllerQuiz + navControllerQuiz = navQuiz ) { Box( modifier = Modifier .fillMaxSize() - .background(colorBackground) + .background(MaterialTheme.colorScheme.background) .verticalScroll(rememberScrollState()), contentAlignment = Alignment.Center ){ @@ -65,11 +64,11 @@ fun SubmitQuotePage( .fillMaxWidth(0.9f) .padding(20.dp) .clip(RoundedCornerShape(16.dp)) - .background(gradienBox) + .background(MaterialTheme.colorScheme.onPrimary) .padding(20.dp), horizontalAlignment = Alignment.CenterHorizontally ) { - TitlePageComponent(R.string.titleSubmitQuote, Color.White) + TitlePageComponent(R.string.titleSubmitQuote, MaterialTheme.colorScheme.onBackground) SpaceHeightComponent(20) SubmitQuoteButton( quoteTextField(R.string.quote), @@ -79,12 +78,12 @@ fun SubmitQuotePage( yearTextField(R.string.year), R.string.titleButtonSubmit, 18, - Color.White, - Color.Black, + MaterialTheme.colorScheme.background, + MaterialTheme.colorScheme.onBackground, navRecap ) SpaceHeightComponent(20) - BackButton(R.string.titleButtonBack, 12, Color.White,navProfil, index) + BackButton(R.string.titleButtonBack, 12, Color.White,navProfil) } } } @@ -99,7 +98,7 @@ fun quoteTextField(textQuoteResId : Int) : String{ OutlinedTextField( value = quote, onValueChange = { quote = it }, - label = { Text(textQuote, color = Color.White) }, + label = { Text(textQuote, color = MaterialTheme.colorScheme.onBackground) }, modifier = Modifier .fillMaxWidth() .padding(top = 8.dp), @@ -119,7 +118,7 @@ fun characterTextField(textCharacterResId : Int) : String{ OutlinedTextField( value = character, onValueChange = { character = it }, - label = { Text(textCharacter, color = Color.White) }, + label = { Text(textCharacter, color = MaterialTheme.colorScheme.onBackground) }, modifier = Modifier .fillMaxWidth() .padding(top = 8.dp), @@ -138,7 +137,7 @@ fun sourceTextField(textSourceResId : Int) : String{ OutlinedTextField( value = source, onValueChange = { source = it }, - label = { Text(textSource, color = Color.White) }, + label = { Text(textSource, color = MaterialTheme.colorScheme.onBackground) }, modifier = Modifier .fillMaxWidth() .padding(top = 8.dp), @@ -158,7 +157,7 @@ fun timeCodeTextField(textTimeCodeResId : Int) : String{ OutlinedTextField( value = timeCode, onValueChange = { timeCode = it }, - label = { Text(textTimeCode, color = Color.White) }, + label = { Text(textTimeCode, color = MaterialTheme.colorScheme.onBackground) }, modifier = Modifier .fillMaxWidth() .padding(top = 8.dp), @@ -178,7 +177,7 @@ fun yearTextField(textYearResId : Int) : String{ OutlinedTextField( value = year, onValueChange = { year = it }, - label = { Text(textYear, color = Color.White) }, + label = { Text(textYear, color = MaterialTheme.colorScheme.onBackground) }, modifier = Modifier .fillMaxWidth() .padding(top = 8.dp), @@ -241,22 +240,22 @@ fun validSubmitQuote(quote : String, character : String, source: String, timeCod val invalidRegex = """^[a-zA-Z0-9]*$""".toRegex() val isNotBlank = quote.isNotBlank() && quote.matches(quoteRegex) && !quote.matches(invalidRegex) && quote.length in 3..100 && - character.isNotBlank() && character.matches(characterRegex) && character.length in 3..50 && !character.matches(invalidRegex) && - source.isNotBlank() && source.matches(movieTitleRegex) && source.length in 3..50 && !source.matches(invalidRegex) && + character.isNotBlank() && character.matches(characterRegex) && character.length in 3..50 && /*!character.matches(invalidRegex) &&*/ + source.isNotBlank() && source.matches(movieTitleRegex) && source.length in 3..50 && /*!source.matches(invalidRegex) &&*/ timeCode.isNotBlank() && timeCode.matches(timeCodeRegex) && year.isNotBlank() && year.all { it.isDigit() } && year.length == 4 && year.toInt() in 1900..2025 return isNotBlank } @Composable -fun BackButton(titleResId : Int, size : Int, color : Color, navController: (Int) -> Unit, user: Int) { +fun BackButton(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(user) + navController() } ) } 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 9bc98c5..dc586f4 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 @@ -69,4 +69,16 @@ Time Code Année Champs Invalides + + //NavBar + Favoris + Profile + Accueil + Quiz + Recherche + + //Page Search + Recherche + + \ 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 423ccf8..2b59c0a 100644 --- a/What_The_Fantasy/app/src/main/res/values/strings.xml +++ b/What_The_Fantasy/app/src/main/res/values/strings.xml @@ -65,4 +65,16 @@ Time Code Year Invalid Fields + + //NavBar + Favorite + Profile + Home + Quiz + Search + + //Page Search + Search + + \ No newline at end of file