Bind ssiv with lifecycle
This commit is contained in:
@@ -125,7 +125,7 @@ dependencies {
|
|||||||
|
|
||||||
implementation 'io.coil-kt:coil-base:2.2.2'
|
implementation 'io.coil-kt:coil-base:2.2.2'
|
||||||
implementation 'io.coil-kt:coil-svg: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 'com.github.solkin:disk-lru-cache:1.4'
|
||||||
|
|
||||||
implementation 'ch.acra:acra-http:5.9.7'
|
implementation 'ch.acra:acra-http:5.9.7'
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package org.koitharu.kotatsu.reader.ui.pager.reversed
|
|||||||
import android.graphics.PointF
|
import android.graphics.PointF
|
||||||
import android.view.Gravity
|
import android.view.Gravity
|
||||||
import android.widget.FrameLayout
|
import android.widget.FrameLayout
|
||||||
|
import androidx.lifecycle.LifecycleOwner
|
||||||
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
|
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
|
||||||
import org.koitharu.kotatsu.core.exceptions.resolve.ExceptionResolver
|
import org.koitharu.kotatsu.core.exceptions.resolve.ExceptionResolver
|
||||||
import org.koitharu.kotatsu.core.model.ZoomMode
|
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
|
import org.koitharu.kotatsu.reader.ui.pager.standard.PageHolder
|
||||||
|
|
||||||
class ReversedPageHolder(
|
class ReversedPageHolder(
|
||||||
|
owner: LifecycleOwner,
|
||||||
binding: ItemPageBinding,
|
binding: ItemPageBinding,
|
||||||
loader: PageLoader,
|
loader: PageLoader,
|
||||||
settings: ReaderSettings,
|
settings: ReaderSettings,
|
||||||
networkState: NetworkState,
|
networkState: NetworkState,
|
||||||
exceptionResolver: ExceptionResolver,
|
exceptionResolver: ExceptionResolver,
|
||||||
) : PageHolder(binding, loader, settings, networkState, exceptionResolver) {
|
) : PageHolder(owner, binding, loader, settings, networkState, exceptionResolver) {
|
||||||
|
|
||||||
init {
|
init {
|
||||||
(binding.textViewNumber.layoutParams as FrameLayout.LayoutParams)
|
(binding.textViewNumber.layoutParams as FrameLayout.LayoutParams)
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package org.koitharu.kotatsu.reader.ui.pager.reversed
|
|||||||
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.lifecycle.LifecycleOwner
|
||||||
import org.koitharu.kotatsu.core.exceptions.resolve.ExceptionResolver
|
import org.koitharu.kotatsu.core.exceptions.resolve.ExceptionResolver
|
||||||
import org.koitharu.kotatsu.core.os.NetworkState
|
import org.koitharu.kotatsu.core.os.NetworkState
|
||||||
import org.koitharu.kotatsu.databinding.ItemPageBinding
|
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
|
import org.koitharu.kotatsu.reader.ui.pager.BaseReaderAdapter
|
||||||
|
|
||||||
class ReversedPagesAdapter(
|
class ReversedPagesAdapter(
|
||||||
|
private val lifecycleOwner: LifecycleOwner,
|
||||||
loader: PageLoader,
|
loader: PageLoader,
|
||||||
settings: ReaderSettings,
|
settings: ReaderSettings,
|
||||||
networkState: NetworkState,
|
networkState: NetworkState,
|
||||||
@@ -23,6 +25,7 @@ class ReversedPagesAdapter(
|
|||||||
networkState: NetworkState,
|
networkState: NetworkState,
|
||||||
exceptionResolver: ExceptionResolver,
|
exceptionResolver: ExceptionResolver,
|
||||||
) = ReversedPageHolder(
|
) = ReversedPageHolder(
|
||||||
|
owner = lifecycleOwner,
|
||||||
binding = ItemPageBinding.inflate(LayoutInflater.from(parent.context), parent, false),
|
binding = ItemPageBinding.inflate(LayoutInflater.from(parent.context), parent, false),
|
||||||
loader = loader,
|
loader = loader,
|
||||||
settings = settings,
|
settings = settings,
|
||||||
|
|||||||
@@ -39,10 +39,11 @@ class ReversedReaderFragment : BaseReader<FragmentReaderStandardBinding>() {
|
|||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
pagerAdapter = ReversedPagesAdapter(
|
pagerAdapter = ReversedPagesAdapter(
|
||||||
viewModel.pageLoader,
|
lifecycleOwner = viewLifecycleOwner,
|
||||||
viewModel.readerSettings,
|
loader = viewModel.pageLoader,
|
||||||
networkState,
|
settings = viewModel.readerSettings,
|
||||||
exceptionResolver,
|
networkState = networkState,
|
||||||
|
exceptionResolver = exceptionResolver,
|
||||||
)
|
)
|
||||||
with(binding.pager) {
|
with(binding.pager) {
|
||||||
adapter = pagerAdapter
|
adapter = pagerAdapter
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import android.graphics.PointF
|
|||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
|
import androidx.lifecycle.LifecycleOwner
|
||||||
import com.davemorrissey.labs.subscaleview.ImageSource
|
import com.davemorrissey.labs.subscaleview.ImageSource
|
||||||
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
|
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
|
||||||
import org.koitharu.kotatsu.R
|
import org.koitharu.kotatsu.R
|
||||||
@@ -19,6 +20,7 @@ import org.koitharu.kotatsu.reader.ui.pager.ReaderPage
|
|||||||
import org.koitharu.kotatsu.utils.ext.*
|
import org.koitharu.kotatsu.utils.ext.*
|
||||||
|
|
||||||
open class PageHolder(
|
open class PageHolder(
|
||||||
|
owner: LifecycleOwner,
|
||||||
binding: ItemPageBinding,
|
binding: ItemPageBinding,
|
||||||
loader: PageLoader,
|
loader: PageLoader,
|
||||||
settings: ReaderSettings,
|
settings: ReaderSettings,
|
||||||
@@ -28,6 +30,7 @@ open class PageHolder(
|
|||||||
View.OnClickListener {
|
View.OnClickListener {
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
binding.ssiv.bindToLifecycle(owner)
|
||||||
binding.ssiv.isEagerLoadingEnabled = !isLowRamDevice(context)
|
binding.ssiv.isEagerLoadingEnabled = !isLowRamDevice(context)
|
||||||
binding.ssiv.addOnImageEventListener(delegate)
|
binding.ssiv.addOnImageEventListener(delegate)
|
||||||
@Suppress("LeakingThis")
|
@Suppress("LeakingThis")
|
||||||
|
|||||||
@@ -38,10 +38,11 @@ class PagerReaderFragment : BaseReader<FragmentReaderStandardBinding>() {
|
|||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
pagesAdapter = PagesAdapter(
|
pagesAdapter = PagesAdapter(
|
||||||
viewModel.pageLoader,
|
lifecycleOwner = viewLifecycleOwner,
|
||||||
viewModel.readerSettings,
|
loader = viewModel.pageLoader,
|
||||||
networkState,
|
settings = viewModel.readerSettings,
|
||||||
exceptionResolver,
|
networkState = networkState,
|
||||||
|
exceptionResolver = exceptionResolver,
|
||||||
)
|
)
|
||||||
with(binding.pager) {
|
with(binding.pager) {
|
||||||
adapter = pagesAdapter
|
adapter = pagesAdapter
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package org.koitharu.kotatsu.reader.ui.pager.standard
|
|||||||
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.lifecycle.LifecycleOwner
|
||||||
import org.koitharu.kotatsu.core.exceptions.resolve.ExceptionResolver
|
import org.koitharu.kotatsu.core.exceptions.resolve.ExceptionResolver
|
||||||
import org.koitharu.kotatsu.core.os.NetworkState
|
import org.koitharu.kotatsu.core.os.NetworkState
|
||||||
import org.koitharu.kotatsu.databinding.ItemPageBinding
|
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
|
import org.koitharu.kotatsu.reader.ui.pager.BaseReaderAdapter
|
||||||
|
|
||||||
class PagesAdapter(
|
class PagesAdapter(
|
||||||
|
private val lifecycleOwner: LifecycleOwner,
|
||||||
loader: PageLoader,
|
loader: PageLoader,
|
||||||
settings: ReaderSettings,
|
settings: ReaderSettings,
|
||||||
networkState: NetworkState,
|
networkState: NetworkState,
|
||||||
@@ -23,6 +25,7 @@ class PagesAdapter(
|
|||||||
networkState: NetworkState,
|
networkState: NetworkState,
|
||||||
exceptionResolver: ExceptionResolver,
|
exceptionResolver: ExceptionResolver,
|
||||||
) = PageHolder(
|
) = PageHolder(
|
||||||
|
owner = lifecycleOwner,
|
||||||
binding = ItemPageBinding.inflate(LayoutInflater.from(parent.context), parent, false),
|
binding = ItemPageBinding.inflate(LayoutInflater.from(parent.context), parent, false),
|
||||||
loader = loader,
|
loader = loader,
|
||||||
settings = settings,
|
settings = settings,
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package org.koitharu.kotatsu.reader.ui.pager.webtoon
|
|||||||
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.lifecycle.LifecycleOwner
|
||||||
import org.koitharu.kotatsu.core.exceptions.resolve.ExceptionResolver
|
import org.koitharu.kotatsu.core.exceptions.resolve.ExceptionResolver
|
||||||
import org.koitharu.kotatsu.core.os.NetworkState
|
import org.koitharu.kotatsu.core.os.NetworkState
|
||||||
import org.koitharu.kotatsu.databinding.ItemPageWebtoonBinding
|
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
|
import org.koitharu.kotatsu.reader.ui.pager.BaseReaderAdapter
|
||||||
|
|
||||||
class WebtoonAdapter(
|
class WebtoonAdapter(
|
||||||
|
private val lifecycleOwner: LifecycleOwner,
|
||||||
loader: PageLoader,
|
loader: PageLoader,
|
||||||
settings: ReaderSettings,
|
settings: ReaderSettings,
|
||||||
networkState: NetworkState,
|
networkState: NetworkState,
|
||||||
@@ -23,6 +25,7 @@ class WebtoonAdapter(
|
|||||||
networkState: NetworkState,
|
networkState: NetworkState,
|
||||||
exceptionResolver: ExceptionResolver,
|
exceptionResolver: ExceptionResolver,
|
||||||
) = WebtoonHolder(
|
) = WebtoonHolder(
|
||||||
|
owner = lifecycleOwner,
|
||||||
binding = ItemPageWebtoonBinding.inflate(
|
binding = ItemPageWebtoonBinding.inflate(
|
||||||
LayoutInflater.from(parent.context),
|
LayoutInflater.from(parent.context),
|
||||||
parent,
|
parent,
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package org.koitharu.kotatsu.reader.ui.pager.webtoon
|
|||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
|
import androidx.lifecycle.LifecycleOwner
|
||||||
import com.davemorrissey.labs.subscaleview.ImageSource
|
import com.davemorrissey.labs.subscaleview.ImageSource
|
||||||
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
|
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
|
||||||
import com.davemorrissey.labs.subscaleview.decoder.SkiaPooledImageRegionDecoder
|
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
|
import org.koitharu.kotatsu.utils.ext.showCompat
|
||||||
|
|
||||||
class WebtoonHolder(
|
class WebtoonHolder(
|
||||||
|
owner: LifecycleOwner,
|
||||||
binding: ItemPageWebtoonBinding,
|
binding: ItemPageWebtoonBinding,
|
||||||
loader: PageLoader,
|
loader: PageLoader,
|
||||||
settings: ReaderSettings,
|
settings: ReaderSettings,
|
||||||
@@ -34,6 +36,7 @@ class WebtoonHolder(
|
|||||||
private val goneOnInvisibleListener = GoneOnInvisibleListener(bindingInfo.progressBar)
|
private val goneOnInvisibleListener = GoneOnInvisibleListener(bindingInfo.progressBar)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
binding.ssiv.bindToLifecycle(owner)
|
||||||
binding.ssiv.regionDecoderFactory = SkiaPooledImageRegionDecoder.Factory()
|
binding.ssiv.regionDecoderFactory = SkiaPooledImageRegionDecoder.Factory()
|
||||||
binding.ssiv.addOnImageEventListener(delegate)
|
binding.ssiv.addOnImageEventListener(delegate)
|
||||||
bindingInfo.buttonRetry.setOnClickListener(this)
|
bindingInfo.buttonRetry.setOnClickListener(this)
|
||||||
|
|||||||
@@ -35,10 +35,11 @@ class WebtoonReaderFragment : BaseReader<FragmentReaderWebtoonBinding>() {
|
|||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
webtoonAdapter = WebtoonAdapter(
|
webtoonAdapter = WebtoonAdapter(
|
||||||
viewModel.pageLoader,
|
lifecycleOwner = viewLifecycleOwner,
|
||||||
viewModel.readerSettings,
|
loader = viewModel.pageLoader,
|
||||||
networkState,
|
settings = viewModel.readerSettings,
|
||||||
exceptionResolver,
|
networkState = networkState,
|
||||||
|
exceptionResolver = exceptionResolver,
|
||||||
)
|
)
|
||||||
with(binding.recyclerView) {
|
with(binding.recyclerView) {
|
||||||
setHasFixedSize(true)
|
setHasFixedSize(true)
|
||||||
|
|||||||
Reference in New Issue
Block a user