/* * This file is part of smolbote. It's copyrighted by the contributors recorded * in the version control history of the file, available from its original * location: https://neueland.iserlohn-fortress.net/gitea/aqua/smolbote * * SPDX-License-Identifier: GPL-3.0 */ #ifndef SMOLBOTE_WEBENGINEPROFILE_H #define SMOLBOTE_WEBENGINEPROFILE_H #include #include #include #include #include #include #include #include class WebProfileManager; class WebProfile : public QWebEngineProfile { friend class WebProfileManager; Q_OBJECT Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) Q_PROPERTY(QString search READ search WRITE setSearch NOTIFY searchChanged) Q_PROPERTY(QUrl homepage READ homepage WRITE setHomepage NOTIFY homepageChanged) Q_PROPERTY(QUrl newtab READ newtab WRITE setNewtab NOTIFY newtabChanged) // QWebEngineProfile should-be properties Q_PROPERTY(QString cachePath READ cachePath WRITE setCachePath NOTIFY propertyChanged) Q_PROPERTY(QString persistentStoragePath READ persistentStoragePath WRITE setPersistentStoragePath NOTIFY propertyChanged) Q_PROPERTY(int persistentCookiesPolicy READ persistentCookiesPolicy WRITE setPersistentCookiesPolicy NOTIFY propertyChanged) Q_PROPERTY(QString httpAcceptLanguage READ httpAcceptLanguage WRITE setHttpAcceptLanguage NOTIFY propertyChanged) Q_PROPERTY(int httpCacheMaximumSize READ httpCacheMaximumSize WRITE setHttpCacheMaximumSize NOTIFY propertyChanged) Q_PROPERTY(int httpCacheType READ httpCacheType WRITE setHttpCacheType NOTIFY propertyChanged) Q_PROPERTY(QString httpUserAgent READ httpUserAgent WRITE setHttpUserAgent NOTIFY propertyChanged) Q_PROPERTY(bool spellCheckEnabled READ isSpellCheckEnabled WRITE setSpellCheckEnabled NOTIFY propertyChanged) public: static WebProfile *defaultProfile(); static void setDefaultProfile(WebProfile *profile); ~WebProfile() = default; const QString name() const; void setName(const QString &name); const QVector cookies() const { return qAsConst(m_cookies); } const QMap headers() const { return qAsConst(m_headers); } // search url QString search() const; void setSearch(const QString &url); // homepage url QUrl homepage() const; void setHomepage(const QUrl &url); // new tab url QUrl newtab() const; void setNewtab(const QUrl &url); void setCachePath(const QString &path); void setPersistentStoragePath(const QString &path); void setPersistentCookiesPolicy(int policy); void setHttpAcceptLanguage(const QString &httpAcceptLanguage); void setHttpCacheMaximumSize(int maxSize); void setHttpCacheType(int type); void setHttpUserAgent(const QString &userAgent); void setHttpHeader(const QString &name, const QString &value); void removeHttpHeader(const QString &name); void setSpellCheckEnabled(bool enable); signals: void nameChanged(const QString &name); void searchChanged(const QString &url); void homepageChanged(const QUrl &url); void newtabChanged(const QUrl &url); void propertyChanged(const QString &name, const QVariant &value); void attributeChanged(const QWebEngineSettings::WebAttribute attribute, const bool value); void headerChanged(const QString &name, const QString &value); void headerRemoved(const QString &name); protected: // off-the-record constructor explicit WebProfile(const QString &name, QObject *parent = nullptr); // default constructor explicit WebProfile(const QString &storageName, const QString &name, QObject *parent = nullptr); private: QString m_name; QString m_search = QString("about:blank"); QUrl m_homepage = QUrl("about:blank"); QUrl m_newtab = QUrl("about:blank"); QVector m_cookies; QMap m_headers; }; #endif // SMOLBOTE_WEBENGINEPROFILE_H