summaryrefslogtreecommitdiffstats
path: root/archiveview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'archiveview.cpp')
-rw-r--r--archiveview.cpp52
1 files changed, 38 insertions, 14 deletions
diff --git a/archiveview.cpp b/archiveview.cpp
index 166be89..82b8703 100644
--- a/archiveview.cpp
+++ b/archiveview.cpp
@@ -50,6 +50,7 @@ ArchiveView::ArchiveView(QWidget *parent) : QWidget(parent), mConstructing(true)
// item in the list, nothing will happen otherwise!
mArchiveModel->setOrder(sortOrderName);
connect(mSortOrder, SIGNAL(currentIndexChanged(QString)), mArchiveModel, SLOT(setOrder(QString)));
+ connect(mArchiveModel, SIGNAL(collectorDone()), this, SLOT(expandedItems()));
QLabel *l1 = new QLabel(tr("Filter"));
mFilter = new QLineEdit;
@@ -87,31 +88,41 @@ int ArchiveView::currentSortOrder() const {
return mArchiveModel->availableOrdersHash().value(mSortOrder->currentText());
}
+void ArchiveView::readSettings(){
+ QSettings s;
+ QVariantList list;
+ list = s.value("archivemodel/expandedgenres").toList();
+ mExpandedItems[ArchiveModel::Genre] = list;
+ list = s.value("archivemodel/expandedactors").toList();
+ mExpandedItems[ArchiveModel::Actor] = list;
+ list = s.value("archivemodel/expandedseries").toList();
+ mExpandedItems[ArchiveModel::SeriesName] = list;
+ expandedItems();
+}
+
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);
+ s.setValue("archivemodel/expandedgenres", mExpandedItems.value(ArchiveModel::Genre));
+ s.setValue("archivemodel/expandedactors", mExpandedItems.value(ArchiveModel::Actor));
+ s.setValue("archivemodel/expandedseries", mExpandedItems.value(ArchiveModel::SeriesName));
+
}
void ArchiveView::refreshArchive(){
writeSettings();
mArchiveModel->refresh();
+ expandedItems();
}
-void ArchiveView::setExpanded(){
- QSettings s;
- QVariantList expanded = s.value("archivemodel/expandeditems").toList();
- foreach(QVariant pathList, expanded){
- QStringList path = pathList.toStringList();
+void ArchiveView::expandedItems(){
+ QVariantList list = mExpandedItems.value(currentSortOrder());
+ foreach(QVariant p, list){
+ QStringList path = p.toStringList();
QModelIndexList expand = mArchiveModel->pathToIndex(path);
foreach(QModelIndex idx, expand){
- mTree->expand(mProxy->mapFromSource(idx));
+ mTree->setExpanded(mProxy->mapFromSource(idx), true);
}
}
}
@@ -133,11 +144,24 @@ void ArchiveView::showDatabaseError(const QString &errorMsg){
}
void ArchiveView::expandItem(const QModelIndex &idx){
- mExpandedItems << QPersistentModelIndex(idx);
+ QModelIndex realIdx = mProxy->mapToSource(idx);
+ if(realIdx.isValid()){
+ QStringList path = mArchiveModel->indexToPath(realIdx);
+ QVariantList list = mExpandedItems.value(currentSortOrder());
+ if(!list.contains(path)){
+ list << mArchiveModel->indexToPath(realIdx);
+ }
+ mExpandedItems[currentSortOrder()] = list;
+ }
}
void ArchiveView::collapseItem(const QModelIndex &idx){
- mExpandedItems.removeAll(QPersistentModelIndex(idx));
+ QModelIndex realIdx = mProxy->mapToSource(idx);
+ if(realIdx.isValid()){
+ QVariantList list = mExpandedItems.value(currentSortOrder());
+ list.removeAll(mArchiveModel->indexToPath(realIdx));
+ mExpandedItems[currentSortOrder()] = list;
+ }
}
ArchiveTree::ArchiveTree(QWidget *parent) : SmTreeView(parent) {}