1
0
mirror of https://github.com/clementine-player/Clementine synced 2024-12-17 03:45:56 +01:00

Assorted edits to the ripper class.

- The constructor of the AlbumInformation struct now takes no arguments.

- Only add tracks to the rip list if their track numbers are valid.

- Only call cdio_get_media_changed if we have a valid cdio_ object.

- Add a description of the ripper class.
This commit is contained in:
Mattias Andersson 2015-02-18 20:06:58 +01:00
parent fc2e4db229
commit eed0c0d45f
2 changed files with 32 additions and 12 deletions

View File

@ -60,6 +60,10 @@ Ripper::~Ripper() { cdio_destroy(cdio_); }
void Ripper::AddTrack(int track_number, const QString& title,
const QString& transcoded_filename,
const TranscoderPreset& preset) {
if (track_number < 1 || track_number > TracksOnDisc()) {
qLog(Warning) << "Invalid track number:" << track_number << "Ignoring";
return;
}
TrackInformation track(track_number, title, transcoded_filename, preset);
tracks_.append(track);
}
@ -67,7 +71,12 @@ void Ripper::AddTrack(int track_number, const QString& title,
void Ripper::SetAlbumInformation(const QString& album, const QString& artist,
const QString& genre, int year, int disc,
Song::FileType type) {
album_ = AlbumInformation(album, artist, genre, year, disc, type);
album_.album = album;
album_.artist = artist;
album_.genre = genre;
album_.year = year;
album_.disc = disc;
album_.type = type;
}
int Ripper::TracksOnDisc() const {
@ -88,7 +97,9 @@ bool Ripper::CheckCDIOIsValid() {
cdio_ = cdio_open(NULL, DRIVER_UNKNOWN);
// Refresh the status of the cd media. This will prevent unnecessary
// rebuilds of the track list table.
cdio_get_media_changed(cdio_);
if (cdio_) {
cdio_get_media_changed(cdio_);
}
return cdio_;
}

View File

@ -28,22 +28,40 @@
class QFile;
// Rips selected tracks from an audio CD, transcodes them to a chosen
// format, and finally tags the files with the supplied metadata.
//
// Usage: Add tracks with AddTrack() and album metadata with
// SetAlbumInformation(). Then start the ripper with Start(). The ripper
// emits the Finished() signal when it's done or the Cancelled()
// signal if the ripping has been cancelled.
class Ripper : public QObject {
Q_OBJECT
public:
explicit Ripper(QObject* parent = nullptr);
~Ripper();
// Adds a track to the rip list if the track number corresponds to a
// track on the audio cd. The track will transcoded according to the
// chosen TranscoderPreset.
void AddTrack(int track_number, const QString& title,
const QString& transcoded_filename,
const TranscoderPreset& preset);
// Sets album metadata. This information is used when tagging the
// final files.
void SetAlbumInformation(const QString& album, const QString& artist,
const QString& genre, int year, int disc,
Song::FileType type);
// Returns the number of audio tracks on the disc.
int TracksOnDisc() const;
// Returns the number of tracks added to the rip list.
int AddedTracks() const;
// Clears the rip list.
void ClearTracks();
// Returns true if a cd device was successfully opened.
bool CheckCDIOIsValid();
// Returns true if the cd media has changed.
bool MediaChanged() const;
signals:
@ -81,16 +99,7 @@ signals:
};
struct AlbumInformation {
AlbumInformation(const QString& album = QString(),
const QString& artist = QString(),
const QString& genre = QString(), int year = 0,
int disc = 0, Song::FileType type = Song::Type_Unknown)
: album(album),
artist(artist),
genre(genre),
year(year),
disc(disc),
type(type) {}
AlbumInformation() : year(0), disc(0), type(Song::Type_Unknown) {}
QString album;
QString artist;