diff --git a/src/plugins/bazaar/bazaarplugin.cpp b/src/plugins/bazaar/bazaarplugin.cpp index 449fb85d78b..16dfb5de5c0 100644 --- a/src/plugins/bazaar/bazaarplugin.cpp +++ b/src/plugins/bazaar/bazaarplugin.cpp @@ -149,17 +149,17 @@ public: bool isVcsFileOrDirectory(const Utils::FilePath &fileName) const final; - bool managesDirectory(const QString &filename, QString *topLevel) const final; - bool managesFile(const QString &workingDirectory, const QString &fileName) const final; + bool managesDirectory(const Utils::FilePath &filePath, Utils::FilePath *topLevel) const final; + bool managesFile(const Utils::FilePath &workingDirectory, const QString &fileName) const final; bool isConfigured() const final; bool supportsOperation(Operation operation) const final; - bool vcsOpen(const QString &fileName) final; - bool vcsAdd(const QString &filename) final; - bool vcsDelete(const QString &filename) final; - bool vcsMove(const QString &from, const QString &to) final; - bool vcsCreateRepository(const QString &directory) final; - void vcsAnnotate(const QString &file, int line) final; - void vcsDescribe(const QString &source, const QString &id) final { m_client.view(source, id); } + bool vcsOpen(const Utils::FilePath &fileName) final; + bool vcsAdd(const Utils::FilePath &filePath) final; + bool vcsDelete(const Utils::FilePath &filePath) final; + bool vcsMove(const Utils::FilePath &from, const Utils::FilePath &to) final; + bool vcsCreateRepository(const Utils::FilePath &directory) final; + void vcsAnnotate(const Utils::FilePath &file, int line) final; + void vcsDescribe(const Utils::FilePath &source, const QString &id) final { m_client.view(source.toString(), id); } Core::ShellCommand *createInitialCheckoutCommand(const QString &url, const Utils::FilePath &baseDirectory, @@ -850,18 +850,18 @@ bool BazaarPluginPrivate::isVcsFileOrDirectory(const Utils::FilePath &fileName) return m_client.isVcsDirectory(fileName); } -bool BazaarPluginPrivate::managesDirectory(const QString &directory, QString *topLevel) const +bool BazaarPluginPrivate::managesDirectory(const FilePath &directory, FilePath *topLevel) const { - QFileInfo dir(directory); + QFileInfo dir(directory.toString()); const QString topLevelFound = m_client.findTopLevelForFile(dir); if (topLevel) - *topLevel = topLevelFound; + *topLevel = FilePath::fromString(topLevelFound); return !topLevelFound.isEmpty(); } -bool BazaarPluginPrivate::managesFile(const QString &workingDirectory, const QString &fileName) const +bool BazaarPluginPrivate::managesFile(const FilePath &workingDirectory, const QString &fileName) const { - return m_client.managesFile(workingDirectory, fileName); + return m_client.managesFile(workingDirectory.toString(), fileName); } bool BazaarPluginPrivate::isConfigured() const @@ -892,41 +892,41 @@ bool BazaarPluginPrivate::supportsOperation(Operation operation) const return supported; } -bool BazaarPluginPrivate::vcsOpen(const QString &filename) +bool BazaarPluginPrivate::vcsOpen(const FilePath &filePath) { - Q_UNUSED(filename) + Q_UNUSED(filePath) return true; } -bool BazaarPluginPrivate::vcsAdd(const QString &filename) +bool BazaarPluginPrivate::vcsAdd(const FilePath &filePath) { - const QFileInfo fi(filename); + const QFileInfo fi = filePath.toFileInfo(); return m_client.synchronousAdd(fi.absolutePath(), fi.fileName()); } -bool BazaarPluginPrivate::vcsDelete(const QString &filename) +bool BazaarPluginPrivate::vcsDelete(const FilePath &filePath) { - const QFileInfo fi(filename); + const QFileInfo fi = filePath.toFileInfo(); return m_client.synchronousRemove(fi.absolutePath(), fi.fileName()); } -bool BazaarPluginPrivate::vcsMove(const QString &from, const QString &to) +bool BazaarPluginPrivate::vcsMove(const FilePath &from, const FilePath &to) { - const QFileInfo fromInfo(from); - const QFileInfo toInfo(to); + const QFileInfo fromInfo = from.toFileInfo(); + const QFileInfo toInfo = to.toFileInfo(); return m_client.synchronousMove(fromInfo.absolutePath(), fromInfo.absoluteFilePath(), toInfo.absoluteFilePath()); } -bool BazaarPluginPrivate::vcsCreateRepository(const QString &directory) +bool BazaarPluginPrivate::vcsCreateRepository(const FilePath &directory) { - return m_client.synchronousCreateRepository(directory); + return m_client.synchronousCreateRepository(directory.toString()); } -void BazaarPluginPrivate::vcsAnnotate(const QString &file, int line) +void BazaarPluginPrivate::vcsAnnotate(const FilePath &file, int line) { - const QFileInfo fi(file); + const QFileInfo fi = file.toFileInfo(); m_client.annotate(fi.absolutePath(), fi.fileName(), QString(), line); } diff --git a/src/plugins/clearcase/clearcaseplugin.cpp b/src/plugins/clearcase/clearcaseplugin.cpp index 39a31d05975..565eebe6c41 100644 --- a/src/plugins/clearcase/clearcaseplugin.cpp +++ b/src/plugins/clearcase/clearcaseplugin.cpp @@ -183,28 +183,28 @@ public: QString displayName() const final; Utils::Id id() const final; - bool isVcsFileOrDirectory(const Utils::FilePath &fileName) const final; + bool isVcsFileOrDirectory(const FilePath &filePath) const final; - bool managesDirectory(const QString &directory, QString *topLevel) const final; - bool managesFile(const QString &workingDirectory, const QString &fileName) const final; + bool managesDirectory(const FilePath &directory, FilePath *topLevel) const final; + bool managesFile(const FilePath &workingDirectory, const QString &fileName) const final; bool isConfigured() const final; bool supportsOperation(Operation operation) const final; - OpenSupportMode openSupportMode(const QString &fileName) const final; - bool vcsOpen(const QString &fileName) final; + OpenSupportMode openSupportMode(const FilePath &filePath) const final; + bool vcsOpen(const FilePath &filePath) final; SettingsFlags settingsFlags() const final; - bool vcsAdd(const QString &fileName) final; - bool vcsDelete(const QString &filename) final; - bool vcsMove(const QString &from, const QString &to) final; - bool vcsCreateRepository(const QString &directory) final; + bool vcsAdd(const FilePath &filePath) final; + bool vcsDelete(const FilePath &filename) final; + bool vcsMove(const FilePath &from, const FilePath &to) final; + bool vcsCreateRepository(const FilePath &directory) final; - void vcsAnnotate(const QString &file, int line) final; - void vcsDescribe(const QString &source, const QString &changeNr) final; + void vcsAnnotate(const FilePath &file, int line) final; + void vcsDescribe(const FilePath &source, const QString &changeNr) final; QString vcsOpenText() const final; QString vcsMakeWritableText() const final; - QString vcsTopic(const QString &directory) final; + QString vcsTopic(const FilePath &directory) final; /// ClearCaseSubmitEditor *openClearCaseSubmitEditor(const QString &fileName, bool isUcm); @@ -1605,36 +1605,36 @@ void ClearCasePluginPrivate::vcsAnnotateHelper(const QString &workingDir, const } } -void ClearCasePluginPrivate::vcsDescribe(const QString &source, const QString &changeNr) +void ClearCasePluginPrivate::vcsDescribe(const FilePath &source, const QString &changeNr) { - const QFileInfo fi(source); - QString topLevel; - const bool manages = managesDirectory(fi.isDir() ? source : fi.absolutePath(), &topLevel); + const QFileInfo fi = source.toFileInfo(); + FilePath topLevel; + const bool manages = managesDirectory(fi.isDir() ? source : FilePath::fromString(fi.absolutePath()), &topLevel); if (!manages || topLevel.isEmpty()) return; if (Constants::debug) qDebug() << Q_FUNC_INFO << source << topLevel << changeNr; QString description; - QString relPath = QDir::toNativeSeparators(QDir(topLevel).relativeFilePath(source)); + QString relPath = QDir::toNativeSeparators(QDir(topLevel.toString()).relativeFilePath(source.toString())); QString id = QString::fromLatin1("%1@@%2").arg(relPath).arg(changeNr); QStringList args(QLatin1String("describe")); args.push_back(id); - QTextCodec *codec = VcsBaseEditor::getCodec(source); - const ClearCaseResponse response = runCleartool(topLevel, args, m_settings.timeOutS, 0, codec); + QTextCodec *codec = VcsBaseEditor::getCodec(source.toString()); + const ClearCaseResponse response = runCleartool(topLevel.toString(), args, m_settings.timeOutS, 0, codec); description = response.stdOut; if (m_settings.extDiffAvailable) description += diffExternal(id); // Re-use an existing view if possible to support // the common usage pattern of continuously changing and diffing a file - const QString tag = VcsBaseEditor::editorTag(DiffOutput, source, QStringList(), changeNr); + const QString tag = VcsBaseEditor::editorTag(DiffOutput, source.toString(), QStringList(), changeNr); if (IEditor *editor = VcsBaseEditor::locateEditorByTag(tag)) { editor->document()->setContents(description.toUtf8()); EditorManager::activateEditor(editor); } else { const QString title = QString::fromLatin1("cc describe %1").arg(id); - IEditor *newEditor = showOutputInEditor(title, description, diffEditorParameters.id, source, codec); + IEditor *newEditor = showOutputInEditor(title, description, diffEditorParameters.id, source.toString(), codec); VcsBaseEditor::tagEditor(newEditor, tag); } } @@ -2028,17 +2028,17 @@ bool ClearCasePluginPrivate::vcsMove(const QString &workingDir, const QString &f /// /// Check if the directory is managed under ClearCase control. /// -bool ClearCasePluginPrivate::managesDirectory(const QString &directory, QString *topLevel /* = 0 */) const +bool ClearCasePluginPrivate::managesDirectory(const FilePath &directory, FilePath *topLevel /* = 0 */) const { #ifdef WITH_TESTS // If running with tests and fake ClearTool is enabled, then pretend we manage every directory - QString topLevelFound = m_fakeClearTool ? directory : findTopLevel(directory); + QString topLevelFound = m_fakeClearTool ? directory.toString() : findTopLevel(directory.toString()); #else - QString topLevelFound = findTopLevel(directory); + QString topLevelFound = findTopLevel(directory.toString()); #endif if (topLevel) - *topLevel = topLevelFound; + *topLevel = FilePath::fromString(topLevelFound); return !topLevelFound.isEmpty(); } @@ -2147,9 +2147,9 @@ bool ClearCasePluginPrivate::ccCheckUcm(const QString &viewname, const QString & return catcsData.indexOf(QRegularExpression("(^|\\n)ucm\\n")) != -1; } -bool ClearCasePluginPrivate::managesFile(const QString &workingDirectory, const QString &fileName) const +bool ClearCasePluginPrivate::managesFile(const FilePath &workingDirectory, const QString &fileName) const { - QString absFile = QFileInfo(QDir(workingDirectory), fileName).absoluteFilePath(); + QString absFile = QFileInfo(QDir(workingDirectory.toString()), fileName).absoluteFilePath(); const FileStatus::Status status = getFileStatus(absFile); return status != FileStatus::NotManaged && status != FileStatus::Derived; } @@ -2403,9 +2403,9 @@ Utils::Id ClearCasePluginPrivate::id() const return Constants::VCS_ID_CLEARCASE; } -bool ClearCasePluginPrivate::isVcsFileOrDirectory(const Utils::FilePath &fileName) const +bool ClearCasePluginPrivate::isVcsFileOrDirectory(const FilePath &filePath) const { - Q_UNUSED(fileName) + Q_UNUSED(filePath) return false; // ClearCase has no files/directories littering the sources } @@ -2440,13 +2440,13 @@ bool ClearCasePluginPrivate::supportsOperation(Operation operation) const return rc; } -Core::IVersionControl::OpenSupportMode ClearCasePluginPrivate::openSupportMode(const QString &fileName) const +Core::IVersionControl::OpenSupportMode ClearCasePluginPrivate::openSupportMode(const FilePath &filePath) const { if (isDynamic()) { // NB! Has to use managesFile() and not vcsStatus() since the index can only be guaranteed // to be up to date if the file has been explicitly opened, which is not the case when // doing a search and replace as a part of a refactoring. - if (managesFile(QFileInfo(fileName).absolutePath(), fileName)) { + if (managesFile(FilePath::fromString(filePath.toFileInfo().absolutePath()), filePath.toString())) { // Checkout is the only option for managed files in dynamic views return IVersionControl::OpenMandatory; } else { @@ -2459,9 +2459,9 @@ Core::IVersionControl::OpenSupportMode ClearCasePluginPrivate::openSupportMode(c } } -bool ClearCasePluginPrivate::vcsOpen(const QString &fileName) +bool ClearCasePluginPrivate::vcsOpen(const FilePath &filePath) { - const QFileInfo fi(fileName); + const QFileInfo fi = filePath.toFileInfo(); return vcsOpen(fi.absolutePath(), fi.fileName()); } @@ -2473,28 +2473,28 @@ Core::IVersionControl::SettingsFlags ClearCasePluginPrivate::settingsFlags() con return rc; } -bool ClearCasePluginPrivate::vcsAdd(const QString &fileName) +bool ClearCasePluginPrivate::vcsAdd(const FilePath &filePath) { - const QFileInfo fi(fileName); + const QFileInfo fi = filePath.toFileInfo(); return vcsAdd(fi.absolutePath(), fi.fileName()); } -bool ClearCasePluginPrivate::vcsDelete(const QString &fileName) +bool ClearCasePluginPrivate::vcsDelete(const FilePath &filePath) { - const QFileInfo fi(fileName); + const QFileInfo fi = filePath.toFileInfo(); return vcsDelete(fi.absolutePath(), fi.fileName()); } -bool ClearCasePluginPrivate::vcsMove(const QString &from, const QString &to) +bool ClearCasePluginPrivate::vcsMove(const FilePath &from, const FilePath &to) { - const QFileInfo ifrom(from); - const QFileInfo ito(to); - return vcsMove(ifrom.absolutePath(), ifrom.fileName(), ito.fileName()); + const QFileInfo ifrom = from.toFileInfo(); + const QFileInfo ito = from.toFileInfo(); + return vcsMove(ifrom.absolutePath(), from.fileName(), to.fileName()); } -void ClearCasePluginPrivate::vcsAnnotate(const QString &file, int line) +void ClearCasePluginPrivate::vcsAnnotate(const FilePath &filePath, int line) { - const QFileInfo fi(file); + const QFileInfo fi = filePath.toFileInfo(); vcsAnnotateHelper(fi.absolutePath(), fi.fileName(), QString(), line); } @@ -2510,12 +2510,12 @@ QString ClearCasePluginPrivate::vcsMakeWritableText() const return tr("&Hijack"); } -QString ClearCasePluginPrivate::vcsTopic(const QString &directory) +QString ClearCasePluginPrivate::vcsTopic(const FilePath &directory) { - return ccGetView(directory).name; + return ccGetView(directory.toString()).name; } -bool ClearCasePluginPrivate::vcsCreateRepository(const QString &) +bool ClearCasePluginPrivate::vcsCreateRepository(const FilePath &) { return false; } diff --git a/src/plugins/coreplugin/dialogs/addtovcsdialog.cpp b/src/plugins/coreplugin/dialogs/addtovcsdialog.cpp index 56ab0a2455d..0cf77fe0ca1 100644 --- a/src/plugins/coreplugin/dialogs/addtovcsdialog.cpp +++ b/src/plugins/coreplugin/dialogs/addtovcsdialog.cpp @@ -33,7 +33,7 @@ namespace Core { namespace Internal { AddToVcsDialog::AddToVcsDialog(QWidget *parent, const QString &title, - const QStringList &files, const QString &vcsDisplayName) : + const Utils::FilePaths &files, const QString &vcsDisplayName) : QDialog(parent), ui(new Ui::AddToVcsDialog) { @@ -45,8 +45,8 @@ AddToVcsDialog::AddToVcsDialog(QWidget *parent, const QString &title, ui->addFilesLabel->setText(addTo); setWindowTitle(title); - foreach (const QString &file, files) { - QListWidgetItem *item = new QListWidgetItem(QDir::toNativeSeparators(file)); + for (const Utils::FilePath &file : files) { + QListWidgetItem *item = new QListWidgetItem(file.toUserOutput()); ui->filesListWidget->addItem(item); } } diff --git a/src/plugins/coreplugin/dialogs/addtovcsdialog.h b/src/plugins/coreplugin/dialogs/addtovcsdialog.h index c9c03ef6f98..6aaff3b3f45 100644 --- a/src/plugins/coreplugin/dialogs/addtovcsdialog.h +++ b/src/plugins/coreplugin/dialogs/addtovcsdialog.h @@ -25,6 +25,8 @@ #pragma once +#include + #include namespace Core { @@ -38,7 +40,7 @@ class AddToVcsDialog : public QDialog public: explicit AddToVcsDialog(QWidget *parent, const QString &title, - const QStringList &files, const QString &vcsDisplayName); + const Utils::FilePaths &files, const QString &vcsDisplayName); ~AddToVcsDialog() override; private: diff --git a/src/plugins/coreplugin/dialogs/readonlyfilesdialog.cpp b/src/plugins/coreplugin/dialogs/readonlyfilesdialog.cpp index 262e14f477c..ccb55260fa5 100644 --- a/src/plugins/coreplugin/dialogs/readonlyfilesdialog.cpp +++ b/src/plugins/coreplugin/dialogs/readonlyfilesdialog.cpp @@ -308,7 +308,7 @@ int ReadOnlyFilesDialog::exec() } break; case RO_OpenVCS: - if (!d->versionControls[buttongroup.filePath]->vcsOpen(buttongroup.filePath.toString())) { + if (!d->versionControls[buttongroup.filePath]->vcsOpen(buttongroup.filePath)) { failedToMakeWritable << buttongroup.filePath; continue; } @@ -429,7 +429,7 @@ void ReadOnlyFilesDialogPrivate::initDialog(const FilePaths &filePaths) IVersionControl *versionControlForFile = VcsManager::findVersionControlForDirectory(directory.toString()); const bool fileManagedByVCS = versionControlForFile - && versionControlForFile->openSupportMode(filePath.toString()) != IVersionControl::NoOpen; + && versionControlForFile->openSupportMode(filePath) != IVersionControl::NoOpen; if (fileManagedByVCS) { const QString vcsOpenTextForFile = Utils::stripAccelerator(versionControlForFile->vcsOpenText()); @@ -447,7 +447,7 @@ void ReadOnlyFilesDialogPrivate::initDialog(const FilePaths &filePaths) vcsMakeWritableTextForAll.clear(); } // Add make writable if it is supported by the reposetory. - if (versionControlForFile->openSupportMode(filePath.toString()) == IVersionControl::OpenOptional) { + if (versionControlForFile->openSupportMode(filePath) == IVersionControl::OpenOptional) { useMakeWritable = true; createRadioButtonForItem(item, radioButtonGroup, MakeWritable); } diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index 444504999e6..e7a24e1560e 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -2006,7 +2006,7 @@ void EditorManagerPrivate::updateMakeWritableWarning() bool promptVCS = false; const QString directory = document->filePath().toFileInfo().absolutePath(); IVersionControl *versionControl = VcsManager::findVersionControlForDirectory(directory); - if (versionControl && versionControl->openSupportMode(document->filePath().toString()) != IVersionControl::NoOpen) { + if (versionControl && versionControl->openSupportMode(document->filePath()) != IVersionControl::NoOpen) { if (versionControl->settingsFlags() & IVersionControl::AutoOpen) { vcsOpenCurrentEditor(); ww = false; @@ -2258,10 +2258,10 @@ void EditorManagerPrivate::vcsOpenCurrentEditor() const QString directory = document->filePath().toFileInfo().absolutePath(); IVersionControl *versionControl = VcsManager::findVersionControlForDirectory(directory); - if (!versionControl || versionControl->openSupportMode(document->filePath().toString()) == IVersionControl::NoOpen) + if (!versionControl || versionControl->openSupportMode(document->filePath()) == IVersionControl::NoOpen) return; - if (!versionControl->vcsOpen(document->filePath().toString())) { + if (!versionControl->vcsOpen(document->filePath())) { // TODO: wrong dialog parent QMessageBox::warning(ICore::dialogParent(), tr("Cannot Open File"), tr("Cannot open the file for editing with VCS.")); diff --git a/src/plugins/coreplugin/fileutils.cpp b/src/plugins/coreplugin/fileutils.cpp index 4f81b9f5df4..5f632a5fec3 100644 --- a/src/plugins/coreplugin/fileutils.cpp +++ b/src/plugins/coreplugin/fileutils.cpp @@ -205,7 +205,7 @@ bool FileUtils::renameFile(const FilePath &orgFilePath, const FilePath &newFileP bool result = false; if (vc && vc->supportsOperation(IVersionControl::MoveOperation)) - result = vc->vcsMove(orgFilePath.toString(), newFilePath.toString()); + result = vc->vcsMove(orgFilePath, newFilePath); if (!result) // The moving via vcs failed or the vcs does not support moving, fall back result = Utils::FileUtils::renameFile(orgFilePath, newFilePath); if (result) { diff --git a/src/plugins/coreplugin/iversioncontrol.cpp b/src/plugins/coreplugin/iversioncontrol.cpp index 692ee550603..b7d7e63405f 100644 --- a/src/plugins/coreplugin/iversioncontrol.cpp +++ b/src/plugins/coreplugin/iversioncontrol.cpp @@ -68,6 +68,9 @@ \fn Core::IVersionControl::TopicCache::refreshTopic(const QString &repository) Returns the current topic for \a repository. */ + +using namespace Utils; + namespace Core { QString IVersionControl::vcsOpenText() const @@ -146,7 +149,7 @@ void IVersionControl::setTopicCache(TopicCache *topicCache) m_topicCache = topicCache; } -QString IVersionControl::vcsTopic(const QString &topLevel) +QString IVersionControl::vcsTopic(const FilePath &topLevel) { return m_topicCache ? m_topicCache->topic(topLevel) : QString(); } @@ -161,17 +164,16 @@ IVersionControl::~IVersionControl() delete m_topicCache; } -QStringList IVersionControl::unmanagedFiles(const QStringList &filePaths) const +FilePaths IVersionControl::unmanagedFiles(const FilePaths &filePaths) const { - return Utils::filtered(filePaths, [this](const QString &f) { - const Utils::FilePath fp = Utils::FilePath::fromString(f); - return !managesFile(fp.parentDir().toString(), fp.fileName()); + return Utils::filtered(filePaths, [this](const FilePath &fp) { + return !managesFile(fp.parentDir(), fp.fileName()); }); } -IVersionControl::OpenSupportMode IVersionControl::openSupportMode(const QString &fileName) const +IVersionControl::OpenSupportMode IVersionControl::openSupportMode(const FilePath &filePath) const { - Q_UNUSED(fileName) + Q_UNUSED(filePath) return NoOpen; } @@ -182,26 +184,26 @@ IVersionControl::TopicCache::~TopicCache() = default; If the cache for \a topLevel is valid, it will be used. Otherwise it will be refreshed. */ -QString IVersionControl::TopicCache::topic(const QString &topLevel) +QString IVersionControl::TopicCache::topic(const FilePath &topLevel) { QTC_ASSERT(!topLevel.isEmpty(), return QString()); TopicData &data = m_cache[topLevel]; - QString file = trackFile(topLevel); + const FilePath file = trackFile(topLevel); if (file.isEmpty()) return QString(); - const QDateTime lastModified = QFileInfo(file).lastModified(); + const QDateTime lastModified = file.lastModified(); if (lastModified == data.timeStamp) return data.topic; data.timeStamp = lastModified; return data.topic = refreshTopic(topLevel); } -void IVersionControl::fillLinkContextMenu(QMenu *, const QString &, const QString &) +void IVersionControl::fillLinkContextMenu(QMenu *, const FilePath &, const QString &) { } -bool IVersionControl::handleLink(const QString &workingDirectory, const QString &reference) +bool IVersionControl::handleLink(const FilePath &workingDirectory, const QString &reference) { QTC_ASSERT(!reference.isEmpty(), return false); vcsDescribe(workingDirectory, reference); @@ -221,42 +223,40 @@ TestVersionControl::~TestVersionControl() VcsManager::clearVersionControlCache(); } -void TestVersionControl::setManagedDirectories(const QHash &dirs) +void TestVersionControl::setManagedDirectories(const QHash &dirs) { m_managedDirs = dirs; m_dirCount = 0; VcsManager::clearVersionControlCache(); } -void TestVersionControl::setManagedFiles(const QSet &files) +void TestVersionControl::setManagedFiles(const QSet &files) { m_managedFiles = files; m_fileCount = 0; VcsManager::clearVersionControlCache(); } -bool TestVersionControl::managesDirectory(const QString &filename, QString *topLevel) const +bool TestVersionControl::managesDirectory(const FilePath &filePath, FilePath *topLevel) const { ++m_dirCount; - if (m_managedDirs.contains(filename)) { + if (m_managedDirs.contains(filePath)) { if (topLevel) - *topLevel = m_managedDirs.value(filename); + *topLevel = m_managedDirs.value(filePath); return true; } return false; } -bool TestVersionControl::managesFile(const QString &workingDirectory, const QString &fileName) const +bool TestVersionControl::managesFile(const FilePath &workingDirectory, const QString &fileName) const { ++m_fileCount; - QFileInfo fi(workingDirectory + QLatin1Char('/') + fileName); - QString dir = fi.absolutePath(); - if (!managesDirectory(dir, nullptr)) + FilePath full = workingDirectory.pathAppended(fileName); + if (!managesDirectory(full.parentDir(), nullptr)) return false; - QString file = fi.absoluteFilePath(); - return m_managedFiles.contains(file); + return m_managedFiles.contains(full.absoluteFilePath()); } } // namespace Core diff --git a/src/plugins/coreplugin/iversioncontrol.h b/src/plugins/coreplugin/iversioncontrol.h index b120d8b493b..84484975801 100644 --- a/src/plugins/coreplugin/iversioncontrol.h +++ b/src/plugins/coreplugin/iversioncontrol.h @@ -28,7 +28,7 @@ #include "core_global.h" #include -#include +#include #include #include @@ -71,11 +71,11 @@ public: { public: virtual ~TopicCache(); - QString topic(const QString &topLevel); + QString topic(const Utils::FilePath &topLevel); protected: - virtual QString trackFile(const QString &repository) = 0; - virtual QString refreshTopic(const QString &repository) = 0; + virtual Utils::FilePath trackFile(const Utils::FilePath &repository) = 0; + virtual QString refreshTopic(const Utils::FilePath &repository) = 0; private: class TopicData @@ -85,7 +85,7 @@ public: QString topic; }; - QHash m_cache; + QHash m_cache; }; @@ -97,8 +97,8 @@ public: /*! * \brief isVcsFileOrDirectory - * \param fileName - * \return True if filename is a file or directory that is maintained by the + * \param filePath + * \return True if filePath is a file or directory that is maintained by the * version control system. * * It will return true only for exact matches of the name, not for e.g. files in a @@ -106,7 +106,7 @@ public: * * This method needs to be thread safe! */ - virtual bool isVcsFileOrDirectory(const Utils::FilePath &fileName) const = 0; + virtual bool isVcsFileOrDirectory(const Utils::FilePath &filePath) const = 0; /*! * Returns whether files in this directory should be managed with this @@ -116,22 +116,24 @@ public: * that all files in the returned directory are managed by the same IVersionControl. */ - virtual bool managesDirectory(const QString &filename, QString *topLevel = nullptr) const = 0; + virtual bool managesDirectory(const Utils::FilePath &filePath, + Utils::FilePath *topLevel = nullptr) const = 0; /*! - * Returns whether \a fileName is managed by this version control. + * Returns whether \a relativeFilePath is managed by this version control. * * \a workingDirectory is assumed to be part of a valid repository (not necessarily its * top level). \a fileName is expected to be relative to workingDirectory. */ - virtual bool managesFile(const QString &workingDirectory, const QString &fileName) const = 0; + virtual bool managesFile(const Utils::FilePath &workingDirectory, + const QString &fileName) const = 0; /*! * Returns the subset of \a filePaths that is not managed by this version control. * * The \a filePaths are expected to be absolute paths. */ - virtual QStringList unmanagedFiles(const QStringList &filePaths) const; + virtual Utils::FilePaths unmanagedFiles(const Utils::FilePaths &filePaths) const; /*! * Returns true is the VCS is configured to run. @@ -145,9 +147,9 @@ public: virtual bool supportsOperation(Operation operation) const = 0; /*! - * Returns the open support mode for \a fileName. + * Returns the open support mode for \a filePath. */ - virtual OpenSupportMode openSupportMode(const QString &fileName) const; + virtual OpenSupportMode openSupportMode(const Utils::FilePath &filepath) const; /*! * Called prior to save, if the file is read only. Should be implemented if @@ -155,7 +157,7 @@ public: * * \note The EditorManager calls this for the editors. */ - virtual bool vcsOpen(const QString &fileName) = 0; + virtual bool vcsOpen(const Utils::FilePath &filePath) = 0; /*! * Returns settings. @@ -171,34 +173,34 @@ public: * \note This function should be called from IProject subclasses after * files are added to the project. */ - virtual bool vcsAdd(const QString &filename) = 0; + virtual bool vcsAdd(const Utils::FilePath &filePath) = 0; /*! * Called after a file has been removed from the project (if the user * wants), e.g. 'p4 delete', 'svn delete'. */ - virtual bool vcsDelete(const QString &filename) = 0; + virtual bool vcsDelete(const Utils::FilePath &filePath) = 0; /*! * Called to rename a file, should do the actual on disk renaming * (e.g. git mv, svn move, p4 move) */ - virtual bool vcsMove(const QString &from, const QString &to) = 0; + virtual bool vcsMove(const Utils::FilePath &from, const Utils::FilePath &to) = 0; /*! * Called to initialize the version control system in a directory. */ - virtual bool vcsCreateRepository(const QString &directory) = 0; + virtual bool vcsCreateRepository(const Utils::FilePath &directory) = 0; /*! * Topic (e.g. name of the current branch) */ - virtual QString vcsTopic(const QString &topLevel); + virtual QString vcsTopic(const Utils::FilePath &topLevel); /*! * Display annotation for a file and scroll to line */ - virtual void vcsAnnotate(const QString &file, int line) = 0; + virtual void vcsAnnotate(const Utils::FilePath &file, int line) = 0; /*! * Display text for Open operation @@ -213,7 +215,7 @@ public: /*! * Display details of reference */ - virtual void vcsDescribe(const QString &workingDirectory, const QString &reference) = 0; + virtual void vcsDescribe(const Utils::FilePath &workingDirectory, const QString &reference) = 0; /*! * Return a list of paths where tools that came with the VCS may be installed. @@ -233,10 +235,10 @@ public: const QStringList &extraArgs); virtual void fillLinkContextMenu(QMenu *menu, - const QString &workingDirectory, + const Utils::FilePath &workingDirectory, const QString &reference); - virtual bool handleLink(const QString &workingDirectory, const QString &reference); + virtual bool handleLink(const Utils::FilePath &workingDirectory, const QString &reference); class CORE_EXPORT RepoUrl { public: @@ -281,11 +283,11 @@ public: { } ~TestVersionControl() override; - bool isVcsFileOrDirectory(const Utils::FilePath &fileName) const final - { Q_UNUSED(fileName) return false; } + bool isVcsFileOrDirectory(const Utils::FilePath &filePath) const final + { Q_UNUSED(filePath) return false; } - void setManagedDirectories(const QHash &dirs); - void setManagedFiles(const QSet &files); + void setManagedDirectories(const QHash &dirs); + void setManagedFiles(const QSet &files); int dirCount() const { return m_dirCount; } int fileCount() const { return m_fileCount; } @@ -293,23 +295,23 @@ public: // IVersionControl interface QString displayName() const override { return m_displayName; } Utils::Id id() const override { return m_id; } - bool managesDirectory(const QString &filename, QString *topLevel) const override; - bool managesFile(const QString &workingDirectory, const QString &fileName) const override; + bool managesDirectory(const Utils::FilePath &filePath, Utils::FilePath *topLevel) const override; + bool managesFile(const Utils::FilePath &workingDirectory, const QString &fileName) const override; bool isConfigured() const override { return true; } bool supportsOperation(Operation) const override { return false; } - bool vcsOpen(const QString &) override { return false; } - bool vcsAdd(const QString &) override { return false; } - bool vcsDelete(const QString &) override { return false; } - bool vcsMove(const QString &, const QString &) override { return false; } - bool vcsCreateRepository(const QString &) override { return false; } - void vcsAnnotate(const QString &, int) override {} - void vcsDescribe(const QString &, const QString &) override {} + bool vcsOpen(const Utils::FilePath &) override { return false; } + bool vcsAdd(const Utils::FilePath &) override { return false; } + bool vcsDelete(const Utils::FilePath &) override { return false; } + bool vcsMove(const Utils::FilePath &, const Utils::FilePath &) override { return false; } + bool vcsCreateRepository(const Utils::FilePath &) override { return false; } + void vcsAnnotate(const Utils::FilePath &, int) override {} + void vcsDescribe(const Utils::FilePath &, const QString &) override {} private: Utils::Id m_id; QString m_displayName; - QHash m_managedDirs; - QSet m_managedFiles; + QHash m_managedDirs; + QSet m_managedFiles; mutable int m_dirCount = 0; mutable int m_fileCount = 0; }; diff --git a/src/plugins/coreplugin/vcsmanager.cpp b/src/plugins/coreplugin/vcsmanager.cpp index f0ce71d45d1..e134d1c681e 100644 --- a/src/plugins/coreplugin/vcsmanager.cpp +++ b/src/plugins/coreplugin/vcsmanager.cpp @@ -241,9 +241,9 @@ IVersionControl* VcsManager::findVersionControlForDirectory(const QString &input StringVersionControlPairs allThatCanManage; foreach (IVersionControl * versionControl, versionControls()) { - QString topLevel; - if (versionControl->managesDirectory(directory, &topLevel)) - allThatCanManage.push_back(StringVersionControlPair(topLevel, versionControl)); + FilePath topLevel; + if (versionControl->managesDirectory(FilePath::fromString(directory), &topLevel)) + allThatCanManage.push_back(StringVersionControlPair(topLevel.toString(), versionControl)); } // To properly find a nested repository (say, git checkout inside SVN), @@ -386,7 +386,7 @@ FilePaths VcsManager::promptToDelete(IVersionControl *vc, const FilePaths &fileP FilePaths failedFiles; for (const FilePath &fp : filePaths) { - if (!vc->vcsDelete(fp.toString())) + if (!vc->vcsDelete(fp)) failedFiles << fp; } return failedFiles; @@ -437,7 +437,7 @@ void VcsManager::promptToAdd(const QString &directory, const QStringList &fileNa if (!vc || !vc->supportsOperation(IVersionControl::AddOperation)) return; - const QStringList unmanagedFiles = vc->unmanagedFiles(fileNames); + const FilePaths unmanagedFiles = vc->unmanagedFiles(Utils::transform(fileNames, &FilePath::fromString)); if (unmanagedFiles.isEmpty()) return; @@ -445,9 +445,9 @@ void VcsManager::promptToAdd(const QString &directory, const QStringList &fileNa unmanagedFiles, vc->displayName()); if (dlg.exec() == QDialog::Accepted) { QStringList notAddedToVc; - foreach (const QString &file, unmanagedFiles) { - if (!vc->vcsAdd(QDir(directory).filePath(file))) - notAddedToVc << file; + for (const FilePath &file : unmanagedFiles) { + if (!vc->vcsAdd(FilePath::fromString(QDir(directory).filePath(file.path())))) + notAddedToVc << file.toUserOutput(); } if (!notAddedToVc.isEmpty()) { @@ -495,16 +495,16 @@ namespace Internal { const char ID_VCS_A[] = "A"; const char ID_VCS_B[] = "B"; -using FileHash = QHash; +using FileHash = QHash; static FileHash makeHash(const QStringList &list) { FileHash result; - foreach (const QString &i, list) { + for (const QString &i : list) { QStringList parts = i.split(QLatin1Char(':')); QTC_ASSERT(parts.count() == 2, continue); - result.insert(QString::fromLatin1(TEST_PREFIX) + parts.at(0), - QString::fromLatin1(TEST_PREFIX) + parts.at(1)); + result.insert(FilePath::fromString(QString::fromLatin1(TEST_PREFIX) + parts.at(0)), + FilePath::fromString(QString::fromLatin1(TEST_PREFIX) + parts.at(1))); } return result; } diff --git a/src/plugins/cvs/cvsplugin.cpp b/src/plugins/cvs/cvsplugin.cpp index a012887b130..f816bc06fa2 100644 --- a/src/plugins/cvs/cvsplugin.cpp +++ b/src/plugins/cvs/cvsplugin.cpp @@ -236,18 +236,18 @@ public: bool isVcsFileOrDirectory(const Utils::FilePath &fileName) const final; - bool managesDirectory(const QString &directory, QString *topLevel) const final; - bool managesFile(const QString &workingDirectory, const QString &fileName) const final; + bool managesDirectory(const Utils::FilePath &directory, Utils::FilePath *topLevel) const final; + bool managesFile(const Utils::FilePath &workingDirectory, const QString &fileName) const final; bool isConfigured() const final; bool supportsOperation(Operation operation) const final; - OpenSupportMode openSupportMode(const QString &fileName) const final; - bool vcsOpen(const QString &fileName) final; - bool vcsAdd(const QString &fileName) final; - bool vcsDelete(const QString &filename) final; - bool vcsMove(const QString &, const QString &) final { return false; } - bool vcsCreateRepository(const QString &directory) final; - void vcsAnnotate(const QString &file, int line) final; + OpenSupportMode openSupportMode(const Utils::FilePath &filePath) const final; + bool vcsOpen(const Utils::FilePath &filePath) final; + bool vcsAdd(const Utils::FilePath &filePath) final; + bool vcsDelete(const Utils::FilePath &filePath) final; + bool vcsMove(const Utils::FilePath &, const Utils::FilePath &) final { return false; } + bool vcsCreateRepository(const Utils::FilePath &directory) final; + void vcsAnnotate(const Utils::FilePath &filePath, int line) final; QString vcsOpenText() const final; @@ -268,7 +268,7 @@ public: void vcsAnnotate(const QString &workingDirectory, const QString &file, const QString &revision, int lineNumber); - void vcsDescribe(const QString &source, const QString &changeNr) final; + void vcsDescribe(const Utils::FilePath &source, const QString &changeNr) final; protected: void updateActions(ActionState) final; @@ -436,38 +436,38 @@ bool CvsPluginPrivate::supportsOperation(Operation operation) const return rc; } -Core::IVersionControl::OpenSupportMode CvsPluginPrivate::openSupportMode(const QString &fileName) const +Core::IVersionControl::OpenSupportMode CvsPluginPrivate::openSupportMode(const FilePath &filePath) const { - Q_UNUSED(fileName) + Q_UNUSED(filePath) return OpenOptional; } -bool CvsPluginPrivate::vcsOpen(const QString &fileName) +bool CvsPluginPrivate::vcsOpen(const FilePath &filePath) { - const QFileInfo fi(fileName); + const QFileInfo fi = filePath.toFileInfo(); return edit(fi.absolutePath(), QStringList(fi.fileName())); } -bool CvsPluginPrivate::vcsAdd(const QString &fileName) +bool CvsPluginPrivate::vcsAdd(const FilePath &filePath) { - const QFileInfo fi(fileName); + const QFileInfo fi = filePath.toFileInfo(); return vcsAdd(fi.absolutePath(), fi.fileName()); } -bool CvsPluginPrivate::vcsDelete(const QString &fileName) +bool CvsPluginPrivate::vcsDelete(const FilePath &filePath) { - const QFileInfo fi(fileName); + const QFileInfo fi = filePath.toFileInfo(); return vcsDelete(fi.absolutePath(), fi.fileName()); } -bool CvsPluginPrivate::vcsCreateRepository(const QString &) +bool CvsPluginPrivate::vcsCreateRepository(const FilePath &) { return false; } -void CvsPluginPrivate::vcsAnnotate(const QString &file, int line) +void CvsPluginPrivate::vcsAnnotate(const FilePath &filePath, int line) { - const QFileInfo fi(file); + const QFileInfo fi = filePath.toFileInfo(); vcsAnnotate(fi.absolutePath(), fi.fileName(), QString(), line); } @@ -740,10 +740,10 @@ CvsPluginPrivate::CvsPluginPrivate() connect(&m_settings, &AspectContainer::applied, this, &IVersionControl::configurationChanged); } -void CvsPluginPrivate::vcsDescribe(const QString &source, const QString &changeNr) +void CvsPluginPrivate::vcsDescribe(const FilePath &source, const QString &changeNr) { QString errorMessage; - if (!describe(source, changeNr, &errorMessage)) + if (!describe(source.toString(), changeNr, &errorMessage)) VcsOutputWindow::appendError(errorMessage); }; @@ -1284,15 +1284,14 @@ void CvsPluginPrivate::updateRepository() bool CvsPluginPrivate::describe(const QString &file, const QString &changeNr, QString *errorMessage) { - - QString toplevel; - const bool manages = managesDirectory(QFileInfo(file).absolutePath(), &toplevel); + FilePath toplevel; + const bool manages = managesDirectory(FilePath::fromString(QFileInfo(file).absolutePath()), &toplevel); if (!manages || toplevel.isEmpty()) { *errorMessage = tr("Cannot find repository for \"%1\".") .arg(QDir::toNativeSeparators(file)); return false; } - return describe(toplevel, QDir(toplevel).relativeFilePath(file), changeNr, errorMessage); + return describe(toplevel.toString(), QDir(toplevel.toString()).relativeFilePath(file), changeNr, errorMessage); } bool CvsPluginPrivate::describe(const QString &toplevel, const QString &file, const @@ -1518,12 +1517,12 @@ bool CvsPluginPrivate::vcsDelete(const QString &workingDir, const QString &rawFi /* CVS has a "CVS" directory in each directory it manages. The top level * is the first directory under the directory that does not have it. */ -bool CvsPluginPrivate::managesDirectory(const QString &directory, QString *topLevel /* = 0 */) const +bool CvsPluginPrivate::managesDirectory(const FilePath &directory, FilePath *topLevel /* = 0 */) const { if (topLevel) topLevel->clear(); bool manages = false; - const QDir dir(directory); + const QDir dir(directory.toString()); do { if (!dir.exists() || !checkCVSDirectory(dir)) break; @@ -1538,7 +1537,7 @@ bool CvsPluginPrivate::managesDirectory(const QString &directory, QString *topLe !parentDir.isRoot() && parentDir.cdUp(); lastDirectory = parentDir) { if (!checkCVSDirectory(parentDir)) { - *topLevel = lastDirectory.absolutePath(); + *topLevel = FilePath::fromString(lastDirectory.absolutePath()); break; } } @@ -1547,12 +1546,12 @@ bool CvsPluginPrivate::managesDirectory(const QString &directory, QString *topLe return manages; } -bool CvsPluginPrivate::managesFile(const QString &workingDirectory, const QString &fileName) const +bool CvsPluginPrivate::managesFile(const FilePath &workingDirectory, const QString &fileName) const { QStringList args; args << QLatin1String("status") << fileName; const CvsResponse response = - runCvs(workingDirectory, args, m_settings.timeout.value(), VcsCommand::SshPasswordPrompt); + runCvs(workingDirectory.toString(), args, m_settings.timeout.value(), VcsCommand::SshPasswordPrompt); if (response.result != CvsResponse::Ok) return false; return !response.stdOut.contains(QLatin1String("Status: Unknown")); diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index c1bbeec724c..f110dc198b1 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -844,14 +844,13 @@ bool GitClient::managesFile(const QString &workingDirectory, const QString &file return proc.result() == QtcProcess::FinishedWithSuccess; } -QStringList GitClient::unmanagedFiles(const QStringList &filePaths) const +FilePaths GitClient::unmanagedFiles(const FilePaths &filePaths) const { QMap filesForDir; - for (const QString &filePath : filePaths) { - const FilePath fp = FilePath::fromString(filePath); + for (const FilePath &fp : filePaths) { filesForDir[fp.parentDir().toString()] << fp.fileName(); } - QStringList res; + FilePaths res; for (auto it = filesForDir.begin(), end = filesForDir.end(); it != end; ++it) { QStringList args({"ls-files", "-z"}); const QDir wd(it.key()); @@ -863,9 +862,10 @@ QStringList GitClient::unmanagedFiles(const QStringList &filePaths) const const QStringList managedFilePaths = transform(proc.stdOut().split('\0', Qt::SkipEmptyParts), [&wd](const QString &fp) { return wd.absoluteFilePath(fp); }); - res += filtered(it.value(), [&managedFilePaths, &wd](const QString &fp) { + const QStringList filtered = Utils::filtered(it.value(), [&managedFilePaths, &wd](const QString &fp) { return !managedFilePaths.contains(wd.absoluteFilePath(fp)); }); + res += transform(filtered, &FilePath::fromString); } return res; } diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h index a8056fd6ead..a39b15554e7 100644 --- a/src/plugins/git/gitclient.h +++ b/src/plugins/git/gitclient.h @@ -153,7 +153,7 @@ public: QString findRepositoryForDirectory(const QString &directory) const; QString findGitDirForRepository(const QString &repositoryDir) const; bool managesFile(const QString &workingDirectory, const QString &fileName) const; - QStringList unmanagedFiles(const QStringList &filePaths) const; + Utils::FilePaths unmanagedFiles(const Utils::FilePaths &filePaths) const; void diffFile(const QString &workingDirectory, const QString &fileName) const; void diffFiles(const QString &workingDirectory, diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp index ec1ca5e6dde..ba30d52192b 100644 --- a/src/plugins/git/gitplugin.cpp +++ b/src/plugins/git/gitplugin.cpp @@ -59,6 +59,8 @@ #include #include + +#include #include #include #include @@ -112,15 +114,15 @@ public: { } protected: - QString trackFile(const QString &repository) override + FilePath trackFile(const FilePath &repository) override { - const QString gitDir = m_client->findGitDirForRepository(repository); - return gitDir.isEmpty() ? QString() : (gitDir + "/HEAD"); + const QString gitDir = m_client->findGitDirForRepository(repository.toString()); + return gitDir.isEmpty() ? FilePath() : FilePath::fromString(gitDir + "/HEAD"); } - QString refreshTopic(const QString &repository) override + QString refreshTopic(const FilePath &repository) override { - return m_client->synchronousTopic(repository); + return m_client->synchronousTopic(repository.toString()); } private: @@ -234,23 +236,23 @@ public: QString displayName() const final; Utils::Id id() const final; - bool isVcsFileOrDirectory(const Utils::FilePath &fileName) const final; + bool isVcsFileOrDirectory(const FilePath &filePath) const final; - bool managesDirectory(const QString &directory, QString *topLevel) const final; - bool managesFile(const QString &workingDirectory, const QString &fileName) const final; - QStringList unmanagedFiles(const QStringList &filePaths) const final; + bool managesDirectory(const FilePath &directory, FilePath *topLevel) const final; + bool managesFile(const FilePath &workingDirectory, const QString &fileName) const final; + FilePaths unmanagedFiles(const FilePaths &filePaths) const final; bool isConfigured() const final; bool supportsOperation(Operation operation) const final; - bool vcsOpen(const QString &fileName) final; - bool vcsAdd(const QString &fileName) final; - bool vcsDelete(const QString &filename) final; - bool vcsMove(const QString &from, const QString &to) final; - bool vcsCreateRepository(const QString &directory) final; + bool vcsOpen(const FilePath &fileName) final; + bool vcsAdd(const FilePath &fileName) final; + bool vcsDelete(const FilePath &filename) final; + bool vcsMove(const FilePath &from, const FilePath &to) final; + bool vcsCreateRepository(const FilePath &directory) final; - void vcsAnnotate(const QString &file, int line) final; - void vcsDescribe(const QString &source, const QString &id) final { m_gitClient.show(source, id); }; - QString vcsTopic(const QString &directory) final; + void vcsAnnotate(const FilePath &file, int line) final; + void vcsDescribe(const FilePath &source, const QString &id) final { m_gitClient.show(source.toString(), id); }; + QString vcsTopic(const FilePath &directory) final; Core::ShellCommand *createInitialCheckoutCommand(const QString &url, const Utils::FilePath &baseDirectory, @@ -258,7 +260,7 @@ public: const QStringList &extraArgs) final; void fillLinkContextMenu(QMenu *menu, - const QString &workingDirectory, + const FilePath &workingDirectory, const QString &reference) final { menu->addAction(tr("&Copy \"%1\"").arg(reference), @@ -266,15 +268,15 @@ public: QAction *action = menu->addAction(tr("&Describe Change %1").arg(reference), [=] { vcsDescribe(workingDirectory, reference); }); menu->setDefaultAction(action); - GitClient::addChangeActions(menu, workingDirectory, reference); + GitClient::addChangeActions(menu, workingDirectory.toString(), reference); } - bool handleLink(const QString &workingDirectory, const QString &reference) final + bool handleLink(const FilePath &workingDirectory, const QString &reference) final { if (reference.contains("..")) - GitClient::instance()->log(workingDirectory, {}, false, {reference}); + GitClient::instance()->log(workingDirectory.toString(), {}, false, {reference}); else - GitClient::instance()->show(workingDirectory, reference); + GitClient::instance()->show(workingDirectory.toString(), reference); return true; } @@ -1836,13 +1838,13 @@ Utils::Id GitPluginPrivate::id() const return Utils::Id(VcsBase::Constants::VCS_ID_GIT); } -bool GitPluginPrivate::isVcsFileOrDirectory(const Utils::FilePath &fileName) const +bool GitPluginPrivate::isVcsFileOrDirectory(const FilePath &filePath) const { - if (fileName.fileName().compare(".git", Utils::HostOsInfo::fileNameCaseSensitivity())) + if (filePath.fileName().compare(".git", Utils::HostOsInfo::fileNameCaseSensitivity())) return false; - if (fileName.isDir()) + if (filePath.isDir()) return true; - QFile file(fileName.toString()); + QFile file(filePath.toString()); if (!file.open(QFile::ReadOnly)) return false; return file.read(8) == "gitdir: "; @@ -1871,39 +1873,39 @@ bool GitPluginPrivate::supportsOperation(Operation operation) const return false; } -bool GitPluginPrivate::vcsOpen(const QString & /*fileName*/) +bool GitPluginPrivate::vcsOpen(const FilePath & /*filePath*/) { return false; } -bool GitPluginPrivate::vcsAdd(const QString &fileName) +bool GitPluginPrivate::vcsAdd(const FilePath &filePath) { - const QFileInfo fi(fileName); + const QFileInfo fi = filePath.toFileInfo(); return m_gitClient.synchronousAdd(fi.absolutePath(), {fi.fileName()}, {"--intent-to-add"}); } -bool GitPluginPrivate::vcsDelete(const QString &fileName) +bool GitPluginPrivate::vcsDelete(const FilePath &filePath) { - const QFileInfo fi(fileName); + const QFileInfo fi = filePath.toFileInfo(); return m_gitClient.synchronousDelete(fi.absolutePath(), true, {fi.fileName()}); } -bool GitPluginPrivate::vcsMove(const QString &from, const QString &to) +bool GitPluginPrivate::vcsMove(const FilePath &from, const FilePath &to) { - const QFileInfo fromInfo(from); - const QFileInfo toInfo(to); + const QFileInfo fromInfo = from.toFileInfo(); + const QFileInfo toInfo = to.toFileInfo(); return m_gitClient.synchronousMove(fromInfo.absolutePath(), fromInfo.absoluteFilePath(), toInfo.absoluteFilePath()); } -bool GitPluginPrivate::vcsCreateRepository(const QString &directory) +bool GitPluginPrivate::vcsCreateRepository(const FilePath &directory) { - return m_gitClient.synchronousInit(directory); + return m_gitClient.synchronousInit(directory.toString()); } -QString GitPluginPrivate::vcsTopic(const QString &directory) +QString GitPluginPrivate::vcsTopic(const FilePath &directory) { QString topic = Core::IVersionControl::vcsTopic(directory); - const QString commandInProgress = m_gitClient.commandInProgressDescription(directory); + const QString commandInProgress = m_gitClient.commandInProgressDescription(directory.toString()); if (!commandInProgress.isEmpty()) topic += " (" + commandInProgress + ')'; return topic; @@ -1937,27 +1939,27 @@ QStringList GitPluginPrivate::additionalToolsPath() const return res; } -bool GitPluginPrivate::managesDirectory(const QString &directory, QString *topLevel) const +bool GitPluginPrivate::managesDirectory(const FilePath &directory, FilePath *topLevel) const { - const QString topLevelFound = m_gitClient.findRepositoryForDirectory(directory); + const QString topLevelFound = m_gitClient.findRepositoryForDirectory(directory.toString()); if (topLevel) - *topLevel = topLevelFound; + *topLevel = FilePath::fromString(topLevelFound); return !topLevelFound.isEmpty(); } -bool GitPluginPrivate::managesFile(const QString &workingDirectory, const QString &fileName) const +bool GitPluginPrivate::managesFile(const FilePath &workingDirectory, const QString &fileName) const { - return m_gitClient.managesFile(workingDirectory, fileName); + return m_gitClient.managesFile(workingDirectory.toString(), fileName); } -QStringList GitPluginPrivate::unmanagedFiles(const QStringList &filePaths) const +FilePaths GitPluginPrivate::unmanagedFiles(const FilePaths &filePaths) const { return m_gitClient.unmanagedFiles(filePaths); } -void GitPluginPrivate::vcsAnnotate(const QString &file, int line) +void GitPluginPrivate::vcsAnnotate(const FilePath &filePath, int line) { - const QFileInfo fi(file); + const QFileInfo fi = filePath.toFileInfo(); m_gitClient.annotate(fi.absolutePath(), fi.fileName(), QString(), line); } diff --git a/src/plugins/mercurial/mercurialplugin.cpp b/src/plugins/mercurial/mercurialplugin.cpp index f0e0be5d278..aa6b517d915 100644 --- a/src/plugins/mercurial/mercurialplugin.cpp +++ b/src/plugins/mercurial/mercurialplugin.cpp @@ -80,14 +80,14 @@ public: MercurialTopicCache(MercurialClient *client) : m_client(client) {} protected: - QString trackFile(const QString &repository) override + FilePath trackFile(const FilePath &repository) override { - return repository + QLatin1String("/.hg/branch"); + return repository.pathAppended(".hg/branch"); } - QString refreshTopic(const QString &repository) override + QString refreshTopic(const FilePath &repository) override { - return m_client->branchQuerySync(repository); + return m_client->branchQuerySync(repository.toString()); } private: @@ -132,19 +132,19 @@ public: // IVersionControl QString displayName() const final; Utils::Id id() const final; - bool isVcsFileOrDirectory(const Utils::FilePath &fileName) const final; + bool isVcsFileOrDirectory(const FilePath &filePath) const final; - bool managesDirectory(const QString &filename, QString *topLevel = nullptr) const final; - bool managesFile(const QString &workingDirectory, const QString &fileName) const final; + bool managesDirectory(const FilePath &filePath, FilePath *topLevel = nullptr) const final; + bool managesFile(const FilePath &workingDirectory, const QString &fileName) const final; bool isConfigured() const final; bool supportsOperation(Operation operation) const final; - bool vcsOpen(const QString &fileName) final; - bool vcsAdd(const QString &filename) final; - bool vcsDelete(const QString &filename) final; - bool vcsMove(const QString &from, const QString &to) final; - bool vcsCreateRepository(const QString &directory) final; - void vcsAnnotate(const QString &file, int line) final; - void vcsDescribe(const QString &source, const QString &id) final { m_client.view(source, id); } + bool vcsOpen(const FilePath &filePath) final; + bool vcsAdd(const FilePath &filePath) final; + bool vcsDelete(const FilePath &filePath) final; + bool vcsMove(const FilePath &from, const FilePath &to) final; + bool vcsCreateRepository(const FilePath &directory) final; + void vcsAnnotate(const FilePath &filePath, int line) final; + void vcsDescribe(const FilePath &source, const QString &id) final { m_client.view(source.toString(), id); } Core::ShellCommand *createInitialCheckoutCommand(const QString &url, const Utils::FilePath &baseDirectory, @@ -661,7 +661,7 @@ void MercurialPluginPrivate::showCommitWidget(const QListdocument()->setPreferredDisplayName(msg); - const QString branch = vcsTopic(m_submitRepository); + const QString branch = vcsTopic(FilePath::fromString(m_submitRepository)); commitEditor->setFields(QFileInfo(m_submitRepository), branch, m_settings.userName.value(), m_settings.userEmail.value(), status); @@ -747,23 +747,23 @@ Utils::Id MercurialPluginPrivate::id() const return {VcsBase::Constants::VCS_ID_MERCURIAL}; } -bool MercurialPluginPrivate::isVcsFileOrDirectory(const Utils::FilePath &fileName) const +bool MercurialPluginPrivate::isVcsFileOrDirectory(const FilePath &filePath) const { - return m_client.isVcsDirectory(fileName); + return m_client.isVcsDirectory(filePath); } -bool MercurialPluginPrivate::managesDirectory(const QString &directory, QString *topLevel) const +bool MercurialPluginPrivate::managesDirectory(const FilePath &filePath, FilePath *topLevel) const { - QFileInfo dir(directory); + QFileInfo dir = filePath.toFileInfo(); const QString topLevelFound = m_client.findTopLevelForFile(dir); if (topLevel) - *topLevel = topLevelFound; + *topLevel = FilePath::fromString(topLevelFound); return !topLevelFound.isEmpty(); } -bool MercurialPluginPrivate::managesFile(const QString &workingDirectory, const QString &fileName) const +bool MercurialPluginPrivate::managesFile(const FilePath &workingDirectory, const QString &fileName) const { - return m_client.managesFile(workingDirectory, fileName); + return m_client.managesFile(workingDirectory.toString(), fileName); } bool MercurialPluginPrivate::isConfigured() const @@ -793,41 +793,41 @@ bool MercurialPluginPrivate::supportsOperation(Operation operation) const return supported; } -bool MercurialPluginPrivate::vcsOpen(const QString &filename) +bool MercurialPluginPrivate::vcsOpen(const FilePath &filePath) { - Q_UNUSED(filename) + Q_UNUSED(filePath) return true; } -bool MercurialPluginPrivate::vcsAdd(const QString &filename) +bool MercurialPluginPrivate::vcsAdd(const FilePath &filePath) { - const QFileInfo fi(filename); + const QFileInfo fi = filePath.toFileInfo(); return m_client.synchronousAdd(fi.absolutePath(), fi.fileName()); } -bool MercurialPluginPrivate::vcsDelete(const QString &filename) +bool MercurialPluginPrivate::vcsDelete(const FilePath &filePath) { - const QFileInfo fi(filename); + const QFileInfo fi = filePath.toFileInfo(); return m_client.synchronousRemove(fi.absolutePath(), fi.fileName()); } -bool MercurialPluginPrivate::vcsMove(const QString &from, const QString &to) +bool MercurialPluginPrivate::vcsMove(const FilePath &from, const FilePath &to) { - const QFileInfo fromInfo(from); - const QFileInfo toInfo(to); + const QFileInfo fromInfo = from.toFileInfo(); + const QFileInfo toInfo = to.toFileInfo(); return m_client.synchronousMove(fromInfo.absolutePath(), fromInfo.absoluteFilePath(), toInfo.absoluteFilePath()); } -bool MercurialPluginPrivate::vcsCreateRepository(const QString &directory) +bool MercurialPluginPrivate::vcsCreateRepository(const FilePath &directory) { - return m_client.synchronousCreateRepository(directory); + return m_client.synchronousCreateRepository(directory.toString()); } -void MercurialPluginPrivate::vcsAnnotate(const QString &file, int line) +void MercurialPluginPrivate::vcsAnnotate(const FilePath &filePath, int line) { - const QFileInfo fi(file); + const QFileInfo fi = filePath.toFileInfo(); m_client.annotate(fi.absolutePath(), fi.fileName(), QString(), line); } @@ -847,12 +847,12 @@ Core::ShellCommand *MercurialPluginPrivate::createInitialCheckoutCommand(const Q bool MercurialPluginPrivate::sccManaged(const QString &filename) { const QFileInfo fi(filename); - QString topLevel; - const bool managed = managesDirectory(fi.absolutePath(), &topLevel); + FilePath topLevel; + const bool managed = managesDirectory(FilePath::fromString(fi.absolutePath()), &topLevel); if (!managed || topLevel.isEmpty()) return false; - const QDir topLevelDir(topLevel); - return m_client.manifestSync(topLevel, topLevelDir.relativeFilePath(filename)); + const QDir topLevelDir(topLevel.toString()); + return m_client.manifestSync(topLevel.toString(), topLevelDir.relativeFilePath(filename)); } void MercurialPluginPrivate::changed(const QVariant &v) diff --git a/src/plugins/perforce/perforceplugin.cpp b/src/plugins/perforce/perforceplugin.cpp index 5c26747ec90..8657e22b95c 100644 --- a/src/plugins/perforce/perforceplugin.cpp +++ b/src/plugins/perforce/perforceplugin.cpp @@ -212,20 +212,20 @@ public: Id id() const final { return VcsBase::Constants::VCS_ID_PERFORCE; } bool isVcsFileOrDirectory(const FilePath &fileName) const final; - bool managesDirectory(const QString &directory, QString *topLevel = nullptr) const final; - bool managesFile(const QString &workingDirectory, const QString &fileName) const final; + bool managesDirectory(const Utils::FilePath &directory, Utils::FilePath *topLevel = nullptr) const final; + bool managesFile(const Utils::FilePath &workingDirectory, const QString &fileName) const final; bool isConfigured() const final; bool supportsOperation(Operation operation) const final; - OpenSupportMode openSupportMode(const QString &fileName) const final; - bool vcsOpen(const QString &fileName) final; + OpenSupportMode openSupportMode(const Utils::FilePath &filePath) const final; + bool vcsOpen(const Utils::FilePath &filePath) final; SettingsFlags settingsFlags() const final; - bool vcsAdd(const QString &fileName) final; - bool vcsDelete(const QString &filename) final; - bool vcsMove(const QString &from, const QString &to) final; - bool vcsCreateRepository(const QString &directory) final; - void vcsAnnotate(const QString &file, int line) final; - void vcsDescribe(const QString &source, const QString &n) final; + bool vcsAdd(const Utils::FilePath &filePath) final; + bool vcsDelete(const Utils::FilePath &filePath) final; + bool vcsMove(const Utils::FilePath &from, const Utils::FilePath &to) final; + bool vcsCreateRepository(const Utils::FilePath &directory) final; + void vcsAnnotate(const Utils::FilePath &filePath, int line) final; + void vcsDescribe(const Utils::FilePath &source, const QString &n) final; QString vcsOpenText() const final; QString vcsMakeWritableText() const final; @@ -831,7 +831,7 @@ void PerforcePluginPrivate::describeChange() { ChangeNumberDialog dia; if (dia.exec() == QDialog::Accepted && dia.number() > 0) - vcsDescribe(QString(), QString::number(dia.number())); + vcsDescribe(FilePath(), QString::number(dia.number())); } void PerforcePluginPrivate::annotateCurrentFile() @@ -978,23 +978,23 @@ void PerforcePluginPrivate::updateActions(VcsBasePluginPrivate::ActionState as) m_revertUnchangedAction->setParameter(projectName); } -bool PerforcePluginPrivate::managesDirectory(const QString &directory, QString *topLevel /* = 0 */) const +bool PerforcePluginPrivate::managesDirectory(const FilePath &directory, FilePath *topLevel /* = 0 */) const { - const bool rc = const_cast(this)->managesDirectoryFstat(directory); + const bool rc = const_cast(this)->managesDirectoryFstat(directory.toString()); if (topLevel) { if (rc) - *topLevel = m_settings.topLevelSymLinkTarget(); + *topLevel = FilePath::fromString(m_settings.topLevelSymLinkTarget()); else topLevel->clear(); } return rc; } -bool PerforcePluginPrivate::managesFile(const QString &workingDirectory, const QString &fileName) const +bool PerforcePluginPrivate::managesFile(const FilePath &workingDirectory, const QString &fileName) const { QStringList args; args << QLatin1String("fstat") << QLatin1String("-m1") << fileName; - const PerforceResponse result = runP4Cmd(workingDirectory, args, RunFullySynchronous); + const PerforceResponse result = runP4Cmd(workingDirectory.toString(), args, RunFullySynchronous); return result.stdOut.contains(QLatin1String("depotFile")); } @@ -1126,9 +1126,9 @@ PerforcePluginPrivate::createTemporaryArgumentFile(const QStringList &extraArgs, return rc; } -bool PerforcePluginPrivate::isVcsFileOrDirectory(const FilePath &fileName) const +bool PerforcePluginPrivate::isVcsFileOrDirectory(const FilePath &FilePath) const { - Q_UNUSED(fileName) + Q_UNUSED(FilePath) return false; // Perforce does not seem to litter its files into the source tree. } @@ -1158,15 +1158,15 @@ bool PerforcePluginPrivate::supportsOperation(Operation operation) const return false; } -IVersionControl::OpenSupportMode PerforcePluginPrivate::openSupportMode(const QString &fileName) const +IVersionControl::OpenSupportMode PerforcePluginPrivate::openSupportMode(const FilePath &filePath) const { - Q_UNUSED(fileName) + Q_UNUSED(filePath) return OpenOptional; } -bool PerforcePluginPrivate::vcsOpen(const QString &fileName) +bool PerforcePluginPrivate::vcsOpen(const FilePath &filePath) { - const QFileInfo fi(fileName); + const QFileInfo fi = filePath.toFileInfo(); return vcsOpen(fi.absolutePath(), fi.fileName(), true); } @@ -1178,33 +1178,33 @@ IVersionControl::SettingsFlags PerforcePluginPrivate::settingsFlags() const return rc; } -bool PerforcePluginPrivate::vcsAdd(const QString &fileName) +bool PerforcePluginPrivate::vcsAdd(const FilePath &filePath) { - const QFileInfo fi(fileName); + const QFileInfo fi = filePath.toFileInfo(); return vcsAdd(fi.absolutePath(), fi.fileName()); } -bool PerforcePluginPrivate::vcsDelete(const QString &fileName) +bool PerforcePluginPrivate::vcsDelete(const FilePath &filePath) { - const QFileInfo fi(fileName); + const QFileInfo fi = filePath.toFileInfo(); return vcsDelete(fi.absolutePath(), fi.fileName()); } -bool PerforcePluginPrivate::vcsMove(const QString &from, const QString &to) +bool PerforcePluginPrivate::vcsMove(const FilePath &from, const FilePath &to) { - const QFileInfo fromInfo(from); - const QFileInfo toInfo(to); + const QFileInfo fromInfo = from.toFileInfo(); + const QFileInfo toInfo = to.toFileInfo(); return vcsMove(fromInfo.absolutePath(), fromInfo.absoluteFilePath(), toInfo.absoluteFilePath()); } -bool PerforcePluginPrivate::vcsCreateRepository(const QString &) +bool PerforcePluginPrivate::vcsCreateRepository(const FilePath &) { return false; } -void PerforcePluginPrivate::vcsAnnotate(const QString &file, int line) +void PerforcePluginPrivate::vcsAnnotate(const FilePath &filePath, int line) { - const QFileInfo fi(file); + const QFileInfo fi = filePath.toFileInfo(); annotate(fi.absolutePath(), fi.fileName(), QString(), line); } @@ -1537,16 +1537,16 @@ void PerforcePluginPrivate::p4Diff(const PerforceDiffParameters &p) diffEditorWidget->setEditorConfig(pw); } -void PerforcePluginPrivate::vcsDescribe(const QString & source, const QString &n) +void PerforcePluginPrivate::vcsDescribe(const FilePath &source, const QString &n) { QTextCodec *codec = source.isEmpty() ? static_cast(nullptr) - : VcsBaseEditor::getCodec(source); + : VcsBaseEditor::getCodec(source.toString()); QStringList args; args << QLatin1String("describe") << QLatin1String("-du") << n; const PerforceResponse result = runP4Cmd(m_settings.topLevel(), args, CommandToWindow|StdErrToWindow|ErrorToWindow, QStringList(), QByteArray(), codec); if (!result.error) - showOutputInEditor(tr("p4 describe %1").arg(n), result.stdOut, diffEditorParameters.id, source, codec); + showOutputInEditor(tr("p4 describe %1").arg(n), result.stdOut, diffEditorParameters.id, source.toString(), codec); } void PerforcePluginPrivate::commitFromEditor() diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 10a96bd0f58..b55b75c0e47 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -3868,7 +3868,7 @@ void ProjectExplorerPluginPrivate::deleteFile() FileChangeBlocker changeGuard(currentNode->filePath()); if (IVersionControl *vc = VcsManager::findVersionControlForDirectory(filePath.absolutePath().toString())) { - vc->vcsDelete(filePath.toString()); + vc->vcsDelete(filePath); } if (filePath.exists()) { if (!filePath.removeFile()) diff --git a/src/plugins/projectexplorer/projectmodels.cpp b/src/plugins/projectexplorer/projectmodels.cpp index 0a35243a117..ca6e6559867 100644 --- a/src/plugins/projectexplorer/projectmodels.cpp +++ b/src/plugins/projectexplorer/projectmodels.cpp @@ -757,7 +757,7 @@ bool FlatModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int r const FilePath targetFile = targetFilePath(sourceFile); if (sourceFile.copyFile(targetFile)) { filesToAdd << targetFile; - if (addToVcs && !vcs->vcsAdd(targetFile.toString())) + if (addToVcs && !vcs->vcsAdd(targetFile)) failedVcsOp << targetFile; } else { failedCopyOrMove << sourceFile; @@ -780,7 +780,7 @@ bool FlatModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int r const VcsInfo sourceVcs = vcsInfoForFile(sourceFile.toString()); if (sourceVcs.vcs && targetVcs.vcs && sourceVcs == targetVcs && sourceVcs.vcs->supportsOperation(Core::IVersionControl::MoveOperation)) { - if (sourceVcs.vcs->vcsMove(sourceFile.toString(), targetFile.toString())) { + if (sourceVcs.vcs->vcsMove(sourceFile, targetFile)) { filesToAdd << targetFile; filesToRemove << sourceFile; } else { @@ -797,12 +797,12 @@ bool FlatModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int r Core::FileChangeBlocker changeGuard(sourceFile); if (sourceVcs.vcs && sourceVcs.vcs->supportsOperation( Core::IVersionControl::DeleteOperation) - && !sourceVcs.vcs->vcsDelete(sourceFile.toString())) { + && !sourceVcs.vcs->vcsDelete(sourceFile)) { failedVcsOp << sourceFile; } if (sourceFile.exists() && !sourceFile.removeFile()) failedDelete << sourceFile; - if (vcsAddPossible && !targetVcs.vcs->vcsAdd(targetFile.toString())) + if (vcsAddPossible && !targetVcs.vcs->vcsAdd(targetFile)) failedVcsOp << targetFile; } const RemovedFilesFromProject result diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index 54f5dc4290e..3c8ec137641 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -1003,7 +1003,7 @@ QString ContainerNode::displayName() const const QFileInfo fi = m_project->projectFilePath().toFileInfo(); const QString dir = fi.isDir() ? fi.absoluteFilePath() : fi.absolutePath(); if (Core::IVersionControl *vc = Core::VcsManager::findVersionControlForDirectory(dir)) { - QString vcsTopic = vc->vcsTopic(dir); + QString vcsTopic = vc->vcsTopic(FilePath::fromString(dir)); if (!vcsTopic.isEmpty()) name += " [" + vcsTopic + ']'; } diff --git a/src/plugins/projectexplorer/projectwizardpage.cpp b/src/plugins/projectexplorer/projectwizardpage.cpp index 6ff8fef822c..5b169076587 100644 --- a/src/plugins/projectexplorer/projectwizardpage.cpp +++ b/src/plugins/projectexplorer/projectwizardpage.cpp @@ -418,7 +418,7 @@ bool ProjectWizardPage::runVersionControl(const QList &files, QSt // Create repository? if (!m_repositoryExists) { QTC_ASSERT(versionControl->supportsOperation(IVersionControl::CreateRepositoryOperation), return false); - if (!versionControl->vcsCreateRepository(m_commonDirectory)) { + if (!versionControl->vcsCreateRepository(FilePath::fromString(m_commonDirectory))) { *errorMessage = tr("A version control system repository could not be created in \"%1\".").arg(m_commonDirectory); return false; } @@ -426,7 +426,7 @@ bool ProjectWizardPage::runVersionControl(const QList &files, QSt // Add files if supported. if (versionControl->supportsOperation(IVersionControl::AddOperation)) { foreach (const GeneratedFile &generatedFile, files) { - if (!versionControl->vcsAdd(generatedFile.path())) { + if (!versionControl->vcsAdd(generatedFile.filePath())) { *errorMessage = tr("Failed to add \"%1\" to the version control system.").arg(generatedFile.path()); return false; } diff --git a/src/plugins/projectexplorer/vcsannotatetaskhandler.cpp b/src/plugins/projectexplorer/vcsannotatetaskhandler.cpp index 3c7601a34c0..0765777b1f7 100644 --- a/src/plugins/projectexplorer/vcsannotatetaskhandler.cpp +++ b/src/plugins/projectexplorer/vcsannotatetaskhandler.cpp @@ -35,6 +35,7 @@ #include using namespace Core; +using namespace Utils; namespace ProjectExplorer { namespace Internal { @@ -56,7 +57,7 @@ void VcsAnnotateTaskHandler::handle(const Task &task) IVersionControl *vc = VcsManager::findVersionControlForDirectory(fi.absolutePath()); QTC_ASSERT(vc, return); QTC_ASSERT(vc->supportsOperation(IVersionControl::AnnotateOperation), return); - vc->vcsAnnotate(fi.absoluteFilePath(), task.movedLine); + vc->vcsAnnotate(FilePath::fromString(fi.absoluteFilePath()), task.movedLine); } QAction *VcsAnnotateTaskHandler::createAction(QObject *parent) const diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index 3df9afa518b..23aae15d30b 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -353,7 +353,7 @@ bool QbsBuildSystem::ensureWriteableQbsFile(const QString &file) // Try via vcs manager IVersionControl *versionControl = VcsManager::findVersionControlForDirectory(fi.absolutePath()); - if (!versionControl || !versionControl->vcsOpen(file)) { + if (!versionControl || !versionControl->vcsOpen(FilePath::fromString(file))) { bool makeWritable = QFile::setPermissions(file, fi.permissions() | QFile::WriteUser); if (!makeWritable) { QMessageBox::warning(ICore::dialogParent(), diff --git a/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp b/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp index 3bed8f42e95..e3be0ad59db 100644 --- a/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp @@ -746,7 +746,7 @@ bool QmakePriFile::ensureWriteableProFile(const QString &file) if (!fi.isWritable()) { // Try via vcs manager Core::IVersionControl *versionControl = Core::VcsManager::findVersionControlForDirectory(fi.absolutePath()); - if (!versionControl || !versionControl->vcsOpen(file)) { + if (!versionControl || !versionControl->vcsOpen(FilePath::fromString(file))) { bool makeWritable = QFile::setPermissions(file, fi.permissions() | QFile::WriteUser); if (!makeWritable) { QMessageBox::warning(Core::ICore::dialogParent(), diff --git a/src/plugins/qmldesigner/documentmanager.cpp b/src/plugins/qmldesigner/documentmanager.cpp index 42f74b5086d..8b6b1b93857 100644 --- a/src/plugins/qmldesigner/documentmanager.cpp +++ b/src/plugins/qmldesigner/documentmanager.cpp @@ -52,6 +52,8 @@ #include +using namespace Utils; + namespace QmlDesigner { Q_LOGGING_CATEGORY(documentManagerLog, "qtc.qtquickdesigner.documentmanager", QtWarningMsg) @@ -315,7 +317,7 @@ void DocumentManager::addFileToVersionControl(const QString &directoryPath, cons Core::VcsManager::msgPromptToAddToVcs(QStringList(newFilePath), versionControl), QMessageBox::Yes | QMessageBox::No); - if (button == QMessageBox::Yes && !versionControl->vcsAdd(newFilePath)) { + if (button == QMessageBox::Yes && !versionControl->vcsAdd(FilePath::fromString(newFilePath))) { Core::AsynchronousMessageBox::warning(Core::VcsManager::msgAddToVcsFailedTitle(), Core::VcsManager::msgToAddToVcsFailed(QStringList(newFilePath), versionControl)); } diff --git a/src/plugins/qmljseditor/qmljscomponentfromobjectdef.cpp b/src/plugins/qmljseditor/qmljscomponentfromobjectdef.cpp index d1bd31d8661..66b23afa7d3 100644 --- a/src/plugins/qmljseditor/qmljscomponentfromobjectdef.cpp +++ b/src/plugins/qmljseditor/qmljscomponentfromobjectdef.cpp @@ -224,7 +224,7 @@ public: Core::VcsManager::msgAddToVcsTitle(), Core::VcsManager::msgPromptToAddToVcs(QStringList(newFileName), versionControl), QMessageBox::Yes | QMessageBox::No); - if (button == QMessageBox::Yes && !versionControl->vcsAdd(newFileName)) { + if (button == QMessageBox::Yes && !versionControl->vcsAdd(FilePath::fromString(newFileName))) { QMessageBox::warning(Core::ICore::dialogParent(), Core::VcsManager::msgAddToVcsFailedTitle(), Core::VcsManager::msgToAddToVcsFailed(QStringList(newFileName), diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp index fd02122ae9d..915e2cc89e8 100644 --- a/src/plugins/subversion/subversionplugin.cpp +++ b/src/plugins/subversion/subversionplugin.cpp @@ -187,9 +187,9 @@ public: { } protected: - QString trackFile(const QString &repository) override; + FilePath trackFile(const FilePath &repository) override; - QString refreshTopic(const QString &repository) override; + QString refreshTopic(const FilePath &repository) override; private: SubversionPluginPrivate *m_plugin; @@ -206,21 +206,21 @@ public: // IVersionControl QString displayName() const final; Utils::Id id() const final; - bool isVcsFileOrDirectory(const Utils::FilePath &fileName) const final; + bool isVcsFileOrDirectory(const FilePath &filePath) const final; - bool managesDirectory(const QString &directory, QString *topLevel) const final; - bool managesFile(const QString &workingDirectory, const QString &fileName) const final; + bool managesDirectory(const FilePath &directory, FilePath *topLevel) const final; + bool managesFile(const FilePath &workingDirectory, const QString &fileName) const final; bool isConfigured() const final; bool supportsOperation(Operation operation) const final; - bool vcsOpen(const QString &fileName) final; - bool vcsAdd(const QString &fileName) final; - bool vcsDelete(const QString &filename) final; - bool vcsMove(const QString &from, const QString &to) final; - bool vcsCreateRepository(const QString &directory) final; + bool vcsOpen(const FilePath &filePath) final; + bool vcsAdd(const FilePath &filePath) final; + bool vcsDelete(const FilePath &filePath) final; + bool vcsMove(const FilePath &from, const FilePath &to) final; + bool vcsCreateRepository(const FilePath &directory) final; - void vcsAnnotate(const QString &file, int line) final; - void vcsDescribe(const QString &source, const QString &changeNr) final; + void vcsAnnotate(const FilePath &file, int line) final; + void vcsDescribe(const FilePath &source, const QString &changeNr) final; Core::ShellCommand *createInitialCheckoutCommand(const QString &url, const Utils::FilePath &baseDirectory, @@ -967,13 +967,13 @@ void SubversionPluginPrivate::projectStatus() svnStatus(state.currentProjectTopLevel(), state.relativeCurrentProject()); } -void SubversionPluginPrivate::vcsDescribe(const QString &source, const QString &changeNr) +void SubversionPluginPrivate::vcsDescribe(const FilePath &source, const QString &changeNr) { // To describe a complete change, find the top level and then do //svn diff -r 472958:472959 - const QFileInfo fi(source); - QString topLevel; - const bool manages = managesDirectory(fi.isDir() ? source : fi.absolutePath(), &topLevel); + const QFileInfo fi = source.toFileInfo(); + FilePath topLevel; + const bool manages = managesDirectory(fi.isDir() ? source : FilePath::fromString(fi.absolutePath()), &topLevel); if (!manages || topLevel.isEmpty()) return; if (Subversion::Constants::debug) @@ -987,7 +987,7 @@ void SubversionPluginPrivate::vcsDescribe(const QString &source, const QString & const QString title = QString::fromLatin1("svn describe %1#%2").arg(fi.fileName(), changeNr); - m_client->describe(topLevel, number, title); + m_client->describe(topLevel.toString(), number, title); } void SubversionPluginPrivate::slotDescribe() @@ -1004,7 +1004,7 @@ void SubversionPluginPrivate::slotDescribe() return; const int revision = inputDialog.intValue(); - vcsDescribe(state.topLevel(), QString::number(revision)); + vcsDescribe(FilePath::fromString(state.topLevel()), QString::number(revision)); } void SubversionPluginPrivate::commitFromEditor() @@ -1155,9 +1155,9 @@ bool SubversionPluginPrivate::vcsCheckout(const QString &directory, const QByteA } -bool SubversionPluginPrivate::managesDirectory(const QString &directory, QString *topLevel /* = 0 */) const +bool SubversionPluginPrivate::managesDirectory(const FilePath &directory, FilePath *topLevel /* = 0 */) const { - const QDir dir(directory); + const QDir dir(directory.toString()); if (topLevel) topLevel->clear(); @@ -1168,7 +1168,7 @@ bool SubversionPluginPrivate::managesDirectory(const QString &directory, QString while (!parentDir.isRoot()) { if (checkSVNSubDir(parentDir)) { if (topLevel) - *topLevel = parentDir.absolutePath(); + *topLevel = FilePath::fromString(parentDir.absolutePath()); return true; } if (!parentDir.cdUp()) @@ -1178,14 +1178,14 @@ bool SubversionPluginPrivate::managesDirectory(const QString &directory, QString return false; } -bool SubversionPluginPrivate::managesFile(const QString &workingDirectory, const QString &fileName) const +bool SubversionPluginPrivate::managesFile(const FilePath &workingDirectory, const QString &fileName) const { QStringList args; args << QLatin1String("status"); args << SubversionClient::addAuthenticationOptions(m_settings) << QDir::toNativeSeparators(SubversionClient::escapeFile(fileName)); SubversionResponse response - = runSvn(workingDirectory, args, m_settings.timeout.value(), 0); + = runSvn(workingDirectory.toString(), args, m_settings.timeout.value(), 0); return response.stdOut.isEmpty() || response.stdOut.at(0) != QLatin1Char('?'); } @@ -1214,9 +1214,9 @@ Utils::Id SubversionPluginPrivate::id() const return Utils::Id(VcsBase::Constants::VCS_ID_SUBVERSION); } -bool SubversionPluginPrivate::isVcsFileOrDirectory(const Utils::FilePath &fileName) const +bool SubversionPluginPrivate::isVcsFileOrDirectory(const FilePath &filePath) const { - return isVcsDirectory(fileName); + return isVcsDirectory(filePath); } bool SubversionPluginPrivate::isConfigured() const @@ -1246,39 +1246,39 @@ bool SubversionPluginPrivate::supportsOperation(Operation operation) const return rc; } -bool SubversionPluginPrivate::vcsOpen(const QString & /* fileName */) +bool SubversionPluginPrivate::vcsOpen(const FilePath & /* filePath */) { // Open for edit: N/A return true; } -bool SubversionPluginPrivate::vcsAdd(const QString &fileName) +bool SubversionPluginPrivate::vcsAdd(const FilePath &filePath) { - const QFileInfo fi(fileName); + const QFileInfo fi = filePath.toFileInfo(); return vcsAdd(fi.absolutePath(), fi.fileName()); } -bool SubversionPluginPrivate::vcsDelete(const QString &fileName) +bool SubversionPluginPrivate::vcsDelete(const FilePath &filePath) { - const QFileInfo fi(fileName); + const QFileInfo fi = filePath.toFileInfo(); return vcsDelete(fi.absolutePath(), fi.fileName()); } -bool SubversionPluginPrivate::vcsMove(const QString &from, const QString &to) +bool SubversionPluginPrivate::vcsMove(const FilePath &from, const FilePath &to) { - const QFileInfo fromInfo(from); - const QFileInfo toInfo(to); + const QFileInfo fromInfo = from.toFileInfo(); + const QFileInfo toInfo = to.toFileInfo(); return vcsMove(fromInfo.absolutePath(), fromInfo.absoluteFilePath(), toInfo.absoluteFilePath()); } -bool SubversionPluginPrivate::vcsCreateRepository(const QString &) +bool SubversionPluginPrivate::vcsCreateRepository(const FilePath &) { return false; } -void SubversionPluginPrivate::vcsAnnotate(const QString &file, int line) +void SubversionPluginPrivate::vcsAnnotate(const FilePath &filePath, int line) { - const QFileInfo fi(file); + const QFileInfo fi = filePath.toFileInfo(); vcsAnnotateHelper(fi.absolutePath(), fi.fileName(), QString(), line); } @@ -1298,14 +1298,14 @@ Core::ShellCommand *SubversionPluginPrivate::createInitialCheckoutCommand(const return command; } -QString SubversionTopicCache::trackFile(const QString &repository) +FilePath SubversionTopicCache::trackFile(const FilePath &repository) { - return m_plugin->monitorFile(repository); + return FilePath::fromString(m_plugin->monitorFile(repository.toString())); } -QString SubversionTopicCache::refreshTopic(const QString &repository) +QString SubversionTopicCache::refreshTopic(const FilePath &repository) { - return m_plugin->synchronousTopic(repository); + return m_plugin->synchronousTopic(repository.toString()); } diff --git a/src/plugins/vcsbase/basevcseditorfactory.cpp b/src/plugins/vcsbase/basevcseditorfactory.cpp index 8f25813885b..84414bf76da 100644 --- a/src/plugins/vcsbase/basevcseditorfactory.cpp +++ b/src/plugins/vcsbase/basevcseditorfactory.cpp @@ -52,7 +52,7 @@ namespace VcsBase { VcsEditorFactory::VcsEditorFactory(const VcsBaseEditorParameters *parameters, // Force copy, see QTCREATORBUG-13218 const EditorWidgetCreator editorWidgetCreator, - std::function describeFunc) + std::function describeFunc) { setId(parameters->id); setDisplayName(QCoreApplication::translate("VCS", parameters->displayName)); diff --git a/src/plugins/vcsbase/basevcseditorfactory.h b/src/plugins/vcsbase/basevcseditorfactory.h index 0afddcd5ce7..ddd90a93dac 100644 --- a/src/plugins/vcsbase/basevcseditorfactory.h +++ b/src/plugins/vcsbase/basevcseditorfactory.h @@ -40,7 +40,7 @@ class VCSBASE_EXPORT VcsEditorFactory : public TextEditor::TextEditorFactory public: VcsEditorFactory(const VcsBaseEditorParameters *parameters, const EditorWidgetCreator editorWidgetCreator, - std::function describeFunc); + std::function describeFunc); }; } // namespace VcsBase diff --git a/src/plugins/vcsbase/vcsbaseeditor.cpp b/src/plugins/vcsbase/vcsbaseeditor.cpp index 8b62ddb0850..4eea9365b69 100644 --- a/src/plugins/vcsbase/vcsbaseeditor.cpp +++ b/src/plugins/vcsbase/vcsbaseeditor.cpp @@ -329,7 +329,8 @@ QString ChangeTextCursorHandler::currentContents() const void ChangeTextCursorHandler::slotDescribe() { - emit editorWidget()->describeRequested(editorWidget()->source(), m_currentChange); + emit editorWidget()->describeRequested(FilePath::fromString(editorWidget()->source()), + m_currentChange); } void ChangeTextCursorHandler::slotCopyRevision() diff --git a/src/plugins/vcsbase/vcsbaseeditor.h b/src/plugins/vcsbase/vcsbaseeditor.h index cd9bafee72f..9b21e1da3d3 100644 --- a/src/plugins/vcsbase/vcsbaseeditor.h +++ b/src/plugins/vcsbase/vcsbaseeditor.h @@ -157,7 +157,7 @@ protected: int lineNumberDigits() const override; public: - typedef std::function DescribeFunc; + typedef std::function DescribeFunc; void finalizeInitialization() override; // FIXME: Consolidate these into finalizeInitialization @@ -219,7 +219,7 @@ signals: // These signals also exist in the opaque editable (IEditor) that is // handled by the editor manager for convenience. They are emitted // for LogOutput/AnnotateOutput content types. - void describeRequested(const QString &source, const QString &change); + void describeRequested(const Utils::FilePath &source, const QString &change); void annotateRevisionRequested(const QString &workingDirectory, const QString &file, const QString &change, int lineNumber); void diffChunkApplied(const VcsBase::DiffChunk &dc); diff --git a/src/plugins/vcsbase/vcsbaseplugin.cpp b/src/plugins/vcsbase/vcsbaseplugin.cpp index 05e3557e210..ffa1e51ad1e 100644 --- a/src/plugins/vcsbase/vcsbaseplugin.cpp +++ b/src/plugins/vcsbase/vcsbaseplugin.cpp @@ -241,7 +241,7 @@ QString StateListener::windowTitleVcsTopic(const QString &filePath) QString topLevelPath; IVersionControl *vc = VcsManager::findVersionControlForDirectory( searchPath, &topLevelPath); - return (vc && !topLevelPath.isEmpty()) ? vc->vcsTopic(topLevelPath) : QString(); + return (vc && !topLevelPath.isEmpty()) ? vc->vcsTopic(FilePath::fromString(topLevelPath)) : QString(); } static inline QString displayNameOfEditor(const QString &fileName) @@ -657,7 +657,7 @@ void VcsBasePluginPrivate::createRepository() return; } while (true); // Create - const bool rc = vcsCreateRepository(directory); + const bool rc = vcsCreateRepository(FilePath::fromString(directory)); const QString nativeDir = QDir::toNativeSeparators(directory); if (rc) { QMessageBox::information(mw, tr("Repository Created"), diff --git a/src/plugins/vcsbase/vcsoutputformatter.cpp b/src/plugins/vcsbase/vcsoutputformatter.cpp index 320f6c326a5..dd79f5d8914 100644 --- a/src/plugins/vcsbase/vcsoutputformatter.cpp +++ b/src/plugins/vcsbase/vcsoutputformatter.cpp @@ -34,6 +34,8 @@ #include #include +using namespace Utils; + namespace VcsBase { VcsOutputLineParser::VcsOutputLineParser() : @@ -73,7 +75,7 @@ bool VcsOutputLineParser::handleVcsLink(const QString &workingDirectory, const Q return true; } if (IVersionControl *vcs = VcsManager::findVersionControlForDirectory(workingDirectory)) - return vcs->handleLink(workingDirectory, href); + return vcs->handleLink(FilePath::fromString(workingDirectory), href); return false; } @@ -89,7 +91,7 @@ void VcsOutputLineParser::fillLinkContextMenu( return; } if (Core::IVersionControl *vcs = Core::VcsManager::findVersionControlForDirectory(workingDirectory)) - vcs->fillLinkContextMenu(menu, workingDirectory, href); + vcs->fillLinkContextMenu(menu, FilePath::fromString(workingDirectory), href); } } diff --git a/src/plugins/vcsbase/vcsplugin.cpp b/src/plugins/vcsbase/vcsplugin.cpp index 731048bb185..52ff7034e25 100644 --- a/src/plugins/vcsbase/vcsplugin.cpp +++ b/src/plugins/vcsbase/vcsplugin.cpp @@ -52,6 +52,7 @@ using namespace Core; using namespace ProjectExplorer; +using namespace Utils; namespace VcsBase { namespace Internal { @@ -122,7 +123,7 @@ bool VcsPlugin::initialize(const QStringList &arguments, QString *errorMessage) QString topLevel; if (Project *project = ProjectTree::currentProject()) vc = VcsManager::findVersionControlForDirectory(project->projectDirectory().toString(), &topLevel); - return vc ? vc->vcsTopic(topLevel) : QString(); + return vc ? vc->vcsTopic(FilePath::fromString(topLevel)) : QString(); }); expander->registerVariable(Constants::VAR_VCS_TOPLEVELPATH,