diff --git a/importer/fileutils.h b/importer/fileutils.h --- a/importer/fileutils.h +++ b/importer/fileutils.h @@ -48,15 +48,6 @@ */ RenameResult rename(const QUrl& src, const QUrl& dst, QWidget* authWindow = nullptr); -/** - * Create a temp dir in baseDir, starting with prefix. If successful returns - * the created dir otherwise returns an empty string and writes the error message - * in errorMessage. - * - * errorMessage must be a valid pointer. - */ -QString createTempDir(const QString& baseDir, const QString& prefix, QString* errorMessage); - } // namespace } // namespace diff --git a/importer/fileutils.cpp b/importer/fileutils.cpp --- a/importer/fileutils.cpp +++ b/importer/fileutils.cpp @@ -35,11 +35,6 @@ #include #include -// libc -#include -#include -#include - namespace Gwenview { namespace FileUtils @@ -144,19 +139,5 @@ return result; } -QString createTempDir(const QString& baseDir, const QString& prefix, QString* errorMessage) -{ - Q_ASSERT(errorMessage); - - QByteArray name = QFile::encodeName(baseDir + '/' + prefix + "XXXXXX"); - - if (!mkdtemp(name.data())) { - // Failure - *errorMessage = QString::fromLocal8Bit(::strerror(errno)); - return QString(); - } - return QFile::decodeName(name + '/'); -} - } // namespace } // namespace diff --git a/importer/importer.cpp b/importer/importer.cpp --- a/importer/importer.cpp +++ b/importer/importer.cpp @@ -25,6 +25,7 @@ #include #include #include +#include // KDE #include @@ -53,6 +54,7 @@ QWidget* mAuthWindow; std::unique_ptr mFileNameFormater; QUrl mTempImportDirUrl; + QTemporaryDir* mTempImportDir; /* @defgroup reset Should be reset in start() * @{ */ @@ -75,13 +77,21 @@ emit q->error(i18n("Could not create destination folder.")); return false; } - QString message; - QString dir = FileUtils::createTempDir(url.toLocalFile(), ".gwenview_importer-", &message); - mTempImportDirUrl = QUrl::fromLocalFile(dir); - if (mTempImportDirUrl.isEmpty()) { - emit q->error(i18n("Could not create temporary upload folder:\n%1", message)); + + QString tempDirPath = url.toLocalFile() + "/.gwenview_importer-XXXXXX"; + mTempImportDir = new QTemporaryDir(tempDirPath); + + if (!mTempImportDir->isValid()) { + emit q->error(i18n("Could not create temporary upload folder.")); return false; } + + mTempImportDirUrl = QUrl::fromLocalFile(mTempImportDir->path() + '/'); + if (!mTempImportDirUrl.isValid()) { + emit q->error(i18n("Could not create temporary upload folder.")); + return false; + } + return true; } @@ -197,8 +207,7 @@ void Importer::finalizeImport() { - KIO::Job* job = KIO::del(d->mTempImportDirUrl, KIO::HideProgressInfo); - KJobWidgets::setWindow(job, d->mAuthWindow); + delete d->mTempImportDir; emit importFinished(); }