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 d1e46e1..cd1e808 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 @@ -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.QuizPage 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.SignUpPage import com.example.what_the_fantasy.ui.screens.SubmitQuotePage @@ -43,6 +44,12 @@ data object SignUp @Serializable data class SubmitQuote(val userIndex: Int) +@Serializable +data class RecapSubmit(val userIndex: Int, + val quoteContent : String, + val character : String, + val source : String) + @Composable fun AppNavigator() { @@ -113,6 +120,9 @@ fun AppNavigator() { navProfil = { navController.navigate(Profil(submitQuote.userIndex)) }, navControllerQuiz = { 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)) } ) } + composable { + 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)) } + ) + } } } 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 new file mode 100644 index 0000000..65c74a3 --- /dev/null +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/RecapSubmitPage.kt @@ -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), + ) + } +} \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SubmitQuotePage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SubmitQuotePage.kt index 8270ae1..35edd2f 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 @@ -11,11 +11,8 @@ import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults -import androidx.compose.material3.IconButton import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text -import androidx.compose.material3.TextFieldColors -import androidx.compose.material3.TextFieldDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue 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.res.stringResource 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.sp 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.NavBar import com.example.what_the_fantasy.ui.components.SpaceHeightComponent import com.example.what_the_fantasy.ui.components.TitlePageComponent -import com.example.what_the_fantasy.ui.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.gradienBox @@ -51,7 +40,8 @@ fun SubmitQuotePage( navFavorite: (Int) -> Unit, navAccueil: (Int) -> Unit, navProfil:(Int) -> Unit, - navControllerQuiz: (Int) -> Unit + navControllerQuiz: (Int) -> Unit, + navRecap: (String, String, String) -> Unit ) { NavBar( index = index, @@ -86,7 +76,8 @@ fun SubmitQuotePage( R.string.titleButtonSubmit, 18, Color.White, - Color.Black + Color.Black, + navRecap ) SpaceHeightComponent(20) BackButton(R.string.titleButtonBack, 12, Color.White,navProfil, index) @@ -205,13 +196,14 @@ fun SubmitQuoteButton( titleResId: Int, size: Int, colorButton: Color, - colorText: Color + colorText: Color, + navRecap : (String, String, String) -> Unit ) { val title = stringResource(id = titleResId) var showError by remember { mutableStateOf(false) } Button( - onClick = { showError = !validSubmitQuote(quote, character, source, timeCode, year) }, + onClick = { showError = !goToRecap(quote, character, source, timeCode, year, navRecap) }, colors = ButtonDefaults.buttonColors(containerColor = colorButton), 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{ val isNotBlank = quote.isNotBlank() && character.isNotBlank() &&