From 0eb8d75608fab580823cf935109ed30c20838908 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Tue, 16 Jun 2020 07:49:09 +0200 Subject: [PATCH] Make message list more consistent when unread-msgs-only feature is active. --- src/librssguard/core/feeddownloader.h | 2 -- src/librssguard/core/feedsproxymodel.cpp | 4 ---- src/librssguard/core/feedsproxymodel.h | 3 --- src/librssguard/core/messagesproxymodel.cpp | 8 -------- src/librssguard/core/messagesproxymodel.h | 3 --- src/librssguard/gui/feedmessageviewer.cpp | 4 ++-- src/librssguard/gui/messagesview.cpp | 9 +++++++++ src/librssguard/gui/messagesview.h | 2 ++ 8 files changed, 13 insertions(+), 22 deletions(-) diff --git a/src/librssguard/core/feeddownloader.h b/src/librssguard/core/feeddownloader.h index 01e87a3e4..2d590d75d 100644 --- a/src/librssguard/core/feeddownloader.h +++ b/src/librssguard/core/feeddownloader.h @@ -37,8 +37,6 @@ class FeedDownloader : public QObject { Q_OBJECT public: - - // Constructors and destructors. explicit FeedDownloader(); virtual ~FeedDownloader(); diff --git a/src/librssguard/core/feedsproxymodel.cpp b/src/librssguard/core/feedsproxymodel.cpp index 985278f23..13ca58751 100644 --- a/src/librssguard/core/feedsproxymodel.cpp +++ b/src/librssguard/core/feedsproxymodel.cpp @@ -267,7 +267,3 @@ QModelIndexList FeedsProxyModel::mapListToSource(const QModelIndexList& indexes) return source_indexes; } - -void FeedsProxyModel::invalidateFilter() { - QSortFilterProxyModel::invalidateFilter(); -} diff --git a/src/librssguard/core/feedsproxymodel.h b/src/librssguard/core/feedsproxymodel.h index 9787b6059..75c5c268c 100644 --- a/src/librssguard/core/feedsproxymodel.h +++ b/src/librssguard/core/feedsproxymodel.h @@ -33,9 +33,6 @@ class FeedsProxyModel : public QSortFilterProxyModel { public slots: void invalidateReadFeedsFilter(bool set_new_value = false, bool show_unread_only = false); - private slots: - void invalidateFilter(); - signals: void expandAfterFilterIn(QModelIndex idx) const; diff --git a/src/librssguard/core/messagesproxymodel.cpp b/src/librssguard/core/messagesproxymodel.cpp index c3e010ba3..eeb290be3 100644 --- a/src/librssguard/core/messagesproxymodel.cpp +++ b/src/librssguard/core/messagesproxymodel.cpp @@ -90,14 +90,6 @@ void MessagesProxyModel::setShowUnreadOnly(bool show_unread_only) { qApp->settings()->setValue(GROUP(Messages), Messages::ShowOnlyUnreadMessages, show_unread_only); } -void MessagesProxyModel::invalidateUnreadMessagesFilter(bool set_new_value, bool show_unread_only) { - if (set_new_value) { - setShowUnreadOnly(show_unread_only); - } - - QTimer::singleShot(0, this, &MessagesProxyModel::invalidateFilter); -} - QModelIndexList MessagesProxyModel::mapListFromSource(const QModelIndexList& indexes, bool deep) const { QModelIndexList mapped_indexes; diff --git a/src/librssguard/core/messagesproxymodel.h b/src/librssguard/core/messagesproxymodel.h index 4ae345f00..8af97e4e4 100644 --- a/src/librssguard/core/messagesproxymodel.h +++ b/src/librssguard/core/messagesproxymodel.h @@ -29,9 +29,6 @@ class MessagesProxyModel : public QSortFilterProxyModel { bool showUnreadOnly() const; void setShowUnreadOnly(bool show_unread_only); - public slots: - void invalidateUnreadMessagesFilter(bool set_new_value = false, bool show_unread_only = false); - private: QModelIndex getNextUnreadItemIndex(int default_row, int max_row) const; diff --git a/src/librssguard/gui/feedmessageviewer.cpp b/src/librssguard/gui/feedmessageviewer.cpp index 132d41956..d3a86fe53 100644 --- a/src/librssguard/gui/feedmessageviewer.cpp +++ b/src/librssguard/gui/feedmessageviewer.cpp @@ -171,10 +171,10 @@ void FeedMessageViewer::toggleShowOnlyUnreadMessages() { const QAction* origin = qobject_cast(sender()); if (origin == nullptr) { - m_messagesView->model()->invalidateUnreadMessagesFilter(true, false); + m_messagesView->switchShowUnreadOnly(true, false); } else { - m_messagesView->model()->invalidateUnreadMessagesFilter(true, origin->isChecked()); + m_messagesView->switchShowUnreadOnly(true, origin->isChecked()); } } diff --git a/src/librssguard/gui/messagesview.cpp b/src/librssguard/gui/messagesview.cpp index d073a876c..6ec3d3ffc 100644 --- a/src/librssguard/gui/messagesview.cpp +++ b/src/librssguard/gui/messagesview.cpp @@ -35,6 +35,7 @@ #include #include #include +#include MessagesView::MessagesView(QWidget* parent) : QTreeView(parent), m_contextMenu(nullptr), m_columnsAdjusted(false) { m_sourceModel = qApp->feedReader()->messagesModel(); @@ -324,6 +325,14 @@ void MessagesView::loadItem(RootItem* item) { emit currentMessageRemoved(); } +void MessagesView::switchShowUnreadOnly(bool set_new_value, bool show_unread_only) { + if (set_new_value) { + m_proxyModel->setShowUnreadOnly(show_unread_only); + } + + reloadSelections(); +} + void MessagesView::openSelectedSourceMessagesExternally() { for (const QModelIndex& index : selectionModel()->selectedRows()) { QString link = m_sourceModel->messageAt(m_proxyModel->mapToSource(index).row()) diff --git a/src/librssguard/gui/messagesview.h b/src/librssguard/gui/messagesview.h index 65ecff94e..5ad2765e6 100644 --- a/src/librssguard/gui/messagesview.h +++ b/src/librssguard/gui/messagesview.h @@ -61,6 +61,8 @@ class MessagesView : public QTreeView { void searchMessages(const QString& pattern); void filterMessages(MessagesModel::MessageHighlighter filter); + void switchShowUnreadOnly(bool set_new_value = false, bool show_unread_only = false); + private slots: void openSelectedMessagesWithExternalTool();