From f295cfb8672d97bb5c804499bdb311a9a0d8039b Mon Sep 17 00:00:00 2001 From: Arno Date: Sun, 29 Jun 2014 09:41:30 +0200 Subject: Major rework of MappingTreeResultView + Model Well, I hope this fixes the crashes for good. String comparison for looking up the parents really wasn't a prudent thing to do... Use the ParentIds instead. --- smtreemodel.cpp | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) (limited to 'smtreemodel.cpp') diff --git a/smtreemodel.cpp b/smtreemodel.cpp index b52859c..1386179 100644 --- a/smtreemodel.cpp +++ b/smtreemodel.cpp @@ -126,17 +126,17 @@ bool SmTreeModel::setData(const QModelIndex &index, const QVariant &value, int r return true; } -QModelIndex SmTreeModel::find(const QVariant &value, int column, const QModelIndex &parent) const{ +QModelIndex SmTreeModel::find(const QVariant &value, int column, const QModelIndex &pIdx) const{ SmTreeItem *parentItem = 0; - if(!parent.isValid()){ + if(!pIdx.isValid()){ parentItem = root(); }else{ - parentItem = static_cast(parent.internalPointer()); + parentItem = static_cast(pIdx.internalPointer()); } for(int i = 0; i < parentItem->childCount(); ++i){ SmTreeItem *child = parentItem->child(i); if(child->data(column) == value){ - return index(i, column, parent); + return index(i, column, pIdx); } } return QModelIndex(); @@ -166,12 +166,12 @@ QModelIndex SmTreeModel::findRecursive(const QVariant &value, int column, const return QModelIndex(); } -bool SmTreeModel::matchRecursive(const QModelIndex &parent, const QRegExp ®ex, int column) const { - if(!parent.isValid()){ +bool SmTreeModel::matchRecursive(const QModelIndex &pIdx, const QRegExp ®ex, int column) const { + if(!pIdx.isValid()){ return false; } // first try the parent itself - QString value = parent.data().toString(); + QString value = pIdx.data().toString(); if(value.isEmpty()){ return false; } @@ -180,7 +180,7 @@ bool SmTreeModel::matchRecursive(const QModelIndex &parent, const QRegExp ®ex } // no match, check for children - SmTreeItem *item = static_cast(parent.internalPointer()); + SmTreeItem *item = static_cast(pIdx.internalPointer()); if(!item->childCount()){ //leaf, chech parents return checkParents(item, regex, column); @@ -246,15 +246,15 @@ void SmTreeModel::reparent(const QModelIndex &idx, const QModelIndex &newParent, addRow(data, pNewParent, sorted); } -bool SmTreeModel::insertRows(int row, int count, const QModelIndex &parent){ - SmTreeItem *parentItem = itemAt(parent); +bool SmTreeModel::insertRows(int row, int count, const QModelIndex &pIdx){ + SmTreeItem *parentItem = itemAt(pIdx); bool retval; if(row > parentItem->childCount()){ return false; } - beginInsertRows(parent, row, row + count - 1); + beginInsertRows(pIdx, row, row + count - 1); for(int i = row; i < row + count; ++i){ SmTreeItem *newItem = new SmTreeItem(mRootItem->columnCount(), parentItem); retval = parentItem->insertChild(i, newItem); @@ -263,15 +263,15 @@ bool SmTreeModel::insertRows(int row, int count, const QModelIndex &parent){ return retval; } -bool SmTreeModel::removeRows(int row, int count, const QModelIndex &parent){ - SmTreeItem *parentItem = itemAt(parent); +bool SmTreeModel::removeRows(int row, int count, const QModelIndex &pIdx){ + SmTreeItem *parentItem = itemAt(pIdx); bool retval; if(row > parentItem->childCount()){ return false; } - beginRemoveRows(parent, row, row + count - 1); + beginRemoveRows(pIdx, row, row + count - 1); for(int i = row + count; i > row; --i){ retval = parentItem->removeChild(i - 1); } @@ -279,12 +279,12 @@ bool SmTreeModel::removeRows(int row, int count, const QModelIndex &parent){ return retval; } -bool SmTreeModel::addRow(const QList &data, const QModelIndex &parent, bool sorted){ +bool SmTreeModel::addRow(const QList &data, const QModelIndex &pIdx, bool sorted){ if(data.count() != mRootItem->columnCount()){ return false; } - SmTreeItem *parentItem = itemAt(parent); + SmTreeItem *parentItem = itemAt(pIdx); int where = 0; if(sorted){ for(int i = 0; i < parentItem->childCount(); ++i){ @@ -295,21 +295,21 @@ bool SmTreeModel::addRow(const QList &data, const QModelIndex &parent, } } - if(insertRows(where, 1, parent)){ + if(insertRows(where, 1, pIdx)){ SmTreeItem *child = parentItem->child(where); for(int i = 0; i < data.count(); ++i){ child->setData(i, data.at(i)); } - QModelIndex start = index(parentItem->childCount() - 1, 0, parent); - QModelIndex end = index(parentItem->childCount() - 1, parentItem->columnCount() - 1, parent); + QModelIndex start = index(parentItem->childCount() - 1, 0, pIdx); + QModelIndex end = index(parentItem->childCount() - 1, parentItem->columnCount() - 1, pIdx); emit dataChanged(start, end); return true; } return false; } -bool SmTreeModel::appendRow(const QList &data, const QModelIndex &parent){ - SmTreeItem *pItem = itemAt(parent); +bool SmTreeModel::appendRow(const QList &data, const QModelIndex &pIdx){ + SmTreeItem *pItem = itemAt(pIdx); SmTreeItem *newItem = new SmTreeItem(data, pItem); beginResetModel(); pItem->appendChild(newItem); -- cgit v1.2.3-70-g09d2