diff options
-rw-r--r-- | mappingeditwidget.cpp | 9 | ||||
-rw-r--r-- | mappingeditwidget.h | 1 | ||||
-rw-r--r-- | mappingtreemodel.cpp | 16 | ||||
-rw-r--r-- | mappingtreemodel.h | 1 |
4 files changed, 27 insertions, 0 deletions
diff --git a/mappingeditwidget.cpp b/mappingeditwidget.cpp index 936c5f1..86546c2 100644 --- a/mappingeditwidget.cpp +++ b/mappingeditwidget.cpp @@ -44,6 +44,8 @@ MappingEditWidget::MappingEditWidget(QWidget *parent) : QWidget(parent){ connect(mClearMapping, &QPushButton::clicked, this, &MappingEditWidget::clearMapping); mAddTree = new QPushButton(tr(">>>>")); connect(mAddTree, &QPushButton::clicked, this, &MappingEditWidget::addTree); + QPushButton *copyActorB = new QPushButton(tr("Copy")); + connect(copyActorB, &QPushButton::clicked, this, &MappingEditWidget::copyActor); //layout QHBoxLayout *mainLayout = new QHBoxLayout; @@ -54,6 +56,7 @@ MappingEditWidget::MappingEditWidget(QWidget *parent) : QWidget(parent){ buttonLayout->addWidget(mRemoveMapping); buttonLayout->addWidget(mClearMapping); buttonLayout->addWidget(mAddTree); + buttonLayout->addWidget(copyActorB); buttonLayout->addStretch(); mainLayout->addLayout(buttonLayout); mainLayout->addWidget(mMappingResult); @@ -167,3 +170,9 @@ void MappingEditWidget::resultSelectionChanged(const QModelIndex ¤t, const mMappingTree->mappingTreeView()->selectionModel()->select(real, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows); mMappingTree->mappingTreeView()->scrollTo(real, QAbstractItemView::PositionAtCenter); } + +void MappingEditWidget::copyActor(){ + MappingData selected = mMappingTree->selectedItem(); + QList<MappingData> data = mMappingTree->mappingTreeModel()->siblingMappingDataFromId(selected.mappingId); + setMappings(data); +} diff --git a/mappingeditwidget.h b/mappingeditwidget.h index ce5ee86..3069dcb 100644 --- a/mappingeditwidget.h +++ b/mappingeditwidget.h @@ -36,6 +36,7 @@ class MappingEditWidget : public QWidget { void saveMappings(QString where); void loadMappings(QString from); void resultSelectionChanged(const QModelIndex ¤t, const QModelIndex &previous); + void copyActor(); private: MappingTreeWidget *mMappingTree; diff --git a/mappingtreemodel.cpp b/mappingtreemodel.cpp index 2790ef7..4f253c5 100644 --- a/mappingtreemodel.cpp +++ b/mappingtreemodel.cpp @@ -231,6 +231,22 @@ MappingData MappingTreeModel::mappingDataFromIndex(QModelIndex &idx) const{ return mappingDataFromItem(item); } +QList<MappingData> MappingTreeModel::siblingMappingDataFromId(int id){ + QSqlQuery q(mDb); + QList<MappingData> retval; + q.prepare("SELECT DISTINCT(imappings_parents_id) FROM pics_mappings WHERE ipics_id IN (SELECT ipics_id FROM pics_mappings WHERE imappings_parents_id = :id)"); + q.bindValue(":id", id); + if(q.exec()){ + while(q.next()){ + QModelIndex idx = findRecursive(q.value(0), MappingId, rootIndex()); + if(idx.isValid()){ + retval << mappingDataFromIndex(idx); + } + } + } + return retval; +} + void MappingTreeModel::populate(){ if(mType == -1){ return; diff --git a/mappingtreemodel.h b/mappingtreemodel.h index bf3d583..59338a6 100644 --- a/mappingtreemodel.h +++ b/mappingtreemodel.h @@ -43,6 +43,7 @@ class MappingTreeModel : public SmTreeModel { bool deleteChild(const QModelIndex &idx); MappingData mappingDataFromIndex(QModelIndex &idx) const; MappingData mappingDataFromItem(SmTreeItem *item) const; + QList<MappingData> siblingMappingDataFromId(int id); const QSqlError &lastError() const { return mLastError; } public slots: |