summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2018-12-03 05:52:45 +0100
committerArno <arno@disconnect.de>2018-12-03 05:52:45 +0100
commit64673ef1f9936eb9b25fafb860852ca4c347d2fd (patch)
treed0b92083cef1ad3606f75c6d86d1aede0f99dd71
parentf9704767ed8bc325f9224c69b2dd18f564ee5cc0 (diff)
downloadSheMov-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.cpp9
-rw-r--r--mappingeditwidget.h1
-rw-r--r--mappingtreemodel.cpp16
-rw-r--r--mappingtreemodel.h1
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 &current, 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 &current, 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: