Keep working until tagging is complete.

This commit is contained in:
Mattias Andersson 2014-05-18 14:15:06 +02:00
parent 182c90ccf4
commit 2137ac4709
2 changed files with 18 additions and 2 deletions

View File

@ -30,6 +30,8 @@
#include <QDataStream> #include <QDataStream>
#include <QFileDialog> #include <QFileDialog>
#include <QFrame> #include <QFrame>
#include <QFuture>
#include <QFutureWatcher>
#include <QLineEdit> #include <QLineEdit>
#include <QMessageBox> #include <QMessageBox>
#include <QMutexLocker> #include <QMutexLocker>
@ -334,6 +336,7 @@ void RipCD::JobComplete(const QString& filename, bool success) {
void RipCD::AllJobsComplete() { void RipCD::AllJobsComplete() {
RemoveTemporaryDirectory(); RemoveTemporaryDirectory();
// Save tags in the background. // Save tags in the background.
TranscoderPreset preset = ui_->format->itemData(ui_->format->currentIndex()) TranscoderPreset preset = ui_->format->itemData(ui_->format->currentIndex())
.value<TranscoderPreset>(); .value<TranscoderPreset>();
@ -341,8 +344,11 @@ void RipCD::AllJobsComplete() {
ui_->albumLineEdit->text(), ui_->artistLineEdit->text(), ui_->albumLineEdit->text(), ui_->artistLineEdit->text(),
ui_->genreLineEdit->text(), ui_->yearLineEdit->text().toInt(), ui_->genreLineEdit->text(), ui_->yearLineEdit->text().toInt(),
ui_->discLineEdit->text().toInt(), preset.type_); ui_->discLineEdit->text().toInt(), preset.type_);
QFuture<void> future =
QtConcurrent::run(this, &RipCD::TagFiles, album, tracks_); QtConcurrent::run(this, &RipCD::TagFiles, album, tracks_);
SetWorking(false); QFutureWatcher<void>* watcher = new QFutureWatcher<void>(this);
connect(watcher, SIGNAL(finished()), SLOT(TaggingComplete()));
watcher->setFuture(future);
} }
void RipCD::TagFiles(const AlbumInformation& album, void RipCD::TagFiles(const AlbumInformation& album,
@ -365,6 +371,15 @@ void RipCD::TagFiles(const AlbumInformation& album,
} }
} }
void RipCD::TaggingComplete() {
QFutureWatcher<void>* watcher = dynamic_cast<QFutureWatcher<void>*>(sender());
if (!watcher) return;
watcher->deleteLater();
SetWorking(false);
qLog(Debug) << "CD ripper finished.";
}
void RipCD::Options() { void RipCD::Options() {
TranscoderPreset preset = ui_->format->itemData(ui_->format->currentIndex()) TranscoderPreset preset = ui_->format->itemData(ui_->format->currentIndex())
.value<TranscoderPreset>(); .value<TranscoderPreset>();

View File

@ -124,6 +124,7 @@ signals:
void ClickedRipButton(); void ClickedRipButton();
void JobComplete(const QString& filename, bool success); void JobComplete(const QString& filename, bool success);
void AllJobsComplete(); void AllJobsComplete();
void TaggingComplete();
void Options(); void Options();
void AddDestination(); void AddDestination();
void Cancel(); void Cancel();