X-Git-Url: https://gitweb.stoutner.com/?p=PrivacyBrowserPC.git;a=blobdiff_plain;f=src%2Fwindows%2FBrowserWindow.cpp;fp=src%2Fwindows%2FBrowserWindow.cpp;h=3293f02dbb4983eccd9246d052bcfdce0f6c256a;hp=3ddba02c9e3809475a6d7393354b5cbc5eae33fb;hb=8933c941521c591a962034ecf3486c9143bf1f80;hpb=34816101e23ae2b489d64d540534125cf2c2e925 diff --git a/src/windows/BrowserWindow.cpp b/src/windows/BrowserWindow.cpp index 3ddba02..3293f02 100644 --- a/src/windows/BrowserWindow.cpp +++ b/src/windows/BrowserWindow.cpp @@ -22,6 +22,7 @@ #include "Settings.h" #include "ui_SettingsPrivacy.h" #include "ui_SettingsGeneral.h" +#include "dialogs/CookiesDialog.h" #include "dialogs/DomainSettingsDialog.h" #include "helpers/SearchEngineHelper.h" #include "helpers/UserAgentHelper.h" @@ -32,6 +33,7 @@ // Qt toolkit headers. #include +#include #include BrowserWindow::BrowserWindow() : KXmlGuiWindow() @@ -72,9 +74,10 @@ BrowserWindow::BrowserWindow() : KXmlGuiWindow() searchEngineBingActionPointer = actionCollectionPointer->addAction(QStringLiteral("search_engine_bing")); searchEngineYahooActionPointer = actionCollectionPointer->addAction(QStringLiteral("search_engine_yahoo")); searchEngineCustomActionPointer = actionCollectionPointer->addAction(QStringLiteral("search_engine_custom")); + QAction *domainSettingsActionPointer = actionCollectionPointer->addAction(QStringLiteral("domain_settings")); + QAction *cookiesActionPointer = actionCollectionPointer->addAction(QStringLiteral("cookies")); javaScriptActionPointer = actionCollectionPointer->addAction(QStringLiteral("javascript")); localStorageActionPointer = actionCollectionPointer->addAction(QStringLiteral("local_storage")); - domainSettingsActionPointer = actionCollectionPointer->addAction(QStringLiteral("domain_settings")); // Create the action groups QActionGroup *userAgentActionGroupPointer = new QActionGroup(this); @@ -131,9 +134,10 @@ BrowserWindow::BrowserWindow() : KXmlGuiWindow() searchEngineGoogleActionPointer->setText(i18nc("Search engine", "Google")); searchEngineBingActionPointer->setText(i18nc("Search engine", "Bing")); searchEngineYahooActionPointer->setText(i18nc("Search engine", "Yahoo")); - javaScriptActionPointer->setText(i18nc("JavaScript button", "JavaScript")); - localStorageActionPointer->setText(i18nc("Local Storage Button", "Local Storage")); - domainSettingsActionPointer->setText(i18nc("Domain Settings button", "Domain Settings")); + domainSettingsActionPointer->setText(i18nc("Domain Settings action", "Domain Settings")); + cookiesActionPointer->setText(i18nc("Cookies action", "Cookies")); + javaScriptActionPointer->setText(i18nc("JavaScript action", "JavaScript")); + localStorageActionPointer->setText(i18nc("Local Storage action", "Local Storage")); // Set the action icons. userAgentPrivacyBrowserActionPointer->setIcon(QIcon(":/icons/privacy-mode")); @@ -154,6 +158,7 @@ BrowserWindow::BrowserWindow() : KXmlGuiWindow() searchEngineCustomActionPointer->setIcon(QIcon::fromTheme(QStringLiteral("search"))); zoomFactorActionPointer->setIcon(QIcon::fromTheme(QStringLiteral("zoom"))); domainSettingsActionPointer->setIcon(QIcon::fromTheme(QStringLiteral("settings-configure"))); + cookiesActionPointer->setIcon(QIcon::fromTheme(QStringLiteral("preferences-web-browser-cookies"))); // Update the on-the-fly menus. connect(browserViewPointer, SIGNAL(updateUserAgentActions(QString)), this, SLOT(updateUserAgentActions(QString))); @@ -166,11 +171,12 @@ BrowserWindow::BrowserWindow() : KXmlGuiWindow() // Display dialogs. connect(zoomFactorActionPointer, SIGNAL(triggered()), this, SLOT(getZoomFactorFromUser())); + connect(cookiesActionPointer, SIGNAL(triggered()), this, SLOT(openCookiesDialog())); + connect(domainSettingsActionPointer, SIGNAL(triggered()), this, SLOT(openDomainSettings())); // Connect the URL toolbar actions. connect(javaScriptActionPointer, SIGNAL(triggered()), this, SLOT(toggleJavaScript())); connect(localStorageActionPointer, SIGNAL(triggered()), this, SLOT(toggleLocalStorage())); - connect(domainSettingsActionPointer, SIGNAL(triggered()), this, SLOT(openDomainSettings())); // Update the URL toolbar actions. connect(browserViewPointer, SIGNAL(updateBackAction(bool)), backActionPointer, SLOT(setEnabled(bool))); @@ -231,10 +237,29 @@ BrowserWindow::BrowserWindow() : KXmlGuiWindow() // Update the applied palette. connect(browserViewPointer, SIGNAL(updateDomainSettingsIndicator(bool, QString)), this, SLOT(updateDomainSettingsIndicator(bool, QString))); + // Initialize the cookie list. + cookieListPointer = new QList; + + // Add new cookies to the list. + connect(browserViewPointer, SIGNAL(addCookie(QNetworkCookie)), this, SLOT(addCookie(QNetworkCookie))); + // Load the initial website. browserViewPointer->loadInitialWebsite(); } +void BrowserWindow::addCookie(const QNetworkCookie &newCookie) const +{ + // Check to see if the list already contains a cookie with this ID. + for (QNetworkCookie existingCookie : *cookieListPointer) + { + // Remove the old version of the cookie. + if (existingCookie.hasSameIdentifier(newCookie)) cookieListPointer->removeOne(existingCookie); + } + + // Add the new cookie to the list. + cookieListPointer->append(newCookie); +} + void BrowserWindow::addOrEditDomainSettings() const { // Remove the focus from the URL line edit. @@ -340,6 +365,22 @@ void BrowserWindow::loadUrlFromLineEdit(const QString &url) const browserViewPointer->loadUrlFromLineEdit(url); } +void BrowserWindow::openCookiesDialog() +{ + // Remove the focus from the URL line edit. + urlLineEditPointer->clearFocus(); + + // Instantiate the cookie settings dialog. + CookiesDialog *cookiesDialogPointer = new CookiesDialog(cookieListPointer); + + // Show the dialog. + cookiesDialogPointer->show(); + + // Connect the dialog signals. + connect(cookiesDialogPointer, SIGNAL(deleteAllCookies()), browserViewPointer, SLOT(deleteAllCookies())); +} + + void BrowserWindow::openDomainSettings() const { // Remove the focus from the URL line edit. @@ -348,12 +389,6 @@ void BrowserWindow::openDomainSettings() const // Instantiate the domain settings dialog. DomainSettingsDialog *domainSettingsDialogPointer = new DomainSettingsDialog(); - // Set the dialog window title. - domainSettingsDialogPointer->setWindowTitle(i18nc("The domain settings dialog title", "Domain Settings")); - - // Set the modality. - domainSettingsDialogPointer->setWindowModality(Qt::WindowModality::WindowModal);; - // Show the dialog. domainSettingsDialogPointer->show();