aboutsummaryrefslogtreecommitdiff
path: root/plugins/ProfileEditor
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
parentInitial plugins testing (diff)
downloadsmolbote-2660fff9e6191808aa83197639a663b73a27bbfa.tar.xz
Moved ProfileView to ProfileEditorPlugin
Diffstat (limited to 'plugins/ProfileEditor')
-rw-r--r--plugins/ProfileEditor/CMakeLists.txt7
-rw-r--r--plugins/ProfileEditor/ProfileEditor.json4
-rw-r--r--plugins/ProfileEditor/forms/profileview.cpp119
-rw-r--r--plugins/ProfileEditor/forms/profileview.h37
-rw-r--r--plugins/ProfileEditor/forms/profileview.ui374
-rw-r--r--plugins/ProfileEditor/profileeditorplugin.cpp13
-rw-r--r--plugins/ProfileEditor/profileeditorplugin.h4
7 files changed, 542 insertions, 16 deletions
diff --git a/plugins/ProfileEditor/CMakeLists.txt b/plugins/ProfileEditor/CMakeLists.txt
index 3eaa0f5..ee1af7f 100644
--- a/plugins/ProfileEditor/CMakeLists.txt
+++ b/plugins/ProfileEditor/CMakeLists.txt
@@ -8,10 +8,13 @@ set(CMAKE_AUTOMOC ON)
add_library(ProfileEditorPlugin SHARED
profileeditorplugin.cpp
- profileeditorplugin.h)
+ profileeditorplugin.h
+ forms/profileview.cpp
+ forms/profileview.h
+ forms/profileview.ui)
target_include_directories(ProfileEditorPlugin
- PUBLIC ..)
+ PRIVATE ..)
target_link_libraries(ProfileEditorPlugin
PRIVATE Qt5::Widgets
diff --git a/plugins/ProfileEditor/ProfileEditor.json b/plugins/ProfileEditor/ProfileEditor.json
index e371eee..6a4ddea 100644
--- a/plugins/ProfileEditor/ProfileEditor.json
+++ b/plugins/ProfileEditor/ProfileEditor.json
@@ -1,5 +1,7 @@
{
"name": "Profile Editor",
+ "author": "Aqua-sama <aqua@iserlohn-fortress.net",
"shortcut": "Ctrl+F2",
- "author": "Aqua-sama <aqua@iserlohn-fortress.net"
+ "addToMenu": false,
+ "addToToolbar": true
}
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;
+ }
+}
diff --git a/plugins/ProfileEditor/forms/profileview.h b/plugins/ProfileEditor/forms/profileview.h
new file mode 100644
index 0000000..580bee9
--- /dev/null
+++ b/plugins/ProfileEditor/forms/profileview.h
@@ -0,0 +1,37 @@
+/*
+ * 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
+ */
+
+#ifndef PROFILEDIALOG_H
+#define PROFILEDIALOG_H
+
+#include <QDialog>
+#include <QWebEngineProfile>
+
+namespace Ui
+{
+class ProfileView;
+}
+
+class ProfileView : public QDialog
+{
+ Q_OBJECT
+
+public:
+ explicit ProfileView(QWebEngineProfile *profile, QWidget *parent = nullptr);
+ ~ProfileView() override;
+
+public slots:
+ void loadProfile();
+ void updateProfile();
+
+private:
+ Ui::ProfileView *ui;
+ QWebEngineProfile *m_profile;
+};
+
+#endif // PROFILEDIALOG_H
diff --git a/plugins/ProfileEditor/forms/profileview.ui b/plugins/ProfileEditor/forms/profileview.ui
new file mode 100644
index 0000000..1e6f94f
--- /dev/null
+++ b/plugins/ProfileEditor/forms/profileview.ui
@@ -0,0 +1,374 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ProfileView</class>
+ <widget class="QWidget" name="ProfileView">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>640</width>
+ <height>480</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Profile</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QTabWidget" name="tabWidget">
+ <property name="currentIndex">
+ <number>0</number>
+ </property>
+ <widget class="QWidget" name="httpTab">
+ <attribute name="title">
+ <string>HTTP</string>
+ </attribute>
+ <layout class="QFormLayout" name="formLayout_2">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>User Agent</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QPlainTextEdit" name="userAgent"/>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string>Accept Language</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string>Cache Type</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_6">
+ <property name="text">
+ <string>Cache Size</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QPlainTextEdit" name="acceptLanguage"/>
+ </item>
+ <item row="2" column="1">
+ <widget class="QComboBox" name="cacheType">
+ <item>
+ <property name="text">
+ <string>Memory Cache</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Disk Cache</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Disabled</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QLineEdit" name="cacheSize"/>
+ </item>
+ <item row="6" column="0">
+ <widget class="QLabel" name="storagePath_label">
+ <property name="text">
+ <string>Storage Path</string>
+ </property>
+ </widget>
+ </item>
+ <item row="6" column="1">
+ <widget class="QLineEdit" name="storagePath_lineEdit">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0">
+ <widget class="QLabel" name="cachePath_label">
+ <property name="text">
+ <string>Cache Path</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="1">
+ <widget class="QLineEdit" name="cachePath_lineEdit">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="1">
+ <widget class="QPushButton" name="clearCache_pushButton">
+ <property name="text">
+ <string>Clear Cache</string>
+ </property>
+ </widget>
+ </item>
+ <item row="7" column="0">
+ <widget class="QLabel" name="cookiePolicy_label">
+ <property name="text">
+ <string>Cookies</string>
+ </property>
+ </widget>
+ </item>
+ <item row="7" column="1">
+ <widget class="QComboBox" name="cookiePolicy">
+ <item>
+ <property name="text">
+ <string>No Persistent Cookies</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Allow Persistent Cookies</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Force Persistent Cookies</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="8" column="1">
+ <widget class="QPushButton" name="clearHistory_pushButton">
+ <property name="text">
+ <string>Clear History</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="settingsTab">
+ <attribute name="title">
+ <string>Settings</string>
+ </attribute>
+ <layout class="QVBoxLayout" name="settings_verticalLayout">
+ <item>
+ <widget class="QScrollArea" name="scrollArea">
+ <property name="widgetResizable">
+ <bool>true</bool>
+ </property>
+ <widget class="QWidget" name="scrollAreaWidgetContents">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>584</width>
+ <height>724</height>
+ </rect>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_4">
+ <item>
+ <widget class="QCheckBox" name="autoloadImages_checkBox">
+ <property name="text">
+ <string>Autoload images</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="autoloadIcons_checkBox">
+ <property name="text">
+ <string>Autoload icons</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="Line" name="line">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="javascriptEnabled">
+ <property name="text">
+ <string>JavaScript enabled</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="javascriptCanOpenWindows">
+ <property name="text">
+ <string>JavaScript can open windows</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="javascriptCanAccessClipboard">
+ <property name="text">
+ <string>JavaScript can access clipboard</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="javascriptCanActivateWindows">
+ <property name="text">
+ <string>JavaScript can activate windows</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="Line" name="line_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="checkBox_11">
+ <property name="text">
+ <string>CheckBox</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="checkBox_23">
+ <property name="text">
+ <string>CheckBox</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="checkBox_25">
+ <property name="text">
+ <string>CheckBox</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="checkBox_24">
+ <property name="text">
+ <string>CheckBox</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="checkBox_19">
+ <property name="text">
+ <string>CheckBox</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="checkBox_22">
+ <property name="text">
+ <string>CheckBox</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="checkBox_21">
+ <property name="text">
+ <string>CheckBox</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="checkBox_14">
+ <property name="text">
+ <string>CheckBox</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="checkBox_16">
+ <property name="text">
+ <string>CheckBox</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="checkBox_18">
+ <property name="text">
+ <string>CheckBox</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="checkBox_17">
+ <property name="text">
+ <string>CheckBox</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="checkBox_15">
+ <property name="text">
+ <string>CheckBox</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="checkBox_13">
+ <property name="text">
+ <string>CheckBox</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="checkBox_10">
+ <property name="text">
+ <string>CheckBox</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="checkBox_7">
+ <property name="text">
+ <string>CheckBox</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="checkBox_8">
+ <property name="text">
+ <string>CheckBox</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="checkBox_5">
+ <property name="text">
+ <string>CheckBox</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="checkBox_3">
+ <property name="text">
+ <string>CheckBox</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="checkBox">
+ <property name="text">
+ <string>CheckBox</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/plugins/ProfileEditor/profileeditorplugin.cpp b/plugins/ProfileEditor/profileeditorplugin.cpp
index 1f4f16e..e0b0af1 100644
--- a/plugins/ProfileEditor/profileeditorplugin.cpp
+++ b/plugins/ProfileEditor/profileeditorplugin.cpp
@@ -7,21 +7,12 @@
*/
#include "profileeditorplugin.h"
-#include <QLabel>
-#include <QVBoxLayout>
+#include "forms/profileview.h"
QWidget *ProfileEditorPlugin::createWidget(QWebEngineProfile *profile, QWidget *parent)
{
- QWidget *widget = new QWidget(parent);
+ auto *widget = new ProfileView(profile, parent);
widget->setWindowFlags(Qt::ToolTip);
widget->setVisible(false);
- auto *layout = new QVBoxLayout(widget);
- widget->setLayout(layout);
-
- QLabel *storageName_label = new QLabel(profile->storageName(), widget);
- if(storageName_label->text().isEmpty())
- storageName_label->setText(tr("Off-the-record"));
- layout->addWidget(storageName_label);
-
return widget;
}
diff --git a/plugins/ProfileEditor/profileeditorplugin.h b/plugins/ProfileEditor/profileeditorplugin.h
index 3115ab2..df2c5c4 100644
--- a/plugins/ProfileEditor/profileeditorplugin.h
+++ b/plugins/ProfileEditor/profileeditorplugin.h
@@ -9,10 +9,10 @@
#ifndef PROFILEEDITORPLUGIN_H
#define PROFILEEDITORPLUGIN_H
-#include <QWebEngineProfile>
-#include <QWidget>
#include <interfaces.h>
+class QWebEngineProfile;
+class QWidget;
class ProfileEditorPlugin : public QObject, public PluginInterface, public ProfileInterface
{
Q_OBJECT