diff --git a/src/librssguard/miscellaneous/application.cpp b/src/librssguard/miscellaneous/application.cpp index 5b3f182a1..62d4b04eb 100644 --- a/src/librssguard/miscellaneous/application.cpp +++ b/src/librssguard/miscellaneous/application.cpp @@ -181,6 +181,9 @@ Application::Application(const QString& id, int& argc, char** argv, const QStrin m_webFactory->engineProfile()->setHttpCacheType(QWebEngineProfile::HttpCacheType::DiskHttpCache); m_webFactory->engineProfile()->setPersistentStoragePath(web_data_root + QDir::separator() + QSL("storage")); + m_webFactory->loadCustomCss(userDataFolder() + QDir::separator() + QSL("web") + QDir::separator() + + QSL("user-styles.css")); + if (custom_ua.isEmpty()) { m_webFactory->engineProfile()->setHttpUserAgent(QString(HTTP_COMPLETE_USERAGENT)); } diff --git a/src/librssguard/network-web/webfactory.cpp b/src/librssguard/network-web/webfactory.cpp index f5a4ba612..c4eabca61 100644 --- a/src/librssguard/network-web/webfactory.cpp +++ b/src/librssguard/network-web/webfactory.cpp @@ -89,6 +89,36 @@ bool WebFactory::sendMessageViaEmail(const Message& message) { } } +#if defined(USE_WEBENGINE) +void WebFactory::loadCustomCss(const QString user_styles_path) { + if (QFile::exists(user_styles_path)) { + QByteArray css_data = IOFactory::readFile(user_styles_path); + QString name = "rssguard-user-styles"; + QWebEngineScript script; + QString s = QSL("(function() {" + " css = document.createElement('style');" + " css.type = 'text/css';" + " css.id = '%1';" + " document.head.appendChild(css);" + " css.innerText = '%2';" + "})()") + .arg(name, css_data.simplified()); + script.setName(name); + script.setSourceCode(s); + script.setInjectionPoint(QWebEngineScript::DocumentReady); + script.setRunsOnSubFrames(false); + script.setWorldId(QWebEngineScript::ApplicationWorld); + + m_engineProfile->scripts()->insert(script); + + qDebugNN << LOGSEC_CORE << "Loading user CSS style file" << QUOTE_W_SPACE_DOT(user_styles_path); + } + else { + qWarningNN << LOGSEC_CORE << "User CSS style was not provided in file" << QUOTE_W_SPACE_DOT(user_styles_path); + } +} +#endif + bool WebFactory::openUrlInExternalBrowser(const QString& url) const { qDebugNN << LOGSEC_NETWORK << "We are trying to open URL" << QUOTE_W_SPACE_DOT(url); diff --git a/src/librssguard/network-web/webfactory.h b/src/librssguard/network-web/webfactory.h index 74d5fad6b..36d7f3221 100644 --- a/src/librssguard/network-web/webfactory.h +++ b/src/librssguard/network-web/webfactory.h @@ -55,6 +55,10 @@ class WebFactory : public QObject { bool openUrlInExternalBrowser(const QString& url) const; bool sendMessageViaEmail(const Message& message); +#if defined(USE_WEBENGINE) + void loadCustomCss(const QString user_styles_path); +#endif + QString customUserAgent() const; void setCustomUserAgent(const QString& user_agent);