diff --git a/src/services/tt-rss/ttrsscategory.cpp b/src/services/tt-rss/ttrsscategory.cpp index 7dc127ea6..ac5e11641 100755 --- a/src/services/tt-rss/ttrsscategory.cpp +++ b/src/services/tt-rss/ttrsscategory.cpp @@ -20,6 +20,9 @@ #include "definitions/definitions.h" #include "miscellaneous/application.h" #include "miscellaneous/iconfactory.h" +#include "services/tt-rss/definitions.h" +#include "services/tt-rss/ttrssserviceroot.h" +#include "services/tt-rss/network/ttrssnetworkfactory.h" #include @@ -38,6 +41,27 @@ TtRssCategory::TtRssCategory(const QSqlRecord &record) : Category(NULL) { TtRssCategory::~TtRssCategory() { } +TtRssServiceRoot *TtRssCategory::serviceRoot() { + return qobject_cast(getParentServiceRoot()); +} + +bool TtRssCategory::markAsReadUnread(RootItem::ReadStatus status) { + QNetworkReply::NetworkError error; + QStringList ids = serviceRoot()->customIDSOfMessagesForItem(this); + TtRssUpdateArticleResponse response = serviceRoot()->network()->updateArticles(ids, UpdateArticle::Unread, + status == RootItem::Unread ? + UpdateArticle::SetToTrue : + UpdateArticle::SetToFalse, + error); + + if (error != QNetworkReply::NoError || response.updateStatus() != STATUS_OK) { + return false; + } + else { + return serviceRoot()->markFeedsReadUnread(getSubTreeFeeds(), status); + } +} + int TtRssCategory::customId() const { return m_customId; } diff --git a/src/services/tt-rss/ttrsscategory.h b/src/services/tt-rss/ttrsscategory.h index d2355f8e2..599b8751e 100755 --- a/src/services/tt-rss/ttrsscategory.h +++ b/src/services/tt-rss/ttrsscategory.h @@ -23,6 +23,8 @@ #include +class TtRssServiceRoot; + class TtRssCategory : public Category { Q_OBJECT @@ -31,6 +33,10 @@ class TtRssCategory : public Category { explicit TtRssCategory(const QSqlRecord &record); virtual ~TtRssCategory(); + TtRssServiceRoot *serviceRoot(); + + bool markAsReadUnread(ReadStatus status); + int customId() const; void setCustomId(int custom_id);