Add reading mode toggle
(cherry picked from commit 1e58b05ead62e68373775afb309fcad8b28df957) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt # app/src/main/res/layout/reader_activity.xml
This commit is contained in:
parent
3122f783a9
commit
7164f686d4
@ -54,6 +54,7 @@ import eu.kanade.tachiyomi.ui.reader.model.ViewerChapters
|
||||
import eu.kanade.tachiyomi.ui.reader.setting.OrientationType
|
||||
import eu.kanade.tachiyomi.ui.reader.setting.ReaderColorFilterSheet
|
||||
import eu.kanade.tachiyomi.ui.reader.setting.ReaderSettingsSheet
|
||||
import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType
|
||||
import eu.kanade.tachiyomi.ui.reader.viewer.BaseViewer
|
||||
import eu.kanade.tachiyomi.ui.reader.viewer.pager.L2RPagerViewer
|
||||
import eu.kanade.tachiyomi.ui.reader.viewer.pager.PagerViewer
|
||||
@ -103,6 +104,16 @@ import kotlin.time.seconds
|
||||
@RequiresPresenter(ReaderPresenter::class)
|
||||
class ReaderActivity : BaseRxActivity<ReaderActivityBinding, ReaderPresenter>() {
|
||||
|
||||
companion object {
|
||||
fun newIntent(context: Context, manga: Manga, chapter: Chapter): Intent {
|
||||
return Intent(context, ReaderActivity::class.java).apply {
|
||||
putExtra("manga", manga.id)
|
||||
putExtra("chapter", chapter.id)
|
||||
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private val preferences: PreferencesHelper by injectLazy()
|
||||
|
||||
/**
|
||||
@ -145,24 +156,7 @@ class ReaderActivity : BaseRxActivity<ReaderActivityBinding, ReaderPresenter>()
|
||||
@Suppress("DEPRECATION")
|
||||
private var progressDialog: ProgressDialog? = null
|
||||
|
||||
private var rotationToast: Toast? = null
|
||||
|
||||
companion object {
|
||||
@Suppress("unused")
|
||||
const val LEFT_TO_RIGHT = 1
|
||||
const val RIGHT_TO_LEFT = 2
|
||||
const val VERTICAL = 3
|
||||
const val WEBTOON = 4
|
||||
const val VERTICAL_PLUS = 5
|
||||
|
||||
fun newIntent(context: Context, manga: Manga, chapter: Chapter): Intent {
|
||||
return Intent(context, ReaderActivity::class.java).apply {
|
||||
putExtra("manga", manga.id)
|
||||
putExtra("chapter", chapter.id)
|
||||
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
|
||||
}
|
||||
}
|
||||
}
|
||||
private var menuToggleToast: Toast? = null
|
||||
|
||||
/**
|
||||
* Called when the activity is created. Initializes the presenter and configuration.
|
||||
@ -467,14 +461,22 @@ class ReaderActivity : BaseRxActivity<ReaderActivityBinding, ReaderPresenter>()
|
||||
ReaderSettingsSheet(this).show()
|
||||
}
|
||||
|
||||
/*binding.actionRotation.setOnClickListener {
|
||||
/*binding.actionReaderMode.setOnClickListener {
|
||||
val newReadingMode = ReadingModeType.getNextReadingMode(presenter.manga?.viewer ?: 0)
|
||||
presenter.setMangaViewer(newReadingMode.prefValue)
|
||||
|
||||
menuToggleToast?.cancel()
|
||||
menuToggleToast = toast(newReadingMode.stringRes)
|
||||
}
|
||||
|
||||
binding.actionRotation.setOnClickListener {
|
||||
val newOrientation = OrientationType.getNextOrientation(preferences.rotation().get(), resources)
|
||||
|
||||
preferences.rotation().set(newOrientation.prefValue)
|
||||
setOrientation(newOrientation.flag)
|
||||
|
||||
rotationToast?.cancel()
|
||||
rotationToast = toast(newOrientation.stringRes)
|
||||
menuToggleToast?.cancel()
|
||||
menuToggleToast = toast(newOrientation.stringRes)
|
||||
}
|
||||
preferences.rotation().asImmediateFlow { updateRotationShortcut(it) }
|
||||
.onEach {
|
||||
@ -805,10 +807,10 @@ class ReaderActivity : BaseRxActivity<ReaderActivityBinding, ReaderPresenter>()
|
||||
fun setManga(manga: Manga) {
|
||||
val prevViewer = viewer
|
||||
val newViewer = when (presenter.getMangaViewer()) {
|
||||
RIGHT_TO_LEFT -> R2LPagerViewer(this)
|
||||
VERTICAL -> VerticalPagerViewer(this)
|
||||
WEBTOON -> WebtoonViewer(this)
|
||||
VERTICAL_PLUS -> WebtoonViewer(this, isContinuous = false /* SY --> */, tapByPage = preferences.continuousVerticalTappingByPage().get() /* SY <-- */)
|
||||
ReadingModeType.RIGHT_TO_LEFT.prefValue -> R2LPagerViewer(this)
|
||||
ReadingModeType.VERTICAL.prefValue -> VerticalPagerViewer(this)
|
||||
ReadingModeType.WEBTOON.prefValue -> WebtoonViewer(this)
|
||||
ReadingModeType.CONTINUOUS_VERTICAL.prefValue -> WebtoonViewer(this, isContinuous = false /* SY --> */, tapByPage = preferences.continuousVerticalTappingByPage().get() /* SY <-- */)
|
||||
else -> L2RPagerViewer(this)
|
||||
}
|
||||
|
||||
@ -822,7 +824,7 @@ class ReaderActivity : BaseRxActivity<ReaderActivityBinding, ReaderPresenter>()
|
||||
|
||||
// SY -->
|
||||
val defaultReaderType = manga.defaultReaderType(manga.mangaType(sourceName = sourceManager.getOrStub(manga.source).name))
|
||||
if (preferences.useAutoWebtoon().get() && manga.viewer == 0 && defaultReaderType != null && defaultReaderType == WEBTOON) {
|
||||
if (preferences.useAutoWebtoon().get() && manga.viewer == 0 && defaultReaderType != null && defaultReaderType == ReadingModeType.WEBTOON.prefValue) {
|
||||
binding.root.snack(resources.getString(R.string.eh_auto_webtoon_snack), Snackbar.LENGTH_LONG)
|
||||
} else if (preferences.showReadingMode()) {
|
||||
// SY <--
|
||||
|
@ -57,7 +57,7 @@ class ReaderSettingsSheet(private val activity: ReaderActivity) : BaseBottomShee
|
||||
activity.presenter.setMangaViewer(position)
|
||||
|
||||
val mangaViewer = activity.presenter.getMangaViewer()
|
||||
if (mangaViewer == ReaderActivity.WEBTOON || mangaViewer == ReaderActivity.VERTICAL_PLUS) {
|
||||
if (mangaViewer == ReadingModeType.WEBTOON.prefValue || mangaViewer == ReadingModeType.CONTINUOUS_VERTICAL.prefValue) {
|
||||
initWebtoonPreferences()
|
||||
} else {
|
||||
initPagerPreferences()
|
||||
|
@ -0,0 +1,25 @@
|
||||
package eu.kanade.tachiyomi.ui.reader.setting
|
||||
|
||||
import androidx.annotation.StringRes
|
||||
import eu.kanade.tachiyomi.R
|
||||
import kotlin.math.max
|
||||
|
||||
enum class ReadingModeType(val prefValue: Int, @StringRes val stringRes: Int) {
|
||||
DEFAULT(0, R.string.default_viewer),
|
||||
LEFT_TO_RIGHT(1, R.string.left_to_right_viewer),
|
||||
RIGHT_TO_LEFT(2, R.string.right_to_left_viewer),
|
||||
VERTICAL(3, R.string.vertical_viewer),
|
||||
WEBTOON(4, R.string.webtoon_viewer),
|
||||
CONTINUOUS_VERTICAL(5, R.string.vertical_plus_viewer),
|
||||
;
|
||||
|
||||
companion object {
|
||||
fun fromPreference(preference: Int): ReadingModeType = values().find { it.prefValue == preference } ?: DEFAULT
|
||||
|
||||
fun getNextReadingMode(preference: Int): ReadingModeType {
|
||||
// There's only 6 options (0 to 5)
|
||||
val newReadingMode = max(0, (preference + 1) % 6)
|
||||
return fromPreference(newReadingMode)
|
||||
}
|
||||
}
|
||||
}
|
@ -4,7 +4,7 @@ import android.content.Context
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||
import eu.kanade.tachiyomi.source.SourceManager
|
||||
import eu.kanade.tachiyomi.ui.reader.ReaderActivity
|
||||
import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import java.util.Locale
|
||||
@ -54,7 +54,7 @@ fun Manga.mangaType(sourceName: String = Injekt.get<SourceManager>().getOrStub(s
|
||||
*/
|
||||
fun Manga.defaultReaderType(type: MangaType = mangaType()): Int? {
|
||||
return if (type == MangaType.TYPE_MANHWA || type == MangaType.TYPE_WEBTOON) {
|
||||
ReaderActivity.WEBTOON
|
||||
ReadingModeType.WEBTOON.prefValue
|
||||
} else null
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user