diff --git a/src/app/main.cpp b/src/app/main.cpp index b10eea891c5..77c08cbd088 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -567,7 +567,7 @@ int main(int argc, char **argv) temporaryCleanSettingsDir.reset(new Utils::TemporaryDirectory("qtc-test-settings")); if (!temporaryCleanSettingsDir->isValid()) return 1; - options.settingsPath = temporaryCleanSettingsDir->path(); + options.settingsPath = temporaryCleanSettingsDir->path().path(); } if (!options.settingsPath.isEmpty()) QSettings::setPath(QSettings::IniFormat, QSettings::UserScope, options.settingsPath); diff --git a/src/libs/utils/temporarydirectory.cpp b/src/libs/utils/temporarydirectory.cpp index da539919e42..2c30606e9b0 100644 --- a/src/libs/utils/temporarydirectory.cpp +++ b/src/libs/utils/temporarydirectory.cpp @@ -25,6 +25,8 @@ #include "temporarydirectory.h" +#include "fileutils.h" + #include #include "qtcassert.h" @@ -64,4 +66,14 @@ QString TemporaryDirectory::masterDirectoryPath() return m_masterTemporaryDir->path(); } +FilePath TemporaryDirectory::path() const +{ + return FilePath::fromString(QTemporaryDir::path()); +} + +FilePath TemporaryDirectory::filePath(const QString &fileName) const +{ + return FilePath::fromString(QTemporaryDir::filePath(fileName)); +} + } // namespace Utils diff --git a/src/libs/utils/temporarydirectory.h b/src/libs/utils/temporarydirectory.h index 853474c24bd..42390a9a0f2 100644 --- a/src/libs/utils/temporarydirectory.h +++ b/src/libs/utils/temporarydirectory.h @@ -31,6 +31,8 @@ namespace Utils { +class FilePath; + class QTCREATOR_UTILS_EXPORT TemporaryDirectory : public QTemporaryDir { public: @@ -39,6 +41,9 @@ public: static QTemporaryDir *masterTemporaryDirectory(); static void setMasterTemporaryDirectory(const QString &pattern); static QString masterDirectoryPath(); + + FilePath path() const; + FilePath filePath(const QString &fileName) const; }; } // namespace Utils diff --git a/src/plugins/android/javalanguageserver.cpp b/src/plugins/android/javalanguageserver.cpp index 73de7c0bac2..c7c093f53c3 100644 --- a/src/plugins/android/javalanguageserver.cpp +++ b/src/plugins/android/javalanguageserver.cpp @@ -183,7 +183,7 @@ class JLSInterface : public LanguageClient::StdIOClientInterface public: JLSInterface() = default; - QString workspaceDir() const { return m_workspaceDir.path(); } + QString workspaceDir() const { return m_workspaceDir.path().path(); } private: TemporaryDirectory m_workspaceDir = TemporaryDirectory("QtCreator-jls-XXXXXX"); diff --git a/src/plugins/clangcodemodel/clanguiheaderondiskmanager.cpp b/src/plugins/clangcodemodel/clanguiheaderondiskmanager.cpp index d17f69ed50a..696ced1c6f7 100644 --- a/src/plugins/clangcodemodel/clanguiheaderondiskmanager.cpp +++ b/src/plugins/clangcodemodel/clanguiheaderondiskmanager.cpp @@ -28,6 +28,7 @@ #include #include +#include #include namespace ClangCodeModel { @@ -62,7 +63,7 @@ QString UiHeaderOnDiskManager::remove(const QString &filePath) QString UiHeaderOnDiskManager::directoryPath() const { - return m_temporaryDir.path(); + return m_temporaryDir.path().path(); } QString UiHeaderOnDiskManager::mapPath(const QString &filePath) const diff --git a/src/plugins/clangtools/clangtoolruncontrol.cpp b/src/plugins/clangtools/clangtoolruncontrol.cpp index 4a8cbcfbf4b..31c2a37655a 100644 --- a/src/plugins/clangtools/clangtoolruncontrol.cpp +++ b/src/plugins/clangtools/clangtoolruncontrol.cpp @@ -445,7 +445,7 @@ template ClangToolRunner *ClangToolRunWorker::createRunner() { auto runner = new T(m_diagnosticConfig, this); - runner->init(m_temporaryDir.path(), m_environment); + runner->init(m_temporaryDir.path().path(), m_environment); connect(runner, &ClangToolRunner::finishedWithSuccess, this, &ClangToolRunWorker::onRunnerFinishedWithSuccess); connect(runner, &ClangToolRunner::finishedWithFailure, diff --git a/src/plugins/clangtools/documentclangtoolrunner.cpp b/src/plugins/clangtools/documentclangtoolrunner.cpp index 89d76e0f559..93bcaa7746e 100644 --- a/src/plugins/clangtools/documentclangtoolrunner.cpp +++ b/src/plugins/clangtools/documentclangtoolrunner.cpp @@ -391,7 +391,7 @@ ClangToolRunner *DocumentClangToolRunner::createRunner(const CppTools::ClangDiag const Utils::Environment &env) { auto runner = new T(config, this); - runner->init(m_temporaryDir.path(), env); + runner->init(m_temporaryDir.path().path(), env); connect(runner, &ClangToolRunner::finishedWithSuccess, this, &DocumentClangToolRunner::onSuccess); connect(runner, &ClangToolRunner::finishedWithFailure, diff --git a/src/plugins/clangtools/virtualfilesystemoverlay.cpp b/src/plugins/clangtools/virtualfilesystemoverlay.cpp index 357f8eec40e..0b066ff62f6 100644 --- a/src/plugins/clangtools/virtualfilesystemoverlay.cpp +++ b/src/plugins/clangtools/virtualfilesystemoverlay.cpp @@ -42,7 +42,7 @@ namespace Internal { VirtualFileSystemOverlay::VirtualFileSystemOverlay(const QString &rootPattern) : m_root(rootPattern) - , m_overlayFilePath(Utils::FilePath::fromString(m_root.filePath("vfso.yaml"))) + , m_overlayFilePath(m_root.filePath("vfso.yaml")) { } void VirtualFileSystemOverlay::update() @@ -64,8 +64,7 @@ void VirtualFileSystemOverlay::update() saved.path.removeRecursively(); saved.revision = document->document()->revision(); QString error; - saved.path = Utils::FilePath::fromString(m_root.path()) - .pathAppended(doc->filePath().fileName() + ".auto"); + saved.path = m_root.filePath(doc->filePath().fileName() + ".auto"); while (saved.path.exists()) saved.path = saved.path + ".1"; if (!doc->save(&error, saved.path, true)) { diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp index 0b60ed75739..f60b224564f 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp @@ -162,7 +162,7 @@ static FilePath qmakeFromCMakeCache(const CMakeConfig &config) // Run a CMake project that would do qmake probing TemporaryDirectory qtcQMakeProbeDir("qtc-cmake-qmake-probe-XXXXXXXX"); - QFile cmakeListTxt(qtcQMakeProbeDir.path() + "/CMakeLists.txt"); + QFile cmakeListTxt(qtcQMakeProbeDir.filePath("CMakeLists.txt").toString()); if (!cmakeListTxt.open(QIODevice::WriteOnly)) { return FilePath(); } @@ -219,9 +219,9 @@ static FilePath qmakeFromCMakeCache(const CMakeConfig &config) QStringList args; args.push_back("-S"); - args.push_back(qtcQMakeProbeDir.path()); + args.push_back(qtcQMakeProbeDir.path().path()); args.push_back("-B"); - args.push_back(qtcQMakeProbeDir.path() + "/build"); + args.push_back(qtcQMakeProbeDir.filePath("build").path()); args.push_back("-G"); args.push_back(cmakeGenerator); @@ -242,7 +242,7 @@ static FilePath qmakeFromCMakeCache(const CMakeConfig &config) cmake.setCommand({cmakeExecutable, args}); cmake.runBlocking(); - QFile qmakeLocationTxt(qtcQMakeProbeDir.path() + "/qmake-location.txt"); + QFile qmakeLocationTxt(qtcQMakeProbeDir.filePath("qmake-location.txt").path()); if (!qmakeLocationTxt.open(QIODevice::ReadOnly)) { return FilePath(); } diff --git a/src/plugins/coreplugin/plugininstallwizard.cpp b/src/plugins/coreplugin/plugininstallwizard.cpp index fd6e3ddfe9d..a97f15ef341 100644 --- a/src/plugins/coreplugin/plugininstallwizard.cpp +++ b/src/plugins/coreplugin/plugininstallwizard.cpp @@ -200,14 +200,14 @@ public: m_canceled = false; m_tempDir = std::make_unique("plugininstall"); - m_data->extractedPath = FilePath::fromString(m_tempDir->path()); + m_data->extractedPath = m_tempDir->path(); m_label->setText(PluginInstallWizard::tr("Checking archive...")); m_label->setType(InfoLabel::None); m_cancelButton->setVisible(true); m_output->clear(); - m_archive = Archive::unarchive(m_data->sourcePath, FilePath::fromString(m_tempDir->path())); + m_archive = Archive::unarchive(m_data->sourcePath, m_tempDir->path()); if (!m_archive) { m_label->setType(InfoLabel::Error); @@ -271,7 +271,7 @@ public: PluginSpec *coreplugin = CorePlugin::instance()->pluginSpec(); // look for plugin - QDirIterator it(m_tempDir->path(), + QDirIterator it(m_tempDir->path().path(), libraryNameFilter(), QDir::Files | QDir::NoSymLinks, QDirIterator::Subdirectories); diff --git a/src/plugins/cpptools/cpptoolstestcase.cpp b/src/plugins/cpptools/cpptoolstestcase.cpp index c80a4a7cfff..e9a6e85d0d5 100644 --- a/src/plugins/cpptools/cpptoolstestcase.cpp +++ b/src/plugins/cpptools/cpptoolstestcase.cpp @@ -312,7 +312,7 @@ QString TemporaryDir::createFile(const QByteArray &relativePath, const QByteArra if (relativePathString.isEmpty() || QFileInfo(relativePathString).isAbsolute()) return QString(); - const QString filePath = m_temporaryDir.path() + QLatin1Char('/') + relativePathString; + const QString filePath = m_temporaryDir.filePath(relativePathString).path(); if (!TestCase::writeFile(filePath, contents)) return QString(); return filePath; @@ -368,7 +368,7 @@ TemporaryCopiedDir::TemporaryCopiedDir(const QString &sourceDirPath) QString TemporaryCopiedDir::absolutePath(const QByteArray &relativePath) const { - return m_temporaryDir.path() + QLatin1Char('/') + QString::fromUtf8(relativePath); + return m_temporaryDir.filePath(QString::fromUtf8(relativePath)).path(); } FileWriterAndRemover::FileWriterAndRemover(const QString &filePath, const QByteArray &contents) diff --git a/src/plugins/cpptools/cpptoolstestcase.h b/src/plugins/cpptools/cpptoolstestcase.h index 08ae5b7c701..d03a1b297c6 100644 --- a/src/plugins/cpptools/cpptoolstestcase.h +++ b/src/plugins/cpptools/cpptoolstestcase.h @@ -155,7 +155,7 @@ public: TemporaryDir(); bool isValid() const { return m_isValid; } - QString path() const { return m_temporaryDir.path(); } + QString path() const { return m_temporaryDir.path().path(); } QString createFile(const QByteArray &relativePath, const QByteArray &contents); diff --git a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp index d9ab3ca32d7..9a40a6a8ced 100644 --- a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp +++ b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp @@ -321,7 +321,7 @@ bool PuppetCreator::build(const QString &qmlPuppetProjectFilePath) const qmakeArguments.append("CONFIG+=release"); #endif qmakeArguments.append(qmlPuppetProjectFilePath); - buildSucceeded = startBuildProcess(buildDirectory.path(), qmakeCommand(), qmakeArguments, &progressDialog); + buildSucceeded = startBuildProcess(buildDirectory.path().path(), qmakeCommand(), qmakeArguments, &progressDialog); if (buildSucceeded) { progressDialog.show(); QString buildingCommand = buildCommand(); @@ -330,7 +330,7 @@ bool PuppetCreator::build(const QString &qmlPuppetProjectFilePath) const buildArguments.append("-j"); buildArguments.append(idealProcessCount()); } - buildSucceeded = startBuildProcess(buildDirectory.path(), buildingCommand, buildArguments, &progressDialog); + buildSucceeded = startBuildProcess(buildDirectory.path().path(), buildingCommand, buildArguments, &progressDialog); } if (!buildSucceeded) { diff --git a/src/plugins/qtsupport/qscxmlcgenerator.cpp b/src/plugins/qtsupport/qscxmlcgenerator.cpp index 3c2f0ff7cf3..98be1fd99e8 100644 --- a/src/plugins/qtsupport/qscxmlcgenerator.cpp +++ b/src/plugins/qtsupport/qscxmlcgenerator.cpp @@ -48,8 +48,8 @@ QScxmlcGenerator::QScxmlcGenerator(const Project *project, m_tmpdir("qscxmlgenerator") { QTC_ASSERT(targets.count() == 2, return); - m_header = m_tmpdir.path() + QLatin1Char('/') + targets[0].fileName(); - m_impl = m_tmpdir.path() + QLatin1Char('/') + targets[1].fileName(); + m_header = m_tmpdir.filePath(targets[0].fileName()).toString(); + m_impl = m_tmpdir.filePath(targets[1].fileName()).toString(); } Tasks QScxmlcGenerator::parseIssues(const QByteArray &processStderr) @@ -97,7 +97,7 @@ QStringList QScxmlcGenerator::arguments() const Utils::FilePath QScxmlcGenerator::workingDirectory() const { - return Utils::FilePath::fromString(m_tmpdir.path()); + return m_tmpdir.path(); } bool QScxmlcGenerator::prepareToRun(const QByteArray &sourceContents) diff --git a/src/plugins/qtsupport/qtprojectimporter.cpp b/src/plugins/qtsupport/qtprojectimporter.cpp index 4749271091c..4ee36992938 100644 --- a/src/plugins/qtsupport/qtprojectimporter.cpp +++ b/src/plugins/qtsupport/qtprojectimporter.cpp @@ -380,8 +380,8 @@ void QtSupportPlugin::testQtProjectImporter_oneProject() SysRootKitAspect::setSysRoot(kitTemplates[2], Utils::FilePath::fromString("/some/other/path")); QVector qmakePaths = {defaultQt->qmakeCommand(), - setupQmake(defaultQt, tempDir1.path()), - setupQmake(defaultQt, tempDir2.path())}; + setupQmake(defaultQt, tempDir1.path().path()), + setupQmake(defaultQt, tempDir2.path().path())}; for (int i = 1; i < qmakePaths.count(); ++i) QVERIFY(!QtVersionManager::version(Utils::equal(&BaseQtVersion::qmakeCommand, qmakePaths.at(i)))); @@ -412,7 +412,7 @@ void QtSupportPlugin::testQtProjectImporter_oneProject() // Finally set up importer: // Copy the directoryData so that importer is free to delete it later. - TestQtProjectImporter importer(Utils::FilePath::fromString(tempDir1.path()), + TestQtProjectImporter importer(tempDir1.path(), Utils::transform(testData, [](DirectoryData *i) { return static_cast(new DirectoryData(*i)); })); @@ -425,7 +425,7 @@ void QtSupportPlugin::testQtProjectImporter_oneProject() const QList buildInfo = importer.import(Utils::FilePath::fromString(appDir), true); // VALIDATE: Basic TestImporter state: - QCOMPARE(importer.projectFilePath().toString(), tempDir1.path()); + QCOMPARE(importer.projectFilePath(), tempDir1.path()); QCOMPARE(importer.allDeleted(), true); // VALIDATE: Result looks reasonable: @@ -529,7 +529,7 @@ void QtSupportPlugin::testQtProjectImporter_oneProject() QCOMPARE(newKitId, newKitIdAfterImport); // VALIDATE: Importer state - QCOMPARE(importer.projectFilePath().toString(), tempDir1.path()); + QCOMPARE(importer.projectFilePath(), tempDir1.path()); QCOMPARE(importer.allDeleted(), true); if (kitIsPersistent) {