mirror of
https://github.com/mihonapp/mihon.git
synced 2024-11-21 20:47:03 -05:00
Readers know how to move to each side. Fix #566
This commit is contained in:
parent
26b283d44d
commit
7c42ab885b
6 changed files with 65 additions and 26 deletions
|
@ -189,7 +189,7 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
|
||||||
KeyEvent.KEYCODE_VOLUME_DOWN -> {
|
KeyEvent.KEYCODE_VOLUME_DOWN -> {
|
||||||
if (volumeKeysEnabled) {
|
if (volumeKeysEnabled) {
|
||||||
if (event.action == KeyEvent.ACTION_UP) {
|
if (event.action == KeyEvent.ACTION_UP) {
|
||||||
viewer?.moveToNext()
|
viewer?.moveDown()
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
@ -197,7 +197,7 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
|
||||||
KeyEvent.KEYCODE_VOLUME_UP -> {
|
KeyEvent.KEYCODE_VOLUME_UP -> {
|
||||||
if (volumeKeysEnabled) {
|
if (volumeKeysEnabled) {
|
||||||
if (event.action == KeyEvent.ACTION_UP) {
|
if (event.action == KeyEvent.ACTION_UP) {
|
||||||
viewer?.moveToPrevious()
|
viewer?.moveUp()
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
@ -210,12 +210,15 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
|
||||||
override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean {
|
override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean {
|
||||||
if (!isFinishing) {
|
if (!isFinishing) {
|
||||||
when (keyCode) {
|
when (keyCode) {
|
||||||
KeyEvent.KEYCODE_DPAD_RIGHT -> viewer?.moveToNext()
|
KeyEvent.KEYCODE_DPAD_RIGHT -> viewer?.moveRight()
|
||||||
KeyEvent.KEYCODE_DPAD_LEFT -> viewer?.moveToPrevious()
|
KeyEvent.KEYCODE_DPAD_LEFT -> viewer?.moveLeft()
|
||||||
|
KeyEvent.KEYCODE_DPAD_DOWN -> viewer?.moveDown()
|
||||||
|
KeyEvent.KEYCODE_DPAD_UP -> viewer?.moveUp()
|
||||||
KeyEvent.KEYCODE_MENU -> toggleMenu()
|
KeyEvent.KEYCODE_MENU -> toggleMenu()
|
||||||
|
else -> return super.onKeyUp(keyCode, event)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return super.onKeyUp(keyCode, event)
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onChapterError(error: Throwable) {
|
fun onChapterError(error: Throwable) {
|
||||||
|
|
|
@ -189,14 +189,28 @@ abstract class BaseReader : BaseFragment() {
|
||||||
abstract fun onChapterAppended(chapter: ReaderChapter)
|
abstract fun onChapterAppended(chapter: ReaderChapter)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Moves pages forward. Implementations decide how to move (by a page, by some distance...).
|
* Moves pages to right. Implementations decide how to move (by a page, by some distance...).
|
||||||
*/
|
*/
|
||||||
abstract fun moveToNext()
|
abstract fun moveRight()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Moves pages backward. Implementations decide how to move (by a page, by some distance...).
|
* Moves pages to left. Implementations decide how to move (by a page, by some distance...).
|
||||||
*/
|
*/
|
||||||
abstract fun moveToPrevious()
|
abstract fun moveLeft()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Moves pages down. Implementations decide how to move (by a page, by some distance...).
|
||||||
|
*/
|
||||||
|
open fun moveDown() {
|
||||||
|
moveRight()
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Moves pages up. Implementations decide how to move (by a page, by some distance...).
|
||||||
|
*/
|
||||||
|
open fun moveUp() {
|
||||||
|
moveLeft()
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the active decoder class.
|
* Sets the active decoder class.
|
||||||
|
|
|
@ -177,9 +177,9 @@ abstract class PagerReader : BaseReader() {
|
||||||
val positionX = e.x
|
val positionX = e.x
|
||||||
|
|
||||||
if (positionX < pager.width * LEFT_REGION) {
|
if (positionX < pager.width * LEFT_REGION) {
|
||||||
if (tappingEnabled) onLeftSideTap()
|
if (tappingEnabled) moveLeft()
|
||||||
} else if (positionX > pager.width * RIGHT_REGION) {
|
} else if (positionX > pager.width * RIGHT_REGION) {
|
||||||
if (tappingEnabled) onRightSideTap()
|
if (tappingEnabled) moveRight()
|
||||||
} else {
|
} else {
|
||||||
readerActivity.toggleMenu()
|
readerActivity.toggleMenu()
|
||||||
}
|
}
|
||||||
|
@ -258,23 +258,23 @@ abstract class PagerReader : BaseReader() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when the left side of the screen was clicked.
|
* Moves a page to the right.
|
||||||
*/
|
*/
|
||||||
protected open fun onLeftSideTap() {
|
override fun moveRight() {
|
||||||
moveToPrevious()
|
moveToNext()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when the right side of the screen was clicked.
|
* Moves a page to the left.
|
||||||
*/
|
*/
|
||||||
protected open fun onRightSideTap() {
|
override fun moveLeft() {
|
||||||
moveToNext()
|
moveToPrevious()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Moves to the next page or requests the next chapter if it's the last one.
|
* Moves to the next page or requests the next chapter if it's the last one.
|
||||||
*/
|
*/
|
||||||
override fun moveToNext() {
|
protected fun moveToNext() {
|
||||||
if (pager.currentItem != pager.adapter.count - 1) {
|
if (pager.currentItem != pager.adapter.count - 1) {
|
||||||
pager.setCurrentItem(pager.currentItem + 1, transitions)
|
pager.setCurrentItem(pager.currentItem + 1, transitions)
|
||||||
} else {
|
} else {
|
||||||
|
@ -285,7 +285,7 @@ abstract class PagerReader : BaseReader() {
|
||||||
/**
|
/**
|
||||||
* Moves to the previous page or requests the previous chapter if it's the first one.
|
* Moves to the previous page or requests the previous chapter if it's the first one.
|
||||||
*/
|
*/
|
||||||
override fun moveToPrevious() {
|
protected fun moveToPrevious() {
|
||||||
if (pager.currentItem != 0) {
|
if (pager.currentItem != 0) {
|
||||||
pager.setCurrentItem(pager.currentItem - 1, transitions)
|
pager.setCurrentItem(pager.currentItem - 1, transitions)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -19,11 +19,31 @@ class RightToLeftReader : PagerReader() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onLeftSideTap() {
|
/**
|
||||||
|
* Moves a page to the right.
|
||||||
|
*/
|
||||||
|
override fun moveRight() {
|
||||||
|
moveToPrevious()
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Moves a page to the left.
|
||||||
|
*/
|
||||||
|
override fun moveLeft() {
|
||||||
moveToNext()
|
moveToNext()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onRightSideTap() {
|
/**
|
||||||
|
* Moves a page down.
|
||||||
|
*/
|
||||||
|
override fun moveDown() {
|
||||||
|
moveToNext()
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Moves a page up.
|
||||||
|
*/
|
||||||
|
override fun moveUp() {
|
||||||
moveToPrevious()
|
moveToPrevious()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -141,9 +141,9 @@ class WebtoonReader : BaseReader() {
|
||||||
val positionX = e.x
|
val positionX = e.x
|
||||||
|
|
||||||
if (positionX < recycler.width * LEFT_REGION) {
|
if (positionX < recycler.width * LEFT_REGION) {
|
||||||
if (tappingEnabled) moveToPrevious()
|
if (tappingEnabled) moveLeft()
|
||||||
} else if (positionX > recycler.width * RIGHT_REGION) {
|
} else if (positionX > recycler.width * RIGHT_REGION) {
|
||||||
if (tappingEnabled) moveToNext()
|
if (tappingEnabled) moveRight()
|
||||||
} else {
|
} else {
|
||||||
readerActivity.toggleMenu()
|
readerActivity.toggleMenu()
|
||||||
}
|
}
|
||||||
|
@ -223,14 +223,14 @@ class WebtoonReader : BaseReader() {
|
||||||
/**
|
/**
|
||||||
* Moves to the next page or requests the next chapter if it's the last one.
|
* Moves to the next page or requests the next chapter if it's the last one.
|
||||||
*/
|
*/
|
||||||
override fun moveToNext() {
|
override fun moveRight() {
|
||||||
recycler.smoothScrollBy(0, scrollDistance)
|
recycler.smoothScrollBy(0, scrollDistance)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Moves to the previous page or requests the previous chapter if it's the first one.
|
* Moves to the previous page or requests the previous chapter if it's the first one.
|
||||||
*/
|
*/
|
||||||
override fun moveToPrevious() {
|
override fun moveLeft() {
|
||||||
recycler.smoothScrollBy(0, -scrollDistance)
|
recycler.smoothScrollBy(0, -scrollDistance)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -57,7 +57,9 @@
|
||||||
android:layout_gravity="bottom"
|
android:layout_gravity="bottom"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:background="?colorPrimary"
|
android:background="?colorPrimary"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal"
|
||||||
|
android:focusable="false"
|
||||||
|
android:descendantFocusability="blocksDescendants">
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/left_chapter"
|
android:id="@+id/left_chapter"
|
||||||
|
|
Loading…
Reference in a new issue