]> gitweb.stoutner.com Git - PrivacyBrowserPC.git/blobdiff - src/views/BrowserView.cpp
Clear the URL line edit when navigating history. https://redmine.stoutner.com/issues/841
[PrivacyBrowserPC.git] / src / views / BrowserView.cpp
index 933a300816208a1ad3528b29fb429f8cab742564..873b9476da8bd0cce0bd441e742e0f79d7febb05 100644 (file)
@@ -19,9 +19,9 @@
 
 // Application headers.
 #include "BrowserView.h"
-#include "MouseEventFilter.h"
 #include "Settings.h"
 #include "ui_BrowserView.h"
+#include "filters/MouseEventFilter.h"
 #include "helpers/DomainsDatabaseHelper.h"
 #include "helpers/SearchEngineHelper.h"
 #include "helpers/UserAgentHelper.h"
@@ -32,6 +32,9 @@
 #include <QAction>
 #include <QWebEngineProfile>
 
+// Initialize the public static variables.
+QString BrowserView::webEngineDefaultUserAgent = QStringLiteral("");
+
 BrowserView::BrowserView(QWidget *parent) : QWidget(parent)
 {
     // Instantiate the browser view UI.
@@ -43,12 +46,22 @@ BrowserView::BrowserView(QWidget *parent) : QWidget(parent)
     // Get handles for the views.
     webEngineViewPointer = browserViewUi.webEngineView;
 
+    // Create an off-the-record profile (the default when no profile name is specified).
+    webEngineProfilePointer = new QWebEngineProfile(QStringLiteral(""));
+
+    // Create a WebEngine page.
+    QWebEnginePage *webEnginePagePointer = new QWebEnginePage(webEngineProfilePointer);
+
+    // Set the WebEngine page.
+    webEngineViewPointer->setPage(webEnginePagePointer);
+
     // Get handles for the aspects of the WebEngine.
-    QWebEnginePage *webEnginePagePointer = webEngineViewPointer->page();
     webEngineHistoryPointer = webEnginePagePointer->history();
-    webEngineProfilePointer = webEnginePagePointer->profile();
     webEngineSettingsPointer = webEngineViewPointer->settings();
 
+    // Store a copy of the WebEngine default user agent.
+    webEngineDefaultUserAgent = webEngineProfilePointer->httpUserAgent();
+
     // Update the URL line edit when the URL changes.
     connect(webEngineViewPointer, SIGNAL(urlChanged(const QUrl)), this, SLOT(updateUrl(const QUrl)));
 
@@ -58,11 +71,15 @@ BrowserView::BrowserView(QWidget *parent) : QWidget(parent)
     connect(webEngineViewPointer, SIGNAL(loadFinished(const bool)), this, SLOT(loadFinished()));
 
     // Instantiate the mouse event filter pointer.
-    MouseEventFilter *mouseEventFilterPointer = new MouseEventFilter(webEngineViewPointer);
+    MouseEventFilter *mouseEventFilterPointer = new MouseEventFilter();
 
     // Install the mouse event filter.
     qApp->installEventFilter(mouseEventFilterPointer);
 
+    // Process mouse forward and back commands.
+    connect(mouseEventFilterPointer, SIGNAL(mouseBack()), this, SLOT(mouseBack()));
+    connect(mouseEventFilterPointer, SIGNAL(mouseForward()), this, SLOT(mouseForward()));
+
     // Listen for hovered link URLs.
     connect(webEnginePagePointer, SIGNAL(linkHovered(const QString)), this, SLOT(pageLinkHovered(const QString)));
 
@@ -75,9 +92,6 @@ BrowserView::BrowserView(QWidget *parent) : QWidget(parent)
     // Reapply the domain settings when the host changes.
     connect(urlRequestInterceptorPointer, SIGNAL(applyDomainSettings(QString)), this, SLOT(applyDomainSettingsWithoutReloading(QString)));
 
-    // Disable the cache.
-    webEngineProfilePointer->setHttpCacheType(QWebEngineProfile::NoCache);
-
     // Don't allow JavaScript to open windows.
     webEngineSettingsPointer->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows, false);
 
@@ -209,7 +223,7 @@ void BrowserView::applyDomainSettings(const QString &hostname, const bool reload
         webEngineViewPointer->setZoomFactor(currentZoomFactor);
 
         // Apply the domain settings palette to the URL line edit.
-        emit updateDomainSettingsIndicator(true);
+        emit updateDomainSettingsIndicator(true, domainRecord.field(DomainsDatabaseHelper::DOMAIN_NAME).value().toString());
     }
     else  // The hostname does not have domain settings.
     {
@@ -229,7 +243,7 @@ void BrowserView::applyDomainSettings(const QString &hostname, const bool reload
         webEngineViewPointer->setZoomFactor(Settings::zoomFactor());
 
         // Apply the no domain settings palette to the URL line edit.
-        emit updateDomainSettingsIndicator(false);
+        emit updateDomainSettingsIndicator(false, QStringLiteral(""));
     }
 
     // Emit the update actions signals.
@@ -366,6 +380,32 @@ void BrowserView::loadUrlFromLineEdit(QString url) const
     }
 }
 
+void BrowserView::mouseBack() const
+{
+    // Go back if possible.
+    if (webEngineHistoryPointer->canGoBack())
+    {
+        // Clear the URL line edit focus.
+        emit clearUrlLineEditFocus();
+
+        // Go back.
+        webEngineViewPointer->back();
+    }
+}
+
+void BrowserView::mouseForward() const
+{
+    // Go forward if possible.
+    if (webEngineHistoryPointer->canGoForward())
+    {
+        // Clear the URL line edit focus.
+        emit clearUrlLineEditFocus();
+
+        // Go forward.
+        webEngineViewPointer->forward();
+    }
+}
+
 void BrowserView::pageLinkHovered(const QString &linkUrl) const
 {
     // Emit a signal so that the browser window can update the status bar.
@@ -405,7 +445,7 @@ void BrowserView::toggleLocalStorage() const
 void BrowserView::updateUrl(const QUrl &url) const
 {
     // Update the URL line edit.
-    emit updateUrlLineEdit(url.toString());
+    emit updateUrlLineEdit(url);
 
     // Update the status of the forward and back buttons.
     emit updateBackAction(webEngineHistoryPointer->canGoBack());