Made some improvements in total/unread counts

This commit is contained in:
Martin Rotter 2016-01-26 13:32:38 +01:00
parent 4f5be1023a
commit c911133066
6 changed files with 37 additions and 44 deletions

View File

@ -22,7 +22,8 @@
Feed::Feed(RootItem *parent) Feed::Feed(RootItem *parent)
: RootItem(parent), m_url(QString()), m_status(Normal), m_autoUpdateType(DefaultAutoUpdate), : RootItem(parent), m_url(QString()), m_status(Normal), m_autoUpdateType(DefaultAutoUpdate),
m_autoUpdateInitialInterval(DEFAULT_AUTO_UPDATE_INTERVAL), m_autoUpdateRemainingInterval(DEFAULT_AUTO_UPDATE_INTERVAL) { m_autoUpdateInitialInterval(DEFAULT_AUTO_UPDATE_INTERVAL), m_autoUpdateRemainingInterval(DEFAULT_AUTO_UPDATE_INTERVAL),
m_totalCount(0), m_unreadCount(0) {
setKind(RootItemKind::Feed); setKind(RootItemKind::Feed);
} }
@ -52,6 +53,22 @@ int Feed::autoUpdateInitialInterval() const {
return m_autoUpdateInitialInterval; return m_autoUpdateInitialInterval;
} }
int Feed::countOfAllMessages() const {
return m_totalCount;
}
int Feed::countOfUnreadMessages() const {
return m_unreadCount;
}
void Feed::setCountOfAllMessages(int count_all_messages) {
m_totalCount = count_all_messages;
}
void Feed::setCountOfUnreadMessages(int count_unread_messages) {
m_unreadCount = count_unread_messages;
}
void Feed::setAutoUpdateInitialInterval(int auto_update_interval) { void Feed::setAutoUpdateInitialInterval(int auto_update_interval) {
// If new initial auto-update interval is set, then // If new initial auto-update interval is set, then
// we should reset time that remains to the next auto-update. // we should reset time that remains to the next auto-update.

View File

@ -52,6 +52,12 @@ class Feed : public RootItem {
explicit Feed(RootItem *parent = NULL); explicit Feed(RootItem *parent = NULL);
virtual ~Feed(); virtual ~Feed();
int countOfAllMessages() const;
int countOfUnreadMessages() const;
void setCountOfAllMessages(int count_all_messages);
void setCountOfUnreadMessages(int count_unread_messages);
///////////////////////////////////////// /////////////////////////////////////////
// /* Members to override. // /* Members to override.
///////////////////////////////////////// /////////////////////////////////////////
@ -100,6 +106,8 @@ class Feed : public RootItem {
AutoUpdateType m_autoUpdateType; AutoUpdateType m_autoUpdateType;
int m_autoUpdateInitialInterval; int m_autoUpdateInitialInterval;
int m_autoUpdateRemainingInterval; int m_autoUpdateRemainingInterval;
int m_totalCount;
int m_unreadCount;
}; };
#endif // FEED_H #endif // FEED_H

View File

@ -52,8 +52,6 @@ StandardFeed::StandardFeed(RootItem *parent_item)
m_password = QString(); m_password = QString();
m_networkError = QNetworkReply::NoError; m_networkError = QNetworkReply::NoError;
m_type = Rss0X; m_type = Rss0X;
m_totalCount = 0;
m_unreadCount = 0;
m_encoding = QString(); m_encoding = QString();
} }
@ -64,10 +62,11 @@ StandardFeed::StandardFeed(const StandardFeed &other)
m_password = other.password(); m_password = other.password();
m_networkError = other.networkError(); m_networkError = other.networkError();
m_type = other.type(); m_type = other.type();
m_totalCount = other.countOfAllMessages();
m_unreadCount = other.countOfUnreadMessages();
m_encoding = other.encoding(); m_encoding = other.encoding();
setCountOfAllMessages(other.countOfAllMessages());
setCountOfUnreadMessages(other.countOfUnreadMessages());
setUrl(other.url()); setUrl(other.url());
setStatus(other.status()); setStatus(other.status());
setAutoUpdateType(other.autoUpdateType()); setAutoUpdateType(other.autoUpdateType());
@ -87,14 +86,6 @@ StandardFeed::~StandardFeed() {
qDebug("Destroying Feed instance."); qDebug("Destroying Feed instance.");
} }
int StandardFeed::countOfAllMessages() const {
return m_totalCount;
}
int StandardFeed::countOfUnreadMessages() const {
return m_unreadCount;
}
QList<QAction*> StandardFeed::contextMenu() { QList<QAction*> StandardFeed::contextMenu() {
return serviceRoot()->getContextMenuForFeed(this); return serviceRoot()->getContextMenuForFeed(this);
} }
@ -233,7 +224,7 @@ void StandardFeed::updateCounts(bool including_total_count) {
query.bindValue(QSL(":account_id"), serviceRoot()->accountId()); query.bindValue(QSL(":account_id"), serviceRoot()->accountId());
if (query.exec() && query.next()) { if (query.exec() && query.next()) {
m_totalCount = query.value(0).toInt(); setCountOfAllMessages(query.value(0).toInt());
} }
} }
@ -245,11 +236,11 @@ void StandardFeed::updateCounts(bool including_total_count) {
if (query.exec() && query.next()) { if (query.exec() && query.next()) {
int new_unread_count = query.value(0).toInt(); int new_unread_count = query.value(0).toInt();
if (status() == NewMessages && new_unread_count < m_unreadCount) { if (status() == NewMessages && new_unread_count < countOfUnreadMessages()) {
setStatus(Normal); setStatus(Normal);
} }
m_unreadCount = new_unread_count; setCountOfUnreadMessages(new_unread_count);
} }
} }

