diff options
author | Arno <arno@disconnect.de> | 2018-12-03 05:52:45 +0100 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2018-12-03 05:52:45 +0100 |
commit | 64673ef1f9936eb9b25fafb860852ca4c347d2fd (patch) | |
tree | d0b92083cef1ad3606f75c6d86d1aede0f99dd71 | |
parent | f9704767ed8bc325f9224c69b2dd18f564ee5cc0 (diff) | |
download | SheMov-64673ef1f9936eb9b25fafb860852ca4c347d2fd.tar.gz SheMov-64673ef1f9936eb9b25fafb860852ca4c347d2fd.tar.bz2 SheMov-64673ef1f9936eb9b25fafb860852ca4c347d2fd.zip |
Add copyActor for new pics
If we already have an actor, get all mappings for all pics and fill the
result view. This only makes sense for actors, but should also work for
other items.
-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: |