Merge pull request 'NavBar' (#24) from NavBar into master

Reviewed-on: #24
pull/32/head
Kentin BRONGNIART 2 months ago
commit 5e9b8adc8b

@ -4,7 +4,7 @@ import com.example.what_the_fantasy.data.model.User
object UserStub { object UserStub {
//LE MOT DE PASSE POUR TOUS LES UTILISATEURS EST : 1234 //LE MOT DE PASSE POUR TOUS LES UTILISATEURS EST : 1234
val users: MutableList<User> = mutableListOf( val users: MutableList<User> = 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(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(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(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

@ -61,7 +61,7 @@ class ServicesStub : IServices {
override fun getAllUsers(): List<User> = users override fun getAllUsers(): List<User> = users
override fun getUserById(id: Int): User? { override fun getUserById(id: Int): User? {
return (users.find { it.id == id+1 }) return (users.find { it.id == id+1 })
} }
override fun SearchQuote(quote: String) { override fun SearchQuote(quote: String) {
@ -73,7 +73,7 @@ class ServicesStub : IServices {
} }
//------------------------------------------------------ //------------------------------------------------------
@SuppressLint("NewApi") @SuppressLint("NewApi")
fun dateDuJour(): String { fun dateDuJour(): String {
val date = LocalDate.now() val date = LocalDate.now()

@ -1,4 +1,161 @@
package com.example.what_the_fantasy.ui.components package com.example.what_the_fantasy.ui.components
class NavBar { 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.*
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.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
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,
content : @Composable ()-> Unit ) {
Column(
modifier = Modifier
.fillMaxSize()
) {
Row(
modifier = Modifier
.fillMaxWidth()
.height(70.dp)
.background(colorNavBar),
Arrangement.SpaceBetween,
verticalAlignment = Alignment.Bottom
) {
ButtonIconVectorInt(Icons.Rounded.AccountCircle,"Profile",navControllerProfil,index,onProfile)
Button(onClick = {},
colors = ButtonDefaults.buttonColors(containerColor = Color.Transparent)
) {
Image(
painter = painterResource(id = R.drawable.toggle),
contentDescription = "Theme"
)
}
}
Box(modifier = Modifier.background(Color.Black).fillMaxHeight(0.92f)){
content()
}
Row(modifier = Modifier
.background(colorNavBar)
.fillMaxSize(),
horizontalArrangement = Arrangement.SpaceAround,
verticalAlignment = Alignment.CenterVertically
) {
ButtonIconVectorInt(Icons.Rounded.Favorite,"Favorite",navControllerFavorite,index,onFavorite)
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)},
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)
)
}
}
@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)
)
}
}

@ -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) }
}

@ -18,45 +18,105 @@ import com.example.what_the_fantasy.ui.screens.SignUpPage
import com.example.what_the_fantasy.ui.screens.SubmitQuotePage import com.example.what_the_fantasy.ui.screens.SubmitQuotePage
sealed class Destination(val route: String) { sealed class Destination(val route: String) {
data object Login : Destination("Login") data object Login : Destination("Login")
data object Accueil : Destination("Accueil") data object Accueil : Destination("Accueil/{userIndex}") { // Ajout du paramètre userIndex
data object Favorite : Destination("Favorite") 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 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 fun createRoute(userIndex: Int) = "Profil/$userIndex" // Fonction pour créer la route avec l'index
} }
data object QuizMenu : Destination("QuizMenu")
data object Quote : Destination("Quote")
data object Search : Destination("Search")
data object SignUp : Destination("SignUp")
data object SubmitQuote : Destination("SubmitQuote")
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 Quiz : Destination("Quiz")
data object QuizEnd : Destination("QuizEnd/{idQuiz}/{pts}") { data object QuizEnd : Destination("QuizEnd/{idQuiz}/{pts}") {
// Ajout paramètres idQuiz et pts // Ajout paramètres idQuiz et pts
fun createIdAndPts(idQuiz : Int, pts : Int) = "QuizEnd/$idQuiz/$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 @Composable
fun AppNavigator() { fun AppNavigator() {
val navController = rememberNavController() val navController = rememberNavController()
val services = ServicesStub() // A changer si l'on veut passer au service API val services = ServicesStub()
NavHost(navController, startDestination = Destination.QuizMenu.route) { NavHost(navController, startDestination = Destination.Login.route) {
composable(Destination.Login.route) { composable(Destination.Login.route) { LoginPage(
LoginPage( navControllerSignUp = { navController.navigate(Destination.SignUp.route) },
navControllerSignUp = { navController.navigate(Destination.SignUp.route) }, navControllerProfil = { userIndex ->
navControllerProfil = { userIndex -> navController.navigate(Destination.Profil.createRoute(userIndex)) // Passe l'index à Profil
},
services
) }
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 navController.navigate(Destination.Profil.createRoute(userIndex)) // Passe l'index à Profil
}
) }
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
}, },
services navProfil = { userIndex ->
navController.navigate(Destination.Profil.createRoute(userIndex)) // Passe l'index à Profil
}
) }
composable(Destination.Profil.route) {
// Récupère l'index passé dans la route
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.Accueil.route) { AccueilPage() } composable(Destination.Quote.route) { QuotePage() }
composable(Destination.Favorite.route) { FavoritePage() } composable(Destination.Search.route) { SearchPage() }
composable(Destination.SignUp.route) { SignUpPage(navController, services) }
composable(Destination.SubmitQuote.route) { SubmitQuotePage() }
composable(Destination.QuizMenu.route) { composable(Destination.QuizMenu.route) {
val userIndex = it.arguments?.getString("userIndex")?.toInt() ?: -1
QuizMenu( QuizMenu(
navControllerQuiz = { navController.navigate(Destination.Quiz.route) } 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) { composable(Destination.Quiz.route) {
@ -76,14 +136,5 @@ fun AppNavigator() {
navControllerQuizMenu = { navController.navigate(Destination.QuizMenu.route) } navControllerQuizMenu = { navController.navigate(Destination.QuizMenu.route) }
) )
} }
composable(Destination.Profil.route) {
// Récupère l'index passé dans la route
val userIndex = it.arguments?.getString("userIndex")?.toInt() ?: -1
ProfilPage(index = userIndex, navController = navController, services)
}
composable(Destination.Quote.route) { QuotePage() }
composable(Destination.Search.route) { SearchPage() }
composable(Destination.SignUp.route) { SignUpPage(navController, services) }
composable(Destination.SubmitQuote.route) { SubmitQuotePage() }
} }
} }

@ -1,6 +1,42 @@
package com.example.what_the_fantasy.ui.screens 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.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.data.services.IServices
import com.example.what_the_fantasy.ui.components.NavBar
import com.example.what_the_fantasy.ui.theme.colorBackground
@Composable @Composable
fun AccueilPage() {} fun AccueilPage(
index: Int,
navFavorite:(Int) -> Unit,
navQuiz: (Int) -> Unit,
navProfil:(Int) -> Unit
) {
NavBar(onAccueil = true,
index = index,
navControllerFavorite = navFavorite,
navControllerAccueil = { },
navControllerProfil = navProfil,
navControllerQuiz = navQuiz
){
Box(
modifier = Modifier
.fillMaxSize()
.background(colorBackground),
contentAlignment = Alignment.Center
){
Column {
Text("Accueil", color = Color.White, fontSize = 20.sp)
}
}
}
}

@ -1,6 +1,42 @@
package com.example.what_the_fantasy.ui.screens 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.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.data.services.IServices
import com.example.what_the_fantasy.ui.components.NavBar
import com.example.what_the_fantasy.ui.theme.colorBackground
@Composable @Composable
fun FavoritePage() {} fun FavoritePage(
index: Int,
navAccueil: (Int) -> Unit,
navQuiz: (Int) -> Unit,
navProfil:(Int) -> Unit
) {
NavBar(onFavorite = true,
index = index,
navControllerFavorite = { },
navControllerAccueil = navAccueil,
navControllerProfil = navProfil,
navControllerQuiz = navQuiz
) {
Box(
modifier = Modifier
.fillMaxSize()
.background(colorBackground),
contentAlignment = Alignment.Center
){
Column {
Text("Favorite", color = Color.White, fontSize = 20.sp)
}
}
}
}

@ -61,43 +61,56 @@ import coil.compose.AsyncImage
import com.example.what_the_fantasy.R import com.example.what_the_fantasy.R
import com.example.what_the_fantasy.data.local.QuestionStub 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
//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.IServices
//import com.example.what_the_fantasy.data.local.UserStub.users
import com.example.what_the_fantasy.data.services.ServicesStub 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.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.SpaceHeightComponent
import com.example.what_the_fantasy.ui.components.TitlePageComponent 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.What_The_FantasyTheme
import com.example.what_the_fantasy.ui.theme.gradienBox import com.example.what_the_fantasy.ui.theme.gradienBox
@Composable @Composable
fun ProfilPage(index: Int, navController: NavController, services: IServices) { fun ProfilPage(index: Int,
navFavorite: (Int) -> Unit,
navAccueil: (Int) -> Unit,
navQuiz: (Int) -> Unit,
services: IServices
) {
val user = services.getUserById(index) ?: return val user = services.getUserById(index) ?: return
Box( NavBar(onProfile = true,
modifier = Modifier index = index,
.fillMaxSize() navControllerFavorite = navFavorite,
.background(Color(0xFF100C1B)), navControllerAccueil = navAccueil,
contentAlignment = Alignment.Center navControllerProfil = {},
navControllerQuiz = navQuiz
) { ) {
Column(
Box(
modifier = Modifier modifier = Modifier
.fillMaxWidth(0.9f) .fillMaxSize()
.padding(20.dp) .background(Color(0xFF100C1B)),
.clip(RoundedCornerShape(16.dp)) contentAlignment = Alignment.Center
.background(gradienBox)
.padding(20.dp),
horizontalAlignment = Alignment.CenterHorizontally
) { ) {
Column(
// Titre modifier = Modifier
TitlePageComponent(R.string.titleProfile, 20, Color.White) .fillMaxWidth(0.9f)
SpaceHeightComponent(16) .padding(20.dp)
.clip(RoundedCornerShape(16.dp))
// Image de profil .background(gradienBox)
ImageProfil(user.imgUrl, 120) .padding(20.dp),
SpaceHeightComponent(16) 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, index, services)// Édition du Username EditUsername(user.username, index, services)// Édition du Username
SpaceHeightComponent(16) SpaceHeightComponent(16)
@ -108,13 +121,14 @@ fun ProfilPage(index: Int, navController: NavController, services: IServices) {
EditPasswd(index, services) EditPasswd(index, services)
SpaceHeightComponent(16) SpaceHeightComponent(16)
// Bouton // Bouton
ButtonProfile(R.string.ButtonAddQuoteprofile,18, Color.Black, Color.White) ButtonProfile(R.string.ButtonAddQuoteprofile, 18, Color.Black, Color.White)
SpaceHeightComponent(16) SpaceHeightComponent(16)
ButtonProfile(R.string.ButtonLanguageprofile,18, Color.Black, Color.White) ButtonProfile(R.string.ButtonLanguageprofile, 18, Color.Black, Color.White)
SpaceHeightComponent(16) SpaceHeightComponent(16)
ButtonProfile(R.string.ButtonUnlogprofile, 18, Color.Black, Color.White) ButtonProfile(R.string.ButtonUnlogprofile, 18, Color.Black, Color.White)
}
} }
} }
} }

@ -37,25 +37,25 @@ fun QuizEndPage(idQuiz: Int, points: Int, navControllerQuizMenu: () -> Unit) {
Column( Column(
modifier = Modifier.fillMaxSize().background(Color(0xFF100C1B)) modifier = Modifier.fillMaxSize().background(Color(0xFF100C1B))
) { ) {
// Bandeau supérieur // // Bandeau supérieur
Row( // Row(
modifier = Modifier // modifier = Modifier
.fillMaxWidth() // .fillMaxWidth()
.weight(0.1f) // .weight(0.1f)
.padding(20.dp), // .padding(20.dp),
horizontalArrangement = Arrangement.SpaceBetween, // horizontalArrangement = Arrangement.SpaceBetween,
verticalAlignment = Alignment.CenterVertically // verticalAlignment = Alignment.CenterVertically
) { // ) {
Image( // Image(
painter = painterResource(id = R.drawable.profile_icon), // painter = painterResource(id = R.drawable.profile_icon),
contentDescription = "Profil", // contentDescription = "Profil",
modifier = Modifier.size(50.dp) // modifier = Modifier.size(50.dp)
) // )
Image( // Image(
painter = painterResource(id = R.drawable.toggle), // painter = painterResource(id = R.drawable.toggle),
contentDescription = "Profil" // contentDescription = "Profil"
) // )
} // }
// Contenu principal // Contenu principal
Column( Column(
@ -99,34 +99,34 @@ fun QuizEndPage(idQuiz: Int, points: Int, navControllerQuizMenu: () -> Unit) {
} }
} }
// Bandeau inférieur // // Bandeau inférieur
Row( // Row(
modifier = Modifier // modifier = Modifier
.fillMaxWidth() // .fillMaxWidth()
.weight(0.1f) // .weight(0.1f)
.background(Color(0xFF300052)) // .background(Color(0xFF300052))
.padding(20.dp), // .padding(20.dp),
horizontalArrangement = Arrangement.SpaceAround, // horizontalArrangement = Arrangement.SpaceAround,
verticalAlignment = Alignment.CenterVertically // verticalAlignment = Alignment.CenterVertically
) { // ) {
// Bouton Likes // // Bouton Likes
Image( // Image(
painter = painterResource(id = R.drawable.like_icon), // painter = painterResource(id = R.drawable.like_icon),
contentDescription = "Bouton", // contentDescription = "Bouton",
modifier = Modifier.size(50.dp) // modifier = Modifier.size(50.dp)
) // )
// Bouton WhatTheFantasy // // Bouton WhatTheFantasy
Image( // Image(
painter = painterResource(R.drawable.wf_logo), // painter = painterResource(R.drawable.wf_logo),
contentDescription = "Menu Button", // contentDescription = "Menu Button",
Modifier.clickable { navControllerQuizMenu() } // Modifier.clickable { navControllerQuizMenu() }
) // )
// Bouton Quiz // // Bouton Quiz
Image( // Image(
painter = painterResource(id = R.drawable.quiz_icon), // painter = painterResource(id = R.drawable.quiz_icon),
contentDescription = "Bouton", // contentDescription = "Bouton",
modifier = Modifier.size(50.dp) // modifier = Modifier.size(50.dp)
) // )
} // }
} }
} }

