aboutsummaryrefslogtreecommitdiff
path: root/lib/web/webprofile.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/web/webprofile.h')
-rw-r--r--lib/web/webprofile.h114
1 files changed, 114 insertions, 0 deletions
diff --git a/lib/web/webprofile.h b/lib/web/webprofile.h
new file mode 100644
index 0000000..31c5b44
--- /dev/null
+++ b/lib/web/webprofile.h
@@ -0,0 +1,114 @@
+/*
+ * 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/smolbote.hg
+ *
+ * SPDX-License-Identifier: GPL-3.0
+ */
+
+#ifndef SMOLBOTE_WEBENGINEPROFILE_H
+#define SMOLBOTE_WEBENGINEPROFILE_H
+
+#include <QHash>
+#include <QUrl>
+#include <QString>
+#include <QWebEngineProfile>
+
+class WebProfile : public QWebEngineProfile
+{
+ Q_OBJECT
+
+ 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 cachePathChanged)
+ Q_PROPERTY(QString persistentStoragePath READ persistentStoragePath WRITE setPersistentStoragePath NOTIFY persistentStoragePathChanged)
+
+ Q_PROPERTY(QString httpAcceptLanguage READ httpAcceptLanguage WRITE setHttpAcceptLanguage NOTIFY httpAcceptLanguageChanged)
+ Q_PROPERTY(int httpCacheMaximumSize READ httpCacheMaximumSize WRITE setHttpCacheMaximumSize NOTIFY httpCacheMaximumSizeChanged)
+ Q_PROPERTY(QString httpUserAgent READ httpUserAgent WRITE setHttpUserAgent NOTIFY httpUserAgentChanged)
+
+ Q_PROPERTY(bool spellCheckEnabled READ isSpellCheckEnabled WRITE setSpellCheckEnabled NOTIFY spellCheckEnabledChanged)
+
+public:
+ // off-the-record constructor
+ explicit WebProfile(QObject *parent = nullptr);
+ // default constructor
+ explicit WebProfile(const QString &name, QObject *parent = nullptr);
+
+ ~WebProfile() = default;
+
+ static void setDefaultProfile(WebProfile *profile)
+ {
+ Q_CHECK_PTR(profile);
+ WebProfile::profile = profile;
+ }
+ static WebProfile *defaultProfile()
+ {
+ Q_CHECK_PTR(WebProfile::profile);
+ return WebProfile::profile;
+ }
+
+ QString name() const
+ {
+ return m_name;
+ }
+
+ // 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 setHttpAcceptLanguage(const QString &httpAcceptLanguage);
+ void setHttpCacheMaximumSize(int maxSize);
+ void setHttpUserAgent(const QString &userAgent);
+
+ void setSpellCheckEnabled(bool enable);
+
+ void addBookmark(const QString &title, const QString &url)
+ {
+ if(!title.isEmpty() && !url.isEmpty())
+ emit addBookmarkRequested(title, url);
+ }
+
+signals:
+ void addBookmarkRequested(const QString &title, const QString &url);
+
+ void searchChanged(const QString &url);
+ void homepageChanged(const QUrl &url);
+ void newtabChanged(const QUrl &url);
+
+ void cachePathChanged(const QString &path);
+ void persistentStoragePathChanged(const QString &path);
+
+ void httpAcceptLanguageChanged(const QString &httpAcceptLanguage);
+ void httpCacheMaximumSizeChanged(int maxSize);
+ void httpUserAgentChanged(const QString &userAgent);
+
+ void spellCheckEnabledChanged(bool enable);
+
+private:
+ static WebProfile *profile;
+
+ QString m_name;
+ QString m_search = QString("about:blank");
+ QUrl m_homepage = QUrl("about:blank");
+ QUrl m_newtab = QUrl("about:blank");
+};
+
+void loadProfile(WebProfile *profile, const QHash<QString, QString> &defaults, const QString &path);
+//WebProfile *saveProfile(WebProfile *profile, const QString &path);
+
+#endif // SMOLBOTE_WEBENGINEPROFILE_H