diff --git a/Android/VeraxApplication/app/build.gradle.kts b/Android/VeraxApplication/app/build.gradle.kts index abf70c9..114550b 100644 --- a/Android/VeraxApplication/app/build.gradle.kts +++ b/Android/VeraxApplication/app/build.gradle.kts @@ -66,6 +66,7 @@ dependencies { androidTestImplementation("androidx.compose.ui:ui-test-junit4") debugImplementation("androidx.compose.ui:ui-tooling") debugImplementation("androidx.compose.ui:ui-test-manifest") + implementation("io.coil-kt:coil-compose:1.4.0") } \ No newline at end of file diff --git a/Android/VeraxApplication/app/src/main/AndroidManifest.xml b/Android/VeraxApplication/app/src/main/AndroidManifest.xml index 316f500..cb87384 100644 --- a/Android/VeraxApplication/app/src/main/AndroidManifest.xml +++ b/Android/VeraxApplication/app/src/main/AndroidManifest.xml @@ -24,5 +24,6 @@ + \ No newline at end of file diff --git a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/MainActivity.kt b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/MainActivity.kt index 4a44758..e227e0b 100644 --- a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/MainActivity.kt +++ b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/MainActivity.kt @@ -1,36 +1,31 @@ package com.example.veraxapplication -import android.graphics.Paint.Align import android.os.Bundle -import android.text.Layout -import android.view.Menu +import android.util.Log import androidx.activity.ComponentActivity import androidx.activity.compose.setContent +import androidx.compose.foundation.Image import androidx.compose.foundation.background +import androidx.compose.foundation.border import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier 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.material3.ExperimentalMaterial3Api -import androidx.compose.material3.MenuDefaults import androidx.compose.material3.Scaffold import androidx.compose.ui.graphics.Color import androidx.compose.material3.Text -import androidx.compose.material3.TopAppBar import androidx.compose.ui.res.colorResource -import androidx.compose.ui.tooling.preview.Preview import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.width -import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ArrowBack -import androidx.compose.material.icons.filled.Favorite import androidx.compose.material.icons.filled.Home import androidx.compose.material.icons.filled.Menu import androidx.compose.material.icons.filled.Person @@ -40,34 +35,40 @@ import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.Icon import androidx.compose.material3.IconButton -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.NavigationBarDefaults.containerColor -import androidx.compose.material3.Scaffold -import androidx.compose.material3.ScaffoldDefaults -import androidx.compose.material3.TopAppBarDefaults.topAppBarColors -import androidx.compose.material3.darkColorScheme import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment +import androidx.compose.ui.draw.clip import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp - +import coil.compose.rememberImagePainter +import coil.size.Scale +import com.example.veraxapplication.data.Article +import com.example.veraxapplication.data.Paragraph +import com.example.veraxapplication.ui.theme.Salmon // doc navBar: https://developer.android.com/reference/kotlin/androidx/compose/material3/package-summary#TopAppBar(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Function0,kotlin.Function1,androidx.compose.foundation.layout.WindowInsets,androidx.compose.material3.TopAppBarColors,androidx.compose.material3.TopAppBarScrollBehavior) // doc compose, pleins de trucs: https://developer.android.com/jetpack/compose/text?hl=fr //doc couleur background pas finie: https://developer.android.com/jetpack/compose/components/scaffold + + + class MainActivity : ComponentActivity() { // un truc vite fait pour avoir un visi var article = listOf("Thinkerview", "thinkerview.jgp", "Thinkerview est une chaîne youtube d'interview-débat") + var articles = listOf( Article("Thinkerview", "This is a descrition", Author = "IAmAGreatAuthor", Image = "https://www.gstatic.com/webp/gallery/1.jpg", LectureTime = "12", Content = listOf(Paragraph("This is a paragraph"), Paragraph("This is another paragraph"), Paragraph("This is a third paragraph")))) var theme = listOf("Economique","Culture","Politique","Faits divers") + var color = Color(0xFF00FF00) + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { - TopBarVerax(theme = theme, article = article) + TopBarVerax(theme = theme, article = articles) // allez sur la doc de Scaffold sur Android Dev et si vous comprenez comment on doit faire bien ouej } @@ -77,13 +78,11 @@ class MainActivity : ComponentActivity() { // Il faudrait mettre ca dans un fichier appart mais je connais plus les conventions ... @OptIn(ExperimentalMaterial3Api::class) @Composable -fun TopBarVerax(theme : List, article : List) { +fun TopBarVerax(theme : List, article : List
) { var leMenu by remember { mutableStateOf(false) } - Row( - Modifier.background(Color.Cyan) - ) { + Row() { Scaffold( topBar = { CenterAlignedTopAppBar( @@ -172,10 +171,72 @@ fun TopBarVerax(theme : List, article : List) { @Composable -fun AffichageUnArticle(article : List){ - Column { +fun AffichageUnArticle(article : List
){ + Column() { for(e in article){ - Text(text = e) + DisplayTitle(title = e.Title) + DisplayHeader(author = e.Author, description = e.Description, lectureTime = e.LectureTime) + DisplayImage(image = e.Image) + DisplayContentArticle(content = e.Content) + } + } +} + +@Composable +fun DisplayImage(image: String) { + Log.d("DisplayImage", "Chargement de l'image à partir de l'URL : $image") + + val painter = rememberImagePainter( + data = image, + builder = { + scale(Scale.FILL) + } + ) + + Log.d("DisplayImage", "Painter créé avec succès") + + Box( + modifier = Modifier.fillMaxSize(), + contentAlignment = Alignment.Center + ) { + androidx.compose.foundation.Image( + painter = painter, + contentDescription = null, + modifier = Modifier.fillMaxSize(), + ) + } +} + + + +@Composable +fun DisplayHeader(author: String, description: String, lectureTime: String) { + Box(modifier = Modifier + .fillMaxWidth() + .border(width = 1.dp, color = Color.Black, shape = RoundedCornerShape(10.dp)) + .clip(RoundedCornerShape(10.dp)) + .background(Salmon) + .padding(10.dp)) { + Column () { + Text(text = author) + Text(text = description) + Text(text = "Lecture Time: " + lectureTime + " minutes") + } + } +} + +@Composable +fun DisplayTitle(title: String) { + Column(modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally){ + Text(text = title, fontFamily = FontFamily.Serif, fontSize = 30.sp) + } +} + +@Composable +fun DisplayContentArticle(content: List) { + Column { + for(e in content){ + Text(text = e.Content, fontSize = 15.sp, fontFamily = FontFamily.Serif, textAlign = TextAlign.Justify, modifier = Modifier.padding(10.dp)) } } } diff --git a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/data/Article.kt b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/data/Article.kt new file mode 100644 index 0000000..ddbbbe1 --- /dev/null +++ b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/data/Article.kt @@ -0,0 +1,10 @@ +package com.example.veraxapplication.data + +data class Article( + var Title : String, + var Description : String, + var Image : String, + var Author : String, + var Content : List, + var LectureTime : String +) diff --git a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/data/Paragraph.kt b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/data/Paragraph.kt new file mode 100644 index 0000000..8f4a51c --- /dev/null +++ b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/data/Paragraph.kt @@ -0,0 +1,5 @@ +package com.example.veraxapplication.data + +data class Paragraph( + var Content : String, +) diff --git a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/ui/theme/Color.kt b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/ui/theme/Color.kt index 416d5de..a2952b8 100644 --- a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/ui/theme/Color.kt +++ b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/ui/theme/Color.kt @@ -8,4 +8,5 @@ val Pink80 = Color(0xFFEFB8C8) val Purple40 = Color(0xFF6650a4) val PurpleGrey40 = Color(0xFF625b71) -val Pink40 = Color(0xFF7D5260) \ No newline at end of file +val Pink40 = Color(0xFF7D5260) +val Salmon = Color(0xFFE9967A) \ No newline at end of file