@ -20,17 +20,32 @@ import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.example.what_the_fantasy.R 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 @Composable
fun QuizMenu(navControllerQuiz: () -> Unit) { fun QuizMenu(
Row( index: Int,
modifier = Modifier navFavorite: (Int) -> Unit,
.fillMaxSize() navAccueil: (Int) -> Unit,
.background(Color(0xFF100C1B)) navProfil:(Int) -> Unit,
.padding(top = 100.dp) navControllerQuiz: () -> Unit
) {
NavBar(onQuiz = true,
index = index,
navControllerFavorite = navFavorite,
navControllerAccueil = navAccueil,
navControllerProfil = navProfil,
navControllerQuiz = { }
) { ) {
Spacer(modifier = Modifier.weight(0.1f)) Row(
modifier = Modifier
.fillMaxSize()
.background(Color(0xFF100C1B))
.padding(top = 100.dp)
) {
Spacer(modifier = Modifier.weight(0.1f))
Column( Column(
modifier = Modifier modifier = Modifier
@ -38,80 +53,81 @@ fun QuizMenu(navControllerQuiz: () -> Unit) {
.fillMaxHeight(), .fillMaxHeight(),
horizontalAlignment = Alignment.CenterHorizontally horizontalAlignment = Alignment.CenterHorizontally
) { ) {
Box( Box(
modifier = Modifier modifier = Modifier
.size(width = 150.dp, height = 100.dp) .size(width = 150.dp, height = 100.dp)
.padding(8.dp) .padding(8.dp)
.clickable { .clickable {
navControllerQuiz() navControllerQuiz()
} }
) { ) {
Image( Image(
painter = painterResource(id = R.drawable.quiz), painter = painterResource(id = R.drawable.quiz),
contentDescription = "Quiz 1", contentDescription = "Quiz 1",
modifier = Modifier.fillMaxSize(), modifier = Modifier.fillMaxSize(),
contentScale = ContentScale.Crop contentScale = ContentScale.Crop
) )
} }
Box( Box(
modifier = Modifier modifier = Modifier
.size(width = 150.dp, height = 100.dp) .size(width = 150.dp, height = 100.dp)
.padding(8.dp) .padding(8.dp)
.clickable { .clickable {
navControllerQuiz() navControllerQuiz()
} }
) { ) {
Image( Image(
painter = painterResource(id = R.drawable.quiz), painter = painterResource(id = R.drawable.quiz),
contentDescription = "Quiz 2", contentDescription = "Quiz 2",
modifier = Modifier.fillMaxSize(), modifier = Modifier.fillMaxSize(),
contentScale = ContentScale.Crop contentScale = ContentScale.Crop
) )
}
} }
}
Spacer(modifier = Modifier.width(10.dp)) Spacer(modifier = Modifier.width(10.dp))
Column( Column(
modifier = Modifier
.weight(0.9f)
.fillMaxHeight(),
horizontalAlignment = Alignment.CenterHorizontally
) {
Box(
modifier = Modifier modifier = Modifier
.size(width = 150.dp, height = 100.dp) .weight(0.9f)
.padding(8.dp) .fillMaxHeight(),
.clickable { horizontalAlignment = Alignment.CenterHorizontally
navControllerQuiz()
}
) { ) {
Image( Box(
painter = painterResource(id = R.drawable.quiz), modifier = Modifier
contentDescription = "Quiz 3", .size(width = 150.dp, height = 100.dp)
modifier = Modifier.fillMaxSize(), .padding(8.dp)
contentScale = ContentScale.Crop .clickable {
) navControllerQuiz()
} }
) {
Image(
painter = painterResource(id = R.drawable.quiz),
contentDescription = "Quiz 3",
modifier = Modifier.fillMaxSize(),
contentScale = ContentScale.Crop
)
}
Box( Box(
modifier = Modifier modifier = Modifier
.size(width = 150.dp, height = 100.dp) .size(width = 150.dp, height = 100.dp)
.padding(8.dp) .padding(8.dp)
.clickable { .clickable {
navControllerQuiz() navControllerQuiz()
} }
) { ) {
Image( Image(
painter = painterResource(id = R.drawable.quiz), painter = painterResource(id = R.drawable.quiz),
contentDescription = "Quiz 4", contentDescription = "Quiz 4",
modifier = Modifier.fillMaxSize(), modifier = Modifier.fillMaxSize(),
contentScale = ContentScale.Crop contentScale = ContentScale.Crop
) )
}
} }
}
Spacer(modifier = Modifier.weight(0.1f)) Spacer(modifier = Modifier.weight(0.1f))
}
} }
} }

@ -26,7 +26,7 @@ import com.example.what_the_fantasy.data.local.QuestionStub
fun QuizPage( fun QuizPage(
navControllerQuizEnd: (Int, Int) -> Unit, navControllerQuizEnd: (Int, Int) -> Unit,
navControllerQuizMenu: () -> Unit navControllerQuizMenu: () -> Unit
) { ) {
val questions = QuestionStub.allQuestions val questions = QuestionStub.allQuestions
var idCurrentQuestion by remember { mutableIntStateOf(0) } var idCurrentQuestion by remember { mutableIntStateOf(0) }
var pts by remember { mutableIntStateOf(0) } var pts by remember { mutableIntStateOf(0) }
@ -54,25 +54,25 @@ fun QuizPage(
Column ( Column (
modifier = Modifier.fillMaxSize().background(Color(0xFF100C1B)) modifier = Modifier.fillMaxSize().background(Color(0xFF100C1B))
) { ) {
// Bandeau supérieur // // Bandeau supérieur
Row( // Row(
modifier = Modifier // modifier = Modifier
.fillMaxWidth() // .fillMaxWidth()
.weight(0.1f) // .weight(0.1f)
//.background(Color(0xFF300052)) // //.background(Color(0xFF300052))
.padding(20.dp), // .padding(20.dp),
horizontalArrangement = Arrangement.SpaceBetween, // horizontalArrangement = Arrangement.SpaceBetween,
verticalAlignment = Alignment.CenterVertically // verticalAlignment = Alignment.CenterVertically
) { // ) {
Image( // Image(
painter = painterResource(id = R.drawable.profile_icon), // painter = painterResource(id = R.drawable.profile_icon),
contentDescription = "Profil" // contentDescription = "Profil"
) // )
Image( // Image(
painter = painterResource(id = R.drawable.toggle), // painter = painterResource(id = R.drawable.toggle),
contentDescription = "Profil" // contentDescription = "Profil"
) // )
} // }
// Contenu princiapl // Contenu princiapl
Column( Column(
@ -142,32 +142,33 @@ fun QuizPage(
} }
} }
// Bandeau inférieur // // Bandeau inférieur
Row( // Row(
modifier = Modifier // modifier = Modifier
.fillMaxWidth() // .fillMaxWidth()
.weight(0.1f) // .weight(0.1f)
.background(Color(0xFF300052)) // .background(Color(0xFF300052))
.padding(20.dp), // .padding(20.dp),
horizontalArrangement = Arrangement.SpaceAround, // horizontalArrangement = Arrangement.SpaceAround,
verticalAlignment = Alignment.CenterVertically // verticalAlignment = Alignment.CenterVertically
) { // ) {
// Bouton Likes // // Bouton Likes
Image( // Image(
painter = painterResource(id = R.drawable.like_icon), // painter = painterResource(id = R.drawable.like_icon),
contentDescription = "Bouton" // contentDescription = "Bouton"
) // )
// Bouton WhatTheFantasy // // Bouton WhatTheFantasy
Image( // Image(
painter = painterResource(R.drawable.wf_logo), // painter = painterResource(R.drawable.wf_logo),
contentDescription = "Menu Button", // contentDescription = "Menu Button",
Modifier.clickable { navControllerQuizMenu() } // Modifier.clickable { navControllerQuizMenu() }
) // )
// Bouton Quiz // // Bouton Quiz
Image( // Image(
painter = painterResource(id = R.drawable.quiz_icon), // painter = painterResource(id = R.drawable.quiz_icon),
contentDescription = "Bouton" // contentDescription = "Bouton"
) // )
} // }
} }
} }

@ -1,6 +1,8 @@
package com.example.what_the_fantasy.ui.screens package com.example.what_the_fantasy.ui.screens
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import com.example.what_the_fantasy.ui.components.NavBar
@Composable @Composable
fun QuotePage() {} fun QuotePage() {
}

@ -1,6 +1,8 @@
package com.example.what_the_fantasy.ui.screens package com.example.what_the_fantasy.ui.screens
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import com.example.what_the_fantasy.ui.components.NavBar
@Composable @Composable
fun SearchPage() {} fun SearchPage() {
}

@ -1,6 +1,8 @@
package com.example.what_the_fantasy.ui.screens package com.example.what_the_fantasy.ui.screens
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import com.example.what_the_fantasy.ui.components.NavBar
@Composable @Composable
fun SubmitQuotePage() {} fun SubmitQuotePage() {
}

@ -17,3 +17,7 @@ val gradienBox = Brush.linearGradient(
end = Offset(1000f, 0f) // Fin en haut à droite end = Offset(1000f, 0f) // Fin en haut à droite
) )
val colorBackground = Color(0xFF100C1B) val colorBackground = Color(0xFF100C1B)
val colorNavBar = Color(0xFF2F0E62)
val colorButtonNav = Color.Cyan
Loading…
Cancel
Save