Merge pull request 'Navigation pour l'application' (#13) from navigation into master

Reviewed-on: #13
pull/14/head
Leni BEAULATON 2 months ago
commit c762ba0a58

@ -69,5 +69,6 @@ dependencies {
debugImplementation(libs.androidx.ui.tooling) debugImplementation(libs.androidx.ui.tooling)
debugImplementation(libs.androidx.ui.test.manifest) debugImplementation(libs.androidx.ui.test.manifest)
implementation(libs.coil.compose) //gére les url des image implementation(libs.coil.compose) //gére les url des image
implementation(kotlin("script-runtime"))
} }

@ -12,7 +12,7 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.navigation.NavController import androidx.navigation.NavController
import com.example.what_the_fantasy.ui.screens.AppNavigator 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.theme.What_The_FantasyTheme
import com.example.what_the_fantasy.ui.screens.LoginPage 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.ProfilPage

@ -0,0 +1,37 @@
package com.example.what_the_fantasy.ui.navigations
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.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.QuizPage
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
@Composable
fun AppNavigator() {
val navController = rememberNavController()
NavHost(navController, startDestination = "Login") {
composable("Login") { LoginPage(
navControllerSignUp = { navController.navigate("SignUp") },
navControllerProfil = { navController.navigate("Profil") } // A changer pour mettre l'Accueil quand elle sera faite
)}
composable("Accueil") { AccueilPage() }
composable("Favorite") { FavoritePage() }
composable("Profil") { ProfilPage(navController) }
composable("Quiz") { QuizPage() }
composable("Quote") { QuotePage() }
composable("Search") { SearchPage() }
composable("SignUp") { SignUpPage(navController)}
composable("SubmitQuote") { SubmitQuotePage() }
}
}

@ -1,30 +1,19 @@
package com.example.what_the_fantasy.ui.screens package com.example.what_the_fantasy.ui.screens
import android.os.Bundle
import android.text.style.BackgroundColorSpan
import android.util.Log
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.icons.Icons
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.material3.TextField
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
@ -37,15 +26,12 @@ import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.text.input.PasswordVisualTransformation import androidx.compose.ui.text.input.PasswordVisualTransformation
import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.text.input.VisualTransformation
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import com.example.what_the_fantasy.ui.theme.What_The_FantasyTheme
import androidx.navigation.NavController import androidx.navigation.NavController
import androidx.navigation.Navigation
import androidx.navigation.compose.rememberNavController import androidx.navigation.compose.rememberNavController
import androidx.navigation.compose.NavHost import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable import androidx.navigation.compose.composable
@ -54,11 +40,10 @@ 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.model.User
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 org.mindrot.jbcrypt.BCrypt
import java.security.MessageDigest import java.security.MessageDigest
@Composable @Composable
fun LoginPage(navController : NavController) { fun LoginPage(navControllerSignUp: () -> Unit, navControllerProfil: () -> Unit) {
val users = UserStub.allUsers; val users = UserStub.allUsers;
val gradient = Brush.linearGradient( val gradient = Brush.linearGradient(
@ -87,9 +72,9 @@ fun LoginPage(navController : NavController) {
val identifiant =IdentifiantTextField(R.string.IdentifiantLogin) val identifiant =IdentifiantTextField(R.string.IdentifiantLogin)
val passwd = PassWdTextField(R.string.PasswdLogin) val passwd = PassWdTextField(R.string.PasswdLogin)
SpaceHeightComponent(16) SpaceHeightComponent(16)
ConnexionButtonLogin(users,identifiant, passwd, R.string.ButtonLogin,18, Color.White, Color.Black,navController) ConnexionButtonLogin(users,identifiant, passwd, R.string.ButtonLogin,18, Color.White, Color.Black,navControllerProfil)
SpaceHeightComponent(16) SpaceHeightComponent(16)
CreateAccountButton(R.string.ButtonCreateLogin,12, Color.White, navController) CreateAccountButton(R.string.ButtonCreateLogin,12, Color.White, navControllerSignUp)
} }
} }
} }
@ -141,19 +126,9 @@ fun PassWdTextField(textpasswdResId : Int) : String{
return passwd; return passwd;
} }
//@Composable
//fun TitlePage(titleResId : Int, size : Int, color : Color){
// val title = stringResource(id = titleResId)
// Text(
// text = title,
// fontSize = size.sp,
// fontWeight = FontWeight.Bold,
// color = color
// )
//}
@Composable @Composable
fun ConnexionButtonLogin(userStub : List<User>, id : String, passwd : String, titleResId : Int, size : Int, colorButton : Color, colorText : Color, navController: NavController){ fun ConnexionButtonLogin(userStub : List<User>, id : String, passwd : String, titleResId : Int, size : Int, colorButton : Color, colorText : Color, navController: () -> Unit){
val title = stringResource(id = titleResId) val title = stringResource(id = titleResId)
Button( Button(
onClick = { validLogin(id, passwd, userStub, navController) }, onClick = { validLogin(id, passwd, userStub, navController) },
@ -166,13 +141,12 @@ fun ConnexionButtonLogin(userStub : List<User>, id : String, passwd : String, ti
} }
fun validLogin(identifiant : String, passwd : String, users : List<User>, navController: NavController){ fun validLogin(identifiant : String, passwd : String, users : List<User>, navController: () -> Unit){
users.forEach { user -> users.forEach { user ->
val hashPassWd = hashPassword(passwd) val hashPassWd = hashPassword(passwd)
if (user.username == identifiant && user.password == hashPassWd){ if (user.username == identifiant && user.password == hashPassWd) run {
navController.navigate("profile") navController()
//navController.navigate(ProfilPage(navController))
} }
} }
} }
@ -190,26 +164,14 @@ fun hashPassword(password: String): String {
@Composable @Composable
fun CreateAccountButton(titleResId : Int, size : Int, color : Color, navController: NavController){ fun CreateAccountButton(titleResId : Int, size : Int, color : Color, navController: () -> Unit){
val title = stringResource(id = titleResId) val title = stringResource(id = titleResId)
Text( Text(
text = title, text = title,
fontSize = size.sp, fontSize = size.sp,
color = color, color = color,
modifier = Modifier.clickable { modifier = Modifier.clickable {
navController.navigate("signup")// rediriger vers la page de création de compte navController()// rediriger vers la page de création de compte
} }
) )
} }
@Composable
fun AppNavigator() {
val navController = rememberNavController()
NavHost(navController, startDestination = "login") {
composable("login") { LoginPage(navController) }
composable("signup") { SignUpPage(navController) }
composable("profile") { ProfilPage(navController) }
}
}

@ -43,7 +43,6 @@ import com.example.what_the_fantasy.R
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 org.mindrot.jbcrypt.BCrypt
@Composable @Composable
fun SignUpPage(navController: NavController) { fun SignUpPage(navController: NavController) {

Loading…
Cancel
Save