RipCDDialog rejects metadata lists if number of tracks does not match disc.

First step for addressing #7020.
This commit is contained in:
Lukas Prediger 2021-05-14 20:48:16 +03:00 committed by John Maguire
parent 436c53870a
commit 54a497b302
2 changed files with 13 additions and 1 deletions

View File

@ -93,7 +93,7 @@ RipCDDialog::RipCDDialog(QWidget* parent)
connect(loader_, SIGNAL(SongsDurationLoaded(SongList)),
SLOT(BuildTrackListTable(SongList)));
connect(loader_, SIGNAL(SongsMetadataLoaded(SongList)),
SLOT(BuildTrackListTable(SongList)));
SLOT(UpdateTrackListTable(SongList)));
connect(loader_, SIGNAL(SongsMetadataLoaded(SongList)),
SLOT(AddAlbumMetadataFromMusicBrainz(SongList)));
@ -280,6 +280,14 @@ void RipCDDialog::BuildTrackListTable(const SongList& songs) {
}
}
void RipCDDialog::UpdateTrackListTable(const SongList& songs) {
if (track_names_.length() == songs.length()) {
BuildTrackListTable(songs);
} else {
qLog(Error) << "Number of tracks in metadata does not match number of songs on disc!";
}
}
void RipCDDialog::AddAlbumMetadataFromMusicBrainz(const SongList& songs) {
Q_ASSERT(songs.length() > 0);

View File

@ -57,7 +57,11 @@ class RipCDDialog : public QDialog {
void Cancelled();
void SetupProgressBarLimits(int min, int max);
void UpdateProgressBar(int progress);
// Initializes track list table based on preliminary song list with durations but without metadata.
void BuildTrackListTable(const SongList& songs);
// Update track list based on metadata.
void UpdateTrackListTable(const SongList& songs);
// Update album information with metadata.
void AddAlbumMetadataFromMusicBrainz(const SongList& songs);
private: