Make message list more consistent when unread-msgs-only feature is active.
This commit is contained in:
parent
8bc36ccbd2
commit
0eb8d75608
8 changed files with 13 additions and 22 deletions
|
@ -37,8 +37,6 @@ class FeedDownloader : public QObject {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
// Constructors and destructors.
|
|
||||||
explicit FeedDownloader();
|
explicit FeedDownloader();
|
||||||
virtual ~FeedDownloader();
|
virtual ~FeedDownloader();
|
||||||
|
|
||||||
|
|
|
@ -267,7 +267,3 @@ QModelIndexList FeedsProxyModel::mapListToSource(const QModelIndexList& indexes)
|
||||||
|
|
||||||
return source_indexes;
|
return source_indexes;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FeedsProxyModel::invalidateFilter() {
|
|
||||||
QSortFilterProxyModel::invalidateFilter();
|
|
||||||
}
|
|
||||||
|
|
|
@ -33,9 +33,6 @@ class FeedsProxyModel : public QSortFilterProxyModel {
|
||||||
public slots:
|
public slots:
|
||||||
void invalidateReadFeedsFilter(bool set_new_value = false, bool show_unread_only = false);
|
void invalidateReadFeedsFilter(bool set_new_value = false, bool show_unread_only = false);
|
||||||
|
|
||||||
private slots:
|
|
||||||
void invalidateFilter();
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void expandAfterFilterIn(QModelIndex idx) const;
|
void expandAfterFilterIn(QModelIndex idx) const;
|
||||||
|
|
||||||
|
|
|
@ -90,14 +90,6 @@ void MessagesProxyModel::setShowUnreadOnly(bool show_unread_only) {
|
||||||
qApp->settings()->setValue(GROUP(Messages), Messages::ShowOnlyUnreadMessages, 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 MessagesProxyModel::mapListFromSource(const QModelIndexList& indexes, bool deep) const {
|
||||||
QModelIndexList mapped_indexes;
|
QModelIndexList mapped_indexes;
|
||||||
|
|
||||||
|
|
|
@ -29,9 +29,6 @@ class MessagesProxyModel : public QSortFilterProxyModel {
|
||||||
bool showUnreadOnly() const;
|
bool showUnreadOnly() const;
|
||||||
void setShowUnreadOnly(bool show_unread_only);
|
void setShowUnreadOnly(bool show_unread_only);
|
||||||
|
|
||||||
public slots:
|
|
||||||
void invalidateUnreadMessagesFilter(bool set_new_value = false, bool show_unread_only = false);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QModelIndex getNextUnreadItemIndex(int default_row, int max_row) const;
|
QModelIndex getNextUnreadItemIndex(int default_row, int max_row) const;
|
||||||
|
|
||||||
|
|
|
@ -171,10 +171,10 @@ void FeedMessageViewer::toggleShowOnlyUnreadMessages() {
|
||||||
const QAction* origin = qobject_cast<QAction*>(sender());
|
const QAction* origin = qobject_cast<QAction*>(sender());
|
||||||
|
|
||||||
if (origin == nullptr) {
|
if (origin == nullptr) {
|
||||||
m_messagesView->model()->invalidateUnreadMessagesFilter(true, false);
|
m_messagesView->switchShowUnreadOnly(true, false);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
m_messagesView->model()->invalidateUnreadMessagesFilter(true, origin->isChecked());
|
m_messagesView->switchShowUnreadOnly(true, origin->isChecked());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
#include <QProcess>
|
#include <QProcess>
|
||||||
#include <QScrollBar>
|
#include <QScrollBar>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
#include <QTimer>
|
||||||
|
|
||||||
MessagesView::MessagesView(QWidget* parent) : QTreeView(parent), m_contextMenu(nullptr), m_columnsAdjusted(false) {
|
MessagesView::MessagesView(QWidget* parent) : QTreeView(parent), m_contextMenu(nullptr), m_columnsAdjusted(false) {
|
||||||
m_sourceModel = qApp->feedReader()->messagesModel();
|
m_sourceModel = qApp->feedReader()->messagesModel();
|
||||||
|
@ -324,6 +325,14 @@ void MessagesView::loadItem(RootItem* item) {
|
||||||
emit currentMessageRemoved();
|
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() {
|
void MessagesView::openSelectedSourceMessagesExternally() {
|
||||||
for (const QModelIndex& index : selectionModel()->selectedRows()) {
|
for (const QModelIndex& index : selectionModel()->selectedRows()) {
|
||||||
QString link = m_sourceModel->messageAt(m_proxyModel->mapToSource(index).row())
|
QString link = m_sourceModel->messageAt(m_proxyModel->mapToSource(index).row())
|
||||||
|
|
|
@ -61,6 +61,8 @@ class MessagesView : public QTreeView {
|
||||||
void searchMessages(const QString& pattern);
|
void searchMessages(const QString& pattern);
|
||||||
void filterMessages(MessagesModel::MessageHighlighter filter);
|
void filterMessages(MessagesModel::MessageHighlighter filter);
|
||||||
|
|
||||||
|
void switchShowUnreadOnly(bool set_new_value = false, bool show_unread_only = false);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void openSelectedMessagesWithExternalTool();
|
void openSelectedMessagesWithExternalTool();
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue