/* * 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 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; } }