diff --git a/src/services/abstract/feed.cpp b/src/services/abstract/feed.cpp index 877f1131e..d394dfb7f 100755 --- a/src/services/abstract/feed.cpp +++ b/src/services/abstract/feed.cpp @@ -18,6 +18,11 @@ #include "services/abstract/feed.h" #include "definitions/definitions.h" +#include "miscellaneous/application.h" +#include "miscellaneous/databasefactory.h" +#include "services/abstract/serviceroot.h" + +#include Feed::Feed(RootItem *parent) @@ -30,6 +35,36 @@ Feed::Feed(RootItem *parent) Feed::~Feed() { } +QList Feed::undeletedMessages() const { + QList messages; + int account_id = getParentServiceRoot()->accountId(); + QSqlDatabase database = qApp->database()->connection(metaObject()->className(), DatabaseFactory::FromSettings); + QSqlQuery query_read_msg(database); + + query_read_msg.setForwardOnly(true); + query_read_msg.prepare("SELECT * " + "FROM Messages " + "WHERE is_deleted = 0 AND is_pdeleted = 0 AND feed = :feed AND account_id = :account_id;"); + + query_read_msg.bindValue(QSL(":feed"), messageForeignKeyId()); + query_read_msg.bindValue(QSL(":account_id"), account_id); + + if (query_read_msg.exec()) { + while (query_read_msg.next()) { + bool decoded; + Message message = Message::fromSqlRecord(query_read_msg.record(), &decoded); + + if (decoded) { + messages.append(message); + } + + messages.append(message); + } + } + + return messages; +} + QVariant Feed::data(int column, int role) const { switch (role) { case Qt::ForegroundRole: diff --git a/src/services/abstract/feed.h b/src/services/abstract/feed.h index bf2d90242..7f8aefd1d 100755 --- a/src/services/abstract/feed.h +++ b/src/services/abstract/feed.h @@ -52,6 +52,8 @@ class Feed : public RootItem { explicit Feed(RootItem *parent = NULL); virtual ~Feed(); + QList undeletedMessages() const; + int countOfAllMessages() const; int countOfUnreadMessages() const; diff --git a/src/services/owncloud/owncloudfeed.cpp b/src/services/owncloud/owncloudfeed.cpp index a488e91a1..dca318f6d 100755 --- a/src/services/owncloud/owncloudfeed.cpp +++ b/src/services/owncloud/owncloudfeed.cpp @@ -42,7 +42,7 @@ OwnCloudServiceRoot *OwnCloudFeed::serviceRoot() const { } int OwnCloudFeed::update() { - OwnCloudGetMessagesResponse headlines = serviceRoot()->network()->getMessages(customId()); + OwnCloudGetMessagesResponse messages = serviceRoot()->network()->getMessages(customId()); if (serviceRoot()->network()->lastError() != QNetworkReply::NoError) { setStatus(Feed::Error); diff --git a/src/services/owncloud/owncloudserviceroot.cpp b/src/services/owncloud/owncloudserviceroot.cpp index c38e82684..50ada4343 100755 --- a/src/services/owncloud/owncloudserviceroot.cpp +++ b/src/services/owncloud/owncloudserviceroot.cpp @@ -55,7 +55,19 @@ bool OwnCloudServiceRoot::editViaGui() { } bool OwnCloudServiceRoot::deleteViaGui() { - return false; + QSqlDatabase connection = qApp->database()->connection(metaObject()->className(), DatabaseFactory::FromSettings); + QSqlQuery query(connection); + + query.setForwardOnly(true); + query.prepare(QSL("DELETE FROM OwnCloudAccounts WHERE id = :id;")); + query.bindValue(QSL(":id"), accountId()); + + if (query.exec()) { + return ServiceRoot::deleteViaGui(); + } + else { + return false; + } } bool OwnCloudServiceRoot::supportsFeedAdding() const { diff --git a/src/services/standard/standardfeed.cpp b/src/services/standard/standardfeed.cpp index 7cb247081..d632f9040 100755 --- a/src/services/standard/standardfeed.cpp +++ b/src/services/standard/standardfeed.cpp @@ -120,35 +120,6 @@ bool StandardFeed::cleanMessages(bool clean_read_only) { return serviceRoot()->cleanFeeds(QList() << this, clean_read_only); } -QList StandardFeed::undeletedMessages() const { - QList messages; - - QSqlDatabase database = qApp->database()->connection(metaObject()->className(), DatabaseFactory::FromSettings); - QSqlQuery query_read_msg(database); - query_read_msg.setForwardOnly(true); - query_read_msg.prepare("SELECT * " - "FROM Messages " - "WHERE is_deleted = 0 AND feed = :feed AND account_id = :account_id;"); - - query_read_msg.bindValue(QSL(":feed"), id()); - query_read_msg.bindValue(QSL(":account_id"), serviceRoot()->accountId()); - - if (query_read_msg.exec()) { - while (query_read_msg.next()) { - bool decoded; - Message message = Message::fromSqlRecord(query_read_msg.record(), &decoded); - - if (decoded) { - messages.append(message); - } - - messages.append(message); - } - } - - return messages; -} - 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 ab67a2583..b6e195bbe 100755 --- a/src/services/standard/standardfeed.h +++ b/src/services/standard/standardfeed.h @@ -70,8 +70,6 @@ class StandardFeed : public Feed { bool markAsReadUnread(ReadStatus status); bool cleanMessages(bool clean_read_only); - QList undeletedMessages() const; - QVariant data(int column, int role) const; // Obtains data related to this feed. diff --git a/src/services/tt-rss/ttrssfeed.cpp b/src/services/tt-rss/ttrssfeed.cpp index f7eed003d..5bbef73e6 100755 --- a/src/services/tt-rss/ttrssfeed.cpp +++ b/src/services/tt-rss/ttrssfeed.cpp @@ -189,36 +189,6 @@ int TtRssFeed::update() { return updateMessages(messages); } -QList TtRssFeed::undeletedMessages() const { - QList messages; - int account_id = serviceRoot()->accountId(); - QSqlDatabase database = qApp->database()->connection(metaObject()->className(), DatabaseFactory::FromSettings); - QSqlQuery query_read_msg(database); - - query_read_msg.setForwardOnly(true); - query_read_msg.prepare("SELECT * " - "FROM Messages " - "WHERE is_deleted = 0 AND is_pdeleted = 0 AND feed = :feed AND account_id = :account_id;"); - - query_read_msg.bindValue(QSL(":feed"), customId()); - query_read_msg.bindValue(QSL(":account_id"), account_id); - - if (query_read_msg.exec()) { - while (query_read_msg.next()) { - bool decoded; - Message message = Message::fromSqlRecord(query_read_msg.record(), &decoded); - - if (decoded) { - messages.append(message); - } - - messages.append(message); - } - } - - return messages; -} - bool TtRssFeed::markAsReadUnread(RootItem::ReadStatus status) { QStringList ids = serviceRoot()->customIDSOfMessagesForItem(this); TtRssUpdateArticleResponse response = serviceRoot()->network()->updateArticles(ids, UpdateArticle::Unread, diff --git a/src/services/tt-rss/ttrssfeed.h b/src/services/tt-rss/ttrssfeed.h index 94ec55edf..ad5fda308 100755 --- a/src/services/tt-rss/ttrssfeed.h +++ b/src/services/tt-rss/ttrssfeed.h @@ -43,7 +43,6 @@ class TtRssFeed : public Feed { bool deleteViaGui(); int update(); - QList undeletedMessages() const; bool markAsReadUnread(ReadStatus status); bool cleanMessages(bool clear_only_read); bool editItself(TtRssFeed *new_feed_data);