From 04afe7a93415c46415ce91f84e528e85b0cedb18 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Wed, 28 Dec 2022 14:59:07 +0200 Subject: [PATCH] Bind ssiv with lifecycle --- app/build.gradle | 2 +- .../reader/ui/pager/reversed/ReversedPageHolder.kt | 4 +++- .../reader/ui/pager/reversed/ReversedPagesAdapter.kt | 3 +++ .../reader/ui/pager/reversed/ReversedReaderFragment.kt | 9 +++++---- .../kotatsu/reader/ui/pager/standard/PageHolder.kt | 3 +++ .../reader/ui/pager/standard/PagerReaderFragment.kt | 9 +++++---- .../kotatsu/reader/ui/pager/standard/PagesAdapter.kt | 3 +++ .../kotatsu/reader/ui/pager/webtoon/WebtoonAdapter.kt | 3 +++ .../kotatsu/reader/ui/pager/webtoon/WebtoonHolder.kt | 3 +++ .../reader/ui/pager/webtoon/WebtoonReaderFragment.kt | 9 +++++---- 10 files changed, 34 insertions(+), 14 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 3a812af6a..7f27b4808 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -125,7 +125,7 @@ dependencies { implementation 'io.coil-kt:coil-base:2.2.2' implementation 'io.coil-kt:coil-svg:2.2.2' - implementation 'com.github.KotatsuApp:subsampling-scale-image-view:95e6c188c6' + implementation 'com.github.KotatsuApp:subsampling-scale-image-view:1b19231b2f' implementation 'com.github.solkin:disk-lru-cache:1.4' implementation 'ch.acra:acra-http:5.9.7' diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/reversed/ReversedPageHolder.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/reversed/ReversedPageHolder.kt index f907de4a9..2348965a0 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/reversed/ReversedPageHolder.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/reversed/ReversedPageHolder.kt @@ -3,6 +3,7 @@ package org.koitharu.kotatsu.reader.ui.pager.reversed import android.graphics.PointF import android.view.Gravity import android.widget.FrameLayout +import androidx.lifecycle.LifecycleOwner import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView import org.koitharu.kotatsu.core.exceptions.resolve.ExceptionResolver import org.koitharu.kotatsu.core.model.ZoomMode @@ -13,12 +14,13 @@ import org.koitharu.kotatsu.reader.ui.config.ReaderSettings import org.koitharu.kotatsu.reader.ui.pager.standard.PageHolder class ReversedPageHolder( + owner: LifecycleOwner, binding: ItemPageBinding, loader: PageLoader, settings: ReaderSettings, networkState: NetworkState, exceptionResolver: ExceptionResolver, -) : PageHolder(binding, loader, settings, networkState, exceptionResolver) { +) : PageHolder(owner, binding, loader, settings, networkState, exceptionResolver) { init { (binding.textViewNumber.layoutParams as FrameLayout.LayoutParams) diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/reversed/ReversedPagesAdapter.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/reversed/ReversedPagesAdapter.kt index 4c6eeb28e..e81b1cfec 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/reversed/ReversedPagesAdapter.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/reversed/ReversedPagesAdapter.kt @@ -2,6 +2,7 @@ package org.koitharu.kotatsu.reader.ui.pager.reversed import android.view.LayoutInflater import android.view.ViewGroup +import androidx.lifecycle.LifecycleOwner import org.koitharu.kotatsu.core.exceptions.resolve.ExceptionResolver import org.koitharu.kotatsu.core.os.NetworkState import org.koitharu.kotatsu.databinding.ItemPageBinding @@ -10,6 +11,7 @@ import org.koitharu.kotatsu.reader.ui.config.ReaderSettings import org.koitharu.kotatsu.reader.ui.pager.BaseReaderAdapter class ReversedPagesAdapter( + private val lifecycleOwner: LifecycleOwner, loader: PageLoader, settings: ReaderSettings, networkState: NetworkState, @@ -23,6 +25,7 @@ class ReversedPagesAdapter( networkState: NetworkState, exceptionResolver: ExceptionResolver, ) = ReversedPageHolder( + owner = lifecycleOwner, binding = ItemPageBinding.inflate(LayoutInflater.from(parent.context), parent, false), loader = loader, settings = settings, diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/reversed/ReversedReaderFragment.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/reversed/ReversedReaderFragment.kt index 0302134dd..d8f7b9b99 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/reversed/ReversedReaderFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/reversed/ReversedReaderFragment.kt @@ -39,10 +39,11 @@ class ReversedReaderFragment : BaseReader() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) pagerAdapter = ReversedPagesAdapter( - viewModel.pageLoader, - viewModel.readerSettings, - networkState, - exceptionResolver, + lifecycleOwner = viewLifecycleOwner, + loader = viewModel.pageLoader, + settings = viewModel.readerSettings, + networkState = networkState, + exceptionResolver = exceptionResolver, ) with(binding.pager) { adapter = pagerAdapter diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/standard/PageHolder.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/standard/PageHolder.kt index c2501e499..efa8e4dcd 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/standard/PageHolder.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/standard/PageHolder.kt @@ -5,6 +5,7 @@ import android.graphics.PointF import android.net.Uri import android.view.View import androidx.core.view.isVisible +import androidx.lifecycle.LifecycleOwner import com.davemorrissey.labs.subscaleview.ImageSource import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView import org.koitharu.kotatsu.R @@ -19,6 +20,7 @@ import org.koitharu.kotatsu.reader.ui.pager.ReaderPage import org.koitharu.kotatsu.utils.ext.* open class PageHolder( + owner: LifecycleOwner, binding: ItemPageBinding, loader: PageLoader, settings: ReaderSettings, @@ -28,6 +30,7 @@ open class PageHolder( View.OnClickListener { init { + binding.ssiv.bindToLifecycle(owner) binding.ssiv.isEagerLoadingEnabled = !isLowRamDevice(context) binding.ssiv.addOnImageEventListener(delegate) @Suppress("LeakingThis") diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/standard/PagerReaderFragment.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/standard/PagerReaderFragment.kt index 07633f5e2..af20be177 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/standard/PagerReaderFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/standard/PagerReaderFragment.kt @@ -38,10 +38,11 @@ class PagerReaderFragment : BaseReader() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) pagesAdapter = PagesAdapter( - viewModel.pageLoader, - viewModel.readerSettings, - networkState, - exceptionResolver, + lifecycleOwner = viewLifecycleOwner, + loader = viewModel.pageLoader, + settings = viewModel.readerSettings, + networkState = networkState, + exceptionResolver = exceptionResolver, ) with(binding.pager) { adapter = pagesAdapter diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/standard/PagesAdapter.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/standard/PagesAdapter.kt index a36057bf7..0c562ae4d 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/standard/PagesAdapter.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/standard/PagesAdapter.kt @@ -2,6 +2,7 @@ package org.koitharu.kotatsu.reader.ui.pager.standard import android.view.LayoutInflater import android.view.ViewGroup +import androidx.lifecycle.LifecycleOwner import org.koitharu.kotatsu.core.exceptions.resolve.ExceptionResolver import org.koitharu.kotatsu.core.os.NetworkState import org.koitharu.kotatsu.databinding.ItemPageBinding @@ -10,6 +11,7 @@ import org.koitharu.kotatsu.reader.ui.config.ReaderSettings import org.koitharu.kotatsu.reader.ui.pager.BaseReaderAdapter class PagesAdapter( + private val lifecycleOwner: LifecycleOwner, loader: PageLoader, settings: ReaderSettings, networkState: NetworkState, @@ -23,6 +25,7 @@ class PagesAdapter( networkState: NetworkState, exceptionResolver: ExceptionResolver, ) = PageHolder( + owner = lifecycleOwner, binding = ItemPageBinding.inflate(LayoutInflater.from(parent.context), parent, false), loader = loader, settings = settings, diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonAdapter.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonAdapter.kt index e47711f49..607f33ad6 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonAdapter.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonAdapter.kt @@ -2,6 +2,7 @@ package org.koitharu.kotatsu.reader.ui.pager.webtoon import android.view.LayoutInflater import android.view.ViewGroup +import androidx.lifecycle.LifecycleOwner import org.koitharu.kotatsu.core.exceptions.resolve.ExceptionResolver import org.koitharu.kotatsu.core.os.NetworkState import org.koitharu.kotatsu.databinding.ItemPageWebtoonBinding @@ -10,6 +11,7 @@ import org.koitharu.kotatsu.reader.ui.config.ReaderSettings import org.koitharu.kotatsu.reader.ui.pager.BaseReaderAdapter class WebtoonAdapter( + private val lifecycleOwner: LifecycleOwner, loader: PageLoader, settings: ReaderSettings, networkState: NetworkState, @@ -23,6 +25,7 @@ class WebtoonAdapter( networkState: NetworkState, exceptionResolver: ExceptionResolver, ) = WebtoonHolder( + owner = lifecycleOwner, binding = ItemPageWebtoonBinding.inflate( LayoutInflater.from(parent.context), parent, diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonHolder.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonHolder.kt index 81ce8fb80..c8cfa3714 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonHolder.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonHolder.kt @@ -3,6 +3,7 @@ package org.koitharu.kotatsu.reader.ui.pager.webtoon import android.net.Uri import android.view.View import androidx.core.view.isVisible +import androidx.lifecycle.LifecycleOwner import com.davemorrissey.labs.subscaleview.ImageSource import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView import com.davemorrissey.labs.subscaleview.decoder.SkiaPooledImageRegionDecoder @@ -22,6 +23,7 @@ import org.koitharu.kotatsu.utils.ext.setProgressCompat import org.koitharu.kotatsu.utils.ext.showCompat class WebtoonHolder( + owner: LifecycleOwner, binding: ItemPageWebtoonBinding, loader: PageLoader, settings: ReaderSettings, @@ -34,6 +36,7 @@ class WebtoonHolder( private val goneOnInvisibleListener = GoneOnInvisibleListener(bindingInfo.progressBar) init { + binding.ssiv.bindToLifecycle(owner) binding.ssiv.regionDecoderFactory = SkiaPooledImageRegionDecoder.Factory() binding.ssiv.addOnImageEventListener(delegate) bindingInfo.buttonRetry.setOnClickListener(this) diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonReaderFragment.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonReaderFragment.kt index 1142fedcb..072e42169 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonReaderFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonReaderFragment.kt @@ -35,10 +35,11 @@ class WebtoonReaderFragment : BaseReader() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) webtoonAdapter = WebtoonAdapter( - viewModel.pageLoader, - viewModel.readerSettings, - networkState, - exceptionResolver, + lifecycleOwner = viewLifecycleOwner, + loader = viewModel.pageLoader, + settings = viewModel.readerSettings, + networkState = networkState, + exceptionResolver = exceptionResolver, ) with(binding.recyclerView) { setHasFixedSize(true)