WebBrowser/WebBrowserWindow.py

changeset 5721
b4d0cddecd64
parent 5627
fcffc4cd5e5c
child 5722
433187e73c0f
--- a/WebBrowser/WebBrowserWindow.py	Thu Apr 27 18:33:57 2017 +0200
+++ b/WebBrowser/WebBrowserWindow.py	Sat Apr 29 20:07:34 2017 +0200
@@ -127,6 +127,8 @@
         @keyparam qthelp flag indicating to enable the QtHelp support (bool)
         @keyparam settingsDir directory to be used for the settings files (str)
         """
+        self.__hideNavigationTimer = None
+        
         super(WebBrowserWindow, self).__init__(parent)
         self.setObjectName(name)
         if private:
@@ -378,6 +380,13 @@
             
             e5App().focusChanged.connect(self.__appFocusChanged)
             
+            self.__toolbarStates = self.saveState()
+            
+            self.__hideNavigationTimer = QTimer(self)
+            self.__hideNavigationTimer.setInterval(1000)
+            self.__hideNavigationTimer.setSingleShot(True)
+            self.__hideNavigationTimer.timeout.connect(self.__hideNavigation)
+            
             QTimer.singleShot(0, syncMgr.loadSettings)
     
     def __del__(self):
@@ -1952,6 +1961,10 @@
         """
         Private method to create the toolbars.
         """
+        # save references to toolbars in order to hide them
+        # when going full screen
+        self.__toolbars = []
+        
         filetb = self.addToolBar(self.tr("File"))
         filetb.setObjectName("FileToolBar")
         filetb.setIconSize(UI.Config.ToolBarIconSize)
@@ -1975,6 +1988,7 @@
             filetb.addSeparator()
         filetb.addAction(self.closeAct)
         filetb.addAction(self.exitAct)
+        self.__toolbars.append(filetb)
         
         self.savePageScreenMenu = QMenu(self)
         self.savePageScreenMenu.addAction(self.savePageScreenAct)
@@ -1994,6 +2008,7 @@
         edittb.addAction(self.pasteAct)
         edittb.addSeparator()
         edittb.addAction(self.selectAllAct)
+        self.__toolbars.append(edittb)
         
         viewtb = self.addToolBar(self.tr("View"))
         viewtb.setObjectName("ViewToolBar")
@@ -2003,6 +2018,7 @@
         viewtb.addAction(self.zoomOutAct)
         viewtb.addSeparator()
         viewtb.addAction(self.fullScreenAct)
+        self.__toolbars.append(viewtb)
         
         findtb = self.addToolBar(self.tr("Find"))
         findtb.setObjectName("FindToolBar")
@@ -2010,6 +2026,7 @@
         findtb.addAction(self.findAct)
         findtb.addAction(self.findNextAct)
         findtb.addAction(self.findPrevAct)
+        self.__toolbars.append(findtb)
         
         if WebBrowserWindow._useQtHelp:
             filtertb = self.addToolBar(self.tr("Filter"))
@@ -2023,6 +2040,7 @@
             self.filterCombo.activated[str].connect(
                 self.__filterQtHelpDocumentation)
             self.__setupFilterCombo()
+            self.__toolbars.append(filtertb)
         
         settingstb = self.addToolBar(self.tr("Settings"))
         settingstb.setObjectName("SettingsToolBar")
@@ -2034,6 +2052,7 @@
         settingstb.addAction(self.personalDataAct)
         settingstb.addAction(self.greaseMonkeyAct)
         settingstb.addAction(self.featurePermissionAct)
+        self.__toolbars.append(settingstb)
         
         toolstb = self.addToolBar(self.tr("Tools"))
         toolstb.setObjectName("ToolsToolBar")
@@ -2042,11 +2061,13 @@
         toolstb.addAction(self.siteInfoAct)
         toolstb.addSeparator()
         toolstb.addAction(self.synchronizationAct)
+        self.__toolbars.append(toolstb)
         
         helptb = self.addToolBar(self.tr("Help"))
         helptb.setObjectName("HelpToolBar")
         helptb.setIconSize(UI.Config.ToolBarIconSize)
         helptb.addAction(self.whatsThisAct)
+        self.__toolbars.append(helptb)
         
         self.addToolBarBreak()
         
@@ -2092,6 +2113,9 @@
         forwardButton.setMenu(self.forwardMenu)
         forwardButton.setPopupMode(QToolButton.MenuButtonPopup)
         
+        self.__toolbars.append(gotb)
+        self.__gotb = gotb
+        
         from .Bookmarks.BookmarksToolBar import BookmarksToolBar
         bookmarksModel = self.bookmarksManager().bookmarksModel()
         self.bookmarksToolBar = BookmarksToolBar(self, bookmarksModel, self)
@@ -2102,6 +2126,7 @@
         self.bookmarksToolBar.newWindow.connect(self.openUrlNewWindow)
         self.addToolBarBreak()
         self.addToolBar(self.bookmarksToolBar)
+        self.__toolbars.append(self.bookmarksToolBar)
         
         self.addToolBarBreak()
         vttb = self.addToolBar(self.tr("VirusTotal"))
@@ -2125,6 +2150,7 @@
             self.virustotalScanCurrentAct.setEnabled(False)
             self.virustotalIpReportAct.setEnabled(False)
             self.virustotalDomainReportAct.setEnabled(False)
+        self.__toolbars.append(vttb)
         
     def __nextTab(self):
         """
