Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@
"formatVersion": 1,
"database": {
"version": 13,
"identityHash": "c7cc50ecee4eade523754a064beb4aae",
"identityHash": "efd2d560367617e6674c425f5a1792ed",
"entities": [
{
"tableName": "tracks",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `media_store_id` INTEGER NOT NULL, `title` TEXT NOT NULL, `artist` TEXT NOT NULL, `path` TEXT NOT NULL, `duration` INTEGER NOT NULL, `album` TEXT NOT NULL, `genre` TEXT NOT NULL, `cover_art` TEXT NOT NULL, `playlist_id` INTEGER NOT NULL, `track_id` INTEGER NOT NULL, `folder_name` TEXT NOT NULL, `album_id` INTEGER NOT NULL, `artist_id` INTEGER NOT NULL, `genre_id` INTEGER NOT NULL, `year` INTEGER NOT NULL, `date_added` INTEGER NOT NULL, `order_in_playlist` INTEGER NOT NULL, `flags` INTEGER NOT NULL)",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `media_store_id` INTEGER NOT NULL, `title` TEXT NOT NULL, `artist` TEXT NOT NULL, `path` TEXT NOT NULL, `duration` INTEGER NOT NULL, `album` TEXT NOT NULL, `genre` TEXT NOT NULL, `cover_art` TEXT NOT NULL, `playlist_id` INTEGER NOT NULL, `track_id` INTEGER NOT NULL, `disc_id` INTEGER NOT NULL, `folder_name` TEXT NOT NULL, `album_id` INTEGER NOT NULL, `artist_id` INTEGER NOT NULL, `genre_id` INTEGER NOT NULL, `year` INTEGER NOT NULL, `date_added` INTEGER NOT NULL, `order_in_playlist` INTEGER NOT NULL, `flags` INTEGER NOT NULL)",
"fields": [
{
"fieldPath": "id",
Expand Down Expand Up @@ -74,6 +74,12 @@
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "discId",
"columnName": "disc_id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "folderName",
"columnName": "folder_name",
Expand Down Expand Up @@ -395,7 +401,7 @@
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'c7cc50ecee4eade523754a064beb4aae')"
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'efd2d560367617e6674c425f5a1792ed')"
]
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import com.simplemobiletools.musicplayer.helpers.EXTRA_ARTIST
import com.simplemobiletools.musicplayer.helpers.EXTRA_ARTIST_ID
import com.simplemobiletools.musicplayer.helpers.EXTRA_COVER_ART
import com.simplemobiletools.musicplayer.helpers.EXTRA_DATE_ADDED
import com.simplemobiletools.musicplayer.helpers.EXTRA_DISC_ID
import com.simplemobiletools.musicplayer.helpers.EXTRA_DURATION
import com.simplemobiletools.musicplayer.helpers.EXTRA_FLAGS
import com.simplemobiletools.musicplayer.helpers.EXTRA_FOLDER_NAME
Expand All @@ -37,6 +38,7 @@ fun buildMediaItem(
mediaType: @MediaMetadata.MediaType Int,
trackCnt: Int? = null,
trackNumber: Int? = null,
discNumber: Int? = null,
year: Int? = null,
sourceUri: Uri? = null,
artworkUri: Uri? = null,
Expand All @@ -51,6 +53,7 @@ fun buildMediaItem(
.setIsPlayable(mediaType == MediaMetadata.MEDIA_TYPE_MUSIC)
.setTotalTrackCount(trackCnt)
.setTrackNumber(trackNumber)
.setDiscNumber(discNumber)
.setReleaseYear(year)
.setMediaType(MediaMetadata.MEDIA_TYPE_MUSIC)
.setArtworkUri(artworkUri)
Expand All @@ -77,6 +80,7 @@ fun Track.toMediaItem(): MediaItem {
genre = genre,
mediaType = MediaMetadata.MEDIA_TYPE_MUSIC,
trackNumber = trackId,
discNumber = discId,
sourceUri = getUri(),
artworkUri = coverArt.toUri(),
track = this
Expand Down Expand Up @@ -155,6 +159,7 @@ private fun createBundleFromTrack(track: Track) = bundleOf(
EXTRA_COVER_ART to track.coverArt,
EXTRA_PLAYLIST_ID to track.playListId,
EXTRA_TRACK_ID to track.trackId,
EXTRA_DISC_ID to track.discId,
EXTRA_FOLDER_NAME to track.folderName,
EXTRA_ALBUM_ID to track.albumId,
EXTRA_ARTIST_ID to track.artistId,
Expand All @@ -178,6 +183,7 @@ private fun createTrackFromBundle(bundle: Bundle): Track {
coverArt = bundle.getString(EXTRA_COVER_ART) ?: "",
playListId = bundle.getInt(EXTRA_PLAYLIST_ID),
trackId = bundle.getInt(EXTRA_TRACK_ID),
discId = bundle.getInt(EXTRA_DISC_ID),
folderName = bundle.getString(EXTRA_FOLDER_NAME) ?: "",
albumId = bundle.getLong(EXTRA_ALBUM_ID),
artistId = bundle.getLong(EXTRA_ARTIST_ID),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ const val EXTRA_GENRE = "genre"
const val EXTRA_COVER_ART = "cover_art"
const val EXTRA_PLAYLIST_ID = "playlist_id"
const val EXTRA_TRACK_ID = "track_id"
const val EXTRA_DISC_ID = "disc_id"
const val EXTRA_FOLDER_NAME = "folder_name"
const val EXTRA_ALBUM_ID = "album_id"
const val EXTRA_ARTIST_ID = "artist_id"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ class RoomHelper(val context: Context) {

val song = Track(
id = 0, mediaStoreId = mediaStoreId, title = title, artist = artist, path = path, duration = duration, album = album, genre = genre,
coverArt = coverArt, playListId = playlistId, trackId = 0, folderName = folderName, albumId = albumId, artistId = artistId,
coverArt = coverArt, playListId = playlistId, trackId = 0, discId = 0, folderName = folderName, albumId = albumId, artistId = artistId,
genreId = genreId, year = year, dateAdded = dateAdded, orderInPlaylist = 0
)
song.title = song.getProperTitle(showFilename)
Expand All @@ -114,7 +114,7 @@ class RoomHelper(val context: Context) {

val song = Track(
id = 0, mediaStoreId = 0, title = title, artist = artist, path = it, duration = context.getDuration(it) ?: 0, album = "",
genre = "", coverArt = "", playListId = playlistId, trackId = 0, folderName = "", albumId = 0, artistId = 0, genreId = 0,
genre = "", coverArt = "", playListId = playlistId, trackId = 0, discId = 0, folderName = "", albumId = 0, artistId = 0, genreId = 0,
year = 0, dateAdded = dateAdded, orderInPlaylist = 0
)
song.title = song.getProperTitle(showFilename)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,7 @@ class SimpleMediaScanner(private val context: Application) {
val title = cursor.getStringValue(Audio.Media.TITLE)
val duration = cursor.getIntValue(Audio.Media.DURATION) / 1000
val trackId = cursor.getIntValue(Audio.Media.TRACK) % 1000
val discId = cursor.getIntValue(Audio.Media.DISC_NUMBER) % 1000
val path = cursor.getStringValue(Audio.Media.DATA).orEmpty()
val artist = cursor.getStringValue(Audio.Media.ARTIST) ?: MediaStore.UNKNOWN_STRING
val folderName = if (isQPlus()) {
Expand Down Expand Up @@ -261,7 +262,7 @@ class SimpleMediaScanner(private val context: Application) {
if (!title.isNullOrEmpty()) {
val track = Track(
id = 0, mediaStoreId = id, title = title, artist = artist, path = path, duration = duration, album = album, genre = genre,
coverArt = coverArt, playListId = 0, trackId = trackId, folderName = folderName, albumId = albumId, artistId = artistId, genreId = genreId,
coverArt = coverArt, playListId = 0, trackId = trackId, discId = discId, folderName = folderName, albumId = albumId, artistId = artistId, genreId = genreId,
year = year, dateAdded = dateAdded, orderInPlaylist = 0
)
tracks.add(track)
Expand Down Expand Up @@ -442,6 +443,8 @@ class SimpleMediaScanner(private val context: Application) {
val album = retriever.extractMetadata(METADATA_KEY_ALBUM) ?: folderName
val trackNumber = retriever.extractMetadata(METADATA_KEY_CD_TRACK_NUMBER)
val trackId = trackNumber?.split("/")?.first()?.toIntOrNull() ?: 0
val discNumber = retriever.extractMetadata((METADATA_KEY_DISC_NUMBER))
val discId = discNumber?.split("/")?.first()?.toIntOrNull() ?: 0
val year = retriever.extractMetadata(METADATA_KEY_YEAR)?.toIntOrNull() ?: 0
val dateAdded = try {
(File(path).lastModified() / 1000L).toInt()
Expand All @@ -454,7 +457,7 @@ class SimpleMediaScanner(private val context: Application) {
if (title.isNotEmpty()) {
val track = Track(
id = 0, mediaStoreId = 0, title = title, artist = artist, path = path, duration = duration, album = album, genre = genre,
coverArt = "", playListId = 0, trackId = trackId, folderName = folderName, albumId = 0, artistId = 0, genreId = 0,
coverArt = "", playListId = 0, trackId = trackId, discId = discId, folderName = folderName, albumId = 0, artistId = 0, genreId = 0,
year = year, dateAdded = dateAdded, orderInPlaylist = 0, flags = FLAG_MANUAL_CACHE
)
// use hashCode() as id for tracking purposes, there's a very slim chance of collision
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ data class Track(
@ColumnInfo(name = "cover_art") val coverArt: String,
@ColumnInfo(name = "playlist_id") var playListId: Int,
@ColumnInfo(name = "track_id") val trackId: Int, // order id within the tracks' album
@ColumnInfo(name = "disc_id") val discId: Int, // disc within album (for multi-disc albums)
@ColumnInfo(name = "folder_name") var folderName: String,
@ColumnInfo(name = "album_id") var albumId: Long,
@ColumnInfo(name = "artist_id") var artistId: Long,
Expand Down Expand Up @@ -62,7 +63,13 @@ data class Track(
}
}

sorting and PLAYER_SORT_BY_TRACK_ID != 0 -> first.trackId.compareTo(second.trackId)
sorting and PLAYER_SORT_BY_TRACK_ID != 0 -> {
when (first.discId) {
second.discId -> first.trackId.compareTo(second.trackId)
else -> first.discId.compareTo(second.discId)
}
}

sorting and PLAYER_SORT_BY_DATE_ADDED != 0 -> first.dateAdded.compareTo(second.dateAdded)
sorting and PLAYER_SORT_BY_CUSTOM != 0 -> first.orderInPlaylist.compareTo(second.orderInPlaylist)
else -> first.duration.compareTo(second.duration)
Expand Down