C++: introduce the unique ProjectPart::id()

And change the code-model inspector dialog to use them in the
ProjectParts tab to sync the master/details view, and in the
CppPreProcessorDialog to save/reload the selected part.

Change-Id: I7cc8ac1c21d31122f8650985d0b85177ebabdfb8
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
This commit is contained in:
Erik Verbruggen
2014-08-21 15:22:08 +02:00
committed by Nikolai Kosjar
parent eedd47657f
commit 8b2cff4b8b
4 changed files with 17 additions and 9 deletions

View File

@@ -954,7 +954,7 @@ public:
const ProjectPart::Ptr &currentEditorsProjectPart);
QModelIndex indexForCurrentEditorsProjectPart() const;
ProjectPart::Ptr projectPartForProjectFile(const QString &projectFilePath) const;
ProjectPart::Ptr projectPartForProjectId(const QString &projectPartId) const;
enum Columns { PartNameColumn, PartFilePathColumn, ColumnCount };
@@ -997,10 +997,10 @@ QModelIndex ProjectPartsModel::indexForCurrentEditorsProjectPart() const
return createIndex(m_currentEditorsProjectPartIndex, PartFilePathColumn);
}
ProjectPart::Ptr ProjectPartsModel::projectPartForProjectFile(const QString &projectFilePath) const
ProjectPart::Ptr ProjectPartsModel::projectPartForProjectId(const QString &projectPartId) const
{
foreach (const ProjectPart::Ptr &part, m_projectPartsList) {
if (part->projectFile == projectFilePath)
if (part->id() == projectPartId)
return part;
}
return ProjectPart::Ptr();
@@ -1025,6 +1025,8 @@ QVariant ProjectPartsModel::data(const QModelIndex &index, int role) const
return m_projectPartsList.at(row)->displayName;
else if (column == PartFilePathColumn)
return QDir::toNativeSeparators(m_projectPartsList.at(row)->projectFile);
} else if (role == Qt::UserRole) {
return m_projectPartsList.at(row)->id();
}
return QVariant();
}
@@ -1307,9 +1309,8 @@ void CppCodeModelInspectorDialog::onProjectPartSelected(const QModelIndex &curre
QModelIndex index = m_proxyProjectPartsModel->mapToSource(current);
if (index.isValid()) {
index = m_projectPartsModel->index(index.row(), ProjectPartsModel::PartFilePathColumn);
const QString projectFilePath = QDir::fromNativeSeparators(
m_projectPartsModel->data(index, Qt::DisplayRole).toString());
updateProjectPartData(m_projectPartsModel->projectPartForProjectFile(projectFilePath));
const QString projectPartId = m_projectPartsModel->data(index, Qt::UserRole).toString();
updateProjectPartData(m_projectPartsModel->projectPartForProjectId(projectPartId));
}
} else {
clearProjectPartData();