Replace custom visibility extension functions

This commit is contained in:
arkon
2020-07-25 11:55:47 -04:00
parent bdc441a5be
commit 9e51d82154
33 changed files with 187 additions and 230 deletions
@@ -21,6 +21,7 @@ import android.view.animation.Animation
import android.view.animation.AnimationUtils
import android.widget.SeekBar
import androidx.core.view.ViewCompat
import androidx.core.view.isVisible
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
import com.google.android.material.snackbar.Snackbar
import eu.kanade.tachiyomi.R
@@ -47,12 +48,10 @@ import eu.kanade.tachiyomi.util.storage.getUriCompat
import eu.kanade.tachiyomi.util.system.GLUtil
import eu.kanade.tachiyomi.util.system.toast
import eu.kanade.tachiyomi.util.view.defaultBar
import eu.kanade.tachiyomi.util.view.gone
import eu.kanade.tachiyomi.util.view.hideBar
import eu.kanade.tachiyomi.util.view.isDefaultBar
import eu.kanade.tachiyomi.util.view.showBar
import eu.kanade.tachiyomi.util.view.snack
import eu.kanade.tachiyomi.util.view.visible
import eu.kanade.tachiyomi.widget.SimpleAnimationListener
import eu.kanade.tachiyomi.widget.SimpleSeekBarListener
import java.io.File
@@ -339,7 +338,7 @@ class ReaderActivity : BaseRxActivity<ReaderActivityBinding, ReaderPresenter>()
} else {
resetDefaultMenuAndBar()
}
binding.readerMenu.visible()
binding.readerMenu.isVisible = true
if (animate) {
val toolbarAnimation = AnimationUtils.loadAnimation(this, R.anim.enter_from_top)
@@ -369,7 +368,7 @@ class ReaderActivity : BaseRxActivity<ReaderActivityBinding, ReaderPresenter>()
val toolbarAnimation = AnimationUtils.loadAnimation(this, R.anim.exit_to_top)
toolbarAnimation.setAnimationListener(object : SimpleAnimationListener() {
override fun onAnimationEnd(animation: Animation) {
binding.readerMenu.gone()
binding.readerMenu.isVisible = false
}
})
binding.toolbar.startAnimation(toolbarAnimation)
@@ -422,7 +421,7 @@ class ReaderActivity : BaseRxActivity<ReaderActivityBinding, ReaderPresenter>()
binding.pageSeekbar.isRTL = newViewer is R2LPagerViewer
binding.pleaseWait.visible()
binding.pleaseWait.isVisible = true
binding.pleaseWait.startAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_in_long))
}
@@ -436,7 +435,7 @@ class ReaderActivity : BaseRxActivity<ReaderActivityBinding, ReaderPresenter>()
* method to the current viewer, but also set the subtitle on the toolbar.
*/
fun setChapters(viewerChapters: ViewerChapters) {
binding.pleaseWait.gone()
binding.pleaseWait.isVisible = false
viewer?.setChapters(viewerChapters)
binding.toolbar.subtitle = viewerChapters.currChapter.chapter.name
@@ -764,7 +763,7 @@ class ReaderActivity : BaseRxActivity<ReaderActivityBinding, ReaderPresenter>()
.onEach { setColorFilterValue(it) }
.launchIn(scope)
} else {
binding.colorOverlay.gone()
binding.colorOverlay.isVisible = false
}
}
@@ -790,11 +789,11 @@ class ReaderActivity : BaseRxActivity<ReaderActivityBinding, ReaderPresenter>()
// Set black overlay visibility.
if (value < 0) {
binding.brightnessOverlay.visible()
binding.brightnessOverlay.isVisible = true
val alpha = (abs(value) * 2.56).toInt()
binding.brightnessOverlay.setBackgroundColor(Color.argb(alpha, 0, 0, 0))
} else {
binding.brightnessOverlay.gone()
binding.brightnessOverlay.isVisible = false
}
}
@@ -802,7 +801,7 @@ class ReaderActivity : BaseRxActivity<ReaderActivityBinding, ReaderPresenter>()
* Sets the color filter [value].
*/
private fun setColorFilterValue(value: Int) {
binding.colorOverlay.visible()
binding.colorOverlay.isVisible = true
binding.colorOverlay.setFilterColor(value, preferences.colorFilterMode().get())
}
}
@@ -4,6 +4,8 @@ import android.os.Bundle
import android.widget.CompoundButton
import android.widget.Spinner
import androidx.annotation.ArrayRes
import androidx.core.view.isInvisible
import androidx.core.view.isVisible
import androidx.core.widget.NestedScrollView
import com.google.android.material.bottomsheet.BottomSheetDialog
import com.tfcporciuncula.flow.Preference
@@ -12,9 +14,6 @@ import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.databinding.ReaderSettingsSheetBinding
import eu.kanade.tachiyomi.ui.reader.viewer.pager.PagerViewer
import eu.kanade.tachiyomi.ui.reader.viewer.webtoon.WebtoonViewer
import eu.kanade.tachiyomi.util.view.gone
import eu.kanade.tachiyomi.util.view.invisible
import eu.kanade.tachiyomi.util.view.visible
import eu.kanade.tachiyomi.widget.IgnoreFirstSpinnerListener
import uy.kohesive.injekt.injectLazy
@@ -80,8 +79,8 @@ class ReaderSettingsSheet(private val activity: ReaderActivity) : BottomSheetDia
* Init the preferences for the pager reader.
*/
private fun initPagerPreferences() {
binding.webtoonPrefsGroup.invisible()
binding.pagerPrefsGroup.visible()
binding.webtoonPrefsGroup.isInvisible = true
binding.pagerPrefsGroup.isVisible = true
binding.scaleType.bindToPreference(preferences.imageScaleType(), 1)
binding.zoomStart.bindToPreference(preferences.zoomStart(), 1)
@@ -91,8 +90,8 @@ class ReaderSettingsSheet(private val activity: ReaderActivity) : BottomSheetDia
* Init the preferences for the webtoon reader.
*/
private fun initWebtoonPreferences() {
binding.pagerPrefsGroup.invisible()
binding.webtoonPrefsGroup.visible()
binding.pagerPrefsGroup.isInvisible = true
binding.webtoonPrefsGroup.isVisible = true
binding.webtoonSidePadding.bindToIntPreference(preferences.webtoonSidePadding(), R.array.webtoon_side_padding_values)
}
@@ -102,7 +101,7 @@ class ReaderSettingsSheet(private val activity: ReaderActivity) : BottomSheetDia
*/
private fun initNavigationPreferences() {
if (!preferences.readWithTapping().get()) {
binding.navigationPrefsGroup.gone()
binding.navigationPrefsGroup.isVisible = false
}
binding.tappingInverted.bindToPreference(preferences.readWithTappingInverted())
@@ -14,9 +14,10 @@ import android.view.animation.Animation
import android.view.animation.DecelerateInterpolator
import android.view.animation.LinearInterpolator
import android.view.animation.RotateAnimation
import androidx.core.view.isGone
import androidx.core.view.isVisible
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.util.system.getResourceColor
import eu.kanade.tachiyomi.util.view.gone
import kotlin.math.min
/**
@@ -154,17 +155,17 @@ class ReaderProgressBar @JvmOverloads constructor(
* Hides this progress bar with an optional fade out if [animate] is true.
*/
fun hide(animate: Boolean = false) {
if (visibility == GONE) return
if (isGone) return
if (!animate) {
gone()
isVisible = false
} else {
ObjectAnimator.ofFloat(this, "alpha", 1f, 0f).apply {
interpolator = DecelerateInterpolator()
duration = 1000
addListener(object : AnimatorListenerAdapter() {
override fun onAnimationEnd(animation: Animator?) {
gone()
isVisible = false
alpha = 1f
}
@@ -13,6 +13,7 @@ import android.widget.FrameLayout
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import androidx.core.view.isVisible
import com.bumptech.glide.load.DataSource
import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.bumptech.glide.load.engine.GlideException
@@ -33,8 +34,6 @@ import eu.kanade.tachiyomi.ui.reader.viewer.pager.PagerConfig.ZoomType
import eu.kanade.tachiyomi.ui.webview.WebViewActivity
import eu.kanade.tachiyomi.util.system.ImageUtil
import eu.kanade.tachiyomi.util.system.dpToPx
import eu.kanade.tachiyomi.util.view.gone
import eu.kanade.tachiyomi.util.view.visible
import eu.kanade.tachiyomi.widget.ViewPagerAdapter
import java.io.InputStream
import java.util.concurrent.TimeUnit
@@ -196,37 +195,37 @@ class PagerPageHolder(
* Called when the page is queued.
*/
private fun setQueued() {
progressBar.visible()
retryButton?.gone()
decodeErrorLayout?.gone()
progressBar.isVisible = true
retryButton?.isVisible = false
decodeErrorLayout?.isVisible = false
}
/**
* Called when the page is loading.
*/
private fun setLoading() {
progressBar.visible()
retryButton?.gone()
decodeErrorLayout?.gone()
progressBar.isVisible = true
retryButton?.isVisible = false
decodeErrorLayout?.isVisible = false
}
/**
* Called when the page is downloading.
*/
private fun setDownloading() {
progressBar.visible()
retryButton?.gone()
decodeErrorLayout?.gone()
progressBar.isVisible = true
retryButton?.isVisible = false
decodeErrorLayout?.isVisible = false
}
/**
* Called when the page is ready.
*/
private fun setImage() {
progressBar.visible()
progressBar.isVisible = true
progressBar.completeAndFadeOut()
retryButton?.gone()
decodeErrorLayout?.gone()
retryButton?.isVisible = false
decodeErrorLayout?.isVisible = false
unsubscribeReadImageHeader()
val streamFn = page.stream ?: return
@@ -258,23 +257,23 @@ class PagerPageHolder(
* Called when the page has an error.
*/
private fun setError() {
progressBar.gone()
initRetryButton().visible()
progressBar.isVisible = false
initRetryButton().isVisible = true
}
/**
* Called when the image is decoded and going to be displayed.
*/
private fun onImageDecoded() {
progressBar.gone()
progressBar.isVisible = false
}
/**
* Called when an image fails to decode.
*/
private fun onImageDecodeError() {
progressBar.gone()
initDecodeErrorLayout().visible()
progressBar.isVisible = false
initDecodeErrorLayout().isVisible = true
}
/**
@@ -5,6 +5,8 @@ import android.view.KeyEvent
import android.view.MotionEvent
import android.view.View
import android.view.ViewGroup.LayoutParams
import androidx.core.view.isGone
import androidx.core.view.isVisible
import androidx.viewpager.widget.ViewPager
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferenceValues.TappingInvertMode
@@ -13,8 +15,6 @@ import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition
import eu.kanade.tachiyomi.ui.reader.model.ReaderPage
import eu.kanade.tachiyomi.ui.reader.model.ViewerChapters
import eu.kanade.tachiyomi.ui.reader.viewer.BaseViewer
import eu.kanade.tachiyomi.util.view.gone
import eu.kanade.tachiyomi.util.view.visible
import timber.log.Timber
/**
@@ -66,7 +66,7 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer {
}
init {
pager.gone() // Don't layout the pager yet
pager.isVisible = false // Don't layout the pager yet
pager.layoutParams = LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)
pager.offscreenPageLimit = 1
pager.id = R.id.reader_pager
@@ -225,11 +225,11 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer {
adapter.setChapters(chapters, forceTransition)
// Layout the pager once a chapter is being set
if (pager.visibility == View.GONE) {
if (pager.isGone) {
Timber.d("Pager first layout")
val pages = chapters.currChapter.pages ?: return
moveToPage(pages[chapters.currChapter.requestedPage])
pager.visible()
pager.isVisible = true
}
}
@@ -13,6 +13,7 @@ import android.widget.LinearLayout
import android.widget.TextView
import androidx.appcompat.widget.AppCompatButton
import androidx.appcompat.widget.AppCompatImageView
import androidx.core.view.isVisible
import com.bumptech.glide.load.DataSource
import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.bumptech.glide.load.engine.GlideException
@@ -31,8 +32,6 @@ import eu.kanade.tachiyomi.ui.reader.viewer.ReaderProgressBar
import eu.kanade.tachiyomi.ui.webview.WebViewActivity
import eu.kanade.tachiyomi.util.system.ImageUtil
import eu.kanade.tachiyomi.util.system.dpToPx
import eu.kanade.tachiyomi.util.view.gone
import eu.kanade.tachiyomi.util.view.visible
import java.io.InputStream
import java.util.concurrent.TimeUnit
import rx.Observable
@@ -145,9 +144,9 @@ class WebtoonPageHolder(
removeDecodeErrorLayout()
subsamplingImageView?.recycle()
subsamplingImageView?.gone()
subsamplingImageView?.isVisible = false
imageView?.let { GlideApp.with(frame).clear(it) }
imageView?.gone()
imageView?.isVisible = false
progressBar.setProgress(0)
}
@@ -238,9 +237,9 @@ class WebtoonPageHolder(
* Called when the page is queued.
*/
private fun setQueued() {
progressContainer.visible()
progressBar.visible()
retryContainer?.gone()
progressContainer.isVisible = true
progressBar.isVisible = true
retryContainer?.isVisible = false
removeDecodeErrorLayout()
}
@@ -248,9 +247,9 @@ class WebtoonPageHolder(
* Called when the page is loading.
*/
private fun setLoading() {
progressContainer.visible()
progressBar.visible()
retryContainer?.gone()
progressContainer.isVisible = true
progressBar.isVisible = true
retryContainer?.isVisible = false
removeDecodeErrorLayout()
}
@@ -258,9 +257,9 @@ class WebtoonPageHolder(
* Called when the page is downloading
*/
private fun setDownloading() {
progressContainer.visible()
progressBar.visible()
retryContainer?.gone()
progressContainer.isVisible = true
progressBar.isVisible = true
retryContainer?.isVisible = false
removeDecodeErrorLayout()
}
@@ -268,10 +267,10 @@ class WebtoonPageHolder(
* Called when the page is ready.
*/
private fun setImage() {
progressContainer.visible()
progressBar.visible()
progressContainer.isVisible = true
progressBar.isVisible = true
progressBar.completeAndFadeOut()
retryContainer?.gone()
retryContainer?.isVisible = false
removeDecodeErrorLayout()
unsubscribeReadImageHeader()
@@ -290,11 +289,11 @@ class WebtoonPageHolder(
.doOnNext { isAnimated ->
if (!isAnimated) {
val subsamplingView = initSubsamplingImageView()
subsamplingView.visible()
subsamplingView.isVisible = true
subsamplingView.setImage(ImageSource.inputStream(openStream!!))
} else {
val imageView = initImageView()
imageView.visible()
imageView.isVisible = true
imageView.setImage(openStream!!)
}
}
@@ -310,23 +309,23 @@ class WebtoonPageHolder(
* Called when the page has an error.
*/
private fun setError() {
progressContainer.gone()
initRetryLayout().visible()
progressContainer.isVisible = false
initRetryLayout().isVisible = true
}
/**
* Called when the image is decoded and going to be displayed.
*/
private fun onImageDecoded() {
progressContainer.gone()
progressContainer.isVisible = false
}
/**
* Called when the image fails to decode.
*/
private fun onImageDecodeError() {
progressContainer.gone()
initDecodeErrorLayout().visible()
progressContainer.isVisible = false
initDecodeErrorLayout().isVisible = true
}
/**
@@ -12,11 +12,11 @@ import android.widget.ProgressBar
import android.widget.TextView
import androidx.appcompat.widget.AppCompatButton
import androidx.appcompat.widget.AppCompatTextView
import androidx.core.view.isVisible
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition
import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter
import eu.kanade.tachiyomi.util.system.dpToPx
import eu.kanade.tachiyomi.util.view.visibleIf
import rx.Subscription
import rx.android.schedulers.AndroidSchedulers
@@ -153,7 +153,7 @@ class WebtoonTransitionHolder(
is ReaderChapter.State.Error -> setError(state.error, transition)
is ReaderChapter.State.Loaded -> setLoaded()
}
pagesContainer.visibleIf { pagesContainer.childCount > 0 }
pagesContainer.isVisible = pagesContainer.childCount > 0
}
addSubscription(statusSubscription)
@@ -5,6 +5,8 @@ import android.view.MotionEvent
import android.view.View
import android.view.ViewGroup
import android.view.ViewGroup.LayoutParams.MATCH_PARENT
import androidx.core.view.isGone
import androidx.core.view.isVisible
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.WebtoonLayoutManager
import eu.kanade.tachiyomi.data.preference.PreferenceValues.TappingInvertMode
@@ -13,8 +15,6 @@ import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition
import eu.kanade.tachiyomi.ui.reader.model.ReaderPage
import eu.kanade.tachiyomi.ui.reader.model.ViewerChapters
import eu.kanade.tachiyomi.ui.reader.viewer.BaseViewer
import eu.kanade.tachiyomi.util.view.gone
import eu.kanade.tachiyomi.util.view.visible
import kotlin.math.max
import kotlin.math.min
import rx.subscriptions.CompositeSubscription
@@ -66,7 +66,7 @@ class WebtoonViewer(val activity: ReaderActivity, val isContinuous: Boolean = tr
val subscriptions = CompositeSubscription()
init {
recycler.gone() // Don't let the recycler layout yet
recycler.isVisible = false // Don't let the recycler layout yet
recycler.layoutParams = ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT)
recycler.itemAnimator = null
recycler.layoutManager = layoutManager
@@ -211,11 +211,11 @@ class WebtoonViewer(val activity: ReaderActivity, val isContinuous: Boolean = tr
val forceTransition = config.alwaysShowChapterTransition || currentPage is ChapterTransition
adapter.setChapters(chapters, forceTransition)
if (recycler.visibility == View.GONE) {
if (recycler.isGone) {
Timber.d("Recycler first layout")
val pages = chapters.currChapter.pages ?: return
moveToPage(pages[chapters.currChapter.requestedPage])
recycler.visible()
recycler.isVisible = true
}
}