diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/reader/ReaderPreferencesView.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/reader/ReaderPreferencesView.kt
index 5505cd6bb..de19c8193 100644
--- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/reader/ReaderPreferencesView.kt
+++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/reader/ReaderPreferencesView.kt
@@ -43,6 +43,8 @@ fun ReaderPreferencesView(webReaderViewModel: WebReaderViewModel) {
val themeState = remember { mutableStateOf(currentWebPreferences.storedThemePreference) }
+ val volumeForScrollState = remember { mutableStateOf(currentWebPreferences.shouldUseVolumeRockerForScroll) }
+
OmnivoreTheme {
Column(
modifier = Modifier
@@ -239,6 +241,24 @@ fun ReaderPreferencesView(webReaderViewModel: WebReaderViewModel) {
}
)
}
+
+ Row(verticalAlignment = Alignment.CenterVertically) {
+ Text(
+ stringResource(R.string.reader_preferences_view_volume_scroll),
+ style = TextStyle(
+ fontSize = 15.sp,
+ fontWeight = FontWeight.Normal,
+ color = Color(red = 137, green = 137, blue = 137))
+ )
+ Spacer(modifier = Modifier.weight(1.0F))
+ Switch (
+ checked = volumeForScrollState.value,
+ onCheckedChange = {
+ volumeForScrollState.value = it
+ webReaderViewModel.updateVolumeRockerForScroll(it)
+ }
+ )
+ }
}
}
}
@@ -285,5 +305,6 @@ data class WebPreferences(
val storedThemePreference: String,
val fontFamily: WebFont,
val prefersHighContrastText: Boolean,
- val prefersJustifyText: Boolean
+ val prefersJustifyText: Boolean,
+ var shouldUseVolumeRockerForScroll: Boolean
)
diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/reader/WebReader.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/reader/WebReader.kt
index 988565701..e56d10853 100644
--- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/reader/WebReader.kt
+++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/reader/WebReader.kt
@@ -170,11 +170,17 @@ fun WebReader(
if (event.action == KeyEvent.ACTION_DOWN) {
when (keyCode) {
KeyEvent.KEYCODE_VOLUME_UP -> {
+ if (!webReaderViewModel.shouldUseVolumeRockerForScroll) {
+ return@setOnKeyListener false
+ }
scrollVertically(OmnivoreWebView.Direction.UP)
return@setOnKeyListener true
}
KeyEvent.KEYCODE_VOLUME_DOWN -> {
+ if (!webReaderViewModel.shouldUseVolumeRockerForScroll) {
+ return@setOnKeyListener false
+ }
scrollVertically(OmnivoreWebView.Direction.DOWN)
return@setOnKeyListener true
}
diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/reader/WebReaderViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/reader/WebReaderViewModel.kt
index 925c03c7c..74d55d4ce 100644
--- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/reader/WebReaderViewModel.kt
+++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/reader/WebReaderViewModel.kt
@@ -106,6 +106,8 @@ class WebReaderViewModel @Inject constructor(
private val showHighlightColorPalette = MutableLiveData(false)
val highlightColor = MutableLiveData(HighlightColor())
+ var shouldUseVolumeRockerForScroll = true
+
fun loadItem(slug: String?, requestID: String?) {
this.slug = slug
if (isLoading || webReaderParamsLiveData.value != null) {
@@ -470,6 +472,7 @@ class WebReaderViewModel @Inject constructor(
val prefersHighContrastFont =
datastoreRepo.getString(DatastoreKeys.prefersWebHighContrastText) == "true"
val prefersJustifyText = datastoreRepo.getString(DatastoreKeys.prefersJustifyText) == "true"
+ val shouldUseVolumeRockerForScroll = datastoreRepo.getString(DatastoreKeys.volumeForScroll) != "false"
WebPreferences(
textFontSize = storedFontSize ?: 12,
@@ -479,7 +482,8 @@ class WebReaderViewModel @Inject constructor(
storedThemePreference = storedThemePreference,
fontFamily = storedWebFont,
prefersHighContrastText = prefersHighContrastFont,
- prefersJustifyText = prefersJustifyText
+ prefersJustifyText = prefersJustifyText,
+ shouldUseVolumeRockerForScroll = shouldUseVolumeRockerForScroll
)
}
@@ -555,6 +559,13 @@ class WebReaderViewModel @Inject constructor(
enqueueScript(script)
}
+ fun updateVolumeRockerForScroll(shouldUseVolumeRockerForScroll: Boolean) {
+ runBlocking {
+ datastoreRepo.putString(DatastoreKeys.volumeForScroll, shouldUseVolumeRockerForScroll.toString())
+ }
+ this.shouldUseVolumeRockerForScroll = shouldUseVolumeRockerForScroll
+ }
+
fun applyWebFont(font: WebFont) {
runBlocking {
datastoreRepo.putString(DatastoreKeys.preferredWebFontFamily, font.rawValue)
diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/utils/Constants.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/utils/Constants.kt
index b4962979a..684cbdd3b 100644
--- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/utils/Constants.kt
+++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/utils/Constants.kt
@@ -23,6 +23,7 @@ object DatastoreKeys {
const val lastUsedSavedItemFilter = "lastUsedSavedItemFilter"
const val lastUsedSavedItemSortFilter = "lastUsedSavedItemSortFilter"
const val preferredTheme = "preferredTheme"
+ const val volumeForScroll = "volumeForScroll"
}
object AppleConstants {
diff --git a/android/Omnivore/app/src/main/res/values-de/strings.xml b/android/Omnivore/app/src/main/res/values-de/strings.xml
index afaefdef8..22f8bfcdc 100644
--- a/android/Omnivore/app/src/main/res/values-de/strings.xml
+++ b/android/Omnivore/app/src/main/res/values-de/strings.xml
@@ -148,6 +148,7 @@
Text ausrichten
+ Verwenden Sie die Lautstärketasten zum Scrollen
Wir konnten deinen Inhalt nicht abrufen.
Lese-Einstellungen
Notizbuch
diff --git a/android/Omnivore/app/src/main/res/values-zh-rCN/strings.xml b/android/Omnivore/app/src/main/res/values-zh-rCN/strings.xml
index 780ae2bcd..b198f4bd1 100644
--- a/android/Omnivore/app/src/main/res/values-zh-rCN/strings.xml
+++ b/android/Omnivore/app/src/main/res/values-zh-rCN/strings.xml
@@ -149,6 +149,7 @@
对齐文字
+ 使用音量按钮滚动
我们无法取得您的内容。
阅读器偏好设定
笔记
diff --git a/android/Omnivore/app/src/main/res/values-zh-rTW/strings.xml b/android/Omnivore/app/src/main/res/values-zh-rTW/strings.xml
index c634719cf..f43bba4e3 100644
--- a/android/Omnivore/app/src/main/res/values-zh-rTW/strings.xml
+++ b/android/Omnivore/app/src/main/res/values-zh-rTW/strings.xml
@@ -148,6 +148,7 @@
對齊文字
+ 使用音量按鈕捲動
我們無法取得您的內容。
閱讀器偏好設定
筆記本
diff --git a/android/Omnivore/app/src/main/res/values/strings.xml b/android/Omnivore/app/src/main/res/values/strings.xml
index fba0f250b..d74a443c4 100644
--- a/android/Omnivore/app/src/main/res/values/strings.xml
+++ b/android/Omnivore/app/src/main/res/values/strings.xml
@@ -148,6 +148,7 @@
Auto
High Contrast Text
Justify Text
+ Use Volume Rocker to scroll
We were unable to fetch your content.