diff --git a/src/librssguard/core/feeddownloader.cpp b/src/librssguard/core/feeddownloader.cpp index 0530c2754..de95e802a 100644 --- a/src/librssguard/core/feeddownloader.cpp +++ b/src/librssguard/core/feeddownloader.cpp @@ -2,6 +2,7 @@ #include "core/feeddownloader.h" +#include "core/messagefilter.h" #include "definitions/definitions.h" #include "services/abstract/cacheforserviceroot.h" #include "services/abstract/feed.h" @@ -45,7 +46,7 @@ void FeedDownloader::updateAvailableFeeds() { } } -void FeedDownloader::updateFeeds(const QList& feeds) { +void FeedDownloader::updateFeeds(const QList& feeds, const QList& msg_filters) { QMutexLocker locker(m_mutex); if (feeds.isEmpty()) { diff --git a/src/librssguard/core/feeddownloader.h b/src/librssguard/core/feeddownloader.h index 2d590d75d..5c78ea17d 100644 --- a/src/librssguard/core/feeddownloader.h +++ b/src/librssguard/core/feeddownloader.h @@ -10,9 +10,7 @@ #include "core/message.h" class Feed; - -class QThreadPool; - +class MessageFilter; class QMutex; // Represents results of batch feed updates. @@ -43,7 +41,7 @@ class FeedDownloader : public QObject { bool isUpdateRunning() const; public slots: - void updateFeeds(const QList& feeds); + void updateFeeds(const QList& feeds, const QList& msg_filters); void stopRunningUpdate(); signals: @@ -58,7 +56,6 @@ class FeedDownloader : public QObject { QList m_feeds; QMutex* m_mutex; - QThreadPool* m_threadPool; FeedDownloadResults m_results; int m_feedsUpdated; int m_feedsOriginalCount; diff --git a/src/librssguard/core/messagefilter.cpp b/src/librssguard/core/messagefilter.cpp new file mode 100755 index 000000000..7e30dd9e8 --- /dev/null +++ b/src/librssguard/core/messagefilter.cpp @@ -0,0 +1,9 @@ +// For license of this file, see /LICENSE.md. + +#include "core/messagefilter.h" + +MessageFilter::MessageFilter(QObject* parent) : QObject(parent) {} + +FilteringAction MessageFilter::filterMessage() { + return FilteringAction::Accept; +} diff --git a/src/librssguard/core/messagefilter.h b/src/librssguard/core/messagefilter.h new file mode 100755 index 000000000..d59aa7e37 --- /dev/null +++ b/src/librssguard/core/messagefilter.h @@ -0,0 +1,25 @@ +// For license of this file, see /LICENSE.md. + +#ifndef MESSAGEFILTER_H +#define MESSAGEFILTER_H + +#include + +#include "core/message.h" + +// Class which represents one message filter. +class MessageFilter : public QObject { + Q_OBJECT + + public: + explicit MessageFilter(QObject* parent = nullptr); + + FilteringAction filterMessage(); + + private: + int m_id; + QString m_name; + QString m_script; +}; + +#endif // MESSAGEFILTER_H diff --git a/src/librssguard/librssguard.pro b/src/librssguard/librssguard.pro index ec243ca05..73dba5619 100644 --- a/src/librssguard/librssguard.pro +++ b/src/librssguard/librssguard.pro @@ -33,6 +33,7 @@ HEADERS += core/feeddownloader.h \ core/feedsmodel.h \ core/feedsproxymodel.h \ core/message.h \ + core/messagefilter.h \ core/messagesmodel.h \ core/messagesmodelcache.h \ core/messagesmodelsqllayer.h \ @@ -176,6 +177,7 @@ SOURCES += core/feeddownloader.cpp \ core/feedsmodel.cpp \ core/feedsproxymodel.cpp \ core/message.cpp \ + core/messagefilter.cpp \ core/messagesmodel.cpp \ core/messagesmodelcache.cpp \ core/messagesmodelsqllayer.cpp \ diff --git a/src/librssguard/miscellaneous/databasefactory.cpp b/src/librssguard/miscellaneous/databasefactory.cpp index 2518393f8..16b70e1d1 100644 --- a/src/librssguard/miscellaneous/databasefactory.cpp +++ b/src/librssguard/miscellaneous/databasefactory.cpp @@ -516,6 +516,7 @@ QString DatabaseFactory::obtainBeginTransactionSql() const { void DatabaseFactory::sqliteSaveMemoryDatabase() { qDebug("Saving in-memory working database back to persistent file-based storage."); + QSqlDatabase database = sqliteConnection(objectName(), DesiredType::StrictlyInMemory); QSqlDatabase file_database = sqliteConnection(objectName(), DesiredType::StrictlyFileBased); QSqlQuery copy_contents(database); diff --git a/src/librssguard/miscellaneous/feedreader.cpp b/src/librssguard/miscellaneous/feedreader.cpp index 0b86051d3..9c99f6575 100644 --- a/src/librssguard/miscellaneous/feedreader.cpp +++ b/src/librssguard/miscellaneous/feedreader.cpp @@ -44,6 +44,7 @@ FeedReader::FeedReader(QObject* parent) FeedReader::~FeedReader() { qDebug("Destroying FeedReader instance."); qDeleteAll(m_feedServices); + qDeleteAll(m_messageFilters); } QList FeedReader::feedServices() { @@ -74,6 +75,7 @@ void FeedReader::updateFeeds(const QList& feeds) { m_feedDownloader = new FeedDownloader(); // Downloader setup. + qRegisterMetaType>("QList"); qRegisterMetaType>("QList"); m_feedDownloader->moveToThread(m_feedDownloaderThread); @@ -89,7 +91,9 @@ void FeedReader::updateFeeds(const QList& feeds) { } QMetaObject::invokeMethod(m_feedDownloader, "updateFeeds", - Qt::ConnectionType::QueuedConnection, Q_ARG(QList, feeds)); + Qt::ConnectionType::QueuedConnection, + Q_ARG(QList, feeds), + Q_ARG(QList, m_messageFilters)); } void FeedReader::updateAutoUpdateStatus() { diff --git a/src/librssguard/miscellaneous/feedreader.h b/src/librssguard/miscellaneous/feedreader.h index 94cd49224..82459faf7 100644 --- a/src/librssguard/miscellaneous/feedreader.h +++ b/src/librssguard/miscellaneous/feedreader.h @@ -6,22 +6,17 @@ #include #include "core/feeddownloader.h" +#include "core/messagefilter.h" #include "services/abstract/feed.h" #include class FeedsModel; - class MessagesModel; - class MessagesProxyModel; - class FeedsProxyModel; - class ServiceEntryPoint; - class QTimer; - class QThread; class RSSGUARD_DLLSPEC FeedReader : public QObject { @@ -73,6 +68,7 @@ class RSSGUARD_DLLSPEC FeedReader : public QObject { private: QList m_feedServices; + QList m_messageFilters; FeedsModel* m_feedsModel; FeedsProxyModel* m_feedsProxyModel; MessagesModel* m_messagesModel;