@@ -2679,17 +2705,9 @@
         if self.isFullScreen():
             # switch back to normal
             self.showNormal()
-            self.menuBar().show()
-            self.fullScreenAct.setIcon(
-                UI.PixmapCache.getIcon("windowFullscreen.png"))
-            self.fullScreenAct.setIconText(self.tr('Full Screen'))
         else:
             # switch to full screen
             self.showFullScreen()
-            self.menuBar().hide()
-            self.fullScreenAct.setIcon(
-                UI.PixmapCache.getIcon("windowRestore.png"))
-            self.fullScreenAct.setIconText(self.tr('Restore Window'))
     
     def enterHtmlFullScreen(self):
         """
@@ -2699,6 +2717,44 @@
         self.showFullScreen()
         self.__htmlFullScreen = True
     
+    def isFullScreenNavigationVisible(self):
+        """
+        Public method to check, if full screen navigation is active.
+        """
+        # TODO: change this to navigation widget
+        return self.isFullScreen() and self.__gotb.isVisible()
+    
+    def showFullScreenNavigation(self):
+        """
+        Public slot to show full screen navigation.
+        """
+        if self.__htmlFullScreen:
+            return
+        
+        if self.__hideNavigationTimer.isActive():
+            self.__hideNavigationTimer.stop()
+        
+        # TODO: change this to navigation widget
+        self.__gotb.show()
+    
+    def hideFullScreenNavigation(self):
+        """
+        Public slot to hide full screen navigation.
+        """
+        if not self.__hideNavigationTimer.isActive():
+            self.__hideNavigationTimer.start()
+    
+    def __hideNavigation(self):
+        """
+        Private slot to hide full screen navigation by timer.
+        """
+        browser = self.currentBrowser()
+        mouseInBrowser = browser and browser.underMouse()
+        
+        if self.isFullScreen() and mouseInBrowser:
+            # TODO: change this to navigation widget
+            self.__gotb.hide()
+    
     def __copy(self):
         """
         Private slot called to handle the copy action.
@@ -4021,11 +4077,32 @@
                bool(self.windowState() & Qt.WindowFullScreen):
                 # enter full screen mode
                 self.__windowStates = evt.oldState()
+                self.__toolbarStates = self.saveState()
+                self.menuBar().hide()
+                self.statusBar().hide()
+                for toolbar in self.__toolbars:
+                    toolbar.hide()
+                self.__tabWidget.tabBar().hide()
+                self.__searchWidget.hide()
+##                self.fullScreenAct.setIcon(
+##                    UI.PixmapCache.getIcon("windowRestore.png"))
+##                self.fullScreenAct.setIconText(self.tr('Restore Window'))
+            
             elif bool(evt.oldState() & Qt.WindowFullScreen) and \
                     not bool(self.windowState() & Qt.WindowFullScreen):
                 # leave full screen mode
                 self.setWindowState(self.__windowStates)
                 self.__htmlFullScreen = False
+                self.menuBar().show()
+                self.statusBar().show()
+                self.restoreState(self.__toolbarStates)
+                self.__tabWidget.tabBar().show()
+##                self.fullScreenAct.setIcon(
+##                    UI.PixmapCache.getIcon("windowFullscreen.png"))
+##                self.fullScreenAct.setIconText(self.tr('Full Screen'))
+            
+            if self.__hideNavigationTimer:
+                self.__hideNavigationTimer.stop()
         
         return super(WebBrowserWindow, self).event(evt)
     

eric ide

mercurial