From 011f0979c3e5c20ea8aaf316f78b8ec7d12454d6 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Sat, 30 Apr 2016 15:05:14 +0200 Subject: [PATCH] WOrk on correct expand after filtered in. --- src/core/feedsproxymodel.cpp | 5 ++++- src/core/feedsproxymodel.h | 2 +- src/gui/feedsview.cpp | 5 ++++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/core/feedsproxymodel.cpp b/src/core/feedsproxymodel.cpp index f378b9aee..9bb78f700 100755 --- a/src/core/feedsproxymodel.cpp +++ b/src/core/feedsproxymodel.cpp @@ -188,12 +188,15 @@ bool FeedsProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source if (should_show && m_hiddenIndices.contains(QPair(source_row, source_parent))) { // TODO: dodělat - m_hiddenIndices.removeAll(QPair(source_row, source_parent)); + const_cast(this)->m_hiddenIndices.removeAll(QPair(source_row, source_parent)); // Load status. emit expandAfterFilterIn(m_sourceModel->index(source_row, 0, source_parent)); } + if (!should_show) { + const_cast(this)->m_hiddenIndices.append(QPair(source_row, source_parent)); + } return should_show; } diff --git a/src/core/feedsproxymodel.h b/src/core/feedsproxymodel.h index 78268adcf..80da25a66 100755 --- a/src/core/feedsproxymodel.h +++ b/src/core/feedsproxymodel.h @@ -57,7 +57,7 @@ class FeedsProxyModel : public QSortFilterProxyModel { void invalidateFilter(); signals: - void expandAfterFilterIn(const QModelIndex &idx); + void expandAfterFilterIn(QModelIndex idx) const; private: // Compares two rows of data. diff --git a/src/gui/feedsview.cpp b/src/gui/feedsview.cpp index 382004595..61166dfe8 100755 --- a/src/gui/feedsview.cpp +++ b/src/gui/feedsview.cpp @@ -61,7 +61,10 @@ FeedsView::FeedsView(QWidget *parent) connect(header(), SIGNAL(sortIndicatorChanged(int,Qt::SortOrder)), this, SLOT(saveSortState(int,Qt::SortOrder))); connect(m_proxyModel, &FeedsProxyModel::expandAfterFilterIn, [=](const QModelIndex &idx) { - + QTimer::singleShot(100, this, [=] { + // TODO: Z nastavení. + setExpanded(m_proxyModel->mapFromSource(idx), true); + }); }); setModel(m_proxyModel);