summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--seriestreewidget.cpp32
-rw-r--r--seriestreewidget.h5
-rw-r--r--shemov.cpp2
3 files changed, 39 insertions, 0 deletions
diff --git a/seriestreewidget.cpp b/seriestreewidget.cpp
index 9850138..9b45dcd 100644
--- a/seriestreewidget.cpp
+++ b/seriestreewidget.cpp
@@ -16,6 +16,7 @@
#include <QMenu>
#include <QAction>
#include <QMessageBox>
+#include <QSettings>
#include "seriestreewidget.h"
#include "smubermodel.h"
@@ -49,6 +50,8 @@ SeriesTreeWidget::SeriesTreeWidget(QWidget *parent) : QWidget(parent){
mView->resizeColumnToContents(0);
mView->setSelectionMode(QAbstractItemView::ExtendedSelection);
connect(mModel, SIGNAL(needResort()), this, SLOT(resort()));
+ connect(mView, SIGNAL(expanded(QModelIndex)), this, SLOT(itemExpanded(QModelIndex)));
+ connect(mView, SIGNAL(collapsed(QModelIndex)), this, SLOT(itemCollaped(QModelIndex)));
//layout
QVBoxLayout *mainLayout = new QVBoxLayout;
@@ -132,6 +135,24 @@ void SeriesTreeWidget::deleteFromSeries(){
}
}
+void SeriesTreeWidget::readSettings(){
+ QSettings s;
+ QStringList expanded = s.value("archive/expanded").toStringList();
+ foreach(QString s, expanded){
+ QModelIndex idx = mProxy->mapFromSource(mModel->findValue(s));
+ mView->expand(idx);
+ mExpandedItems << s;
+ }
+ int sortOrder = s.value("archive/sortorder", Qt::DescendingOrder).toInt();
+ mView->sortByColumn(0, static_cast<Qt::SortOrder>(sortOrder));
+}
+
+void SeriesTreeWidget::writeSettings(){
+ QSettings s;
+ s.setValue("archive/expanded", mExpandedItems);
+ s.setValue("archive/sortorder", mProxy->sortOrder());
+}
+
void SeriesTreeWidget::filter(){
mProxy->setFilterRegExp(mFilterEdit->text());
}
@@ -141,6 +162,17 @@ void SeriesTreeWidget::resort(){
mView->scrollTo(mView->selectionModel()->currentIndex(), QAbstractItemView::PositionAtCenter);
}
+void SeriesTreeWidget::itemExpanded(const QModelIndex &what){
+ mExpandedItems << what.data(SeriesTreeModel::NameRole).toString();
+}
+
+void SeriesTreeWidget::itemCollaped(const QModelIndex &what){
+ QString itemName = what.data(SeriesTreeModel::NameRole).toString();
+ if(mExpandedItems.contains(itemName)){
+ mExpandedItems.removeAll(itemName);
+ }
+}
+
SeriesTreeView::SeriesTreeView(QWidget *parent) : QTreeView(parent) {}
void SeriesTreeView::contextMenuEvent(QContextMenuEvent *e){
diff --git a/seriestreewidget.h b/seriestreewidget.h
index 38c111f..58d217b 100644
--- a/seriestreewidget.h
+++ b/seriestreewidget.h
@@ -28,10 +28,14 @@ class SeriesTreeWidget : public QWidget {
public slots:
void newSeries();
void deleteFromSeries();
+ void readSettings();
+ void writeSettings();
private slots:
void filter();
void resort();
+ void itemExpanded(const QModelIndex &);
+ void itemCollaped(const QModelIndex &);
private:
QLineEdit *mFilterEdit;
@@ -39,6 +43,7 @@ class SeriesTreeWidget : public QWidget {
SeriesTreeView *mView;
SeriesTreeSortModel *mProxy;
SeriesTreeModel *mModel;
+ QStringList mExpandedItems;
};
class SeriesTreeView : public QTreeView {
diff --git a/shemov.cpp b/shemov.cpp
index 8e5c54c..802ffc9 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -112,6 +112,7 @@ SheMov::SheMov(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, fla
setCentralWidget(centralWidget);
readSettings();
mFSWidget->readSettings();
+ mATree->seriesWidget()->readSettings();
show();
mFSWidget->fileView()->setFocus(Qt::ActiveWindowFocusReason);
}
@@ -119,6 +120,7 @@ SheMov::SheMov(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, fla
void SheMov::closeEvent(QCloseEvent *event){
mFSWidget->writeSettings();
mFSWidget->pictureViewer()->close();
+ mATree->seriesWidget()->writeSettings();
delete SmUberModelSingleton::instance();
writeSettings();
event->accept();