diff options
author | Arno <am@disconnect.de> | 2012-03-02 20:08:40 +0100 |
---|---|---|
committer | Arno <am@disconnect.de> | 2012-03-02 20:08:40 +0100 |
commit | ee29bb41dc9c4d4dd6fc9bfd3fb9ad5cc3bd1569 (patch) | |
tree | 4801c4b23215259cec9620a32593c656fdfd8ede /mappingtreewidget.cpp | |
parent | 11bf52b6cf1c27a75715a8379e7893b8d1e16bf0 (diff) | |
download | SheMov-ee29bb41dc9c4d4dd6fc9bfd3fb9ad5cc3bd1569.tar.gz SheMov-ee29bb41dc9c4d4dd6fc9bfd3fb9ad5cc3bd1569.tar.bz2 SheMov-ee29bb41dc9c4d4dd6fc9bfd3fb9ad5cc3bd1569.zip |
Make it possible to move mappings
Move mappings by context menu. Select new parent by QComboBox with
available paths, items separated by "/". Note that hell will break loose
if a mapping name contains "/". Will be fixed later.
Since mapping views don't have setSortingEnabled(), make
SmTreeModel::addRow() sort items.
This fixes a long standing bug in SmTreeModel::reparent(): Since it
alters the model, newParent has to be a QPersistentModelIndex to stay
consistent.
Diffstat (limited to 'mappingtreewidget.cpp')
-rw-r--r-- | mappingtreewidget.cpp | 19 |
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()){ |