diff --git a/resources/desktop/com.github.rssguard.appdata.xml b/resources/desktop/com.github.rssguard.appdata.xml index cfd59e2fe..757c94ea9 100644 --- a/resources/desktop/com.github.rssguard.appdata.xml +++ b/resources/desktop/com.github.rssguard.appdata.xml @@ -24,7 +24,7 @@ https://github.com/sponsors/martinrotter - + none diff --git a/src/librssguard/core/message.h b/src/librssguard/core/message.h index a78c7f1f8..48406644c 100644 --- a/src/librssguard/core/message.h +++ b/src/librssguard/core/message.h @@ -3,7 +3,7 @@ #ifndef MESSAGE_H #define MESSAGE_H -#include "definitions/definitions.h" +//#include "definitions/definitions.h" #include #include diff --git a/src/librssguard/core/messageobject.cpp b/src/librssguard/core/messageobject.cpp index b7d8cef2b..692fdee08 100644 --- a/src/librssguard/core/messageobject.cpp +++ b/src/librssguard/core/messageobject.cpp @@ -4,6 +4,7 @@ #include "3rd-party/boolinq/boolinq.h" #include "database/databasefactory.h" +#include "definitions/definitions.h" #include #include diff --git a/src/librssguard/definitions/definitions.h b/src/librssguard/definitions/definitions.h index 2056a0600..4a7dd2cd2 100644 --- a/src/librssguard/definitions/definitions.h +++ b/src/librssguard/definitions/definitions.h @@ -165,7 +165,7 @@ #if defined(USE_WEBENGINE) #define HTTP_COMPLETE_USERAGENT \ - (QWebEngineProfile::defaultProfile()->httpUserAgent().toLocal8Bit() + QByteArrayLiteral(" ") + \ + (qApp->web()->engineProfile()->httpUserAgent().toLocal8Bit() + QByteArrayLiteral(" ") + \ QByteArrayLiteral(APP_USERAGENT)) #else #define HTTP_COMPLETE_USERAGENT \ diff --git a/src/librssguard/gui/dialogs/formabout.cpp b/src/librssguard/gui/dialogs/formabout.cpp index 86cb06928..944e50c13 100644 --- a/src/librssguard/gui/dialogs/formabout.cpp +++ b/src/librssguard/gui/dialogs/formabout.cpp @@ -11,6 +11,7 @@ #include "miscellaneous/iconfactory.h" #include "miscellaneous/settingsproperties.h" #include "miscellaneous/textfactory.h" +#include "network-web/webfactory.h" #include #include @@ -18,10 +19,6 @@ #include #include -#if defined(USE_WEBENGINE) -#include -#endif - FormAbout::FormAbout(QWidget* parent) : QDialog(parent) { m_ui.setupUi(this); m_ui.m_lblIcon->setPixmap(QPixmap(APP_ICON_PATH)); @@ -68,7 +65,7 @@ void FormAbout::loadSettingsAndPaths() { QDir::toNativeSeparators(qApp->nodejs()->packageFolder()) .replace(user_data_path, QSL(USER_DATA_PLACEHOLDER)), #if defined(USE_WEBENGINE) - QDir::toNativeSeparators(QWebEngineProfile::defaultProfile()->cachePath()) + QDir::toNativeSeparators(qApp->web()->engineProfile()->cachePath()) .replace(user_data_path, QSL(USER_DATA_PLACEHOLDER)) #else QSL("-") diff --git a/src/librssguard/gui/messagepreviewer.cpp b/src/librssguard/gui/messagepreviewer.cpp index f1c20a8aa..3d2fa3086 100644 --- a/src/librssguard/gui/messagepreviewer.cpp +++ b/src/librssguard/gui/messagepreviewer.cpp @@ -107,6 +107,10 @@ void MessagePreviewer::clear() { m_message = Message(); } +void MessagePreviewer::showItemInfo(RootItem* item) { + m_msgBrowser->setHtml(item->additionalTooltip()); +} + void MessagePreviewer::hideToolbar() { m_toolBar->setVisible(false); } diff --git a/src/librssguard/gui/messagepreviewer.h b/src/librssguard/gui/messagepreviewer.h index edbaeb9e6..c29ef030c 100644 --- a/src/librssguard/gui/messagepreviewer.h +++ b/src/librssguard/gui/messagepreviewer.h @@ -17,7 +17,7 @@ class QToolBar; class WebBrowser; class LabelButton : public QToolButton { - Q_OBJECT + Q_OBJECT public: explicit LabelButton(QWidget* parent = nullptr); @@ -30,7 +30,7 @@ class LabelButton : public QToolButton { }; class MessagePreviewer : public QWidget { - Q_OBJECT + Q_OBJECT public: explicit MessagePreviewer(QWidget* parent = nullptr); @@ -43,6 +43,7 @@ class MessagePreviewer : public QWidget { public slots: void setToolbarsVisible(bool visible); void clear(); + void showItemInfo(RootItem* item); void hideToolbar(); void loadUrl(const QString& url); void loadMessage(const Message& message, RootItem* root); diff --git a/src/librssguard/gui/webviewers/webengine/webengineviewer.cpp b/src/librssguard/gui/webviewers/webengine/webengineviewer.cpp index ed03406f7..03ae28363 100644 --- a/src/librssguard/gui/webviewers/webengine/webengineviewer.cpp +++ b/src/librssguard/gui/webviewers/webengine/webengineviewer.cpp @@ -26,7 +26,6 @@ #include #endif -#include #include WebEngineViewer::WebEngineViewer(QWidget* parent) : QWebEngineView(parent), m_browser(nullptr), m_root(nullptr) { @@ -218,13 +217,10 @@ void WebEngineViewer::setVerticalScrollBarPosition(double pos) { void WebEngineViewer::applyFont(const QFont& fon) { auto pixel_size = QFontMetrics(fon).ascent(); - QWebEngineProfile::defaultProfile()->settings()->setFontFamily(QWebEngineSettings::FontFamily::StandardFont, - fon.family()); - QWebEngineProfile::defaultProfile()->settings()->setFontFamily(QWebEngineSettings::FontFamily::SerifFont, - fon.family()); - QWebEngineProfile::defaultProfile()->settings()->setFontFamily(QWebEngineSettings::FontFamily::SansSerifFont, - fon.family()); - QWebEngineProfile::defaultProfile()->settings()->setFontSize(QWebEngineSettings::DefaultFontSize, pixel_size); + qApp->web()->engineProfile()->settings()->setFontFamily(QWebEngineSettings::FontFamily::StandardFont, fon.family()); + qApp->web()->engineProfile()->settings()->setFontFamily(QWebEngineSettings::FontFamily::SerifFont, fon.family()); + qApp->web()->engineProfile()->settings()->setFontFamily(QWebEngineSettings::FontFamily::SansSerifFont, fon.family()); + qApp->web()->engineProfile()->settings()->setFontSize(QWebEngineSettings::DefaultFontSize, pixel_size); } qreal WebEngineViewer::zoomFactor() const { diff --git a/src/librssguard/gui/webviewers/webviewer.h b/src/librssguard/gui/webviewers/webviewer.h index f2ea88169..f9b5e3ae2 100644 --- a/src/librssguard/gui/webviewers/webviewer.h +++ b/src/librssguard/gui/webviewers/webviewer.h @@ -3,6 +3,8 @@ #include "core/message.h" +#include "definitions/definitions.h" + #include class WebBrowser; diff --git a/src/librssguard/miscellaneous/application.cpp b/src/librssguard/miscellaneous/application.cpp index a53e5b3d6..bd71d6d4d 100644 --- a/src/librssguard/miscellaneous/application.cpp +++ b/src/librssguard/miscellaneous/application.cpp @@ -50,8 +50,6 @@ #else #include #endif - -#include #endif #if defined(Q_OS_WIN) @@ -153,17 +151,15 @@ Application::Application(const QString& id, int& argc, char** argv, const QStrin const QString web_data_root = userDataFolder() + QDir::separator() + QSL("web"); - QWebEngineProfile::defaultProfile()->setCachePath(web_data_root + QDir::separator() + QSL("cache")); - QWebEngineProfile::defaultProfile()->setPersistentStoragePath(web_data_root + QDir::separator() + QSL("storage")); - QWebEngineProfile::defaultProfile()->setHttpUserAgent(QString(HTTP_COMPLETE_USERAGENT)); + m_webFactory->engineProfile()->setCachePath(web_data_root + QDir::separator() + QSL("cache")); + m_webFactory->engineProfile()->setHttpCacheType(QWebEngineProfile::HttpCacheType::DiskHttpCache); + m_webFactory->engineProfile()->setPersistentStoragePath(web_data_root + QDir::separator() + QSL("storage")); + m_webFactory->engineProfile()->setHttpUserAgent(QString(HTTP_COMPLETE_USERAGENT)); qDebugNN << LOGSEC_NETWORK << "Persistent web data storage path:" - << QUOTE_W_SPACE_DOT(QWebEngineProfile::defaultProfile()->persistentStoragePath()); + << QUOTE_W_SPACE_DOT(m_webFactory->engineProfile()->persistentStoragePath()); - connect(QWebEngineProfile::defaultProfile(), - &QWebEngineProfile::downloadRequested, - this, - &Application::downloadRequested); + connect(m_webFactory->engineProfile(), &QWebEngineProfile::downloadRequested, this, &Application::downloadRequested); #endif connect(m_webFactory->adBlock(), &AdBlockManager::processTerminated, this, &Application::onAdBlockFailure); diff --git a/src/librssguard/network-web/basenetworkaccessmanager.cpp b/src/librssguard/network-web/basenetworkaccessmanager.cpp index 18867fa26..79fee4100 100644 --- a/src/librssguard/network-web/basenetworkaccessmanager.cpp +++ b/src/librssguard/network-web/basenetworkaccessmanager.cpp @@ -4,26 +4,21 @@ #include "miscellaneous/application.h" #include "miscellaneous/textfactory.h" +#include "network-web/webfactory.h" #include #include #include -#if defined(USE_WEBENGINE) -#include -#endif - -BaseNetworkAccessManager::BaseNetworkAccessManager(QObject* parent) - : QNetworkAccessManager(parent) { +BaseNetworkAccessManager::BaseNetworkAccessManager(QObject* parent) : QNetworkAccessManager(parent) { connect(this, &BaseNetworkAccessManager::sslErrors, this, &BaseNetworkAccessManager::onSslErrors); loadSettings(); } void BaseNetworkAccessManager::loadSettings() { QNetworkProxy new_proxy; - const QNetworkProxy::ProxyType selected_proxy_type = static_cast(qApp->settings()->value(GROUP(Proxy), - SETTING(Proxy::Type)). - toInt()); + const QNetworkProxy::ProxyType selected_proxy_type = + static_cast(qApp->settings()->value(GROUP(Proxy), SETTING(Proxy::Type)).toInt()); if (selected_proxy_type == QNetworkProxy::ProxyType::NoProxy) { // No extra setting is needed, set new proxy and exit this method. @@ -35,10 +30,8 @@ void BaseNetworkAccessManager::loadSettings() { if (QNetworkProxy::applicationProxy().type() != QNetworkProxy::ProxyType::DefaultProxy && QNetworkProxy::applicationProxy().type() != QNetworkProxy::ProxyType::NoProxy) { qWarningNN << LOGSEC_NETWORK - << "Used proxy address:" - << QUOTE_W_SPACE_COMMA(QNetworkProxy::applicationProxy().hostName()) - << " type:" - << QUOTE_W_SPACE_DOT(QNetworkProxy::applicationProxy().type()); + << "Used proxy address:" << QUOTE_W_SPACE_COMMA(QNetworkProxy::applicationProxy().hostName()) + << " type:" << QUOTE_W_SPACE_DOT(QNetworkProxy::applicationProxy().type()); } setProxy(QNetworkProxy::applicationProxy()); @@ -48,9 +41,7 @@ void BaseNetworkAccessManager::loadSettings() { } void BaseNetworkAccessManager::onSslErrors(QNetworkReply* reply, const QList& error) { - qWarningNN << LOGSEC_NETWORK - << "Ignoring SSL errors for" - << QUOTE_W_SPACE_DOT(reply->url().toString()); + qWarningNN << LOGSEC_NETWORK << "Ignoring SSL errors for" << QUOTE_W_SPACE_DOT(reply->url().toString()); reply->ignoreSslErrors(error); } diff --git a/src/librssguard/network-web/cookiejar.cpp b/src/librssguard/network-web/cookiejar.cpp index 29834bb4d..b819f7bae 100644 --- a/src/librssguard/network-web/cookiejar.cpp +++ b/src/librssguard/network-web/cookiejar.cpp @@ -7,6 +7,7 @@ #include "miscellaneous/application.h" #include "miscellaneous/iofactory.h" #include "miscellaneous/settings.h" +#include "network-web/webfactory.h" #include #include @@ -15,16 +16,19 @@ #if defined(USE_WEBENGINE) #include -#include #endif CookieJar::CookieJar(QObject* parent) : QNetworkCookieJar(parent) { #if defined(USE_WEBENGINE) - // WebEngine does not store cookies, CookieJar does. - QWebEngineProfile::defaultProfile() - ->setPersistentCookiesPolicy(QWebEngineProfile::PersistentCookiesPolicy::NoPersistentCookies); + auto* web_factory = qobject_cast(parent); - m_webEngineCookies = QWebEngineProfile::defaultProfile()->cookieStore(); + if (web_factory != nullptr) { + // WebEngine does not store cookies, CookieJar does. + web_factory->engineProfile() + ->setPersistentCookiesPolicy(QWebEngineProfile::PersistentCookiesPolicy::NoPersistentCookies); + + m_webEngineCookies = web_factory->engineProfile()->cookieStore(); + } #endif // Load all cookies and also set them into WebEngine store. diff --git a/src/librssguard/network-web/webengine/networkurlinterceptor.cpp b/src/librssguard/network-web/webengine/networkurlinterceptor.cpp index ef7eca60d..7386462b6 100644 --- a/src/librssguard/network-web/webengine/networkurlinterceptor.cpp +++ b/src/librssguard/network-web/webengine/networkurlinterceptor.cpp @@ -23,8 +23,6 @@ #include "miscellaneous/settings.h" #include "network-web/webengine/urlinterceptor.h" -#include - NetworkUrlInterceptor::NetworkUrlInterceptor(QObject* parent) : QWebEngineUrlRequestInterceptor(parent), m_sendDnt(false) {} diff --git a/src/librssguard/network-web/webengine/webenginepage.cpp b/src/librssguard/network-web/webengine/webenginepage.cpp index 249bb29a1..34b46e567 100644 --- a/src/librssguard/network-web/webengine/webenginepage.cpp +++ b/src/librssguard/network-web/webengine/webenginepage.cpp @@ -17,7 +17,7 @@ #include #include -WebEnginePage::WebEnginePage(QObject* parent) : QWebEnginePage(parent) { +WebEnginePage::WebEnginePage(QObject* parent) : QWebEnginePage(qApp->web()->engineProfile(), parent) { setBackgroundColor(Qt::GlobalColor::transparent); connect(this, &QWebEnginePage::loadFinished, this, &WebEnginePage::hideUnwantedElements); diff --git a/src/librssguard/network-web/webfactory.cpp b/src/librssguard/network-web/webfactory.cpp index 4116c9192..c6751cf46 100644 --- a/src/librssguard/network-web/webfactory.cpp +++ b/src/librssguard/network-web/webfactory.cpp @@ -32,18 +32,19 @@ WebFactory::WebFactory(QObject* parent) : QObject(parent) { m_adBlock = new AdBlockManager(this); #if defined(USE_WEBENGINE) + m_engineProfile = new QWebEngineProfile(QSL(APP_LOW_NAME), this); m_engineSettings = nullptr; m_urlInterceptor = new NetworkUrlInterceptor(this); #endif - m_cookieJar = new CookieJar(nullptr); + m_cookieJar = new CookieJar(this); m_readability = new Readability(this); #if defined(USE_WEBENGINE) #if QT_VERSION >= 0x050D00 // Qt >= 5.13.0 - QWebEngineProfile::defaultProfile()->setUrlRequestInterceptor(m_urlInterceptor); + m_engineProfile->setUrlRequestInterceptor(m_urlInterceptor); #else - QWebEngineProfile::defaultProfile()->setRequestInterceptor(m_urlInterceptor); + m_engineProfile->setRequestInterceptor(m_urlInterceptor); #endif #endif } @@ -55,9 +56,9 @@ WebFactory::~WebFactory() { } #endif - if (m_cookieJar != nullptr) { + /*if (m_cookieJar != nullptr) { m_cookieJar->deleteLater(); - } + }*/ } bool WebFactory::sendMessageViaEmail(const Message& message) { @@ -271,6 +272,10 @@ NetworkUrlInterceptor* WebFactory::urlIinterceptor() const { return m_urlInterceptor; } +QWebEngineProfile* WebFactory::engineProfile() const { + return m_engineProfile; +} + QAction* WebFactory::engineSettingsAction() { if (m_engineSettings == nullptr) { m_engineSettings = @@ -363,7 +368,7 @@ void WebFactory::webEngineSettingChanged(bool enabled) { QWebEngineSettings::WebAttribute attribute = static_cast(act->data().toInt()); qApp->settings()->setValue(WebEngineAttributes::ID, QString::number(static_cast(attribute)), enabled); - QWebEngineProfile::defaultProfile()->settings()->setAttribute(attribute, act->isChecked()); + m_engineProfile->settings()->setAttribute(attribute, act->isChecked()); } QAction* WebFactory::createEngineSettingsAction(const QString& title, QWebEngineSettings::WebAttribute attribute) { @@ -374,7 +379,7 @@ QAction* WebFactory::createEngineSettingsAction(const QString& title, QWebEngine act->setChecked(qApp->settings() ->value(WebEngineAttributes::ID, QString::number(static_cast(attribute)), true) .toBool()); - QWebEngineProfile::defaultProfile()->settings()->setAttribute(attribute, act->isChecked()); + m_engineProfile->settings()->setAttribute(attribute, act->isChecked()); connect(act, &QAction::toggled, this, &WebFactory::webEngineSettingChanged); return act; } diff --git a/src/librssguard/network-web/webfactory.h b/src/librssguard/network-web/webfactory.h index b5986af11..b9b2107e4 100644 --- a/src/librssguard/network-web/webfactory.h +++ b/src/librssguard/network-web/webfactory.h @@ -5,13 +5,15 @@ #include -#include "core/messagesmodel.h" +#include "core/message.h" #include #if defined(USE_WEBENGINE) +#include #include +class QAction; class NetworkUrlInterceptor; #endif @@ -21,7 +23,7 @@ class CookieJar; class Readability; class WebFactory : public QObject { - Q_OBJECT + Q_OBJECT public: explicit WebFactory(QObject* parent = nullptr); @@ -43,6 +45,7 @@ class WebFactory : public QObject { #if defined(USE_WEBENGINE) NetworkUrlInterceptor* urlIinterceptor() const; + QWebEngineProfile* engineProfile() const; #endif CookieJar* cookieJar() const; @@ -68,6 +71,7 @@ class WebFactory : public QObject { AdBlockManager* m_adBlock; #if defined(USE_WEBENGINE) + QWebEngineProfile* m_engineProfile; NetworkUrlInterceptor* m_urlInterceptor; QAction* m_engineSettings; #endif diff --git a/src/librssguard/services/abstract/gui/custommessagepreviewer.h b/src/librssguard/services/abstract/gui/custommessagepreviewer.h index 39bd13e2d..c379c0504 100644 --- a/src/librssguard/services/abstract/gui/custommessagepreviewer.h +++ b/src/librssguard/services/abstract/gui/custommessagepreviewer.h @@ -10,14 +10,13 @@ class RootItem; class CustomMessagePreviewer : public QWidget { - Q_OBJECT + Q_OBJECT public: explicit CustomMessagePreviewer(QWidget* parent = nullptr); virtual ~CustomMessagePreviewer(); public: - // Clears displayed message. virtual void clear() = 0; diff --git a/src/librssguard/services/reddit/redditsubscription.cpp b/src/librssguard/services/reddit/redditsubscription.cpp index ec5a7aea4..320db3e9b 100644 --- a/src/librssguard/services/reddit/redditsubscription.cpp +++ b/src/librssguard/services/reddit/redditsubscription.cpp @@ -2,6 +2,7 @@ #include "services/reddit/redditsubscription.h" +#include "definitions/definitions.h" #include "services/reddit/redditserviceroot.h" RedditSubscription::RedditSubscription(RootItem* parent) : Feed(parent), m_prefixedName(QString()) {} diff --git a/src/librssguard/services/tt-rss/gui/ttrssaccountdetails.cpp b/src/librssguard/services/tt-rss/gui/ttrssaccountdetails.cpp index aac7073af..bbe1f6838 100644 --- a/src/librssguard/services/tt-rss/gui/ttrssaccountdetails.cpp +++ b/src/librssguard/services/tt-rss/gui/ttrssaccountdetails.cpp @@ -2,6 +2,7 @@ #include "services/tt-rss/gui/ttrssaccountdetails.h" +#include "definitions/definitions.h" #include "gui/guiutilities.h" #include "network-web/networkfactory.h" #include "services/tt-rss/definitions.h" diff --git a/src/librssguard/services/tt-rss/gui/ttrssfeeddetails.cpp b/src/librssguard/services/tt-rss/gui/ttrssfeeddetails.cpp index 1465fa67b..3279c7179 100644 --- a/src/librssguard/services/tt-rss/gui/ttrssfeeddetails.cpp +++ b/src/librssguard/services/tt-rss/gui/ttrssfeeddetails.cpp @@ -2,6 +2,7 @@ #include "services/tt-rss/gui/ttrssfeeddetails.h" +#include "definitions/definitions.h" #include "services/abstract/category.h" TtRssFeedDetails::TtRssFeedDetails(QWidget* parent) : QWidget(parent) { @@ -21,8 +22,9 @@ void TtRssFeedDetails::onUrlChanged(const QString& new_url) { } else if (!new_url.simplified().isEmpty()) { // New url is not well-formed but is not empty on the other hand. - ui.m_txtUrl->setStatus(LineEditWithStatus::StatusType::Warning, - tr(R"(The URL does not meet standard pattern. Does your URL start with "http://" or "https://" prefix.)")); + ui.m_txtUrl->setStatus( + LineEditWithStatus::StatusType::Warning, + tr(R"(The URL does not meet standard pattern. Does your URL start with "http://" or "https://" prefix.)")); } else { // New url is empty. @@ -30,16 +32,19 @@ void TtRssFeedDetails::onUrlChanged(const QString& new_url) { } } -void TtRssFeedDetails::loadCategories(const QList& categories, RootItem* root_item, RootItem* parent_to_select) { - ui.m_cmbParentCategory->addItem(root_item->fullIcon(), root_item->title(), QVariant::fromValue((void*) root_item)); +void TtRssFeedDetails::loadCategories(const QList& categories, + RootItem* root_item, + RootItem* parent_to_select) { + ui.m_cmbParentCategory->addItem(root_item->fullIcon(), root_item->title(), QVariant::fromValue((void*)root_item)); for (Category* category : categories) { - ui.m_cmbParentCategory->addItem(category->fullIcon(), category->title(), QVariant::fromValue((void*) category)); + ui.m_cmbParentCategory->addItem(category->fullIcon(), category->title(), QVariant::fromValue((void*)category)); } if (parent_to_select != nullptr) { if (parent_to_select->kind() == RootItem::Kind::Category) { - ui.m_cmbParentCategory->setCurrentIndex(ui.m_cmbParentCategory->findData(QVariant::fromValue((void*)parent_to_select))); + ui.m_cmbParentCategory + ->setCurrentIndex(ui.m_cmbParentCategory->findData(QVariant::fromValue((void*)parent_to_select))); } else if (parent_to_select->kind() == RootItem::Kind::Feed) { int target_item = ui.m_cmbParentCategory->findData(QVariant::fromValue((void*)parent_to_select->parent()));