Add option to invert reader navigation controls
Introduces a new setting allowing users to invert navigation controls for page and chapter switching in the reader. Updates preferences, strings, and control logic to support swapping the direction of volume button and tap navigation.
This commit is contained in:
committed by
Koitharu
parent
3e8e423962
commit
40778a88dd
@@ -143,6 +143,9 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) {
|
|||||||
val isReaderControlAlwaysLTR: Boolean
|
val isReaderControlAlwaysLTR: Boolean
|
||||||
get() = prefs.getBoolean(KEY_READER_CONTROL_LTR, false)
|
get() = prefs.getBoolean(KEY_READER_CONTROL_LTR, false)
|
||||||
|
|
||||||
|
val isReaderNavigationInverted: Boolean
|
||||||
|
get() = prefs.getBoolean(KEY_READER_NAVIGATION_INVERTED, false)
|
||||||
|
|
||||||
val isReaderFullscreenEnabled: Boolean
|
val isReaderFullscreenEnabled: Boolean
|
||||||
get() = prefs.getBoolean(KEY_READER_FULLSCREEN, true)
|
get() = prefs.getBoolean(KEY_READER_FULLSCREEN, true)
|
||||||
|
|
||||||
@@ -631,6 +634,7 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) {
|
|||||||
const val KEY_READER_DOUBLE_PAGES = "reader_double_pages"
|
const val KEY_READER_DOUBLE_PAGES = "reader_double_pages"
|
||||||
const val KEY_READER_ZOOM_BUTTONS = "reader_zoom_buttons"
|
const val KEY_READER_ZOOM_BUTTONS = "reader_zoom_buttons"
|
||||||
const val KEY_READER_CONTROL_LTR = "reader_taps_ltr"
|
const val KEY_READER_CONTROL_LTR = "reader_taps_ltr"
|
||||||
|
const val KEY_READER_NAVIGATION_INVERTED = "reader_navigation_inverted"
|
||||||
const val KEY_READER_FULLSCREEN = "reader_fullscreen"
|
const val KEY_READER_FULLSCREEN = "reader_fullscreen"
|
||||||
const val KEY_READER_VOLUME_BUTTONS = "reader_volume_buttons"
|
const val KEY_READER_VOLUME_BUTTONS = "reader_volume_buttons"
|
||||||
const val KEY_READER_ORIENTATION = "reader_orientation"
|
const val KEY_READER_ORIENTATION = "reader_orientation"
|
||||||
|
|||||||
@@ -60,28 +60,28 @@ class ReaderControlDelegate(
|
|||||||
KeyEvent.KEYCODE_L -> switchBy(-1, null, false)
|
KeyEvent.KEYCODE_L -> switchBy(-1, null, false)
|
||||||
|
|
||||||
KeyEvent.KEYCODE_VOLUME_UP -> if (settings.isReaderVolumeButtonsEnabled) {
|
KeyEvent.KEYCODE_VOLUME_UP -> if (settings.isReaderVolumeButtonsEnabled) {
|
||||||
switchBy(-1, event, false)
|
switchBy(if (settings.isReaderNavigationInverted) 1 else -1, event, false)
|
||||||
} else {
|
} else {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
KeyEvent.KEYCODE_VOLUME_DOWN -> if (settings.isReaderVolumeButtonsEnabled) {
|
KeyEvent.KEYCODE_VOLUME_DOWN -> if (settings.isReaderVolumeButtonsEnabled) {
|
||||||
switchBy(1, event, false)
|
switchBy(if (settings.isReaderNavigationInverted) -1 else 1, event, false)
|
||||||
} else {
|
} else {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
KeyEvent.KEYCODE_DPAD_RIGHT -> switchByRelative(1, event)
|
KeyEvent.KEYCODE_DPAD_RIGHT -> switchByRelative(if (settings.isReaderNavigationInverted) -1 else 1, event)
|
||||||
|
|
||||||
KeyEvent.KEYCODE_DPAD_LEFT -> switchByRelative(-1, event)
|
KeyEvent.KEYCODE_DPAD_LEFT -> switchByRelative(if (settings.isReaderNavigationInverted) 1 else -1, event)
|
||||||
|
|
||||||
KeyEvent.KEYCODE_DPAD_CENTER -> listener.toggleUiVisibility()
|
KeyEvent.KEYCODE_DPAD_CENTER -> listener.toggleUiVisibility()
|
||||||
|
|
||||||
KeyEvent.KEYCODE_SYSTEM_NAVIGATION_UP,
|
KeyEvent.KEYCODE_SYSTEM_NAVIGATION_UP,
|
||||||
KeyEvent.KEYCODE_DPAD_UP -> switchBy(-1, event, true)
|
KeyEvent.KEYCODE_DPAD_UP -> switchBy(if (settings.isReaderNavigationInverted) 1 else -1, event, true)
|
||||||
|
|
||||||
KeyEvent.KEYCODE_SYSTEM_NAVIGATION_DOWN,
|
KeyEvent.KEYCODE_SYSTEM_NAVIGATION_DOWN,
|
||||||
KeyEvent.KEYCODE_DPAD_DOWN -> switchBy(1, event, true)
|
KeyEvent.KEYCODE_DPAD_DOWN -> switchBy(if (settings.isReaderNavigationInverted) -1 else 1, event, true)
|
||||||
|
|
||||||
else -> return false
|
else -> return false
|
||||||
}
|
}
|
||||||
@@ -95,10 +95,10 @@ class ReaderControlDelegate(
|
|||||||
|
|
||||||
private fun processAction(action: TapAction) {
|
private fun processAction(action: TapAction) {
|
||||||
when (action) {
|
when (action) {
|
||||||
TapAction.PAGE_NEXT -> listener.switchPageBy(1)
|
TapAction.PAGE_NEXT -> listener.switchPageBy(if (settings.isReaderNavigationInverted) -1 else 1)
|
||||||
TapAction.PAGE_PREV -> listener.switchPageBy(-1)
|
TapAction.PAGE_PREV -> listener.switchPageBy(if (settings.isReaderNavigationInverted) 1 else -1)
|
||||||
TapAction.CHAPTER_NEXT -> listener.switchChapterBy(1)
|
TapAction.CHAPTER_NEXT -> listener.switchChapterBy(if (settings.isReaderNavigationInverted) -1 else 1)
|
||||||
TapAction.CHAPTER_PREV -> listener.switchChapterBy(-1)
|
TapAction.CHAPTER_PREV -> listener.switchChapterBy(if (settings.isReaderNavigationInverted) 1 else -1)
|
||||||
TapAction.TOGGLE_UI -> listener.toggleUiVisibility()
|
TapAction.TOGGLE_UI -> listener.toggleUiVisibility()
|
||||||
TapAction.SHOW_MENU -> listener.openMenu()
|
TapAction.SHOW_MENU -> listener.openMenu()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -565,6 +565,8 @@
|
|||||||
<string name="reader_actions_summary">Configure actions for tappable screen areas</string>
|
<string name="reader_actions_summary">Configure actions for tappable screen areas</string>
|
||||||
<string name="switch_pages_volume_buttons">Enable volume buttons</string>
|
<string name="switch_pages_volume_buttons">Enable volume buttons</string>
|
||||||
<string name="switch_pages_volume_buttons_summary">Use volume buttons for switching pages</string>
|
<string name="switch_pages_volume_buttons_summary">Use volume buttons for switching pages</string>
|
||||||
|
<string name="reader_navigation_inverted">Invert navigation controls</string>
|
||||||
|
<string name="reader_navigation_inverted_summary">Swap the direction of volume button and screen tap navigation (left becomes right, right becomes left)</string>
|
||||||
<string name="tap_action">Tap action</string>
|
<string name="tap_action">Tap action</string>
|
||||||
<string name="long_tap_action">Long tap action</string>
|
<string name="long_tap_action">Long tap action</string>
|
||||||
<string name="none">None</string>
|
<string name="none">None</string>
|
||||||
|
|||||||
@@ -75,6 +75,12 @@
|
|||||||
android:summary="@string/switch_pages_volume_buttons_summary"
|
android:summary="@string/switch_pages_volume_buttons_summary"
|
||||||
android:title="@string/switch_pages_volume_buttons" />
|
android:title="@string/switch_pages_volume_buttons" />
|
||||||
|
|
||||||
|
<SwitchPreferenceCompat
|
||||||
|
android:defaultValue="false"
|
||||||
|
android:key="reader_navigation_inverted"
|
||||||
|
android:summary="@string/reader_navigation_inverted_summary"
|
||||||
|
android:title="@string/reader_navigation_inverted" />
|
||||||
|
|
||||||
<ListPreference
|
<ListPreference
|
||||||
android:entries="@array/reader_animation"
|
android:entries="@array/reader_animation"
|
||||||
android:key="reader_animation2"
|
android:key="reader_animation2"
|
||||||
|
|||||||
Reference in New Issue
Block a user