summaryrefslogtreecommitdiffstats
path: root/mappingtreewidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mappingtreewidget.cpp')
-rw-r--r--mappingtreewidget.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/mappingtreewidget.cpp b/mappingtreewidget.cpp
index 6108ebe..41aa6e2 100644
--- a/mappingtreewidget.cpp
+++ b/mappingtreewidget.cpp
@@ -84,6 +84,9 @@ MappingTreeWidget::MappingTreeWidget(QWidget *parent) : QWidget(parent){
mEditChildA = new QAction(tr("Edit..."), this);
connect(mEditChildA, SIGNAL(triggered()), this, SLOT(editChild()));
mTree->addAction(mEditChildA);
+ mMoveChildA = new QAction(tr("Move..."), this);
+ connect(mMoveChildA, SIGNAL(triggered()), this, SLOT(moveChild()));
+ mTree->addAction(mMoveChildA);
//widget layout and tab order
QVBoxLayout *mainLayout = new QVBoxLayout;
@@ -216,6 +219,22 @@ void MappingTreeWidget::selectionChanged(){
emit mappingChanged(real.data(MappingTreeModel::IdRole).toInt());
}
+void MappingTreeWidget::moveChild(){
+ QString path = QInputDialog::getItem(this, tr("Move item"), tr("Move to:"), mModel->paths(), -1, false);
+ if(!path.isEmpty()){
+ QModelIndex sel = selected();
+ QModelIndex realSource = mProxy->mapToSource(sel);
+ QModelIndex dest = mModel->indexFromPath(path);
+ if(dest == realSource){
+ QMessageBox::critical(this, tr("Error"), tr("Destination cannot be the source!"));
+ return;
+ }
+ if(realSource.isValid() && dest.isValid()){
+ mModel->move(realSource, dest);
+ }
+ }
+}
+
const QModelIndex MappingTreeWidget::selected() const{
QModelIndexList sel = mTree->selectionModel()->selectedRows();
if(sel.isEmpty()){