Merge pull request #3874 from jivesh/jivesh/volume-rocker-scroll-optional

Android: add reader preference for using volume rocker to scroll
This commit is contained in:
Jackson Harper 2024-04-28 22:44:42 -07:00 committed by GitHub
commit 55ac9d4b1f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 45 additions and 2 deletions

View file

@ -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
)

View file

@ -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
}

View file

@ -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)

View file

@ -23,6 +23,7 @@ object DatastoreKeys {
const val lastUsedSavedItemFilter = "lastUsedSavedItemFilter"
const val lastUsedSavedItemSortFilter = "lastUsedSavedItemSortFilter"
const val preferredTheme = "preferredTheme"
const val volumeForScroll = "volumeForScroll"
}
object AppleConstants {

View file

@ -148,6 +148,7 @@
<string name="reader_preferences_view_justify_text">Text ausrichten</string>
<!-- WebReaderLoadingContainer -->
<string name="reader_preferences_view_volume_scroll">Verwenden Sie die Lautstärketasten zum Scrollen</string>
<string name="web_reader_loading_container_error_msg">Wir konnten deinen Inhalt nicht abrufen.</string>
<string name="web_reader_loading_container_bottom_sheet_reader_preferences">Lese-Einstellungen</string>
<string name="web_reader_loading_container_bottom_sheet_notebook">Notizbuch</string>

View file

@ -149,6 +149,7 @@
<string name="reader_preferences_view_justify_text">对齐文字</string>
<!-- WebReaderLoadingContainer -->
<string name="reader_preferences_view_volume_scroll">使用音量按钮滚动</string>
<string name="web_reader_loading_container_error_msg">我们无法取得您的内容。</string>
<string name="web_reader_loading_container_bottom_sheet_reader_preferences">阅读器偏好设定</string>
<string name="web_reader_loading_container_bottom_sheet_notebook">笔记</string>

View file

@ -148,6 +148,7 @@
<string name="reader_preferences_view_justify_text">對齊文字</string>
<!-- WebReaderLoadingContainer -->
<string name="reader_preferences_view_volume_scroll">使用音量按鈕捲動</string>
<string name="web_reader_loading_container_error_msg">我們無法取得您的內容。</string>
<string name="web_reader_loading_container_bottom_sheet_reader_preferences">閱讀器偏好設定</string>
<string name="web_reader_loading_container_bottom_sheet_notebook">筆記本</string>

View file

@ -148,6 +148,7 @@
<string name="reader_preferences_view_auto">Auto</string>
<string name="reader_preferences_view_high_constrast_text">High Contrast Text</string>
<string name="reader_preferences_view_justify_text">Justify Text</string>
<string name="reader_preferences_view_volume_scroll">Use Volume Rocker to scroll</string>
<!-- WebReaderLoadingContainer -->
<string name="web_reader_loading_container_error_msg">We were unable to fetch your content.</string>