summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2016-03-30 06:07:22 +0200
committerArno <arno@disconnect.de>2016-03-30 06:07:22 +0200
commit2e4e94a52824d2f85af739644461fdc184aed93d (patch)
tree1a76defe963bd3fe11df836d45f9523257ed5599
parent9f6d01e50f1f1d31e59fc407c852e4c69090d3b0 (diff)
downloadSheMov-2e4e94a52824d2f85af739644461fdc184aed93d.tar.gz
SheMov-2e4e94a52824d2f85af739644461fdc184aed93d.tar.bz2
SheMov-2e4e94a52824d2f85af739644461fdc184aed93d.zip
Save mappings from slide dialog
Also fix a long standing bug in MappingTreeModel: also remove item from mCurrentData when the removed item is a parent of one of the items.
-rw-r--r--mappingtreemodel.cpp15
-rw-r--r--mappingtreewidget.cpp23
-rw-r--r--mappingtreewidget.h2
-rw-r--r--pictureviewer2.cpp2
4 files changed, 41 insertions, 1 deletions
diff --git a/mappingtreemodel.cpp b/mappingtreemodel.cpp
index 78e4802..2cf4445 100644
--- a/mappingtreemodel.cpp
+++ b/mappingtreemodel.cpp
@@ -484,7 +484,20 @@ void MappingTreeResultModel::removeItem(const QModelIndex &idx){
int row = curItem->row();
SmTreeItem *parent = curItem->parent();
parent->removeChild(row);
- mCurrentData.removeAll(rmData);
+ int count = mCurrentData.removeAll(rmData);
+ int toRemove = -1;
+ if(count == 0){
+ for(int i = 0; i < mCurrentData.count(); ++i){
+ MappingData cur = mCurrentData.at(i);
+ if(cur.parents.contains(rmData.mappingId)){
+ toRemove = i;
+ break;
+ }
+ }
+ }
+ if(toRemove > -1 && toRemove < mCurrentData.count()){
+ mCurrentData.removeAt(toRemove);
+ }
endResetModel();
}
diff --git a/mappingtreewidget.cpp b/mappingtreewidget.cpp
index 094703b..a0518d1 100644
--- a/mappingtreewidget.cpp
+++ b/mappingtreewidget.cpp
@@ -431,6 +431,29 @@ void MappingEditWidget::shiftFocusMappings(){
mMappingTree->mappingTreeView()->setFocus();
}
+void MappingEditWidget::saveMappings(QString where){
+ const QList<MappingData> mappingData = model()->mappingData();
+ QByteArray saveVal;
+ QDataStream in(&saveVal, QIODevice::WriteOnly);
+ foreach(MappingData md, mappingData){
+ in << md;
+ }
+ QSettings s;
+ s.setValue(where, saveVal);
+}
+
+void MappingEditWidget::loadMappings(QString from){
+ QSettings s;
+ QByteArray val = s.value(from).toByteArray();
+ QDataStream out(&val, QIODevice::ReadOnly);
+ MappingData md;
+ while(!out.atEnd()){
+ out >> md;
+ model()->addItem(md);
+ }
+ expandAllResults();
+}
+
MappingInputDialog::MappingInputDialog(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f){
mOk = new QPushButton(tr("Ok"));
connect(mOk, SIGNAL(clicked()), this, SLOT(accept()));
diff --git a/mappingtreewidget.h b/mappingtreewidget.h
index f23daa1..8ba066d 100644
--- a/mappingtreewidget.h
+++ b/mappingtreewidget.h
@@ -116,6 +116,8 @@ class MappingEditWidget : public QWidget {
void expandAllResults();
void shiftFocusResult();
void shiftFocusMappings();
+ void saveMappings(QString where);
+ void loadMappings(QString from);
private:
MappingTreeWidget *mMappingTree;
diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp
index 7536019..2a7a236 100644
--- a/pictureviewer2.cpp
+++ b/pictureviewer2.cpp
@@ -261,6 +261,7 @@ void PictureViewer2::readSettings(){
mSlideDlg->setDays(days);
bool shuffle = s.value("ui/pvshuffle").toBool();
mSlideDlg->setShuffle(shuffle);
+ mSlideDlg->mappingEditWidget()->loadMappings("ui/pvmappings");
}
void PictureViewer2::writeSettings(){
@@ -271,6 +272,7 @@ void PictureViewer2::writeSettings(){
s.setValue("ui/pvshuffle", mSlideDlg->shuffle());
s.setValue("ui/pvdays", mSlideDlg->days());
s.setValue("ui/pvresult", mSlideDlg->result());
+ mSlideDlg->mappingEditWidget()->saveMappings("ui/pvmappings");
}
void PictureViewer2::initActions(){