From 53a6ec50e803fd61a742f8adcf2e516af38a7f3c Mon Sep 17 00:00:00 2001 From: Jays2Kings Date: Sat, 28 Aug 2021 01:12:48 -0400 Subject: [PATCH] Fixes to RTL layouts Fixed the fast scroll making it unable to scroll (why has no one reported this?) Fixed swiping of recycler items being inverted Not RTL but fixed the bookmarks icon when swiping being unreadable in certain themes --- .../tachiyomi/ui/base/MaterialFastScroll.kt | 9 ++++++++- .../ui/base/holder/BaseFlexibleViewHolder.kt | 19 ++++++++++++++++++- .../tachiyomi/ui/download/DownloadHolder.kt | 8 ++++---- .../tachiyomi/ui/manga/MangaDetailsAdapter.kt | 13 +++++++++++-- .../ui/manga/chapter/ChapterHolder.kt | 16 ++++++++-------- .../ui/recents/RecentMangaAdapter.kt | 1 + .../tachiyomi/ui/recents/RecentMangaHolder.kt | 4 ++-- .../tachiyomi/ui/recents/RecentsController.kt | 3 ++- .../tachiyomi/ui/source/SourceHolder.kt | 14 +++++--------- .../layout-sw600dp-land/manga_header_item.xml | 16 ++++++++++++---- .../layout-sw600dp-port/manga_header_item.xml | 16 ++++++++++++---- app/src/main/res/layout/chapters_item.xml | 6 +++--- app/src/main/res/layout/download_item.xml | 4 ++-- app/src/main/res/layout/manga_header_item.xml | 17 ++++++++++++----- app/src/main/res/layout/recent_manga_item.xml | 6 +++--- app/src/main/res/layout/source_item.xml | 4 ++-- 16 files changed, 105 insertions(+), 51 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/base/MaterialFastScroll.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/base/MaterialFastScroll.kt index 53679e137a..7095a6cd01 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/base/MaterialFastScroll.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/base/MaterialFastScroll.kt @@ -11,6 +11,7 @@ import eu.davidea.fastscroller.FastScroller import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.util.system.dpToPx import eu.kanade.tachiyomi.util.system.dpToPxEnd +import eu.kanade.tachiyomi.util.system.isLTR import eu.kanade.tachiyomi.util.view.marginTop import kotlin.math.abs @@ -39,7 +40,13 @@ class MaterialFastScroll @JvmOverloads constructor(context: Context, attrs: Attr when (event.action) { MotionEvent.ACTION_DOWN -> { - if (event.x < handle.x - ViewCompat.getPaddingStart(handle)) return false + if ( + if (context.resources.isLTR) { + event.x < handle.x - ViewCompat.getPaddingStart(handle) + } else { + event.x > handle.width + ViewCompat.getPaddingStart(handle) + } + ) return false val y = event.y startY = event.y if (canScroll) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/base/holder/BaseFlexibleViewHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/base/holder/BaseFlexibleViewHolder.kt index 54285b1fff..78b8503d4a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/base/holder/BaseFlexibleViewHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/base/holder/BaseFlexibleViewHolder.kt @@ -3,10 +3,27 @@ package eu.kanade.tachiyomi.ui.base.holder import android.view.View import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.viewholders.FlexibleViewHolder +import eu.kanade.tachiyomi.util.system.isLTR abstract class BaseFlexibleViewHolder( view: View, adapter: FlexibleAdapter<*>, stickyHeader: Boolean = false ) : - FlexibleViewHolder(view, adapter, stickyHeader) + FlexibleViewHolder(view, adapter, stickyHeader) { + override fun getRearRightView(): View? { + return if (contentView.resources.isLTR) getRearEndView() else getRearStartView() + } + + override fun getRearLeftView(): View? { + return if (contentView.resources.isLTR) getRearStartView() else getRearEndView() + } + + open fun getRearStartView(): View? { + return null + } + + open fun getRearEndView(): View? { + return null + } +} diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadHolder.kt index 716c5b2b90..8d107b010b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadHolder.kt @@ -109,11 +109,11 @@ class DownloadHolder(private val view: View, val adapter: DownloadAdapter) : return binding.frontView } - override fun getRearRightView(): View { - return binding.rightView + override fun getRearStartView(): View { + return binding.startView } - override fun getRearLeftView(): View { - return binding.leftView + override fun getRearEndView(): View { + return binding.endView } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsAdapter.kt index 1e7cab04ec..7adfc6463b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsAdapter.kt @@ -8,6 +8,7 @@ import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.ui.manga.chapter.BaseChapterAdapter import eu.kanade.tachiyomi.ui.manga.chapter.ChapterItem import eu.kanade.tachiyomi.util.chapter.ChapterUtil +import eu.kanade.tachiyomi.util.system.isLTR import uy.kohesive.injekt.injectLazy import java.text.DecimalFormat import java.text.DecimalFormatSymbols @@ -62,8 +63,16 @@ class MangaDetailsAdapter( override fun onItemSwiped(position: Int, direction: Int) { super.onItemSwiped(position, direction) when (direction) { - ItemTouchHelper.RIGHT -> controller.bookmarkChapter(position) - ItemTouchHelper.LEFT -> controller.toggleReadChapter(position) + ItemTouchHelper.RIGHT -> if (recyclerView.resources.isLTR) { + controller.bookmarkChapter(position) + } else { + controller.toggleReadChapter(position) + } + ItemTouchHelper.LEFT -> if (recyclerView.resources.isLTR) { + controller.toggleReadChapter(position) + } else { + controller.bookmarkChapter(position) + } } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChapterHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChapterHolder.kt index 659b8ef9bf..973937a371 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChapterHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChapterHolder.kt @@ -104,14 +104,14 @@ class ChapterHolder( val animatorSet = AnimatorSet() val anim1 = slideAnimation(0f, slide) anim1.startDelay = 1000 - anim1.addListener(StartAnimatorListener { binding.leftView.isVisible = true }) + anim1.addListener(StartAnimatorListener { binding.startView.isVisible = true }) val anim2 = slideAnimation(slide, -slide) anim2.duration = 600 anim2.startDelay = 500 anim2.addUpdateListener { - if (binding.leftView.isVisible && binding.frontView.translationX <= 0) { - binding.leftView.isVisible = false - binding.rightView.isVisible = true + if (binding.startView.isVisible && binding.frontView.translationX <= 0) { + binding.startView.isVisible = false + binding.endView.isVisible = true } } val anim3 = slideAnimation(-slide, 0f) @@ -134,12 +134,12 @@ class ChapterHolder( return binding.frontView } - override fun getRearRightView(): View { - return binding.rightView + override fun getRearEndView(): View { + return binding.endView } - override fun getRearLeftView(): View { - return binding.leftView + override fun getRearStartView(): View { + return binding.startView } private fun resetFrontView() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaAdapter.kt index dcefbbaad5..00a0b08137 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaAdapter.kt @@ -74,6 +74,7 @@ class RecentMangaAdapter(val delegate: RecentsInterface) : super.onItemSwiped(position, direction) when (direction) { ItemTouchHelper.LEFT -> delegate.markAsRead(position) + ItemTouchHelper.RIGHT -> delegate.markAsRead(position) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaHolder.kt index 7b10d95b6d..96f386846e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaHolder.kt @@ -182,7 +182,7 @@ class RecentMangaHolder( return binding.frontView } - override fun getRearRightView(): View { - return binding.rightView + override fun getRearEndView(): View { + return binding.endView } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsController.kt index 5b40bb2ccd..6e996b3bd4 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsController.kt @@ -48,6 +48,7 @@ import eu.kanade.tachiyomi.ui.source.browse.ProgressItem import eu.kanade.tachiyomi.util.system.dpToPx import eu.kanade.tachiyomi.util.system.getBottomGestureInsets import eu.kanade.tachiyomi.util.system.getResourceColor +import eu.kanade.tachiyomi.util.system.isLTR import eu.kanade.tachiyomi.util.system.spToPx import eu.kanade.tachiyomi.util.system.toInt import eu.kanade.tachiyomi.util.view.activityBinding @@ -151,7 +152,7 @@ class RecentsController(bundle: Bundle? = null) : ) adapter.isSwipeEnabled = true adapter.itemTouchHelperCallback.setSwipeFlags( - ItemTouchHelper.LEFT + if (view.resources.isLTR) ItemTouchHelper.LEFT else ItemTouchHelper.RIGHT ) val attrsArray = intArrayOf(android.R.attr.actionBarSize) val array = view.context.obtainStyledAttributes(attrsArray) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/source/SourceHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/source/SourceHolder.kt index 1dd48ec3b6..4f0149ce86 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/source/SourceHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/source/SourceHolder.kt @@ -56,22 +56,18 @@ class SourceHolder(view: View, val adapter: SourceAdapter) : } } - if (source.supportsLatest) { - binding.sourceLatest.isVisible = true - } else { - binding.sourceLatest.isVisible = false - } + binding.sourceLatest.isVisible = source.supportsLatest } override fun getFrontView(): View { return binding.card } - override fun getRearLeftView(): View { - return binding.leftView + override fun getRearStartView(): View { + return binding.startView } - override fun getRearRightView(): View { - return binding.rightView + override fun getRearEndView(): View { + return binding.endView } } diff --git a/app/src/main/res/layout-sw600dp-land/manga_header_item.xml b/app/src/main/res/layout-sw600dp-land/manga_header_item.xml index c50937947e..f88e61864e 100644 --- a/app/src/main/res/layout-sw600dp-land/manga_header_item.xml +++ b/app/src/main/res/layout-sw600dp-land/manga_header_item.xml @@ -84,7 +84,9 @@ diff --git a/app/src/main/res/layout/download_item.xml b/app/src/main/res/layout/download_item.xml index 2ac312a1c8..c185a61b0b 100644 --- a/app/src/main/res/layout/download_item.xml +++ b/app/src/main/res/layout/download_item.xml @@ -6,7 +6,7 @@ xmlns:tools="http://schemas.android.com/tools"> - + tools:text="New Chapters" />