diff --git a/app-nia-catalog/src/main/java/com/google/samples/apps/niacatalog/ui/Catalog.kt b/app-nia-catalog/src/main/java/com/google/samples/apps/niacatalog/ui/Catalog.kt
index 54e4264fa..2624262ad 100644
--- a/app-nia-catalog/src/main/java/com/google/samples/apps/niacatalog/ui/Catalog.kt
+++ b/app-nia-catalog/src/main/java/com/google/samples/apps/niacatalog/ui/Catalog.kt
@@ -36,7 +36,6 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
-import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp
import com.google.samples.apps.nowinandroid.core.designsystem.component.NiaButton
import com.google.samples.apps.nowinandroid.core.designsystem.component.NiaFilterChip
@@ -206,13 +205,13 @@ fun NiaCatalog() {
onCheckedChange = { checked -> firstChecked = checked },
icon = {
Icon(
- painter = painterResource(id = NiaIcons.BookmarkBorder),
+ imageVector = NiaIcons.BookmarkBorder,
contentDescription = null,
)
},
checkedIcon = {
Icon(
- painter = painterResource(id = NiaIcons.Bookmark),
+ imageVector = NiaIcons.Bookmark,
contentDescription = null,
)
},
@@ -223,13 +222,13 @@ fun NiaCatalog() {
onCheckedChange = { checked -> secondChecked = checked },
icon = {
Icon(
- painter = painterResource(id = NiaIcons.BookmarkBorder),
+ imageVector = NiaIcons.BookmarkBorder,
contentDescription = null,
)
},
checkedIcon = {
Icon(
- painter = painterResource(id = NiaIcons.Bookmark),
+ imageVector = NiaIcons.Bookmark,
contentDescription = null,
)
},
@@ -239,13 +238,13 @@ fun NiaCatalog() {
onCheckedChange = {},
icon = {
Icon(
- painter = painterResource(id = NiaIcons.BookmarkBorder),
+ imageVector = NiaIcons.BookmarkBorder,
contentDescription = null,
)
},
checkedIcon = {
Icon(
- painter = painterResource(id = NiaIcons.Bookmark),
+ imageVector = NiaIcons.Bookmark,
contentDescription = null,
)
},
@@ -256,13 +255,13 @@ fun NiaCatalog() {
onCheckedChange = {},
icon = {
Icon(
- painter = painterResource(id = NiaIcons.BookmarkBorder),
+ imageVector = NiaIcons.BookmarkBorder,
contentDescription = null,
)
},
checkedIcon = {
Icon(
- painter = painterResource(id = NiaIcons.Bookmark),
+ imageVector = NiaIcons.Bookmark,
contentDescription = null,
)
},
@@ -334,40 +333,31 @@ fun NiaCatalog() {
item { Text("Navigation", Modifier.padding(top = 16.dp)) }
item {
var selectedItem by remember { mutableStateOf(0) }
- val items = listOf("For you", "Episodes", "Saved", "Interests")
+ val items = listOf("For you", "Saved", "Interests")
val icons = listOf(
NiaIcons.UpcomingBorder,
- NiaIcons.MenuBookBorder,
NiaIcons.BookmarksBorder,
+ NiaIcons.Grid3x3,
)
val selectedIcons = listOf(
NiaIcons.Upcoming,
- NiaIcons.MenuBook,
NiaIcons.Bookmarks,
+ NiaIcons.Grid3x3,
)
- val tagIcon = NiaIcons.Tag
NiaNavigationBar {
items.forEachIndexed { index, item ->
NiaNavigationBarItem(
icon = {
- if (index == 3) {
- Icon(imageVector = tagIcon, contentDescription = null)
- } else {
- Icon(
- painter = painterResource(id = icons[index]),
- contentDescription = item,
- )
- }
+ Icon(
+ imageVector = icons[index],
+ contentDescription = item,
+ )
},
selectedIcon = {
- if (index == 3) {
- Icon(imageVector = tagIcon, contentDescription = null)
- } else {
- Icon(
- painter = painterResource(id = selectedIcons[index]),
- contentDescription = item,
- )
- }
+ Icon(
+ imageVector = selectedIcons[index],
+ contentDescription = item,
+ )
},
label = { Text(item) },
selected = selectedItem == index,
diff --git a/app/src/main/java/com/google/samples/apps/nowinandroid/navigation/TopLevelDestination.kt b/app/src/main/java/com/google/samples/apps/nowinandroid/navigation/TopLevelDestination.kt
index 396ab8b7b..8dbd0fcb6 100644
--- a/app/src/main/java/com/google/samples/apps/nowinandroid/navigation/TopLevelDestination.kt
+++ b/app/src/main/java/com/google/samples/apps/nowinandroid/navigation/TopLevelDestination.kt
@@ -16,10 +16,8 @@
package com.google.samples.apps.nowinandroid.navigation
+import androidx.compose.ui.graphics.vector.ImageVector
import com.google.samples.apps.nowinandroid.R
-import com.google.samples.apps.nowinandroid.core.designsystem.icon.Icon
-import com.google.samples.apps.nowinandroid.core.designsystem.icon.Icon.DrawableResourceIcon
-import com.google.samples.apps.nowinandroid.core.designsystem.icon.Icon.ImageVectorIcon
import com.google.samples.apps.nowinandroid.core.designsystem.icon.NiaIcons
import com.google.samples.apps.nowinandroid.feature.bookmarks.R as bookmarksR
import com.google.samples.apps.nowinandroid.feature.foryou.R as forYouR
@@ -31,26 +29,26 @@ import com.google.samples.apps.nowinandroid.feature.interests.R as interestsR
* next within a single destination will be handled directly in composables.
*/
enum class TopLevelDestination(
- val selectedIcon: Icon,
- val unselectedIcon: Icon,
+ val selectedIcon: ImageVector,
+ val unselectedIcon: ImageVector,
val iconTextId: Int,
val titleTextId: Int,
) {
FOR_YOU(
- selectedIcon = DrawableResourceIcon(NiaIcons.Upcoming),
- unselectedIcon = DrawableResourceIcon(NiaIcons.UpcomingBorder),
+ selectedIcon = NiaIcons.Upcoming,
+ unselectedIcon = NiaIcons.UpcomingBorder,
iconTextId = forYouR.string.for_you,
titleTextId = R.string.app_name,
),
BOOKMARKS(
- selectedIcon = DrawableResourceIcon(NiaIcons.Bookmarks),
- unselectedIcon = DrawableResourceIcon(NiaIcons.BookmarksBorder),
+ selectedIcon = NiaIcons.Bookmarks,
+ unselectedIcon = NiaIcons.BookmarksBorder,
iconTextId = bookmarksR.string.saved,
titleTextId = bookmarksR.string.saved,
),
INTERESTS(
- selectedIcon = ImageVectorIcon(NiaIcons.Grid3x3),
- unselectedIcon = ImageVectorIcon(NiaIcons.Grid3x3),
+ selectedIcon = NiaIcons.Grid3x3,
+ unselectedIcon = NiaIcons.Grid3x3,
iconTextId = interestsR.string.interests,
titleTextId = interestsR.string.interests,
),
diff --git a/app/src/main/java/com/google/samples/apps/nowinandroid/ui/NiaApp.kt b/app/src/main/java/com/google/samples/apps/nowinandroid/ui/NiaApp.kt
index de321db52..01726c909 100644
--- a/app/src/main/java/com/google/samples/apps/nowinandroid/ui/NiaApp.kt
+++ b/app/src/main/java/com/google/samples/apps/nowinandroid/ui/NiaApp.kt
@@ -52,7 +52,6 @@ import androidx.compose.ui.draw.drawWithContent
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.testTag
-import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.testTagsAsResourceId
@@ -70,8 +69,6 @@ import com.google.samples.apps.nowinandroid.core.designsystem.component.NiaNavig
import com.google.samples.apps.nowinandroid.core.designsystem.component.NiaNavigationRail
import com.google.samples.apps.nowinandroid.core.designsystem.component.NiaNavigationRailItem
import com.google.samples.apps.nowinandroid.core.designsystem.component.NiaTopAppBar
-import com.google.samples.apps.nowinandroid.core.designsystem.icon.Icon.DrawableResourceIcon
-import com.google.samples.apps.nowinandroid.core.designsystem.icon.Icon.ImageVectorIcon
import com.google.samples.apps.nowinandroid.core.designsystem.icon.NiaIcons
import com.google.samples.apps.nowinandroid.core.designsystem.theme.GradientColors
import com.google.samples.apps.nowinandroid.core.designsystem.theme.LocalGradientColors
@@ -225,22 +222,16 @@ private fun NiaNavRail(
selected = selected,
onClick = { onNavigateToDestination(destination) },
icon = {
- val icon = if (selected) {
- destination.selectedIcon
- } else {
- destination.unselectedIcon
- }
- when (icon) {
- is ImageVectorIcon -> Icon(
- imageVector = icon.imageVector,
- contentDescription = null,
- )
-
- is DrawableResourceIcon -> Icon(
- painter = painterResource(id = icon.id),
- contentDescription = null,
- )
- }
+ Icon(
+ imageVector = destination.unselectedIcon,
+ contentDescription = null,
+ )
+ },
+ selectedIcon = {
+ Icon(
+ imageVector = destination.selectedIcon,
+ contentDescription = null,
+ )
},
label = { Text(stringResource(destination.iconTextId)) },
modifier = if (hasUnread) Modifier.notificationDot() else Modifier,
@@ -267,22 +258,16 @@ private fun NiaBottomBar(
selected = selected,
onClick = { onNavigateToDestination(destination) },
icon = {
- val icon = if (selected) {
- destination.selectedIcon
- } else {
- destination.unselectedIcon
- }
- when (icon) {
- is ImageVectorIcon -> Icon(
- imageVector = icon.imageVector,
- contentDescription = null,
- )
-
- is DrawableResourceIcon -> Icon(
- painter = painterResource(id = icon.id),
- contentDescription = null,
- )
- }
+ Icon(
+ imageVector = destination.unselectedIcon,
+ contentDescription = null,
+ )
+ },
+ selectedIcon = {
+ Icon(
+ imageVector = destination.selectedIcon,
+ contentDescription = null,
+ )
},
label = { Text(stringResource(destination.iconTextId)) },
modifier = if (hasUnread) Modifier.notificationDot() else Modifier,
diff --git a/core/designsystem/src/main/java/com/google/samples/apps/nowinandroid/core/designsystem/icon/NiaIcons.kt b/core/designsystem/src/main/java/com/google/samples/apps/nowinandroid/core/designsystem/icon/NiaIcons.kt
index ac31fbcdb..8db20689f 100644
--- a/core/designsystem/src/main/java/com/google/samples/apps/nowinandroid/core/designsystem/icon/NiaIcons.kt
+++ b/core/designsystem/src/main/java/com/google/samples/apps/nowinandroid/core/designsystem/icon/NiaIcons.kt
@@ -16,11 +16,15 @@
package com.google.samples.apps.nowinandroid.core.designsystem.icon
-import androidx.annotation.DrawableRes
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.MoreVert
+import androidx.compose.material.icons.outlined.Bookmarks
+import androidx.compose.material.icons.outlined.Upcoming
import androidx.compose.material.icons.rounded.Add
import androidx.compose.material.icons.rounded.ArrowBack
+import androidx.compose.material.icons.rounded.Bookmark
+import androidx.compose.material.icons.rounded.BookmarkBorder
+import androidx.compose.material.icons.rounded.Bookmarks
import androidx.compose.material.icons.rounded.Check
import androidx.compose.material.icons.rounded.Close
import androidx.compose.material.icons.rounded.Grid3x3
@@ -28,12 +32,9 @@ import androidx.compose.material.icons.rounded.Person
import androidx.compose.material.icons.rounded.Search
import androidx.compose.material.icons.rounded.Settings
import androidx.compose.material.icons.rounded.ShortText
-import androidx.compose.material.icons.rounded.Tag
+import androidx.compose.material.icons.rounded.Upcoming
import androidx.compose.material.icons.rounded.ViewDay
-import androidx.compose.material.icons.rounded.VolumeOff
-import androidx.compose.material.icons.rounded.VolumeUp
import androidx.compose.ui.graphics.vector.ImageVector
-import com.google.samples.apps.nowinandroid.core.designsystem.R
/**
* Now in Android icons. Material icons are [ImageVector]s, custom icons are drawable resource IDs.
@@ -41,32 +42,19 @@ import com.google.samples.apps.nowinandroid.core.designsystem.R
object NiaIcons {
val Add = Icons.Rounded.Add
val ArrowBack = Icons.Rounded.ArrowBack
- val Bookmark = R.drawable.ic_bookmark
- val BookmarkBorder = R.drawable.ic_bookmark_border
- val Bookmarks = R.drawable.ic_bookmarks
- val BookmarksBorder = R.drawable.ic_bookmarks_border
+ val Bookmark = Icons.Rounded.Bookmark
+ val BookmarkBorder = Icons.Rounded.BookmarkBorder
+ val Bookmarks = Icons.Rounded.Bookmarks
+ val BookmarksBorder = Icons.Outlined.Bookmarks
val Check = Icons.Rounded.Check
val Close = Icons.Rounded.Close
val Grid3x3 = Icons.Rounded.Grid3x3
- val MenuBook = R.drawable.ic_menu_book
- val MenuBookBorder = R.drawable.ic_menu_book_border
val MoreVert = Icons.Default.MoreVert
val Person = Icons.Rounded.Person
val Search = Icons.Rounded.Search
val Settings = Icons.Rounded.Settings
val ShortText = Icons.Rounded.ShortText
- val Tag = Icons.Rounded.Tag
- val Upcoming = R.drawable.ic_upcoming
- val UpcomingBorder = R.drawable.ic_upcoming_border
+ val Upcoming = Icons.Rounded.Upcoming
+ val UpcomingBorder = Icons.Outlined.Upcoming
val ViewDay = Icons.Rounded.ViewDay
- val VolumeOff = Icons.Rounded.VolumeOff
- val VolumeUp = Icons.Rounded.VolumeUp
-}
-
-/**
- * A sealed class to make dealing with [ImageVector] and [DrawableRes] icons easier.
- */
-sealed class Icon {
- data class ImageVectorIcon(val imageVector: ImageVector) : Icon()
- data class DrawableResourceIcon(@DrawableRes val id: Int) : Icon()
}
diff --git a/core/designsystem/src/main/res/drawable/ic_bookmark.xml b/core/designsystem/src/main/res/drawable/ic_bookmark.xml
deleted file mode 100644
index 29b7e40a7..000000000
--- a/core/designsystem/src/main/res/drawable/ic_bookmark.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
diff --git a/core/designsystem/src/main/res/drawable/ic_bookmark_border.xml b/core/designsystem/src/main/res/drawable/ic_bookmark_border.xml
deleted file mode 100644
index 1d4b4aca9..000000000
--- a/core/designsystem/src/main/res/drawable/ic_bookmark_border.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
diff --git a/core/designsystem/src/main/res/drawable/ic_bookmarks.xml b/core/designsystem/src/main/res/drawable/ic_bookmarks.xml
deleted file mode 100644
index ed6e84f81..000000000
--- a/core/designsystem/src/main/res/drawable/ic_bookmarks.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
diff --git a/core/designsystem/src/main/res/drawable/ic_bookmarks_border.xml b/core/designsystem/src/main/res/drawable/ic_bookmarks_border.xml
deleted file mode 100644
index 64f0b5159..000000000
--- a/core/designsystem/src/main/res/drawable/ic_bookmarks_border.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
diff --git a/core/designsystem/src/main/res/drawable/ic_menu_book.xml b/core/designsystem/src/main/res/drawable/ic_menu_book.xml
deleted file mode 100644
index e81276888..000000000
--- a/core/designsystem/src/main/res/drawable/ic_menu_book.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/core/designsystem/src/main/res/drawable/ic_menu_book_border.xml b/core/designsystem/src/main/res/drawable/ic_menu_book_border.xml
deleted file mode 100644
index 04ec651f6..000000000
--- a/core/designsystem/src/main/res/drawable/ic_menu_book_border.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/core/designsystem/src/main/res/drawable/ic_upcoming.xml b/core/designsystem/src/main/res/drawable/ic_upcoming.xml
deleted file mode 100644
index a05017e74..000000000
--- a/core/designsystem/src/main/res/drawable/ic_upcoming.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/core/designsystem/src/main/res/drawable/ic_upcoming_border.xml b/core/designsystem/src/main/res/drawable/ic_upcoming_border.xml
deleted file mode 100644
index 5f3151232..000000000
--- a/core/designsystem/src/main/res/drawable/ic_upcoming_border.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsResourceCard.kt b/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsResourceCard.kt
index 46521a320..009fb1249 100644
--- a/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsResourceCard.kt
+++ b/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsResourceCard.kt
@@ -183,13 +183,13 @@ fun BookmarkButton(
modifier = modifier,
icon = {
Icon(
- painter = painterResource(NiaIcons.BookmarkBorder),
+ imageVector = NiaIcons.BookmarkBorder,
contentDescription = stringResource(R.string.bookmark),
)
},
checkedIcon = {
Icon(
- painter = painterResource(NiaIcons.Bookmark),
+ imageVector = NiaIcons.Bookmark,
contentDescription = stringResource(R.string.unbookmark),
)
},