From 261ccdda51bec1f9dbb4844ecfb8bbc5d3b23ec9 Mon Sep 17 00:00:00 2001 From: tarsin Date: Thu, 16 Mar 2023 19:38:15 +0800 Subject: [PATCH] Refactor RatingWidget to use imageVec --- .../hippo/ehviewer/ui/widget/RatingWidget.kt | 33 ++++++++++++++----- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/ui/widget/RatingWidget.kt b/app/src/main/java/com/hippo/ehviewer/ui/widget/RatingWidget.kt index 8b6be10ad..861a851b7 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/widget/RatingWidget.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/widget/RatingWidget.kt @@ -2,20 +2,25 @@ package com.hippo.ehviewer.ui.widget import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Star +import androidx.compose.material.icons.filled.StarHalf +import androidx.compose.material.icons.filled.StarOutline import androidx.compose.material3.Icon import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.dimensionResource -import androidx.compose.ui.res.painterResource +import androidx.compose.ui.unit.Dp import com.hippo.ehviewer.R import kotlin.math.roundToInt private val colorYellow800 = Color(0xfff9a825) @Composable -fun SimpleRatingWidget(rating: Float) { +fun MetaRatingWidget(rating: Float, ratingSize: Dp, ratingInterval: Dp) { val r = (rating * 2).roundToInt().coerceIn(0, 10) val fullStar = r / 2 val halfStar = r % 2 @@ -23,27 +28,39 @@ fun SimpleRatingWidget(rating: Float) { Row { repeat(fullStar) { Icon( - painter = painterResource(id = R.drawable.v_star_x16), + imageVector = Icons.Default.Star, contentDescription = null, + modifier = Modifier.size(ratingSize), tint = colorYellow800 ) - Spacer(modifier = Modifier.width(dimensionResource(id = R.dimen.rating_interval))) + Spacer(modifier = Modifier.width(ratingInterval)) } repeat(halfStar) { Icon( - painter = painterResource(id = R.drawable.v_star_half_x16), + imageVector = Icons.Default.StarHalf, contentDescription = null, + modifier = Modifier.size(ratingSize), tint = colorYellow800 ) - Spacer(modifier = Modifier.width(dimensionResource(id = R.dimen.rating_interval))) + Spacer(modifier = Modifier.width(ratingInterval)) } repeat(outlineStar) { Icon( - painter = painterResource(id = R.drawable.v_star_outline_x16), + imageVector = Icons.Default.StarOutline, contentDescription = null, + modifier = Modifier.size(ratingSize), tint = colorYellow800 ) - Spacer(modifier = Modifier.width(dimensionResource(id = R.dimen.rating_interval))) + Spacer(modifier = Modifier.width(ratingInterval)) } } } + +@Composable +fun SimpleRatingWidget(rating: Float) { + MetaRatingWidget( + rating = rating, + ratingSize = dimensionResource(id = R.dimen.rating_size), + ratingInterval = dimensionResource(id = R.dimen.rating_interval) + ) +}