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

View File

@ -4,13 +4,19 @@ import android.content.Context
import android.content.pm.PermissionGroupInfo import android.content.pm.PermissionGroupInfo
import android.content.pm.PermissionInfo import android.content.pm.PermissionInfo
import android.net.Uri import android.net.Uri
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes import androidx.annotation.StringRes
import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.graphics.vector.ImageVector
import com.machiav3lli.fdroid.R import com.machiav3lli.fdroid.R
import com.machiav3lli.fdroid.content.Preferences 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.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.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.Download
import com.machiav3lli.fdroid.ui.compose.icons.phosphor.HeartStraight import com.machiav3lli.fdroid.ui.compose.icons.phosphor.HeartStraight
import com.machiav3lli.fdroid.ui.compose.icons.phosphor.HeartStraightFill import com.machiav3lli.fdroid.ui.compose.icons.phosphor.HeartStraightFill
@ -128,19 +134,19 @@ sealed class ActionState(
} }
open class LinkType( open class LinkType(
@DrawableRes val iconResId: Int, val icon: ImageVector,
val title: String, val title: String,
val link: Uri? = null val link: Uri? = null
) )
class DonateType(donate: Donate, context: Context) : LinkType( class DonateType(donate: Donate, context: Context) : LinkType(
iconResId = when (donate) { icon = when (donate) {
is Donate.Regular -> R.drawable.ic_donate_regular is Donate.Regular -> Phosphor.CurrencyDollarSimple
is Donate.Bitcoin -> R.drawable.ic_donate_bitcoin is Donate.Bitcoin -> Phosphor.CurrencyBTC
is Donate.Litecoin -> R.drawable.ic_donate_litecoin is Donate.Litecoin -> Icon.IcDonateLitecoin
is Donate.Flattr -> R.drawable.ic_donate_flattr is Donate.Flattr -> Icon.IcDonateFlattr
is Donate.Liberapay -> R.drawable.ic_donate_liberapay is Donate.Liberapay -> Icon.IcDonateLiberapay
is Donate.OpenCollective -> R.drawable.ic_donate_opencollective is Donate.OpenCollective -> Icon.IcDonateOpencollective
}, },
title = when (donate) { title = when (donate) {
is Donate.Regular -> context.getString(R.string.website) 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.Row
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.wrapContentSize import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
@ -16,7 +17,6 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.machiav3lli.fdroid.entity.LinkType import com.machiav3lli.fdroid.entity.LinkType
@ -41,7 +41,8 @@ fun LinkItem(
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
) { ) {
Icon( Icon(
painter = painterResource(id = linkType.iconResId), modifier = Modifier.size(24.dp),
imageVector = linkType.icon,
contentDescription = linkType.title 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.entity.PermissionsType
import com.machiav3lli.fdroid.service.Connection import com.machiav3lli.fdroid.service.Connection
import com.machiav3lli.fdroid.service.DownloadService 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.compose.utils.Callbacks
import com.machiav3lli.fdroid.ui.dialog.LaunchDialog import com.machiav3lli.fdroid.ui.dialog.LaunchDialog
import com.machiav3lli.fdroid.ui.navigation.NavItem 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()) { if (author.name.isNotEmpty() || author.web.isNotEmpty()) {
links.add( links.add(
LinkType( LinkType(
iconResId = R.drawable.ic_person, icon = Phosphor.User,
title = author.name, title = author.name,
link = author.web.nullIfEmpty()?.let(Uri::parse) link = author.web.nullIfEmpty()?.let(Uri::parse)
) )
@ -323,7 +330,7 @@ fun Product.generateLinks(context: Context): List<LinkType> {
author.email.nullIfEmpty()?.let { author.email.nullIfEmpty()?.let {
links.add( links.add(
LinkType( LinkType(
R.drawable.ic_email, Phosphor.At,
context.getString(R.string.author_email), context.getString(R.string.author_email),
Uri.parse("mailto:$it") Uri.parse("mailto:$it")
) )
@ -331,7 +338,7 @@ fun Product.generateLinks(context: Context): List<LinkType> {
} }
links.addAll(licenses.map { links.addAll(licenses.map {
LinkType( LinkType(
R.drawable.ic_copyright, Phosphor.Copyleft,
it, it,
Uri.parse("https://spdx.org/licenses/$it.html") Uri.parse("https://spdx.org/licenses/$it.html")
) )
@ -340,7 +347,7 @@ fun Product.generateLinks(context: Context): List<LinkType> {
?.let { ?.let {
links.add( links.add(
LinkType( LinkType(
R.drawable.ic_bug_report, Phosphor.Bug,
context.getString(R.string.bug_tracker), context.getString(R.string.bug_tracker),
Uri.parse(it) Uri.parse(it)
) )
@ -349,7 +356,7 @@ fun Product.generateLinks(context: Context): List<LinkType> {
changelog.nullIfEmpty()?.let { changelog.nullIfEmpty()?.let {
links.add( links.add(
LinkType( LinkType(
R.drawable.ic_history, Phosphor.ArrowsClockwise,
context.getString(R.string.changelog), context.getString(R.string.changelog),
Uri.parse(it) Uri.parse(it)
) )
@ -359,7 +366,7 @@ fun Product.generateLinks(context: Context): List<LinkType> {
?.let { ?.let {
links.add( links.add(
LinkType( LinkType(
R.drawable.ic_public, Phosphor.GlobeSimple,
context.getString(R.string.project_website), context.getString(R.string.project_website),
Uri.parse(it) Uri.parse(it)
) )