diff options
author | 2023-09-19 02:01:41 +0600 | |
---|---|---|
committer | 2023-09-19 02:01:41 +0600 | |
commit | 36d10b4b6359b5cf3ff0e37f2330dfaf91cbf530 (patch) | |
tree | cad68505e3dcff4e8d37c5a6a052240d8a935efb /src/webenginepage.cpp | |
parent | 35d85d38d02d97e1c63729bb3301f46bb6f96728 (diff) | |
parent | 906ca7eb436dc9944d43f5b7f6ae7b44afc2a3e7 (diff) | |
download | whatsie-36d10b4b6359b5cf3ff0e37f2330dfaf91cbf530.tar.gz whatsie-36d10b4b6359b5cf3ff0e37f2330dfaf91cbf530.zip |
Update upstream source from tag 'upstream/4.14.1'
Update to upstream version '4.14.1'
with Debian dir 267b96a979689ac47077c72b576cf79da29f8ff2
Diffstat (limited to 'src/webenginepage.cpp')
-rw-r--r-- | src/webenginepage.cpp | 144 |
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); } |