summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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: