diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/image/CoilImageView.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/image/CoilImageView.kt index d58c43ed4..fd17f2de6 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/image/CoilImageView.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/image/CoilImageView.kt @@ -114,20 +114,6 @@ open class CoilImageView @JvmOverloads constructor( .build(), ) - @Deprecated("Use more specific overrides instead") - fun setImageAsync(request: ImageRequest) = enqueueRequest( - request.newBuilder() - .lifecycle(request.lifecycle ?: findViewTreeLifecycleOwner()?.lifecycle) - .target(this) - .size( - if (request.sizeResolver == SizeResolver.ORIGINAL) { - ViewSizeResolver(this) - } else { - request.sizeResolver - }, - ).build(), - ) - fun disposeImage() { CoilUtils.dispose(this) currentRequest = null diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/stats/ui/views/PieChartView.kt b/app/src/main/kotlin/org/koitharu/kotatsu/stats/ui/views/PieChartView.kt index 178e25f18..df1199dbd 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/stats/ui/views/PieChartView.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/stats/ui/views/PieChartView.kt @@ -9,7 +9,10 @@ import android.util.AttributeSet import android.view.GestureDetector import android.view.MotionEvent import android.view.View +import androidx.appcompat.widget.TooltipCompat import androidx.core.graphics.ColorUtils +import androidx.core.view.PointerIconCompat +import androidx.core.view.ViewCompat import org.koitharu.kotatsu.core.util.ext.getThemeColor import org.koitharu.kotatsu.core.util.ext.resolveDp import org.koitharu.kotatsu.parsers.util.replaceWith @@ -21,10 +24,12 @@ class PieChartView @JvmOverloads constructor( ) : View(context, attrs, defStyleAttr), GestureDetector.OnGestureListener { private val paint = Paint(Paint.ANTI_ALIAS_FLAG) + private val activePointerIcon = PointerIconCompat.getSystemIcon(context, PointerIconCompat.TYPE_HAND) private val segments = ArrayList() private val chartBounds = RectF() private val clearColor = context.getThemeColor(android.R.attr.colorBackground) private val touchDetector = GestureDetector(context, this) + private var hoverSegment = -1 private var highlightedSegment = -1 var onSegmentClickListener: OnSegmentClickListener? = null @@ -41,6 +46,8 @@ class PieChartView @JvmOverloads constructor( paint.color = segment.color if (i == highlightedSegment) { paint.color = ColorUtils.setAlphaComponent(paint.color, 180) + } else if (i == hoverSegment) { + paint.color = ColorUtils.setAlphaComponent(paint.color, 200) } paint.style = Paint.Style.FILL val sweepAngle = segment.percent * 360f @@ -119,6 +126,23 @@ class PieChartView @JvmOverloads constructor( override fun onFling(e1: MotionEvent?, e2: MotionEvent, velocityX: Float, velocityY: Float): Boolean = false + override fun onHoverEvent(event: MotionEvent): Boolean { + val segment = when (event.actionMasked) { + MotionEvent.ACTION_HOVER_ENTER, + MotionEvent.ACTION_HOVER_MOVE -> findSegmentIndex(event.x, event.y) + + MotionEvent.ACTION_HOVER_EXIT -> -1 + else -> hoverSegment + } + if (hoverSegment != segment) { + hoverSegment = segment + TooltipCompat.setTooltipText(this, segments.getOrNull(segment)?.label) + ViewCompat.setPointerIcon(this, if (segment == -1) null else activePointerIcon) + invalidate() + } + return super.onHoverEvent(event) || segment != -1 + } + fun setData(value: List) { segments.replaceWith(value) invalidate() diff --git a/app/src/main/res/layout/sheet_stats_manga.xml b/app/src/main/res/layout/sheet_stats_manga.xml index 2ecccb782..47846aed6 100644 --- a/app/src/main/res/layout/sheet_stats_manga.xml +++ b/app/src/main/res/layout/sheet_stats_manga.xml @@ -46,8 +46,10 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="?selectableItemBackgroundBorderless" + android:contentDescription="@string/details" android:minWidth="?minTouchTargetSize" android:minHeight="?minTouchTargetSize" + android:tooltipText="@string/details" app:srcCompat="@drawable/ic_open_external" />