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.
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 {

View File

@ -83,6 +83,11 @@ class MessagesModel : public QSqlTableModel {
// Loads messages of given feeds.
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:
QStringList textualFeeds() const;

View File

@ -6,9 +6,9 @@
#include <QProcess>
#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 &current,
}
emit currentMessageChanged(m_sourceModel->messageAt(mapped_current_index.row()));
emit feedCountsChanged();
}
else {
emit currentMessageRemoved();