aboutsummaryrefslogtreecommitdiff
path: root/src/webenginepage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/webenginepage.cpp')
-rw-r--r--src/webenginepage.cpp144
1 files changed, 81 insertions, 63 deletions
diff --git a/src/webenginepage.cpp b/src/webenginepage.cpp
index 849895e..7ff4d9c 100644
--- a/src/webenginepage.cpp
+++ b/src/webenginepage.cpp
@@ -1,9 +1,5 @@
#include "webenginepage.h"
-#include <QIcon>
-#include <QStyle>
-#include <QWebEngineSettings>
-
WebEnginePage::WebEnginePage(QWebEngineProfile *profile, QObject *parent)
: QWebEnginePage(profile, parent) {
@@ -75,8 +71,11 @@ inline QString questionForFeature(QWebEnginePage::Feature feature) {
void WebEnginePage::handleFeaturePermissionRequested(const QUrl &securityOrigin,
Feature feature) {
bool autoPlay = true;
- if (settings.value("autoPlayMedia").isValid())
- autoPlay = settings.value("autoPlayMedia", false).toBool();
+ if (SettingsManager::instance().settings().value("autoPlayMedia").isValid())
+ autoPlay = SettingsManager::instance()
+ .settings()
+ .value("autoPlayMedia", false)
+ .toBool();
if (autoPlay && (feature == QWebEnginePage::MediaVideoCapture ||
feature == QWebEnginePage::MediaAudioVideoCapture)) {
QWebEngineProfile *defProfile = QWebEngineProfile::defaultProfile();
@@ -92,8 +91,11 @@ void WebEnginePage::handleFeaturePermissionRequested(const QUrl &securityOrigin,
QString question = questionForFeature(feature).arg(securityOrigin.host());
QString featureStr = QVariant::fromValue(feature).toString();
- settings.beginGroup("permissions");
- if (settings.value(featureStr, false).toBool()) {
+ SettingsManager::instance().settings().beginGroup("permissions");
+ if (SettingsManager::instance()
+ .settings()
+ .value(featureStr, false)
+ .toBool()) {
setFeaturePermission(
securityOrigin, feature,
QWebEnginePage::PermissionPolicy::PermissionGrantedByUser);
@@ -104,29 +106,35 @@ void WebEnginePage::handleFeaturePermissionRequested(const QUrl &securityOrigin,
setFeaturePermission(
securityOrigin, feature,
QWebEnginePage::PermissionPolicy::PermissionGrantedByUser);
- settings.setValue(featureStr, true);
+ SettingsManager::instance().settings().setValue(featureStr, true);
} else {
setFeaturePermission(
securityOrigin, feature,
QWebEnginePage::PermissionPolicy::PermissionDeniedByUser);
- settings.setValue(featureStr, false);
+ SettingsManager::instance().settings().setValue(featureStr, false);
}
}
- settings.endGroup();
+ SettingsManager::instance().settings().endGroup();
}
void WebEnginePage::handleLoadFinished(bool ok) {
// turn on Notification settings by default
- if (settings.value("permissions/Notifications").isValid() == false) {
- settings.beginGroup("permissions");
- settings.setValue("Notifications", true);
+ if (SettingsManager::instance()
+ .settings()
+ .value("permissions/Notifications")
+ .isValid() == false) {
+ SettingsManager::instance().settings().beginGroup("permissions");
+ SettingsManager::instance().settings().setValue("Notifications", true);
setFeaturePermission(
QUrl("https://web.whatsapp.com/"),
QWebEnginePage::Feature::Notifications,
QWebEnginePage::PermissionPolicy::PermissionGrantedByUser);
- settings.endGroup();
- } else if (settings.value("permissions/Notifications", true).toBool()) {
+ SettingsManager::instance().settings().endGroup();
+ } else if (SettingsManager::instance()
+ .settings()
+ .value("permissions/Notifications", true)
+ .toBool()) {
setFeaturePermission(
QUrl("https://web.whatsapp.com/"),
QWebEnginePage::Feature::Notifications,
@@ -159,8 +167,10 @@ QStringList WebEnginePage::chooseFiles(QWebEnginePage::FileSelectionMode mode,
}
QFileDialog *dialog = new QFileDialog();
- bool usenativeFileDialog =
- settings.value("useNativeFileDialog", false).toBool();
+ bool usenativeFileDialog = SettingsManager::instance()
+ .settings()
+ .value("useNativeFileDialog", false)
+ .toBool();
if (usenativeFileDialog == false) {
dialog->setOption(QFileDialog::DontUseNativeDialog, true);
@@ -292,7 +302,8 @@ void WebEnginePage::handleSelectClientCertificate(
selection.select(selection.certificates().at(0));
qDebug() << __FUNCTION__;
- for (const QSslCertificate &cert : selection.certificates()) {
+ auto certificates = selection.certificates();
+ for (const QSslCertificate &cert : qAsConst(certificates)) {
qDebug() << cert;
selection.select(cert); // select the first available cert
break;
@@ -333,67 +344,74 @@ void WebEnginePage::injectPreventScrollWheelZoomHelper() {
}
void WebEnginePage::injectClassChangeObserver() {
- QString js = R"(
- const observer = new MutationObserver(() => {
- var haveFullView = document.body.classList.contains('whatsie-full-view');
- var container = document.querySelector('#app > .app-wrapper-web > div');
- if(container){
- if(haveFullView){
- container.style.width = '100%';
- container.style.height = '100%';
- container.style.top = '0';
- container.style.maxWidth = 'unset';
- }else{
- container.style.width = null;
- container.style.height = null;
- container.style.top = null;
- container.style.maxWidth = null;
- }
+ QString js =
+ R"(
+ const observer = new MutationObserver(() => {
+ var haveFullView = document.body.classList.contains('whatsie-full-view');
+ var container = document.querySelector('#app > .app-wrapper-web > div');
+ if(container){
+ if(haveFullView){
+ container.style.width = '100%';
+ container.style.height = '100%';
+ container.style.top = '0';
+ container.style.maxWidth = 'unset';
+ }else{
+ container.style.width = null;
+ container.style.height = null;
+ container.style.top = null;
+ container.style.maxWidth = null;
}
- });
- observer.observe(document.body, {
- attributes: true,
- attributeFilter: ['class'],
- childList: false,
- characterData: false
- });)";
+ }
+ });
+ observer.observe(document.body, {
+ attributes: true,
+ attributeFilter: ['class'],
+ childList: false,
+ characterData: false
+ });
+ )";
this->runJavaScript(js);
}
void WebEnginePage::injectMutationObserver() {
QString js =
- R"(function waitForElement(selector) {
- return new Promise(resolve => {
- if (document.querySelector(selector)) {
- return resolve(document.querySelector(selector));
- }
- const observer = new MutationObserver(mutations => {
- if (document.querySelector(selector)) {
- resolve(document.querySelector(selector));
- observer.disconnect();
- }
- });
- observer.observe(document.body, {
- childList: true,
- subtree: true
- });
- });
- };)";
+ R"(function waitForElement(selector, action) {
+ const element = document.querySelector(selector);
+ if (element) {
+ action(element);
+ return Promise.resolve(element);
+ }
+ return new Promise(resolve => {
+ const observer = new MutationObserver(mutations => {
+ const element = document.querySelector(selector);
+ if (element) {
+ action(element);
+ observer.disconnect();
+ resolve(element);
+ }
+ });
+ observer.observe(document.documentElement, { childList: true, subtree: true });
+ });
+ })";
this->runJavaScript(js);
}
void WebEnginePage::injectFullWidthJavaScript() {
- if (!settings.value("fullWidthView", true).toBool())
+ if (!SettingsManager::instance()
+ .settings()
+ .value("fullWidthView", true)
+ .toBool())
return;
QString js =
- R"(waitForElement('#pane-side').then( () => {
+ R"(function updateFullWidthView(element) {
var container = document.querySelector('#app > .app-wrapper-web > div');
container.style.width = '100%';
container.style.height = '100%';
container.style.top = '0';
container.style.maxWidth = 'unset';
- });
- )";
+ }
+ waitForElement('#pane-side', element => updateFullWidthView({ selector: '#pane-side', element }));
+ )";
this->runJavaScript(js);
}