]> gitweb.stoutner.com Git - PrivacyBrowserPC.git/blobdiff - src/windows/BrowserWindow.cpp
Add full screen support. https://redmine.stoutner.com/issues/832
[PrivacyBrowserPC.git] / src / windows / BrowserWindow.cpp
index 15b683e77f114e7342e11e5c7ea926631384f1ce..e84f9574835bdf1ad6c04df0304e518d1ee7c9cb 100644 (file)
@@ -36,6 +36,7 @@
 #include <QInputDialog>
 #include <QNetworkCookie>
 #include <QMenuBar>
+#include <QShortcut>
 #include <QStatusBar>
 
 // Construct the class.
@@ -56,13 +57,14 @@ BrowserWindow::BrowserWindow() : KXmlGuiWindow()
     KActionCollection *actionCollectionPointer = this->actionCollection();
 
     // Add the standard actions.
+    KStandardAction::openNew(this, SLOT(fileNew()), actionCollectionPointer);
+    KStandardAction::quit(qApp, SLOT(closeAllWindows()), actionCollectionPointer);
+    KStandardAction::redisplay(this, SLOT(refresh()), actionCollectionPointer);
+    fullScreenActionPointer = KStandardAction::fullScreen(this, SLOT(toggleFullScreen()), this, actionCollectionPointer);
     QAction *backActionPointer = KStandardAction::back(this, SLOT(back()), actionCollectionPointer);
     QAction *forwardActionPointer = KStandardAction::forward(this, SLOT(forward()), actionCollectionPointer);
     KStandardAction::home(this, SLOT(home()), actionCollectionPointer);
-    KStandardAction::openNew(this, SLOT(fileNew()), actionCollectionPointer);
-    KStandardAction::quit(qApp, SLOT(closeAllWindows()), actionCollectionPointer);
     KStandardAction::preferences(this, SLOT(settingsConfigure()), actionCollectionPointer);
-    KStandardAction::redisplay(this, SLOT(refresh()), actionCollectionPointer);
 
     // Add the custom actions.
     userAgentPrivacyBrowserActionPointer = actionCollectionPointer->addAction(QStringLiteral("user_agent_privacy_browser"));
@@ -175,9 +177,9 @@ BrowserWindow::BrowserWindow() : KXmlGuiWindow()
     domStorageActionPointer->setIcon(QIcon::fromTheme(QStringLiteral("view-web-browser-dom-tree")));
 
     // Update the on-the-fly menus.
-    connect(browserViewPointer, SIGNAL(updateUserAgentActions(QString)), this, SLOT(updateUserAgentActions(QString)));
+    connect(browserViewPointer, SIGNAL(updateUserAgentActions(QString, bool)), this, SLOT(updateUserAgentActions(QString, bool)));
     connect(browserViewPointer, SIGNAL(updateZoomFactorAction(double)), this, SLOT(updateZoomFactorAction(double)));
-    connect(browserViewPointer, SIGNAL(updateSearchEngineActions(QString)), this, SLOT(updateSearchEngineActions(QString)));
+    connect(browserViewPointer, SIGNAL(updateSearchEngineActions(QString, bool)), this, SLOT(updateSearchEngineActions(QString, bool)));
 
     // Apply the on-the-fly settings when selected.
     connect(userAgentActionGroupPointer, SIGNAL(triggered(QAction*)), browserViewPointer, SLOT(applyOnTheFlyUserAgent(QAction*)));
@@ -219,8 +221,9 @@ BrowserWindow::BrowserWindow() : KXmlGuiWindow()
     userAgentMenuActionPointer = userAgentMenuPointer->menuAction();
     searchEngineMenuActionPointer = searchEngineMenuPointer->menuAction();
 
-    // Get a handle for the URL toolbar.
-    KToolBar *urlToolBarPointer = toolBar(QStringLiteral("url_toolbar"));
+    // Get handles for the toolbars.
+    navigationToolBarPointer = toolBar(QStringLiteral("navigation_toolbar"));
+    urlToolBarPointer = toolBar(QStringLiteral("url_toolbar"));
 
     // Create a URL line edit.
     urlLineEditPointer = new KLineEdit();
