fix some gmail problems

This commit is contained in:
Martin Rotter 2021-03-03 11:01:41 +01:00
parent ddf5475b5f
commit 10bf16a3b2
29 changed files with 62 additions and 153 deletions

View File

@ -22,7 +22,7 @@ CREATE TABLE Categories (
parent_id INTEGER NOT NULL CHECK (parent_id >= -1), /* Root categories contain -1 here. */ parent_id INTEGER NOT NULL CHECK (parent_id >= -1), /* Root categories contain -1 here. */
title TEXT NOT NULL CHECK (title != ''), title TEXT NOT NULL CHECK (title != ''),
description TEXT, description TEXT,
date_created INTEGER NOT NULL CHECK (date_created >= 0), date_created INTEGER,
icon BLOB, icon BLOB,
account_id INTEGER NOT NULL, account_id INTEGER NOT NULL,
custom_id TEXT, custom_id TEXT,
@ -34,7 +34,7 @@ CREATE TABLE Feeds (
id INTEGER PRIMARY KEY, id INTEGER PRIMARY KEY,
title TEXT NOT NULL CHECK (title != ''), title TEXT NOT NULL CHECK (title != ''),
description TEXT, description TEXT,
date_created INTEGER NOT NULL CHECK (date_created >= 0), date_created INTEGER,
icon BLOB, icon BLOB,
category INTEGER NOT NULL CHECK (category >= -1), /* Root feeds contain -1 here. */ category INTEGER NOT NULL CHECK (category >= -1), /* Root feeds contain -1 here. */
source TEXT, source TEXT,

View File

@ -1744,6 +1744,8 @@ void DatabaseQueries::createOverwriteFeed(const QSqlDatabase& db, Feed* feed, in
q.bindValue(QSL(":custom_data"), serialized_custom_data); q.bindValue(QSL(":custom_data"), serialized_custom_data);
if (!q.exec()) { if (!q.exec()) {
auto xx = q.lastError().text();
throw ApplicationException(q.lastError().text()); throw ApplicationException(q.lastError().text());
} }
} }

View File

@ -8,6 +8,7 @@
#include "core/messagefilter.h" #include "core/messagefilter.h"
#include "definitions/typedefs.h" #include "definitions/typedefs.h"
#include "miscellaneous/application.h" #include "miscellaneous/application.h"
#include "miscellaneous/iconfactory.h"
#include "miscellaneous/textfactory.h" #include "miscellaneous/textfactory.h"
#include "services/abstract/category.h" #include "services/abstract/category.h"
#include "services/abstract/label.h" #include "services/abstract/label.h"
@ -217,7 +218,22 @@ Assignment DatabaseQueries::getCategories(const QSqlDatabase& db, int account_id
AssignmentItem pair; AssignmentItem pair;
pair.first = query_categories.value(CAT_DB_PARENT_ID_INDEX).toInt(); pair.first = query_categories.value(CAT_DB_PARENT_ID_INDEX).toInt();
pair.second = new T(query_categories.record()); pair.second = new T();
auto* cat = static_cast<Category*>(pair.second);
cat->setId(query_categories.value(CAT_DB_ID_INDEX).toInt());
cat->setCustomId(query_categories.value(CAT_DB_CUSTOM_ID_INDEX).toString());
if (cat->customId().isEmpty()) {
cat->setCustomId(QString::number(cat->id()));
}
cat->setTitle(query_categories.value(CAT_DB_TITLE_INDEX).toString());
cat->setDescription(query_categories.value(CAT_DB_DESCRIPTION_INDEX).toString());
cat->setCreationDate(TextFactory::parseDateTime(query_categories.value(CAT_DB_DCREATED_INDEX).value<qint64>()).toLocalTime());
cat->setIcon(qApp->icons()->fromByteArray(query_categories.value(CAT_DB_ICON_INDEX).toByteArray()));
categories << pair; categories << pair;
} }
@ -257,7 +273,27 @@ Assignment DatabaseQueries::getFeeds(const QSqlDatabase& db,
pair.first = query.value(FDS_DB_CATEGORY_INDEX).toInt(); pair.first = query.value(FDS_DB_CATEGORY_INDEX).toInt();
Feed* feed = new T(query.record()); Feed* feed = new T();
// Load common data.
feed->setTitle(query.value(FDS_DB_TITLE_INDEX).toString());
feed->setId(query.value(FDS_DB_ID_INDEX).toInt());
feed->setSource(query.value(FDS_DB_SOURCE_INDEX).toString());
feed->setCustomId(query.value(FDS_DB_CUSTOM_ID_INDEX).toString());
if (feed->customId().isEmpty()) {
feed->setCustomId(QString::number(feed->id()));
}
feed->setDescription(QString::fromUtf8(query.value(FDS_DB_DESCRIPTION_INDEX).toByteArray()));
feed->setCreationDate(TextFactory::parseDateTime(query.value(FDS_DB_DCREATED_INDEX).value<qint64>()).toLocalTime());
feed->setIcon(qApp->icons()->fromByteArray(query.value(FDS_DB_ICON_INDEX).toByteArray()));
feed->setAutoUpdateType(static_cast<Feed::AutoUpdateType>(query.value(FDS_DB_UPDATE_TYPE_INDEX).toInt()));
feed->setAutoUpdateInitialInterval(query.value(FDS_DB_UPDATE_INTERVAL_INDEX).toInt());
qDebugNN << LOGSEC_CORE
<< "Custom ID of feed when loading from DB is"
<< QUOTE_W_SPACE_DOT(feed->customId());
// Load custom data. // Load custom data.
feed->setCustomDatabaseData(deserializeCustomData(query.value(QSL("custom_data")).toString())); feed->setCustomDatabaseData(deserializeCustomData(query.value(QSL("custom_data")).toString()));

View File

@ -18,22 +18,6 @@ Category::Category(const Category& other) : RootItem(other) {
setKind(RootItem::Kind::Category); setKind(RootItem::Kind::Category);
} }
Category::Category(const QSqlRecord& record) : Category(nullptr) {
setId(record.value(CAT_DB_ID_INDEX).toInt());
setCustomId(record.value(CAT_DB_CUSTOM_ID_INDEX).toString());
if (customId().isEmpty()) {
setCustomId(QString::number(id()));
}
setTitle(record.value(CAT_DB_TITLE_INDEX).toString());
setDescription(record.value(CAT_DB_DESCRIPTION_INDEX).toString());
setCreationDate(TextFactory::parseDateTime(record.value(CAT_DB_DCREATED_INDEX).value<qint64>()).toLocalTime());
setIcon(qApp->icons()->fromByteArray(record.value(CAT_DB_ICON_INDEX).toByteArray()));
}
Category::~Category() = default;
void Category::updateCounts(bool including_total_count) { void Category::updateCounts(bool including_total_count) {
QList<Feed*> feeds; QList<Feed*> feeds;
@ -52,7 +36,6 @@ void Category::updateCounts(bool including_total_count) {
QSqlDatabase database = qApp->database()->connection(metaObject()->className()); QSqlDatabase database = qApp->database()->connection(metaObject()->className());
bool ok; bool ok;
QMap<QString, QPair<int, int>> counts = DatabaseQueries::getMessageCountsForCategory(database, QMap<QString, QPair<int, int>> counts = DatabaseQueries::getMessageCountsForCategory(database,
customId(), customId(),
getParentServiceRoot()->accountId(), getParentServiceRoot()->accountId(),

View File

@ -11,8 +11,6 @@ class Category : public RootItem {
public: public:
explicit Category(RootItem* parent = nullptr); explicit Category(RootItem* parent = nullptr);
explicit Category(const Category& other); explicit Category(const Category& other);
explicit Category(const QSqlRecord& record);
virtual ~Category();
void updateCounts(bool including_total_count); void updateCounts(bool including_total_count);
bool cleanMessages(bool clean_read_only); bool cleanMessages(bool clean_read_only);

View File

@ -25,27 +25,6 @@ Feed::Feed(RootItem* parent)
setKind(RootItem::Kind::Feed); setKind(RootItem::Kind::Feed);
} }
Feed::Feed(const QSqlRecord& record) : Feed(nullptr) {
setTitle(record.value(FDS_DB_TITLE_INDEX).toString());
setId(record.value(FDS_DB_ID_INDEX).toInt());
setSource(record.value(FDS_DB_SOURCE_INDEX).toString());
setCustomId(record.value(FDS_DB_CUSTOM_ID_INDEX).toString());
if (customId().isEmpty()) {
setCustomId(QString::number(id()));
}
setDescription(QString::fromUtf8(record.value(FDS_DB_DESCRIPTION_INDEX).toByteArray()));
setCreationDate(TextFactory::parseDateTime(record.value(FDS_DB_DCREATED_INDEX).value<qint64>()).toLocalTime());
setIcon(qApp->icons()->fromByteArray(record.value(FDS_DB_ICON_INDEX).toByteArray()));
setAutoUpdateType(static_cast<Feed::AutoUpdateType>(record.value(FDS_DB_UPDATE_TYPE_INDEX).toInt()));
setAutoUpdateInitialInterval(record.value(FDS_DB_UPDATE_INTERVAL_INDEX).toInt());
qDebugNN << LOGSEC_CORE
<< "Custom ID of feed when loading from DB is"
<< QUOTE_W_SPACE_DOT(customId());
}
Feed::Feed(const Feed& other) : RootItem(other) { Feed::Feed(const Feed& other) : RootItem(other) {
setKind(RootItem::Kind::Feed); setKind(RootItem::Kind::Feed);
@ -59,8 +38,6 @@ Feed::Feed(const Feed& other) : RootItem(other) {
setMessageFilters(other.messageFilters()); setMessageFilters(other.messageFilters());
} }
Feed::~Feed() = default;
QList<Message> Feed::undeletedMessages() const { QList<Message> Feed::undeletedMessages() const {
QSqlDatabase database = qApp->database()->connection(metaObject()->className()); QSqlDatabase database = qApp->database()->connection(metaObject()->className());

View File

@ -38,9 +38,7 @@ class Feed : public RootItem {
// Constructors. // Constructors.
explicit Feed(RootItem* parent = nullptr); explicit Feed(RootItem* parent = nullptr);
explicit Feed(const QSqlRecord& record);
explicit Feed(const Feed& other); explicit Feed(const Feed& other);
virtual ~Feed();
virtual QList<Message> undeletedMessages() const; virtual QList<Message> undeletedMessages() const;
virtual QString additionalTooltip() const; virtual QString additionalTooltip() const;

View File

@ -10,8 +10,6 @@
FeedlyFeed::FeedlyFeed(RootItem* parent) : Feed(parent) {} FeedlyFeed::FeedlyFeed(RootItem* parent) : Feed(parent) {}
FeedlyFeed::FeedlyFeed(const QSqlRecord& record) : Feed(record) {}
FeedlyServiceRoot* FeedlyFeed::serviceRoot() const { FeedlyServiceRoot* FeedlyFeed::serviceRoot() const {
return qobject_cast<FeedlyServiceRoot*>(getParentServiceRoot()); return qobject_cast<FeedlyServiceRoot*>(getParentServiceRoot());
} }

View File

@ -10,10 +10,10 @@ class FeedlyServiceRoot;
class FeedlyFeed : public Feed { class FeedlyFeed : public Feed {
public: public:
explicit FeedlyFeed(RootItem* parent = nullptr); explicit FeedlyFeed(RootItem* parent = nullptr);
explicit FeedlyFeed(const QSqlRecord& record);
FeedlyServiceRoot* serviceRoot() const; FeedlyServiceRoot* serviceRoot() const;
QList<Message> obtainNewMessages(bool* error_during_obtaining);
virtual QList<Message> obtainNewMessages(bool* error_during_obtaining);
}; };
#endif // FEEDLYFEED_H #endif // FEEDLYFEED_H

View File

@ -125,12 +125,7 @@ void FeedlyAccountDetails::performTest(const QNetworkProxy& custom_proxy) {
m_oauth->logout(false); m_oauth->logout(false);
if (m_ui.m_txtDeveloperAccessToken->lineEdit()->text().simplified().isEmpty()) { if (m_ui.m_txtDeveloperAccessToken->lineEdit()->text().simplified().isEmpty()) {
if (m_oauth->login()) { m_oauth->login();
m_ui.m_lblTestResult->setStatus(WidgetWithStatus::StatusType::Ok,
tr("You are already logged in."),
tr("Access granted."));
}
return; return;
} }
#endif #endif

View File

@ -16,22 +16,6 @@ GmailFeed::GmailFeed(const QString& title, const QString& custom_id, const QIcon
setIcon(icon); setIcon(icon);
} }
GmailFeed::GmailFeed(const QSqlRecord& record) : Feed(record) {
// Fixup icons to make them trully dynamic.
if (customId() == QSL(GMAIL_SYSTEM_LABEL_SENT)) {
setIcon(qApp->icons()->fromTheme(QSL("mail-sent")));
}
else if (customId() == QSL(GMAIL_SYSTEM_LABEL_DRAFT)) {
setIcon(qApp->icons()->fromTheme(QSL("gtk-edit")));
}
else if (customId() == QSL(GMAIL_SYSTEM_LABEL_SPAM)) {
setIcon(qApp->icons()->fromTheme(QSL("mail-mark-junk")));
}
else if (customId() == QSL(GMAIL_SYSTEM_LABEL_INBOX)) {
setIcon(qApp->icons()->fromTheme(QSL("mail-inbox")));
}
}
GmailServiceRoot* GmailFeed::serviceRoot() const { GmailServiceRoot* GmailFeed::serviceRoot() const {
return qobject_cast<GmailServiceRoot*>(getParentServiceRoot()); return qobject_cast<GmailServiceRoot*>(getParentServiceRoot());
} }

View File

@ -11,10 +11,10 @@ class GmailFeed : public Feed {
public: public:
explicit GmailFeed(RootItem* parent = nullptr); explicit GmailFeed(RootItem* parent = nullptr);
explicit GmailFeed(const QString& title, const QString& custom_id, const QIcon& icon, RootItem* parent = nullptr); explicit GmailFeed(const QString& title, const QString& custom_id, const QIcon& icon, RootItem* parent = nullptr);
explicit GmailFeed(const QSqlRecord& record);
GmailServiceRoot* serviceRoot() const; GmailServiceRoot* serviceRoot() const;
QList<Message> obtainNewMessages(bool* error_during_obtaining);
virtual QList<Message> obtainNewMessages(bool* error_during_obtaining);
}; };
#endif // GMAILFEED_H #endif // GMAILFEED_H

View File

@ -36,11 +36,9 @@ class GmailNetworkFactory : public QObject {
int batchSize() const; int batchSize() const;
void setBatchSize(int batch_size); void setBatchSize(int batch_size);
// Sends e-mail, returns its ID. // API methods.
QString sendEmail(Mimesis::Message msg, const QNetworkProxy& custom_proxy, Message* reply_to_message = nullptr); QString sendEmail(Mimesis::Message msg, const QNetworkProxy& custom_proxy, Message* reply_to_message = nullptr);
Downloader* downloadAttachment(const QString& msg_id, const QString& attachment_id, const QNetworkProxy& custom_proxy); Downloader* downloadAttachment(const QString& msg_id, const QString& attachment_id, const QNetworkProxy& custom_proxy);
QList<Message> messages(const QString& stream_id, Feed::Status& error, const QNetworkProxy& custom_proxy); QList<Message> messages(const QString& stream_id, Feed::Status& error, const QNetworkProxy& custom_proxy);
QNetworkReply::NetworkError markMessagesRead(RootItem::ReadStatus status, QNetworkReply::NetworkError markMessagesRead(RootItem::ReadStatus status,
QStringList custom_ids, QStringList custom_ids,

View File

@ -43,12 +43,6 @@ void FormEditGmailAccount::apply() {
void FormEditGmailAccount::loadAccountData() { void FormEditGmailAccount::loadAccountData() {
FormAccountDetails::loadAccountData(); FormAccountDetails::loadAccountData();
if (!m_creatingNew) {
// Disable "Cancel" button because all changes made to
// existing account are always saved anyway.
m_ui.m_buttonBox->button(QDialogButtonBox::StandardButton::Cancel)->setVisible(false);
}
m_details->m_oauth = account<GmailServiceRoot>()->network()->oauth(); m_details->m_oauth = account<GmailServiceRoot>()->network()->oauth();
m_details->hookNetwork(); m_details->hookNetwork();

View File

@ -7,7 +7,6 @@
#include "network-web/oauth2service.h" #include "network-web/oauth2service.h"
#include "network-web/webfactory.h" #include "network-web/webfactory.h"
#include "services/gmail/definitions.h" #include "services/gmail/definitions.h"
#include "services/gmail/gmailnetworkfactory.h"
GmailAccountDetails::GmailAccountDetails(QWidget* parent) GmailAccountDetails::GmailAccountDetails(QWidget* parent)
: QWidget(parent), m_oauth(nullptr) { : QWidget(parent), m_oauth(nullptr) {
@ -62,11 +61,7 @@ void GmailAccountDetails::testSetup() {
m_oauth->setClientSecret(m_ui.m_txtAppKey->lineEdit()->text()); m_oauth->setClientSecret(m_ui.m_txtAppKey->lineEdit()->text());
m_oauth->setRedirectUrl(m_ui.m_txtRedirectUrl->lineEdit()->text()); m_oauth->setRedirectUrl(m_ui.m_txtRedirectUrl->lineEdit()->text());
if (m_oauth->login()) { m_oauth->login();
m_ui.m_lblTestResult->setStatus(WidgetWithStatus::StatusType::Ok,
tr("You are already logged in."),
tr("Access granted."));
}
} }
void GmailAccountDetails::checkUsername(const QString& username) { void GmailAccountDetails::checkUsername(const QString& username) {

View File

@ -9,8 +9,6 @@
GreaderFeed::GreaderFeed(RootItem* parent) : Feed(parent) {} GreaderFeed::GreaderFeed(RootItem* parent) : Feed(parent) {}
GreaderFeed::GreaderFeed(const QSqlRecord& record) : Feed(record) {}
GreaderServiceRoot* GreaderFeed::serviceRoot() const { GreaderServiceRoot* GreaderFeed::serviceRoot() const {
return qobject_cast<GreaderServiceRoot*>(getParentServiceRoot()); return qobject_cast<GreaderServiceRoot*>(getParentServiceRoot());
} }

View File

@ -10,10 +10,10 @@ class GreaderServiceRoot;
class GreaderFeed : public Feed { class GreaderFeed : public Feed {
public: public:
explicit GreaderFeed(RootItem* parent = nullptr); explicit GreaderFeed(RootItem* parent = nullptr);
explicit GreaderFeed(const QSqlRecord& record);
GreaderServiceRoot* serviceRoot() const; GreaderServiceRoot* serviceRoot() const;
QList<Message> obtainNewMessages(bool* error_during_obtaining);
virtual QList<Message> obtainNewMessages(bool* error_during_obtaining);
}; };
#endif // GREADERFEED_H #endif // GREADERFEED_H

View File

@ -25,12 +25,6 @@ FormEditInoreaderAccount::FormEditInoreaderAccount(QWidget* parent)
void FormEditInoreaderAccount::apply() { void FormEditInoreaderAccount::apply() {
FormAccountDetails::apply(); FormAccountDetails::apply();
if (!m_creatingNew) {
// Disable "Cancel" button because all changes made to
// existing account are always saved anyway.
m_ui.m_buttonBox->button(QDialogButtonBox::StandardButton::Cancel)->setVisible(false);
}
account<InoreaderServiceRoot>()->network()->oauth()->logout(false); account<InoreaderServiceRoot>()->network()->oauth()->logout(false);
account<InoreaderServiceRoot>()->network()->oauth()->setClientId(m_details->m_ui.m_txtAppId->lineEdit()->text()); account<InoreaderServiceRoot>()->network()->oauth()->setClientId(m_details->m_ui.m_txtAppId->lineEdit()->text());
account<InoreaderServiceRoot>()->network()->oauth()->setClientSecret(m_details->m_ui.m_txtAppKey->lineEdit()->text()); account<InoreaderServiceRoot>()->network()->oauth()->setClientSecret(m_details->m_ui.m_txtAppKey->lineEdit()->text());
@ -51,12 +45,6 @@ void FormEditInoreaderAccount::apply() {
void FormEditInoreaderAccount::loadAccountData() { void FormEditInoreaderAccount::loadAccountData() {
FormAccountDetails::loadAccountData(); FormAccountDetails::loadAccountData();
if (!m_creatingNew) {
// Disable "Cancel" button because all changes made to
// existing account are always saved anyway.
m_ui.m_buttonBox->button(QDialogButtonBox::StandardButton::Cancel)->setVisible(false);
}
m_details->m_oauth = account<InoreaderServiceRoot>()->network()->oauth(); m_details->m_oauth = account<InoreaderServiceRoot>()->network()->oauth();
m_details->hookNetwork(); m_details->hookNetwork();

View File

@ -62,11 +62,7 @@ void InoreaderAccountDetails::testSetup() {
m_oauth->setClientSecret(m_ui.m_txtAppKey->lineEdit()->text()); m_oauth->setClientSecret(m_ui.m_txtAppKey->lineEdit()->text());
m_oauth->setRedirectUrl(m_ui.m_txtRedirectUrl->lineEdit()->text()); m_oauth->setRedirectUrl(m_ui.m_txtRedirectUrl->lineEdit()->text());
if (m_oauth->login()) { m_oauth->login();
m_ui.m_lblTestResult->setStatus(WidgetWithStatus::StatusType::Ok,
tr("You are already logged in."),
tr("Access granted."));
}
} }
void InoreaderAccountDetails::checkUsername(const QString& username) { void InoreaderAccountDetails::checkUsername(const QString& username) {

View File

@ -9,8 +9,6 @@
InoreaderFeed::InoreaderFeed(RootItem* parent) : Feed(parent) {} InoreaderFeed::InoreaderFeed(RootItem* parent) : Feed(parent) {}
InoreaderFeed::InoreaderFeed(const QSqlRecord& record) : Feed(record) {}
InoreaderServiceRoot* InoreaderFeed::serviceRoot() const { InoreaderServiceRoot* InoreaderFeed::serviceRoot() const {
return qobject_cast<InoreaderServiceRoot*>(getParentServiceRoot()); return qobject_cast<InoreaderServiceRoot*>(getParentServiceRoot());
} }

View File

@ -10,10 +10,10 @@ class InoreaderServiceRoot;
class InoreaderFeed : public Feed { class InoreaderFeed : public Feed {
public: public:
explicit InoreaderFeed(RootItem* parent = nullptr); explicit InoreaderFeed(RootItem* parent = nullptr);
explicit InoreaderFeed(const QSqlRecord& record);
InoreaderServiceRoot* serviceRoot() const; InoreaderServiceRoot* serviceRoot() const;
QList<Message> obtainNewMessages(bool* error_during_obtaining);
virtual QList<Message> obtainNewMessages(bool* error_during_obtaining);
}; };
#endif // INOREADERFEED_H #endif // INOREADERFEED_H

View File

@ -11,10 +11,6 @@
OwnCloudFeed::OwnCloudFeed(RootItem* parent) : Feed(parent) {} OwnCloudFeed::OwnCloudFeed(RootItem* parent) : Feed(parent) {}
OwnCloudFeed::OwnCloudFeed(const QSqlRecord& record) : Feed(record) {}
OwnCloudFeed::~OwnCloudFeed() = default;
bool OwnCloudFeed::canBeDeleted() const { bool OwnCloudFeed::canBeDeleted() const {
return true; return true;
} }

View File

@ -12,16 +12,14 @@ class OwnCloudFeed : public Feed {
public: public:
explicit OwnCloudFeed(RootItem* parent = nullptr); explicit OwnCloudFeed(RootItem* parent = nullptr);
explicit OwnCloudFeed(const QSqlRecord& record);
virtual ~OwnCloudFeed();
bool canBeDeleted() const; virtual bool canBeDeleted() const;
bool deleteViaGui(); virtual bool deleteViaGui();
virtual QList<Message> obtainNewMessages(bool* error_during_obtaining);
private:
bool removeItself(); bool removeItself();
OwnCloudServiceRoot* serviceRoot() const; OwnCloudServiceRoot* serviceRoot() const;
QList<Message> obtainNewMessages(bool* error_during_obtaining);
}; };
#endif // OWNCLOUDFEED_H #endif // OWNCLOUDFEED_H

View File

@ -85,5 +85,3 @@ bool StandardCategory::removeItself() {
return false; return false;
} }
} }
StandardCategory::StandardCategory(const QSqlRecord& record) : Category(record) {}

View File

@ -15,8 +15,6 @@ class StandardCategory : public Category {
public: public:
explicit StandardCategory(RootItem* parent_item = nullptr); explicit StandardCategory(RootItem* parent_item = nullptr);
explicit StandardCategory(const StandardCategory& other) = default; explicit StandardCategory(const StandardCategory& other) = default;
explicit StandardCategory(const QSqlRecord& record);
virtual ~StandardCategory() = default;
StandardServiceRoot* serviceRoot() const; StandardServiceRoot* serviceRoot() const;

View File

@ -59,14 +59,6 @@ StandardFeed::StandardFeed(const StandardFeed& other)
m_password = other.password(); m_password = other.password();
} }
StandardFeed::StandardFeed(const QSqlRecord& record) : Feed(record) {
m_networkError = QNetworkReply::NetworkError::NoError;
}
StandardFeed::~StandardFeed() {
qDebugNN << LOGSEC_CORE << "Destroying StandardFeed instance.";
}
QList<QAction*> StandardFeed::contextMenuFeedsList() { QList<QAction*> StandardFeed::contextMenuFeedsList() {
return serviceRoot()->getContextMenuForFeed(this); return serviceRoot()->getContextMenuForFeed(this);
} }

View File

@ -11,7 +11,6 @@
#include <QNetworkProxy> #include <QNetworkProxy>
#include <QNetworkReply> #include <QNetworkReply>
#include <QPair> #include <QPair>
#include <QSqlRecord>
class StandardServiceRoot; class StandardServiceRoot;
@ -39,8 +38,6 @@ class StandardFeed : public Feed {
explicit StandardFeed(RootItem* parent_item = nullptr); explicit StandardFeed(RootItem* parent_item = nullptr);
explicit StandardFeed(const StandardFeed& other); explicit StandardFeed(const StandardFeed& other);
explicit StandardFeed(const QSqlRecord& record);
virtual ~StandardFeed();
QList<QAction*> contextMenuFeedsList(); QList<QAction*> contextMenuFeedsList();
QString additionalTooltip() const; QString additionalTooltip() const;

View File

@ -15,10 +15,6 @@
TtRssFeed::TtRssFeed(RootItem* parent) : Feed(parent) {} TtRssFeed::TtRssFeed(RootItem* parent) : Feed(parent) {}
TtRssFeed::TtRssFeed(const QSqlRecord& record) : Feed(record) {}
TtRssFeed::~TtRssFeed() = default;
TtRssServiceRoot* TtRssFeed::serviceRoot() const { TtRssServiceRoot* TtRssFeed::serviceRoot() const {
return qobject_cast<TtRssServiceRoot*>(getParentServiceRoot()); return qobject_cast<TtRssServiceRoot*>(getParentServiceRoot());
} }

View File

@ -5,8 +5,6 @@
#include "services/abstract/feed.h" #include "services/abstract/feed.h"
#include <QSqlRecord>
class TtRssServiceRoot; class TtRssServiceRoot;
class TtRssFeed : public Feed { class TtRssFeed : public Feed {
@ -14,17 +12,15 @@ class TtRssFeed : public Feed {
public: public:
explicit TtRssFeed(RootItem* parent = nullptr); explicit TtRssFeed(RootItem* parent = nullptr);
explicit TtRssFeed(const QSqlRecord& record);
virtual ~TtRssFeed();
TtRssServiceRoot* serviceRoot() const; TtRssServiceRoot* serviceRoot() const;
bool canBeDeleted() const; virtual bool canBeDeleted() const;
bool deleteViaGui(); virtual bool deleteViaGui();
virtual QList<Message> obtainNewMessages(bool* error_during_obtaining);
private:
bool removeItself(); bool removeItself();
QList<Message> obtainNewMessages(bool* error_during_obtaining);
}; };
#endif // TTRSSFEED_H #endif // TTRSSFEED_H