Feed count changes signal occurrences optimized.

This commit is contained in:
Martin Rotter 2013-12-18 09:06:53 +01:00
parent 607a53adc5
commit cea66b2c1d
3 changed files with 15 additions and 2 deletions

View file

@ -239,6 +239,7 @@ bool MessagesModel::setMessageRead(int row_index, int read) {
// can reflect. // can reflect.
emit dataChanged(index(row_index, 0), emit dataChanged(index(row_index, 0),
index(row_index, columnCount() - 1)); index(row_index, columnCount() - 1));
emit feedCountsChanged();
return true; return true;
} }
else { else {
@ -409,6 +410,8 @@ bool MessagesModel::setBatchMessagesRead(const QModelIndexList &messages, int re
// FULLY reload the model if underlying data is changed. // FULLY reload the model if underlying data is changed.
select(); select();
fetchAll(); fetchAll();
emit feedCountsChanged();
return true; return true;
} }
else { else {
@ -453,6 +456,8 @@ bool MessagesModel::setAllMessagesRead(int read) {
// FULLY reload the model if underlying data is changed. // FULLY reload the model if underlying data is changed.
select(); select();
fetchAll(); fetchAll();
emit feedCountsChanged();
return true; return true;
} }
else { else {

View file

@ -83,6 +83,11 @@ class MessagesModel : public QSqlTableModel {
// Loads messages of given feeds. // Loads messages of given feeds.
void loadMessages(const QList<int> feed_ids); void loadMessages(const QList<int> feed_ids);
signals:
// Emitted if some persistent change is made which affects
// count of "unread/all" messages.
void feedCountsChanged();
protected: protected:
QStringList textualFeeds() const; QStringList textualFeeds() const;

View file

@ -6,9 +6,9 @@
#include <QProcess> #include <QProcess>
#include "gui/messagesview.h" #include "gui/messagesview.h"
#include "gui/formmain.h"
#include "core/messagesproxymodel.h" #include "core/messagesproxymodel.h"
#include "core/messagesmodel.h" #include "core/messagesmodel.h"
#include "gui/formmain.h"
#include "core/settings.h" #include "core/settings.h"
@ -17,6 +17,10 @@ MessagesView::MessagesView(QWidget *parent)
m_proxyModel = new MessagesProxyModel(this); m_proxyModel = new MessagesProxyModel(this);
m_sourceModel = m_proxyModel->sourceModel(); m_sourceModel = m_proxyModel->sourceModel();
// Forward count changes to the view.
connect(m_sourceModel, SIGNAL(feedCountsChanged()),
this, SIGNAL(feedCountsChanged()));
setModel(m_proxyModel); setModel(m_proxyModel);
// NOTE: It is recommended to call this after the model is set // NOTE: It is recommended to call this after the model is set
@ -170,7 +174,6 @@ void MessagesView::currentChanged(const QModelIndex &current,
} }
emit currentMessageChanged(m_sourceModel->messageAt(mapped_current_index.row())); emit currentMessageChanged(m_sourceModel->messageAt(mapped_current_index.row()));
emit feedCountsChanged();
} }
else { else {
emit currentMessageRemoved(); emit currentMessageRemoved();