Commit a6acd3e8 authored by hjk's avatar hjk Committed by hjk

TreeModel: Introduce a TreeItem::indexInParent() convenience function

To shorten user code and hide the ugly const_cast.

Change-Id: I798bd105932004ea17cb95b243fc38ccfcda0a2c
Reviewed-by: Christian Stenger's avatarChristian Stenger <christian.stenger@qt.io>
parent def8ca8b
......@@ -766,6 +766,11 @@ int TreeItem::level() const
return l;
}
int TreeItem::indexInParent() const
{
return m_parent ? m_parent->m_children.indexOf(const_cast<TreeItem *>(this)) : -1;
}
QModelIndex TreeItem::index() const
{
QTC_ASSERT(m_model, return QModelIndex());
......
......@@ -65,6 +65,7 @@ public:
int level() const;
int childCount() const { return m_children.size(); }
int indexInParent() const;
TreeItem *childAt(int index) const;
QVector<TreeItem *> children() const { return m_children; }
QModelIndex index() const;
......
......@@ -272,7 +272,7 @@ QVariant ExplainingStepItem::data(int column, int role) const
case ClangStaticAnalyzerDiagnosticModel::DiagnosticRole:
return QVariant::fromValue(static_cast<DiagnosticItem *>(parent())->diagnostic());
case Qt::DisplayRole: {
const int row = parent()->children().indexOf(const_cast<ExplainingStepItem *>(this)) + 1;
const int row = indexInParent() + 1;
const int padding = static_cast<int>(std::log10(parent()->childCount()))
- static_cast<int>(std::log10(row));
return QString::fromLatin1("%1%2: %3")
......
......@@ -361,7 +361,7 @@ void ProjectWindow::deregisterProject(Project *project)
void ProjectWindow::startupProjectChanged(Project *project)
{
if (ProjectItem *projectItem = itemForProject(project)) {
int index = projectItem->parent()->children().indexOf(projectItem);
int index = projectItem->indexInParent();
QTC_ASSERT(index != -1, return);
m_projectSelection->setCurrentIndex(index);
m_selectorModel->rootItem()->m_currentProjectIndex = index;
......
......@@ -278,7 +278,7 @@ QVariant FrameItem::data(int column, int role) const
case ErrorListModel::ErrorRole:
return QVariant::fromValue(getErrorItem()->error());
case Qt::DisplayRole: {
const int row = parent()->children().indexOf(const_cast<FrameItem *>(this)) + 1;
const int row = indexInParent() + 1;
const int padding = static_cast<int>(std::log10(parent()->childCount()))
- static_cast<int>(std::log10(row));
return QString::fromLatin1("%1%2: %3")
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment