diff --git a/src/core/feedsmodel.h b/src/core/feedsmodel.h index 4d5f014fa..86f56b288 100755 --- a/src/core/feedsmodel.h +++ b/src/core/feedsmodel.h @@ -87,7 +87,6 @@ class FeedsModel : public QAbstractItemModel { bool containsServiceRootFromEntryPoint(const ServiceEntryPoint *point) const; // Direct and the only global accessor to standard service root. - // NOTE: Standard service root is always activated. StandardServiceRoot *standardServiceRoot() const; // Returns the list of feeds which should be updated diff --git a/src/miscellaneous/application.cpp b/src/miscellaneous/application.cpp index e3e5e3e0f..d6c1d19b7 100755 --- a/src/miscellaneous/application.cpp +++ b/src/miscellaneous/application.cpp @@ -183,7 +183,7 @@ void Application::processExecutionMessage(const QString &message) { } else if (msg.startsWith(QL1S(URI_SCHEME_FEED_SHORT))) { // Application was running, and someone wants to add new feed. - StandardServiceRoot *root = qApp->mainForm()->tabWidget()->feedMessageViewer()->feedsView()->sourceModel()->standardServiceRoot(); + StandardServiceRoot *root = qApp->feedReader()->feedsModel()->standardServiceRoot(); if (root != nullptr) { root->checkArgumentForFeedAdding(msg); diff --git a/src/miscellaneous/feedreader.cpp b/src/miscellaneous/feedreader.cpp index 9f40b7106..59c08bc60 100644 --- a/src/miscellaneous/feedreader.cpp +++ b/src/miscellaneous/feedreader.cpp @@ -26,9 +26,16 @@ #include "core/messagesmodel.h" #include "core/messagesproxymodel.h" #include "core/feeddownloader.h" +#include "miscellaneous/databasecleaner.h" + +#include +#include -FeedReader::FeedReader(QObject *parent) : QObject(parent), m_feedServices(QList()) { +FeedReader::FeedReader(QObject *parent) + : QObject(parent), m_feedServices(QList()), m_autoUpdateTimer(new QTimer(this)), + m_feedDownloaderThread(nullptr), m_feedDownloader(nullptr), + m_dbCleanerThread(nullptr), m_dbCleaner(nullptr) { m_feedDownloader = new FeedDownloader(this); m_feedsModel = new FeedsModel(this); m_feedProxyModel = new FeedsProxyModel(m_feedsModel, this); @@ -52,6 +59,23 @@ QList FeedReader::feedServices() { return m_feedServices; } +DatabaseCleaner *FeedReader::databaseCleaner() { + if (m_dbCleaner == nullptr) { + m_dbCleaner = new DatabaseCleaner(); + m_dbCleanerThread = new QThread(); + + // Downloader setup. + qRegisterMetaType("CleanerOrders"); + m_dbCleaner->moveToThread(m_dbCleanerThread); + connect(m_dbCleanerThread, SIGNAL(finished()), m_dbCleanerThread, SLOT(deleteLater())); + + // Connections are made, start the feed downloader thread. + m_dbCleanerThread->start(); + } + + return m_dbCleaner; +} + FeedDownloader *FeedReader::feedDownloader() const { return m_feedDownloader; } diff --git a/src/miscellaneous/feedreader.h b/src/miscellaneous/feedreader.h index 59d3873cd..503fc8e23 100644 --- a/src/miscellaneous/feedreader.h +++ b/src/miscellaneous/feedreader.h @@ -27,6 +27,9 @@ class MessagesModel; class MessagesProxyModel; class FeedsProxyModel; class ServiceEntryPoint; +class DatabaseCleaner; +class QTimer; +class Feed; class FeedReader : public QObject { Q_OBJECT @@ -39,6 +42,9 @@ class FeedReader : public QObject { // "standard" service entry point. QList feedServices(); + // Access to DB cleaner. + DatabaseCleaner *databaseCleaner(); + FeedDownloader *feedDownloader() const; FeedsModel *feedsModel() const; MessagesModel *messagesModel() const; @@ -52,11 +58,22 @@ class FeedReader : public QObject { private: QList m_feedServices; - FeedDownloader *m_feedDownloader; FeedsModel *m_feedsModel; FeedsProxyModel *m_feedProxyModel; MessagesModel *m_messagesModel; MessagesProxyModel *m_messagesProxyModel; + + // Auto-update stuff. + QTimer *m_autoUpdateTimer; + bool m_globalAutoUpdateEnabled; + int m_globalAutoUpdateInitialInterval; + int m_globalAutoUpdateRemainingInterval; + + QThread *m_feedDownloaderThread; + FeedDownloader *m_feedDownloader; + + QThread *m_dbCleanerThread; + DatabaseCleaner *m_dbCleaner; }; #endif // FEEDREADER_H