From 7cebf23bbaa3ef279ba36d0565a747aa5ee2fabe Mon Sep 17 00:00:00 2001 From: asiviero Date: Wed, 22 Jan 2014 01:44:56 -0200 Subject: [PATCH] Added ripcd to optional features, deleted ui_ripcd on destruction, added a warning in case cdio_open returns NULL --- src/CMakeLists.txt | 7 ++++--- src/ui/mainwindow.cpp | 7 ++++++- src/ui/ripcd.cpp | 45 +++++++++++++++++++++++++++++-------------- src/ui/ripcd.h | 2 ++ 4 files changed, 43 insertions(+), 18 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index fc6593d20..63f004be2 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -351,7 +351,6 @@ set(SOURCES ui/organiseerrordialog.cpp ui/playbacksettingspage.cpp ui/qtsystemtrayicon.cpp - ui/ripcd.cpp ui/screensaver.cpp ui/settingsdialog.cpp ui/settingspage.cpp @@ -630,7 +629,6 @@ set(HEADERS ui/organiseerrordialog.h ui/playbacksettingspage.h ui/qtsystemtrayicon.h - ui/ripcd.h ui/settingsdialog.h ui/settingspage.h ui/standarditemiconloader.h @@ -753,7 +751,6 @@ set(UI ui/organisedialog.ui ui/organiseerrordialog.ui ui/playbacksettingspage.ui - ui/ripcd.ui ui/settingsdialog.ui ui/trackselectiondialog.ui @@ -1030,9 +1027,13 @@ optional_source(HAVE_AUDIOCD SOURCES devices/cddadevice.cpp devices/cddalister.cpp + ui/ripcd.cpp HEADERS devices/cddadevice.h devices/cddalister.h + ui/ripcd.h + UI + ui/ripcd.ui ) # mtp device diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index ddc7d7356..df50a0971 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -1676,7 +1676,12 @@ void MainWindow::OpenRipCD() { if (!rip_cd_) { rip_cd_.reset(new RipCD); } - rip_cd_->show(); + if(rip_cd_->CDIOIsValid()) { + rip_cd_->show(); + } else { + QMessageBox cdio_fail(QMessageBox::Critical, tr("Error"), tr("Failed reading CD drive")); + cdio_fail.exec(); + } } void MainWindow::AddCDTracks() { diff --git a/src/ui/ripcd.cpp b/src/ui/ripcd.cpp index 90d29e030..81d64bacd 100644 --- a/src/ui/ripcd.cpp +++ b/src/ui/ripcd.cpp @@ -73,7 +73,8 @@ RipCD::RipCD(QWidget* parent) : finished_failed_(0), ui_(new Ui_RipCD) { - // Init + + // Init ui_->setupUi(this); cancel_button_ = ui_->button_box->button(QDialogButtonBox::Cancel); @@ -93,19 +94,26 @@ RipCD::RipCD(QWidget* parent) : setWindowTitle(tr("Rip CD")); cdio_ = cdio_open(NULL, DRIVER_UNKNOWN); - i_tracks = cdio_get_num_tracks(cdio_); - ui_->tableWidget->setRowCount(i_tracks); - - for (int i = 1; i <= i_tracks; i++) { - QCheckBox *checkbox_i = new QCheckBox(ui_->tableWidget); - checkbox_i->setCheckState(Qt::Checked); - checkboxes_.append(checkbox_i); - ui_->tableWidget->setCellWidget(i - 1, kCheckboxColumn, checkbox_i); - ui_->tableWidget->setCellWidget(i - 1, kTrackNumberColumn, new QLabel(QString::number(i))); - QString track_title = QString("Track %1").arg(i); - QLineEdit *line_edit_track_title_i = new QLineEdit(track_title,ui_->tableWidget); - track_names_.append(line_edit_track_title_i); - ui_->tableWidget->setCellWidget(i - 1, kTrackTitleColumn, line_edit_track_title_i); + if(!cdio_) { + qLog(Error) << "Failed to read CD drive"; + return; + } else { + i_tracks = cdio_get_num_tracks(cdio_); + ui_->tableWidget->setRowCount(i_tracks); + for (int i = 1; i <= i_tracks; i++) { + QCheckBox *checkbox_i = new QCheckBox(ui_->tableWidget); + checkbox_i->setCheckState(Qt::Checked); + checkboxes_.append(checkbox_i); + ui_->tableWidget->setCellWidget(i - 1, kCheckboxColumn, checkbox_i); + ui_->tableWidget->setCellWidget(i - 1, kTrackNumberColumn, + new QLabel(QString::number(i))); + QString track_title = QString("Track %1").arg(i); + QLineEdit *line_edit_track_title_i = new QLineEdit(track_title, + ui_->tableWidget); + track_names_.append(line_edit_track_title_i); + ui_->tableWidget->setCellWidget(i - 1, kTrackTitleColumn, + line_edit_track_title_i); + } } // Get presets QList presets = Transcoder::GetAllPresets(); @@ -134,6 +142,11 @@ RipCD::RipCD(QWidget* parent) : ui_->progress_bar->setMaximum(100); } +RipCD::~RipCD() { + delete ui_; +} + + /* * WAV Header documentation * as taken from: @@ -369,3 +382,7 @@ void RipCD::AddDestination() { void RipCD::Cancel() { transcoder_->Cancel(); } + +bool RipCD::CDIOIsValid() const { + return (cdio_); +} diff --git a/src/ui/ripcd.h b/src/ui/ripcd.h index 9e8a19dd4..bc998ab22 100644 --- a/src/ui/ripcd.h +++ b/src/ui/ripcd.h @@ -35,6 +35,8 @@ class RipCD: public QDialog { public: explicit RipCD(QWidget* parent = 0); + ~RipCD(); + bool CDIOIsValid() const; private: static const char* kSettingsGroup;