@@ -273,13 +276,24 @@ BrowserWindow::BrowserWindow() : KXmlGuiWindow()
     connect(browserViewPointer, SIGNAL(addCookie(QNetworkCookie)), this, SLOT(addCookieToList(QNetworkCookie)));
     connect(browserViewPointer, SIGNAL(removeCookie(QNetworkCookie)), this, SLOT(removeCookieFromList(QNetworkCookie)));
 
+    // Process full screen requests.
+    connect(browserViewPointer, SIGNAL(fullScreenRequested(bool)), this, SLOT(fullScreenRequested(bool)));
+
+    // Create keyboard shortcuts.
+    QShortcut *f11ShortcutPointer = new QShortcut(QKeySequence(i18nc("The toggle full screen shortcut.", "F11")), this);
+    QShortcut *escapeShortcutPointer = new QShortcut(QKeySequence::Cancel, this);
+
+    // Connect the keyboard shortcuts to the actions.
+    connect(f11ShortcutPointer, SIGNAL(activated()), fullScreenActionPointer, SLOT(trigger()));
+    connect(escapeShortcutPointer, SIGNAL(activated()), this, SLOT(escape()));
+
     // Load the initial website.
     browserViewPointer->loadInitialWebsite();
 }
 
 void BrowserWindow::addCookieToList(const QNetworkCookie &newCookie) const
 {
-    qDebug() << "Add cookie:  " << newCookie.toRawForm();
+    //qDebug() << "Add cookie:  " << newCookie.toRawForm();
 
     // Add the new cookie to the list.
     cookieListPointer->push_front(newCookie);
@@ -340,6 +354,13 @@ void BrowserWindow::clearUrlLineEditFocus() const
     urlLineEditPointer->clearFocus();
 }
 
+void BrowserWindow::escape() const
+{
+    // Exit full screen browsing if it is enabled.
+    if (fullScreenActionPointer->isChecked())
+        fullScreenActionPointer->trigger();
+}
+
 void BrowserWindow::fileNew() const
 {
     // Display a new instance of Privacy Browser.
@@ -355,6 +376,33 @@ void BrowserWindow::forward() const
     browserViewPointer->forward();
 }
 
+void BrowserWindow::fullScreenRequested(const bool toggleOn)
+{
+    // Toggle full screen mode.
+    if (toggleOn)  // Turn full screen mode on.
+    {
+        // Set the window to be full screen.
+        fullScreenActionPointer->setFullScreen(window(), true);
+
+        // Hide all the bars.
+        menuBar()->setVisible(false);
+        navigationToolBarPointer->setVisible(false);
+        urlToolBarPointer->setVisible(false);
+        statusBar()->setVisible(false);
+    }
+    else  // Turn full screen mode off.
+    {
+        // Set the window to not be full screen.
+        fullScreenActionPointer->setFullScreen(window(), false);
+
+        // Show all the bars.
+        menuBar()->setVisible(true);
+        navigationToolBarPointer->setVisible(true);
+        urlToolBarPointer->setVisible(true);
+        statusBar()->setVisible(true);
+    }
+}
+
 void BrowserWindow::getZoomFactorFromUser()
 {
     // Create an OK flag.
@@ -440,7 +488,7 @@ void BrowserWindow::refresh() const
 
 void BrowserWindow::removeCookieFromList(const QNetworkCookie &cookie) const
 {
-    qDebug() << "Remove cookie:  " << cookie.toRawForm();
+    //qDebug() << "Remove cookie:  " << cookie.toRawForm();
 
     // Remove the cookie from the list.
     cookieListPointer->remove(cookie);
@@ -539,13 +587,13 @@ void BrowserWindow::settingsConfigure()
     }
 }
 
-void BrowserWindow::toggleLocalStorage() const
+void BrowserWindow::toggleDomStorage() const
 {
-    // Remove the focus from teh URL line edit.
+    // Remove the focus from the URL line edit.
     urlLineEditPointer->clearFocus();
 
-    // Toggle local storage.
-    browserViewPointer->toggleLocalStorage();
+    // Toggle DOM storage.
+    browserViewPointer->toggleDomStorage();
 }
 
 void BrowserWindow::toggleJavaScript() const
@@ -557,13 +605,53 @@ void BrowserWindow::toggleJavaScript() const
     browserViewPointer->toggleJavaScript();
 }
 
