--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Helpviewer/Sync/SyncEncryptionPage.py Sun Feb 26 19:19:50 2012 +0100 @@ -0,0 +1,126 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2012 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing encryption settings wizard page. +""" + +from PyQt4.QtCore import pyqtSlot +from PyQt4.QtGui import QWizardPage + +from . import SyncGlobals + +from .Ui_SyncEncryptionPage import Ui_SyncEncryptionPage + +import Preferences + + +class SyncEncryptionPage(QWizardPage, Ui_SyncEncryptionPage): + """ + Class implementing encryption settings wizard page. + """ + def __init__(self, parent=None): + """ + Constructor + + @param parent reference to the parent widget (QWidget) + """ + super().__init__(parent) + self.setupUi(self) + + self.registerField("ReencryptData", self.reencryptCheckBox) + + self.encryptionGroupBox.setChecked(Preferences.getHelp("SyncEncryptData")) + self.encryptionKeyEdit.setText(Preferences.getHelp("SyncEncryptionKey")) + self.encryptionKeyAgainEdit.setEnabled(False) + + def nextId(self): + """ + Public method returning the ID of the next wizard page. + + @return next wizard page ID (integer) + """ + Preferences.setHelp("SyncEncryptData", self.encryptionGroupBox.isChecked()) + Preferences.setHelp("SyncEncryptionKey", self.encryptionKeyEdit.text()) + + return SyncGlobals.PageType + + def isComplete(self): + """ + Public method to check the completeness of the page. + + @return flag indicating completeness (boolean) + """ + if self.encryptionGroupBox.isChecked(): + if self.encryptionKeyEdit.text() == "": + complete = False + else: + if self.reencryptCheckBox.isChecked(): + complete = (self.encryptionKeyEdit.text() == + self.encryptionKeyAgainEdit.text()) + else: + complete = True + else: + complete = True + + return complete + + def __updateUI(self): + """ + Private slot to update the variable parts of the UI. + """ + error = "" + + if self.encryptionGroupBox.isChecked(): + self.encryptionKeyAgainEdit.setEnabled( + self.reencryptCheckBox.isChecked()) + + if self.encryptionKeyEdit.text() == "": + error = error or self.trUtf8("Encryption key must not be empty.") + + if self.encryptionKeyEdit.text() != "" and \ + self.reencryptCheckBox.isChecked() and \ + self.encryptionKeyEdit.text() != self.encryptionKeyAgainEdit.text(): + error = error or self.trUtf8("Repeated encryption key is wrong.") + + self.errorLabel.setText(error) + self.completeChanged.emit() + + @pyqtSlot(str) + def on_encryptionKeyEdit_textChanged(self, txt): + """ + Private slot to handle changes of the encryption key. + + @param txt content of the edit widget (string) + """ + self.passwordMeter.checkPasswordStrength(txt) + self.__updateUI() + + @pyqtSlot(str) + def on_encryptionKeyAgainEdit_textChanged(self, txt): + """ + Private slot to handle changes of the encryption key repetition. + + @param txt content of the edit widget (string) + """ + self.__updateUI() + + @pyqtSlot(bool) + def on_encryptionGroupBox_toggled(self, on): + """ + Private slot to handle changes of the encryption selection. + + @param on state of the group box (boolean) + """ + self.__updateUI() + + @pyqtSlot(bool) + def on_reencryptCheckBox_toggled(self, on): + """ + Private slot to handle changes of the re-encryption selection. + + @param on state of the check box (boolean) + """ + self.__updateUI()