X-Git-Url: https://gitweb.stoutner.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Fwindows%2FBrowserWindow.cpp;h=33aef29f77ad309caf13e4acc3ad3d5c6b1cf30a;hb=refs%2Fheads%2Fmaster;hp=fe3b5939e86ea73d157d4ee87adf7165c59e839d;hpb=c5706a6ff3fbc42418e60b79fbe3f5c19396f7d2;p=PrivacyBrowserPC.git diff --git a/src/windows/BrowserWindow.cpp b/src/windows/BrowserWindow.cpp index fe3b593..4e9f303 100644 --- a/src/windows/BrowserWindow.cpp +++ b/src/windows/BrowserWindow.cpp @@ -1,7 +1,7 @@ /* * Copyright 2022-2024 Soren Stoutner . * - * This file is part of Privacy Browser PC . + * This file is part of Privacy Browser PC . * * Privacy Browser PC is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,6 +19,7 @@ // Application headers. #include "BrowserWindow.h" +#include "GlobalVariables.h" #include "Settings.h" #include "databases/BookmarksDatabase.h" #include "databases/DomainsDatabase.h" @@ -29,17 +30,13 @@ #include "dialogs/DomainSettingsDialog.h" #include "dialogs/EditBookmarkDialog.h" #include "dialogs/EditFolderDialog.h" +#include "dialogs/FilterListsDialog.h" +#include "dialogs/RequestsDialog.h" #include "dialogs/SettingsDialog.h" #include "helpers/SearchEngineHelper.h" #include "helpers/UserAgentHelper.h" #include "structs/BookmarkStruct.h" -// KDE Frameworks headers. -#include -#include -#include -#include - // Qt toolkit headers. #include #include @@ -56,6 +53,12 @@ #include #include +// KDE Frameworks headers. +#include +#include +#include +#include + // Construct the class. BrowserWindow::BrowserWindow(bool firstWindow, QString *initialUrlStringPointer) : KXmlGuiWindow() { @@ -93,6 +96,8 @@ BrowserWindow::BrowserWindow(bool firstWindow, QString *initialUrlStringPointer) QAction *newTabActionPointer = actionCollectionPointer->addAction(QLatin1String("new_tab")); QAction *newWindowActionPointer = actionCollectionPointer->addAction(QLatin1String("new_window")); QAction *saveArchiveActionPointer = actionCollectionPointer->addAction(QLatin1String("save_archive")); + QAction *openWithFirefoxActionPointer = actionCollectionPointer->addAction(QLatin1String("open_with_firefox")); + QAction *openWithChromiumActionPointer = actionCollectionPointer->addAction(QLatin1String("open_with_chromium")); zoomDefaultActionPointer = actionCollectionPointer->addAction(QLatin1String("zoom_default")); QAction *reloadAndBypassCacheActionPointer = actionCollectionPointer->addAction(QLatin1String("reload_and_bypass_cache")); stopActionPointer = actionCollectionPointer->addAction(QLatin1String("stop")); @@ -119,9 +124,17 @@ BrowserWindow::BrowserWindow(bool firstWindow, QString *initialUrlStringPointer) searchEngineBingActionPointer = actionCollectionPointer->addAction(QLatin1String("search_engine_bing")); searchEngineYahooActionPointer = actionCollectionPointer->addAction(QLatin1String("search_engine_yahoo")); searchEngineCustomActionPointer = actionCollectionPointer->addAction(QLatin1String("search_engine_custom")); + ultraPrivacyActionPointer = actionCollectionPointer->addAction(QLatin1String("ultraprivacy")); + ultraListActionPointer = actionCollectionPointer->addAction(QLatin1String("ultralist")); + easyPrivacyActionPointer = actionCollectionPointer->addAction(QLatin1String("easyprivacy")); + easyListActionPointer = actionCollectionPointer->addAction(QLatin1String("easylist")); + fanboysAnnoyanceListPointer = actionCollectionPointer->addAction(QLatin1String("fanboys_annoyance_list")); + requestsActionPointer = actionCollectionPointer->addAction(QLatin1String("requests")); + QAction *viewFilterListsActionPointer = actionCollectionPointer->addAction(QLatin1String("view_filter_lists")); viewBookmarksToolBarActionPointer = actionCollectionPointer->addAction(QLatin1String("view_bookmarks_toolbar")); QAction *domainSettingsActionPointer = actionCollectionPointer->addAction(QLatin1String("domain_settings")); cookiesActionPointer = actionCollectionPointer->addAction(QLatin1String("cookies")); + blockedRequestsActionPointer = actionCollectionPointer->addAction(QLatin1String("blocked_requests")); findCaseSensitiveActionPointer = actionCollectionPointer->addAction(QLatin1String("find_case_sensitive")); hideFindTextActionPointer = actionCollectionPointer->addAction(QLatin1String("hide_find_actions")); @@ -170,6 +183,11 @@ BrowserWindow::BrowserWindow(bool firstWindow, QString *initialUrlStringPointer) searchEngineBingActionPointer->setCheckable(true); searchEngineYahooActionPointer->setCheckable(true); searchEngineCustomActionPointer->setCheckable(true); + ultraPrivacyActionPointer->setCheckable(true); + ultraListActionPointer->setCheckable(true); + easyPrivacyActionPointer->setCheckable(true); + easyListActionPointer->setCheckable(true); + fanboysAnnoyanceListPointer->setCheckable(true); viewBookmarksToolBarActionPointer->setCheckable(true); // Instantiate the user agent helper. @@ -179,6 +197,8 @@ BrowserWindow::BrowserWindow(bool firstWindow, QString *initialUrlStringPointer) newTabActionPointer->setText(i18nc("New tab action", "New Tab")); newWindowActionPointer->setText(i18nc("New window action", "New Window")); saveArchiveActionPointer->setText(i18nc("Save archive action", "Save Archive")); + openWithFirefoxActionPointer->setText(i18nc("Open with Firefox action", "Open With Firefox")); + openWithChromiumActionPointer->setText(i18nc("Open with Chromium action", "Open With Chromium")); zoomDefaultActionPointer->setText(i18nc("Zoom default action", "Zoom Default")); reloadAndBypassCacheActionPointer->setText(i18nc("Reload and bypass cache action", "Reload and Bypass Cache")); stopActionPointer->setText(i18nc("Stop action", "Stop")); @@ -186,7 +206,7 @@ BrowserWindow::BrowserWindow(bool firstWindow, QString *initialUrlStringPointer) viewSourceInNewTabActionPointer->setText(i18nc("View source in new tab action", "View Source in New Tab")); developerToolsActionPointer->setText(i18nc("Developer tools action", "Developer Tools")); javaScriptActionPointer->setText(i18nc("JavaScript action", "JavaScript")); - localStorageActionPointer->setText(i18nc("The Local Storage action", "Local Storage")); + localStorageActionPointer->setText(i18nc("Local Storage action", "Local Storage")); domStorageActionPointer->setText(i18nc("DOM Storage action", "DOM Storage")); userAgentPrivacyBrowserActionPointer->setText(userAgentHelperPointer->PRIVACY_BROWSER_TRANSLATED); userAgentWebEngineDefaultActionPointer->setText(userAgentHelperPointer->WEB_ENGINE_DEFAULT_TRANSLATED); @@ -196,23 +216,36 @@ BrowserWindow::BrowserWindow(bool firstWindow, QString *initialUrlStringPointer) userAgentChromeWindowsActionPointer->setText(userAgentHelperPointer->CHROME_WINDOWS_TRANSLATED); userAgentEdgeWindowsActionPointer->setText(userAgentHelperPointer->EDGE_WINDOWS_TRANSLATED); userAgentSafariMacosActionPointer->setText(userAgentHelperPointer->SAFARI_MACOS_TRANSLATED); - searchEngineMojeekActionPointer->setText(i18nc("Search engine", "Mojeek")); - searchEngineMonoclesActionPointer->setText(i18nc("Search engine", "Monocles")); - searchEngineMetagerActionPointer->setText(i18nc("Search engine", "MetaGer")); - searchEngineGoogleActionPointer->setText(i18nc("Search engine", "Google")); - searchEngineBingActionPointer->setText(i18nc("Search engine", "Bing")); - searchEngineYahooActionPointer->setText(i18nc("Search engine", "Yahoo")); - viewBookmarksToolBarActionPointer->setText(i18nc("View bookmarks toolbar", "View Bookmarks Toolbar")); + searchEngineMojeekActionPointer->setText(i18nc("Mojeek search engine action", "Mojeek")); + searchEngineMonoclesActionPointer->setText(i18nc("Monocles search engine action", "Monocles")); + searchEngineMetagerActionPointer->setText(i18nc("MetaGer search engine action", "MetaGer")); + searchEngineGoogleActionPointer->setText(i18nc("Google search engine action", "Google")); + searchEngineBingActionPointer->setText(i18nc("Bing search engine action", "Bing")); + searchEngineYahooActionPointer->setText(i18nc("Yahoo search engine action", "Yahoo")); + ultraPrivacyActionPointer->setText(i18nc("UltraPrivacy action", "UltraPrivacy - %1 Blocked", 0)); + ultraListActionPointer->setText(i18nc("UltraList action", "UltraList - %1 Blocked", 0)); + easyPrivacyActionPointer->setText(i18nc("EasyPrivacy action", "EasyPrivacy - %1 Blocked", 0)); + easyListActionPointer->setText(i18nc("EasyList action", "EasyList - %1 Blocked", 0)); + fanboysAnnoyanceListPointer->setText(i18nc("Fanboy's Annoyance List action", "Fanboy’s Annoyance List - %1 Blocked", 0)); + requestsActionPointer->setText(i18nc("Requests action", "Requests - %1 Blocked", 0)); + viewFilterListsActionPointer->setText(i18nc("View filter lists action", "View Filter Lists")); + viewBookmarksToolBarActionPointer->setText(i18nc("View bookmarks toolbar action", "View Bookmarks Toolbar")); domainSettingsActionPointer->setText(i18nc("Domain Settings action", "Domain Settings")); - cookiesActionPointer->setText(i18nc("The Cookies action, which also displays the number of cookies", "Cookies - %1", 0)); + cookiesActionPointer->setText(i18nc("Cookies action, which also displays the number of cookies", "Cookies - %1", 0)); + blockedRequestsActionPointer->setText("0"); findCaseSensitiveActionPointer->setText(i18nc("Find Case Sensitive action", "Find Case Sensitive")); hideFindTextActionPointer->setText(i18nc("Hide Find Text action (the text should include the language-specific escape keyboard shortcut).", "Hide Find Text (Esc)")); + // Set the tool tips. + blockedRequestsActionPointer->setToolTip(i18nc("Blocked requests action tool tip", "%1 Blocked Requests (Ctrl+R)", 0)); + // Set the action icons. Gnome doesn't contain some of the icons that KDE has. // The toolbar icons don't pick up unless the size is explicit, probably because the toolbar ends up being an intermediate size. newTabActionPointer->setIcon(QIcon::fromTheme(QLatin1String("tab-new"))); newWindowActionPointer->setIcon(QIcon::fromTheme(QLatin1String("window-new"))); saveArchiveActionPointer->setIcon(QIcon::fromTheme(QLatin1String("document-save"))); + openWithFirefoxActionPointer->setIcon(QIcon::fromTheme(QLatin1String("firefox-esr"))); + openWithChromiumActionPointer->setIcon(QIcon::fromTheme(QLatin1String("chromium"))); zoomDefaultActionPointer->setIcon(QIcon::fromTheme(QLatin1String("zoom-fit-best"))); reloadAndBypassCacheActionPointer->setIcon(QIcon::fromTheme(QLatin1String("view-refresh"))); stopActionPointer->setIcon(QIcon::fromTheme(QLatin1String("process-stop"))); @@ -232,6 +265,7 @@ BrowserWindow::BrowserWindow(bool firstWindow, QString *initialUrlStringPointer) userAgentEdgeWindowsActionPointer->setIcon(QIcon::fromTheme(QLatin1String("user-group-properties"), QIcon::fromTheme(QLatin1String("contact-new")))); userAgentSafariMacosActionPointer->setIcon(QIcon::fromTheme(QLatin1String("user-group-properties"), QIcon::fromTheme(QLatin1String("contact-new")))); userAgentCustomActionPointer->setIcon(QIcon::fromTheme(QLatin1String("user-group-properties"), QIcon::fromTheme(QLatin1String("contact-new")))); + zoomFactorActionPointer->setIcon(QIcon::fromTheme(QLatin1String("zoom-fit-best"))); searchEngineMojeekActionPointer->setIcon(QIcon::fromTheme(QLatin1String("edit-find"))); searchEngineMonoclesActionPointer->setIcon(QIcon::fromTheme(QLatin1String("edit-find"))); searchEngineMetagerActionPointer->setIcon(QIcon::fromTheme(QLatin1String("edit-find"))); @@ -239,7 +273,13 @@ BrowserWindow::BrowserWindow(bool firstWindow, QString *initialUrlStringPointer) searchEngineBingActionPointer->setIcon(QIcon::fromTheme(QLatin1String("edit-find"))); searchEngineYahooActionPointer->setIcon(QIcon::fromTheme(QLatin1String("im-yahoo"), QIcon::fromTheme(QLatin1String("edit-find")))); searchEngineCustomActionPointer->setIcon(QIcon::fromTheme(QLatin1String("edit-find"))); - zoomFactorActionPointer->setIcon(QIcon::fromTheme(QLatin1String("zoom-fit-best"))); + requestsActionPointer->setIcon(QIcon::fromTheme(QLatin1String("document-equal"), QIcon::fromTheme(QLatin1String("system-lock-screen")))); + ultraPrivacyActionPointer->setIcon(QIcon::fromTheme(QLatin1String("view-list-text"), QIcon::fromTheme(QLatin1String("format-justify-left")))); + ultraListActionPointer->setIcon(QIcon::fromTheme(QLatin1String("view-list-text"), QIcon::fromTheme(QLatin1String("format-justify-left")))); + easyPrivacyActionPointer->setIcon(QIcon::fromTheme(QLatin1String("view-list-text"), QIcon::fromTheme(QLatin1String("format-justify-left")))); + easyListActionPointer->setIcon(QIcon::fromTheme(QLatin1String("view-list-text"), QIcon::fromTheme(QLatin1String("format-justify-left")))); + fanboysAnnoyanceListPointer->setIcon(QIcon::fromTheme(QLatin1String("view-list-text"), QIcon::fromTheme(QLatin1String("format-justify-left")))); + viewFilterListsActionPointer->setIcon(QIcon::fromTheme(QLatin1String("view-list-text"), QIcon::fromTheme(QLatin1String("format-justify-left")))); editBookmarksActionPointer->setIcon(QIcon::fromTheme(QLatin1String("bookmark-edit"), QIcon::fromTheme(QLatin1String("bookmark-new")))); viewBookmarksToolBarActionPointer->setIcon(QIcon::fromTheme(QLatin1String("bookmarks"), QIcon::fromTheme(QLatin1String("bookmark-new")))); domainSettingsActionPointer->setIcon(QIcon::fromTheme(QLatin1String("settings-configure"), QIcon::fromTheme(QLatin1String("preferences-desktop")))); @@ -251,6 +291,8 @@ BrowserWindow::BrowserWindow(bool firstWindow, QString *initialUrlStringPointer) QKeySequence ctrlTKeySequence = QKeySequence(i18nc("The open new tab key sequence.", "Ctrl+T")); QKeySequence ctrlNKeySequence = QKeySequence(i18nc("The open new window key sequence.", "Ctrl+N")); QKeySequence ctrlAKeySequence = QKeySequence(i18nc("The save archive key sequence.", "Ctrl+A")); + QKeySequence altFKeySequence = QKeySequence(i18nc("The open with Firefox key sequence.", "Alt+F")); + QKeySequence altCKeySequence = QKeySequence(i18nc("The open with Chromium key sequence.", "Alt+C")); QKeySequence ctrl0KeySequence = QKeySequence(i18nc("The zoom default key sequence.", "Ctrl+0")); QKeySequence ctrlF5KeySequence = QKeySequence(i18nc("The reload and bypass cache key sequence.", "Ctrl+F5")); QKeySequence ctrlShiftXKeySequence = QKeySequence(i18nc("The stop key sequence.", "Ctrl+Shift+X")); @@ -279,6 +321,8 @@ BrowserWindow::BrowserWindow(bool firstWindow, QString *initialUrlStringPointer) QKeySequence ctrlShiftBKeySequence = QKeySequence(i18nc("The Bing search engine key sequence.", "Ctrl+Shift+B")); QKeySequence ctrlShiftYKeySequence = QKeySequence(i18nc("The Yahoo search engine key sequence.", "Ctrl+Shift+Y")); QKeySequence ctrlShiftCKeySequence = QKeySequence(i18nc("The custom search engine key sequence.", "Ctrl+Shift+C")); + QKeySequence ctrlRKeySequence = QKeySequence(i18nc("The requests key sequence.", "Ctrl+R")); + QKeySequence ctrlShiftLKeySequence = QKeySequence(i18nc("The view filter lists key sequence.", "Ctrl+Shift+L")); QKeySequence ctrlAltShiftBKeySequence = QKeySequence(i18nc("The edit bookmarks key sequence.", "Ctrl+Alt+Shift+B")); QKeySequence ctrlAltBKeySequence = QKeySequence(i18nc("The view bookmarks toolbar key sequence.", "Ctrl+Alt+B")); QKeySequence ctrlShiftDKeySequence = QKeySequence(i18nc("The domain settings key sequence.", "Ctrl+Shift+D")); @@ -288,6 +332,8 @@ BrowserWindow::BrowserWindow(bool firstWindow, QString *initialUrlStringPointer) actionCollectionPointer->setDefaultShortcut(newTabActionPointer, ctrlTKeySequence); actionCollectionPointer->setDefaultShortcut(newWindowActionPointer, ctrlNKeySequence); actionCollectionPointer->setDefaultShortcut(saveArchiveActionPointer, ctrlAKeySequence); + actionCollectionPointer->setDefaultShortcut(openWithFirefoxActionPointer, altFKeySequence); + actionCollectionPointer->setDefaultShortcut(openWithChromiumActionPointer, altCKeySequence); actionCollectionPointer->setDefaultShortcut(zoomDefaultActionPointer, ctrl0KeySequence); actionCollectionPointer->setDefaultShortcut(reloadAndBypassCacheActionPointer, ctrlF5KeySequence); actionCollectionPointer->setDefaultShortcut(stopActionPointer, ctrlShiftXKeySequence); @@ -316,15 +362,19 @@ BrowserWindow::BrowserWindow(bool firstWindow, QString *initialUrlStringPointer) actionCollectionPointer->setDefaultShortcut(searchEngineBingActionPointer, ctrlShiftBKeySequence); actionCollectionPointer->setDefaultShortcut(searchEngineYahooActionPointer, ctrlShiftYKeySequence); actionCollectionPointer->setDefaultShortcut(searchEngineCustomActionPointer, ctrlShiftCKeySequence); + actionCollectionPointer->setDefaultShortcut(requestsActionPointer, ctrlRKeySequence); + actionCollectionPointer->setDefaultShortcut(viewFilterListsActionPointer, ctrlShiftLKeySequence); actionCollectionPointer->setDefaultShortcut(editBookmarksActionPointer, ctrlAltShiftBKeySequence); actionCollectionPointer->setDefaultShortcut(viewBookmarksToolBarActionPointer, ctrlAltBKeySequence); actionCollectionPointer->setDefaultShortcut(domainSettingsActionPointer, ctrlShiftDKeySequence); actionCollectionPointer->setDefaultShortcut(cookiesActionPointer, ctrlSemicolonKeySequence); - // Execute the actions. + // Connect the actions. connect(newTabActionPointer, SIGNAL(triggered()), tabWidgetPointer, SLOT(addTab())); connect(newWindowActionPointer, SIGNAL(triggered()), this, SLOT(newWindow())); connect(saveArchiveActionPointer, SIGNAL(triggered()), tabWidgetPointer, SLOT(saveArchive())); + connect(openWithFirefoxActionPointer, SIGNAL(triggered()), this, SLOT(openWithFirefox())); + connect(openWithChromiumActionPointer, SIGNAL(triggered()), this, SLOT(openWithChromium())); connect(zoomDefaultActionPointer, SIGNAL(triggered()), this, SLOT(zoomDefault())); connect(reloadAndBypassCacheActionPointer, SIGNAL(triggered()), this, SLOT(reloadAndBypassCache())); connect(stopActionPointer, SIGNAL(triggered()), tabWidgetPointer, SLOT(stop())); @@ -332,9 +382,12 @@ BrowserWindow::BrowserWindow(bool firstWindow, QString *initialUrlStringPointer) connect(viewSourceInNewTabActionPointer, SIGNAL(triggered()), this, SLOT(toggleViewSourceInNewTab())); connect(developerToolsActionPointer, SIGNAL(triggered()), this, SLOT(toggleDeveloperTools())); connect(zoomFactorActionPointer, SIGNAL(triggered()), this, SLOT(getZoomFactorFromUser())); + connect(requestsActionPointer, SIGNAL(triggered()), this, SLOT(showRequestsDialog())); + connect(viewFilterListsActionPointer, SIGNAL(triggered()), this, SLOT(showFilterListsDialog())); connect(viewBookmarksToolBarActionPointer, SIGNAL(triggered()), this, SLOT(toggleViewBookmarksToolBar())); connect(cookiesActionPointer, SIGNAL(triggered()), this, SLOT(showCookiesDialog())); connect(domainSettingsActionPointer, SIGNAL(triggered()), this, SLOT(showDomainSettingsDialog())); + connect(blockedRequestsActionPointer, SIGNAL(triggered()), this, SLOT(showRequestsDialog())); // Update the on-the-fly menus. connect(tabWidgetPointer, SIGNAL(updateUserAgentActions(QString, bool)), this, SLOT(updateUserAgentActions(QString, bool))); @@ -345,18 +398,33 @@ BrowserWindow::BrowserWindow(bool firstWindow, QString *initialUrlStringPointer) connect(userAgentActionGroupPointer, SIGNAL(triggered(QAction*)), tabWidgetPointer, SLOT(applyOnTheFlyUserAgent(QAction*))); connect(searchEngineActionGroupPointer, SIGNAL(triggered(QAction*)), tabWidgetPointer, SLOT(applyOnTheFlySearchEngine(QAction*))); + // Process blocked requests. + connect(tabWidgetPointer, SIGNAL(blockedRequestsUpdated(const QVector)), this, SLOT(updateRequestsAction(const QVector))); + // Process cookie changes. - connect(tabWidgetPointer, SIGNAL(updateCookiesAction(int)), this, SLOT(updateCookiesAction(int))); + connect(tabWidgetPointer, SIGNAL(cookiesChanged(const int)), this, SLOT(updateCookiesAction(const int))); // Store the default zoom factor. connect(tabWidgetPointer, SIGNAL(updateDefaultZoomFactor(double)), this, SLOT(updateDefaultZoomFactor(double))); + // Connect the filter list actions. + connect(ultraPrivacyActionPointer, SIGNAL(triggered()), tabWidgetPointer, SLOT(toggleUltraPrivacy())); + connect(ultraListActionPointer, SIGNAL(triggered()), tabWidgetPointer, SLOT(toggleUltraList())); + connect(easyPrivacyActionPointer, SIGNAL(triggered()), tabWidgetPointer, SLOT(toggleEasyPrivacy())); + connect(easyListActionPointer, SIGNAL(triggered()), tabWidgetPointer, SLOT(toggleEasyList())); + connect(fanboysAnnoyanceListPointer, SIGNAL(triggered()), tabWidgetPointer, SLOT(toggleFanboysAnnoyanceList())); + // Connect the URL toolbar actions. connect(javaScriptActionPointer, SIGNAL(triggered()), this, SLOT(toggleJavaScript())); connect(localStorageActionPointer, SIGNAL(triggered()), this, SLOT(toggleLocalStorage())); connect(domStorageActionPointer, SIGNAL(triggered()), this, SLOT(toggleDomStorage())); // Update the actions from the tab widget. + connect(tabWidgetPointer, SIGNAL(easyListStatusChanged(bool)), easyListActionPointer, SLOT(setChecked(bool))); + connect(tabWidgetPointer, SIGNAL(easyPrivacyStatusChanged(bool)), easyPrivacyActionPointer, SLOT(setChecked(bool))); + connect(tabWidgetPointer, SIGNAL(fanboysAnnoyanceListStatusChanged(bool)), fanboysAnnoyanceListPointer, SLOT(setChecked(bool))); + connect(tabWidgetPointer, SIGNAL(ultraListStatusChanged(bool)), ultraListActionPointer, SLOT(setChecked(bool))); + connect(tabWidgetPointer, SIGNAL(ultraPrivacyStatusChanged(bool)), ultraPrivacyActionPointer, SLOT(setChecked(bool))); connect(tabWidgetPointer, SIGNAL(updateDeveloperToolsAction(bool)), developerToolsActionPointer, SLOT(setChecked(bool))); connect(tabWidgetPointer, SIGNAL(updateBackAction(bool)), backActionPointer, SLOT(setEnabled(bool))); connect(tabWidgetPointer, SIGNAL(updateForwardAction(bool)), forwardActionPointer, SLOT(setEnabled(bool))); @@ -373,6 +441,10 @@ BrowserWindow::BrowserWindow(bool firstWindow, QString *initialUrlStringPointer) // Setup the GUI based on the browserwindowui.rc file. setupGUI(StandardWindowOption::Default, ("browserwindowui.rc")); + // Set the open with other browser actions visibility. + openWithFirefoxActionPointer->setVisible(globalFirefoxInstalled); + openWithChromiumActionPointer->setVisible(globalChromiumInstalled); + // Get lists of the actions' associated widgets. QList userAgentAssociatedWidgetsPointerList = userAgentPrivacyBrowserActionPointer->associatedWidgets(); QList searchEngineAssociatedWidgetsPointerList = searchEngineMojeekActionPointer->associatedWidgets(); @@ -444,7 +516,7 @@ BrowserWindow::BrowserWindow(bool firstWindow, QString *initialUrlStringPointer) findTextLabelPointer->setText(QLatin1String(" ") + i18nc("Default find results.", "0/0") + QLatin1String(" ")); // Insert the widgets into the toolbars. - urlToolBarPointer->insertWidget(javaScriptActionPointer, urlLineEditPointer); + urlToolBarPointer->insertWidget(blockedRequestsActionPointer, urlLineEditPointer); findTextLineEditActionPointer = urlToolBarPointer->insertWidget(findNextActionPointer, findTextLineEditPointer); findTextLabelActionPointer = urlToolBarPointer->insertWidget(findNextActionPointer, findTextLabelPointer); @@ -788,6 +860,11 @@ void BrowserWindow::addOrEditDomainSettings() int javaScriptInt = calculateSettingsInt(javaScriptEnabled, Settings::javaScriptEnabled()); int localStorageInt = calculateSettingsInt(localStorageActionPointer->isChecked(), Settings::localStorageEnabled()); int domStorageInt = calculateSettingsInt(domStorageActionPointer->isChecked(), Settings::domStorageEnabled()); + int ultraPrivacyInt = calculateSettingsInt(ultraPrivacyActionPointer->isChecked(), Settings::ultraPrivacyEnabled()); + int ultraListInt = calculateSettingsInt(ultraListActionPointer->isChecked(), Settings::ultraListEnabled()); + int easyPrivacyInt = calculateSettingsInt(easyPrivacyActionPointer->isChecked(), Settings::easyPrivacyEnabled()); + int easyListInt = calculateSettingsInt(easyListActionPointer->isChecked(), Settings::easyListEnabled()); + int fanboysAnnoyanceListInt = calculateSettingsInt(fanboysAnnoyanceListPointer->isChecked(), Settings::fanboysAnnoyanceListEnabled()); // Get the current user agent string. QString currentUserAgentString = tabWidgetPointer->getCurrentUserAgent(); @@ -810,7 +887,8 @@ void BrowserWindow::addOrEditDomainSettings() zoomFactorInt = DomainsDatabase::CUSTOM; // Add the domain. - DomainsDatabase::addDomain(currentUrl.host(), javaScriptInt, localStorageInt, domStorageInt, userAgentDatabaseString, zoomFactorInt, currentZoomFactorDouble); + DomainsDatabase::addDomain(currentUrl.host(), javaScriptInt, localStorageInt, domStorageInt, userAgentDatabaseString, ultraPrivacyInt, ultraListInt, easyPrivacyInt, easyListInt, + fanboysAnnoyanceListInt, zoomFactorInt, currentZoomFactorDouble); // Apply the domain settings. tabWidgetPointer->applyDomainSettingsAndReload(); @@ -1073,6 +1151,18 @@ void BrowserWindow::newWindow() const browserWindowPointer->show(); } +void BrowserWindow::openWithChromium() const +{ + // Open the current URL in Chromium + QProcess::startDetached("chromium", QStringList(urlLineEditPointer->text())); +} + +void BrowserWindow::openWithFirefox() const +{ + // Open the current URL in Firefox. + QProcess::startDetached("firefox-esr", QStringList(urlLineEditPointer->text())); +} + void BrowserWindow::populateBookmarksInAllWindows() const { // Get a list of all the registered service names. @@ -1501,6 +1591,15 @@ void BrowserWindow::showDomainSettingsDialog() domainSettingsDialogPointer->show(); } +void BrowserWindow::showFilterListsDialog() +{ + // Instantiate the filter lists dialog. + FilterListsDialog *filterListsDialogPointer = new FilterListsDialog(this); + + // Show the dialog. + filterListsDialogPointer->show(); +} + void BrowserWindow::showFindTextActions() const { // Show the find text actions. @@ -1535,6 +1634,15 @@ void BrowserWindow::showProgressBar(const int &progress) const stopActionPointer->setVisible(true); } +void BrowserWindow::showRequestsDialog() +{ + // Instantiate the requests dialog. + RequestsDialog *requestsDialogPointer = new RequestsDialog(this, tabWidgetPointer->currentPrivacyWebEngineViewPointer->requestsListPointer); + + // Show the dialog. + requestsDialogPointer->show(); +} + void BrowserWindow::showSettingsDialog() { // Get a handle for the KConfig skeleton. @@ -1707,9 +1815,24 @@ void BrowserWindow::updateBookmarkedAction() const bookmarkedActionPointer->setIcon(QIcon::fromTheme("non-starred-symbolic")); } +void BrowserWindow::updateRequestsAction(const QVector blockedRequestsVector) const +{ + // Update the text for the actions. + ultraPrivacyActionPointer->setText(i18nc("UltraPrivacy action", "UltraPrivacy - %1 Blocked", blockedRequestsVector[PrivacyWebEngineView::ULTRAPRIVACY])); + ultraListActionPointer->setText(i18nc("UltraList action", "UltraList - %1 Blocked", blockedRequestsVector[PrivacyWebEngineView::ULTRALIST])); + easyPrivacyActionPointer->setText(i18nc("EasyPrivacy action", "EasyPrivacy - %1 Blocked", blockedRequestsVector[PrivacyWebEngineView::EASYPRIVACY])); + easyListActionPointer->setText(i18nc("EasyList action", "EasyList - %1 Blocked", blockedRequestsVector[PrivacyWebEngineView::EASYLIST])); + fanboysAnnoyanceListPointer->setText(i18nc("Fanboy's Annoyance List action", "Fanboy’s Annoyance List - %1 Blocked", blockedRequestsVector[PrivacyWebEngineView::FANBOYS_ANNOYANCE_LIST])); + requestsActionPointer->setText(i18nc("Requests action", "Requests - %1 Blocked", blockedRequestsVector[PrivacyWebEngineView::TOTAL])); + blockedRequestsActionPointer->setText(QString::number(blockedRequestsVector[PrivacyWebEngineView::TOTAL])); + + // Update the tool tips. + blockedRequestsActionPointer->setToolTip(i18nc("Blocked requests action tool tip", "%1 Blocked Requests (Ctrl+R)", blockedRequestsVector[PrivacyWebEngineView::TOTAL])); +} + void BrowserWindow::updateCookiesAction(const int numberOfCookies) const { - // Update the action text. + // Update the cookies action text. cookiesActionPointer->setText(i18nc("The Cookies action, which also displays the number of cookies", "Cookies - %1", numberOfCookies)); }