mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-08-03 10:46:53 -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.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.vector.rememberVectorPainter
|
||||
import androidx.compose.ui.platform.testTag
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.font.FontWeight.Companion.SemiBold
|
||||
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.KiwixTheme
|
||||
import org.kiwix.kiwixmobile.core.ui.theme.MineShaftGray350
|
||||
@ -109,10 +107,7 @@ private fun ActionMenu(actionMenuItems: List<ActionMenuItem>) {
|
||||
modifier = Modifier.testTag(menuItem.testingTag)
|
||||
) {
|
||||
Icon(
|
||||
painter = when (val icon = menuItem.icon) {
|
||||
is IconItem.Vector -> rememberVectorPainter(icon.imageVector)
|
||||
is IconItem.Drawable -> painterResource(icon.drawableRes)
|
||||
},
|
||||
painter = menuItem.icon.toPainter(),
|
||||
contentDescription = stringResource(menuItem.contentDescription),
|
||||
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.runtime.Composable
|
||||
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 org.kiwix.kiwixmobile.core.R
|
||||
import org.kiwix.kiwixmobile.core.ui.models.IconItem
|
||||
import org.kiwix.kiwixmobile.core.ui.models.toPainter
|
||||
import org.kiwix.kiwixmobile.core.ui.theme.White
|
||||
|
||||
/**
|
||||
@ -52,10 +51,7 @@ fun NavigationIcon(
|
||||
) {
|
||||
IconButton(onClick = onClick) {
|
||||
Icon(
|
||||
painter = when (val icon = iconItem) {
|
||||
is IconItem.Vector -> rememberVectorPainter(icon.imageVector)
|
||||
is IconItem.Drawable -> painterResource(icon.drawableRes)
|
||||
},
|
||||
painter = iconItem.toPainter(),
|
||||
contentDescription = stringResource(contentDescription),
|
||||
tint = iconTint
|
||||
)
|
||||
|
@ -19,11 +19,34 @@
|
||||
package org.kiwix.kiwixmobile.core.ui.models
|
||||
|
||||
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.rememberVectorPainter
|
||||
import androidx.compose.ui.res.painterResource
|
||||
|
||||
sealed class IconItem {
|
||||
data class Vector(val imageVector: ImageVector) : IconItem()
|
||||
data class Drawable(
|
||||
@DrawableRes val drawableRes: Int
|
||||
) : 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