1# -*- coding: utf-8 -*- 2 3# Copyright (c) 2012 - 2021 Detlev Offenbach <detlev@die-offenbachs.de> 4# 5 6""" 7Module implementing a dialog to manage the Send Referer whitelist. 8""" 9 10from PyQt5.QtCore import pyqtSlot, Qt, QSortFilterProxyModel, QStringListModel 11from PyQt5.QtWidgets import QDialog, QInputDialog, QLineEdit 12 13from .Ui_SendRefererWhitelistDialog import Ui_SendRefererWhitelistDialog 14 15import Preferences 16 17 18class SendRefererWhitelistDialog(QDialog, Ui_SendRefererWhitelistDialog): 19 """ 20 Class implementing a dialog to manage the Send Referer whitelist. 21 """ 22 def __init__(self, parent=None): 23 """ 24 Constructor 25 26 @param parent reference to the parent widget (QWidget) 27 """ 28 super().__init__(parent) 29 self.setupUi(self) 30 31 self.__model = QStringListModel( 32 Preferences.getWebBrowser("SendRefererWhitelist"), self) 33 self.__model.sort(0) 34 self.__proxyModel = QSortFilterProxyModel(self) 35 self.__proxyModel.setFilterCaseSensitivity( 36 Qt.CaseSensitivity.CaseInsensitive) 37 self.__proxyModel.setSourceModel(self.__model) 38 self.whitelist.setModel(self.__proxyModel) 39 40 self.searchEdit.textChanged.connect( 41 self.__proxyModel.setFilterFixedString) 42 43 self.removeButton.clicked.connect(self.whitelist.removeSelected) 44 self.removeAllButton.clicked.connect(self.whitelist.removeAll) 45 46 @pyqtSlot() 47 def on_addButton_clicked(self): 48 """ 49 Private slot to add an entry to the whitelist. 50 """ 51 host, ok = QInputDialog.getText( 52 self, 53 self.tr("Send Referer Whitelist"), 54 self.tr("Enter host name to add to the whitelist:"), 55 QLineEdit.EchoMode.Normal) 56 if ok and host != "" and host not in self.__model.stringList(): 57 self.__model.insertRow(self.__model.rowCount()) 58 self.__model.setData( 59 self.__model.index(self.__model.rowCount() - 1), host) 60 self.__model.sort(0) 61 62 def accept(self): 63 """ 64 Public method to accept the dialog data. 65 """ 66 Preferences.setWebBrowser( 67 "SendRefererWhitelist", self.__model.stringList()) 68 69 super().accept() 70