Fix drawdown for paging with many of the same first letters, update series sequence ascending/descending string, universalize default drawdown grouping limit

This commit is contained in:
advplyr 2025-01-11 15:33:43 -06:00
parent 8e6e0cf673
commit 847bedb65c
4 changed files with 15 additions and 13 deletions

View file

@ -166,7 +166,7 @@ data class DeviceSettings(
languageCode = "en-us", languageCode = "en-us",
downloadUsingCellular = DownloadUsingCellularSetting.ALWAYS, downloadUsingCellular = DownloadUsingCellularSetting.ALWAYS,
streamingUsingCellular = StreamingUsingCellularSetting.ALWAYS, streamingUsingCellular = StreamingUsingCellularSetting.ALWAYS,
androidAutoBrowseLimitForGrouping = 50, androidAutoBrowseLimitForGrouping = 100,
androidAutoBrowseSeriesSequenceOrder = AndroidAutoBrowseSeriesSequenceOrderSetting.ASC androidAutoBrowseSeriesSequenceOrder = AndroidAutoBrowseSeriesSequenceOrderSetting.ASC
) )
} }

View file

@ -1372,8 +1372,9 @@ class PlayerNotificationService : MediaBrowserServiceCompat() {
Log.d(tag, "Loading series from library ${mediaIdParts[2]} with paging ${mediaIdParts[4]}") Log.d(tag, "Loading series from library ${mediaIdParts[2]} with paging ${mediaIdParts[4]}")
mediaManager.loadLibrarySeriesWithAudio(mediaIdParts[2], mediaIdParts[4]) { seriesItems -> mediaManager.loadLibrarySeriesWithAudio(mediaIdParts[2], mediaIdParts[4]) { seriesItems ->
Log.d(tag, "Received ${seriesItems.size} series") Log.d(tag, "Received ${seriesItems.size} series")
if (seriesItems.size > DeviceManager.deviceData.deviceSettings!!.androidAutoBrowseLimitForGrouping) {
val seriesLetters = seriesItems.groupingBy { iwb -> iwb.title.substring(0, mediaIdParts[4].length + 1).uppercase() }.eachCount() val seriesLetters = seriesItems.groupingBy { iwb -> iwb.title.substring(0, mediaIdParts[4].length + 1).uppercase() }.eachCount()
if (seriesItems.size > DeviceManager.deviceData.deviceSettings!!.androidAutoBrowseLimitForGrouping && seriesItems.size > 1 && seriesLetters.size > 1) {
val children = seriesLetters.map { (seriesLetter, seriesCount) -> val children = seriesLetters.map { (seriesLetter, seriesCount) ->
MediaBrowserCompat.MediaItem( MediaBrowserCompat.MediaItem(
MediaDescriptionCompat.Builder() MediaDescriptionCompat.Builder()
@ -1397,7 +1398,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() {
Log.d(tag, "Loading series from library ${mediaIdParts[2]}") Log.d(tag, "Loading series from library ${mediaIdParts[2]}")
mediaManager.loadLibrarySeriesWithAudio(mediaIdParts[2]) { seriesItems -> mediaManager.loadLibrarySeriesWithAudio(mediaIdParts[2]) { seriesItems ->
Log.d(tag, "Received ${seriesItems.size} series") Log.d(tag, "Received ${seriesItems.size} series")
if (seriesItems.size > DeviceManager.deviceData.deviceSettings!!.androidAutoBrowseLimitForGrouping) { if (seriesItems.size > DeviceManager.deviceData.deviceSettings!!.androidAutoBrowseLimitForGrouping && seriesItems.size > 1) {
val seriesLetters = seriesItems.groupingBy { iwb -> iwb.title.first().uppercaseChar() }.eachCount() val seriesLetters = seriesItems.groupingBy { iwb -> iwb.title.first().uppercaseChar() }.eachCount()
val children = seriesLetters.map { (seriesLetter, seriesCount) -> val children = seriesLetters.map { (seriesLetter, seriesCount) ->
MediaBrowserCompat.MediaItem( MediaBrowserCompat.MediaItem(
@ -1443,8 +1444,9 @@ class PlayerNotificationService : MediaBrowserServiceCompat() {
Log.d(tag, "Loading authors from library ${mediaIdParts[2]} with paging ${mediaIdParts[4]}") Log.d(tag, "Loading authors from library ${mediaIdParts[2]} with paging ${mediaIdParts[4]}")
mediaManager.loadAuthorsWithBooks(mediaIdParts[2], mediaIdParts[4]) { authorItems -> mediaManager.loadAuthorsWithBooks(mediaIdParts[2], mediaIdParts[4]) { authorItems ->
Log.d(tag, "Received ${authorItems.size} authors") Log.d(tag, "Received ${authorItems.size} authors")
if (authorItems.size > DeviceManager.deviceData.deviceSettings!!.androidAutoBrowseLimitForGrouping) {
val authorLetters = authorItems.groupingBy { iwb -> iwb.name.substring(0, mediaIdParts[4].length + 1).uppercase() }.eachCount() val authorLetters = authorItems.groupingBy { iwb -> iwb.name.substring(0, mediaIdParts[4].length + 1).uppercase() }.eachCount()
if (authorItems.size > DeviceManager.deviceData.deviceSettings!!.androidAutoBrowseLimitForGrouping && authorItems.size > 1 && authorLetters.size > 1) {
val children = authorLetters.map { (authorLetter, authorCount) -> val children = authorLetters.map { (authorLetter, authorCount) ->
MediaBrowserCompat.MediaItem( MediaBrowserCompat.MediaItem(
MediaDescriptionCompat.Builder() MediaDescriptionCompat.Builder()
@ -1468,7 +1470,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() {
Log.d(tag, "Loading authors from library ${mediaIdParts[2]}") Log.d(tag, "Loading authors from library ${mediaIdParts[2]}")
mediaManager.loadAuthorsWithBooks(mediaIdParts[2]) { authorItems -> mediaManager.loadAuthorsWithBooks(mediaIdParts[2]) { authorItems ->
Log.d(tag, "Received ${authorItems.size} authors") Log.d(tag, "Received ${authorItems.size} authors")
if (authorItems.size > DeviceManager.deviceData.deviceSettings!!.androidAutoBrowseLimitForGrouping) { if (authorItems.size > DeviceManager.deviceData.deviceSettings!!.androidAutoBrowseLimitForGrouping && authorItems.size > 1) {
val authorLetters = authorItems.groupingBy { iwb -> iwb.name.first().uppercaseChar() }.eachCount() val authorLetters = authorItems.groupingBy { iwb -> iwb.name.first().uppercaseChar() }.eachCount()
val children = authorLetters.map { (authorLetter, authorCount) -> val children = authorLetters.map { (authorLetter, authorCount) ->
MediaBrowserCompat.MediaItem( MediaBrowserCompat.MediaItem(

View file

@ -210,7 +210,7 @@ export default {
languageCode: 'en-us', languageCode: 'en-us',
downloadUsingCellular: 'ALWAYS', downloadUsingCellular: 'ALWAYS',
streamingUsingCellular: 'ALWAYS', streamingUsingCellular: 'ALWAYS',
androidAutoBrowseLimitForGrouping: 50, androidAutoBrowseLimitForGrouping: 100,
androidAutoBrowseSeriesSequenceOrder: 'ASC' androidAutoBrowseSeriesSequenceOrder: 'ASC'
}, },
theme: 'dark', theme: 'dark',
@ -315,11 +315,11 @@ export default {
], ],
androidAutoBrowseSeriesSequenceOrderItems: [ androidAutoBrowseSeriesSequenceOrderItems: [
{ {
text: this.$strings.LabelAscending, text: this.$strings.LabelSequenceAscending,
value: 'ASC' value: 'ASC'
}, },
{ {
text: this.$strings.LabelDescending, text: this.$strings.LabelSequenceDescending,
value: 'DESC' value: 'DESC'
} }
] ]

View file

@ -87,7 +87,6 @@
"HeaderTableOfContents": "Table of Contents", "HeaderTableOfContents": "Table of Contents",
"HeaderUserInterfaceSettings": "User Interface Settings", "HeaderUserInterfaceSettings": "User Interface Settings",
"HeaderYourStats": "Your Stats", "HeaderYourStats": "Your Stats",
"LabelAscending": "Ascending",
"LabelAddToPlaylist": "Add to Playlist", "LabelAddToPlaylist": "Add to Playlist",
"LabelAddedAt": "Added At", "LabelAddedAt": "Added At",
"LabelAddedDate": "Added {0}", "LabelAddedDate": "Added {0}",
@ -95,7 +94,7 @@
"LabelAllowSeekingOnMediaControls": "Allow position seeking on media notification controls", "LabelAllowSeekingOnMediaControls": "Allow position seeking on media notification controls",
"LabelAlways": "Always", "LabelAlways": "Always",
"LabelAndroidAutoBrowseLimitForGrouping": "Alphabetical drawdown limit", "LabelAndroidAutoBrowseLimitForGrouping": "Alphabetical drawdown limit",
"LabelAndroidAutoBrowseLimitForGroupingHelp": "Stop alphabetical drawdown when there is less than this amount of items to show", "LabelAndroidAutoBrowseLimitForGroupingHelp": "Don't use alphabetical drawdown when there is less than this amount of items to show",
"LabelAndroidAutoBrowseSeriesSequenceOrder": "Series books order", "LabelAndroidAutoBrowseSeriesSequenceOrder": "Series books order",
"LabelAskConfirmation": "Ask for confirmation", "LabelAskConfirmation": "Ask for confirmation",
"LabelAuthor": "Author", "LabelAuthor": "Author",
@ -120,7 +119,6 @@
"LabelContinueReading": "Continue Reading", "LabelContinueReading": "Continue Reading",
"LabelContinueSeries": "Continue Series", "LabelContinueSeries": "Continue Series",
"LabelCustomTime": "Custom time", "LabelCustomTime": "Custom time",
"LabelDescending": "Descending",
"LabelDescription": "Description", "LabelDescription": "Description",
"LabelDisableAudioFadeOut": "Disable audio fade out", "LabelDisableAudioFadeOut": "Disable audio fade out",
"LabelDisableAudioFadeOutHelp": "Audio volume will start decreasing when there is less than 1 minute remaining on the sleep timer. Enable this setting to not fade out.", "LabelDisableAudioFadeOutHelp": "Audio volume will start decreasing when there is less than 1 minute remaining on the sleep timer. Enable this setting to not fade out.",
@ -224,6 +222,8 @@
"LabelScaleElapsedTimeBySpeed": "Scale Elapsed Time by Speed", "LabelScaleElapsedTimeBySpeed": "Scale Elapsed Time by Speed",
"LabelSeason": "Season", "LabelSeason": "Season",
"LabelSelectADevice": "Select a device", "LabelSelectADevice": "Select a device",
"LabelSequenceAscending": "Sequence Ascending",
"LabelSequenceDescending": "Sequence Descending",
"LabelSeries": "Series", "LabelSeries": "Series",
"LabelServerAddress": "Server address", "LabelServerAddress": "Server address",
"LabelSetEbookAsPrimary": "Set as primary", "LabelSetEbookAsPrimary": "Set as primary",