Resolve song from collection using track with Cue in XSPF

Fixes #1181
This commit is contained in:
Jonas Kvinge
2024-04-04 22:22:02 +02:00
parent f48d1a8017
commit e1fbe9ae54
11 changed files with 60 additions and 17 deletions

View File

@@ -120,7 +120,7 @@ Song XSPFParser::ParseTrack(QXmlStreamReader *reader, const QDir &dir, const boo
}
return_song:
Song song = LoadSong(location, 0, dir, collection_search);
Song song = LoadSong(location, 0, track_num, dir, collection_search);
// Override metadata with what was in the playlist
if (song.source() != Song::Source::Collection) {
@@ -169,10 +169,13 @@ void XSPFParser::Save(const SongList &songs, QIODevice *device, const QDir &dir,
if (song.length_nanosec() != -1) {
writer.writeTextElement("duration", QString::number(song.length_nanosec() / kNsecPerMsec));
}
if (song.track() > 0) {
writer.writeTextElement("trackNum", QString::number(song.track()));
}
}
if ((write_metadata || song.has_cue() || (song.is_stream() && !song.is_radio())) && song.track() > 0) {
writer.writeTextElement("trackNum", QString::number(song.track()));
}
if (write_metadata || (song.is_stream() && !song.is_radio())) {
const QUrl cover_url = song.art_manual().isEmpty() || !song.art_manual().isValid() ? song.art_automatic() : song.art_manual();
// Ignore images that are in our resource bundle.
if (!cover_url.isEmpty() && cover_url.isValid()) {