Unify logic in recalculating all/unread msgs count and notifying model of count changes.
This commit is contained in:
parent
cf0096ebad
commit
432f63a062
3 changed files with 11 additions and 45 deletions
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Add table
Reference in a new issue