diff --git a/JetNews/app/build.gradle.kts b/JetNews/app/build.gradle.kts
index b3bec47c84..ed68fa47f2 100644
--- a/JetNews/app/build.gradle.kts
+++ b/JetNews/app/build.gradle.kts
@@ -92,7 +92,6 @@ dependencies {
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)
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 e88723c606..9acf45b8f6 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
@@ -21,9 +21,6 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
-import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.filled.Home
-import androidx.compose.material.icons.filled.ListAlt
import androidx.compose.material3.DrawerState
import androidx.compose.material3.DrawerValue
import androidx.compose.material3.Icon
@@ -60,7 +57,7 @@ fun AppDrawer(
)
NavigationDrawerItem(
label = { Text(stringResource(id = R.string.home_title)) },
- icon = { Icon(Icons.Filled.Home, null) },
+ icon = { Icon(painterResource(R.drawable.ic_home), null) },
selected = currentRoute == JetnewsDestinations.HOME_ROUTE,
onClick = {
navigateToHome()
@@ -70,7 +67,7 @@ fun AppDrawer(
)
NavigationDrawerItem(
label = { Text(stringResource(id = R.string.interests_title)) },
- icon = { Icon(Icons.Filled.ListAlt, null) },
+ icon = { Icon(painterResource(R.drawable.ic_list_alt), null) },
selected = currentRoute == JetnewsDestinations.INTERESTS_ROUTE,
onClick = {
navigateToInterests()
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 34347e284c..4dbd4c8bc8 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
@@ -27,8 +27,6 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.shape.CircleShape
-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
@@ -75,7 +73,7 @@ import kotlinx.coroutines.runBlocking
* @param showNavigationIcon (state) if the navigation icon should be shown
* @param onBack (event) request navigate back
* @param isFavorite (state) is this item currently a favorite
- * @param onToggleFavorite (event) request that this post toggle it's favorite state
+ * @param onToggleFavorite (event) request that this post toggle its favorite state
* @param lazyListState (state) the [LazyListState] for the article content
*/
@OptIn(ExperimentalMaterial3Api::class)
@@ -103,7 +101,7 @@ fun ArticleScreen(
if (!isExpandedScreen) {
IconButton(onClick = onBack) {
Icon(
- imageVector = Icons.Filled.ArrowBack,
+ painter = painterResource(R.drawable.ic_arrow_back),
contentDescription = stringResource(R.string.cd_navigate_up),
tint = MaterialTheme.colorScheme.primary,
)
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 9ef99241fc..88f273112e 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
@@ -36,8 +36,6 @@ 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.icons.Icons
-import androidx.compose.material.icons.filled.AccountCircle
import androidx.compose.material3.ColorScheme
import androidx.compose.material3.LocalContentColor
import androidx.compose.material3.MaterialTheme
@@ -132,7 +130,7 @@ private fun PostMetadata(metadata: Metadata, modifier: Modifier = Modifier) {
modifier = modifier.semantics(mergeDescendants = true) {},
) {
Image(
- imageVector = Icons.Filled.AccountCircle,
+ painter = painterResource(id = R.drawable.ic_account_circle),
contentDescription = null, // decorative
modifier = Modifier.size(40.dp),
colorFilter = ColorFilter.tint(LocalContentColor.current),
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 d0395767bf..b6d48e74f2 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
@@ -19,9 +19,6 @@ package com.example.jetnews.ui.components
import android.content.res.Configuration
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.padding
-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
@@ -54,14 +51,14 @@ fun AppNavRail(currentRoute: String, navigateToHome: () -> Unit, navigateToInter
NavigationRailItem(
selected = currentRoute == JetnewsDestinations.HOME_ROUTE,
onClick = navigateToHome,
- icon = { Icon(Icons.Filled.Home, stringResource(R.string.home_title)) },
+ icon = { Icon(painterResource(id = R.drawable.ic_home), stringResource(R.string.home_title)) },
label = { Text(stringResource(R.string.home_title)) },
alwaysShowLabel = false,
)
NavigationRailItem(
selected = currentRoute == JetnewsDestinations.INTERESTS_ROUTE,
onClick = navigateToInterests,
- icon = { Icon(Icons.Filled.ListAlt, stringResource(R.string.interests_title)) },
+ icon = { Icon(painterResource(id = R.drawable.ic_list_alt), stringResource(R.string.interests_title)) },
label = { Text(stringResource(R.string.interests_title)) },
alwaysShowLabel = false,
)
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 4d97538b65..a46da2d96f 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
@@ -48,8 +48,6 @@ import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions
-import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.filled.Search
import androidx.compose.material3.CenterAlignedTopAppBar
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.ExperimentalMaterial3Api
@@ -612,7 +610,7 @@ private fun HomeSearch(modifier: Modifier = Modifier, searchInput: String = "",
value = searchInput,
onValueChange = onSearchInputChanged,
placeholder = { Text(stringResource(R.string.home_search)) },
- leadingIcon = { Icon(Icons.Filled.Search, null) },
+ leadingIcon = { Icon(painter = painterResource(R.drawable.ic_search), contentDescription = null) },
modifier = modifier
.fillMaxWidth()
.interceptKey(Key.Enter) {
@@ -706,7 +704,7 @@ private fun HomeTopAppBar(
).show()
}) {
Icon(
- imageVector = Icons.Filled.Search,
+ painter = painterResource(R.drawable.ic_search),
contentDescription = stringResource(R.string.cd_search),
)
}
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 6fc651a3ff..69e94115a1 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,8 +23,6 @@ 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.icons.Icons
-import androidx.compose.material.icons.filled.MoreVert
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
@@ -160,7 +158,7 @@ fun PostCardHistory(post: Post, navigateToArticle: (String) -> Unit) {
}
IconButton(onClick = { openDialog = true }) {
Icon(
- imageVector = Icons.Filled.MoreVert,
+ painter = painterResource(R.drawable.ic_more_vert),
contentDescription = stringResource(R.string.cd_more_actions),
)
}
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 3cf59e2ebf..db72afa378 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
@@ -35,8 +35,6 @@ 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.icons.Icons
-import androidx.compose.material.icons.filled.Search
import androidx.compose.material3.CenterAlignedTopAppBar
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.HorizontalDivider
@@ -155,7 +153,7 @@ fun InterestsScreen(
},
) {
Icon(
- imageVector = Icons.Filled.Search,
+ painter = painterResource(R.drawable.ic_search),
contentDescription = stringResource(R.string.cd_search),
)
}
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 ae670e3304..bdfa83c63c 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,21 +22,20 @@ 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.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
+import androidx.compose.ui.res.painterResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
+import com.example.jetnews.R
import com.example.jetnews.ui.theme.JetnewsTheme
@Composable
fun SelectTopicButton(modifier: Modifier = Modifier, selected: Boolean = false) {
- val icon = if (selected) Icons.Filled.Done else Icons.Filled.Add
+ val icon = if (selected) painterResource(R.drawable.ic_check) else painterResource(R.drawable.ic_add)
val iconColor = if (selected) {
MaterialTheme.colorScheme.onPrimary
} else {
@@ -59,7 +58,7 @@ fun SelectTopicButton(modifier: Modifier = Modifier, selected: Boolean = false)
modifier = modifier.size(36.dp, 36.dp),
) {
Image(
- imageVector = icon,
+ painter = icon,
colorFilter = ColorFilter.tint(iconColor),
modifier = Modifier.padding(8.dp),
contentDescription = null, // toggleable at higher level
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 1374588293..14df0ec247 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,11 +16,6 @@
package com.example.jetnews.ui.utils
-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
@@ -36,7 +31,7 @@ import com.example.jetnews.R
fun FavoriteButton(onClick: () -> Unit) {
IconButton(onClick) {
Icon(
- imageVector = Icons.Filled.ThumbUpOffAlt,
+ painter = painterResource(R.drawable.ic_thumb_up),
contentDescription = stringResource(R.string.cd_add_to_favorites),
)
}
@@ -57,7 +52,7 @@ fun BookmarkButton(isBookmarked: Boolean, onClick: () -> Unit, modifier: Modifie
},
) {
Icon(
- imageVector = if (isBookmarked) Icons.Filled.Bookmark else Icons.Filled.BookmarkBorder,
+ painter = if (isBookmarked) painterResource(R.drawable.ic_bookmark) else painterResource(R.drawable.ic_bookmark_outline),
contentDescription = null, // handled by click label of parent
)
}
@@ -67,7 +62,7 @@ fun BookmarkButton(isBookmarked: Boolean, onClick: () -> Unit, modifier: Modifie
fun ShareButton(onClick: () -> Unit) {
IconButton(onClick) {
Icon(
- imageVector = Icons.Filled.Share,
+ painter = painterResource(R.drawable.ic_share),
contentDescription = stringResource(R.string.cd_share),
)
}
diff --git a/JetNews/app/src/main/res/drawable/ic_account_circle.xml b/JetNews/app/src/main/res/drawable/ic_account_circle.xml
new file mode 100644
index 0000000000..67542bfa21
--- /dev/null
+++ b/JetNews/app/src/main/res/drawable/ic_account_circle.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/JetNews/app/src/main/res/drawable/ic_add.xml b/JetNews/app/src/main/res/drawable/ic_add.xml
new file mode 100644
index 0000000000..2fcde96c96
--- /dev/null
+++ b/JetNews/app/src/main/res/drawable/ic_add.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/JetNews/app/src/main/res/drawable/ic_arrow_back.xml b/JetNews/app/src/main/res/drawable/ic_arrow_back.xml
new file mode 100644
index 0000000000..800941dba5
--- /dev/null
+++ b/JetNews/app/src/main/res/drawable/ic_arrow_back.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/JetNews/app/src/main/res/drawable/ic_bookmark.xml b/JetNews/app/src/main/res/drawable/ic_bookmark.xml
new file mode 100644
index 0000000000..4fa4617a0f
--- /dev/null
+++ b/JetNews/app/src/main/res/drawable/ic_bookmark.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/JetNews/app/src/main/res/drawable/ic_bookmark_outline.xml b/JetNews/app/src/main/res/drawable/ic_bookmark_outline.xml
new file mode 100644
index 0000000000..6ae4b41fc2
--- /dev/null
+++ b/JetNews/app/src/main/res/drawable/ic_bookmark_outline.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/JetNews/app/src/main/res/drawable/ic_check.xml b/JetNews/app/src/main/res/drawable/ic_check.xml
new file mode 100644
index 0000000000..6f1fcce828
--- /dev/null
+++ b/JetNews/app/src/main/res/drawable/ic_check.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/JetNews/app/src/main/res/drawable/ic_home.xml b/JetNews/app/src/main/res/drawable/ic_home.xml
new file mode 100644
index 0000000000..9ef27eace1
--- /dev/null
+++ b/JetNews/app/src/main/res/drawable/ic_home.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/JetNews/app/src/main/res/drawable/ic_list_alt.xml b/JetNews/app/src/main/res/drawable/ic_list_alt.xml
new file mode 100644
index 0000000000..6da9b0852c
--- /dev/null
+++ b/JetNews/app/src/main/res/drawable/ic_list_alt.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/JetNews/app/src/main/res/drawable/ic_more_vert.xml b/JetNews/app/src/main/res/drawable/ic_more_vert.xml
new file mode 100644
index 0000000000..59400ec977
--- /dev/null
+++ b/JetNews/app/src/main/res/drawable/ic_more_vert.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/JetNews/app/src/main/res/drawable/ic_search.xml b/JetNews/app/src/main/res/drawable/ic_search.xml
new file mode 100644
index 0000000000..20c7b4e734
--- /dev/null
+++ b/JetNews/app/src/main/res/drawable/ic_search.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/JetNews/app/src/main/res/drawable/ic_share.xml b/JetNews/app/src/main/res/drawable/ic_share.xml
new file mode 100644
index 0000000000..afb4d89e6f
--- /dev/null
+++ b/JetNews/app/src/main/res/drawable/ic_share.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/JetNews/app/src/main/res/drawable/ic_thumb_up.xml b/JetNews/app/src/main/res/drawable/ic_thumb_up.xml
new file mode 100644
index 0000000000..18fed03ab2
--- /dev/null
+++ b/JetNews/app/src/main/res/drawable/ic_thumb_up.xml
@@ -0,0 +1,9 @@
+
+
+