diff options
Diffstat (limited to 'mappingtreewidget.cpp')
-rw-r--r-- | mappingtreewidget.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/mappingtreewidget.cpp b/mappingtreewidget.cpp index d9ea7da..6108ebe 100644 --- a/mappingtreewidget.cpp +++ b/mappingtreewidget.cpp @@ -232,3 +232,55 @@ void MappingTreeView::contextMenuEvent(QContextMenuEvent *e){ ctxMenu.addActions(actions()); ctxMenu.exec(e->globalPos()); } + +MappingTreeResultView::MappingTreeResultView(QWidget *parent) : QTreeView(parent) {} + +MappingEditWidget::MappingEditWidget(QWidget *parent) : QWidget(parent){ + //the views + mMappingTree = new MappingTreeWidget; + mMappingResult = new MappingTreeResultView; + mResultModel = new MappingTreeResultModel(QStringList() << tr("Name") << tr("Id"), this); + mMappingResult->setModel(mResultModel); + mMappingResult->setAlternatingRowColors(true); + mMappingResult->setColumnHidden(1, true); + + //buttons + mAddMapping = new QPushButton(tr(">>")); + connect(mAddMapping, SIGNAL(clicked()), this, SLOT(addMapping())); + mRemoveMapping = new QPushButton(tr("<<")); + connect(mRemoveMapping, SIGNAL(clicked()), this, SLOT(removeMapping())); + + //layout + QHBoxLayout *mainLayout = new QHBoxLayout; + mainLayout->addWidget(mMappingTree); + QVBoxLayout *buttonLayout = new QVBoxLayout; + buttonLayout->addStretch(); + buttonLayout->addWidget(mAddMapping); + buttonLayout->addWidget(mRemoveMapping); + buttonLayout->addStretch(); + mainLayout->addLayout(buttonLayout); + mainLayout->addWidget(mMappingResult); + setLayout(mainLayout); +} + +QList<int> MappingEditWidget::mappingIds() const { + return mResultModel->mappingsIds(); +} + +void MappingEditWidget::addMapping(){ + MappingData selected = mMappingTree->selectedItem(); + if(selected.id == -1){ + return; + } + mResultModel->addItem(selected); + mMappingResult->expandAll(); +} + +void MappingEditWidget::removeMapping(){ + QModelIndexList sel = mMappingResult->selectionModel()->selectedRows(); + if(sel.isEmpty()){ + return; + } + QModelIndex firstIdx = sel.first(); + mResultModel->removeRows(firstIdx.row(), 1, firstIdx.parent()); +} |