Add RecapSubmit

submitQuote
tomivt 4 months ago
parent 3d130b2504
commit fdc03b62cf

@ -14,6 +14,7 @@ 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.QuizMenu
import com.example.what_the_fantasy.ui.screens.QuizPage 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.QuotePage
import com.example.what_the_fantasy.ui.screens.RecapSubmitPage
import com.example.what_the_fantasy.ui.screens.SearchPage 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.SignUpPage
import com.example.what_the_fantasy.ui.screens.SubmitQuotePage import com.example.what_the_fantasy.ui.screens.SubmitQuotePage
@ -43,6 +44,12 @@ data object SignUp
@Serializable @Serializable
data class SubmitQuote(val userIndex: Int) data class SubmitQuote(val userIndex: Int)
@Serializable
data class RecapSubmit(val userIndex: Int,
val quoteContent : String,
val character : String,
val source : String)
@Composable @Composable
fun AppNavigator() { fun AppNavigator() {
@ -113,6 +120,9 @@ fun AppNavigator() {
navProfil = { navController.navigate(Profil(submitQuote.userIndex)) }, navProfil = { navController.navigate(Profil(submitQuote.userIndex)) },
navControllerQuiz = { idQuiz -> navControllerQuiz = { idQuiz ->
navController.navigate(Quiz(submitQuote.userIndex,idQuiz)) navController.navigate(Quiz(submitQuote.userIndex,idQuiz))
},
navRecap = { quoteContent, character, source ->
navController.navigate(RecapSubmit(submitQuote.userIndex, quoteContent, character, source))
} }
) )
} }
@ -154,5 +164,17 @@ fun AppNavigator() {
navQuiz = { navController.navigate(QuizMenu(quizEnd.userIndex)) } navQuiz = { navController.navigate(QuizMenu(quizEnd.userIndex)) }
) )
} }
composable<RecapSubmit> {
val recapSubmit:RecapSubmit=it.toRoute()
RecapSubmitPage(
index = recapSubmit.userIndex,
quoteContent = recapSubmit.quoteContent,
character = recapSubmit.character,
source = recapSubmit.source,
navAccueil = { navController.navigate( Accueil(recapSubmit.userIndex) ) },
navFavorite = { navController.navigate(Favorite(recapSubmit.userIndex)) },
navProfil = { navController.navigate(Profil(recapSubmit.userIndex)) }
)
}
} }
} }

@ -0,0 +1,168 @@
package com.example.what_the_fantasy.ui.screens
import android.content.Context
import android.content.Intent
import androidx.compose.foundation.background
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.padding
import androidx.compose.foundation.layout.size
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Favorite
import androidx.compose.material.icons.filled.FavoriteBorder
import androidx.compose.material.icons.filled.MailOutline
import androidx.compose.material.icons.filled.Share
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.Text
import androidx.compose.ui.draw.clip
import androidx.compose.ui.draw.drawBehind
import androidx.compose.ui.geometry.CornerRadius
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.example.what_the_fantasy.R
import coil.compose.AsyncImage
import com.example.what_the_fantasy.ui.components.NavBar
import com.example.what_the_fantasy.ui.theme.gradienBox
import androidx.compose.foundation.layout.Spacer
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.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import com.example.what_the_fantasy.data.model.Character
@Composable
fun RecapSubmitPage(
index: Int,
navFavorite: (Int) -> Unit,
navAccueil: (Int) -> Unit,
navProfil:(Int) -> Unit,
quoteContent : String,
character: String,
source: String
) {
NavBar(onQuiz = true,
index = index,
navControllerFavorite = navFavorite,
navControllerAccueil = navAccueil,
navControllerProfil = navProfil,
navControllerQuiz = { }
) {
Column(
modifier = Modifier.fillMaxSize().background(Color(0xFF100C1B))
) {
// Contenu princiapl
Column(
modifier = Modifier
.weight(0.9f)
.fillMaxSize()
.padding(20.dp),
horizontalAlignment = Alignment.CenterHorizontally
) {
Text(
text = "▶ Recap de la citation ◀",
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
) {
Column(modifier = Modifier
.padding(15.dp)
.drawBehind {
drawRoundRect(
gradienBox,
cornerRadius = CornerRadius(15.dp.toPx()),
)
}
) {
Row(modifier = Modifier.padding(15.dp)) {
ImageQuote(
imageUrl = "https://img.freepik.com/vecteurs-libre/personnage-guerrier-fantaisie_1045-185.jpg?size=338&ext=jpg"
)
Column {
QuoteText(
text = '"' + quoteContent + '"'
)
}
}
Column(modifier = Modifier
.padding(15.dp)
.fillMaxWidth()
) {
InfoQuoteText(
nameId = R.string.source,
text = source
)
Text(
text = character
)
}
}
}
}
}
}
}
@Composable
fun QuoteText(text: String ){
Text(
text = text,
modifier = Modifier.padding(start = 10.dp, top = 15.dp),
fontWeight = FontWeight(1000),
fontSize = 20.sp
)
}
@Composable
fun ImageQuote(imageUrl : String){
AsyncImage(
model = imageUrl,
contentDescription = "exemple",
modifier = Modifier
.size(150.dp)
.clip(RoundedCornerShape(15.dp))
)
}
@Composable
fun InfoQuoteText(nameId : Int, text : String){
Column(modifier = Modifier.padding(bottom = 20.dp)){
Text(
text = text,
fontSize = 16.sp,
fontWeight = FontWeight(400),
modifier = Modifier
.drawBehind {
drawRoundRect(
Color(255,255,255),
cornerRadius = CornerRadius(15.dp.toPx())
)
}
.padding(5.dp),
)
}
}

