Unify logic in recalculating all/unread msgs count and notifying model of count changes.

This commit is contained in:
Martin Rotter 2020-10-19 20:18:37 +02:00
parent cf0096ebad
commit 432f63a062
3 changed files with 11 additions and 45 deletions

View file

@ -45,7 +45,7 @@ bool ImportantNode::cleanMessages(bool clean_read_only) {
if (DatabaseQueries::cleanImportantMessages(database, clean_read_only, service->accountId())) {
service->updateCounts(true);
service->itemChanged(getSubTree());
service->itemChanged(service->getSubTree());
service->requestReloadMessageList(true);
return true;
}
@ -65,8 +65,8 @@ bool ImportantNode::markAsReadUnread(RootItem::ReadStatus status) {
QSqlDatabase database = qApp->database()->connection(metaObject()->className());
if (DatabaseQueries::markImportantMessagesReadUnread(database, service->accountId(), status)) {
service->updateCounts(true);
service->itemChanged(getSubTree());
service->updateCounts(false);
service->itemChanged(service->getSubTree());
service->requestReloadMessageList(status == RootItem::ReadStatus::Read);
return true;
}

View file

@ -153,8 +153,8 @@ bool Label::markAsReadUnread(RootItem::ReadStatus status) {
QSqlDatabase database = qApp->database()->connection(metaObject()->className());
if (DatabaseQueries::markLabelledMessagesReadUnread(database, this, status)) {
service->updateCounts(true);
service->itemChanged(getSubTree());
service->updateCounts(false);
service->itemChanged(service->getSubTree());
service->requestReloadMessageList(status == RootItem::ReadStatus::Read);
return true;
}

View file

@ -176,30 +176,9 @@ bool ServiceRoot::cleanFeeds(QList<Feed*> items, bool clean_read_only) {
QSqlDatabase database = qApp->database()->connection(metaObject()->className());
if (DatabaseQueries::cleanFeeds(database, textualFeedIds(items), clean_read_only, accountId())) {
// Messages are cleared, now inform model about need to reload data.
QList<RootItem*> itemss;
for (Feed* feed : items) {
feed->updateCounts(true);
itemss.append(feed);
}
RecycleBin* bin = recycleBin();
if (bin != nullptr) {
bin->updateCounts(true);
itemss.append(bin);
}
ImportantNode* imp = importantNode();
if (imp != nullptr) {
imp->updateCounts(true);
itemss << imp;
}
itemChanged(itemss);
requestReloadMessageList(true);
getParentServiceRoot()->updateCounts(true);
getParentServiceRoot()->itemChanged(getParentServiceRoot()->getSubTree());
getParentServiceRoot()->requestReloadMessageList(true);
return true;
}
else {
@ -459,22 +438,9 @@ bool ServiceRoot::markFeedsReadUnread(QList<Feed*> items, RootItem::ReadStatus r
QSqlDatabase database = qApp->database()->connection(metaObject()->className());
if (DatabaseQueries::markFeedsReadUnread(database, textualFeedIds(items), accountId(), read)) {
QList<RootItem*> itemss;
for (Feed* feed : items) {
feed->updateCounts(false);
itemss.append(feed);
}
ImportantNode* imp = importantNode();
if (imp != nullptr) {
imp->updateCounts(true);
itemss << imp;
}
itemChanged(itemss);
requestReloadMessageList(read == RootItem::ReadStatus::Read);
getParentServiceRoot()->updateCounts(false);
getParentServiceRoot()->itemChanged(getParentServiceRoot()->getSubTree());
getParentServiceRoot()->requestReloadMessageList(read == RootItem::ReadStatus::Read);
return true;
}
else {