diff options
Diffstat (limited to 'archiveview.cpp')
-rw-r--r-- | archiveview.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/archiveview.cpp b/archiveview.cpp index dbc3c39..9edfd0b 100644 --- a/archiveview.cpp +++ b/archiveview.cpp @@ -39,6 +39,8 @@ ArchiveView::ArchiveView(QWidget *parent) : QWidget(parent), mConstructing(true) mTree->setColumnHidden(ArchiveModel::Subtitle, true); mTree->setColumnHidden(ArchiveModel::Count, true); mTree->resizeColumnToContents(ArchiveModel::Name); + connect(mTree, SIGNAL(expanded(QModelIndex)), this, SLOT(expandItem(QModelIndex))); + connect(mTree, SIGNAL(collapsed(QModelIndex)), this, SLOT(collapseItem(QModelIndex))); QString sortOrderName = s.value("archivemodel/sortorder", "Series Name").toString(); mSortOrder = new QComboBox; @@ -89,12 +91,30 @@ void ArchiveView::writeSettings() { QSettings s; s.setValue("archivemodel/sortorder", mSortOrder->currentText()); s.setValue("archivemodel/filter", mFilter->text()); + QVariantList expandedItems; + foreach(QPersistentModelIndex idx, mExpandedItems){ + QStringList path = mArchiveModel->indexToPath(mProxy->mapToSource(idx)); + expandedItems << path; + } + s.setValue("archivemodel/expandeditems", expandedItems); } QWidget *ArchiveView::progressDialog(){ return qobject_cast<QWidget *>(mProgress); } +void ArchiveView::setExpanded(){ + QSettings s; + QVariantList expanded = s.value("archivemodel/expandeditems").toList(); + foreach(QVariant pathList, expanded){ + QStringList path = pathList.toStringList(); + QModelIndexList expand = mArchiveModel->pathToIndex(path); + foreach(QModelIndex idx, expand){ + mTree->expand(mProxy->mapFromSource(idx)); + } + } +} + void ArchiveView::setFilter(){ QString filter = mFilter->text(); mProxy->setFilter(filter, currentSortOrder()); @@ -116,6 +136,15 @@ void ArchiveView::collectorStarted(){ void ArchiveView::collectorFinished(){ mProgress->hide(); + setExpanded(); +} + +void ArchiveView::expandItem(const QModelIndex &idx){ + mExpandedItems << QPersistentModelIndex(idx); +} + +void ArchiveView::collapseItem(const QModelIndex &idx){ + mExpandedItems.removeAll(QPersistentModelIndex(idx)); } ArchiveTree::ArchiveTree(QWidget *parent) : SmTreeView(parent) { |