diff --git a/app/src/main/kotlin/org/fdroid/ui/details/AppDetails.kt b/app/src/main/kotlin/org/fdroid/ui/details/AppDetails.kt
index b12358f50..0c0ad58d5 100644
--- a/app/src/main/kotlin/org/fdroid/ui/details/AppDetails.kt
+++ b/app/src/main/kotlin/org/fdroid/ui/details/AppDetails.kt
@@ -10,6 +10,7 @@ import androidx.compose.foundation.layout.calculateStartPadding
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.text.selection.SelectionContainer
import androidx.compose.foundation.verticalScroll
@@ -19,7 +20,6 @@ import androidx.compose.material.icons.filled.ChangeHistory
import androidx.compose.material.icons.filled.Code
import androidx.compose.material.icons.filled.CurrencyBitcoin
import androidx.compose.material.icons.filled.EditNote
-import androidx.compose.material.icons.filled.Groups
import androidx.compose.material.icons.filled.Home
import androidx.compose.material.icons.filled.Link
import androidx.compose.material.icons.filled.Mail
@@ -52,6 +52,7 @@ import androidx.compose.ui.graphics.vector.rememberVectorPainter
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.layout.onGloballyPositioned
import androidx.compose.ui.platform.LocalLayoutDirection
+import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.LiveRegionMode
import androidx.compose.ui.semantics.liveRegion
@@ -81,7 +82,6 @@ import org.fdroid.R
import org.fdroid.install.InstallState
import org.fdroid.ui.FDroidContent
import org.fdroid.ui.icons.License
-import org.fdroid.ui.icons.Litecoin
import org.fdroid.ui.lists.AppListType
import org.fdroid.ui.navigation.NavigationKey
import org.fdroid.ui.utils.BigLoadingIndicator
@@ -275,7 +275,7 @@ fun AppDetails(
)
item.app.donate?.forEach { donation ->
AppDetailsLink(
- icon = Icons.Default.Link,
+ icon = rememberVectorPainter(Icons.Default.Link),
title = donation,
url = donation,
modifier = Modifier.padding(horizontal = 16.dp).padding(bottom = 8.dp),
@@ -283,7 +283,8 @@ fun AppDetails(
}
item.liberapayUri?.let { liberapayUri ->
AppDetailsLink(
- icon = Icons.Default.ChangeHistory,
+ icon = painterResource(id = R.drawable.ic_donation_liberapay),
+ disableTinting = true,
title = "Liberapay",
url = liberapayUri,
modifier = Modifier.padding(horizontal = 16.dp).padding(bottom = 8.dp),
@@ -291,7 +292,8 @@ fun AppDetails(
}
item.openCollectiveUri?.let { openCollectiveUri ->
AppDetailsLink(
- icon = Icons.Default.Groups,
+ icon = painterResource(id = R.drawable.ic_donation_opencollective),
+ disableTinting = true,
title = "Open Collective",
url = openCollectiveUri,
modifier = Modifier.padding(horizontal = 16.dp).padding(bottom = 8.dp),
@@ -299,7 +301,8 @@ fun AppDetails(
}
item.bitcoinUri?.let { bitcoinUri ->
AppDetailsLink(
- icon = Icons.Default.CurrencyBitcoin,
+ icon = painterResource(id = R.drawable.ic_donation_bitcoin),
+ disableTinting = true,
title = stringResource(R.string.menu_bitcoin),
url = bitcoinUri,
modifier = Modifier.padding(horizontal = 16.dp).padding(bottom = 8.dp),
@@ -307,7 +310,8 @@ fun AppDetails(
}
item.litecoinUri?.let { litecoinUri ->
AppDetailsLink(
- icon = Litecoin,
+ icon = painterResource(id = R.drawable.ic_donation_litecoin),
+ disableTinting = true,
title = stringResource(R.string.menu_litecoin),
url = litecoinUri,
modifier = Modifier.padding(horizontal = 16.dp).padding(bottom = 8.dp),
@@ -323,49 +327,49 @@ fun AppDetails(
Column(modifier = Modifier.padding(start = 16.dp)) {
item.app.webSite?.let { webSite ->
AppDetailsLink(
- icon = Icons.Default.Home,
+ icon = rememberVectorPainter(Icons.Default.Home),
title = stringResource(R.string.menu_website),
url = webSite,
)
}
item.app.issueTracker?.let { issueTracker ->
AppDetailsLink(
- icon = Icons.Default.EditNote,
+ icon = rememberVectorPainter(Icons.Default.EditNote),
title = stringResource(R.string.menu_issues),
url = issueTracker,
)
}
item.app.changelog?.let { changelog ->
AppDetailsLink(
- icon = Icons.Default.ChangeHistory,
+ icon = rememberVectorPainter(Icons.Default.ChangeHistory),
title = stringResource(R.string.menu_changelog),
url = changelog,
)
}
item.app.license?.let { license ->
AppDetailsLink(
- icon = License,
+ icon = rememberVectorPainter(License),
title = stringResource(R.string.menu_license, license),
url = "https://spdx.org/licenses/$license",
)
}
item.app.translation?.let { translation ->
AppDetailsLink(
- icon = Icons.Default.Translate,
+ icon = rememberVectorPainter(Icons.Default.Translate),
title = stringResource(R.string.menu_translation),
url = translation,
)
}
item.app.sourceCode?.let { sourceCode ->
AppDetailsLink(
- icon = Icons.Default.Code,
+ icon = rememberVectorPainter(Icons.Default.Code),
title = stringResource(R.string.menu_source),
url = sourceCode,
)
}
item.app.video?.getBestLocale(LocaleListCompat.getDefault())?.let { video ->
AppDetailsLink(
- icon = Icons.Default.OndemandVideo,
+ icon = rememberVectorPainter(Icons.Default.OndemandVideo),
title = stringResource(R.string.menu_video),
url = video,
)
@@ -386,14 +390,14 @@ fun AppDetails(
Column(modifier = Modifier.padding(start = 16.dp)) {
item.app.authorWebSite?.let { authorWebSite ->
AppDetailsLink(
- icon = Icons.Default.Home,
+ icon = rememberVectorPainter(Icons.Default.Home),
title = stringResource(R.string.menu_website),
url = authorWebSite,
)
}
item.app.authorEmail?.let { authorEmail ->
AppDetailsLink(
- icon = Icons.Default.Mail,
+ icon = rememberVectorPainter(Icons.Default.Mail),
title = stringResource(R.string.menu_email),
url = authorEmail,
)
diff --git a/app/src/main/kotlin/org/fdroid/ui/details/AppDetailsLink.kt b/app/src/main/kotlin/org/fdroid/ui/details/AppDetailsLink.kt
index ec62d4fa9..d9768ce0b 100644
--- a/app/src/main/kotlin/org/fdroid/ui/details/AppDetailsLink.kt
+++ b/app/src/main/kotlin/org/fdroid/ui/details/AppDetailsLink.kt
@@ -6,13 +6,16 @@ import androidx.compose.foundation.layout.Arrangement.spacedBy
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.heightIn
+import androidx.compose.foundation.layout.size
import androidx.compose.material3.Icon
+import androidx.compose.material3.LocalContentColor
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
-import androidx.compose.ui.graphics.vector.ImageVector
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.hapticfeedback.HapticFeedbackType
import androidx.compose.ui.platform.ClipEntry
import androidx.compose.ui.platform.LocalClipboard
@@ -25,7 +28,13 @@ import org.fdroid.R
import org.fdroid.ui.utils.openUriSafe
@Composable
-fun AppDetailsLink(icon: ImageVector, title: String, url: String, modifier: Modifier = Modifier) {
+fun AppDetailsLink(
+ icon: Painter,
+ title: String,
+ url: String,
+ disableTinting: Boolean = false,
+ modifier: Modifier = Modifier)
+{
val uriHandler = LocalUriHandler.current
val haptics = LocalHapticFeedback.current
val clipboardManager = LocalClipboard.current
@@ -47,7 +56,13 @@ fun AppDetailsLink(icon: ImageVector, title: String, url: String, modifier: Modi
onLongClickLabel = stringResource(R.string.copy_link),
),
) {
- Icon(icon, null)
+ Icon(
+ icon,
+ null,
+ // don't tint colorful icons (e.g. for donation options)
+ tint = if (disableTinting) Color.Unspecified else LocalContentColor.current,
+ modifier = Modifier.size(24.dp)
+ )
Text(title)
}
}
diff --git a/app/src/main/kotlin/org/fdroid/ui/icons/Litecoin.kt b/app/src/main/kotlin/org/fdroid/ui/icons/Litecoin.kt
deleted file mode 100644
index 29a5abe96..000000000
--- a/app/src/main/kotlin/org/fdroid/ui/icons/Litecoin.kt
+++ /dev/null
@@ -1,56 +0,0 @@
-package org.fdroid.ui.icons
-
-import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.graphics.SolidColor
-import androidx.compose.ui.graphics.vector.ImageVector
-import androidx.compose.ui.graphics.vector.path
-import androidx.compose.ui.unit.dp
-
-val Litecoin: ImageVector
- get() {
- if (_Litecoin != null) return _Litecoin!!
-
- _Litecoin =
- ImageVector.Builder(
- name = "litecoin",
- defaultWidth = 24.dp,
- defaultHeight = 24.dp,
- viewportWidth = 24f,
- viewportHeight = 24f,
- )
- .apply {
- path(fill = SolidColor(Color(0xFF000000))) {}
- path(fill = SolidColor(Color(0xFF000000))) {}
- path(fill = SolidColor(Color(0xFF000000))) {
- moveTo(12f, 1f)
- arcTo(11f, 11f, 0f, true, false, 23f, 12f)
- arcTo(11f, 11f, 0f, false, false, 12f, 1f)
- close()
- moveToRelative(0.178277f, 11.361877f)
- lineToRelative(-1.14417f, 3.860909f)
- horizontalLineToRelative(6.119981f)
- arcToRelative(0.31398162f, 0.31398162f, 0f, false, true, 0.300677f, 0.401791f)
- lineToRelative(-0.532172f, 1.833333f)
- arcToRelative(0.42041606f, 0.42041606f, 0f, false, true, -0.404451f, 0.303339f)
- horizontalLineTo(7.170537f)
- lineTo(8.7510885f, 13.423561f)
- lineTo(7.0029028f, 13.955733f)
- lineTo(7.3887276f, 12.707789f)
- lineTo(9.1395743f, 12.175616f)
- lineTo(11.358733f, 4.6773101f)
- arcToRelative(0.4177552f, 0.4177552f, 0f, false, true, 0.401789f, -0.305999f)
- horizontalLineToRelative(2.368167f)
- arcToRelative(0.31398162f, 0.31398162f, 0f, false, true, 0.303338f, 0.3991292f)
- lineTo(12.569424f, 11.111273f)
- lineTo(14.31761f, 10.5791f)
- lineTo(13.942429f, 11.848331f)
- close()
- }
- path(fill = SolidColor(Color(0xFF000000))) {}
- }
- .build()
-
- return _Litecoin!!
- }
-
-private var _Litecoin: ImageVector? = null
diff --git a/app/src/main/res/drawable/ic_donation_bitcoin.xml b/app/src/main/res/drawable/ic_donation_bitcoin.xml
new file mode 100644
index 000000000..9444e8476
--- /dev/null
+++ b/app/src/main/res/drawable/ic_donation_bitcoin.xml
@@ -0,0 +1,14 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_donation_liberapay.xml b/app/src/main/res/drawable/ic_donation_liberapay.xml
new file mode 100644
index 000000000..7241d287e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_donation_liberapay.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_donation_litecoin.xml b/app/src/main/res/drawable/ic_donation_litecoin.xml
new file mode 100644
index 000000000..347180737
--- /dev/null
+++ b/app/src/main/res/drawable/ic_donation_litecoin.xml
@@ -0,0 +1,16 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_donation_opencollective.xml b/app/src/main/res/drawable/ic_donation_opencollective.xml
new file mode 100644
index 000000000..bdefc8282
--- /dev/null
+++ b/app/src/main/res/drawable/ic_donation_opencollective.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/app/src/screenshotTestBasicDefaultDebug/reference/org/fdroid/ui/details/DetailsTestKt/DetailsInstallTest_9f4e7551_0.png b/app/src/screenshotTestBasicDefaultDebug/reference/org/fdroid/ui/details/DetailsTestKt/DetailsInstallTest_9f4e7551_0.png
index 7b1fd9083..693332f97 100644
--- a/app/src/screenshotTestBasicDefaultDebug/reference/org/fdroid/ui/details/DetailsTestKt/DetailsInstallTest_9f4e7551_0.png
+++ b/app/src/screenshotTestBasicDefaultDebug/reference/org/fdroid/ui/details/DetailsTestKt/DetailsInstallTest_9f4e7551_0.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:61b512fa575daefef96994eceface3e57215fc98fbdf87259cec391396dcc5ab
-size 280535
+oid sha256:7db37b028cf9bb47933add41a7662b700e0146344ab793b8257827b86c94b5b1
+size 283496
diff --git a/app/src/screenshotTestBasicDefaultDebug/reference/org/fdroid/ui/details/DetailsTestKt/DetailsNightTest_150baa59_0.png b/app/src/screenshotTestBasicDefaultDebug/reference/org/fdroid/ui/details/DetailsTestKt/DetailsNightTest_150baa59_0.png
index e592e2165..194f35ee3 100644
--- a/app/src/screenshotTestBasicDefaultDebug/reference/org/fdroid/ui/details/DetailsTestKt/DetailsNightTest_150baa59_0.png
+++ b/app/src/screenshotTestBasicDefaultDebug/reference/org/fdroid/ui/details/DetailsTestKt/DetailsNightTest_150baa59_0.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:1ad1f6d63b7faee4f29430de1017a884a6c80fa39a8feea0ab269db5d4acc5d1
-size 346754
+oid sha256:cd399ae999c2a0cd9b048b1b7b79d78eea6cc673c25053440c6eda9215239b35
+size 349703
diff --git a/app/src/screenshotTestBasicDefaultDebug/reference/org/fdroid/ui/details/DetailsTestKt/DetailsTest_9f4e7551_0.png b/app/src/screenshotTestBasicDefaultDebug/reference/org/fdroid/ui/details/DetailsTestKt/DetailsTest_9f4e7551_0.png
index 095d4af6f..7173e4ac3 100644
--- a/app/src/screenshotTestBasicDefaultDebug/reference/org/fdroid/ui/details/DetailsTestKt/DetailsTest_9f4e7551_0.png
+++ b/app/src/screenshotTestBasicDefaultDebug/reference/org/fdroid/ui/details/DetailsTestKt/DetailsTest_9f4e7551_0.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:b1ade7881aaf578b91be6a14202ce9d206f9aaacd0ad51763d71d4c5b10896d3
-size 328351
+oid sha256:a0f6881da35cec7bcd9de4e6477a9bd0179c5c8675b17dfc13eed8dbd2fd2861
+size 331438