summaryrefslogtreecommitdiffstats
path: root/archiveview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'archiveview.cpp')
-rw-r--r--archiveview.cpp29
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) {