Checks for CD before opening window (addresses #4165)

This commit is contained in:
asiviero 2014-02-03 22:40:56 -02:00
parent fc728f9bfc
commit 4251fd4331
3 changed files with 26 additions and 25 deletions

View File

@ -1684,7 +1684,8 @@ void MainWindow::OpenRipCD() {
if (!rip_cd_) {
rip_cd_.reset(new RipCD);
}
if(rip_cd_->CDIOIsValid()) {
if(rip_cd_->CheckCDIOIsValid()) {
rip_cd_->BuildTrackListTable();
rip_cd_->show();
} else {
QMessageBox cdio_fail(QMessageBox::Critical, tr("Error"), tr("Failed reading CD drive"));

View File

@ -117,28 +117,6 @@ RipCD::RipCD(QWidget* parent) :
setWindowTitle(tr("Rip CD"));
AddDestinationDirectory(QDir::homePath());
cdio_ = cdio_open(NULL, DRIVER_UNKNOWN);
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 <TranscoderPreset> presets = Transcoder::GetAllPresets();
qSort(presets.begin(), presets.end(), ComparePresetsByName);
@ -418,7 +396,8 @@ void RipCD::Cancel() {
SetWorking(false);
}
bool RipCD::CDIOIsValid() const {
bool RipCD::CheckCDIOIsValid() {
cdio_ = cdio_open(NULL, DRIVER_UNKNOWN);
return (cdio_);
}
@ -458,3 +437,23 @@ void RipCD::RemoveTemporaryDirectory() {
Utilities::RemoveRecursive(temporary_directory_);
temporary_directory_.clear();
}
void RipCD::BuildTrackListTable() {
ui_->tableWidget->clear();
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);
}
}

View File

@ -36,7 +36,8 @@ class RipCD: public QDialog {
public:
explicit RipCD(QWidget* parent = 0);
~RipCD();
bool CDIOIsValid() const;
bool CheckCDIOIsValid();
void BuildTrackListTable();
private:
static const char* kSettingsGroup;