diff --git a/src/core/messagesmodel.cpp b/src/core/messagesmodel.cpp index 5b15623ef..e359424a8 100644 --- a/src/core/messagesmodel.cpp +++ b/src/core/messagesmodel.cpp @@ -239,6 +239,7 @@ bool MessagesModel::setMessageRead(int row_index, int read) { // can reflect. emit dataChanged(index(row_index, 0), index(row_index, columnCount() - 1)); + emit feedCountsChanged(); return true; } else { @@ -409,6 +410,8 @@ bool MessagesModel::setBatchMessagesRead(const QModelIndexList &messages, int re // FULLY reload the model if underlying data is changed. select(); fetchAll(); + + emit feedCountsChanged(); return true; } else { @@ -453,6 +456,8 @@ bool MessagesModel::setAllMessagesRead(int read) { // FULLY reload the model if underlying data is changed. select(); fetchAll(); + + emit feedCountsChanged(); return true; } else { diff --git a/src/core/messagesmodel.h b/src/core/messagesmodel.h index 6e7ab4751..3e7c1669e 100644 --- a/src/core/messagesmodel.h +++ b/src/core/messagesmodel.h @@ -83,6 +83,11 @@ class MessagesModel : public QSqlTableModel { // Loads messages of given feeds. void loadMessages(const QList feed_ids); + signals: + // Emitted if some persistent change is made which affects + // count of "unread/all" messages. + void feedCountsChanged(); + protected: QStringList textualFeeds() const; diff --git a/src/gui/messagesview.cpp b/src/gui/messagesview.cpp index acc360edd..fadbc7656 100644 --- a/src/gui/messagesview.cpp +++ b/src/gui/messagesview.cpp @@ -6,9 +6,9 @@ #include #include "gui/messagesview.h" +#include "gui/formmain.h" #include "core/messagesproxymodel.h" #include "core/messagesmodel.h" -#include "gui/formmain.h" #include "core/settings.h" @@ -17,6 +17,10 @@ MessagesView::MessagesView(QWidget *parent) m_proxyModel = new MessagesProxyModel(this); m_sourceModel = m_proxyModel->sourceModel(); + // Forward count changes to the view. + connect(m_sourceModel, SIGNAL(feedCountsChanged()), + this, SIGNAL(feedCountsChanged())); + setModel(m_proxyModel); // NOTE: It is recommended to call this after the model is set @@ -170,7 +174,6 @@ void MessagesView::currentChanged(const QModelIndex ¤t, } emit currentMessageChanged(m_sourceModel->messageAt(mapped_current_index.row())); - emit feedCountsChanged(); } else { emit currentMessageRemoved();