mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-08 14:52:13 -04:00
Added support for loading ImageBitmap
in our IconItem
class, allowing us to load any type of image wherever needed.
* Created an extension function (`toPainter()``) to encapsulate the logic, preventing code duplication. Now, we can directly call this function, and it will load the image based on the provided type.
This commit is contained in:
parent
817ec20ad9
commit
8e09ec66ea
@ -34,13 +34,11 @@ 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.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.graphics.vector.rememberVectorPainter
|
|
||||||
import androidx.compose.ui.platform.testTag
|
import androidx.compose.ui.platform.testTag
|
||||||
import androidx.compose.ui.res.painterResource
|
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.text.font.FontWeight.Companion.SemiBold
|
import androidx.compose.ui.text.font.FontWeight.Companion.SemiBold
|
||||||
import org.kiwix.kiwixmobile.core.ui.models.ActionMenuItem
|
import org.kiwix.kiwixmobile.core.ui.models.ActionMenuItem
|
||||||
import org.kiwix.kiwixmobile.core.ui.models.IconItem
|
import org.kiwix.kiwixmobile.core.ui.models.toPainter
|
||||||
import org.kiwix.kiwixmobile.core.ui.theme.Black
|
import org.kiwix.kiwixmobile.core.ui.theme.Black
|
||||||
import org.kiwix.kiwixmobile.core.ui.theme.KiwixTheme
|
import org.kiwix.kiwixmobile.core.ui.theme.KiwixTheme
|
||||||
import org.kiwix.kiwixmobile.core.ui.theme.MineShaftGray350
|
import org.kiwix.kiwixmobile.core.ui.theme.MineShaftGray350
|
||||||
@ -109,10 +107,7 @@ private fun ActionMenu(actionMenuItems: List<ActionMenuItem>) {
|
|||||||
modifier = Modifier.testTag(menuItem.testingTag)
|
modifier = Modifier.testTag(menuItem.testingTag)
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
painter = when (val icon = menuItem.icon) {
|
painter = menuItem.icon.toPainter(),
|
||||||
is IconItem.Vector -> rememberVectorPainter(icon.imageVector)
|
|
||||||
is IconItem.Drawable -> painterResource(icon.drawableRes)
|
|
||||||
},
|
|
||||||
contentDescription = stringResource(menuItem.contentDescription),
|
contentDescription = stringResource(menuItem.contentDescription),
|
||||||
tint = if (menuItem.isEnabled) menuItem.iconTint else Color.Gray
|
tint = if (menuItem.isEnabled) menuItem.iconTint else Color.Gray
|
||||||
)
|
)
|
||||||
|
@ -25,11 +25,10 @@ import androidx.compose.material3.Icon
|
|||||||
import androidx.compose.material3.IconButton
|
import androidx.compose.material3.IconButton
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.graphics.vector.rememberVectorPainter
|
|
||||||
import androidx.compose.ui.res.painterResource
|
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import org.kiwix.kiwixmobile.core.R
|
import org.kiwix.kiwixmobile.core.R
|
||||||
import org.kiwix.kiwixmobile.core.ui.models.IconItem
|
import org.kiwix.kiwixmobile.core.ui.models.IconItem
|
||||||
|
import org.kiwix.kiwixmobile.core.ui.models.toPainter
|
||||||
import org.kiwix.kiwixmobile.core.ui.theme.White
|
import org.kiwix.kiwixmobile.core.ui.theme.White
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -52,10 +51,7 @@ fun NavigationIcon(
|
|||||||
) {
|
) {
|
||||||
IconButton(onClick = onClick) {
|
IconButton(onClick = onClick) {
|
||||||
Icon(
|
Icon(
|
||||||
painter = when (val icon = iconItem) {
|
painter = iconItem.toPainter(),
|
||||||
is IconItem.Vector -> rememberVectorPainter(icon.imageVector)
|
|
||||||
is IconItem.Drawable -> painterResource(icon.drawableRes)
|
|
||||||
},
|
|
||||||
contentDescription = stringResource(contentDescription),
|
contentDescription = stringResource(contentDescription),
|
||||||
tint = iconTint
|
tint = iconTint
|
||||||
)
|
)
|
||||||
|
@ -19,11 +19,34 @@
|
|||||||
package org.kiwix.kiwixmobile.core.ui.models
|
package org.kiwix.kiwixmobile.core.ui.models
|
||||||
|
|
||||||
import androidx.annotation.DrawableRes
|
import androidx.annotation.DrawableRes
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.remember
|
||||||
|
import androidx.compose.ui.graphics.ImageBitmap
|
||||||
|
import androidx.compose.ui.graphics.painter.BitmapPainter
|
||||||
|
import androidx.compose.ui.graphics.painter.Painter
|
||||||
|
import androidx.compose.material3.Icon
|
||||||
import androidx.compose.ui.graphics.vector.ImageVector
|
import androidx.compose.ui.graphics.vector.ImageVector
|
||||||
|
import androidx.compose.ui.graphics.vector.rememberVectorPainter
|
||||||
|
import androidx.compose.ui.res.painterResource
|
||||||
|
|
||||||
sealed class IconItem {
|
sealed class IconItem {
|
||||||
data class Vector(val imageVector: ImageVector) : IconItem()
|
data class Vector(val imageVector: ImageVector) : IconItem()
|
||||||
data class Drawable(
|
data class Drawable(
|
||||||
@DrawableRes val drawableRes: Int
|
@DrawableRes val drawableRes: Int
|
||||||
) : IconItem()
|
) : IconItem()
|
||||||
|
|
||||||
|
data class Bitmap(val bitmap: ImageBitmap) : IconItem()
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extension function to convert an [IconItem] into a [Painter] for use in Composables.
|
||||||
|
* This ensures that any type of icon can be easily used with the [Icon] Composable.
|
||||||
|
*/
|
||||||
|
@Composable
|
||||||
|
fun IconItem.toPainter(): Painter {
|
||||||
|
return when (this) {
|
||||||
|
is IconItem.Vector -> rememberVectorPainter(imageVector)
|
||||||
|
is IconItem.Drawable -> painterResource(drawableRes)
|
||||||
|
is IconItem.Bitmap -> remember { BitmapPainter(bitmap) }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user