diff --git a/src/ui/ripcd.cpp b/src/ui/ripcd.cpp index e6d8c93f7..60f0f665e 100644 --- a/src/ui/ripcd.cpp +++ b/src/ui/ripcd.cpp @@ -22,6 +22,7 @@ #include "transcoder/transcoderoptionsdialog.h" #include "ui/iconloader.h" #include "core/logging.h" +#include "core/utilities.h" #include #include @@ -225,7 +226,7 @@ int RipCD::NumTracksToRip() { void RipCD::ThreadClickedRipButton() { - QString source_directory = QDir::tempPath() + "/"; + temporary_directory_ = Utilities::MakeTempDir() + "/"; finished_success_ = 0; finished_failed_ = 0; @@ -241,7 +242,7 @@ void RipCD::ThreadClickedRipButton() { } tracks_to_rip_.append(i); - QString filename = source_directory + QString filename = temporary_directory_ + ParseFileFormatString(ui_->format_filename->text(), i) + ".wav"; QFile *destination_file = new QFile(filename); destination_file->open(QIODevice::WriteOnly); @@ -336,6 +337,8 @@ void RipCD::JobComplete(const QString& filename, bool success) { } void RipCD::AllJobsComplete() { + RemoveTemporaryDirectory(); + // having a little trouble on wav files, works fine on ogg-vorbis qSort(generated_files_); @@ -411,6 +414,7 @@ void RipCD::AddDestinationDirectory(QString dir) { void RipCD::Cancel() { transcoder_->Cancel(); + RemoveTemporaryDirectory(); SetWorking(false); } @@ -448,3 +452,9 @@ void RipCD::InvertSelection() { } } } + +void RipCD::RemoveTemporaryDirectory() { + if (!temporary_directory_.isEmpty()) + Utilities::RemoveRecursive(temporary_directory_); + temporary_directory_.clear(); +} diff --git a/src/ui/ripcd.h b/src/ui/ripcd.h index dd98d479b..6f134639f 100644 --- a/src/ui/ripcd.h +++ b/src/ui/ripcd.h @@ -57,6 +57,7 @@ class RipCD: public QDialog { QPushButton* cancel_button_; QPushButton* close_button_; QPushButton* rip_button_; + QString temporary_directory_; void WriteWAVHeader(QFile *stream, int32_t i_bytecount); int NumTracksToRip(); @@ -67,6 +68,7 @@ class RipCD: public QDialog { QString ParseFileFormatString(const QString& file_format, int track_no) const; void SetWorking(bool working); void AddDestinationDirectory(QString dir); + void RemoveTemporaryDirectory(); signals: void RippingComplete();