Ripper now works with a cdio instance passed into constructor
which comes from a CddaDevice corresponding to the device
This commit is contained in:
parent
ae3037984c
commit
3c06b92b24
@ -57,6 +57,8 @@ void CddaDevice::Refresh() {}
|
||||
|
||||
CddaSongLoader* CddaDevice::loader() { return &cdda_song_loader_; }
|
||||
|
||||
CdIo_t* CddaDevice::raw_cdio() { return cdio_; }
|
||||
|
||||
void CddaDevice::WatchForDiscChanges(bool watch) {
|
||||
if (watch && !disc_changed_timer_.isActive())
|
||||
disc_changed_timer_.start(CddaDevice::kDiscChangePollingIntervalMs);
|
||||
|
@ -43,6 +43,7 @@ class CddaDevice : public ConnectedDevice {
|
||||
bool CopyToStorage(const MusicStorage::CopyJob&) { return false; }
|
||||
bool DeleteFromStorage(const MusicStorage::DeleteJob&) { return false; }
|
||||
CddaSongLoader* loader();
|
||||
CdIo_t* raw_cdio(); // TODO: not ideal, but Ripper needs this currently
|
||||
void WatchForDiscChanges(bool watch);
|
||||
|
||||
static const int kDiscChangePollingIntervalMs;
|
||||
|
@ -56,10 +56,10 @@ RipCDDialog::RipCDDialog(std::shared_ptr<CddaDevice> cdda_device,
|
||||
QWidget* parent)
|
||||
: QDialog(parent),
|
||||
ui_(new Ui_RipCDDialog),
|
||||
ripper_(new Ripper(this)),
|
||||
working_(false),
|
||||
cdda_device_(std::move(cdda_device)),
|
||||
loader_(cdda_device_->loader()) {
|
||||
loader_(cdda_device_->loader()),
|
||||
ripper_(new Ripper(cdda_device_->raw_cdio(), this)) {
|
||||
Q_ASSERT(cdda_device_);
|
||||
// Init
|
||||
ui_->setupUi(this);
|
||||
|
@ -42,7 +42,6 @@ class RipCDDialog : public QDialog {
|
||||
explicit RipCDDialog(std::shared_ptr<CddaDevice> cdda_device,
|
||||
QWidget* parent = nullptr);
|
||||
~RipCDDialog();
|
||||
bool CheckCDIOIsValid();
|
||||
|
||||
protected:
|
||||
void closeEvent(QCloseEvent* event);
|
||||
@ -88,9 +87,9 @@ class RipCDDialog : public QDialog {
|
||||
QPushButton* close_button_;
|
||||
QPushButton* rip_button_;
|
||||
std::unique_ptr<Ui_RipCDDialog> ui_;
|
||||
Ripper* ripper_;
|
||||
bool working_;
|
||||
std::shared_ptr<CddaDevice> cdda_device_;
|
||||
CddaSongLoader* loader_;
|
||||
Ripper* ripper_;
|
||||
};
|
||||
#endif // SRC_RIPPER_RIPCDDIALOG_H_
|
||||
|
@ -38,15 +38,15 @@ const char kWavFileTypeFormatChunk[] = "WAVEfmt ";
|
||||
const char kWavDataString[] = "data";
|
||||
} // namespace
|
||||
|
||||
Ripper::Ripper(QObject* parent)
|
||||
Ripper::Ripper(CdIo_t* cdio, QObject* parent)
|
||||
: QObject(parent),
|
||||
cdio_(cdio),
|
||||
transcoder_(new Transcoder(this)),
|
||||
cancel_requested_(false),
|
||||
finished_success_(0),
|
||||
finished_failed_(0),
|
||||
files_tagged_(0) {
|
||||
cdio_ = cdio_open(NULL, DRIVER_UNKNOWN);
|
||||
|
||||
Q_ASSERT(cdio_); // TODO: error handling
|
||||
connect(transcoder_, SIGNAL(JobComplete(QString, QString, bool)),
|
||||
SLOT(TranscodingJobComplete(QString, QString, bool)));
|
||||
connect(transcoder_, SIGNAL(AllJobsComplete()),
|
||||
@ -54,7 +54,7 @@ Ripper::Ripper(QObject* parent)
|
||||
connect(transcoder_, SIGNAL(LogLine(QString)), SLOT(LogLine(QString)));
|
||||
}
|
||||
|
||||
Ripper::~Ripper() { cdio_destroy(cdio_); }
|
||||
Ripper::~Ripper() {}
|
||||
|
||||
void Ripper::AddTrack(int track_number, const QString& title,
|
||||
const QString& transcoded_filename,
|
||||
@ -89,23 +89,6 @@ int Ripper::AddedTracks() const { return tracks_.length(); }
|
||||
|
||||
void Ripper::ClearTracks() { tracks_.clear(); }
|
||||
|
||||
bool Ripper::CheckCDIOIsValid() {
|
||||
if (cdio_) {
|
||||
cdio_destroy(cdio_);
|
||||
}
|
||||
cdio_ = cdio_open(NULL, DRIVER_UNKNOWN);
|
||||
// Refresh the status of the cd media. This will prevent unnecessary
|
||||
// rebuilds of the track list table.
|
||||
if (cdio_) {
|
||||
cdio_get_media_changed(cdio_);
|
||||
}
|
||||
return cdio_;
|
||||
}
|
||||
|
||||
bool Ripper::MediaChanged() const {
|
||||
return cdio_ && cdio_get_media_changed(cdio_);
|
||||
}
|
||||
|
||||
void Ripper::Start() {
|
||||
{
|
||||
QMutexLocker l(&mutex_);
|
||||
|
@ -40,7 +40,7 @@ class Ripper : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit Ripper(QObject* parent = nullptr);
|
||||
explicit Ripper(CdIo_t* cdio, QObject* parent = nullptr);
|
||||
~Ripper();
|
||||
|
||||
// Adds a track to the rip list if the track number corresponds to a
|
||||
@ -60,10 +60,6 @@ class Ripper : public QObject {
|
||||
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:
|
||||
void Finished();
|
||||
|
Loading…
x
Reference in New Issue
Block a user