From 9c2b05d62ca8b5fc166e178c3e53a5e239cf3520 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Wed, 24 Aug 2022 09:20:29 +0100 Subject: [PATCH 1/4] Disable auto creation of deps PRs for renovate (#960) According to - https://docs.renovatebot.com/faq/#tell-renovate-to-ask-for-approval-before-creating-a-pull-request we can add this option to enforce manual creation of PRs from the dashboard --- renovate.json | 1 + 1 file changed, 1 insertion(+) diff --git a/renovate.json b/renovate.json index 011760f7e..131297223 100644 --- a/renovate.json +++ b/renovate.json @@ -3,6 +3,7 @@ "extends": [ "config:base", ":dependencyDashboard" ], + "dependencyDashboardApproval": true, "packageRules": [ { "groupName": "Androidx Lifecycle deps", From 1694ecc4cb05534882dea7c15186f9e4e2663396 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Wed, 24 Aug 2022 14:41:08 +0100 Subject: [PATCH 2/4] Compose latest (#961) Co-authored-by: Ben Trengrove Co-authored-by: Ben Trengrove Co-authored-by: Jolanda Verhoef --- .../main/java/com/example/jetnews/ui/home/HomeScreens.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/home/HomeScreens.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/home/HomeScreens.kt index 7acec7422..acf4f6a1b 100644 --- a/JetNews/app/src/main/java/com/example/jetnews/ui/home/HomeScreens.kt +++ b/JetNews/app/src/main/java/com/example/jetnews/ui/home/HomeScreens.kt @@ -163,8 +163,10 @@ fun HomeFeedWithArticleDetailsScreen( // Crossfade between different detail posts Crossfade(targetState = hasPostsUiState.selectedPost) { detailPost -> // Get the lazy list state for this detail view - val detailLazyListState by derivedStateOf { - articleDetailLazyListStates.getValue(detailPost.id) + val detailLazyListState by remember { + derivedStateOf { + articleDetailLazyListStates.getValue(detailPost.id) + } } // Key against the post id to avoid sharing any state between different posts From e9859ac4d89417559d61c3625458c7cd191ff651 Mon Sep 17 00:00:00 2001 From: Jolanda Verhoef Date: Wed, 24 Aug 2022 18:48:31 +0100 Subject: [PATCH 3/4] [Jetnews] Update to Material3 (#964) --- JetNews/README.md | 9 +- JetNews/app/build.gradle.kts | 43 ++-- .../java/com/example/jetnews/ui/AppDrawer.kt | 138 +++-------- .../java/com/example/jetnews/ui/JetnewsApp.kt | 52 ++-- .../com/example/jetnews/ui/MainActivity.kt | 4 +- .../jetnews/ui/article/ArticleScreen.kt | 160 ++++++------- .../example/jetnews/ui/article/PostContent.kt | 113 ++++----- .../jetnews/ui/components/AppNavRail.kt | 110 +++------ .../ui/components/JetnewsSnackbarHost.kt | 8 +- .../ui/components/NavigationButtons.kt | 96 -------- .../com/example/jetnews/ui/home/HomeRoute.kt | 22 +- .../example/jetnews/ui/home/HomeScreens.kt | 223 ++++++++---------- .../example/jetnews/ui/home/PostCardTop.kt | 36 ++- .../jetnews/ui/home/PostCardYourNetwork.kt | 24 +- .../com/example/jetnews/ui/home/PostCards.kt | 93 ++++---- .../jetnews/ui/interests/InterestsRoute.kt | 10 +- .../jetnews/ui/interests/InterestsScreen.kt | 81 +++---- .../jetnews/ui/interests/SelectTopicButton.kt | 12 +- .../com/example/jetnews/ui/theme/Color.kt | 62 ++++- .../com/example/jetnews/ui/theme/Shape.kt | 2 +- .../com/example/jetnews/ui/theme/Theme.kt | 99 ++++++-- .../java/com/example/jetnews/ui/theme/Type.kt | 116 ++++----- .../example/jetnews/ui/utils/JetnewsIcons.kt | 38 ++- JetNews/app/src/main/res/font/domine_bold.ttf | Bin 140156 -> 0 bytes .../app/src/main/res/font/domine_regular.ttf | Bin 131968 -> 0 bytes .../src/main/res/font/montserrat_semibold.ttf | Bin 243816 -> 0 bytes .../app/src/main/res/values-night/colors.xml | 17 -- .../app/src/main/res/values-v23/themes.xml | 23 ++ .../app/src/main/res/values-v27/themes.xml | 25 ++ JetNews/app/src/main/res/values/colors.xml | 5 +- JetNews/app/src/main/res/values/strings.xml | 4 +- JetNews/app/src/main/res/values/styles.xml | 28 --- JetNews/app/src/main/res/values/themes.xml | 27 +++ .../com/example/jetnews/HomeScreenTests.kt | 8 +- JetNews/gradle/libs.versions.toml | 4 +- JetNews/screenshots/jetnews_demo.gif | Bin 8427221 -> 8968835 bytes 36 files changed, 759 insertions(+), 933 deletions(-) delete mode 100644 JetNews/app/src/main/java/com/example/jetnews/ui/components/NavigationButtons.kt delete mode 100755 JetNews/app/src/main/res/font/domine_bold.ttf delete mode 100755 JetNews/app/src/main/res/font/domine_regular.ttf delete mode 100755 JetNews/app/src/main/res/font/montserrat_semibold.ttf delete mode 100644 JetNews/app/src/main/res/values-night/colors.xml create mode 100644 JetNews/app/src/main/res/values-v23/themes.xml create mode 100644 JetNews/app/src/main/res/values-v27/themes.xml delete mode 100644 JetNews/app/src/main/res/values/styles.xml create mode 100644 JetNews/app/src/main/res/values/themes.xml diff --git a/JetNews/README.md b/JetNews/README.md index 069dcdef5..c86c9de40 100644 --- a/JetNews/README.md +++ b/JetNews/README.md @@ -41,10 +41,9 @@ that scrolls vertically and horizontally. See how to: * Use `Row`s and `Column`s to arrange the contents of the UI -* Add an `AppBar` -* Use `MaterialTypography` and opacity to style the text -* Use `Shape` to round the corners of the images -* Use elevation to make the `Card`s stand out from the background +* Add a top app bar that elevates as the user scrolls +* Use Material's `Typography` and `ColorScheme` to style the text +* Use tonal elevation to make the `Card`s stand out from the background [4]: app/src/main/java/com/example/jetnews/ui/home @@ -53,7 +52,7 @@ See how to: Package [`com.example.jetnews.ui.article`][5] This screen dives into the Text API, showing how to use different fonts than the ones defined in -[`Typograhy`][6]. It also adds a bottom appbar, with custom actions. +[`Typography`][6]. It also adds a bottom app bar, with custom actions. [5]: app/src/main/java/com/example/jetnews/ui/article [6]: app/src/main/java/com/example/jetnews/ui/theme/Type.kt diff --git a/JetNews/app/build.gradle.kts b/JetNews/app/build.gradle.kts index dd8e35693..cd91a09ec 100644 --- a/JetNews/app/build.gradle.kts +++ b/JetNews/app/build.gradle.kts @@ -97,17 +97,30 @@ dependencies { implementation(libs.kotlin.stdlib) implementation(libs.kotlinx.coroutines.android) - implementation(libs.androidx.compose.foundation.layout) - implementation(libs.androidx.compose.material) - implementation(libs.androidx.compose.material.iconsExtended) - implementation(libs.androidx.compose.materialWindow) - implementation(libs.androidx.compose.animation) - implementation(libs.androidx.compose.ui.tooling.preview) - debugImplementation(libs.androidx.compose.ui.tooling) - implementation(libs.androidx.compose.runtime.livedata) - - implementation(libs.accompanist.swiperefresh) - implementation(libs.accompanist.systemuicontroller) + // TODO: Replace when all samples use the same Material3 & Compose version + implementation("androidx.compose.animation:animation:1.3.0-beta01") + implementation("androidx.compose.foundation:foundation-layout:1.3.0-beta01") + implementation("androidx.compose.material:material-icons-extended:1.3.0-beta01") + implementation("androidx.compose.material3:material3:1.0.0-beta01") + implementation("androidx.compose.material3:material3-window-size-class:1.0.0-beta01") + implementation("androidx.compose.runtime:runtime-livedata:1.3.0-beta01") + implementation("androidx.compose.ui:ui-tooling-preview:1.3.0-beta01") + debugImplementation("androidx.compose.ui:ui-test-manifest:1.3.0-beta01") + debugImplementation("androidx.compose.ui:ui-tooling:1.3.0-beta01") +// implementation(libs.androidx.compose.animation) +// implementation(libs.androidx.compose.foundation.layout) +// implementation(libs.androidx.compose.material.iconsExtended) +// implementation(libs.androidx.compose.material3) +// implementation(libs.androidx.compose.materialWindow) +// implementation(libs.androidx.compose.runtime.livedata) +// implementation(libs.androidx.compose.ui.tooling.preview) +// debugImplementation(libs.androidx.compose.ui.test.manifest) +// debugImplementation(libs.androidx.compose.ui.tooling) + + implementation("com.google.accompanist:accompanist-swiperefresh:0.26.1-alpha") + implementation("com.google.accompanist:accompanist-systemuicontroller:0.26.1-alpha") +// implementation(libs.accompanist.swiperefresh) +// implementation(libs.accompanist.systemuicontroller) implementation(libs.androidx.appcompat) implementation(libs.androidx.activity.ktx) @@ -121,8 +134,8 @@ dependencies { implementation(libs.androidx.navigation.compose) implementation(libs.androidx.window) - - debugImplementation(libs.androidx.compose.ui.test.manifest) + + implementation(libs.google.android.material) androidTestImplementation(libs.junit) androidTestImplementation(libs.androidx.test.core) @@ -134,7 +147,9 @@ dependencies { androidTestImplementation(libs.androidx.compose.ui.test) androidTestImplementation(libs.androidx.compose.ui.test.junit4) // Robolectric dependencies - testImplementation(libs.androidx.compose.ui.test.junit4) + // TODO: Replace when all samples use the same Material3 & Compose version + implementation("androidx.compose.ui:ui-test-junit4:1.3.0-beta01") +// testImplementation(libs.androidx.compose.ui.test.junit4) testImplementation(libs.robolectric) } diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/AppDrawer.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/AppDrawer.kt index 3cdb7f14f..7278bc820 100644 --- a/JetNews/app/src/main/java/com/example/jetnews/ui/AppDrawer.kt +++ b/JetNews/app/src/main/java/com/example/jetnews/ui/AppDrawer.kt @@ -17,38 +17,30 @@ package com.example.jetnews.ui import android.content.res.Configuration.UI_MODE_NIGHT_YES -import androidx.compose.foundation.Image -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width -import androidx.compose.material.Divider -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Surface -import androidx.compose.material.Text -import androidx.compose.material.TextButton import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Home import androidx.compose.material.icons.filled.ListAlt +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.ModalDrawerSheet +import androidx.compose.material3.NavigationDrawerItem +import androidx.compose.material3.NavigationDrawerItemDefaults +import androidx.compose.material3.Text 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.graphics.ColorFilter -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.example.jetnews.R -import com.example.jetnews.ui.components.JetnewsIcon -import com.example.jetnews.ui.components.NavigationIcon import com.example.jetnews.ui.theme.JetnewsTheme +@OptIn(ExperimentalMaterial3Api::class) @Composable fun AppDrawer( currentRoute: String, @@ -57,27 +49,23 @@ fun AppDrawer( closeDrawer: () -> Unit, modifier: Modifier = Modifier ) { - Column(modifier = modifier.fillMaxSize()) { - JetNewsLogo(Modifier.padding(16.dp)) - Divider(color = MaterialTheme.colors.onSurface.copy(alpha = .2f)) - DrawerButton( - icon = Icons.Filled.Home, - label = stringResource(id = R.string.home_title), - isSelected = currentRoute == JetnewsDestinations.HOME_ROUTE, - action = { - navigateToHome() - closeDrawer() - } + ModalDrawerSheet(modifier) { + JetNewsLogo( + modifier = Modifier.padding(horizontal = 28.dp, vertical = 24.dp) ) - - DrawerButton( - icon = Icons.Filled.ListAlt, - label = stringResource(id = R.string.interests_title), - isSelected = currentRoute == JetnewsDestinations.INTERESTS_ROUTE, - action = { - navigateToInterests() - closeDrawer() - } + NavigationDrawerItem( + label = { Text(stringResource(id = R.string.home_title)) }, + icon = { Icon(Icons.Filled.Home, null) }, + selected = currentRoute == JetnewsDestinations.HOME_ROUTE, + onClick = { navigateToHome(); closeDrawer() }, + modifier = Modifier.padding(NavigationDrawerItemDefaults.ItemPadding) + ) + NavigationDrawerItem( + label = { Text(stringResource(id = R.string.interests_title)) }, + icon = { Icon(Icons.Filled.ListAlt, null) }, + selected = currentRoute == JetnewsDestinations.INTERESTS_ROUTE, + onClick = { navigateToInterests(); closeDrawer() }, + modifier = Modifier.padding(NavigationDrawerItemDefaults.ItemPadding) ) } } @@ -85,82 +73,30 @@ fun AppDrawer( @Composable private fun JetNewsLogo(modifier: Modifier = Modifier) { Row(modifier = modifier) { - JetnewsIcon() + Icon( + painterResource(R.drawable.ic_jetnews_logo), + contentDescription = null, + tint = MaterialTheme.colorScheme.primary + ) Spacer(Modifier.width(8.dp)) - Image( + Icon( painter = painterResource(R.drawable.ic_jetnews_wordmark), contentDescription = stringResource(R.string.app_name), - colorFilter = ColorFilter.tint(MaterialTheme.colors.onSurface) + tint = MaterialTheme.colorScheme.onSurfaceVariant ) } } -@Composable -private fun DrawerButton( - icon: ImageVector, - label: String, - isSelected: Boolean, - action: () -> Unit, - modifier: Modifier = Modifier -) { - val colors = MaterialTheme.colors - val textIconColor = if (isSelected) { - colors.primary - } else { - colors.onSurface.copy(alpha = 0.6f) - } - val backgroundColor = if (isSelected) { - colors.primary.copy(alpha = 0.12f) - } else { - Color.Transparent - } - - val surfaceModifier = modifier - .padding(start = 8.dp, top = 8.dp, end = 8.dp) - .fillMaxWidth() - Surface( - modifier = surfaceModifier, - color = backgroundColor, - shape = MaterialTheme.shapes.small - ) { - TextButton( - onClick = action, - modifier = Modifier.fillMaxWidth() - ) { - Row( - horizontalArrangement = Arrangement.Start, - verticalAlignment = Alignment.CenterVertically, - modifier = Modifier.fillMaxWidth() - ) { - NavigationIcon( - icon = icon, - isSelected = isSelected, - contentDescription = null, // decorative - tintColor = textIconColor - ) - Spacer(Modifier.width(16.dp)) - Text( - text = label, - style = MaterialTheme.typography.body2, - color = textIconColor - ) - } - } - } -} - @Preview("Drawer contents") @Preview("Drawer contents (dark)", uiMode = UI_MODE_NIGHT_YES) @Composable fun PreviewAppDrawer() { JetnewsTheme { - Surface { - AppDrawer( - currentRoute = JetnewsDestinations.HOME_ROUTE, - navigateToHome = {}, - navigateToInterests = {}, - closeDrawer = { } - ) - } + AppDrawer( + currentRoute = JetnewsDestinations.HOME_ROUTE, + navigateToHome = {}, + navigateToInterests = {}, + closeDrawer = { } + ) } } diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/JetnewsApp.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/JetnewsApp.kt index a427e37a1..192347d48 100644 --- a/JetNews/app/src/main/java/com/example/jetnews/ui/JetnewsApp.kt +++ b/JetNews/app/src/main/java/com/example/jetnews/ui/JetnewsApp.kt @@ -21,26 +21,18 @@ import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.WindowInsetsSides import androidx.compose.foundation.layout.add import androidx.compose.foundation.layout.asPaddingValues -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.navigationBars -import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.only -import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.layout.systemBars -import androidx.compose.foundation.layout.windowInsetsPadding -import androidx.compose.material.DrawerState -import androidx.compose.material.DrawerValue -import androidx.compose.material.MaterialTheme -import androidx.compose.material.ModalDrawer -import androidx.compose.material.rememberDrawerState +import androidx.compose.material3.DrawerState +import androidx.compose.material3.DrawerValue +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.ModalNavigationDrawer +import androidx.compose.material3.rememberDrawerState import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass import androidx.compose.runtime.Composable -import androidx.compose.runtime.SideEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.navigation.compose.currentBackStackEntryAsState @@ -48,21 +40,15 @@ import androidx.navigation.compose.rememberNavController import com.example.jetnews.data.AppContainer import com.example.jetnews.ui.components.AppNavRail import com.example.jetnews.ui.theme.JetnewsTheme -import com.google.accompanist.systemuicontroller.rememberSystemUiController import kotlinx.coroutines.launch +@OptIn(ExperimentalMaterial3Api::class) @Composable fun JetnewsApp( appContainer: AppContainer, widthSizeClass: WindowWidthSizeClass ) { JetnewsTheme { - val systemUiController = rememberSystemUiController() - val darkIcons = MaterialTheme.colors.isLight - SideEffect { - systemUiController.setSystemBarsColor(Color.Transparent, darkIcons = darkIcons) - } - val navController = rememberNavController() val navigationActions = remember(navController) { JetnewsNavigationActions(navController) @@ -77,32 +63,20 @@ fun JetnewsApp( val isExpandedScreen = widthSizeClass == WindowWidthSizeClass.Expanded val sizeAwareDrawerState = rememberSizeAwareDrawerState(isExpandedScreen) - ModalDrawer( + ModalNavigationDrawer( drawerContent = { AppDrawer( currentRoute = currentRoute, navigateToHome = navigationActions.navigateToHome, navigateToInterests = navigationActions.navigateToInterests, - closeDrawer = { coroutineScope.launch { sizeAwareDrawerState.close() } }, - modifier = Modifier - .statusBarsPadding() - .navigationBarsPadding() + closeDrawer = { coroutineScope.launch { sizeAwareDrawerState.close() } } ) }, drawerState = sizeAwareDrawerState, // Only enable opening the drawer via gestures if the screen is not expanded gesturesEnabled = !isExpandedScreen ) { - Row( - Modifier - .fillMaxSize() - .statusBarsPadding() - .windowInsetsPadding( - WindowInsets - .navigationBars - .only(WindowInsetsSides.Horizontal + WindowInsetsSides.Top) - ) - ) { + Row { if (isExpandedScreen) { AppNavRail( currentRoute = currentRoute, @@ -124,6 +98,7 @@ fun JetnewsApp( /** * Determine the drawer state to pass to the modal drawer. */ +@OptIn(ExperimentalMaterial3Api::class) @Composable private fun rememberSizeAwareDrawerState(isExpandedScreen: Boolean): DrawerState { val drawerState = rememberDrawerState(DrawerValue.Closed) @@ -144,8 +119,11 @@ private fun rememberSizeAwareDrawerState(isExpandedScreen: Boolean): DrawerState * Determine the content padding to apply to the different screens of the app */ @Composable -fun rememberContentPaddingForScreen(additionalTop: Dp = 0.dp) = +fun rememberContentPaddingForScreen( + additionalTop: Dp = 0.dp, + excludeTop: Boolean = false +) = WindowInsets.systemBars - .only(WindowInsetsSides.Bottom) + .only(if (excludeTop) WindowInsetsSides.Bottom else WindowInsetsSides.Vertical) .add(WindowInsets(top = additionalTop)) .asPaddingValues() diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/MainActivity.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/MainActivity.kt index 5350e096f..3b925d6de 100644 --- a/JetNews/app/src/main/java/com/example/jetnews/ui/MainActivity.kt +++ b/JetNews/app/src/main/java/com/example/jetnews/ui/MainActivity.kt @@ -17,14 +17,14 @@ package com.example.jetnews.ui import android.os.Bundle +import androidx.activity.ComponentActivity import androidx.activity.compose.setContent -import androidx.appcompat.app.AppCompatActivity import androidx.compose.material3.windowsizeclass.ExperimentalMaterial3WindowSizeClassApi import androidx.compose.material3.windowsizeclass.calculateWindowSizeClass import androidx.core.view.WindowCompat import com.example.jetnews.JetnewsApplication -class MainActivity : AppCompatActivity() { +class MainActivity : ComponentActivity() { @OptIn(ExperimentalMaterial3WindowSizeClassApi::class) override fun onCreate(savedInstanceState: Bundle?) { diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/article/ArticleScreen.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/article/ArticleScreen.kt index 365f5c2fe..8cf9cdba7 100644 --- a/JetNews/app/src/main/java/com/example/jetnews/ui/article/ArticleScreen.kt +++ b/JetNews/app/src/main/java/com/example/jetnews/ui/article/ArticleScreen.kt @@ -21,41 +21,35 @@ import android.content.Intent import android.content.res.Configuration.UI_MODE_NIGHT_YES import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.WindowInsets -import androidx.compose.foundation.layout.WindowInsetsSides import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.navigationBars -import androidx.compose.foundation.layout.only import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.windowInsetsPadding -import androidx.compose.foundation.layout.wrapContentWidth import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.AlertDialog -import androidx.compose.material.Icon -import androidx.compose.material.IconButton -import androidx.compose.material.LocalContentColor -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Scaffold -import androidx.compose.material.Surface -import androidx.compose.material.Text -import androidx.compose.material.TextButton -import androidx.compose.material.TopAppBar import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.material3.AlertDialog +import androidx.compose.material3.BottomAppBar +import androidx.compose.material3.CenterAlignedTopAppBar +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.material3.TopAppBarScrollBehavior +import androidx.compose.material3.rememberTopAppBarState import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip +import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource @@ -72,7 +66,6 @@ import com.example.jetnews.ui.utils.BookmarkButton import com.example.jetnews.ui.utils.FavoriteButton import com.example.jetnews.ui.utils.ShareButton import com.example.jetnews.ui.utils.TextSettingsButton -import com.example.jetnews.utils.isScrolled import kotlinx.coroutines.runBlocking /** @@ -85,6 +78,7 @@ import kotlinx.coroutines.runBlocking * @param onToggleFavorite (event) request that this post toggle it's favorite state * @param lazyListState (state) the [LazyListState] for the article content */ +@OptIn(ExperimentalMaterial3Api::class) @Composable fun ArticleScreen( post: Post, @@ -105,31 +99,29 @@ fun ArticleScreen( ArticleScreenContent( post = post, // Allow opening the Drawer if the screen is not expanded - navigationIconContent = if (!isExpandedScreen) { - { + navigationIconContent = { + if (!isExpandedScreen) { IconButton(onClick = onBack) { Icon( imageVector = Icons.Filled.ArrowBack, contentDescription = stringResource(R.string.cd_navigate_up), - tint = MaterialTheme.colors.primary + tint = MaterialTheme.colorScheme.primary ) } } - } else { - null }, // Show the bottom bar if the screen is not expanded - bottomBarContent = if (!isExpandedScreen) { - { - BottomBar( - onUnimplementedAction = { showUnimplementedActionDialog = true }, - isFavorite = isFavorite, - onToggleFavorite = onToggleFavorite, - onSharePost = { sharePost(post, context) }, + bottomBarContent = { + if (!isExpandedScreen) { + BottomAppBar( + actions = { + FavoriteButton(onClick = { showUnimplementedActionDialog = true }) + BookmarkButton(isBookmarked = isFavorite, onClick = onToggleFavorite) + ShareButton(onClick = { sharePost(post, context) }) + TextSettingsButton(onClick = { showUnimplementedActionDialog = true }) + } ) } - } else { - { } }, lazyListState = lazyListState ) @@ -143,42 +135,22 @@ fun ArticleScreen( * @param navigationIconContent (UI) content to show for the navigation icon * @param bottomBarContent (UI) content to show for the bottom bar */ +@ExperimentalMaterial3Api @Composable private fun ArticleScreenContent( post: Post, - navigationIconContent: @Composable (() -> Unit)? = null, + navigationIconContent: @Composable () -> Unit = { }, bottomBarContent: @Composable () -> Unit = { }, lazyListState: LazyListState = rememberLazyListState() ) { + val topAppBarState = rememberTopAppBarState() + val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior(topAppBarState) Scaffold( topBar = { TopAppBar( - title = { - Row( - modifier = Modifier - .fillMaxWidth() - .wrapContentWidth(align = Alignment.CenterHorizontally) - ) { - Image( - painter = painterResource(id = R.drawable.icon_article_background), - contentDescription = null, - modifier = Modifier - .clip(CircleShape) - .size(36.dp) - ) - Text( - text = stringResource(id = R.string.published_in, post.publication?.name ?: ""), - style = MaterialTheme.typography.subtitle2, - color = LocalContentColor.current, - modifier = Modifier - .padding(start = 10.dp) - .weight(1.5f) - ) - } - }, - navigationIcon = navigationIconContent, - elevation = if (!lazyListState.isScrolled) 0.dp else 4.dp, - backgroundColor = MaterialTheme.colors.surface + title = post.publication?.name.orEmpty(), + navigationIconContent = navigationIconContent, + scrollBehavior = scrollBehavior ) }, bottomBar = bottomBarContent @@ -186,6 +158,7 @@ private fun ArticleScreenContent( PostContent( post = post, modifier = Modifier + .nestedScroll(scrollBehavior.nestedScrollConnection) // innerPadding takes into account the top and bottom bar .padding(innerPadding), state = lazyListState, @@ -193,37 +166,35 @@ private fun ArticleScreenContent( } } -/** - * Bottom bar for Article screen - * - * @param onUnimplementedAction (event) called when the user performs an unimplemented action - * @param isFavorite (state) if this post is currently a favorite - * @param onToggleFavorite (event) request this post toggle it's favorite status - * @param onSharePost (event) request this post to be shared - */ +@OptIn(ExperimentalMaterial3Api::class) @Composable -private fun BottomBar( - onUnimplementedAction: () -> Unit, - isFavorite: Boolean, - onToggleFavorite: () -> Unit, - onSharePost: () -> Unit, +private fun TopAppBar( + title: String, + navigationIconContent: @Composable () -> Unit, + scrollBehavior: TopAppBarScrollBehavior?, modifier: Modifier = Modifier ) { - Surface(elevation = 8.dp, modifier = modifier) { - Row( - verticalAlignment = Alignment.CenterVertically, - modifier = Modifier - .windowInsetsPadding(WindowInsets.navigationBars.only(WindowInsetsSides.Vertical)) - .height(56.dp) - .fillMaxWidth() - ) { - FavoriteButton(onClick = onUnimplementedAction) - BookmarkButton(isBookmarked = isFavorite, onClick = onToggleFavorite) - ShareButton(onClick = onSharePost) - Spacer(modifier = Modifier.weight(1f)) - TextSettingsButton(onClick = onUnimplementedAction) - } - } + CenterAlignedTopAppBar( + title = { + Row { + Image( + painter = painterResource(id = R.drawable.icon_article_background), + contentDescription = null, + modifier = Modifier + .clip(CircleShape) + .size(36.dp) + ) + Text( + text = stringResource(R.string.published_in, title), + style = MaterialTheme.typography.labelLarge, + modifier = Modifier.padding(start = 8.dp) + ) + } + }, + navigationIcon = navigationIconContent, + scrollBehavior = scrollBehavior, + modifier = modifier + ) } /** @@ -238,7 +209,7 @@ private fun FunctionalityNotAvailablePopup(onDismiss: () -> Unit) { text = { Text( text = stringResource(id = R.string.article_functionality_not_available), - style = MaterialTheme.typography.body2 + style = MaterialTheme.typography.bodyLarge ) }, confirmButton = { @@ -261,7 +232,12 @@ fun sharePost(post: Post, context: Context) { putExtra(Intent.EXTRA_TITLE, post.title) putExtra(Intent.EXTRA_TEXT, post.url) } - context.startActivity(Intent.createChooser(intent, context.getString(R.string.article_share_post))) + context.startActivity( + Intent.createChooser( + intent, + context.getString(R.string.article_share_post) + ) + ) } @Preview("Article screen") diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/article/PostContent.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/article/PostContent.kt index fe32a0252..b180cc144 100644 --- a/JetNews/app/src/main/java/com/example/jetnews/ui/article/PostContent.kt +++ b/JetNews/app/src/main/java/com/example/jetnews/ui/article/PostContent.kt @@ -21,6 +21,7 @@ import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth @@ -35,18 +36,15 @@ import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.Colors -import androidx.compose.material.ContentAlpha -import androidx.compose.material.LocalContentAlpha -import androidx.compose.material.LocalContentColor -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Surface -import androidx.compose.material.Text -import androidx.compose.material.Typography import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.AccountCircle +import androidx.compose.material3.ColorScheme +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.material3.Typography import androidx.compose.runtime.Composable -import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color @@ -89,7 +87,8 @@ fun PostContent( state: LazyListState = rememberLazyListState() ) { LazyColumn( - modifier = modifier.padding(horizontal = defaultSpacerSize), + contentPadding = PaddingValues(defaultSpacerSize), + modifier = modifier, state = state, ) { postContentItems(post) @@ -98,35 +97,17 @@ fun PostContent( fun LazyListScope.postContentItems(post: Post) { item { - Spacer(Modifier.height(defaultSpacerSize)) PostHeaderImage(post) - } - item { - Text(text = post.title, style = MaterialTheme.typography.h4) + Spacer(Modifier.height(defaultSpacerSize)) + Text(post.title, style = MaterialTheme.typography.headlineLarge) Spacer(Modifier.height(8.dp)) - } - post.subtitle?.let { subtitle -> - item { - CompositionLocalProvider(LocalContentAlpha provides ContentAlpha.medium) { - Text( - text = subtitle, - style = MaterialTheme.typography.body2, - lineHeight = 20.sp - ) - } + if (post.subtitle != null) { + Text(post.subtitle, style = MaterialTheme.typography.bodyMedium) Spacer(Modifier.height(defaultSpacerSize)) } } - item { - PostMetadata(post.metadata) - Spacer(Modifier.height(24.dp)) - } - items(post.paragraphs) { - Paragraph(paragraph = it) - } - item { - Spacer(Modifier.height(48.dp)) - } + item { PostMetadata(post.metadata, Modifier.padding(bottom = 24.dp)) } + items(post.paragraphs) { Paragraph(paragraph = it) } } @Composable @@ -141,15 +122,16 @@ private fun PostHeaderImage(post: Post) { modifier = imageModifier, contentScale = ContentScale.Crop ) - Spacer(Modifier.height(defaultSpacerSize)) } @Composable -private fun PostMetadata(metadata: Metadata) { - val typography = MaterialTheme.typography +private fun PostMetadata( + metadata: Metadata, + modifier: Modifier = Modifier +) { Row( // Merge semantics so accessibility services consider this row a single element - modifier = Modifier.semantics(mergeDescendants = true) {} + modifier = modifier.semantics(mergeDescendants = true) {} ) { Image( imageVector = Icons.Filled.AccountCircle, @@ -162,22 +144,20 @@ private fun PostMetadata(metadata: Metadata) { Column { Text( text = metadata.author.name, - style = typography.caption, + style = MaterialTheme.typography.labelLarge, modifier = Modifier.padding(top = 4.dp) ) - CompositionLocalProvider(LocalContentAlpha provides ContentAlpha.medium) { - Text( - text = stringResource( - id = R.string.article_post_min_read, - formatArgs = arrayOf( - metadata.date, - metadata.readTimeMinutes - ) - ), - style = typography.caption - ) - } + Text( + text = stringResource( + id = R.string.article_post_min_read, + formatArgs = arrayOf( + metadata.date, + metadata.readTimeMinutes + ) + ), + style = MaterialTheme.typography.bodySmall + ) } } } @@ -189,7 +169,7 @@ private fun Paragraph(paragraph: Paragraph) { val annotatedString = paragraphToAnnotatedString( paragraph, MaterialTheme.typography, - MaterialTheme.colors.codeBlockBackground + MaterialTheme.colorScheme.codeBlockBackground ) Box(modifier = Modifier.padding(bottom = trailingPadding)) { when (paragraph.type) { @@ -226,7 +206,7 @@ private fun CodeBlockParagraph( paragraphStyle: ParagraphStyle ) { Surface( - color = MaterialTheme.colors.codeBlockBackground, + color = MaterialTheme.colorScheme.codeBlockBackground, shape = MaterialTheme.shapes.small, modifier = Modifier.fillMaxWidth() ) { @@ -276,29 +256,28 @@ private data class ParagraphStyling( @Composable private fun ParagraphType.getTextAndParagraphStyle(): ParagraphStyling { val typography = MaterialTheme.typography - var textStyle: TextStyle = typography.body1 + var textStyle: TextStyle = typography.bodyLarge var paragraphStyle = ParagraphStyle() var trailingPadding = 24.dp when (this) { - ParagraphType.Caption -> textStyle = typography.body1 - ParagraphType.Title -> textStyle = typography.h4 + ParagraphType.Caption -> textStyle = typography.labelMedium + ParagraphType.Title -> textStyle = typography.headlineLarge ParagraphType.Subhead -> { - textStyle = typography.h6 + textStyle = typography.headlineSmall trailingPadding = 16.dp } ParagraphType.Text -> { - textStyle = typography.body1.copy(lineHeight = 28.sp) - paragraphStyle = paragraphStyle.copy(lineHeight = 28.sp) + textStyle = typography.bodyLarge.copy(lineHeight = 28.sp) } ParagraphType.Header -> { - textStyle = typography.h5 + textStyle = typography.headlineMedium trailingPadding = 16.dp } - ParagraphType.CodeBlock -> textStyle = typography.body1.copy( + ParagraphType.CodeBlock -> textStyle = typography.bodyLarge.copy( fontFamily = FontFamily.Monospace ) - ParagraphType.Quote -> textStyle = typography.body1 + ParagraphType.Quote -> textStyle = typography.bodyLarge ParagraphType.Bullet -> { paragraphStyle = ParagraphStyle(textIndent = TextIndent(firstLine = 8.sp)) } @@ -327,28 +306,28 @@ fun Markup.toAnnotatedStringItem( return when (this.type) { MarkupType.Italic -> { AnnotatedString.Range( - typography.body1.copy(fontStyle = FontStyle.Italic).toSpanStyle(), + typography.bodyLarge.copy(fontStyle = FontStyle.Italic).toSpanStyle(), start, end ) } MarkupType.Link -> { AnnotatedString.Range( - typography.body1.copy(textDecoration = TextDecoration.Underline).toSpanStyle(), + typography.bodyLarge.copy(textDecoration = TextDecoration.Underline).toSpanStyle(), start, end ) } MarkupType.Bold -> { AnnotatedString.Range( - typography.body1.copy(fontWeight = FontWeight.Bold).toSpanStyle(), + typography.bodyLarge.copy(fontWeight = FontWeight.Bold).toSpanStyle(), start, end ) } MarkupType.Code -> { AnnotatedString.Range( - typography.body1 + typography.bodyLarge .copy( background = codeBlockBackground, fontFamily = FontFamily.Monospace @@ -360,7 +339,7 @@ fun Markup.toAnnotatedStringItem( } } -private val Colors.codeBlockBackground: Color +private val ColorScheme.codeBlockBackground: Color get() = onSurface.copy(alpha = .15f) @Preview("Post content") diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/components/AppNavRail.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/components/AppNavRail.kt index 3add81350..43bf5640d 100644 --- a/JetNews/app/src/main/java/com/example/jetnews/ui/components/AppNavRail.kt +++ b/JetNews/app/src/main/java/com/example/jetnews/ui/components/AppNavRail.kt @@ -17,28 +17,19 @@ package com.example.jetnews.ui.components import android.content.res.Configuration -import androidx.compose.animation.animateColorAsState -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.fillMaxHeight -import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size -import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.ExperimentalMaterialApi -import androidx.compose.material.MaterialTheme -import androidx.compose.material.NavigationRail -import androidx.compose.material.Surface import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Home import androidx.compose.material.icons.filled.ListAlt +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.NavigationRail +import androidx.compose.material3.NavigationRailItem +import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -46,28 +37,6 @@ import com.example.jetnews.R import com.example.jetnews.ui.JetnewsDestinations import com.example.jetnews.ui.theme.JetnewsTheme -@Composable -fun JetnewsNavRail( - modifier: Modifier = Modifier, - header: @Composable (ColumnScope.() -> Unit)? = null, - content: @Composable ColumnScope.() -> Unit -) { - NavigationRail( - modifier = modifier, - elevation = 0.dp, - header = header - ) { - Column( - modifier = Modifier - .fillMaxHeight() - .padding(horizontal = 16.dp), - verticalArrangement = Arrangement.Center - ) { - content() - } - } -} - @Composable fun AppNavRail( currentRoute: String, @@ -75,58 +44,33 @@ fun AppNavRail( navigateToInterests: () -> Unit, modifier: Modifier = Modifier ) { - JetnewsNavRail( + NavigationRail( header = { - JetnewsIcon(Modifier.padding(top = 8.dp)) + Icon( + painterResource(R.drawable.ic_jetnews_logo), + null, + Modifier.padding(vertical = 12.dp), + tint = MaterialTheme.colorScheme.primary + ) }, modifier = modifier ) { - NavRailIcon( - icon = Icons.Filled.Home, - contentDescription = stringResource(id = R.string.cd_navigate_home), - isSelected = currentRoute == JetnewsDestinations.HOME_ROUTE, - action = navigateToHome + Spacer(Modifier.weight(1f)) + NavigationRailItem( + selected = currentRoute == JetnewsDestinations.HOME_ROUTE, + onClick = navigateToHome, + icon = { Icon(Icons.Filled.Home, stringResource(R.string.home_title)) }, + label = { Text(stringResource(R.string.home_title)) }, + alwaysShowLabel = false ) - Spacer(modifier = Modifier.height(16.dp)) - NavRailIcon( - icon = Icons.Filled.ListAlt, - contentDescription = stringResource(id = R.string.cd_navigate_interests), - isSelected = currentRoute == JetnewsDestinations.INTERESTS_ROUTE, - action = navigateToInterests - ) - } -} - -@OptIn(ExperimentalMaterialApi::class) -@Composable -private fun NavRailIcon( - icon: ImageVector, - contentDescription: String, - isSelected: Boolean, - action: () -> Unit, - modifier: Modifier = Modifier, -) { - val backgroundColor by animateColorAsState( - if (isSelected) { - MaterialTheme.colors.primary.copy(alpha = 0.12f) - } else { - Color.Transparent - } - ) - - Surface( - selected = isSelected, - color = backgroundColor, - onClick = action, - shape = CircleShape, - modifier = modifier.size(48.dp) - ) { - NavigationIcon( - icon = icon, - isSelected = isSelected, - contentDescription = contentDescription, - modifier = Modifier.size(32.dp) + NavigationRailItem( + selected = currentRoute == JetnewsDestinations.INTERESTS_ROUTE, + onClick = navigateToInterests, + icon = { Icon(Icons.Filled.ListAlt, stringResource(R.string.interests_title)) }, + label = { Text(stringResource(R.string.interests_title)) }, + alwaysShowLabel = false ) + Spacer(Modifier.weight(1f)) } } diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/components/JetnewsSnackbarHost.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/components/JetnewsSnackbarHost.kt index 8b09f0ee3..1f46ec451 100644 --- a/JetNews/app/src/main/java/com/example/jetnews/ui/components/JetnewsSnackbarHost.kt +++ b/JetNews/app/src/main/java/com/example/jetnews/ui/components/JetnewsSnackbarHost.kt @@ -19,10 +19,10 @@ package com.example.jetnews.ui.components import androidx.compose.foundation.layout.systemBarsPadding import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.layout.wrapContentWidth -import androidx.compose.material.Snackbar -import androidx.compose.material.SnackbarData -import androidx.compose.material.SnackbarHost -import androidx.compose.material.SnackbarHostState +import androidx.compose.material3.Snackbar +import androidx.compose.material3.SnackbarData +import androidx.compose.material3.SnackbarHost +import androidx.compose.material3.SnackbarHostState import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/components/NavigationButtons.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/components/NavigationButtons.kt deleted file mode 100644 index fe26009cb..000000000 --- a/JetNews/app/src/main/java/com/example/jetnews/ui/components/NavigationButtons.kt +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2021 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.example.jetnews.ui.components - -import android.content.res.Configuration -import androidx.compose.foundation.Image -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Surface -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Home -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.ColorFilter -import androidx.compose.ui.graphics.vector.ImageVector -import androidx.compose.ui.layout.ContentScale -import androidx.compose.ui.res.painterResource -import androidx.compose.ui.tooling.preview.Preview -import com.example.jetnews.R -import com.example.jetnews.ui.theme.JetnewsTheme - -@Composable -fun JetnewsIcon(modifier: Modifier = Modifier) { - Image( - painter = painterResource(R.drawable.ic_jetnews_logo), - contentDescription = null, // decorative - colorFilter = ColorFilter.tint(MaterialTheme.colors.primary), - modifier = modifier - ) -} - -@Composable -fun NavigationIcon( - icon: ImageVector, - isSelected: Boolean, - modifier: Modifier = Modifier, - contentDescription: String? = null, - tintColor: Color? = null, -) { - val imageAlpha = if (isSelected) { - 1f - } else { - 0.6f - } - - val iconTintColor = tintColor ?: if (isSelected) { - MaterialTheme.colors.primary - } else { - MaterialTheme.colors.onSurface.copy(alpha = 0.6f) - } - - Image( - modifier = modifier, - imageVector = icon, - contentDescription = contentDescription, - contentScale = ContentScale.Inside, - colorFilter = ColorFilter.tint(iconTintColor), - alpha = imageAlpha - ) -} - -@Preview("Jetnews icon") -@Preview("Jetnews icon (dark)", uiMode = Configuration.UI_MODE_NIGHT_YES) -@Composable -fun PreviewJetnewsIcon() { - JetnewsTheme { - Surface { - JetnewsIcon() - } - } -} - -@Preview("Navigation icon") -@Preview("Navigation (dark)", uiMode = Configuration.UI_MODE_NIGHT_YES) -@Composable -fun PreviewNavigationIcon() { - JetnewsTheme { - Surface { - NavigationIcon(icon = Icons.Filled.Home, isSelected = true) - } - } -} diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/home/HomeRoute.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/home/HomeRoute.kt index 76148df65..188eee565 100644 --- a/JetNews/app/src/main/java/com/example/jetnews/ui/home/HomeRoute.kt +++ b/JetNews/app/src/main/java/com/example/jetnews/ui/home/HomeRoute.kt @@ -18,14 +18,13 @@ package com.example.jetnews.ui.home import androidx.activity.compose.BackHandler import androidx.compose.foundation.lazy.rememberLazyListState -import androidx.compose.material.ExperimentalMaterialApi -import androidx.compose.material.Scaffold -import androidx.compose.material.ScaffoldState -import androidx.compose.material.rememberScaffoldState +import androidx.compose.material3.Scaffold +import androidx.compose.material3.SnackbarHostState import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.key +import androidx.compose.runtime.remember import com.example.jetnews.ui.article.ArticleScreen /** @@ -36,14 +35,14 @@ import com.example.jetnews.ui.article.ArticleScreen * @param homeViewModel ViewModel that handles the business logic of this screen * @param isExpandedScreen (state) whether the screen is expanded * @param openDrawer (event) request opening the app drawer - * @param scaffoldState (state) state for the [Scaffold] component on this screen + * @param snackbarHostState (state) state for the [Scaffold] component on this screen */ @Composable fun HomeRoute( homeViewModel: HomeViewModel, isExpandedScreen: Boolean, openDrawer: () -> Unit, - scaffoldState: ScaffoldState = rememberScaffoldState() + snackbarHostState: SnackbarHostState = remember { SnackbarHostState() } ) { // UiState of the HomeScreen val uiState by homeViewModel.uiState.collectAsState() @@ -59,7 +58,7 @@ fun HomeRoute( onInteractWithArticleDetails = { homeViewModel.interactedWithArticleDetails(it) }, onSearchInputChanged = { homeViewModel.onSearchInputChanged(it) }, openDrawer = openDrawer, - scaffoldState = scaffoldState, + snackbarHostState = snackbarHostState, ) } @@ -78,9 +77,8 @@ fun HomeRoute( * @param onInteractWithArticleDetails (event) indicate that the article details were interacted * with * @param openDrawer (event) request opening the app drawer - * @param scaffoldState (state) state for the [Scaffold] component on this screen +// * @param snackbarHostState (state) state for the [Scaffold] component on this screen */ -@OptIn(ExperimentalMaterialApi::class) @Composable fun HomeRoute( uiState: HomeUiState, @@ -93,7 +91,7 @@ fun HomeRoute( onInteractWithArticleDetails: (String) -> Unit, onSearchInputChanged: (String) -> Unit, openDrawer: () -> Unit, - scaffoldState: ScaffoldState + snackbarHostState: SnackbarHostState ) { // Construct the lazy list states for the list and the details outside of deciding which one to // show. This allows the associated state to survive beyond that decision, and therefore @@ -123,7 +121,7 @@ fun HomeRoute( openDrawer = openDrawer, homeListLazyListState = homeListLazyListState, articleDetailLazyListStates = articleDetailLazyListStates, - scaffoldState = scaffoldState, + snackbarHostState = snackbarHostState, onSearchInputChanged = onSearchInputChanged, ) } @@ -137,7 +135,7 @@ fun HomeRoute( onErrorDismiss = onErrorDismiss, openDrawer = openDrawer, homeListLazyListState = homeListLazyListState, - scaffoldState = scaffoldState, + snackbarHostState = snackbarHostState, onSearchInputChanged = onSearchInputChanged, ) } diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/home/HomeScreens.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/home/HomeScreens.kt index acf4f6a1b..f5f9e37ac 100644 --- a/JetNews/app/src/main/java/com/example/jetnews/ui/home/HomeScreens.kt +++ b/JetNews/app/src/main/java/com/example/jetnews/ui/home/HomeScreens.kt @@ -22,7 +22,9 @@ import android.widget.Toast import androidx.compose.animation.Crossfade import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.Image import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues @@ -30,7 +32,7 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.imePadding +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.wrapContentSize @@ -43,28 +45,27 @@ import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.material.CircularProgressIndicator -import androidx.compose.material.ContentAlpha -import androidx.compose.material.Divider -import androidx.compose.material.Icon -import androidx.compose.material.IconButton -import androidx.compose.material.LocalContentAlpha -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Scaffold -import androidx.compose.material.ScaffoldState -import androidx.compose.material.SnackbarResult -import androidx.compose.material.Surface -import androidx.compose.material.Text -import androidx.compose.material.TextButton -import androidx.compose.material.TextField -import androidx.compose.material.TextFieldDefaults -import androidx.compose.material.TopAppBar import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.MoreVert import androidx.compose.material.icons.filled.Search -import androidx.compose.material.rememberScaffoldState +import androidx.compose.material3.CenterAlignedTopAppBar +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.Divider +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.OutlinedTextField +import androidx.compose.material3.Scaffold +import androidx.compose.material3.SnackbarHostState +import androidx.compose.material3.SnackbarResult +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.material3.TopAppBarScrollBehavior +import androidx.compose.material3.TopAppBarState +import androidx.compose.material3.rememberTopAppBarState import androidx.compose.runtime.Composable -import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue @@ -75,10 +76,12 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.composed -import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.input.key.Key +import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.input.pointer.PointerEventPass import androidx.compose.ui.input.pointer.pointerInput +import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.platform.LocalSoftwareKeyboardController @@ -105,7 +108,6 @@ import com.example.jetnews.ui.utils.BookmarkButton import com.example.jetnews.ui.utils.FavoriteButton import com.example.jetnews.ui.utils.ShareButton import com.example.jetnews.ui.utils.TextSettingsButton -import com.example.jetnews.utils.isScrolled import com.google.accompanist.swiperefresh.SwipeRefresh import com.google.accompanist.swiperefresh.rememberSwipeRefreshState import kotlinx.coroutines.currentCoroutineContext @@ -129,7 +131,7 @@ fun HomeFeedWithArticleDetailsScreen( openDrawer: () -> Unit, homeListLazyListState: LazyListState, articleDetailLazyListStates: Map, - scaffoldState: ScaffoldState, + snackbarHostState: SnackbarHostState, modifier: Modifier = Modifier, onSearchInputChanged: (String) -> Unit, ) { @@ -139,11 +141,13 @@ fun HomeFeedWithArticleDetailsScreen( onRefreshPosts = onRefreshPosts, onErrorDismiss = onErrorDismiss, openDrawer = openDrawer, - homeListLazyListState = homeListLazyListState, - scaffoldState = scaffoldState, + snackbarHostState = snackbarHostState, modifier = modifier, ) { hasPostsUiState, contentModifier -> - val contentPadding = rememberContentPaddingForScreen(additionalTop = 8.dp) + val contentPadding = rememberContentPaddingForScreen( + additionalTop = if (showTopAppBar) 0.dp else 8.dp, + excludeTop = showTopAppBar + ) Row(contentModifier) { PostList( postsFeed = hasPostsUiState.postsFeed, @@ -154,8 +158,7 @@ fun HomeFeedWithArticleDetailsScreen( contentPadding = contentPadding, modifier = Modifier .width(334.dp) - .notifyInput(onInteractWithList) - .imePadding(), // add padding for the on-screen keyboard + .notifyInput(onInteractWithList), state = homeListLazyListState, searchInput = hasPostsUiState.searchInput, onSearchInputChanged = onSearchInputChanged, @@ -180,7 +183,6 @@ fun HomeFeedWithArticleDetailsScreen( .notifyInput { onInteractWithDetail(detailPost.id) } - .imePadding() // add padding for the on-screen keyboard ) { stickyHeader { val context = LocalContext.current @@ -230,7 +232,7 @@ fun HomeFeedScreen( onErrorDismiss: (Long) -> Unit, openDrawer: () -> Unit, homeListLazyListState: LazyListState, - scaffoldState: ScaffoldState, + snackbarHostState: SnackbarHostState, modifier: Modifier = Modifier, searchInput: String = "", onSearchInputChanged: (String) -> Unit, @@ -241,8 +243,7 @@ fun HomeFeedScreen( onRefreshPosts = onRefreshPosts, onErrorDismiss = onErrorDismiss, openDrawer = openDrawer, - homeListLazyListState = homeListLazyListState, - scaffoldState = scaffoldState, + snackbarHostState = snackbarHostState, modifier = modifier ) { hasPostsUiState, contentModifier -> PostList( @@ -252,7 +253,8 @@ fun HomeFeedScreen( onArticleTapped = onSelectPost, onToggleFavorite = onToggleFavorite, contentPadding = rememberContentPaddingForScreen( - additionalTop = if (showTopAppBar) 0.dp else 8.dp + additionalTop = if (showTopAppBar) 0.dp else 8.dp, + excludeTop = showTopAppBar ), modifier = contentModifier, state = homeListLazyListState, @@ -271,6 +273,7 @@ fun HomeFeedScreen( * This helper functions exists because [HomeFeedWithArticleDetailsScreen] and [HomeFeedScreen] are * extremely similar, except for the rendered content when there are posts to display. */ +@OptIn(ExperimentalMaterial3Api::class) @Composable private fun HomeScreenWithList( uiState: HomeUiState, @@ -278,28 +281,30 @@ private fun HomeScreenWithList( onRefreshPosts: () -> Unit, onErrorDismiss: (Long) -> Unit, openDrawer: () -> Unit, - homeListLazyListState: LazyListState, - scaffoldState: ScaffoldState, + snackbarHostState: SnackbarHostState, modifier: Modifier = Modifier, hasPostsContent: @Composable ( uiState: HomeUiState.HasPosts, modifier: Modifier ) -> Unit ) { + val topAppBarState = rememberTopAppBarState() + val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(topAppBarState) Scaffold( - scaffoldState = scaffoldState, - snackbarHost = { JetnewsSnackbarHost(hostState = it) }, + snackbarHost = { JetnewsSnackbarHost(hostState = snackbarHostState) }, topBar = { if (showTopAppBar) { HomeTopAppBar( openDrawer = openDrawer, - elevation = if (!homeListLazyListState.isScrolled) 0.dp else 4.dp + topAppBarState = topAppBarState ) } }, modifier = modifier ) { innerPadding -> - val contentModifier = Modifier.padding(innerPadding) + val contentModifier = Modifier + .padding(innerPadding) + .nestedScroll(scrollBehavior.nestedScrollConnection) LoadingContent( empty = when (uiState) { @@ -349,10 +354,10 @@ private fun HomeScreenWithList( val onErrorDismissState by rememberUpdatedState(onErrorDismiss) // Effect running in a coroutine that displays the Snackbar on the screen - // If there's a change to errorMessageText, retryMessageText or scaffoldState, + // If there's a change to errorMessageText, retryMessageText or snackbarHostState, // the previous effect will be cancelled and a new one will start with the new values - LaunchedEffect(errorMessageText, retryMessageText, scaffoldState) { - val snackbarResult = scaffoldState.snackbarHostState.showSnackbar( + LaunchedEffect(errorMessageText, retryMessageText, snackbarHostState) { + val snackbarResult = snackbarHostState.showSnackbar( message = errorMessageText, actionLabel = retryMessageText ) @@ -478,7 +483,7 @@ private fun PostListTopSection(post: Post, navigateToArticle: (String) -> Unit) Text( modifier = Modifier.padding(start = 16.dp, top = 16.dp, end = 16.dp), text = stringResource(id = R.string.home_top_section_title), - style = MaterialTheme.typography.subtitle1 + style = MaterialTheme.typography.titleMedium ) PostCardTop( post = post, @@ -528,18 +533,20 @@ private fun PostListPopularSection( Text( modifier = Modifier.padding(16.dp), text = stringResource(id = R.string.home_popular_section_title), - style = MaterialTheme.typography.subtitle1 + style = MaterialTheme.typography.titleLarge ) - - LazyRow(modifier = Modifier.padding(end = 16.dp)) { + LazyRow( + contentPadding = PaddingValues(horizontal = 16.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp) + ) { items(posts) { post -> PostCardPopular( post, - navigateToArticle, - Modifier.padding(start = 16.dp, bottom = 16.dp) + navigateToArticle ) } } + Spacer(Modifier.height(16.dp)) PostListDivider() } } @@ -570,76 +577,47 @@ private fun PostListHistorySection( private fun PostListDivider() { Divider( modifier = Modifier.padding(horizontal = 14.dp), - color = MaterialTheme.colors.onSurface.copy(alpha = 0.08f) + color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.08f) ) } /** - * Expanded search UI - includes support for enter-to-send and escape-to-dismiss on the search field + * Expanded search UI - includes support for enter-to-send on the search field */ -@OptIn(ExperimentalComposeUiApi::class) +@OptIn(ExperimentalMaterial3Api::class, ExperimentalComposeUiApi::class) @Composable private fun HomeSearch( modifier: Modifier = Modifier, searchInput: String = "", onSearchInputChanged: (String) -> Unit, ) { - Surface( - shape = RoundedCornerShape(8.dp), - border = BorderStroke(Dp.Hairline, MaterialTheme.colors.onSurface.copy(alpha = .6f)), - elevation = 4.dp, - modifier = modifier.fillMaxWidth() - ) { - Row( - verticalAlignment = Alignment.CenterVertically, - modifier = Modifier.padding(horizontal = 8.dp) - ) { - CompositionLocalProvider(LocalContentAlpha provides ContentAlpha.medium) { - IconButton(onClick = { /* Functionality not supported yet */ }) { - Icon( - imageVector = Icons.Filled.Search, - contentDescription = stringResource(R.string.cd_search) - ) - } - Spacer(modifier = Modifier.width(8.dp)) - val context = LocalContext.current - val focusManager = LocalFocusManager.current - val keyboardController = LocalSoftwareKeyboardController.current - TextField( - value = searchInput, - onValueChange = { onSearchInputChanged(it) }, - placeholder = { Text(stringResource(R.string.home_search)) }, - colors = TextFieldDefaults.textFieldColors( - backgroundColor = Color.Transparent, - focusedIndicatorColor = Color.Transparent, - unfocusedIndicatorColor = Color.Transparent - ), // keyboardOptions change the newline key to a search key on the soft keyboard - keyboardOptions = KeyboardOptions(imeAction = ImeAction.Search), - // keyboardActions submits the search query when the search key is pressed - keyboardActions = KeyboardActions( - onSearch = { - submitSearch(onSearchInputChanged, context) - keyboardController?.hide() - } - ), - modifier = Modifier - .interceptKey(Key.Enter) { // submit a search query when Enter is pressed - submitSearch(onSearchInputChanged, context) - } - .interceptKey(Key.Escape) { // dismiss focus when Escape is pressed - focusManager.clearFocus() - } - ) - Spacer(modifier = Modifier.weight(1f)) - IconButton(onClick = { /* Functionality not supported yet */ }) { - Icon( - imageVector = Icons.Filled.MoreVert, - contentDescription = stringResource(R.string.cd_more_actions) - ) - } + val context = LocalContext.current + val focusManager = LocalFocusManager.current + val keyboardController = LocalSoftwareKeyboardController.current + OutlinedTextField( + value = searchInput, + onValueChange = onSearchInputChanged, + placeholder = { Text(stringResource(R.string.home_search)) }, + leadingIcon = { Icon(Icons.Filled.Search, null) }, + modifier = modifier + .fillMaxWidth() + .interceptKey(Key.Enter) { + // submit a search query when Enter is pressed + submitSearch(onSearchInputChanged, context) + keyboardController?.hide() + focusManager.clearFocus(force = true) + }, + singleLine = true, + // keyboardOptions change the newline key to a search key on the soft keyboard + keyboardOptions = KeyboardOptions(imeAction = ImeAction.Search), + // keyboardActions submits the search query when the search key is pressed + keyboardActions = KeyboardActions( + onSearch = { + submitSearch(onSearchInputChanged, context) + keyboardController?.hide() } - } - } + ) + ) } /** @@ -669,7 +647,7 @@ private fun PostTopBar( ) { Surface( shape = RoundedCornerShape(8.dp), - border = BorderStroke(Dp.Hairline, MaterialTheme.colors.onSurface.copy(alpha = .6f)), + border = BorderStroke(Dp.Hairline, MaterialTheme.colorScheme.onSurface.copy(alpha = .6f)), modifier = modifier.padding(end = 16.dp) ) { Row(Modifier.padding(horizontal = 8.dp)) { @@ -684,21 +662,24 @@ private fun PostTopBar( /** * TopAppBar for the Home screen */ +@OptIn(ExperimentalMaterial3Api::class) @Composable private fun HomeTopAppBar( - elevation: Dp, - openDrawer: () -> Unit + openDrawer: () -> Unit, + modifier: Modifier = Modifier, + topAppBarState: TopAppBarState = rememberTopAppBarState(), + scrollBehavior: TopAppBarScrollBehavior? = + TopAppBarDefaults.enterAlwaysScrollBehavior(topAppBarState) ) { val title = stringResource(id = R.string.app_name) - TopAppBar( + CenterAlignedTopAppBar( title = { - Icon( + Image( painter = painterResource(R.drawable.ic_jetnews_wordmark), contentDescription = title, - tint = MaterialTheme.colors.onBackground, - modifier = Modifier - .fillMaxSize() - .padding(bottom = 4.dp, top = 10.dp) + contentScale = ContentScale.Inside, + colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.onBackground), + modifier = Modifier.fillMaxWidth() ) }, navigationIcon = { @@ -706,7 +687,7 @@ private fun HomeTopAppBar( Icon( painter = painterResource(R.drawable.ic_jetnews_logo), contentDescription = stringResource(R.string.cd_open_navigation_drawer), - tint = MaterialTheme.colors.primary + tint = MaterialTheme.colorScheme.primary ) } }, @@ -718,8 +699,8 @@ private fun HomeTopAppBar( ) } }, - backgroundColor = MaterialTheme.colors.surface, - elevation = elevation + scrollBehavior = scrollBehavior, + modifier = modifier ) } @@ -749,7 +730,7 @@ fun PreviewHomeListDrawerScreen() { onErrorDismiss = {}, openDrawer = {}, homeListLazyListState = rememberLazyListState(), - scaffoldState = rememberScaffoldState(), + snackbarHostState = SnackbarHostState(), onSearchInputChanged = {} ) } @@ -785,7 +766,7 @@ fun PreviewHomeListNavRailScreen() { onErrorDismiss = {}, openDrawer = {}, homeListLazyListState = rememberLazyListState(), - scaffoldState = rememberScaffoldState(), + snackbarHostState = SnackbarHostState(), onSearchInputChanged = {} ) } @@ -824,7 +805,7 @@ fun PreviewHomeListDetailScreen() { post.id to rememberLazyListState() } }, - scaffoldState = rememberScaffoldState(), + snackbarHostState = SnackbarHostState(), onSearchInputChanged = {} ) } diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/home/PostCardTop.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/home/PostCardTop.kt index 5c0a75567..94bd0a9a1 100644 --- a/JetNews/app/src/main/java/com/example/jetnews/ui/home/PostCardTop.kt +++ b/JetNews/app/src/main/java/com/example/jetnews/ui/home/PostCardTop.kt @@ -23,13 +23,10 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding -import androidx.compose.material.ContentAlpha -import androidx.compose.material.LocalContentAlpha -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Surface -import androidx.compose.material.Text +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.layout.ContentScale @@ -66,27 +63,24 @@ fun PostCardTop(post: Post, modifier: Modifier = Modifier) { Text( text = post.title, - style = typography.h6, + style = typography.titleLarge, modifier = Modifier.padding(bottom = 8.dp) ) Text( text = post.metadata.author.name, - style = typography.subtitle2, + style = typography.labelLarge, modifier = Modifier.padding(bottom = 4.dp) ) - - CompositionLocalProvider(LocalContentAlpha provides ContentAlpha.medium) { - Text( - text = stringResource( - id = R.string.home_post_min_read, - formatArgs = arrayOf( - post.metadata.date, - post.metadata.readTimeMinutes - ) - ), - style = typography.subtitle2 - ) - } + Text( + text = stringResource( + id = R.string.home_post_min_read, + formatArgs = arrayOf( + post.metadata.date, + post.metadata.readTimeMinutes + ) + ), + style = typography.bodySmall + ) } } // TUTORIAL CONTENT ENDS HERE diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/home/PostCardYourNetwork.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/home/PostCardYourNetwork.kt index 04c5af1de..0714f0116 100644 --- a/JetNews/app/src/main/java/com/example/jetnews/ui/home/PostCardYourNetwork.kt +++ b/JetNews/app/src/main/java/com/example/jetnews/ui/home/PostCardYourNetwork.kt @@ -18,16 +18,16 @@ package com.example.jetnews.ui.home import android.content.res.Configuration.UI_MODE_NIGHT_YES import androidx.compose.foundation.Image -import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.material.Card -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Surface -import androidx.compose.material.Text +import androidx.compose.material3.Card +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.layout.ContentScale @@ -48,6 +48,7 @@ import com.example.jetnews.model.Post import com.example.jetnews.model.PostAuthor import com.example.jetnews.ui.theme.JetnewsTheme +@OptIn(ExperimentalMaterial3Api::class) @Composable fun PostCardPopular( post: Post, @@ -55,11 +56,12 @@ fun PostCardPopular( modifier: Modifier = Modifier ) { Card( + onClick = { navigateToArticle(post.id) }, shape = MaterialTheme.shapes.medium, - modifier = modifier.size(280.dp, 240.dp) + modifier = modifier + .size(280.dp, 240.dp) ) { - Column(modifier = Modifier.clickable(onClick = { navigateToArticle(post.id) })) { - + Column { Image( painter = painterResource(post.imageId), contentDescription = null, // decorative @@ -72,7 +74,7 @@ fun PostCardPopular( Column(modifier = Modifier.padding(16.dp)) { Text( text = post.title, - style = MaterialTheme.typography.h6, + style = MaterialTheme.typography.headlineSmall, maxLines = 2, overflow = TextOverflow.Ellipsis ) @@ -80,7 +82,7 @@ fun PostCardPopular( text = post.metadata.author.name, maxLines = 1, overflow = TextOverflow.Ellipsis, - style = MaterialTheme.typography.body2 + style = MaterialTheme.typography.bodyMedium ) Text( @@ -91,7 +93,7 @@ fun PostCardPopular( post.metadata.readTimeMinutes ) ), - style = MaterialTheme.typography.body2 + style = MaterialTheme.typography.bodySmall ) } } diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/home/PostCards.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/home/PostCards.kt index 800a1e2dd..6956bc6fc 100644 --- a/JetNews/app/src/main/java/com/example/jetnews/ui/home/PostCards.kt +++ b/JetNews/app/src/main/java/com/example/jetnews/ui/home/PostCards.kt @@ -23,18 +23,15 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.material.AlertDialog -import androidx.compose.material.ContentAlpha -import androidx.compose.material.Icon -import androidx.compose.material.IconButton -import androidx.compose.material.LocalContentAlpha -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Surface -import androidx.compose.material.Text import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.MoreVert +import androidx.compose.material3.AlertDialog +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember @@ -47,6 +44,7 @@ import androidx.compose.ui.semantics.CustomAccessibilityAction import androidx.compose.ui.semantics.clearAndSetSemantics import androidx.compose.ui.semantics.customActions import androidx.compose.ui.semantics.semantics +import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.example.jetnews.R @@ -61,18 +59,16 @@ fun AuthorAndReadTime( modifier: Modifier = Modifier ) { Row(modifier) { - CompositionLocalProvider(LocalContentAlpha provides ContentAlpha.medium) { - Text( - text = stringResource( - id = R.string.home_post_min_read, - formatArgs = arrayOf( - post.metadata.author.name, - post.metadata.readTimeMinutes - ) - ), - style = MaterialTheme.typography.body2 - ) - } + Text( + text = stringResource( + id = R.string.home_post_min_read, + formatArgs = arrayOf( + post.metadata.author.name, + post.metadata.readTimeMinutes + ) + ), + style = MaterialTheme.typography.bodyMedium + ) } } @@ -89,7 +85,12 @@ fun PostImage(post: Post, modifier: Modifier = Modifier) { @Composable fun PostTitle(post: Post) { - Text(post.title, style = MaterialTheme.typography.subtitle1) + Text( + text = post.title, + style = MaterialTheme.typography.titleMedium, + maxLines = 3, + overflow = TextOverflow.Ellipsis, + ) } @Composable @@ -103,7 +104,6 @@ fun PostCardSimple( Row( modifier = Modifier .clickable(onClick = { navigateToArticle(post.id) }) - .padding(16.dp) .semantics { // By defining a custom action, we tell accessibility services that this whole // composable has an action attached to it. The accessibility service can choose @@ -116,8 +116,12 @@ fun PostCardSimple( ) } ) { - PostImage(post, Modifier.padding(end = 16.dp)) - Column(modifier = Modifier.weight(1f)) { + PostImage(post, Modifier.padding(16.dp)) + Column( + modifier = Modifier + .weight(1f) + .padding(vertical = 10.dp) + ) { PostTitle(post) AuthorAndReadTime(post) } @@ -125,8 +129,9 @@ fun PostCardSimple( isBookmarked = isFavorite, onClick = onToggleFavorite, // Remove button semantics so action can be handled at row level - modifier = Modifier.clearAndSetSemantics {}, - contentAlpha = ContentAlpha.medium + modifier = Modifier + .clearAndSetSemantics {} + .padding(vertical = 2.dp, horizontal = 6.dp) ) } } @@ -141,32 +146,28 @@ fun PostCardHistory(post: Post, navigateToArticle: (String) -> Unit) { ) { PostImage( post = post, - modifier = Modifier.padding(top = 16.dp, start = 16.dp, end = 16.dp) + modifier = Modifier.padding(16.dp) ) Column( Modifier .weight(1f) - .padding(top = 16.dp, bottom = 16.dp) + .padding(vertical = 12.dp) ) { - CompositionLocalProvider(LocalContentAlpha provides ContentAlpha.medium) { - Text( - text = stringResource(id = R.string.home_post_based_on_history), - style = MaterialTheme.typography.overline - ) - } + Text( + text = stringResource(id = R.string.home_post_based_on_history), + style = MaterialTheme.typography.labelMedium + ) PostTitle(post = post) AuthorAndReadTime( post = post, modifier = Modifier.padding(top = 4.dp) ) } - CompositionLocalProvider(LocalContentAlpha provides ContentAlpha.medium) { - IconButton(onClick = { openDialog = true }) { - Icon( - imageVector = Icons.Filled.MoreVert, - contentDescription = stringResource(R.string.cd_more_actions) - ) - } + IconButton(onClick = { openDialog = true }) { + Icon( + imageVector = Icons.Filled.MoreVert, + contentDescription = stringResource(R.string.cd_more_actions) + ) } } if (openDialog) { @@ -176,20 +177,20 @@ fun PostCardHistory(post: Post, navigateToArticle: (String) -> Unit) { title = { Text( text = stringResource(id = R.string.fewer_stories), - style = MaterialTheme.typography.h6 + style = MaterialTheme.typography.titleLarge ) }, text = { Text( text = stringResource(id = R.string.fewer_stories_content), - style = MaterialTheme.typography.body1 + style = MaterialTheme.typography.bodyLarge ) }, confirmButton = { Text( text = stringResource(id = R.string.agree), - style = MaterialTheme.typography.button, - color = MaterialTheme.colors.primary, + style = MaterialTheme.typography.labelLarge, + color = MaterialTheme.colorScheme.primary, modifier = Modifier .padding(15.dp) .clickable { openDialog = false } diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/interests/InterestsRoute.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/interests/InterestsRoute.kt index ffb1a91fc..6766bd2ef 100644 --- a/JetNews/app/src/main/java/com/example/jetnews/ui/interests/InterestsRoute.kt +++ b/JetNews/app/src/main/java/com/example/jetnews/ui/interests/InterestsRoute.kt @@ -16,10 +16,10 @@ package com.example.jetnews.ui.interests -import androidx.compose.material.ScaffoldState -import androidx.compose.material.rememberScaffoldState +import androidx.compose.material3.SnackbarHostState import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember import androidx.compose.runtime.saveable.rememberSaveable /** @@ -28,14 +28,14 @@ import androidx.compose.runtime.saveable.rememberSaveable * @param interestsViewModel ViewModel that handles the business logic of this screen * @param isExpandedScreen (state) true if the screen is expanded * @param openDrawer (event) request opening the app drawer - * @param scaffoldState (state) state for screen Scaffold + * @param snackbarHostState (state) state for screen snackbar host */ @Composable fun InterestsRoute( interestsViewModel: InterestsViewModel, isExpandedScreen: Boolean, openDrawer: () -> Unit, - scaffoldState: ScaffoldState = rememberScaffoldState() + snackbarHostState: SnackbarHostState = remember { SnackbarHostState() } ) { val tabContent = rememberTabContent(interestsViewModel) val (currentSection, updateSection) = rememberSaveable { @@ -48,6 +48,6 @@ fun InterestsRoute( isExpandedScreen = isExpandedScreen, onTabChange = updateSection, openDrawer = openDrawer, - scaffoldState = scaffoldState + snackbarHostState = snackbarHostState ) } diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/interests/InterestsScreen.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/interests/InterestsScreen.kt index aca32f540..740adb7d6 100644 --- a/JetNews/app/src/main/java/com/example/jetnews/ui/interests/InterestsScreen.kt +++ b/JetNews/app/src/main/java/com/example/jetnews/ui/interests/InterestsScreen.kt @@ -25,30 +25,31 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.heightIn -import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.paddingFromBaseline import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.wrapContentWidth import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.selection.toggleable import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll -import androidx.compose.material.Divider -import androidx.compose.material.Icon -import androidx.compose.material.IconButton -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Scaffold -import androidx.compose.material.ScaffoldState -import androidx.compose.material.ScrollableTabRow -import androidx.compose.material.Surface -import androidx.compose.material.Tab -import androidx.compose.material.TabRow -import androidx.compose.material.Text -import androidx.compose.material.TopAppBar import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Search -import androidx.compose.material.rememberScaffoldState +import androidx.compose.material3.CenterAlignedTopAppBar +import androidx.compose.material3.Divider +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Scaffold +import androidx.compose.material3.ScrollableTabRow +import androidx.compose.material3.SnackbarHost +import androidx.compose.material3.SnackbarHostState +import androidx.compose.material3.Surface +import androidx.compose.material3.Tab +import androidx.compose.material3.TabRow +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue @@ -62,7 +63,6 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.semantics -import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Devices import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp @@ -106,8 +106,9 @@ class TabContent(val section: Sections, val content: @Composable () -> Unit) * @param isExpandedScreen (state) true if the screen is expanded * @param onTabChange (event) request a change in [currentSection] to another tab from [tabContent] * @param openDrawer (event) request opening the app drawer - * @param scaffoldState (state) the state for the screen's [Scaffold] + * @param snackbarHostState (state) the state for the screen's [Scaffold] */ +@OptIn(ExperimentalMaterial3Api::class) @Composable fun InterestsScreen( tabContent: List, @@ -115,31 +116,28 @@ fun InterestsScreen( isExpandedScreen: Boolean, onTabChange: (Sections) -> Unit, openDrawer: () -> Unit, - scaffoldState: ScaffoldState + snackbarHostState: SnackbarHostState ) { Scaffold( - scaffoldState = scaffoldState, + snackbarHost = { SnackbarHost(hostState = snackbarHostState) }, topBar = { - TopAppBar( + CenterAlignedTopAppBar( title = { Text( text = stringResource(R.string.cd_interests), - modifier = Modifier.fillMaxWidth(), - textAlign = TextAlign.Center + style = MaterialTheme.typography.titleLarge ) }, - navigationIcon = if (!isExpandedScreen) { - { + navigationIcon = { + if (!isExpandedScreen) { IconButton(onClick = openDrawer) { Icon( painter = painterResource(R.drawable.ic_jetnews_logo), contentDescription = stringResource(R.string.cd_open_navigation_drawer), - tint = MaterialTheme.colors.primary + tint = MaterialTheme.colorScheme.primary ) } } - } else { - null }, actions = { IconButton( @@ -150,9 +148,7 @@ fun InterestsScreen( contentDescription = stringResource(R.string.cd_search) ) } - }, - backgroundColor = MaterialTheme.colors.surface, - elevation = 0.dp + } ) } ) { innerPadding -> @@ -223,7 +219,7 @@ private fun InterestScreenContent( Column(modifier) { InterestsTabRow(selectedTabIndex, updateSection, tabContent, isExpandedScreen) Divider( - color = MaterialTheme.colors.onSurface.copy(alpha = 0.1f) + color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.1f) ) Box(modifier = Modifier.weight(1f)) { // display the current tab content which is a @Composable () -> Unit @@ -238,7 +234,6 @@ private fun InterestScreenContent( private val tabContainerModifier = Modifier .fillMaxWidth() .wrapContentWidth(Alignment.CenterHorizontally) - .navigationBarsPadding() /** * Display a simple list of topics @@ -287,7 +282,7 @@ private fun TabWithSections( modifier = Modifier .padding(16.dp) .semantics { heading() }, - style = MaterialTheme.typography.subtitle1 + style = MaterialTheme.typography.titleMedium ) InterestsAdaptiveContentLayout { topics.forEach { topic -> @@ -337,14 +332,14 @@ private fun TopicItem( modifier = Modifier .padding(16.dp) .weight(1f), // Break line if the title is too long - style = MaterialTheme.typography.subtitle1 + style = MaterialTheme.typography.titleMedium ) - Spacer(Modifier.weight(0.01f)) + Spacer(Modifier.width(16.dp)) SelectTopicButton(selected = selected) } Divider( modifier = modifier.padding(start = 72.dp, top = 8.dp, bottom = 8.dp), - color = MaterialTheme.colors.onSurface.copy(alpha = 0.1f) + color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.1f) ) } } @@ -363,8 +358,7 @@ private fun InterestsTabRow( false -> { TabRow( selectedTabIndex = selectedTabIndex, - backgroundColor = MaterialTheme.colors.onPrimary, - contentColor = MaterialTheme.colors.primary + contentColor = MaterialTheme.colorScheme.primary ) { InterestsTabRowContent(selectedTabIndex, updateSection, tabContent) } @@ -372,8 +366,7 @@ private fun InterestsTabRow( true -> { ScrollableTabRow( selectedTabIndex = selectedTabIndex, - backgroundColor = MaterialTheme.colors.onPrimary, - contentColor = MaterialTheme.colors.primary, + contentColor = MaterialTheme.colorScheme.primary, edgePadding = 0.dp ) { InterestsTabRowContent( @@ -396,9 +389,9 @@ private fun InterestsTabRowContent( ) { tabContent.forEachIndexed { index, content -> val colorText = if (selectedTabIndex == index) { - MaterialTheme.colors.primary + MaterialTheme.colorScheme.primary } else { - MaterialTheme.colors.onSurface.copy(alpha = 0.8f) + MaterialTheme.colorScheme.onSurface.copy(alpha = 0.8f) } Tab( selected = selectedTabIndex == index, @@ -408,7 +401,7 @@ private fun InterestsTabRowContent( Text( text = stringResource(id = content.section.titleResId), color = colorText, - style = MaterialTheme.typography.subtitle2, + style = MaterialTheme.typography.titleMedium, modifier = modifier.paddingFromBaseline(top = 20.dp) ) } @@ -506,7 +499,7 @@ fun PreviewInterestsScreenDrawer() { isExpandedScreen = false, onTabChange = updateSection, openDrawer = { }, - scaffoldState = rememberScaffoldState() + snackbarHostState = SnackbarHostState() ) } } @@ -534,7 +527,7 @@ fun PreviewInterestsScreenNavRail() { isExpandedScreen = true, onTabChange = updateSection, openDrawer = { }, - scaffoldState = rememberScaffoldState() + snackbarHostState = SnackbarHostState() ) } } diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/interests/SelectTopicButton.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/interests/SelectTopicButton.kt index 181237684..de6e1aa88 100644 --- a/JetNews/app/src/main/java/com/example/jetnews/ui/interests/SelectTopicButton.kt +++ b/JetNews/app/src/main/java/com/example/jetnews/ui/interests/SelectTopicButton.kt @@ -22,11 +22,11 @@ import androidx.compose.foundation.Image import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Surface import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Done +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.ColorFilter @@ -40,12 +40,12 @@ fun SelectTopicButton( selected: Boolean = false ) { val icon = if (selected) Icons.Filled.Done else Icons.Filled.Add - val iconColor = if (selected) MaterialTheme.colors.onPrimary else MaterialTheme.colors.primary - val borderColor = if (selected) MaterialTheme.colors.primary else MaterialTheme.colors.onSurface.copy(alpha = 0.1f) + val iconColor = if (selected) MaterialTheme.colorScheme.onPrimary else MaterialTheme.colorScheme.primary + val borderColor = if (selected) MaterialTheme.colorScheme.primary else MaterialTheme.colorScheme.onSurface.copy(alpha = 0.1f) val backgroundColor = if (selected) { - MaterialTheme.colors.primary + MaterialTheme.colorScheme.primary } else { - MaterialTheme.colors.onPrimary + MaterialTheme.colorScheme.onPrimary } Surface( color = backgroundColor, diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/theme/Color.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/theme/Color.kt index fbd78623f..1fef14734 100644 --- a/JetNews/app/src/main/java/com/example/jetnews/ui/theme/Color.kt +++ b/JetNews/app/src/main/java/com/example/jetnews/ui/theme/Color.kt @@ -1,5 +1,5 @@ /* - * Copyright 2020 The Android Open Source Project + * Copyright 2022 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,8 +18,58 @@ package com.example.jetnews.ui.theme import androidx.compose.ui.graphics.Color -val Red200 = Color(0xfff297a2) -val Red300 = Color(0xffea6d7e) -val Red700 = Color(0xffdd0d3c) -val Red800 = Color(0xffd00036) -val Red900 = Color(0xffc20029) +val md_theme_light_primary = Color(0xFFBF0031) +val md_theme_light_onPrimary = Color(0xFFFFFFFF) +val md_theme_light_primaryContainer = Color(0xFFFFDAD9) +val md_theme_light_onPrimaryContainer = Color(0xFF40000A) +val md_theme_light_secondary = Color(0xFF775656) +val md_theme_light_onSecondary = Color(0xFFFFFFFF) +val md_theme_light_secondaryContainer = Color(0xFFFFDAD9) +val md_theme_light_onSecondaryContainer = Color(0xFF2C1516) +val md_theme_light_tertiary = Color(0xFF755A2F) +val md_theme_light_onTertiary = Color(0xFFFFFFFF) +val md_theme_light_tertiaryContainer = Color(0xFFFFDDAF) +val md_theme_light_onTertiaryContainer = Color(0xFF281800) +val md_theme_light_error = Color(0xFFBA1A1A) +val md_theme_light_errorContainer = Color(0xFFFFDAD6) +val md_theme_light_onError = Color(0xFFFFFFFF) +val md_theme_light_onErrorContainer = Color(0xFF410002) +val md_theme_light_background = Color(0xFFFFFBFF) +val md_theme_light_onBackground = Color(0xFF201A1A) +val md_theme_light_surface = Color(0xFFFFFBFF) +val md_theme_light_onSurface = Color(0xFF201A1A) +val md_theme_light_surfaceVariant = Color(0xFFF4DDDD) +val md_theme_light_onSurfaceVariant = Color(0xFF524343) +val md_theme_light_outline = Color(0xFF857373) +val md_theme_light_inverseOnSurface = Color(0xFFFBEEED) +val md_theme_light_inverseSurface = Color(0xFF362F2F) +val md_theme_light_inversePrimary = Color(0xFFFFB3B4) +val md_theme_light_surfaceTint = Color(0xFFBF0031) + +val md_theme_dark_primary = Color(0xFFFFB3B4) +val md_theme_dark_onPrimary = Color(0xFF680016) +val md_theme_dark_primaryContainer = Color(0xFF920023) +val md_theme_dark_onPrimaryContainer = Color(0xFFFFDAD9) +val md_theme_dark_secondary = Color(0xFFE6BDBC) +val md_theme_dark_onSecondary = Color(0xFF44292A) +val md_theme_dark_secondaryContainer = Color(0xFF5D3F3F) +val md_theme_dark_onSecondaryContainer = Color(0xFFFFDAD9) +val md_theme_dark_tertiary = Color(0xFFE5C18D) +val md_theme_dark_onTertiary = Color(0xFF422C05) +val md_theme_dark_tertiaryContainer = Color(0xFF5B421A) +val md_theme_dark_onTertiaryContainer = Color(0xFFFFDDAF) +val md_theme_dark_error = Color(0xFFFFB4AB) +val md_theme_dark_errorContainer = Color(0xFF93000A) +val md_theme_dark_onError = Color(0xFF690005) +val md_theme_dark_onErrorContainer = Color(0xFFFFDAD6) +val md_theme_dark_background = Color(0xFF201A1A) +val md_theme_dark_onBackground = Color(0xFFECE0DF) +val md_theme_dark_surface = Color(0xFF201A1A) +val md_theme_dark_onSurface = Color(0xFFECE0DF) +val md_theme_dark_surfaceVariant = Color(0xFF524343) +val md_theme_dark_onSurfaceVariant = Color(0xFFD7C1C1) +val md_theme_dark_outline = Color(0xFFA08C8C) +val md_theme_dark_inverseOnSurface = Color(0xFF201A1A) +val md_theme_dark_inverseSurface = Color(0xFFECE0DF) +val md_theme_dark_inversePrimary = Color(0xFFBF0031) +val md_theme_dark_surfaceTint = Color(0xFFFFB3B4) diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/theme/Shape.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/theme/Shape.kt index b5fae23ab..db5e33b88 100644 --- a/JetNews/app/src/main/java/com/example/jetnews/ui/theme/Shape.kt +++ b/JetNews/app/src/main/java/com/example/jetnews/ui/theme/Shape.kt @@ -17,7 +17,7 @@ package com.example.jetnews.ui.theme import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.Shapes +import androidx.compose.material3.Shapes import androidx.compose.ui.unit.dp val JetnewsShapes = Shapes( diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/theme/Theme.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/theme/Theme.kt index 601896fac..b2900393d 100644 --- a/JetNews/app/src/main/java/com/example/jetnews/ui/theme/Theme.kt +++ b/JetNews/app/src/main/java/com/example/jetnews/ui/theme/Theme.kt @@ -1,5 +1,5 @@ /* - * Copyright 2020 The Android Open Source Project + * Copyright 2022 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,33 +16,74 @@ package com.example.jetnews.ui.theme +import android.os.Build import androidx.compose.foundation.isSystemInDarkTheme -import androidx.compose.material.MaterialTheme -import androidx.compose.material.darkColors -import androidx.compose.material.lightColors +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.dynamicDarkColorScheme +import androidx.compose.material3.dynamicLightColorScheme +import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable -import androidx.compose.ui.graphics.Color - -private val LightThemeColors = lightColors( - primary = Red700, - primaryVariant = Red900, - onPrimary = Color.White, - secondary = Red700, - secondaryVariant = Red900, - onSecondary = Color.White, - error = Red800, - onBackground = Color.Black, +import androidx.compose.ui.platform.LocalContext +private val LightColors = lightColorScheme( + primary = md_theme_light_primary, + onPrimary = md_theme_light_onPrimary, + primaryContainer = md_theme_light_primaryContainer, + onPrimaryContainer = md_theme_light_onPrimaryContainer, + secondary = md_theme_light_secondary, + onSecondary = md_theme_light_onSecondary, + secondaryContainer = md_theme_light_secondaryContainer, + onSecondaryContainer = md_theme_light_onSecondaryContainer, + tertiary = md_theme_light_tertiary, + onTertiary = md_theme_light_onTertiary, + tertiaryContainer = md_theme_light_tertiaryContainer, + onTertiaryContainer = md_theme_light_onTertiaryContainer, + error = md_theme_light_error, + errorContainer = md_theme_light_errorContainer, + onError = md_theme_light_onError, + onErrorContainer = md_theme_light_onErrorContainer, + background = md_theme_light_background, + onBackground = md_theme_light_onBackground, + surface = md_theme_light_surface, + onSurface = md_theme_light_onSurface, + surfaceVariant = md_theme_light_surfaceVariant, + onSurfaceVariant = md_theme_light_onSurfaceVariant, + outline = md_theme_light_outline, + inverseOnSurface = md_theme_light_inverseOnSurface, + inverseSurface = md_theme_light_inverseSurface, + inversePrimary = md_theme_light_inversePrimary, + surfaceTint = md_theme_light_surfaceTint, ) -private val DarkThemeColors = darkColors( - primary = Red300, - primaryVariant = Red700, - onPrimary = Color.Black, - secondary = Red300, - onSecondary = Color.Black, - error = Red200, - onBackground = Color.White +private val DarkColors = darkColorScheme( + primary = md_theme_dark_primary, + onPrimary = md_theme_dark_onPrimary, + primaryContainer = md_theme_dark_primaryContainer, + onPrimaryContainer = md_theme_dark_onPrimaryContainer, + secondary = md_theme_dark_secondary, + onSecondary = md_theme_dark_onSecondary, + secondaryContainer = md_theme_dark_secondaryContainer, + onSecondaryContainer = md_theme_dark_onSecondaryContainer, + tertiary = md_theme_dark_tertiary, + onTertiary = md_theme_dark_onTertiary, + tertiaryContainer = md_theme_dark_tertiaryContainer, + onTertiaryContainer = md_theme_dark_onTertiaryContainer, + error = md_theme_dark_error, + errorContainer = md_theme_dark_errorContainer, + onError = md_theme_dark_onError, + onErrorContainer = md_theme_dark_onErrorContainer, + background = md_theme_dark_background, + onBackground = md_theme_dark_onBackground, + surface = md_theme_dark_surface, + onSurface = md_theme_dark_onSurface, + surfaceVariant = md_theme_dark_surfaceVariant, + onSurfaceVariant = md_theme_dark_onSurfaceVariant, + outline = md_theme_dark_outline, + inverseOnSurface = md_theme_dark_inverseOnSurface, + inverseSurface = md_theme_dark_inverseSurface, + inversePrimary = md_theme_dark_inversePrimary, + surfaceTint = md_theme_dark_surfaceTint, ) @Composable @@ -50,10 +91,18 @@ fun JetnewsTheme( darkTheme: Boolean = isSystemInDarkTheme(), content: @Composable () -> Unit ) { + val colorScheme = + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + val context = LocalContext.current + if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) + } else { + if (darkTheme) DarkColors else LightColors + } + MaterialTheme( - colors = if (darkTheme) DarkThemeColors else LightThemeColors, - typography = JetnewsTypography, + colorScheme = colorScheme, shapes = JetnewsShapes, + typography = JetnewsTypography, content = content ) } diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/theme/Type.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/theme/Type.kt index ae131f16f..1d533cee4 100644 --- a/JetNews/app/src/main/java/com/example/jetnews/ui/theme/Type.kt +++ b/JetNews/app/src/main/java/com/example/jetnews/ui/theme/Type.kt @@ -16,76 +16,82 @@ package com.example.jetnews.ui.theme -import androidx.compose.material.Typography +import androidx.compose.material3.Typography +import androidx.compose.ui.text.ExperimentalTextApi +import androidx.compose.ui.text.PlatformTextStyle import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.Font import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.LineHeightStyle import androidx.compose.ui.unit.sp import com.example.jetnews.R private val Montserrat = FontFamily( Font(R.font.montserrat_regular), - Font(R.font.montserrat_medium, FontWeight.W500), - Font(R.font.montserrat_semibold, FontWeight.W600) + Font(R.font.montserrat_medium, FontWeight.W500) ) -private val Domine = FontFamily( - Font(R.font.domine_regular), - Font(R.font.domine_bold, FontWeight.Bold) +@Suppress("DEPRECATION") +@OptIn(ExperimentalTextApi::class) +val defaultTextStyle = TextStyle( + fontFamily = Montserrat, + platformStyle = PlatformTextStyle( + includeFontPadding = false + ), + lineHeightStyle = LineHeightStyle( + alignment = LineHeightStyle.Alignment.Center, + trim = LineHeightStyle.Trim.None + ) ) val JetnewsTypography = Typography( - defaultFontFamily = Montserrat, - h4 = TextStyle( - fontWeight = FontWeight.SemiBold, - fontSize = 30.sp, - letterSpacing = 0.sp - ), - h5 = TextStyle( - fontWeight = FontWeight.SemiBold, - fontSize = 24.sp, - letterSpacing = 0.sp - ), - h6 = TextStyle( - fontWeight = FontWeight.SemiBold, - fontSize = 20.sp, - letterSpacing = 0.sp - ), - subtitle1 = TextStyle( - fontWeight = FontWeight.SemiBold, - fontSize = 16.sp, - letterSpacing = 0.15.sp + displayLarge = defaultTextStyle.copy( + fontSize = 57.sp, lineHeight = 64.sp, letterSpacing = (-0.25).sp + ), + displayMedium = defaultTextStyle.copy( + fontSize = 45.sp, lineHeight = 52.sp, letterSpacing = 0.sp + ), + displaySmall = defaultTextStyle.copy( + fontSize = 36.sp, lineHeight = 44.sp, letterSpacing = 0.sp ), - subtitle2 = TextStyle( - fontWeight = FontWeight.Medium, - fontSize = 14.sp, - letterSpacing = 0.1.sp + headlineLarge = defaultTextStyle.copy( + fontSize = 32.sp, lineHeight = 40.sp, letterSpacing = 0.sp ), - body1 = TextStyle( - fontFamily = Domine, - fontWeight = FontWeight.Normal, + headlineMedium = defaultTextStyle.copy( + fontSize = 28.sp, lineHeight = 36.sp, letterSpacing = 0.sp + ), + headlineSmall = defaultTextStyle.copy( + fontSize = 24.sp, lineHeight = 32.sp, letterSpacing = 0.sp + ), + titleLarge = defaultTextStyle.copy( + fontSize = 22.sp, lineHeight = 28.sp, letterSpacing = 0.sp + ), + titleMedium = defaultTextStyle.copy( fontSize = 16.sp, - letterSpacing = 0.5.sp - ), - body2 = TextStyle( - fontWeight = FontWeight.Medium, - fontSize = 14.sp, - letterSpacing = 0.25.sp - ), - button = TextStyle( - fontWeight = FontWeight.SemiBold, - fontSize = 14.sp, - letterSpacing = 1.25.sp - ), - caption = TextStyle( - fontWeight = FontWeight.Medium, - fontSize = 12.sp, - letterSpacing = 0.4.sp - ), - overline = TextStyle( - fontWeight = FontWeight.SemiBold, - fontSize = 12.sp, - letterSpacing = 1.sp - ) + lineHeight = 24.sp, + letterSpacing = 0.15.sp, + fontWeight = FontWeight.Medium + ), + titleSmall = defaultTextStyle.copy( + fontSize = 14.sp, lineHeight = 20.sp, letterSpacing = 0.1.sp, fontWeight = FontWeight.Medium + ), + labelLarge = defaultTextStyle.copy( + fontSize = 14.sp, lineHeight = 20.sp, letterSpacing = 0.1.sp, fontWeight = FontWeight.Medium + ), + labelMedium = defaultTextStyle.copy( + fontSize = 12.sp, lineHeight = 16.sp, letterSpacing = 0.5.sp, fontWeight = FontWeight.Medium + ), + labelSmall = defaultTextStyle.copy( + fontSize = 11.sp, lineHeight = 16.sp, letterSpacing = 0.5.sp, fontWeight = FontWeight.Medium + ), + bodyLarge = defaultTextStyle.copy( + fontSize = 16.sp, lineHeight = 24.sp, letterSpacing = 0.5.sp + ), + bodyMedium = defaultTextStyle.copy( + fontSize = 14.sp, lineHeight = 20.sp, letterSpacing = 0.25.sp + ), + bodySmall = defaultTextStyle.copy( + fontSize = 12.sp, lineHeight = 16.sp, letterSpacing = 0.4.sp + ), ) diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/utils/JetnewsIcons.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/utils/JetnewsIcons.kt index 57ee316fc..ce0c69b0a 100644 --- a/JetNews/app/src/main/java/com/example/jetnews/ui/utils/JetnewsIcons.kt +++ b/JetNews/app/src/main/java/com/example/jetnews/ui/utils/JetnewsIcons.kt @@ -16,18 +16,15 @@ package com.example.jetnews.ui.utils -import androidx.compose.material.ContentAlpha -import androidx.compose.material.Icon -import androidx.compose.material.IconButton -import androidx.compose.material.IconToggleButton -import androidx.compose.material.LocalContentAlpha import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Bookmark import androidx.compose.material.icons.filled.BookmarkBorder import androidx.compose.material.icons.filled.Share import androidx.compose.material.icons.filled.ThumbUpOffAlt +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.IconToggleButton import androidx.compose.runtime.Composable -import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource @@ -49,27 +46,24 @@ fun FavoriteButton(onClick: () -> Unit) { fun BookmarkButton( isBookmarked: Boolean, onClick: () -> Unit, - modifier: Modifier = Modifier, - contentAlpha: Float = ContentAlpha.high + modifier: Modifier = Modifier ) { val clickLabel = stringResource( if (isBookmarked) R.string.unbookmark else R.string.bookmark ) - CompositionLocalProvider(LocalContentAlpha provides contentAlpha) { - IconToggleButton( - checked = isBookmarked, - onCheckedChange = { onClick() }, - modifier = modifier.semantics { - // Use a custom click label that accessibility services can communicate to the user. - // We only want to override the label, not the actual action, so for the action we pass null. - this.onClick(label = clickLabel, action = null) - } - ) { - Icon( - imageVector = if (isBookmarked) Icons.Filled.Bookmark else Icons.Filled.BookmarkBorder, - contentDescription = null // handled by click label of parent - ) + IconToggleButton( + checked = isBookmarked, + onCheckedChange = { onClick() }, + modifier = modifier.semantics { + // Use a custom click label that accessibility services can communicate to the user. + // We only want to override the label, not the actual action, so for the action we pass null. + this.onClick(label = clickLabel, action = null) } + ) { + Icon( + imageVector = if (isBookmarked) Icons.Filled.Bookmark else Icons.Filled.BookmarkBorder, + contentDescription = null // handled by click label of parent + ) } } diff --git a/JetNews/app/src/main/res/font/domine_bold.ttf b/JetNews/app/src/main/res/font/domine_bold.ttf deleted file mode 100755 index 329288c6bf7c565704e394afabebcb2c279a8ff9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 140156 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 XCn)N{S?nA6yMYsmA~ljKu+;wnGU^$D diff --git a/JetNews/app/src/main/res/font/domine_regular.ttf b/JetNews/app/src/main/res/font/domine_regular.ttf deleted file mode 100755 index c387575c2097265d9977b85c6b069ab884d518c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131968 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 Raqi&@Id>DAu&Ki3{V(g~fMWmv diff --git a/JetNews/app/src/main/res/font/montserrat_semibold.ttf b/JetNews/app/src/main/res/font/montserrat_semibold.ttf deleted file mode 100755 index f8a43f2b203054676b64e38e2b78af5468c39b6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 243816 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

pQ9pV_Wo(eYaP&1a~#B8z|n;+Zi{ z>pQ#FukVun=z{2LWu+Snf-48|gP|n{dVBXr!eyP&E7r6vTfKT&+Ztsb5&cMV{t{~? ziHR5rpLi$y^c3(@cDNp}`nhO_v%RGHf7JmeNuc282yX1>=dqt*oZ2rL`&lfKJ?X-o zf^eV-A#ar~&F{l>JSWYQTqCRaRD3S5{k9nUN7L_4!Im(x$=HaR=$tt6f8!sCn|v;gW*4 zK4jm%&#!6u_uf0^w1h5i9v@N=zAn(SNOCl>*MwZ~kT4)YUZi0P~p{=A0r;9S2WM)w= z6LzPW%j_{9cY@bw0|LoR0bRgXBw)(#^0hP5+*x1cNxL|I)D5irQ7f2EfC zb7o7=Y4L6Cm(T-f`AgOV2F90746h#;WNQJ#u(bxDv2A@rV{_ly5=`q)oG(0q|3aP+ zElJjag4!=2_sn;rzyw0zg0gw1(H9&T8n<~YdCiV}3QF9w95V5N}qR?dKWo7fs}A?@ns3dn?3wru5&@u9D*>YTOoM zKA)Rt#%onH?mKE6@qPRh69oS?c6U0}578|F$Px7l6!w|94PlTzNx|Rg+O&)y-N5k} zcP9C9uV6!YD8DLLI<{rqkBf%0Dl260;va{$)2^d$(aJPaV>YQV`Am+1|5LU0Z}8Jk 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 H&y4;71utqP diff --git a/JetNews/app/src/main/res/values-night/colors.xml b/JetNews/app/src/main/res/values-night/colors.xml deleted file mode 100644 index 70a52f008..000000000 --- a/JetNews/app/src/main/res/values-night/colors.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - #0e0e0e - diff --git a/JetNews/app/src/main/res/values-v23/themes.xml b/JetNews/app/src/main/res/values-v23/themes.xml new file mode 100644 index 000000000..eb0a1f4b4 --- /dev/null +++ b/JetNews/app/src/main/res/values-v23/themes.xml @@ -0,0 +1,23 @@ + + + + + + diff --git a/JetNews/app/src/main/res/values-v27/themes.xml b/JetNews/app/src/main/res/values-v27/themes.xml new file mode 100644 index 000000000..5bd2e6dc5 --- /dev/null +++ b/JetNews/app/src/main/res/values-v27/themes.xml @@ -0,0 +1,25 @@ + + + + + + diff --git a/JetNews/app/src/main/res/values/colors.xml b/JetNews/app/src/main/res/values/colors.xml index e486a1003..eef7bd07a 100644 --- a/JetNews/app/src/main/res/values/colors.xml +++ b/JetNews/app/src/main/res/values/colors.xml @@ -13,7 +13,6 @@ the License. --> - #dd0d3e - #c20029 - #ffffff + + #4D000000 diff --git a/JetNews/app/src/main/res/values/strings.xml b/JetNews/app/src/main/res/values/strings.xml index 2dc77e142..cd9aa9b7c 100644 --- a/JetNews/app/src/main/res/values/strings.xml +++ b/JetNews/app/src/main/res/values/strings.xml @@ -28,8 +28,8 @@ Published in: \n%1$s Show fewer stories like this? This feature is not yet implemented - AGREE - CLOSE + Agree + Close Home diff --git a/JetNews/app/src/main/res/values/styles.xml b/JetNews/app/src/main/res/values/styles.xml deleted file mode 100644 index 93a7d81df..000000000 --- a/JetNews/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - diff --git a/JetNews/app/src/main/res/values/themes.xml b/JetNews/app/src/main/res/values/themes.xml new file mode 100644 index 000000000..4d09a5a40 --- /dev/null +++ b/JetNews/app/src/main/res/values/themes.xml @@ -0,0 +1,27 @@ + + + + + + + +