From 94db55598aa7041c9b6ac208b3787f314f3d723b Mon Sep 17 00:00:00 2001 From: advplyr Date: Sun, 4 Dec 2022 14:49:24 -0600 Subject: [PATCH] Fix:Changing track sort order (Android) #380 --- .../com/audiobookshelf/app/data/AudioTrack.kt | 34 ++++++++++++++++++ .../audiobookshelf/app/data/DataClasses.kt | 36 +++---------------- .../app/player/PlayerNotificationService.kt | 2 +- 3 files changed, 39 insertions(+), 33 deletions(-) create mode 100644 android/app/src/main/java/com/audiobookshelf/app/data/AudioTrack.kt diff --git a/android/app/src/main/java/com/audiobookshelf/app/data/AudioTrack.kt b/android/app/src/main/java/com/audiobookshelf/app/data/AudioTrack.kt new file mode 100644 index 00000000..ca83aeac --- /dev/null +++ b/android/app/src/main/java/com/audiobookshelf/app/data/AudioTrack.kt @@ -0,0 +1,34 @@ +package com.audiobookshelf.app.data + +import com.fasterxml.jackson.annotation.JsonIgnore +import com.fasterxml.jackson.annotation.JsonIgnoreProperties + +@JsonIgnoreProperties(ignoreUnknown = true) +data class AudioTrack( + var index:Int, + var startOffset:Double, + var duration:Double, + var title:String, + var contentUrl:String, + var mimeType:String, + var metadata:FileMetadata?, + var isLocal:Boolean, + var localFileId:String?, + var audioProbeResult:AudioProbeResult?, + var serverIndex:Int? // Need to know if server track index is different +) { + + @get:JsonIgnore + val startOffsetMs get() = (startOffset * 1000L).toLong() + @get:JsonIgnore + val durationMs get() = (duration * 1000L).toLong() + @get:JsonIgnore + val endOffsetMs get() = startOffsetMs + durationMs + @get:JsonIgnore + val relPath get() = metadata?.relPath ?: "" + + @JsonIgnore + fun getBookChapter():BookChapter { + return BookChapter(index + 1,startOffset, startOffset + duration, title) + } +} diff --git a/android/app/src/main/java/com/audiobookshelf/app/data/DataClasses.kt b/android/app/src/main/java/com/audiobookshelf/app/data/DataClasses.kt index 807457e6..3e8c9bb5 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/data/DataClasses.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/data/DataClasses.kt @@ -122,10 +122,13 @@ class Book( override fun setAudioTracks(audioTracks:MutableList) { tracks = audioTracks tracks?.sortBy { it.index } - // TODO: Is it necessary to calculate this each time? check if can remove safely + var totalDuration = 0.0 + var currentStartOffset = 0.0 tracks?.forEach { totalDuration += it.duration + it.startOffset = currentStartOffset + currentStartOffset += it.duration } duration = totalDuration } @@ -158,7 +161,6 @@ class Book( } duration = totalDuration } - @JsonIgnore override fun getLocalCopy(): Book { return Book(metadata as BookMetadata,coverPath,tags, mutableListOf(),chapters,mutableListOf(),null,null, 0) @@ -329,36 +331,6 @@ data class Folder( var fullPath:String ) -@JsonIgnoreProperties(ignoreUnknown = true) -data class AudioTrack( - var index:Int, - var startOffset:Double, - var duration:Double, - var title:String, - var contentUrl:String, - var mimeType:String, - var metadata:FileMetadata?, - var isLocal:Boolean, - var localFileId:String?, - var audioProbeResult:AudioProbeResult?, - var serverIndex:Int? // Need to know if server track index is different -) { - - @get:JsonIgnore - val startOffsetMs get() = (startOffset * 1000L).toLong() - @get:JsonIgnore - val durationMs get() = (duration * 1000L).toLong() - @get:JsonIgnore - val endOffsetMs get() = startOffsetMs + durationMs - @get:JsonIgnore - val relPath get() = metadata?.relPath ?: "" - - @JsonIgnore - fun getBookChapter():BookChapter { - return BookChapter(index + 1,startOffset, startOffset + duration, title) - } -} - @JsonIgnoreProperties(ignoreUnknown = true) data class BookChapter( var id:Int, diff --git a/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt b/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt index a2c1868b..db844340 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt @@ -358,7 +358,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { customActionProviders.addAll(listOf( SkipBackwardCustomActionProvider(), SkipForwardCustomActionProvider(), - )); + )) } mediaSessionConnector.setCustomActionProviders(*customActionProviders.toTypedArray());