summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mappingtreemodel.cpp27
-rw-r--r--mappingtreemodel.h1
-rw-r--r--mappingtreewidget.cpp5
3 files changed, 22 insertions, 11 deletions
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<MappingTreeModel*>(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<SmTreeItem*>(idx.internalPointer());
+ int row = curItem->row();
+ SmTreeItem *parent = curItem->parent();
+ parent->removeChild(row);
+ endResetModel();
}
QList<QVariant> MappingTreeResultModel::columnValues(int column) const {
diff --git a/mappingtreemodel.h b/mappingtreemodel.h
index a730aaa..1b5f3ea 100644
--- a/mappingtreemodel.h
+++ b/mappingtreemodel.h
@@ -90,6 +90,7 @@ class MappingTreeResultModel : public SmTreeModel {
public slots:
void addItem(const MappingData &data);
+ void removeItem(const QModelIndex &idx);
private:
int hasChild(SmTreeItem *item, const QVariant &name, int column = 0) const;
diff --git a/mappingtreewidget.cpp b/mappingtreewidget.cpp
index b56dd48..6497cbd 100644
--- a/mappingtreewidget.cpp
+++ b/mappingtreewidget.cpp
@@ -331,10 +331,9 @@ void MappingEditWidget::removeMapping(){
}
QModelIndex firstIdx = sel.first();
if(firstIdx.isValid()){
- int row = firstIdx.row();
- QModelIndex p = firstIdx.parent();
- mResultModel->removeRows(row, 1, p);
+ mResultModel->removeItem(firstIdx);
}
+ mMappingResult->expandAll();
}
void MappingEditWidget::setMappings(const QList<MappingData> &mappings){