aboutsummaryrefslogtreecommitdiff
path: root/plugins/ProfileEditor/forms/profileview.cpp
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2018-01-15 00:35:58 +0100
committerAqua-sama <aqua@iserlohn-fortress.net>2018-01-15 00:35:58 +0100
commit2660fff9e6191808aa83197639a663b73a27bbfa (patch)
treee01930c4202d87c5b74f701938a0004a952425a1 /plugins/ProfileEditor/forms/profileview.cpp
parentInitial plugins testing (diff)
downloadsmolbote-2660fff9e6191808aa83197639a663b73a27bbfa.tar.xz
Moved ProfileView to ProfileEditorPlugin
Diffstat (limited to 'plugins/ProfileEditor/forms/profileview.cpp')
-rw-r--r--plugins/ProfileEditor/forms/profileview.cpp119
1 files changed, 119 insertions, 0 deletions
diff --git a/plugins/ProfileEditor/forms/profileview.cpp b/plugins/ProfileEditor/forms/profileview.cpp
new file mode 100644
index 0000000..ef0fece
--- /dev/null
+++ b/plugins/ProfileEditor/forms/profileview.cpp
@@ -0,0 +1,119 @@
+/*
+ * 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: git://neueland.iserlohn-fortress.net/smolbote.git
+ *
+ * SPDX-License-Identifier: GPL-3.0
+ */
+
+#include "profileview.h"
+#include "ui_profileview.h"
+#include <QWebEngineSettings>
+
+inline void connectCheckBox(QCheckBox *checkBox, QWebEngineSettings *settings, QWebEngineSettings::WebAttribute attr)
+{
+ QObject::connect(checkBox, &QCheckBox::clicked, [settings, attr](bool checked){
+ settings->setAttribute(attr, checked);
+ });
+}
+
+
+ProfileView::ProfileView(QWebEngineProfile *profile, QWidget *parent)
+ : QDialog(parent)
+ , ui(new Ui::ProfileView)
+{
+ Q_CHECK_PTR(profile);
+ m_profile = profile;
+ ui->setupUi(this);
+
+ QWebEngineSettings *settings = m_profile->settings();
+ connectCheckBox(ui->autoloadImages_checkBox, settings, QWebEngineSettings::AutoLoadImages);
+ connectCheckBox(ui->autoloadIcons_checkBox, settings, QWebEngineSettings::AutoLoadIconsForPage);
+
+ connectCheckBox(ui->javascriptEnabled, settings, QWebEngineSettings::JavascriptEnabled);
+ connectCheckBox(ui->javascriptCanAccessClipboard, settings, QWebEngineSettings::JavascriptCanAccessClipboard);
+ connectCheckBox(ui->javascriptCanOpenWindows, settings, QWebEngineSettings::JavascriptCanOpenWindows);
+ connectCheckBox(ui->javascriptCanActivateWindows, settings, QWebEngineSettings::AllowWindowActivationFromJavaScript);
+
+ // actions
+ connect(ui->clearCache_pushButton, &QPushButton::clicked, [this]() {
+ this->m_profile->clearHttpCache();
+ });
+ connect(ui->clearHistory_pushButton, &QPushButton::clicked, [this]() {
+ this->m_profile->clearAllVisitedLinks();
+ });
+
+ loadProfile();
+}
+
+ProfileView::~ProfileView()
+{
+ delete ui;
+}
+
+void ProfileView::loadProfile()
+{
+ if(m_profile->storageName().isEmpty())
+ setWindowTitle(tr("Off-the-record"));
+ else
+ setWindowTitle(m_profile->storageName());
+
+ // http
+ ui->userAgent->setPlainText(m_profile->httpUserAgent());
+ ui->acceptLanguage->setPlainText(m_profile->httpAcceptLanguage());
+ ui->cacheType->setCurrentIndex(m_profile->httpCacheType());
+ ui->cacheSize->setText(QString::number(m_profile->httpCacheMaximumSize()));
+
+ // path
+ ui->storagePath_lineEdit->setText(m_profile->persistentStoragePath());
+ ui->cachePath_lineEdit->setText(m_profile->cachePath());
+
+ // settings
+ QWebEngineSettings *settings = m_profile->settings();
+ ui->autoloadImages_checkBox->setChecked(settings->testAttribute(QWebEngineSettings::AutoLoadImages));
+ ui->autoloadIcons_checkBox->setChecked(settings->testAttribute(QWebEngineSettings::AutoLoadIconsForPage));
+
+ ui->javascriptEnabled->setChecked(settings->testAttribute(QWebEngineSettings::JavascriptEnabled));
+ ui->javascriptCanAccessClipboard->setChecked(settings->testAttribute(QWebEngineSettings::JavascriptCanAccessClipboard));
+ ui->javascriptCanOpenWindows->setChecked(settings->testAttribute(QWebEngineSettings::JavascriptCanOpenWindows));
+ ui->javascriptCanActivateWindows->setChecked(settings->testAttribute(QWebEngineSettings::AllowWindowActivationFromJavaScript));
+
+ // policy
+ ui->cookiePolicy->setCurrentIndex(m_profile->persistentCookiesPolicy());
+}
+
+void ProfileView::updateProfile()
+{
+ // http
+ m_profile->setHttpUserAgent(ui->userAgent->toPlainText());
+ m_profile->setHttpAcceptLanguage(ui->acceptLanguage->toPlainText());
+ switch(ui->cacheType->currentIndex()) {
+ case 0:
+ m_profile->setHttpCacheType(QWebEngineProfile::MemoryHttpCache);
+ break;
+ case 1:
+ m_profile->setHttpCacheType(QWebEngineProfile::DiskHttpCache);
+ break;
+ case 2:
+ m_profile->setHttpCacheType(QWebEngineProfile::NoCache);
+ break;
+ default:
+ break;
+ }
+ m_profile->setHttpCacheMaximumSize(ui->cacheSize->text().toInt());
+
+ // policy
+ switch(ui->cookiePolicy->currentIndex()) {
+ case 0:
+ m_profile->setPersistentCookiesPolicy(QWebEngineProfile::NoPersistentCookies);
+ break;
+ case 1:
+ m_profile->setPersistentCookiesPolicy(QWebEngineProfile::AllowPersistentCookies);
+ break;
+ case 2:
+ m_profile->setPersistentCookiesPolicy(QWebEngineProfile::ForcePersistentCookies);
+ break;
+ default:
+ break;
+ }
+}