From f10ee911946d405aca0b5aa47d31ea1517ba31aa Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Wed, 20 Sep 2017 13:06:45 +0200 Subject: [PATCH] Refactored some common code from categories/feeds classes. --- src/services/abstract/category.cpp | 12 ++++++++++++ src/services/abstract/category.h | 1 + src/services/abstract/feed.cpp | 12 ++++++++++++ src/services/abstract/feed.h | 1 + src/services/abstract/serviceroot.cpp | 7 +++++++ src/services/owncloud/owncloudcategory.cpp | 5 ----- src/services/owncloud/owncloudcategory.h | 2 -- src/services/owncloud/owncloudfeed.cpp | 5 ----- src/services/owncloud/owncloudfeed.h | 2 -- src/services/owncloud/owncloudserviceroot.cpp | 5 ----- src/services/owncloud/owncloudserviceroot.h | 2 -- src/services/standard/standardcategory.cpp | 4 ---- src/services/standard/standardcategory.h | 2 -- src/services/standard/standardfeed.cpp | 4 ---- src/services/standard/standardfeed.h | 2 -- src/services/tt-rss/ttrsscategory.cpp | 5 ----- src/services/tt-rss/ttrsscategory.h | 2 -- src/services/tt-rss/ttrssfeed.cpp | 5 ----- src/services/tt-rss/ttrssfeed.h | 2 -- src/services/tt-rss/ttrssserviceroot.cpp | 5 ----- src/services/tt-rss/ttrssserviceroot.h | 1 - 21 files changed, 33 insertions(+), 53 deletions(-) diff --git a/src/services/abstract/category.cpp b/src/services/abstract/category.cpp index 1cd2627a0..ab41480cc 100755 --- a/src/services/abstract/category.cpp +++ b/src/services/abstract/category.cpp @@ -20,6 +20,7 @@ #include "miscellaneous/application.h" #include "miscellaneous/databasequeries.h" +#include "services/abstract/cacheforserviceroot.h" #include "services/abstract/feed.h" #include "services/abstract/serviceroot.h" @@ -70,3 +71,14 @@ void Category::updateCounts(bool including_total_count) { bool Category::cleanMessages(bool clean_read_only) { return getParentServiceRoot()->cleanFeeds(getSubTreeFeeds(), clean_read_only); } + +bool Category::markAsReadUnread(RootItem::ReadStatus status) { + ServiceRoot* service = getParentServiceRoot(); + CacheForServiceRoot* cache = dynamic_cast(service); + + if (cache != nullptr) { + cache->addMessageStatesToCache(service->customIDSOfMessagesForItem(this), status); + } + + return service->markFeedsReadUnread(getSubTreeFeeds(), status); +} diff --git a/src/services/abstract/category.h b/src/services/abstract/category.h index c3030c976..ae2aa0f67 100755 --- a/src/services/abstract/category.h +++ b/src/services/abstract/category.h @@ -30,6 +30,7 @@ class Category : public RootItem { void updateCounts(bool including_total_count); bool cleanMessages(bool clean_read_only); + bool markAsReadUnread(ReadStatus status); }; #endif // CATEGORY_H diff --git a/src/services/abstract/feed.cpp b/src/services/abstract/feed.cpp index d2da94f65..7793f7ffb 100755 --- a/src/services/abstract/feed.cpp +++ b/src/services/abstract/feed.cpp @@ -23,6 +23,7 @@ #include "miscellaneous/databasequeries.h" #include "miscellaneous/feedreader.h" #include "miscellaneous/mutex.h" +#include "services/abstract/cacheforserviceroot.h" #include "services/abstract/recyclebin.h" #include "services/abstract/serviceroot.h" @@ -218,6 +219,17 @@ bool Feed::cleanMessages(bool clean_read_only) { return getParentServiceRoot()->cleanFeeds(QList() << this, clean_read_only); } +bool Feed::markAsReadUnread(RootItem::ReadStatus status) { + ServiceRoot* service = getParentServiceRoot(); + CacheForServiceRoot* cache = dynamic_cast(service); + + if (cache != nullptr) { + cache->addMessageStatesToCache(service->customIDSOfMessagesForItem(this), status); + } + + return service->markFeedsReadUnread(QList() << this, status); +} + int Feed::updateMessages(const QList& messages, bool error_during_obtaining) { QList items_to_update; int updated_messages = 0; diff --git a/src/services/abstract/feed.h b/src/services/abstract/feed.h index 23abc2c35..394b61ddd 100755 --- a/src/services/abstract/feed.h +++ b/src/services/abstract/feed.h @@ -82,6 +82,7 @@ class Feed : public RootItem, public QRunnable { // Runs update in thread (thread pooled). void run(); + bool markAsReadUnread(ReadStatus status); bool cleanMessages(bool clean_read_only); public slots: diff --git a/src/services/abstract/serviceroot.cpp b/src/services/abstract/serviceroot.cpp index 9ecfb4c89..b6c0083ea 100755 --- a/src/services/abstract/serviceroot.cpp +++ b/src/services/abstract/serviceroot.cpp @@ -24,6 +24,7 @@ #include "miscellaneous/databasequeries.h" #include "miscellaneous/iconfactory.h" #include "miscellaneous/textfactory.h" +#include "services/abstract/cacheforserviceroot.h" #include "services/abstract/category.h" #include "services/abstract/feed.h" #include "services/abstract/recyclebin.h" @@ -49,6 +50,12 @@ bool ServiceRoot::deleteViaGui() { } bool ServiceRoot::markAsReadUnread(RootItem::ReadStatus status) { + CacheForServiceRoot* cache = dynamic_cast(this); + + if (cache != nullptr) { + cache->addMessageStatesToCache(customIDSOfMessagesForItem(this), status); + } + QSqlDatabase database = qApp->database()->connection(metaObject()->className(), DatabaseFactory::FromSettings); if (DatabaseQueries::markAccountReadUnread(database, accountId(), status)) { diff --git a/src/services/owncloud/owncloudcategory.cpp b/src/services/owncloud/owncloudcategory.cpp index a549de627..b1c361f3e 100755 --- a/src/services/owncloud/owncloudcategory.cpp +++ b/src/services/owncloud/owncloudcategory.cpp @@ -38,9 +38,4 @@ OwnCloudServiceRoot* OwnCloudCategory::serviceRoot() const { return qobject_cast(getParentServiceRoot()); } -bool OwnCloudCategory::markAsReadUnread(RootItem::ReadStatus status) { - serviceRoot()->addMessageStatesToCache(getParentServiceRoot()->customIDSOfMessagesForItem(this), status); - return serviceRoot()->markFeedsReadUnread(getSubTreeFeeds(), status); -} - OwnCloudCategory::~OwnCloudCategory() {} diff --git a/src/services/owncloud/owncloudcategory.h b/src/services/owncloud/owncloudcategory.h index 8ca6c5a60..0bbea5fd1 100755 --- a/src/services/owncloud/owncloudcategory.h +++ b/src/services/owncloud/owncloudcategory.h @@ -31,8 +31,6 @@ class OwnCloudCategory : public Category { explicit OwnCloudCategory(const QSqlRecord& record); virtual ~OwnCloudCategory(); - bool markAsReadUnread(ReadStatus status); - private: OwnCloudServiceRoot* serviceRoot() const; }; diff --git a/src/services/owncloud/owncloudfeed.cpp b/src/services/owncloud/owncloudfeed.cpp index 6c38d3413..72bbf2445 100755 --- a/src/services/owncloud/owncloudfeed.cpp +++ b/src/services/owncloud/owncloudfeed.cpp @@ -86,11 +86,6 @@ bool OwnCloudFeed::removeItself() { return DatabaseQueries::deleteFeed(database, customId(), serviceRoot()->accountId()); } -bool OwnCloudFeed::markAsReadUnread(RootItem::ReadStatus status) { - serviceRoot()->addMessageStatesToCache(getParentServiceRoot()->customIDSOfMessagesForItem(this), status); - return getParentServiceRoot()->markFeedsReadUnread(QList() << this, status); -} - OwnCloudServiceRoot* OwnCloudFeed::serviceRoot() const { return qobject_cast(getParentServiceRoot()); } diff --git a/src/services/owncloud/owncloudfeed.h b/src/services/owncloud/owncloudfeed.h index f0c86f312..9499e3d46 100755 --- a/src/services/owncloud/owncloudfeed.h +++ b/src/services/owncloud/owncloudfeed.h @@ -39,8 +39,6 @@ class OwnCloudFeed : public Feed { bool editItself(OwnCloudFeed* new_feed_data); bool removeItself(); - bool markAsReadUnread(ReadStatus status); - OwnCloudServiceRoot* serviceRoot() const; private: diff --git a/src/services/owncloud/owncloudserviceroot.cpp b/src/services/owncloud/owncloudserviceroot.cpp index b8a6e8e94..680205689 100755 --- a/src/services/owncloud/owncloudserviceroot.cpp +++ b/src/services/owncloud/owncloudserviceroot.cpp @@ -103,11 +103,6 @@ QString OwnCloudServiceRoot::code() const { return OwnCloudServiceEntryPoint().code(); } -bool OwnCloudServiceRoot::markAsReadUnread(RootItem::ReadStatus status) { - addMessageStatesToCache(customIDSOfMessagesForItem(this), status); - return ServiceRoot::markAsReadUnread(status); -} - OwnCloudNetworkFactory* OwnCloudServiceRoot::network() const { return m_network; } diff --git a/src/services/owncloud/owncloudserviceroot.h b/src/services/owncloud/owncloudserviceroot.h index 29e28f2d3..61613db4f 100755 --- a/src/services/owncloud/owncloudserviceroot.h +++ b/src/services/owncloud/owncloudserviceroot.h @@ -45,8 +45,6 @@ class OwnCloudServiceRoot : public ServiceRoot, public CacheForServiceRoot { void start(bool freshly_activated); void stop(); QString code() const; - bool markAsReadUnread(ReadStatus status); - OwnCloudNetworkFactory* network() const; bool onBeforeSetMessagesRead(RootItem* selected_item, const QList& messages, ReadStatus read); diff --git a/src/services/standard/standardcategory.cpp b/src/services/standard/standardcategory.cpp index ea19e16d5..27624eb04 100755 --- a/src/services/standard/standardcategory.cpp +++ b/src/services/standard/standardcategory.cpp @@ -112,10 +112,6 @@ bool StandardCategory::deleteViaGui() { } } -bool StandardCategory::markAsReadUnread(ReadStatus status) { - return serviceRoot()->markFeedsReadUnread(getSubTreeFeeds(), status); -} - bool StandardCategory::removeItself() { bool children_removed = true; diff --git a/src/services/standard/standardcategory.h b/src/services/standard/standardcategory.h index 1c7a69db4..42df36d68 100755 --- a/src/services/standard/standardcategory.h +++ b/src/services/standard/standardcategory.h @@ -59,8 +59,6 @@ class StandardCategory : public Category { bool editViaGui(); bool deleteViaGui(); - bool markAsReadUnread(ReadStatus status); - // Removes category and all its children from persistent // database. bool removeItself(); diff --git a/src/services/standard/standardfeed.cpp b/src/services/standard/standardfeed.cpp index 3777bbc71..470e65f65 100755 --- a/src/services/standard/standardfeed.cpp +++ b/src/services/standard/standardfeed.cpp @@ -106,10 +106,6 @@ bool StandardFeed::deleteViaGui() { } } -bool StandardFeed::markAsReadUnread(ReadStatus status) { - return serviceRoot()->markFeedsReadUnread(QList() << this, status); -} - QVariant StandardFeed::data(int column, int role) const { switch (role) { case Qt::ToolTipRole: diff --git a/src/services/standard/standardfeed.h b/src/services/standard/standardfeed.h index 2adf2e632..536e823a6 100755 --- a/src/services/standard/standardfeed.h +++ b/src/services/standard/standardfeed.h @@ -69,8 +69,6 @@ class StandardFeed : public Feed { bool editViaGui(); bool deleteViaGui(); - bool markAsReadUnread(ReadStatus status); - QVariant data(int column, int role) const; // Obtains data related to this feed. diff --git a/src/services/tt-rss/ttrsscategory.cpp b/src/services/tt-rss/ttrsscategory.cpp index 7fb14861c..4cd4ba8a8 100755 --- a/src/services/tt-rss/ttrsscategory.cpp +++ b/src/services/tt-rss/ttrsscategory.cpp @@ -43,8 +43,3 @@ TtRssCategory::~TtRssCategory() {} TtRssServiceRoot* TtRssCategory::serviceRoot() const { return qobject_cast(getParentServiceRoot()); } - -bool TtRssCategory::markAsReadUnread(RootItem::ReadStatus status) { - serviceRoot()->addMessageStatesToCache(serviceRoot()->customIDSOfMessagesForItem(this), status); - return true; -} diff --git a/src/services/tt-rss/ttrsscategory.h b/src/services/tt-rss/ttrsscategory.h index 675eaab40..2b836aee5 100755 --- a/src/services/tt-rss/ttrsscategory.h +++ b/src/services/tt-rss/ttrsscategory.h @@ -34,8 +34,6 @@ class TtRssCategory : public Category { virtual ~TtRssCategory(); TtRssServiceRoot* serviceRoot() const; - - bool markAsReadUnread(ReadStatus status); }; #endif // TTRSSCATEGORY_H diff --git a/src/services/tt-rss/ttrssfeed.cpp b/src/services/tt-rss/ttrssfeed.cpp index c52135171..dba296b9b 100755 --- a/src/services/tt-rss/ttrssfeed.cpp +++ b/src/services/tt-rss/ttrssfeed.cpp @@ -78,11 +78,6 @@ bool TtRssFeed::deleteViaGui() { } } -bool TtRssFeed::markAsReadUnread(RootItem::ReadStatus status) { - serviceRoot()->addMessageStatesToCache(getParentServiceRoot()->customIDSOfMessagesForItem(this), status); - return getParentServiceRoot()->markFeedsReadUnread(QList() << this, status); -} - bool TtRssFeed::editItself(TtRssFeed* new_feed_data) { QSqlDatabase database = qApp->database()->connection("aa", DatabaseFactory::FromSettings); diff --git a/src/services/tt-rss/ttrssfeed.h b/src/services/tt-rss/ttrssfeed.h index 50ef9b747..cbcd37d26 100755 --- a/src/services/tt-rss/ttrssfeed.h +++ b/src/services/tt-rss/ttrssfeed.h @@ -40,8 +40,6 @@ class TtRssFeed : public Feed { bool canBeDeleted() const; bool deleteViaGui(); - bool markAsReadUnread(ReadStatus status); - bool editItself(TtRssFeed* new_feed_data); bool removeItself(); diff --git a/src/services/tt-rss/ttrssserviceroot.cpp b/src/services/tt-rss/ttrssserviceroot.cpp index 9ff531e3c..326e2c5ee 100755 --- a/src/services/tt-rss/ttrssserviceroot.cpp +++ b/src/services/tt-rss/ttrssserviceroot.cpp @@ -88,11 +88,6 @@ bool TtRssServiceRoot::deleteViaGui() { } } -bool TtRssServiceRoot::markAsReadUnread(RootItem::ReadStatus status) { - addMessageStatesToCache(customIDSOfMessagesForItem(this), status); - return ServiceRoot::markAsReadUnread(status); -} - bool TtRssServiceRoot::supportsFeedAdding() const { return true; } diff --git a/src/services/tt-rss/ttrssserviceroot.h b/src/services/tt-rss/ttrssserviceroot.h index 8cc7d1aa6..d80c62f42 100755 --- a/src/services/tt-rss/ttrssserviceroot.h +++ b/src/services/tt-rss/ttrssserviceroot.h @@ -42,7 +42,6 @@ class TtRssServiceRoot : public ServiceRoot, public CacheForServiceRoot { bool canBeDeleted() const; bool editViaGui(); bool deleteViaGui(); - bool markAsReadUnread(ReadStatus status); bool supportsFeedAdding() const; bool supportsCategoryAdding() const; QVariant data(int column, int role) const;