diff options
-rw-r--r-- | seriestreewidget.cpp | 32 | ||||
-rw-r--r-- | seriestreewidget.h | 5 | ||||
-rw-r--r-- | shemov.cpp | 2 |
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 { @@ -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(); |