]> gitweb.stoutner.com Git - PrivacyBrowserPC.git/blobdiff - src/BrowserWindow.cpp
Add on-the-fly settings.
[PrivacyBrowserPC.git] / src / BrowserWindow.cpp
index 29fe4644feb31db29f80f92ea8bdd798e82d7862..1265c0d38a2c92a922f4d942af7e03f90330b2d5 100644 (file)
@@ -48,6 +48,87 @@ BrowserWindow::BrowserWindow() : KXmlGuiWindow()
     KStandardAction::quit(qApp, SLOT(closeAllWindows()), actionCollectionPointer);
     KStandardAction::preferences(this, SLOT(settingsConfigure()), actionCollectionPointer);
 
     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)));
 
     // 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.
 void BrowserWindow::updateSearchEngineLabel(const QString &searchEngineString) const
 {
     // Update the search engine label.