From d73a297c2daed1b70625d19a70cee48db192956f Mon Sep 17 00:00:00 2001 From: Arno Date: Tue, 8 Jul 2014 11:26:39 +0200 Subject: Fix MappingTreeResultModel for good removeRows and insertRows is buggy. Unfortunately I can't figure out how... So make it easy and reset the model on inserts and removals. --- mappingtreemodel.cpp | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) (limited to 'mappingtreemodel.cpp') diff --git a/mappingtreemodel.cpp b/mappingtreemodel.cpp index cb981d0..64de32f 100644 --- a/mappingtreemodel.cpp +++ b/mappingtreemodel.cpp @@ -426,6 +426,7 @@ void MappingTreeResultModel::addItem(const MappingData &data){ MappingTreeModel *mapModel = qobject_cast(SmGlobals::instance()->model("MappingTree")); QModelIndex curIdx = QModelIndex(); int curId = -1; + beginResetModel(); while(!pPath.isEmpty()){ curId = pPath.last(); curPath << curId; @@ -450,16 +451,26 @@ void MappingTreeResultModel::addItem(const MappingData &data){ row = i; } } - insertRows(row, 1, lastIdx); - QModelIndex newIdx = index(row, 0, lastIdx); - setData(newIdx, curName, NameRole); - setData(newIdx, sourceIdx.data(MappingTreeModel::MappingIdRole), MappingIdRole); - setData(newIdx, sourceIdx.data(MappingTreeModel::DescIdRole), DescIdRole); - setData(newIdx, sourceIdx.data(MappingTreeModel::MappingParentIdRole), ParentIdRole); - setData(newIdx, sourceIdx.data(MappingTreeModel::DescIdRole), DescIdRole); - curIdx = newIdx; + QVariantList data; + data << curName << sourceIdx.data(MappingTreeModel::MappingIdRole) << sourceIdx.data(MappingTreeModel::MappingParentIdRole) << sourceIdx.data(MappingTreeModel::DescIdRole); + SmTreeItem *newItem = new SmTreeItem(data, pItem); + pItem->insertChild(row, newItem); + curIdx = createIndex(row, 0, newItem); } } + endResetModel(); +} + +void MappingTreeResultModel::removeItem(const QModelIndex &idx){ + if(!idx.isValid()){ + return; + } + beginResetModel(); + SmTreeItem *curItem = static_cast(idx.internalPointer()); + int row = curItem->row(); + SmTreeItem *parent = curItem->parent(); + parent->removeChild(row); + endResetModel(); } QList MappingTreeResultModel::columnValues(int column) const { -- cgit v1.2.3-70-g09d2