Do some refactoring.

This commit is contained in:
Martin Rotter 2016-02-22 09:23:24 +01:00
parent 22eebcdef7
commit b873dbcf33
8 changed files with 51 additions and 64 deletions

View file

@ -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 <QSqlQuery>
Feed::Feed(RootItem *parent)
@ -30,6 +35,36 @@ Feed::Feed(RootItem *parent)
Feed::~Feed() {
}
QList<Message> Feed::undeletedMessages() const {
QList<Message> 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:

View file

@ -52,6 +52,8 @@ class Feed : public RootItem {
explicit Feed(RootItem *parent = NULL);
virtual ~Feed();
QList<Message> undeletedMessages() const;
int countOfAllMessages() const;
int countOfUnreadMessages() const;

View file

@ -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);

View file

@ -55,8 +55,20 @@ bool OwnCloudServiceRoot::editViaGui() {
}
bool OwnCloudServiceRoot::deleteViaGui() {
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 {
return false;

View file

@ -120,35 +120,6 @@ bool StandardFeed::cleanMessages(bool clean_read_only) {
return serviceRoot()->cleanFeeds(QList<Feed*>() << this, clean_read_only);
}
QList<Message> StandardFeed::undeletedMessages() const {
QList<Message> 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:

View file

@ -70,8 +70,6 @@ class StandardFeed : public Feed {
bool markAsReadUnread(ReadStatus status);
bool cleanMessages(bool clean_read_only);
QList<Message> undeletedMessages() const;
QVariant data(int column, int role) const;
// Obtains data related to this feed.

View file

@ -189,36 +189,6 @@ int TtRssFeed::update() {
return updateMessages(messages);
}
QList<Message> TtRssFeed::undeletedMessages() const {
QList<Message> 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,

View file

@ -43,7 +43,6 @@ class TtRssFeed : public Feed {
bool deleteViaGui();
int update();
QList<Message> undeletedMessages() const;
bool markAsReadUnread(ReadStatus status);
bool cleanMessages(bool clear_only_read);
bool editItself(TtRssFeed *new_feed_data);