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