-void BrowserWindow::toggleDomStorage() const
+void BrowserWindow::toggleLocalStorage() const
 {
     // Remove the focus from the URL line edit.
     urlLineEditPointer->clearFocus();
 
-    // Toggle DOM storage.
-    browserViewPointer->toggleDomStorage();
+    // Toggle local storage.
+    browserViewPointer->toggleLocalStorage();
+}
+
+void BrowserWindow::toggleFullScreen()
+{
+    // Toggle the full screen status.
+    if (fullScreenActionPointer->isChecked())  // Enable full screen browsing mode.
+    {
+        // Enable full screen mode.
+        fullScreenActionPointer->setFullScreen(window(), true);
+
+        // Hide the menu bar if specified.
+        if (Settings::fullScreenHideMenuBar())
+            menuBar()->setVisible(false);
+
+        // Hide the toolbars if specified.
+        if (Settings::fullScreenHideToolBars())
+        {
+            navigationToolBarPointer->setVisible(false);
+            urlToolBarPointer->setVisible(false);
+        }
+
+        // Hide the status bar if specified.
+        if (Settings::fullScreenHideStatusBar())
+            statusBar()->setVisible(false);
+    }
+    else  // Disable full screen browsing mode.
+    {
+        // Disable full screen mode.
+        fullScreenActionPointer->setFullScreen(window(), false);
+
+        // Show the menu bar.
+        menuBar()->setVisible(true);
+
+        // Show the toolbars.
+        navigationToolBarPointer->setVisible(true);
+        urlToolBarPointer->setVisible(true);
+
+        // Show the status bar.
+        statusBar()->setVisible(true);
+    }
 }
 
 void BrowserWindow::updateDomStorageAction(const bool &isEnabled) const
@@ -620,7 +708,7 @@ void BrowserWindow::updateLocalStorageAction(const bool &isEnabled)
     domStorageActionPointer->setEnabled(localStorageEnabled & javaScriptEnabled);
 }
 
-void BrowserWindow::updateSearchEngineActions(const QString &searchEngine) const
+void BrowserWindow::updateSearchEngineActions(const QString &searchEngine, const bool &updateCustomSearchEngineStatus)
 {
     // Initialize the custom search engine flag.
     bool customSearchEngine = false;
@@ -681,18 +769,22 @@ void BrowserWindow::updateSearchEngineActions(const QString &searchEngine) const
         // Update the search engine menu action text.
         searchEngineMenuActionPointer->setText(i18nc("The main search engine menu action", "Search Engine - Custom"));
 
+        // Set the custom search engine text.
+        searchEngineCustomActionPointer->setText(searchEngine);
+
         // Set the custom search engine flag.
         customSearchEngine = true;
     }
 
+    // Update the custom search engine enabled boolean.
+    if (updateCustomSearchEngineStatus)
+        customSearchEngineEnabled = customSearchEngine;
+
     // Format the custom search engine.
-    if (customSearchEngine)
+    if (customSearchEngineEnabled)
     {
         // Enable the custom search engine.
         searchEngineCustomActionPointer->setEnabled(true);
-
-        // Set the custom search engine text.
-        searchEngineCustomActionPointer->setText(searchEngine);
     }
     else
     {
@@ -704,7 +796,7 @@ void BrowserWindow::updateSearchEngineActions(const QString &searchEngine) const
     }
 }
 
-void BrowserWindow::updateUserAgentActions(const QString &userAgent) const
+void BrowserWindow::updateUserAgentActions(const QString &userAgent, const bool &updateCustomUserAgentStatus)
 {
     // Initialize the custom user agent flag.
     bool customUserAgent = false;
@@ -782,19 +874,23 @@ void BrowserWindow::updateUserAgentActions(const QString &userAgent) const
         // Update the user agent menu action text.
         userAgentMenuActionPointer->setText(i18nc("The main user agent menu action", "User Agent - Custom"));
 
+        // Set the custom user agent text.
+        userAgentCustomActionPointer->setText(userAgent);
+
         // Set the custom user agent flag.
         customUserAgent = true;
     }
 
+    // Update the custom user agent enabled boolean.
+    if (updateCustomUserAgentStatus)
+        customUserAgentEnabled = customUserAgent;
+
 
     // Format the custom user agent.
-    if (customUserAgent)
+    if (customUserAgentEnabled)
     {
         // Enable the custom user agent.
         userAgentCustomActionPointer->setEnabled(true);
-
-        // Set the custom user agent text.
-        userAgentCustomActionPointer->setText(userAgent);
     }
     else
     {