X-Git-Url: https://gitweb.stoutner.com/?p=PrivacyBrowserPC.git;a=blobdiff_plain;f=src%2FBrowserWindow.cpp;h=1265c0d38a2c92a922f4d942af7e03f90330b2d5;hp=29fe4644feb31db29f80f92ea8bdd798e82d7862;hb=2c380f75b275780859774f3947db39cdf6f4f021;hpb=44cd064cb213ad693223ca117fe346d8b78456d6 diff --git a/src/BrowserWindow.cpp b/src/BrowserWindow.cpp index 29fe464..1265c0d 100644 --- a/src/BrowserWindow.cpp +++ b/src/BrowserWindow.cpp @@ -48,6 +48,87 @@ BrowserWindow::BrowserWindow() : KXmlGuiWindow() KStandardAction::quit(qApp, SLOT(closeAllWindows()), actionCollectionPointer); KStandardAction::preferences(this, SLOT(settingsConfigure()), actionCollectionPointer); + // Add the custom actions. + userAgentPrivacyBrowserActionPointer = actionCollectionPointer->addAction(QStringLiteral("user_agent_privacy_browser")); + userAgentFirefoxLinuxActionPointer = actionCollectionPointer->addAction(QStringLiteral("user_agent_firefox_linux")); + userAgentChromiumLinuxActionPointer = actionCollectionPointer->addAction(QStringLiteral("user_agent_chromium_linux")); + userAgentFirefoxWindowsActionPointer = actionCollectionPointer->addAction(QStringLiteral("user_agent_firefox_windows")); + userAgentChromeWindowsActionPointer = actionCollectionPointer->addAction(QStringLiteral("user_agent_chrome_windows")); + userAgentEdgeWindowsActionPointer = actionCollectionPointer->addAction(QStringLiteral("user_agent_edge_windows")); + userAgentSafariMacosActionPointer = actionCollectionPointer->addAction(QStringLiteral("user_agent_safari_macos")); + userAgentCustomActionPointer = actionCollectionPointer->addAction(QStringLiteral("user_agent_custom")); + searchEngineMojeekActionPointer = actionCollectionPointer->addAction(QStringLiteral("search_engine_mojeek")); + searchEngineMonoclesActionPointer = actionCollectionPointer->addAction(QStringLiteral("search_engine_monocles")); + searchEngineMetagerActionPointer = actionCollectionPointer->addAction(QStringLiteral("search_engine_metager")); + searchEngineGoogleActionPointer = actionCollectionPointer->addAction(QStringLiteral("search_engine_google")); + searchEngineBingActionPointer = actionCollectionPointer->addAction(QStringLiteral("search_engine_bing")); + searchEngineYahooActionPointer = actionCollectionPointer->addAction(QStringLiteral("search_engine_yahoo")); + searchEngineCustomActionPointer = actionCollectionPointer->addAction(QStringLiteral("search_engine_custom")); + + // Create the action groups + QActionGroup *userAgentActionGroupPointer = new QActionGroup(this); + QActionGroup *searchEngineActionGroupPointer = new QActionGroup(this); + + // Add the actions to the groups. + userAgentActionGroupPointer->addAction(userAgentPrivacyBrowserActionPointer); + userAgentActionGroupPointer->addAction(userAgentFirefoxLinuxActionPointer); + userAgentActionGroupPointer->addAction(userAgentChromiumLinuxActionPointer); + userAgentActionGroupPointer->addAction(userAgentFirefoxWindowsActionPointer); + userAgentActionGroupPointer->addAction(userAgentChromeWindowsActionPointer); + userAgentActionGroupPointer->addAction(userAgentEdgeWindowsActionPointer); + userAgentActionGroupPointer->addAction(userAgentSafariMacosActionPointer); + userAgentActionGroupPointer->addAction(userAgentCustomActionPointer); + searchEngineActionGroupPointer->addAction(searchEngineMojeekActionPointer); + searchEngineActionGroupPointer->addAction(searchEngineMonoclesActionPointer); + searchEngineActionGroupPointer->addAction(searchEngineMetagerActionPointer); + searchEngineActionGroupPointer->addAction(searchEngineGoogleActionPointer); + searchEngineActionGroupPointer->addAction(searchEngineBingActionPointer); + searchEngineActionGroupPointer->addAction(searchEngineYahooActionPointer); + searchEngineActionGroupPointer->addAction(searchEngineCustomActionPointer); + + // Set some actions to be checkable. + userAgentPrivacyBrowserActionPointer->setCheckable(true); + userAgentFirefoxLinuxActionPointer->setCheckable(true); + userAgentChromiumLinuxActionPointer->setCheckable(true); + userAgentFirefoxWindowsActionPointer->setCheckable(true); + userAgentChromeWindowsActionPointer->setCheckable(true); + userAgentEdgeWindowsActionPointer->setCheckable(true); + userAgentSafariMacosActionPointer->setCheckable(true); + userAgentCustomActionPointer->setCheckable(true); + searchEngineMojeekActionPointer->setCheckable(true); + searchEngineMonoclesActionPointer->setCheckable(true); + searchEngineMetagerActionPointer->setCheckable(true); + searchEngineGoogleActionPointer->setCheckable(true); + searchEngineBingActionPointer->setCheckable(true); + searchEngineYahooActionPointer->setCheckable(true); + searchEngineCustomActionPointer->setCheckable(true); + + // Set the action names. The custom action text will be set later in the on-the-fly update slots. + userAgentPrivacyBrowserActionPointer->setText(i18nc("@action", "Privacy Browser")); + userAgentFirefoxLinuxActionPointer->setText(i18nc("@action", "Firefox Linux")); + userAgentChromiumLinuxActionPointer->setText(i18nc("@action", "Chromium Linux")); + userAgentFirefoxWindowsActionPointer->setText(i18nc("@action", "Firefox Windows")); + userAgentChromeWindowsActionPointer->setText(i18nc("@action", "Chrome Windows")); + userAgentEdgeWindowsActionPointer->setText(i18nc("@action", "Edge Windows")); + userAgentSafariMacosActionPointer->setText(i18nc("@action", "Safari macOS")); + searchEngineMojeekActionPointer->setText(i18nc("@action", "Mojeek")); + searchEngineMonoclesActionPointer->setText(i18nc("@action", "Monocles")); + searchEngineMetagerActionPointer->setText(i18nc("@action", "MetaGer")); + searchEngineGoogleActionPointer->setText(i18nc("@action", "Google")); + searchEngineBingActionPointer->setText(i18nc("@action", "Bing")); + searchEngineYahooActionPointer->setText(i18nc("@action", "Yahoo")); + + // Update the on-the-fly menus. + connect(mainViewPointer, SIGNAL(userAgentUpdated(QString)), this, SLOT(updateOnTheFlyUserAgent(QString))); + connect(mainViewPointer, SIGNAL(searchEngineUpdated(QString)), this, SLOT(updateOnTheFlySearchEngine(QString))); + + // Apply the on-the-fly settings when selected. + connect(userAgentActionGroupPointer, SIGNAL(triggered(QAction*)), mainViewPointer, SLOT(applyOnTheFlyUserAgent(QAction*))); + connect(searchEngineActionGroupPointer, SIGNAL(triggered(QAction*)), mainViewPointer, SLOT(applyOnTheFlySearchEngine(QAction*))); + + // Initialize the on-the-fly search engine menu, as the slot connection had not been created when MainView was constructed. + updateOnTheFlySearchEngine(Settings::searchEngine()); + // Update the status bar with the URL when a link is hovered. connect(mainViewPointer, SIGNAL(linkHovered(QString)), this, SLOT(updateStatusBar(QString))); @@ -114,6 +195,128 @@ void BrowserWindow::settingsConfigure() } } +void BrowserWindow::updateOnTheFlySearchEngine(const QString &searchEngine) const +{ + // Initialize the custom search engine flag. + bool customSearchEngine = false; + + if (searchEngine == "Mojeek") // Mojeek. + { + searchEngineMojeekActionPointer->setChecked(true); + } + else if (searchEngine == "Monocles") // Monocles. + { + searchEngineMonoclesActionPointer->setChecked(true); + } + else if (searchEngine == "MetaGer") // MetaGer. + { + searchEngineMetagerActionPointer->setChecked(true); + } + else if (searchEngine == "Google") // Google. + { + searchEngineGoogleActionPointer->setChecked(true); + } + else if (searchEngine == "Bing") // Bing. + { + searchEngineBingActionPointer->setChecked(true); + } + else if (searchEngine == "Yahoo") // Yahoo. + { + searchEngineYahooActionPointer->setChecked(true); + } + else // Custom search engine. + { + // Check the user agent. + searchEngineCustomActionPointer->setChecked(true); + + // Set the custom search engine flag. + customSearchEngine = true; + } + + + // Format the custom search engine. + if (customSearchEngine) + { + // Enable the custom search engine. + searchEngineCustomActionPointer->setEnabled(true); + + // Set the custom search engine text. + searchEngineCustomActionPointer->setText(searchEngine); + } + else + { + // Disable the custom search engine. + searchEngineCustomActionPointer->setEnabled(false); + + // Reset the custom search engine text. + searchEngineCustomActionPointer->setText(i18nc("@action", "Custom")); + } +} + +void BrowserWindow::updateOnTheFlyUserAgent(const QString &userAgent) const +{ + // Initialize the custom user agent flag. + bool customUserAgent = false; + + // Check the indicated on-the-fly user agent. + if (userAgent == "Privacy Browser") // Privacy Browser. + { + userAgentPrivacyBrowserActionPointer->setChecked(true); + } + else if (userAgent == "Firefox Linux") // Firefox Linux. + { + userAgentFirefoxLinuxActionPointer->setChecked(true); + } + else if (userAgent == "Chromium Linux") // Chromium Linux. + { + userAgentChromiumLinuxActionPointer->setChecked(true); + } + else if (userAgent == "Firefox Windows") // Firefox Windows. + { + userAgentFirefoxWindowsActionPointer->setChecked(true); + } + else if (userAgent == "Chrome Windows") // Chrome Windows. + { + userAgentChromeWindowsActionPointer->setChecked(true); + } + else if (userAgent == "Edge Windows") // Edge Windows. + { + userAgentEdgeWindowsActionPointer->setChecked(true); + } + else if (userAgent == "Safari macOS") // Safari macOS. + { + userAgentSafariMacosActionPointer->setChecked(true); + } + else // Custom user agent. + { + // Check the user agent. + userAgentCustomActionPointer->setChecked(true); + + // Set the custom user agent flag. + customUserAgent = true; + } + + + // Format the custom user agent. + if (customUserAgent) + { + // Enable the custom user agent. + userAgentCustomActionPointer->setEnabled(true); + + // Set the custom user agent text. + userAgentCustomActionPointer->setText(userAgent); + } + else + { + // Disable the custom user agent. + userAgentCustomActionPointer->setEnabled(false); + + // Reset the custom user agent text. + userAgentCustomActionPointer->setText(i18nc("@action", "Custom")); + } +} + + void BrowserWindow::updateSearchEngineLabel(const QString &searchEngineString) const { // Update the search engine label.