From af3ff9daccf0bb9cc3c9ca4dc48d807c744dd082 Mon Sep 17 00:00:00 2001 From: Shana CASCARRA Date: Thu, 28 Mar 2024 11:34:24 +0100 Subject: [PATCH] Navigation git add .! --- .../example/veraxapplication/MainActivity.kt | 6 ++-- .../example/veraxapplication/data/Article.kt | 15 ---------- .../veraxapplication/data/Paragraph.kt | 6 ---- .../com/example/veraxapplication/data/Stub.kt | 20 ------------- .../navigation/VeraxNavHost.kt | 28 ++++++++++++++++-- .../veraxapplication/ui/article/Article.kt | 9 +++--- .../veraxapplication/ui/topBar/TopBarVerax.kt | 29 +++++++++++++++---- 7 files changed, 57 insertions(+), 56 deletions(-) delete mode 100644 Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/data/Article.kt delete mode 100644 Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/data/Paragraph.kt delete mode 100644 Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/data/Stub.kt 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 ad157e9..ad5875b 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 @@ -38,10 +38,10 @@ class MainActivity : ComponentActivity() { setContent { - //TopBarVerax(theme = theme, articles = articlesApi) - //TopBarVerax(theme = theme, articles = articles) + // TopBarVerax(theme = theme, articles = articlesApi) + TopBarVerax(theme = theme, articles = articles) - VeraxNavHost() + // VeraxNavHost() } } 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 deleted file mode 100644 index 0f1740e..0000000 --- a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/data/Article.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.example.veraxapplication.data - -import android.media.Image - -/* -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 deleted file mode 100644 index 622a37a..0000000 --- a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/data/Paragraph.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.example.veraxapplication.data -/* -data class Paragraph( - var Content : String, -) -*/ \ No newline at end of file diff --git a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/data/Stub.kt b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/data/Stub.kt deleted file mode 100644 index 38f18dc..0000000 --- a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/data/Stub.kt +++ /dev/null @@ -1,20 +0,0 @@ -package com.example.veraxapplication.data - -import com.example.veraxapplication.modele.articles.Article - -object Stub { -/* - val Articles: List
by lazy { - createArticles() - } - - private fun createArticles(): List
{ - - return listOf( - Article(1, "Titre1", "test du corps de l'article 1"), - Article(2, "Titre2", "test du corps de l'article 2"), - Article(3, "Titre3", "test du corps de l'article 3"), - Article(4, "Titre4", "test du corps de l'article 4") - ) - }*/ -} diff --git a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/navigation/VeraxNavHost.kt b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/navigation/VeraxNavHost.kt index 97003c4..1740bbd 100644 --- a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/navigation/VeraxNavHost.kt +++ b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/navigation/VeraxNavHost.kt @@ -1,22 +1,46 @@ package com.example.veraxapplication.navigation import androidx.compose.runtime.Composable +import androidx.navigation.NavController +import androidx.navigation.NavHostController +import androidx.navigation.NavType import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController +import androidx.navigation.navArgument import com.example.veraxapplication.MainActivity +import com.example.veraxapplication.modele.articles.Article +import com.example.veraxapplication.ui.article.AffichageLesArticles +import com.example.veraxapplication.ui.article.AfficherArticle @Composable -fun VeraxNavHost() { +fun VeraxNavHost(articles : List
, navController: NavHostController) { - val navController = rememberNavController() NavHost( navController = navController, startDestination = "accueil" ){ composable(route="accueil"){ + AffichageLesArticles( + articles = articles, + goToArticle = { + navController.navigate("article/${it.id}") + } + ) + } + composable( + route="article/{articleid}", + arguments= listOf(navArgument("articleid"){ type= NavType.IntType}) + ){ + it.arguments?.getInt("articleid")?.let { articleid -> + articles.find { it.id == articleid }?.let { + AfficherArticle( + e = it + ) + } + } } } diff --git a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/ui/article/Article.kt b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/ui/article/Article.kt index 899ae40..1e4876b 100644 --- a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/ui/article/Article.kt +++ b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/ui/article/Article.kt @@ -33,11 +33,12 @@ import com.example.veraxapplication.modele.articles.contenus.ContenuParagraphe import com.example.veraxapplication.ui.theme.Salmon @Composable -fun AffichageLesArticles(articles : List
){ +fun AffichageLesArticles(articles : List
, goToArticle: (Article) -> Unit +){ Column(modifier = Modifier.verticalScroll(rememberScrollState())){ for(article in articles){ Box (Modifier.clickable { /*faut je regarde la doc*/ }){ - AffichageUnArticleInfo(e = article) + AffichageUnArticleInfo(e = article, goToArticle) } } @@ -45,7 +46,7 @@ fun AffichageLesArticles(articles : List
){ } @Composable -fun AffichageUnArticleInfo(e : Article){ +fun AffichageUnArticleInfo(e : Article, goToArticle: (Article) -> Unit){ Column(modifier = Modifier .padding(7.dp) .border(width = 1.dp, color = Color.Black, shape = RoundedCornerShape(10.dp)) @@ -83,7 +84,7 @@ fun AffichageUnArticleInfo(e : Article){ .padding(5.dp, 35.dp) ) - Button(onClick = { /*TODO*/ }, + Button(onClick = { goToArticle(e) }, colors = ButtonDefaults.buttonColors( containerColor = Salmon, contentColor = Color.Black diff --git a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/ui/topBar/TopBarVerax.kt b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/ui/topBar/TopBarVerax.kt index 5a48c80..3487941 100644 --- a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/ui/topBar/TopBarVerax.kt +++ b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/ui/topBar/TopBarVerax.kt @@ -10,6 +10,7 @@ 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.automirrored.filled.ArrowBack import androidx.compose.material.icons.filled.ArrowBack import androidx.compose.material.icons.filled.Menu import androidx.compose.material3.CenterAlignedTopAppBar @@ -32,8 +33,11 @@ import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import androidx.navigation.compose.currentBackStackEntryAsState +import androidx.navigation.compose.rememberNavController import com.example.veraxapplication.R import com.example.veraxapplication.modele.articles.Article +import com.example.veraxapplication.navigation.VeraxNavHost import com.example.veraxapplication.ui.article.AffichageLesArticles import com.example.veraxapplication.ui.article.AfficherArticle import com.example.veraxapplication.ui.theme.Orange @@ -44,6 +48,11 @@ fun TopBarVerax(theme: List, articles: List
) { var leMenu by remember { mutableStateOf(false) } + + val navController = rememberNavController() + + val navBackStackEntry by navController.currentBackStackEntryAsState() + Row() { Scaffold( topBar = { @@ -59,14 +68,16 @@ fun TopBarVerax(theme: List, articles: List
) { modifier = Modifier.fillMaxWidth() ) }, - navigationIcon = { - IconButton(onClick = { /* action() */ }) { + navigationIcon = { if (navBackStackEntry?.destination?.route != "accueil"){ + IconButton(onClick = { navController.popBackStack() }) { Icon( - imageVector = Icons.Filled.ArrowBack, + imageVector = Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Retour", Modifier.size(30.dp) ) } + } + }, actions = { IconButton(onClick = { leMenu = !leMenu }) { @@ -79,7 +90,11 @@ fun TopBarVerax(theme: List, articles: List
) { DropdownMenu( expanded = leMenu, onDismissRequest = { leMenu = false }, modifier = Modifier - .border(width = 1.dp, color = Color.Black, shape = RoundedCornerShape(10.dp)) + .border( + width = 1.dp, + color = Color.Black, + shape = RoundedCornerShape(10.dp) + ) .background(Orange) ) { theme.sorted().forEach { @@ -126,8 +141,10 @@ fun TopBarVerax(theme: List, articles: List
) { verticalArrangement = Arrangement.spacedBy(16.dp), ) { - AffichageLesArticles(articles = articles) - // AfficherArticle(articles.get(0)); + // AffichageLesArticles(articles = articles) + // AfficherArticle(articles.get(0)) + + VeraxNavHost(articles = articles, navController) }