Added Android Auto browsing settings

This commit is contained in:
ISO-B
2024-09-16 23:06:49 +03:00
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(