diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryHolder.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryHolder.kt index 4fbaef8dc..e3079480e 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryHolder.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryHolder.kt @@ -15,28 +15,15 @@ */ package com.hippo.ehviewer.ui.scene -import androidx.compose.foundation.combinedClickable -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.aspectRatio -import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.width -import androidx.compose.material3.Badge -import androidx.compose.material3.ElevatedCard -import androidx.compose.material3.Text -import androidx.compose.material3.contentColorFor -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.unit.dp import androidx.recyclerview.widget.RecyclerView import com.hippo.ehviewer.Settings -import com.hippo.ehviewer.client.EhUtils import com.hippo.ehviewer.client.data.GalleryInfo -import com.hippo.ehviewer.ui.widget.EhAsyncThumb +import com.hippo.ehviewer.ui.widget.GalleryInfoGridItem import com.hippo.ehviewer.ui.widget.GalleryInfoListItem import com.hippo.ehviewer.ui.widget.setMD3Content import eu.kanade.tachiyomi.util.system.pxToDp @@ -73,30 +60,13 @@ class ListGalleryHolder( class GridGalleryHolder(private val composeView: ComposeView) : GalleryHolder(composeView) { override fun bind(galleryInfo: GalleryInfo, onClick: () -> Unit, onLongClick: () -> Unit) { - val aspect = (galleryInfo.thumbWidth.toFloat() / galleryInfo.thumbHeight).coerceIn(0.33F, 1.5F) - val color = EhUtils.getCategoryColor(galleryInfo.category) - val simpleLang = galleryInfo.simpleLanguage composeView.setMD3Content { - ElevatedCard(modifier = Modifier.padding(2.dp)) { - Box { - EhAsyncThumb( - model = galleryInfo.thumb, - modifier = Modifier.aspectRatio(aspect).fillMaxWidth().combinedClickable( - onClick = onClick, - onLongClick = onLongClick, - ), - contentScale = ContentScale.Crop, - ) - val container = Color(color) - Badge( - modifier = Modifier.align(Alignment.TopEnd).width(32.dp).height(24.dp), - containerColor = container, - contentColor = contentColorFor(container), - ) { - Text(text = simpleLang?.uppercase().orEmpty()) - } - } - } + GalleryInfoGridItem( + onClick = onClick, + onLongClick = onLongClick, + info = galleryInfo, + modifier = Modifier.padding(2.dp), + ) } } } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/widget/GalleryInfoCard.kt b/app/src/main/java/com/hippo/ehviewer/ui/widget/GalleryInfoCard.kt index 867cf4758..cf364da3d 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/widget/GalleryInfoCard.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/widget/GalleryInfoCard.kt @@ -3,21 +3,27 @@ package com.hippo.ehviewer.ui.widget import androidx.compose.foundation.background import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Download import androidx.compose.material.icons.filled.Favorite +import androidx.compose.material3.Badge import androidx.compose.material3.Card +import androidx.compose.material3.ElevatedCard import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ProvideTextStyle import androidx.compose.material3.Text +import androidx.compose.material3.contentColorFor import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -115,3 +121,35 @@ fun GalleryInfoListItem( } } } + +@Composable +fun GalleryInfoGridItem( + onClick: () -> Unit, + onLongClick: () -> Unit, + info: GalleryInfo, + modifier: Modifier = Modifier, +) { + val aspect = (info.thumbWidth.toFloat() / info.thumbHeight).coerceIn(0.33F, 1.5F) + val color = EhUtils.getCategoryColor(info.category) + val simpleLang = info.simpleLanguage + ElevatedCard(modifier = modifier) { + Box { + EhAsyncThumb( + model = info.thumb, + modifier = Modifier.aspectRatio(aspect).fillMaxWidth().combinedClickable( + onClick = onClick, + onLongClick = onLongClick, + ), + contentScale = ContentScale.Crop, + ) + val container = Color(color) + Badge( + modifier = Modifier.align(Alignment.TopEnd).width(32.dp).height(24.dp), + containerColor = container, + contentColor = contentColorFor(container), + ) { + Text(text = simpleLang?.uppercase().orEmpty()) + } + } + } +}