View File

@ -54,13 +54,6 @@ class StandardFeed : public Feed {
virtual ~StandardFeed(); virtual ~StandardFeed();
StandardServiceRoot *serviceRoot() const; StandardServiceRoot *serviceRoot() const;
// Getters/setters for count of messages.
// NOTE: For feeds, counts are stored internally
// and can be updated from the database.
int countOfAllMessages() const;
int countOfUnreadMessages() const;
QList<QAction*> contextMenu(); QList<QAction*> contextMenu();
bool canBeEdited() const { bool canBeEdited() const {
@ -169,9 +162,6 @@ class StandardFeed : public Feed {
Type m_type; Type m_type;
QNetworkReply::NetworkError m_networkError; QNetworkReply::NetworkError m_networkError;
int m_totalCount;
int m_unreadCount;
QString m_encoding; QString m_encoding;
}; };

View File

@ -35,10 +35,10 @@
TtRssFeed::TtRssFeed(RootItem *parent) TtRssFeed::TtRssFeed(RootItem *parent)
: Feed(parent), m_customId(NO_PARENT_CATEGORY), m_totalCount(0), m_unreadCount(0) { : Feed(parent), m_customId(NO_PARENT_CATEGORY) {
} }
TtRssFeed::TtRssFeed(const QSqlRecord &record) : Feed(NULL), m_totalCount(0), m_unreadCount(0) { TtRssFeed::TtRssFeed(const QSqlRecord &record) : Feed(NULL) {
setTitle(record.value(FDS_DB_TITLE_INDEX).toString()); setTitle(record.value(FDS_DB_TITLE_INDEX).toString());
setId(record.value(FDS_DB_ID_INDEX).toInt()); setId(record.value(FDS_DB_ID_INDEX).toInt());
setIcon(qApp->icons()->fromByteArray(record.value(FDS_DB_ICON_INDEX).toByteArray())); setIcon(qApp->icons()->fromByteArray(record.value(FDS_DB_ICON_INDEX).toByteArray()));
@ -117,7 +117,7 @@ void TtRssFeed::updateCounts(bool including_total_count) {
query_all.bindValue(QSL(":account_id"), serviceRoot()->accountId()); query_all.bindValue(QSL(":account_id"), serviceRoot()->accountId());
if (query_all.exec() && query_all.next()) { if (query_all.exec() && query_all.next()) {
m_totalCount = query_all.value(0).toInt(); setCountOfAllMessages(query_all.value(0).toInt());
} }
} }
@ -130,11 +130,11 @@ void TtRssFeed::updateCounts(bool including_total_count) {
if (query_all.exec() && query_all.next()) { if (query_all.exec() && query_all.next()) {
int new_unread_count = query_all.value(0).toInt(); int new_unread_count = query_all.value(0).toInt();
if (status() == NewMessages && new_unread_count < m_unreadCount) { if (status() == NewMessages && new_unread_count < countOfUnreadMessages()) {
setStatus(Normal); setStatus(Normal);
} }
m_unreadCount = new_unread_count; setCountOfUnreadMessages(new_unread_count);
} }
} }
@ -164,14 +164,6 @@ bool TtRssFeed::deleteViaGui() {
} }
} }
int TtRssFeed::countOfAllMessages() const {
return m_totalCount;
}
int TtRssFeed::countOfUnreadMessages() const {
return m_unreadCount;
}
int TtRssFeed::update() { int TtRssFeed::update() {
QList<Message> messages; QList<Message> messages;
int newly_added_messages = 0; int newly_added_messages = 0;

View File

@ -47,9 +47,6 @@ class TtRssFeed : public Feed {
bool canBeDeleted() const; bool canBeDeleted() const;
bool deleteViaGui(); bool deleteViaGui();
int countOfAllMessages() const;
int countOfUnreadMessages() const;
int update(); int update();
QList<Message> undeletedMessages() const; QList<Message> undeletedMessages() const;
@ -67,8 +64,6 @@ class TtRssFeed : public Feed {
int updateMessages(const QList<Message> &messages); int updateMessages(const QList<Message> &messages);
int m_customId; int m_customId;
int m_totalCount;
int m_unreadCount;
}; };
#endif // TTRSSFEED_H #endif // TTRSSFEED_H