Vcs: Proliferate FilePath a bit further

Change-Id: I8490917bf0bde59b1cef2509ec14c3ca985fa43d
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
hjk
2022-11-09 15:19:13 +01:00
parent 9c69a63b3b
commit 30312cc74a
12 changed files with 33 additions and 38 deletions

View File

@@ -708,7 +708,7 @@ void BazaarPluginPrivate::showCommitWidget(const QList<VcsBaseClient::StatusItem
commitEditor->document()->setPreferredDisplayName(msg); commitEditor->document()->setPreferredDisplayName(msg);
const BranchInfo branch = m_client.synchronousBranchQuery(m_submitRepository); const BranchInfo branch = m_client.synchronousBranchQuery(m_submitRepository);
commitEditor->setFields(m_submitRepository.toString(), branch, commitEditor->setFields(m_submitRepository, branch,
m_settings.userName.value(), m_settings.userName.value(),
m_settings.userEmail.value(), status); m_settings.userEmail.value(), status);
} }

View File

@@ -11,7 +11,7 @@
#include <coreplugin/idocument.h> #include <coreplugin/idocument.h>
#include <vcsbase/submitfilemodel.h> #include <vcsbase/submitfilemodel.h>
#include <QDebug> using namespace Utils;
namespace Bazaar::Internal { namespace Bazaar::Internal {
@@ -26,7 +26,7 @@ BazaarCommitWidget *CommitEditor::commitWidget()
return static_cast<BazaarCommitWidget *>(widget()); return static_cast<BazaarCommitWidget *>(widget());
} }
void CommitEditor::setFields(const QString &repositoryRoot, const BranchInfo &branch, void CommitEditor::setFields(const FilePath &repositoryRoot, const BranchInfo &branch,
const QString &userName, const QString &email, const QString &userName, const QString &email,
const QList<VcsBase::VcsBaseClient::StatusItem> &repoStatus) const QList<VcsBase::VcsBaseClient::StatusItem> &repoStatus)
{ {

View File

@@ -20,7 +20,7 @@ class CommitEditor : public VcsBase::VcsBaseSubmitEditor
public: public:
CommitEditor(); CommitEditor();
void setFields(const QString &repositoryRoot, const BranchInfo &branch, void setFields(const Utils::FilePath &repositoryRoot, const BranchInfo &branch,
const QString &userName, const QString &email, const QString &userName, const QString &email,
const QList<VcsBase::VcsBaseClient::StatusItem> &repoStatus); const QList<VcsBase::VcsBaseClient::StatusItem> &repoStatus);

View File

@@ -2792,7 +2792,7 @@ bool GitClient::getCommitData(const FilePath &workingDirectory,
// Filter out untracked files that are not part of the project // Filter out untracked files that are not part of the project
QStringList untrackedFiles = commitData.filterFiles(UntrackedFile); QStringList untrackedFiles = commitData.filterFiles(UntrackedFile);
VcsBaseSubmitEditor::filterUntrackedFilesOfProject(repoDirectory.toString(), &untrackedFiles); VcsBaseSubmitEditor::filterUntrackedFilesOfProject(repoDirectory, &untrackedFiles);
QList<CommitData::StateFilePair> filteredFiles; QList<CommitData::StateFilePair> filteredFiles;
QList<CommitData::StateFilePair>::const_iterator it = commitData.files.constBegin(); QList<CommitData::StateFilePair>::const_iterator it = commitData.files.constBegin();
for ( ; it != commitData.files.constEnd(); ++it) { for ( ; it != commitData.files.constEnd(); ++it) {

View File

@@ -115,10 +115,8 @@ void GitSubmitEditor::setCommitData(const CommitData &d)
setEmptyFileListEnabled(m_commitType == AmendCommit); // Allow for just correcting the message setEmptyFileListEnabled(m_commitType == AmendCommit); // Allow for just correcting the message
m_model = new GitSubmitFileModel(this); m_model = new GitSubmitFileModel(this);
m_model->setRepositoryRoot(d.panelInfo.repository.toString()); m_model->setRepositoryRoot(d.panelInfo.repository);
m_model->setFileStatusQualifier([](const QString &, const QVariant &extraData) m_model->setFileStatusQualifier([](const QString &, const QVariant &extraData) {
-> SubmitFileModel::FileStatusHint
{
const FileStates state = static_cast<FileStates>(extraData.toInt()); const FileStates state = static_cast<FileStates>(extraData.toInt());
if (state & (UnmergedFile | UnmergedThem | UnmergedUs)) if (state & (UnmergedFile | UnmergedThem | UnmergedUs))
return SubmitFileModel::FileUnmerged; return SubmitFileModel::FileUnmerged;

View File

@@ -9,9 +9,8 @@
#include <coreplugin/idocument.h> #include <coreplugin/idocument.h>
#include <vcsbase/submitfilemodel.h> #include <vcsbase/submitfilemodel.h>
#include <QDebug>
using namespace VcsBase; using namespace VcsBase;
using namespace Utils;
namespace Mercurial::Internal { namespace Mercurial::Internal {
@@ -26,7 +25,7 @@ MercurialCommitWidget *CommitEditor::commitWidget() const
return static_cast<MercurialCommitWidget *>(widget()); return static_cast<MercurialCommitWidget *>(widget());
} }
void CommitEditor::setFields(const QFileInfo &repositoryRoot, const QString &branch, void CommitEditor::setFields(const FilePath &repositoryRoot, const QString &branch,
const QString &userName, const QString &email, const QString &userName, const QString &email,
const QList<VcsBaseClient::StatusItem> &repoStatus) const QList<VcsBaseClient::StatusItem> &repoStatus)
{ {
@@ -34,7 +33,7 @@ void CommitEditor::setFields(const QFileInfo &repositoryRoot, const QString &bra
if (!mercurialWidget) if (!mercurialWidget)
return; return;
mercurialWidget->setFields(repositoryRoot.absoluteFilePath(), branch, userName, email); mercurialWidget->setFields(repositoryRoot.absoluteFilePath().toString(), branch, userName, email);
fileModel = new SubmitFileModel(this); fileModel = new SubmitFileModel(this);
fileModel->setRepositoryRoot(repositoryRoot.absoluteFilePath()); fileModel->setRepositoryRoot(repositoryRoot.absoluteFilePath());

View File

@@ -6,8 +6,6 @@
#include <vcsbase/vcsbaseclient.h> #include <vcsbase/vcsbaseclient.h>
#include <vcsbase/vcsbasesubmiteditor.h> #include <vcsbase/vcsbasesubmiteditor.h>
#include <QFileInfo>
namespace VcsBase { class SubmitFileModel; } namespace VcsBase { class SubmitFileModel; }
namespace Mercurial::Internal { namespace Mercurial::Internal {
@@ -21,7 +19,7 @@ class CommitEditor : public VcsBase::VcsBaseSubmitEditor
public: public:
CommitEditor(); CommitEditor();
void setFields(const QFileInfo &repositoryRoot, const QString &branch, void setFields(const Utils::FilePath &repositoryRoot, const QString &branch,
const QString &userName, const QString &email, const QString &userName, const QString &email,
const QList<VcsBase::VcsBaseClient::StatusItem> &repoStatus); const QList<VcsBase::VcsBaseClient::StatusItem> &repoStatus);
@@ -30,6 +28,7 @@ public:
private: private:
MercurialCommitWidget *commitWidget() const; MercurialCommitWidget *commitWidget() const;
VcsBase::SubmitFileModel *fileModel = nullptr; VcsBase::SubmitFileModel *fileModel = nullptr;
}; };

View File

@@ -634,7 +634,7 @@ void MercurialPluginPrivate::showCommitWidget(const QList<VcsBaseClient::StatusI
commitEditor->document()->setPreferredDisplayName(msg); commitEditor->document()->setPreferredDisplayName(msg);
const QString branch = vcsTopic(m_submitRepository); const QString branch = vcsTopic(m_submitRepository);
commitEditor->setFields(QFileInfo(m_submitRepository.toString()), branch, commitEditor->setFields(m_submitRepository, branch,
m_settings.userName.value(), m_settings.userName.value(),
m_settings.userEmail.value(), status); m_settings.userEmail.value(), status);
} }

View File

@@ -3,15 +3,15 @@
#include "submitfilemodel.h" #include "submitfilemodel.h"
#include <utils/fileutils.h>
#include <utils/fsengine/fileiconprovider.h> #include <utils/fsengine/fileiconprovider.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/theme/theme.h> #include <utils/theme/theme.h>
#include <QStandardItem> #include <QStandardItem>
#include <QFileInfo>
#include <QDebug> #include <QDebug>
using namespace Utils;
namespace VcsBase { namespace VcsBase {
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
@@ -22,7 +22,6 @@ enum { StateColumn = 0, FileColumn = 1 };
static QBrush fileStatusTextForeground(SubmitFileModel::FileStatusHint statusHint) static QBrush fileStatusTextForeground(SubmitFileModel::FileStatusHint statusHint)
{ {
using Utils::Theme;
Theme::Color statusTextColor = Theme::VcsBase_FileStatusUnknown_TextColor; Theme::Color statusTextColor = Theme::VcsBase_FileStatusUnknown_TextColor;
switch (statusHint) { switch (statusHint) {
case SubmitFileModel::FileStatusUnknown: case SubmitFileModel::FileStatusUnknown:
@@ -47,7 +46,7 @@ static QBrush fileStatusTextForeground(SubmitFileModel::FileStatusHint statusHin
return QBrush(Utils::creatorTheme()->color(statusTextColor)); return QBrush(Utils::creatorTheme()->color(statusTextColor));
} }
static QList<QStandardItem *> createFileRow(const QString &repositoryRoot, static QList<QStandardItem *> createFileRow(const FilePath &repositoryRoot,
const QString &fileName, const QString &fileName,
const QString &status, const QString &status,
SubmitFileModel::FileStatusHint statusHint, SubmitFileModel::FileStatusHint statusHint,
@@ -67,8 +66,7 @@ static QList<QStandardItem *> createFileRow(const QString &repositoryRoot,
// For some reason, Windows (at least) requires a valid (existing) file path to the icon, so // For some reason, Windows (at least) requires a valid (existing) file path to the icon, so
// the repository root is needed here. // the repository root is needed here.
// Note: for "overlaid" icons in Utils::FileIconProvider a valid file path is not required // Note: for "overlaid" icons in Utils::FileIconProvider a valid file path is not required
fileItem->setIcon(Utils::FileIconProvider::icon( fileItem->setIcon(FileIconProvider::icon(repositoryRoot.pathAppended(fileName)));
Utils::FilePath::fromString(repositoryRoot).pathAppended(fileName)));
const QList<QStandardItem *> row{statusItem, fileItem}; const QList<QStandardItem *> row{statusItem, fileItem};
if (statusHint != SubmitFileModel::FileStatusUnknown) { if (statusHint != SubmitFileModel::FileStatusUnknown) {
const QBrush textForeground = fileStatusTextForeground(statusHint); const QBrush textForeground = fileStatusTextForeground(statusHint);
@@ -97,12 +95,12 @@ SubmitFileModel::SubmitFileModel(QObject *parent) :
setHorizontalHeaderLabels({tr("State"), tr("File")}); setHorizontalHeaderLabels({tr("State"), tr("File")});
} }
const QString &SubmitFileModel::repositoryRoot() const const FilePath &SubmitFileModel::repositoryRoot() const
{ {
return m_repositoryRoot; return m_repositoryRoot;
} }
void SubmitFileModel::setRepositoryRoot(const QString &repoRoot) void SubmitFileModel::setRepositoryRoot(const FilePath &repoRoot)
{ {
m_repositoryRoot = repoRoot; m_repositoryRoot = repoRoot;
} }

View File

@@ -5,6 +5,8 @@
#include "vcsbase_global.h" #include "vcsbase_global.h"
#include <utils/filepath.h>
#include <QStandardItemModel> #include <QStandardItemModel>
#include <functional> #include <functional>
@@ -24,8 +26,8 @@ class VCSBASE_EXPORT SubmitFileModel : public QStandardItemModel
public: public:
explicit SubmitFileModel(QObject *parent = nullptr); explicit SubmitFileModel(QObject *parent = nullptr);
const QString &repositoryRoot() const; const Utils::FilePath &repositoryRoot() const;
void setRepositoryRoot(const QString &repoRoot); void setRepositoryRoot(const Utils::FilePath &repoRoot);
// Convenience to create and add rows containing a file plus status text. // Convenience to create and add rows containing a file plus status text.
QList<QStandardItem *> addFile(const QString &fileName, const QString &status = QString(), QList<QStandardItem *> addFile(const QString &fileName, const QString &status = QString(),
@@ -67,7 +69,7 @@ public:
void setFileStatusQualifier(FileStatusQualifier &&func); void setFileStatusQualifier(FileStatusQualifier &&func);
private: private:
QString m_repositoryRoot; Utils::FilePath m_repositoryRoot;
FileStatusQualifier m_fileStatusQualifier; FileStatusQualifier m_fileStatusQualifier;
}; };

View File

@@ -328,9 +328,9 @@ Core::IDocument *VcsBaseSubmitEditor::document() const
return &d->m_file; return &d->m_file;
} }
QString VcsBaseSubmitEditor::checkScriptWorkingDirectory() const FilePath VcsBaseSubmitEditor::checkScriptWorkingDirectory() const
{ {
return d->m_checkScriptWorkingDirectory.toString(); return d->m_checkScriptWorkingDirectory;
} }
void VcsBaseSubmitEditor::setCheckScriptWorkingDirectory(const FilePath &s) void VcsBaseSubmitEditor::setCheckScriptWorkingDirectory(const FilePath &s)
@@ -380,8 +380,7 @@ static QSet<FilePath> filesFromModel(SubmitFileModel *model)
QSet<FilePath> result; QSet<FilePath> result;
result.reserve(model->rowCount()); result.reserve(model->rowCount());
for (int row = 0; row < model->rowCount(); ++row) { for (int row = 0; row < model->rowCount(); ++row) {
result.insert(FilePath::fromString( result.insert(model->repositoryRoot().resolvePath(model->file(row)).absoluteFilePath());
QFileInfo(model->repositoryRoot(), model->file(row)).absoluteFilePath()));
} }
return result; return result;
} }
@@ -628,13 +627,12 @@ QIcon VcsBaseSubmitEditor::submitIcon()
// Reduce a list of untracked files reported by a VCS down to the files // Reduce a list of untracked files reported by a VCS down to the files
// that are actually part of the current project(s). // that are actually part of the current project(s).
void VcsBaseSubmitEditor::filterUntrackedFilesOfProject(const QString &repositoryDirectory, void VcsBaseSubmitEditor::filterUntrackedFilesOfProject(const FilePath &repositoryDirectory,
QStringList *untrackedFiles) QStringList *untrackedFiles)
{ {
const QDir repoDir(repositoryDirectory);
for (QStringList::iterator it = untrackedFiles->begin(); it != untrackedFiles->end(); ) { for (QStringList::iterator it = untrackedFiles->begin(); it != untrackedFiles->end(); ) {
const QString path = repoDir.absoluteFilePath(*it); const FilePath path = repositoryDirectory.resolvePath(*it).absoluteFilePath();
if (ProjectExplorer::SessionManager::projectForFile(FilePath::fromString(path))) if (ProjectExplorer::SessionManager::projectForFile(path))
++it; ++it;
else else
it = untrackedFiles->erase(it); it = untrackedFiles->erase(it);

View File

@@ -63,7 +63,7 @@ public:
int lineWrapWidth() const; int lineWrapWidth() const;
void setLineWrapWidth(int); void setLineWrapWidth(int);
QString checkScriptWorkingDirectory() const; Utils::FilePath checkScriptWorkingDirectory() const;
void setCheckScriptWorkingDirectory(const Utils::FilePath &); void setCheckScriptWorkingDirectory(const Utils::FilePath &);
Core::IDocument *document() const override; Core::IDocument *document() const override;
@@ -83,7 +83,8 @@ public:
// Reduce a list of untracked files reported by a VCS down to the files // Reduce a list of untracked files reported by a VCS down to the files
// that are actually part of the current project(s). // that are actually part of the current project(s).
static void filterUntrackedFilesOfProject(const QString &repositoryDirectory, QStringList *untrackedFiles); static void filterUntrackedFilesOfProject(const Utils::FilePath &repositoryDirectory,
QStringList *untrackedFiles);
signals: signals:
void diffSelectedFiles(const QStringList &files); void diffSelectedFiles(const QStringList &files);