From 64673ef1f9936eb9b25fafb860852ca4c347d2fd Mon Sep 17 00:00:00 2001 From: Arno Date: Mon, 3 Dec 2018 05:52:45 +0100 Subject: 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. --- mappingeditwidget.cpp | 9 +++++++++ mappingeditwidget.h | 1 + mappingtreemodel.cpp | 16 ++++++++++++++++ mappingtreemodel.h | 1 + 4 files changed, 27 insertions(+) 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 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 MappingTreeModel::siblingMappingDataFromId(int id){ + QSqlQuery q(mDb); + QList 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 siblingMappingDataFromId(int id); const QSqlError &lastError() const { return mLastError; } public slots: -- cgit v1.2.3-70-g09d2