diff -r fc72c0c81a0f -r b4d0cddecd64 WebBrowser/WebBrowserWindow.py --- 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)