Rewrite PreferencesHelper. Allow to customize navigation with volume keys and tapping. Closes #251 and closes #129.

This commit is contained in:
len
2016-04-18 17:29:46 +02:00
parent 6d0254c5e5
commit a7840bc247
21 changed files with 258 additions and 199 deletions
@@ -81,6 +81,8 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
private var prevChapterBtn: MenuItem? = null
private val volumeKeysEnabled by lazy { preferences.readWithVolumeKeys().getOrDefault() }
val preferences: PreferencesHelper
get() = presenter.prefs
@@ -174,18 +176,32 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
override fun dispatchKeyEvent(event: KeyEvent): Boolean {
if (!isFinishing) {
val action = event.action
val keyCode = event.keyCode
when (keyCode) {
KeyEvent.KEYCODE_VOLUME_DOWN, KeyEvent.KEYCODE_DPAD_RIGHT -> {
if (action == KeyEvent.ACTION_UP)
viewer?.moveToNext()
return true
when (event.keyCode) {
KeyEvent.KEYCODE_VOLUME_DOWN -> {
if (volumeKeysEnabled) {
if (event.action == KeyEvent.ACTION_UP) {
viewer?.moveToNext()
}
return true
}
}
KeyEvent.KEYCODE_VOLUME_UP, KeyEvent.KEYCODE_DPAD_LEFT -> {
if (action == KeyEvent.ACTION_UP)
KeyEvent.KEYCODE_VOLUME_UP -> {
if (volumeKeysEnabled) {
if (event.action == KeyEvent.ACTION_UP) {
viewer?.moveToPrevious()
}
return true
}
}
KeyEvent.KEYCODE_DPAD_RIGHT -> {
if (event.action == KeyEvent.ACTION_UP) {
viewer?.moveToNext()
}
}
KeyEvent.KEYCODE_DPAD_LEFT -> {
if (event.action == KeyEvent.ACTION_UP) {
viewer?.moveToPrevious()
return true
}
}
}
}
@@ -258,7 +274,7 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
private fun getOrCreateViewer(manga: Manga): BaseReader {
val mangaViewer = if (manga.viewer == 0) preferences.defaultViewer else manga.viewer
val mangaViewer = if (manga.viewer == 0) preferences.defaultViewer() else manga.viewer
// Try to reuse the viewer using its tag
var fragment: BaseReader? = supportFragmentManager.findFragmentByTag(manga.viewer.toString()) as? BaseReader
@@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.ui.reader.viewer.base
import com.davemorrissey.labs.subscaleview.decoder.*
import eu.kanade.tachiyomi.data.database.models.Chapter
import eu.kanade.tachiyomi.data.preference.getOrDefault
import eu.kanade.tachiyomi.data.source.model.Page
import eu.kanade.tachiyomi.ui.base.fragment.BaseFragment
import eu.kanade.tachiyomi.ui.reader.ReaderActivity
@@ -54,6 +55,11 @@ abstract class BaseReader : BaseFragment() {
lateinit var bitmapDecoderClass: Class<out ImageDecoder>
private set
/**
* Whether tap navigation is enabled or not.
*/
val tappingEnabled by lazy { readerActivity.preferences.readWithTapping().getOrDefault() }
/**
* Whether the reader has requested to append a chapter. Used with seamless mode to avoid
* restarting requests when changing pages.
@@ -164,9 +164,9 @@ abstract class PagerReader : BaseReader() {
val positionX = e.x
if (positionX < pager.width * LEFT_REGION) {
onLeftSideTap()
if (tappingEnabled) onLeftSideTap()
} else if (positionX > pager.width * RIGHT_REGION) {
onRightSideTap()
if (tappingEnabled) onRightSideTap()
} else {
readerActivity.onCenterSingleTap()
}
@@ -126,9 +126,9 @@ class WebtoonReader : BaseReader() {
val positionX = e.x
if (positionX < recycler.width * LEFT_REGION) {
moveToPrevious()
if (tappingEnabled) moveToPrevious()
} else if (positionX > recycler.width * RIGHT_REGION) {
moveToNext()
if (tappingEnabled) moveToNext()
} else {
readerActivity.onCenterSingleTap()
}