mirror of
https://github.com/advplyr/audiobookshelf-app.git
synced 2025-08-04 01:54:33 +02:00
Added Android Auto browsing settings
This commit is contained in:
parent
a3a58a25ef
commit
e4a3cc5290
5 changed files with 83 additions and 7 deletions
|
@ -133,7 +133,10 @@ data class DeviceSettings(
|
|||
var disableSleepTimerResetFeedback: Boolean,
|
||||
var languageCode: String,
|
||||
var downloadUsingCellular: DownloadUsingCellularSetting,
|
||||
var streamingUsingCellular: StreamingUsingCellularSetting
|
||||
var streamingUsingCellular: StreamingUsingCellularSetting,
|
||||
var androidAutoBrowseForceGrouping: Boolean,
|
||||
var androidAutoBrowseTopLevelLimitForGrouping: Int,
|
||||
var androidAutoBrowseLimitForGrouping: Int
|
||||
) {
|
||||
companion object {
|
||||
// Static method to get default device settings
|
||||
|
@ -159,7 +162,10 @@ data class DeviceSettings(
|
|||
disableSleepTimerResetFeedback = false,
|
||||
languageCode = "en-us",
|
||||
downloadUsingCellular = DownloadUsingCellularSetting.ALWAYS,
|
||||
streamingUsingCellular = StreamingUsingCellularSetting.ALWAYS
|
||||
streamingUsingCellular = StreamingUsingCellularSetting.ALWAYS,
|
||||
androidAutoBrowseForceGrouping = false,
|
||||
androidAutoBrowseTopLevelLimitForGrouping = 100,
|
||||
androidAutoBrowseLimitForGrouping = 50
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -61,6 +61,16 @@ object DeviceManager {
|
|||
if (deviceData.deviceSettings?.streamingUsingCellular == null) {
|
||||
deviceData.deviceSettings?.streamingUsingCellular = StreamingUsingCellularSetting.ALWAYS
|
||||
}
|
||||
|
||||
if (deviceData.deviceSettings?.androidAutoBrowseForceGrouping == null) {
|
||||
deviceData.deviceSettings?.androidAutoBrowseForceGrouping = false
|
||||
}
|
||||
if (deviceData.deviceSettings?.androidAutoBrowseTopLevelLimitForGrouping == null) {
|
||||
deviceData.deviceSettings?.androidAutoBrowseTopLevelLimitForGrouping = 100
|
||||
}
|
||||
if (deviceData.deviceSettings?.androidAutoBrowseLimitForGrouping == null) {
|
||||
deviceData.deviceSettings?.androidAutoBrowseLimitForGrouping = 50
|
||||
}
|
||||
}
|
||||
|
||||
fun getBase64Id(id:String):String {
|
||||
|
|
|
@ -1148,7 +1148,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() {
|
|||
Log.d(tag, "Loading series from library ${mediaIdParts[2]} with paging ${mediaIdParts[4]}")
|
||||
mediaManager.loadLibrarySeriesWithAudio(mediaIdParts[2], mediaIdParts[4]) { seriesItems ->
|
||||
Log.d(tag, "Received ${seriesItems.size} series")
|
||||
if (seriesItems.size > 500) {
|
||||
if (seriesItems.size > DeviceManager.deviceData.deviceSettings!!.androidAutoBrowseLimitForGrouping) {
|
||||
val seriesLetters = seriesItems.groupingBy { iwb -> iwb.title.substring(0, mediaIdParts[4].length + 1).uppercase() }.eachCount()
|
||||
val children = seriesLetters.map { (seriesLetter, seriesCount) ->
|
||||
MediaBrowserCompat.MediaItem(
|
||||
|
@ -1173,7 +1173,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() {
|
|||
Log.d(tag, "Loading series from library ${mediaIdParts[2]}")
|
||||
mediaManager.loadLibrarySeriesWithAudio(mediaIdParts[2]) { seriesItems ->
|
||||
Log.d(tag, "Received ${seriesItems.size} series")
|
||||
if (seriesItems.size > 1000) {
|
||||
if (DeviceManager.deviceData.deviceSettings!!.androidAutoBrowseForceGrouping || seriesItems.size > DeviceManager.deviceData.deviceSettings!!.androidAutoBrowseTopLevelLimitForGrouping) {
|
||||
val seriesLetters = seriesItems.groupingBy { iwb -> iwb.title.first().uppercaseChar() }.eachCount()
|
||||
val children = seriesLetters.map { (seriesLetter, seriesCount) ->
|
||||
MediaBrowserCompat.MediaItem(
|
||||
|
@ -1215,7 +1215,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() {
|
|||
Log.d(tag, "Loading authors from library ${mediaIdParts[2]} with paging ${mediaIdParts[4]}")
|
||||
mediaManager.loadAuthorsWithBooks(mediaIdParts[2], mediaIdParts[4]) { authorItems ->
|
||||
Log.d(tag, "Received ${authorItems.size} authors")
|
||||
if (authorItems.size > 100) {
|
||||
if (authorItems.size > DeviceManager.deviceData.deviceSettings!!.androidAutoBrowseLimitForGrouping) {
|
||||
val authorLetters = authorItems.groupingBy { iwb -> iwb.name.substring(0, mediaIdParts[4].length + 1).uppercase() }.eachCount()
|
||||
val children = authorLetters.map { (authorLetter, authorCount) ->
|
||||
MediaBrowserCompat.MediaItem(
|
||||
|
@ -1240,7 +1240,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() {
|
|||
Log.d(tag, "Loading authors from library ${mediaIdParts[2]}")
|
||||
mediaManager.loadAuthorsWithBooks(mediaIdParts[2]) { authorItems ->
|
||||
Log.d(tag, "Received ${authorItems.size} authors")
|
||||
if (authorItems.size > 1000) {
|
||||
if (DeviceManager.deviceData.deviceSettings!!.androidAutoBrowseForceGrouping || authorItems.size > DeviceManager.deviceData.deviceSettings!!.androidAutoBrowseTopLevelLimitForGrouping) {
|
||||
val authorLetters = authorItems.groupingBy { iwb -> iwb.name.first().uppercaseChar() }.eachCount()
|
||||
val children = authorLetters.map { (authorLetter, authorCount) ->
|
||||
MediaBrowserCompat.MediaItem(
|
||||
|
|
|
@ -150,6 +150,28 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Android Auto settings -->
|
||||
<template v-if="!isiOS">
|
||||
<p class="uppercase text-xs font-semibold text-fg-muted mb-2 mt-10">{{ $strings.HeaderAndroidAutoSettings }}</p>
|
||||
<div class="flex items-center py-3">
|
||||
<div class="w-10 flex justify-center" @click="toggleAndroidAutoBrowseForceGrouping">
|
||||
<ui-toggle-switch v-model="settings.androidAutoBrowseForceGrouping" @input="saveSettings" />
|
||||
</div>
|
||||
<p class="pl-4">{{ $strings.LabelAndroidAutoBrowseForceGrouping }}</p>
|
||||
<span class="material-icons-outlined ml-2" @click.stop="showInfo('androidAutoBrowseForceGrouping')">info</span>
|
||||
</div>
|
||||
<div v-if="!settings.androidAutoBrowseForceGrouping" class="py-3 flex items-center">
|
||||
<p class="pr-4 w-36">{{ $strings.LabelAndroidAutoBrowseTopLevelLimitForGrouping }}</p>
|
||||
<ui-text-input type="number" v-model="settings.androidAutoBrowseTopLevelLimitForGrouping" style="width: 145px; max-width: 145px" @input="androidAutoBrowseTopLevelLimitForGroupingUpdated" />
|
||||
<span class="material-icons-outlined ml-2" @click.stop="showInfo('androidAutoBrowseTopLevelLimitForGrouping')">info</span>
|
||||
</div>
|
||||
<div class="py-3 flex items-center">
|
||||
<p class="pr-4 w-36">{{ $strings.LabelAndroidAutoBrowseLimitForGrouping }}</p>
|
||||
<ui-text-input type="number" v-model="settings.androidAutoBrowseLimitForGrouping" style="width: 145px; max-width: 145px" @input="androidAutoBrowseLimitForGroupingUpdated" />
|
||||
<span class="material-icons-outlined ml-2" @click.stop="showInfo('androidAutoBrowseLimitForGrouping')">info</span>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<div v-show="loading" class="w-full h-full absolute top-0 left-0 flex items-center justify-center z-10">
|
||||
<ui-loading-indicator />
|
||||
</div>
|
||||
|
@ -193,7 +215,10 @@ export default {
|
|||
autoSleepTimerAutoRewindTime: 300000, // 5 minutes
|
||||
languageCode: 'en-us',
|
||||
downloadUsingCellular: 'ALWAYS',
|
||||
streamingUsingCellular: 'ALWAYS'
|
||||
streamingUsingCellular: 'ALWAYS',
|
||||
androidAutoBrowseForceGrouping: false,
|
||||
androidAutoBrowseTopLevelLimitForGrouping: 100,
|
||||
androidAutoBrowseLimitForGrouping: 50
|
||||
},
|
||||
theme: 'dark',
|
||||
lockCurrentOrientation: false,
|
||||
|
@ -221,6 +246,14 @@ export default {
|
|||
enableMp3IndexSeeking: {
|
||||
name: this.$strings.LabelEnableMp3IndexSeeking,
|
||||
message: this.$strings.LabelEnableMp3IndexSeekingHelp
|
||||
},
|
||||
androidAutoBrowseForceGrouping: {
|
||||
name: this.$strings.LabelAndroidAutoBrowseForceGrouping,
|
||||
message: this.$strings.LabelAndroidAutoBrowseForceGroupingHelp
|
||||
},
|
||||
androidAutoBrowseTopLevelLimitForGrouping: {
|
||||
name: this.$strings.LabelAndroidAutoBrowseTopLevelLimitForGrouping,
|
||||
message: this.$strings.LabelAndroidAutoBrowseTopLevelLimitForGroupingHelp
|
||||
}
|
||||
},
|
||||
hapticFeedbackItems: [
|
||||
|
@ -451,6 +484,18 @@ export default {
|
|||
if (!val) return // invalid times return falsy
|
||||
this.saveSettings()
|
||||
},
|
||||
androidAutoBrowseTopLevelLimitForGroupingUpdated(val) {
|
||||
if (!val) return // invalid times return falsy
|
||||
if (val > 1000) val = 1000
|
||||
if (val < 20) val = 20
|
||||
this.saveSettings()
|
||||
},
|
||||
androidAutoBrowseLimitForGroupingUpdated(val) {
|
||||
if (!val) return // invalid times return falsy
|
||||
if (val > 1000) val = 1000
|
||||
if (val < 20) val = 20
|
||||
this.saveSettings()
|
||||
},
|
||||
hapticFeedbackUpdated(val) {
|
||||
this.$store.commit('globals/setHapticFeedback', val)
|
||||
this.saveSettings()
|
||||
|
@ -493,6 +538,10 @@ export default {
|
|||
this.settings.disableShakeToResetSleepTimer = !this.settings.disableShakeToResetSleepTimer
|
||||
this.saveSettings()
|
||||
},
|
||||
toggleAndroidAutoBrowseForceGrouping() {
|
||||
this.settings.androidAutoBrowseForceGrouping = !this.settings.androidAutoBrowseForceGrouping
|
||||
this.saveSettings()
|
||||
},
|
||||
toggleDisableSleepTimerResetFeedback() {
|
||||
this.settings.disableSleepTimerResetFeedback = !this.settings.disableSleepTimerResetFeedback
|
||||
this.saveSettings()
|
||||
|
@ -576,6 +625,10 @@ export default {
|
|||
|
||||
this.settings.downloadUsingCellular = deviceSettings.downloadUsingCellular || 'ALWAYS'
|
||||
this.settings.streamingUsingCellular = deviceSettings.streamingUsingCellular || 'ALWAYS'
|
||||
|
||||
this.settings.androidAutoBrowseForceGrouping = deviceSettings.androidAutoBrowseForceGrouping
|
||||
this.settings.androidAutoBrowseTopLevelLimitForGrouping = deviceSettings.androidAutoBrowseTopLevelLimitForGrouping
|
||||
this.settings.androidAutoBrowseLimitForGrouping = deviceSettings.androidAutoBrowseLimitForGrouping
|
||||
},
|
||||
async init() {
|
||||
this.loading = true
|
||||
|
|
|
@ -52,6 +52,7 @@
|
|||
"ButtonYes": "Yes",
|
||||
"HeaderAccount": "Account",
|
||||
"HeaderAdvanced": "Advanced",
|
||||
"HeaderAndroidAutoSettings": "Android Auto Settings",
|
||||
"HeaderAudioTracks": "Audio Tracks",
|
||||
"HeaderChapters": "Chapters",
|
||||
"HeaderCollection": "Collection",
|
||||
|
@ -90,6 +91,12 @@
|
|||
"LabelAll": "All",
|
||||
"LabelAllowSeekingOnMediaControls": "Allow position seeking on media notification controls",
|
||||
"LabelAlways": "Always",
|
||||
"LabelAndroidAutoBrowseForceGrouping": "Force alphabetical drawdown",
|
||||
"LabelAndroidAutoBrowseForceGroupingHelp": "Forces alphabetical drawdown while browsing library and series in Android Auto",
|
||||
"LabelAndroidAutoBrowseLimitForGrouping": "Alphabetical drawdown stopitems",
|
||||
"LabelAndroidAutoBrowseLimitForGroupingHelp": "Stop alphabetical drawdown when there is less than this amount of items to show",
|
||||
"LabelAndroidAutoBrowseTopLevelLimitForGrouping": "Alphabetical drawdown start items",
|
||||
"LabelAndroidAutoBrowseTopLevelLimitForGroupingHelp": "If top-level has more items than this alphabetical drawdown will be used",
|
||||
"LabelAskConfirmation": "Ask for confirmation",
|
||||
"LabelAuthor": "Author",
|
||||
"LabelAuthorFirstLast": "Author (First Last)",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue