Update: LinkItems' drawable icons with compose

This commit is contained in:
machiav3lli 2022-10-05 02:46:33 +02:00
parent 95095d3936
commit 84017bb9db
4 changed files with 34 additions and 18 deletions

View File

@ -9,6 +9,8 @@ import com.machiav3lli.fdroid.ui.compose.components.appsheet.AntiFeaturesGrid
import com.machiav3lli.fdroid.ui.compose.components.appsheet.LinkItem
import com.machiav3lli.fdroid.ui.compose.components.appsheet.PermissionGrid
import com.machiav3lli.fdroid.ui.compose.components.appsheet.ReleaseItem
import com.machiav3lli.fdroid.ui.compose.icons.Phosphor
import com.machiav3lli.fdroid.ui.compose.icons.phosphor.CurrencyDollarSimple
import com.machiav3lli.fdroid.ui.compose.theme.AppTheme
import com.machiav3lli.fdroid.ui.compose.utils.CustomChip
import com.machiav3lli.fdroid.utility.SampleData
@ -38,7 +40,7 @@ fun LinkItemPreview() {
AppTheme(blackTheme = false) {
LinkItem(
linkType = LinkType(
R.drawable.ic_email,
Phosphor.CurrencyDollarSimple,
stringResource(id = R.string.author_email),
Uri.parse("neostore@neoapps.com")
)

View File

@ -4,13 +4,19 @@ import android.content.Context
import android.content.pm.PermissionGroupInfo
import android.content.pm.PermissionInfo
import android.net.Uri
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes
import androidx.compose.ui.graphics.vector.ImageVector
import com.machiav3lli.fdroid.R
import com.machiav3lli.fdroid.content.Preferences
import com.machiav3lli.fdroid.ui.compose.icons.Icon
import com.machiav3lli.fdroid.ui.compose.icons.Phosphor
import com.machiav3lli.fdroid.ui.compose.icons.icon.IcDonateFlattr
import com.machiav3lli.fdroid.ui.compose.icons.icon.IcDonateLiberapay
import com.machiav3lli.fdroid.ui.compose.icons.icon.IcDonateLitecoin
import com.machiav3lli.fdroid.ui.compose.icons.icon.IcDonateOpencollective
import com.machiav3lli.fdroid.ui.compose.icons.phosphor.ArrowSquareOut
import com.machiav3lli.fdroid.ui.compose.icons.phosphor.CurrencyBTC
import com.machiav3lli.fdroid.ui.compose.icons.phosphor.CurrencyDollarSimple
import com.machiav3lli.fdroid.ui.compose.icons.phosphor.Download
import com.machiav3lli.fdroid.ui.compose.icons.phosphor.HeartStraight
import com.machiav3lli.fdroid.ui.compose.icons.phosphor.HeartStraightFill
@ -128,19 +134,19 @@ sealed class ActionState(
}
open class LinkType(
@DrawableRes val iconResId: Int,
val icon: ImageVector,
val title: String,
val link: Uri? = null
)
class DonateType(donate: Donate, context: Context) : LinkType(
iconResId = when (donate) {
is Donate.Regular -> R.drawable.ic_donate_regular
is Donate.Bitcoin -> R.drawable.ic_donate_bitcoin
is Donate.Litecoin -> R.drawable.ic_donate_litecoin
is Donate.Flattr -> R.drawable.ic_donate_flattr
is Donate.Liberapay -> R.drawable.ic_donate_liberapay
is Donate.OpenCollective -> R.drawable.ic_donate_opencollective
icon = when (donate) {
is Donate.Regular -> Phosphor.CurrencyDollarSimple
is Donate.Bitcoin -> Phosphor.CurrencyBTC
is Donate.Litecoin -> Icon.IcDonateLitecoin
is Donate.Flattr -> Icon.IcDonateFlattr
is Donate.Liberapay -> Icon.IcDonateLiberapay
is Donate.OpenCollective -> Icon.IcDonateOpencollective
},
title = when (donate) {
is Donate.Regular -> context.getString(R.string.website)

View File

@ -8,6 +8,7 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
@ -16,7 +17,6 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import com.machiav3lli.fdroid.entity.LinkType
@ -41,7 +41,8 @@ fun LinkItem(
verticalAlignment = Alignment.CenterVertically
) {
Icon(
painter = painterResource(id = linkType.iconResId),
modifier = Modifier.size(24.dp),
imageVector = linkType.icon,
contentDescription = linkType.title
)

View File

@ -54,6 +54,13 @@ import com.machiav3lli.fdroid.entity.LinkType
import com.machiav3lli.fdroid.entity.PermissionsType
import com.machiav3lli.fdroid.service.Connection
import com.machiav3lli.fdroid.service.DownloadService
import com.machiav3lli.fdroid.ui.compose.icons.Phosphor
import com.machiav3lli.fdroid.ui.compose.icons.phosphor.ArrowsClockwise
import com.machiav3lli.fdroid.ui.compose.icons.phosphor.At
import com.machiav3lli.fdroid.ui.compose.icons.phosphor.Bug
import com.machiav3lli.fdroid.ui.compose.icons.phosphor.Copyleft
import com.machiav3lli.fdroid.ui.compose.icons.phosphor.GlobeSimple
import com.machiav3lli.fdroid.ui.compose.icons.phosphor.User
import com.machiav3lli.fdroid.ui.compose.utils.Callbacks
import com.machiav3lli.fdroid.ui.dialog.LaunchDialog
import com.machiav3lli.fdroid.ui.navigation.NavItem
@ -314,7 +321,7 @@ fun Product.generateLinks(context: Context): List<LinkType> {
if (author.name.isNotEmpty() || author.web.isNotEmpty()) {
links.add(
LinkType(
iconResId = R.drawable.ic_person,
icon = Phosphor.User,
title = author.name,
link = author.web.nullIfEmpty()?.let(Uri::parse)
)
@ -323,7 +330,7 @@ fun Product.generateLinks(context: Context): List<LinkType> {
author.email.nullIfEmpty()?.let {
links.add(
LinkType(
R.drawable.ic_email,
Phosphor.At,
context.getString(R.string.author_email),
Uri.parse("mailto:$it")
)
@ -331,7 +338,7 @@ fun Product.generateLinks(context: Context): List<LinkType> {
}
links.addAll(licenses.map {
LinkType(
R.drawable.ic_copyright,
Phosphor.Copyleft,
it,
Uri.parse("https://spdx.org/licenses/$it.html")
)
@ -340,7 +347,7 @@ fun Product.generateLinks(context: Context): List<LinkType> {
?.let {
links.add(
LinkType(
R.drawable.ic_bug_report,
Phosphor.Bug,
context.getString(R.string.bug_tracker),
Uri.parse(it)
)
@ -349,7 +356,7 @@ fun Product.generateLinks(context: Context): List<LinkType> {
changelog.nullIfEmpty()?.let {
links.add(
LinkType(
R.drawable.ic_history,
Phosphor.ArrowsClockwise,
context.getString(R.string.changelog),
Uri.parse(it)
)
@ -359,7 +366,7 @@ fun Product.generateLinks(context: Context): List<LinkType> {
?.let {
links.add(
LinkType(
R.drawable.ic_public,
Phosphor.GlobeSimple,
context.getString(R.string.project_website),
Uri.parse(it)
)