Preferences/ConfigurationPages/SecurityPage.py

changeset 1127
b1802ebe0066
child 1130
3e9f0330f833
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Preferences/ConfigurationPages/SecurityPage.py	Sun Jun 19 15:19:46 2011 +0200
@@ -0,0 +1,114 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2011 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the Security configuration page.
+"""
+
+from PyQt4.QtCore import pyqtSlot
+from PyQt4.QtGui import QDialog
+from PyQt4.QtWebKit import QWebSettings
+
+from .ConfigurationPageBase import ConfigurationPageBase
+from .Ui_SecurityPage import Ui_SecurityPage
+
+from .MasterPasswordEntryDialog import MasterPasswordEntryDialog
+
+import Preferences
+
+
+class SecurityPage(ConfigurationPageBase, Ui_SecurityPage):
+    """
+    Class implementing the Security configuration page.
+    """
+    def __init__(self, configDialog):
+        """
+        Constructor
+        
+        @param configDialog reference to the configuration dialog (ConfigurationDialog)
+        """
+        super().__init__()
+        self.setupUi(self)
+        self.setObjectName("SecurityPage")
+        
+        self.__configDlg = configDialog
+        
+        # set initial values
+        self.savePasswordsCheckBox.setChecked(
+            Preferences.getUser("SavePasswords"))
+        self.masterPasswordCheckBox.setChecked(
+            Preferences.getUser("UseMasterPassword"))
+        self.masterPasswordButton.setEnabled(
+            Preferences.getUser("UseMasterPassword"))
+        if hasattr(QWebSettings, "DnsPrefetchEnabled"):
+            self.dnsPrefetchCheckBox.setChecked(
+            Preferences.getHelp("DnsPrefetchEnabled"))
+        else:
+            self.dnsPrefetchCheckBox.setEnabled(False)
+        
+        self.__newPassword = ""
+        self.__oldUseMasterPassword = Preferences.getUser("UseMasterPassword")
+    
+    def save(self):
+        """
+        Public slot to save the Help Viewers configuration.
+        """
+        Preferences.setUser("SavePasswords",
+            self.savePasswordsCheckBox.isChecked())
+        Preferences.setUser("UseMasterPassword",
+            self.masterPasswordCheckBox.isChecked())
+        if self.dnsPrefetchCheckBox.isEnabled():
+            Preferences.setHelp("DnsPrefetchEnabled",
+                self.dnsPrefetchCheckBox.isChecked())
+        
+        if self.__oldUseMasterPassword != self.masterPasswordCheckBox.isChecked():
+            self.__configDlg.masterPasswordChanged.emit("", self.__newPassword)
+    
+    @pyqtSlot(bool)
+    def on_masterPasswordCheckBox_clicked(self, checked):
+        """
+        Private slot to handle the use of a master password.
+        
+        @param checked flag indicating the state of the check box (boolean)
+        """
+        if checked:
+            dlg = MasterPasswordEntryDialog("", self)
+            if dlg.exec_() == QDialog.Accepted:
+                Preferences.setUser("MasterPassword", 
+                    dlg.getMasterPassword())
+                self.masterPasswordButton.setEnabled(True)
+                self.__newPassword = dlg.getMasterPassword()
+            else:
+                self.masterPasswordCheckBox.setChecked(False)
+        else:
+            self.masterPasswordButton.setEnabled(False)
+            self.__newPassword = ""
+    
+    @pyqtSlot()
+    def on_masterPasswordButton_clicked(self):
+        """
+        Private slot to change the master password.
+        """
+        dlg = MasterPasswordEntryDialog(Preferences.getUser("MasterPassword"), self)
+        if dlg.exec_() == QDialog.Accepted:
+            Preferences.setUser("MasterPassword", 
+                dlg.getMasterPassword())
+            
+            if self.__oldUseMasterPassword != self.masterPasswordCheckBox.isChecked():
+                # the user is about to change the use of a master password
+                # just save the changed password
+                self.__newPassword = dlg.getMasterPassword()
+            else:
+                self.__configDlg.masterPasswordChanged.emit(
+                    dlg.getCurrentPassword(), dlg.getMasterPassword())
+
+def create(dlg):
+    """
+    Module function to create the configuration page.
+    
+    @param dlg reference to the configuration dialog
+    """
+    page = SecurityPage(dlg)
+    return page

eric ide

mercurial