diff options
author | Hugues Delorme <delorme.hugues@fougsys.fr> | 2015-03-09 17:10:25 +0100 |
---|---|---|
committer | Hugues Delorme <delorme.hugues@fougsys.fr> | 2015-03-11 13:45:16 +0000 |
commit | 20a0b97e82e306e065a421488d66adbcb9fd543a (patch) | |
tree | 7ccdfa0b6d20190ad2c4a857e7616afe9b0ec513 /src | |
parent | b1a71f7b9680df8f9e27eb6564d08c94b60796c1 (diff) | |
download | qt-creator-20a0b97e82e306e065a421488d66adbcb9fd543a.tar.gz |
Vcs: fix missing icons in SubmitFileModel
In SubmitFileModel, filetype icons are missing for not "overlaid" icons in
Core::FileIconProvider. This is fixed by ensuring valid file paths are passed
to QFileInfo. VcsBase::SubmitFileModel has now a "repositoryRoot" property
so it can constructs absolute file paths.
VcsBaseSubmitEditor::setFileModel() now relies on SubmitFileModel::repositoryRoot()
instead of passing this info as annex parameter.
Change-Id: Ie045c3a7b247a5b5d48d10aaaf67cb3fdcf9fa7e
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/bazaar/commiteditor.cpp | 3 | ||||
-rw-r--r-- | src/plugins/clearcase/clearcasesubmiteditor.cpp | 3 | ||||
-rw-r--r-- | src/plugins/git/gitsubmiteditor.cpp | 3 | ||||
-rw-r--r-- | src/plugins/mercurial/commiteditor.cpp | 6 | ||||
-rw-r--r-- | src/plugins/subversion/subversionsubmiteditor.cpp | 7 | ||||
-rw-r--r-- | src/plugins/vcsbase/submitfilemodel.cpp | 25 | ||||
-rw-r--r-- | src/plugins/vcsbase/submitfilemodel.h | 6 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcsbasesubmiteditor.cpp | 4 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcsbasesubmiteditor.h | 2 |
9 files changed, 43 insertions, 16 deletions
diff --git a/src/plugins/bazaar/commiteditor.cpp b/src/plugins/bazaar/commiteditor.cpp index 332f753949..c2372d06f1 100644 --- a/src/plugins/bazaar/commiteditor.cpp +++ b/src/plugins/bazaar/commiteditor.cpp @@ -61,8 +61,9 @@ void CommitEditor::setFields(const QString &repositoryRoot, bazaarWidget->setFields(branch, userName, email); m_fileModel = new VcsBase::SubmitFileModel(this); + m_fileModel->setRepositoryRoot(repositoryRoot); foreach (const VcsBase::VcsBaseClient::StatusItem &item, repoStatus) if (item.flags != QLatin1String("Unknown")) m_fileModel->addFile(item.file, item.flags); - setFileModel(m_fileModel, repositoryRoot); + setFileModel(m_fileModel); } diff --git a/src/plugins/clearcase/clearcasesubmiteditor.cpp b/src/plugins/clearcase/clearcasesubmiteditor.cpp index 2f36dabcaf..f4936c4cb9 100644 --- a/src/plugins/clearcase/clearcasesubmiteditor.cpp +++ b/src/plugins/clearcase/clearcasesubmiteditor.cpp @@ -58,11 +58,12 @@ void ClearCaseSubmitEditor::setStatusList(const QStringList &statusOutput) { typedef QStringList::const_iterator ConstIterator; auto model = new VcsBase::SubmitFileModel(this); + model->setRepositoryRoot(checkScriptWorkingDirectory()); const ConstIterator cend = statusOutput.constEnd(); for (ConstIterator it = statusOutput.constBegin(); it != cend; ++it) model->addFile(*it, QLatin1String("C")); - setFileModel(model, checkScriptWorkingDirectory()); + setFileModel(model); if (statusOutput.count() > 1) submitEditorWidget()->addKeep(); } diff --git a/src/plugins/git/gitsubmiteditor.cpp b/src/plugins/git/gitsubmiteditor.cpp index 298e154c87..819b9b73c6 100644 --- a/src/plugins/git/gitsubmiteditor.cpp +++ b/src/plugins/git/gitsubmiteditor.cpp @@ -174,6 +174,7 @@ void GitSubmitEditor::setCommitData(const CommitData &d) setEmptyFileListEnabled(m_commitType == AmendCommit); // Allow for just correcting the message m_model = new GitSubmitFileModel(this); + m_model->setRepositoryRoot(d.panelInfo.repository); if (!d.files.isEmpty()) { for (QList<CommitData::StateFilePair>::const_iterator it = d.files.constBegin(); it != d.files.constEnd(); ++it) { @@ -192,7 +193,7 @@ void GitSubmitEditor::setCommitData(const CommitData &d) QVariant(static_cast<int>(state))); } } - setFileModel(m_model, d.panelInfo.repository); + setFileModel(m_model); } void GitSubmitEditor::slotDiffSelected(const QList<int> &rows) diff --git a/src/plugins/mercurial/commiteditor.cpp b/src/plugins/mercurial/commiteditor.cpp index 724ce2d100..4ab9e4f5b7 100644 --- a/src/plugins/mercurial/commiteditor.cpp +++ b/src/plugins/mercurial/commiteditor.cpp @@ -64,6 +64,7 @@ void CommitEditor::setFields(const QFileInfo &repositoryRoot, const QString &bra mercurialWidget->setFields(repositoryRoot.absoluteFilePath(), branch, userName, email); fileModel = new SubmitFileModel(this); + fileModel->setRepositoryRoot(repositoryRoot.absoluteFilePath()); QStringList shouldTrack; @@ -74,8 +75,7 @@ void CommitEditor::setFields(const QFileInfo &repositoryRoot, const QString &bra fileModel->addFile(item.file, item.flags, Unchecked); } - VcsBaseSubmitEditor::filterUntrackedFilesOfProject(repositoryRoot.absoluteFilePath(), - &shouldTrack); + VcsBaseSubmitEditor::filterUntrackedFilesOfProject(fileModel->repositoryRoot(), &shouldTrack); foreach (const QString &track, shouldTrack) { foreach (const VcsBaseClient::StatusItem &item, repoStatus) { @@ -84,7 +84,7 @@ void CommitEditor::setFields(const QFileInfo &repositoryRoot, const QString &bra } } - setFileModel(fileModel, repositoryRoot.absoluteFilePath()); + setFileModel(fileModel); } QString CommitEditor::committerInfo() diff --git a/src/plugins/subversion/subversionsubmiteditor.cpp b/src/plugins/subversion/subversionsubmiteditor.cpp index 9483d720bc..21186879c8 100644 --- a/src/plugins/subversion/subversionsubmiteditor.cpp +++ b/src/plugins/subversion/subversionsubmiteditor.cpp @@ -47,13 +47,14 @@ void SubversionSubmitEditor::setStatusList(const QList<StatusFilePair> &statusOu { typedef QList<StatusFilePair>::const_iterator ConstIterator; auto model = new VcsBase::SubmitFileModel(this); + // Hack to allow completion in "description" field : completion needs a root repository, the + // checkScriptWorkingDirectory property is fine (at this point it was set by SubversionPlugin) + model->setRepositoryRoot(checkScriptWorkingDirectory()); const ConstIterator cend = statusOutput.constEnd(); for (ConstIterator it = statusOutput.constBegin(); it != cend; ++it) model->addFile(it->second, it->first); - // Hack to allow completion in "description" field : completion needs a root repository, the - // checkScriptWorkingDirectory property is fine (at this point it was set by SubversionPlugin) - setFileModel(model, this->checkScriptWorkingDirectory()); + setFileModel(model); } QByteArray SubversionSubmitEditor::fileContents() const diff --git a/src/plugins/vcsbase/submitfilemodel.cpp b/src/plugins/vcsbase/submitfilemodel.cpp index 354bd39c66..8bfbba6036 100644 --- a/src/plugins/vcsbase/submitfilemodel.cpp +++ b/src/plugins/vcsbase/submitfilemodel.cpp @@ -45,8 +45,11 @@ namespace VcsBase { enum { fileColumn = 1 }; -static QList<QStandardItem *> createFileRow(const QString &fileName, const QString &status, - CheckMode checked, const QVariant &v) +static QList<QStandardItem *> createFileRow(const QString &repositoryRoot, + const QString &fileName, + const QString &status, + CheckMode checked, + const QVariant &v) { auto statusItem = new QStandardItem(status); Qt::ItemFlags flags = Qt::ItemIsSelectable | Qt::ItemIsEnabled; @@ -58,7 +61,11 @@ static QList<QStandardItem *> createFileRow(const QString &fileName, const QStri statusItem->setData(v); auto fileItem = new QStandardItem(fileName); fileItem->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled); - fileItem->setIcon(Core::FileIconProvider::icon(fileName)); + // For some reason, Windows (at least) requires a valid (existing) file path to the icon, so + // the repository root is needed here. + // Note: for "overlaid" icons in Core::FileIconProvider a valid file path is not required + const QFileInfo fi(repositoryRoot + QLatin1Char('/') + fileName); + fileItem->setIcon(Core::FileIconProvider::icon(fi)); QList<QStandardItem *> row; row << statusItem << fileItem; return row; @@ -86,10 +93,20 @@ SubmitFileModel::SubmitFileModel(QObject *parent) : setHorizontalHeaderLabels(headerLabels); } +const QString &SubmitFileModel::repositoryRoot() const +{ + return m_repositoryRoot; +} + +void SubmitFileModel::setRepositoryRoot(const QString &repoRoot) +{ + m_repositoryRoot = repoRoot; +} + QList<QStandardItem *> SubmitFileModel::addFile(const QString &fileName, const QString &status, CheckMode checkMode, const QVariant &v) { - const QList<QStandardItem *> row = createFileRow(fileName, status, checkMode, v); + const QList<QStandardItem *> row = createFileRow(m_repositoryRoot, fileName, status, checkMode, v); appendRow(row); return row; } diff --git a/src/plugins/vcsbase/submitfilemodel.h b/src/plugins/vcsbase/submitfilemodel.h index ccb17906ba..db5bec44a2 100644 --- a/src/plugins/vcsbase/submitfilemodel.h +++ b/src/plugins/vcsbase/submitfilemodel.h @@ -50,6 +50,9 @@ class VCSBASE_EXPORT SubmitFileModel : public QStandardItemModel public: explicit SubmitFileModel(QObject *parent = 0); + const QString &repositoryRoot() const; + void setRepositoryRoot(const QString &repoRoot); + // Convenience to create and add rows containing a file plus status text. QList<QStandardItem *> addFile(const QString &fileName, const QString &status = QString(), CheckMode checkMode = Checked, const QVariant &data = QVariant()); @@ -69,6 +72,9 @@ public: unsigned int filterFiles(const QStringList &filter); virtual void updateSelections(SubmitFileModel *source); + +private: + QString m_repositoryRoot; }; } // namespace VcsBase diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp index b0610527c1..2b40ceb67e 100644 --- a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp +++ b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp @@ -432,7 +432,7 @@ QStringList VcsBaseSubmitEditor::checkedFiles() const return d->m_widget->checkedFiles(); } -void VcsBaseSubmitEditor::setFileModel(SubmitFileModel *model, const QString &repositoryDirectory) +void VcsBaseSubmitEditor::setFileModel(SubmitFileModel *model) { QTC_ASSERT(model, return); if (SubmitFileModel *oldModel = d->m_widget->fileModel()) { @@ -446,7 +446,7 @@ void VcsBaseSubmitEditor::setFileModel(SubmitFileModel *model, const QString &re // Iterate over the files and get interesting symbols for (int row = 0; row < model->rowCount(); ++row) { - const QFileInfo fileInfo(repositoryDirectory, model->file(row)); + const QFileInfo fileInfo(model->repositoryRoot(), model->file(row)); // Add file name uniqueSymbols.insert(fileInfo.fileName()); diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.h b/src/plugins/vcsbase/vcsbasesubmiteditor.h index 4adefffd3b..5bfbf38a52 100644 --- a/src/plugins/vcsbase/vcsbasesubmiteditor.h +++ b/src/plugins/vcsbase/vcsbasesubmiteditor.h @@ -121,7 +121,7 @@ public: QStringList checkedFiles() const; - void setFileModel(SubmitFileModel *m, const QString &repositoryDirectory = QString()); + void setFileModel(SubmitFileModel *m); SubmitFileModel *fileModel() const; virtual void updateFileModel() { } QStringList rowsToFiles(const QList<int> &rows) const; |