@ -11,11 +11,8 @@ import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
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.TextFieldColors
import androidx.compose.material3.TextFieldDefaults
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
@ -27,21 +24,13 @@ import androidx.compose.ui.draw.clip
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.input.KeyboardType import androidx.compose.ui.text.input.KeyboardType
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.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import com.example.what_the_fantasy.R import com.example.what_the_fantasy.R
import com.example.what_the_fantasy.data.model.Character
import com.example.what_the_fantasy.data.model.User
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.ErrorMessageSubmitQuoteComponent import com.example.what_the_fantasy.ui.components.ErrorMessageSubmitQuoteComponent
import com.example.what_the_fantasy.ui.components.NavBar 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.components.hashPassword
import com.example.what_the_fantasy.ui.navigations.Profil
import com.example.what_the_fantasy.ui.theme.colorBackground import com.example.what_the_fantasy.ui.theme.colorBackground
import com.example.what_the_fantasy.ui.theme.gradienBox import com.example.what_the_fantasy.ui.theme.gradienBox
@ -51,7 +40,8 @@ fun SubmitQuotePage(
navFavorite: (Int) -> Unit, navFavorite: (Int) -> Unit,
navAccueil: (Int) -> Unit, navAccueil: (Int) -> Unit,
navProfil:(Int) -> Unit, navProfil:(Int) -> Unit,
navControllerQuiz: (Int) -> Unit navControllerQuiz: (Int) -> Unit,
navRecap: (String, String, String) -> Unit
) { ) {
NavBar( NavBar(
index = index, index = index,
@ -86,7 +76,8 @@ fun SubmitQuotePage(
R.string.titleButtonSubmit, R.string.titleButtonSubmit,
18, 18,
Color.White, Color.White,
Color.Black Color.Black,
navRecap
) )
SpaceHeightComponent(20) SpaceHeightComponent(20)
BackButton(R.string.titleButtonBack, 12, Color.White,navProfil, index) BackButton(R.string.titleButtonBack, 12, Color.White,navProfil, index)
@ -205,13 +196,14 @@ fun SubmitQuoteButton(
titleResId: Int, titleResId: Int,
size: Int, size: Int,
colorButton: Color, colorButton: Color,
colorText: Color colorText: Color,
navRecap : (String, String, String) -> Unit
) { ) {
val title = stringResource(id = titleResId) val title = stringResource(id = titleResId)
var showError by remember { mutableStateOf(false) } var showError by remember { mutableStateOf(false) }
Button( Button(
onClick = { showError = !validSubmitQuote(quote, character, source, timeCode, year) }, onClick = { showError = !goToRecap(quote, character, source, timeCode, year, navRecap) },
colors = ButtonDefaults.buttonColors(containerColor = colorButton), colors = ButtonDefaults.buttonColors(containerColor = colorButton),
modifier = Modifier.fillMaxWidth(), modifier = Modifier.fillMaxWidth(),
) { ) {
@ -223,6 +215,19 @@ fun SubmitQuoteButton(
} }
} }
fun goToRecap(quote: String,
character: String,
source: String,
timeCode: String,
year: String,
navRecap : (String, String, String) -> Unit): Boolean {
if (validSubmitQuote(quote, character, source, timeCode, year)) {
navRecap(quote, character, source)
return true
}
return false
}
fun validSubmitQuote(quote : String, character : String, source: String, timeCode: String, year: String): Boolean{ fun validSubmitQuote(quote : String, character : String, source: String, timeCode: String, year: String): Boolean{
val isNotBlank = quote.isNotBlank() && val isNotBlank = quote.isNotBlank() &&
character.isNotBlank() && character.isNotBlank() &&

Loading…
Cancel
Save