Make message list more consistent when unread-msgs-only feature is active.

This commit is contained in:
Martin Rotter 2020-06-16 07:49:09 +02:00
parent 8bc36ccbd2
commit 0eb8d75608
8 changed files with 13 additions and 22 deletions

View File

@ -37,8 +37,6 @@ class FeedDownloader : public QObject {
Q_OBJECT
public:
// Constructors and destructors.
explicit FeedDownloader();
virtual ~FeedDownloader();

View File

@ -267,7 +267,3 @@ QModelIndexList FeedsProxyModel::mapListToSource(const QModelIndexList& indexes)
return source_indexes;
}
void FeedsProxyModel::invalidateFilter() {
QSortFilterProxyModel::invalidateFilter();
}

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -171,10 +171,10 @@ void FeedMessageViewer::toggleShowOnlyUnreadMessages() {
const QAction* origin = qobject_cast<QAction*>(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());
}
}

View File

@ -35,6 +35,7 @@
#include <QProcess>
#include <QScrollBar>
#include <QTimer>
#include <QTimer>
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())

View File

@ -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();