From a9b6ecd3512fb0cd74dc39e68e419cea48f882f3 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Thu, 8 Oct 2020 20:30:58 +0200 Subject: [PATCH] Enable labels for all accounts. --- .../services/abstract/labelsnode.cpp | 4 +++- .../services/abstract/labelsnode.h | 4 +++- .../services/abstract/serviceroot.cpp | 24 ++++++++++++++++++- .../services/abstract/serviceroot.h | 5 ++++ .../services/gmail/gmailserviceroot.cpp | 11 +++------ .../inoreader/inoreaderserviceroot.cpp | 12 +++------- .../services/owncloud/owncloudserviceroot.cpp | 12 +++------- .../services/standard/standardserviceroot.cpp | 16 ++----------- .../services/tt-rss/ttrssserviceroot.cpp | 10 ++------ 9 files changed, 47 insertions(+), 51 deletions(-) diff --git a/src/librssguard/services/abstract/labelsnode.cpp b/src/librssguard/services/abstract/labelsnode.cpp index 2ba5fc0ba..226baba5f 100755 --- a/src/librssguard/services/abstract/labelsnode.cpp +++ b/src/librssguard/services/abstract/labelsnode.cpp @@ -9,14 +9,16 @@ #include "miscellaneous/iconfactory.h" #include "services/abstract/serviceroot.h" -LabelsNode::LabelsNode(const QList& labels, RootItem* parent_item) : RootItem(parent_item), m_actLabelNew(nullptr) { +LabelsNode::LabelsNode(RootItem* parent_item) : RootItem(parent_item), m_actLabelNew(nullptr) { setKind(RootItem::Kind::Labels); setId(ID_LABELS); setIcon(qApp->icons()->fromTheme(QSL("tag-folder"))); setTitle(tr("Labels")); setDescription(tr("You can see all your labels (tags) here.")); setCreationDate(QDateTime::currentDateTime()); +} +void LabelsNode::loadLabels(const QList& labels) { for (Label* lbl : labels) { appendChild(lbl); } diff --git a/src/librssguard/services/abstract/labelsnode.h b/src/librssguard/services/abstract/labelsnode.h index 7ecc96040..f0a6813cb 100755 --- a/src/librssguard/services/abstract/labelsnode.h +++ b/src/librssguard/services/abstract/labelsnode.h @@ -11,7 +11,9 @@ class LabelsNode : public RootItem { Q_OBJECT public: - explicit LabelsNode(const QList& labels, RootItem* parent_item = nullptr); + explicit LabelsNode(RootItem* parent_item = nullptr); + + void loadLabels(const QList& labels); virtual QList contextMenuFeedsList(); diff --git a/src/librssguard/services/abstract/serviceroot.cpp b/src/librssguard/services/abstract/serviceroot.cpp index e4ca969d9..0ee22efe7 100644 --- a/src/librssguard/services/abstract/serviceroot.cpp +++ b/src/librssguard/services/abstract/serviceroot.cpp @@ -12,10 +12,12 @@ #include "services/abstract/category.h" #include "services/abstract/feed.h" #include "services/abstract/importantnode.h" +#include "services/abstract/labelsnode.h" #include "services/abstract/recyclebin.h" ServiceRoot::ServiceRoot(RootItem* parent) - : RootItem(parent), m_recycleBin(new RecycleBin(this)), m_importantNode(new ImportantNode(this)), m_accountId(NO_PARENT_CATEGORY) { + : RootItem(parent), m_recycleBin(new RecycleBin(this)), m_importantNode(new ImportantNode(this)), + m_labelsNode(new LabelsNode(this)), m_accountId(NO_PARENT_CATEGORY) { setKind(RootItem::Kind::ServiceRoot); setCreationDate(QDateTime::currentDateTime()); } @@ -312,6 +314,10 @@ ImportantNode* ServiceRoot::importantNode() const { return m_importantNode; } +LabelsNode* ServiceRoot::labelsNode() const { + return m_labelsNode; +} + void ServiceRoot::setRecycleBin(RecycleBin* recycle_bin) { m_recycleBin = recycle_bin; } @@ -356,6 +362,22 @@ void ServiceRoot::syncIn() { itemChanged(getSubTree()); } +void ServiceRoot::performInitialAssembly(const Assignment& categories, const Assignment& feeds, const QList& labels) { + // All data are now obtained, lets create the hierarchy. + assembleCategories(categories); + assembleFeeds(feeds); + + // As the last item, add recycle bin, which is needed. + appendChild(recycleBin()); + appendChild(importantNode()); + appendChild(labelsNode()); + + labelsNode()->loadLabels(labels); + requestItemExpand({ labelsNode() }, true); + + updateCounts(true); +} + RootItem* ServiceRoot::obtainNewTreeForSyncIn() const { return nullptr; } diff --git a/src/librssguard/services/abstract/serviceroot.h b/src/librssguard/services/abstract/serviceroot.h index 80da64c97..ff43fafaf 100644 --- a/src/librssguard/services/abstract/serviceroot.h +++ b/src/librssguard/services/abstract/serviceroot.h @@ -12,6 +12,8 @@ class FeedsModel; class RecycleBin; class ImportantNode; +class LabelsNode; +class Label; class QAction; class MessagesModel; @@ -39,6 +41,7 @@ class ServiceRoot : public RootItem { void setRecycleBin(RecycleBin* recycle_bin); virtual ImportantNode* importantNode() const; + virtual LabelsNode* labelsNode() const; virtual bool downloadAttachmentOnMyOwn(const QUrl& url) const; QList undeletedMessages() const; @@ -163,6 +166,7 @@ class ServiceRoot : public RootItem { virtual void syncIn(); protected: + void performInitialAssembly(const Assignment& categories, const Assignment& feeds, const QList& labels); // This method should obtain new tree of feed/categories/whatever to perform sync in. virtual RootItem* obtainNewTreeForSyncIn() const; @@ -212,6 +216,7 @@ class ServiceRoot : public RootItem { protected: RecycleBin* m_recycleBin; ImportantNode* m_importantNode; + LabelsNode* m_labelsNode; int m_accountId; QAction* m_actionSyncIn; QList m_serviceMenu; diff --git a/src/librssguard/services/gmail/gmailserviceroot.cpp b/src/librssguard/services/gmail/gmailserviceroot.cpp index 6fc84ba19..10713826c 100644 --- a/src/librssguard/services/gmail/gmailserviceroot.cpp +++ b/src/librssguard/services/gmail/gmailserviceroot.cpp @@ -63,20 +63,15 @@ void GmailServiceRoot::loadFromDatabase() { QSqlDatabase database = qApp->database()->connection(metaObject()->className()); Assignment categories = DatabaseQueries::getCategories(database, accountId()); Assignment feeds = DatabaseQueries::getFeeds(database, qApp->feedReader()->messageFilters(), accountId()); + auto labels = DatabaseQueries::getLabels(database, accountId()); - // All data are now obtained, lets create the hierarchy. - assembleCategories(categories); - assembleFeeds(feeds); + performInitialAssembly(categories, feeds, labels); for (RootItem* feed : childItems()) { if (feed->customId() == QL1S("INBOX")) { feed->setKeepOnTop(true); } } - - appendChild(recycleBin()); - appendChild(importantNode()); - updateCounts(true); } void GmailServiceRoot::saveAccountDataToDatabase() { @@ -191,7 +186,7 @@ void GmailServiceRoot::start(bool freshly_activated) { loadFromDatabase(); loadCacheFromFile(accountId()); - if (childCount() <= 2) { + if (childCount() <= 3) { syncIn(); } diff --git a/src/librssguard/services/inoreader/inoreaderserviceroot.cpp b/src/librssguard/services/inoreader/inoreaderserviceroot.cpp index dd0ad38c8..b1ae91945 100644 --- a/src/librssguard/services/inoreader/inoreaderserviceroot.cpp +++ b/src/librssguard/services/inoreader/inoreaderserviceroot.cpp @@ -36,15 +36,9 @@ void InoreaderServiceRoot::loadFromDatabase() { QSqlDatabase database = qApp->database()->connection(metaObject()->className()); Assignment categories = DatabaseQueries::getCategories(database, accountId()); Assignment feeds = DatabaseQueries::getFeeds(database, qApp->feedReader()->messageFilters(), accountId()); + auto labels = DatabaseQueries::getLabels(database, accountId()); - // All data are now obtained, lets create the hierarchy. - assembleCategories(categories); - assembleFeeds(feeds); - - // As the last item, add recycle bin, which is needed. - appendChild(recycleBin()); - appendChild(importantNode()); - updateCounts(true); + performInitialAssembly(categories, feeds, labels); } void InoreaderServiceRoot::saveAccountDataToDatabase() { @@ -111,7 +105,7 @@ void InoreaderServiceRoot::start(bool freshly_activated) { loadFromDatabase(); loadCacheFromFile(accountId()); - if (childCount() <= 2) { + if (childCount() <= 3) { syncIn(); } else { diff --git a/src/librssguard/services/owncloud/owncloudserviceroot.cpp b/src/librssguard/services/owncloud/owncloudserviceroot.cpp index e930b0299..8ed555d2a 100644 --- a/src/librssguard/services/owncloud/owncloudserviceroot.cpp +++ b/src/librssguard/services/owncloud/owncloudserviceroot.cpp @@ -68,7 +68,7 @@ void OwnCloudServiceRoot::start(bool freshly_activated) { loadFromDatabase(); loadCacheFromFile(accountId()); - if (childCount() <= 2) { + if (childCount() <= 3) { syncIn(); } } @@ -191,13 +191,7 @@ void OwnCloudServiceRoot::loadFromDatabase() { QSqlDatabase database = qApp->database()->connection(metaObject()->className()); Assignment categories = DatabaseQueries::getCategories(database, accountId()); Assignment feeds = DatabaseQueries::getFeeds(database, qApp->feedReader()->messageFilters(), accountId()); + auto labels = DatabaseQueries::getLabels(database, accountId()); - // All data are now obtained, lets create the hierarchy. - assembleCategories(categories); - assembleFeeds(feeds); - - // As the last item, add recycle bin, which is needed. - appendChild(recycleBin()); - appendChild(importantNode()); - updateCounts(true); + performInitialAssembly(categories, feeds, labels); } diff --git a/src/librssguard/services/standard/standardserviceroot.cpp b/src/librssguard/services/standard/standardserviceroot.cpp index 43927818f..d5272df71 100644 --- a/src/librssguard/services/standard/standardserviceroot.cpp +++ b/src/librssguard/services/standard/standardserviceroot.cpp @@ -134,21 +134,9 @@ void StandardServiceRoot::loadFromDatabase() { QSqlDatabase database = qApp->database()->connection(metaObject()->className()); Assignment categories = DatabaseQueries::getCategories(database, accountId()); Assignment feeds = DatabaseQueries::getFeeds(database, qApp->feedReader()->messageFilters(), accountId()); + auto labels = DatabaseQueries::getLabels(database, accountId()); - // All data are now obtained, lets create the hierarchy. - assembleCategories(categories); - assembleFeeds(feeds); - - // As the last item, add recycle bin, which is needed. - appendChild(recycleBin()); - appendChild(importantNode()); - - auto* labelss = new LabelsNode(DatabaseQueries::getLabels(database, accountId()), this); - - appendChild(labelss); - requestItemExpand({ labelss }, true); - - updateCounts(true); + performInitialAssembly(categories, feeds, labels); } void StandardServiceRoot::checkArgumentsForFeedAdding() { diff --git a/src/librssguard/services/tt-rss/ttrssserviceroot.cpp b/src/librssguard/services/tt-rss/ttrssserviceroot.cpp index 335e65f36..9cd180964 100644 --- a/src/librssguard/services/tt-rss/ttrssserviceroot.cpp +++ b/src/librssguard/services/tt-rss/ttrssserviceroot.cpp @@ -206,15 +206,9 @@ void TtRssServiceRoot::loadFromDatabase() { QSqlDatabase database = qApp->database()->connection(metaObject()->className()); Assignment categories = DatabaseQueries::getCategories(database, accountId()); Assignment feeds = DatabaseQueries::getFeeds(database, qApp->feedReader()->messageFilters(), accountId()); + auto labels = DatabaseQueries::getLabels(database, accountId()); - // All data are now obtained, lets create the hierarchy. - assembleCategories(categories); - assembleFeeds(feeds); - - // As the last item, add recycle bin, which is needed. - appendChild(recycleBin()); - appendChild(importantNode()); - updateCounts(true); + performInitialAssembly(categories, feeds, labels); } void TtRssServiceRoot::updateTitle() {