diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/MainActivity.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/MainActivity.kt index 2417309..8b39ede 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/MainActivity.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/MainActivity.kt @@ -25,7 +25,7 @@ class MainActivity : ComponentActivity() { What_The_FantasyTheme { //AppNavigator() //QuizPage() - QuotePage(QuoteStub.quote1) + QuotePage(1) } } } 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 0c651c1..9916dd9 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 @@ -9,6 +9,7 @@ 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.QuizApp 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 @@ -52,7 +53,11 @@ fun AppNavigator() { ProfilPage(index = userIndex, navController = navController) } composable(Destination.Quiz.route) { QuizPage(navController) } - composable(Destination.Quote.route) { } + composable(Destination.Quote.route) { backStackEntry -> + // Récupère l'index passé dans la route + val index = backStackEntry.arguments?.getString("userIndex")?.toInt() ?: -1 + QuotePage(quoteId = index)//, navController = navController) + } composable(Destination.Search.route) { SearchPage() } composable(Destination.SignUp.route) { SignUpPage(navController) } composable(Destination.SubmitQuote.route) { SubmitQuotePage() } 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 f9dab91..056d0ce 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 @@ -1,11 +1,24 @@ package com.example.what_the_fantasy.ui.screens +import android.content.Context +import android.content.Intent +import android.net.Uri +import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box 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.foundation.shape.RoundedCornerShape +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.runtime.Composable import androidx.compose.ui.Alignment @@ -14,45 +27,78 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.drawBehind import androidx.compose.ui.geometry.CornerRadius import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.unit.TextUnit import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavController import com.example.what_the_fantasy.R import com.example.what_the_fantasy.data.model.Quote import coil.compose.AsyncImage +import com.example.what_the_fantasy.data.local.QuoteStub +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.iconText +import com.example.what_the_fantasy.ui.theme.likeIcon +import com.example.what_the_fantasy.ui.theme.whiteBackcgroundText @Composable -fun QuotePage(quote : Quote) { -// Column (modifier = Modifier.padding(15.dp).drawBehind { -// drawRoundRect( -// Color(70,190,115), -// cornerRadius = CornerRadius(15.dp.toPx()), -// ) -// }.size(500.dp, 600.dp)) - Box - { - Row(modifier = Modifier.padding(15.dp)){ - ImageQuote( - imageUrl = quote.imgUrl - ) - QuoteText( - text = '"'+quote.content+'"' +fun QuotePage(quoteId : Int) { + var quote : Quote= QuoteStub.quote1 // service -> GetQuote(id) + val context = LocalContext.current + Box( + modifier = Modifier + .fillMaxSize() + .background(colorBackground), + contentAlignment = Alignment.Center + ) { + Column(modifier = Modifier + .padding(15.dp) + .drawBehind { + drawRoundRect( + gradienBox, + cornerRadius = CornerRadius(15.dp.toPx()), + ) + } + ) { + Row(modifier = Modifier.padding(15.dp)) { + ImageQuote( + imageUrl = quote.imgUrl + ) + Column { - ) - } - Column (modifier = Modifier.padding(15.dp)) { - InfoQuoteText( - nameId = R.string.source, - text = quote.source - ) - InfoQuoteText( - nameId = R.string.charac, - text = quote.character - ) - Text( - text = "like : " + quote.likes.toString() - ) + FunctionalIcon( + // --/!\-- a modifier --/!\-- + // service -> isFavorite(id) + true, + id = quoteId, + context = context + ) + QuoteText( + text = '"' + quote.content + '"' + ) + } + } + Column(modifier = Modifier.padding(15.dp)) { + InfoQuoteText( + nameId = R.string.source, + text = quote.source + ) + InfoQuoteText( + nameId = R.string.charac, + text = quote.character + ) + Row( + modifier = Modifier + .padding(top = 10.dp) + .align(alignment = Alignment.End) + ) { + LikeInfo( + likes = quote.likes + ) + } + } } } } @@ -62,7 +108,9 @@ fun QuoteText(text: String ){ Text( text = text, modifier = Modifier.padding(start = 10.dp, top = 15.dp), - fontWeight = FontWeight(1000) + fontWeight = FontWeight(1000), + fontSize = 20.sp, + color = iconText ) } @@ -70,23 +118,96 @@ fun QuoteText(text: String ){ fun ImageQuote(imageUrl : String){ AsyncImage( model = imageUrl, - contentDescription = "Photo de profil", + contentDescription = stringResource(R.string.profilePict), modifier = Modifier .size(150.dp) .clip(RoundedCornerShape(15.dp)) ) } +@Composable +fun FunctionalIcon(isFavorite: Boolean, id : Int, context : Context){ + Row(modifier = Modifier + .fillMaxWidth() + ) { + IconButton( + onClick = { + + val sendIntent = Intent().apply { + action = Intent.ACTION_SEND + // lien a changer quand le site sra deployer + putExtra(Intent.EXTRA_TEXT, "http://wfWebsite/quote/" + id.toString() ) + type = "text/plain" + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) // Ajout pour compatibilité + } + + val shareIntent = Intent.createChooser(sendIntent, null) + shareIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) // Ajout aussi ici + + context.startActivity(shareIntent) + }, + modifier = Modifier.padding(start = 15.dp) + ) { + Icon( + Icons.Default.Share, + contentDescription = stringResource(R.string.share), + tint = iconText, + ) + } + IconButton( + onClick = { }, //Go to comment + modifier = Modifier.padding(start = 20.dp) + ){ + Icon( + Icons.Default.MailOutline, + contentDescription = stringResource(R.string.comment), + tint = iconText, + ) + } + + if(isFavorite){ + IconButton( + onClick = { }, //Go to comment + modifier = Modifier.padding(start = 20.dp) + ){ + Icon( + Icons.Default.Favorite, + contentDescription = stringResource(R.string.favorite), + tint = likeIcon, + ) + } + + } + else{ + IconButton( + onClick = { }, //Go to comment + modifier = Modifier.padding(start = 50.dp) + ){ + Icon( + Icons.Default.FavoriteBorder, + contentDescription = stringResource(R.string.favorite), + tint = iconText + ) + } + } + } +} + @Composable fun InfoQuoteText(nameId : Int, text : String){ - Column(modifier = Modifier.padding(bottom = 40.dp)){ + Column(modifier = Modifier.padding(bottom = 20.dp)){ Text( text = stringResource(id = nameId), - fontWeight = FontWeight(500) + fontSize = 18.sp, + fontWeight = FontWeight(500), + color = iconText ) Text( text = text, + color = whiteBackcgroundText, + fontSize = 16.sp, + fontWeight = FontWeight(400), modifier = Modifier .drawBehind { drawRoundRect( @@ -97,4 +218,17 @@ fun InfoQuoteText(nameId : Int, text : String){ .padding(5.dp), ) } +} + +@Composable +fun LikeInfo(likes : Int){ + Text( + text = likes.toString(), + color = iconText + ) + Icon( + Icons.Default.Favorite, + contentDescription = stringResource(R.string.favorite), + tint = iconText, + ) } \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/theme/Color.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/theme/Color.kt index 41c8deb..3aaa0d6 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/theme/Color.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/theme/Color.kt @@ -11,6 +11,9 @@ val Pink80 = Color(0xFFEFB8C8) val Purple40 = Color(0xFF6650a4) val PurpleGrey40 = Color(0xFF625b71) val Pink40 = Color(0xFF7D5260) +val likeIcon = Color.Red +val whiteBackcgroundText = Color.Black +val iconText = Color.White val gradienBox = Brush.linearGradient( colors = listOf(Color(0xFF7B1FA2), Color(0xFF311B92)), // Violet clair → Violet foncé start = Offset(0f, 1000f), // Départ en bas à gauche 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 f8ac1fc..d549f17 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 @@ -8,6 +8,11 @@ //Page Quote Personnage Source + Partager + Commentaire + Favoris + Likes + Image de profil //Page Login Connexion au compte 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 2fdf6dd..6bda47d 100644 --- a/What_The_Fantasy/app/src/main/res/values/strings.xml +++ b/What_The_Fantasy/app/src/main/res/values/strings.xml @@ -7,6 +7,11 @@ //Page Quote Character Source + Share + comment + favorite + likes + Profile picture //Page Login Account login