diff options
-rw-r--r-- | src/core/PasswordGenerator.cpp | 21 | ||||
-rw-r--r-- | src/core/PasswordGenerator.h | 3 | ||||
-rw-r--r-- | src/gui/PasswordGeneratorWidget.cpp | 9 | ||||
-rw-r--r-- | src/gui/PasswordGeneratorWidget.ui | 47 |
4 files changed, 74 insertions, 6 deletions
diff --git a/src/core/PasswordGenerator.cpp b/src/core/PasswordGenerator.cpp index cee1c55be..0fa5198fc 100644 --- a/src/core/PasswordGenerator.cpp +++ b/src/core/PasswordGenerator.cpp @@ -195,6 +195,24 @@ QVector<PasswordGroup> PasswordGenerator::passwordGroups() const passwordGroups.append(group); } + if (m_classes & EASCII) { + PasswordGroup group; + + // [U+0080, U+009F] are C1 control characters, + // U+00A0 is non-breaking space + for (int i = 161; i <= 172; i++) { + group.append(i); + } + // U+00AD is soft hyphen (format character) + for (int i = 174; i <= 255; i++) { + if ((m_flags & ExcludeLookAlike) && (i == 249)) { // "﹒" + continue; + } + group.append(i); + } + + passwordGroups.append(group); + } return passwordGroups; } @@ -215,6 +233,9 @@ int PasswordGenerator::numCharClasses() const if (m_classes & SpecialCharacters) { numClasses++; } + if (m_classes & EASCII) { + numClasses++; + } return numClasses; } diff --git a/src/core/PasswordGenerator.h b/src/core/PasswordGenerator.h index b47159324..8ec82c0a0 100644 --- a/src/core/PasswordGenerator.h +++ b/src/core/PasswordGenerator.h @@ -32,7 +32,8 @@ public: LowerLetters = 0x1, UpperLetters = 0x2, Numbers = 0x4, - SpecialCharacters = 0x8 + SpecialCharacters = 0x8, + EASCII = 0x10 }; Q_DECLARE_FLAGS(CharClasses, CharClass) diff --git a/src/gui/PasswordGeneratorWidget.cpp b/src/gui/PasswordGeneratorWidget.cpp index 1f5606cf6..e585b6f58 100644 --- a/src/gui/PasswordGeneratorWidget.cpp +++ b/src/gui/PasswordGeneratorWidget.cpp @@ -92,6 +92,7 @@ void PasswordGeneratorWidget::loadSettings() m_ui->checkBoxUpper->setChecked(config()->get("generator/UpperCase", true).toBool()); m_ui->checkBoxNumbers->setChecked(config()->get("generator/Numbers", true).toBool()); m_ui->checkBoxSpecialChars->setChecked(config()->get("generator/SpecialChars", false).toBool()); + m_ui->checkBoxExtASCII->setChecked(config()->get("generator/EASCII", false).toBool()); m_ui->checkBoxExcludeAlike->setChecked(config()->get("generator/ExcludeAlike", true).toBool()); m_ui->checkBoxEnsureEvery->setChecked(config()->get("generator/EnsureEvery", true).toBool()); m_ui->spinBoxLength->setValue(config()->get("generator/Length", 16).toInt()); @@ -112,6 +113,7 @@ void PasswordGeneratorWidget::saveSettings() config()->set("generator/UpperCase", m_ui->checkBoxUpper->isChecked()); config()->set("generator/Numbers", m_ui->checkBoxNumbers->isChecked()); config()->set("generator/SpecialChars", m_ui->checkBoxSpecialChars->isChecked()); + config()->set("generator/EASCII", m_ui->checkBoxExtASCII->isChecked()); config()->set("generator/ExcludeAlike", m_ui->checkBoxExcludeAlike->isChecked()); config()->set("generator/EnsureEvery", m_ui->checkBoxEnsureEvery->isChecked()); config()->set("generator/Length", m_ui->spinBoxLength->value()); @@ -287,6 +289,10 @@ PasswordGenerator::CharClasses PasswordGeneratorWidget::charClasses() classes |= PasswordGenerator::SpecialCharacters; } + if (m_ui->checkBoxExtASCII->isChecked()) { + classes |= PasswordGenerator::EASCII; + } + return classes; } @@ -325,6 +331,9 @@ void PasswordGeneratorWidget::updateGenerator() if (classes.testFlag(PasswordGenerator::SpecialCharacters)) { minLength++; } + if (classes.testFlag(PasswordGenerator::EASCII)) { + minLength++; + } } minLength = qMax(minLength, 1); diff --git a/src/gui/PasswordGeneratorWidget.ui b/src/gui/PasswordGeneratorWidget.ui index bb8bc0e76..a7af3d7f0 100644 --- a/src/gui/PasswordGeneratorWidget.ui +++ b/src/gui/PasswordGeneratorWidget.ui @@ -222,11 +222,11 @@ QProgressBar::chunk { </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> - <layout class="QHBoxLayout" name="alphabetLayout" stretch="0,0,0,0,1"> + <layout class="QHBoxLayout" name="alphabetLayout" stretch="0,0,0,0,1,0"> <item> <widget class="QToolButton" name="checkBoxUpper"> <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"> + <sizepolicy hsizetype="Maximum" vsizetype="MinimumExpanding"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> @@ -257,7 +257,7 @@ QProgressBar::chunk { <item> <widget class="QToolButton" name="checkBoxLower"> <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"> + <sizepolicy hsizetype="Maximum" vsizetype="MinimumExpanding"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> @@ -288,7 +288,7 @@ QProgressBar::chunk { <item> <widget class="QToolButton" name="checkBoxNumbers"> <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"> + <sizepolicy hsizetype="Maximum" vsizetype="MinimumExpanding"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> @@ -319,7 +319,7 @@ QProgressBar::chunk { <item> <widget class="QToolButton" name="checkBoxSpecialChars"> <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"> + <sizepolicy hsizetype="Maximum" vsizetype="MinimumExpanding"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> @@ -348,6 +348,43 @@ QProgressBar::chunk { </widget> </item> <item> + <widget class="QToolButton" name="checkBoxExtASCII"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Maximum" vsizetype="MinimumExpanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>0</width> + <height>25</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>16777215</width> + <height>16777215</height> + </size> + </property> + <property name="focusPolicy"> + <enum>Qt::StrongFocus</enum> + </property> + <property name="toolTip"> + <string>Extended ASCII</string> + </property> + <property name="text"> + <string notr="true">Extended ASCII</string> + </property> + <property name="checkable"> + <bool>true</bool> + </property> + <attribute name="buttonGroup"> + <string notr="true">optionButtons</string> + </attribute> + </widget> + </item> + <item> <spacer name="horizontalSpacer"> <property name="orientation"> <enum>Qt::Horizontal</enum> |