--- a/WebBrowser/UrlBar/UrlBar.py Sun Jul 30 19:56:04 2017 +0200 +++ b/WebBrowser/UrlBar/UrlBar.py Fri Aug 04 18:38:45 2017 +0200 @@ -13,7 +13,7 @@ except NameError: pass -from PyQt5.QtCore import pyqtSlot, Qt, QPointF, QUrl, QDateTime, QTimer +from PyQt5.QtCore import pyqtSlot, Qt, QPointF, QUrl, QDateTime, QTimer, QPoint from PyQt5.QtGui import QColor, QPalette, QLinearGradient, QIcon from PyQt5.QtWidgets import QDialog, QApplication from PyQt5.QtWebEngineWidgets import QWebEnginePage @@ -23,7 +23,10 @@ from WebBrowser.WebBrowserWindow import WebBrowserWindow +from WebBrowser.SafeBrowsing.SafeBrowsingLabel import SafeBrowsingLabel + from .FavIconLabel import FavIconLabel + import UI.PixmapCache import Preferences @@ -51,6 +54,10 @@ self.__bmInactiveIcon = QIcon( self.__bmActiveIcon.pixmap(16, 16, QIcon.Disabled)) + self.__safeBrowsingLabel = SafeBrowsingLabel(self) + self.addWidget(self.__safeBrowsingLabel, E5LineEdit.LeftSide) + self.__safeBrowsingLabel.setVisible(False) + self.__favicon = FavIconLabel(self) self.addWidget(self.__favicon, E5LineEdit.LeftSide) @@ -68,6 +75,7 @@ self.addWidget(self.__clearButton, E5LineEdit.RightSide) self.__clearButton.setVisible(False) + self.__safeBrowsingLabel.clicked.connect(self.__showThreatInfo) self.__bookmarkButton.clicked.connect(self.__showBookmarkInfo) self.__rssButton.clicked.connect(self.__rssClicked) self.__clearButton.clicked.connect(self.clear) @@ -95,6 +103,9 @@ self.__browser.loadProgress.connect(self.update) self.__browser.loadFinished.connect(self.__loadFinished) self.__browser.loadStarted.connect(self.__loadStarted) + + self.__browser.safeBrowsingBad.connect( + self.__safeBrowsingLabel.setThreatInfo) def browser(self): """ @@ -156,6 +167,10 @@ self.__checkBookmark() self.__bookmarkButton.setVisible(True) + self.__browserUrlChanged(self.__browser.url()) + self.__safeBrowsingLabel.setVisible( + not self.__browser.getSafeBrowsingStatus()) + if ok: QTimer.singleShot(0, self.__setRssButton) @@ -220,16 +235,19 @@ if self.__browser is not None: p = self.palette() progress = self.__browser.progress() + + if not self.__browser.getSafeBrowsingStatus(): + # malicious web site + backgroundColor = QColor(170, 0, 0) + foregroundColor = QColor(Qt.white) + elif self.__browser.url().scheme() == "https": + backgroundColor = Preferences.getWebBrowser( + "SaveUrlColor") + if progress == 0 or progress == 100: - if self.__browser.url().scheme() == "https": - backgroundColor = Preferences.getWebBrowser( - "SaveUrlColor") p.setBrush(QPalette.Base, backgroundColor) p.setBrush(QPalette.Text, foregroundColor) else: - if self.__browser.url().scheme() == "https": - backgroundColor = Preferences.getWebBrowser( - "SaveUrlColor") highlight = QApplication.palette().color(QPalette.Highlight) r = (highlight.red() + 2 * backgroundColor.red()) // 3 g = (highlight.green() + 2 * backgroundColor.green()) // 3 @@ -379,3 +397,18 @@ feeds = self.__browser.getRSS() dlg = FeedsDialog(feeds, self.__browser) dlg.exec_() + + @pyqtSlot(QPoint) + def __showThreatInfo(self, pos): + """ + Private slot to show the threat info widget. + + @param pos position to show the info at + @type QPoint + """ + threatInfo = self.__safeBrowsingLabel.getThreatInfo() + if threatInfo: + from WebBrowser.SafeBrowsing.SafeBrowsingInfoWidget import \ + SafeBrowsingInfoWidget + widget = SafeBrowsingInfoWidget(threatInfo, self.__browser) + widget.showAt(pos)