mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2025-02-23 07:59:54 -05:00
Use an icon for the button that shows/masks passwords.
Closes #38 Additionally make use of the new PasswordEdit class where possible.
This commit is contained in:
parent
8b437821a2
commit
223c5a1651
1
COPYING
1
COPYING
@ -134,6 +134,7 @@ Files: share/icons/application/*/actions/application-exit.png
|
|||||||
share/icons/application/*/actions/document-save-as.png
|
share/icons/application/*/actions/document-save-as.png
|
||||||
share/icons/application/*/actions/edit-clear-locationbar-ltr.png
|
share/icons/application/*/actions/edit-clear-locationbar-ltr.png
|
||||||
share/icons/application/*/actions/edit-clear-locationbar-rtl.png
|
share/icons/application/*/actions/edit-clear-locationbar-rtl.png
|
||||||
|
share/icons/application/*/actions/password-show-*.png
|
||||||
share/icons/application/*/actions/system-search.png
|
share/icons/application/*/actions/system-search.png
|
||||||
share/icons/application/*/status/dialog-error.png
|
share/icons/application/*/status/dialog-error.png
|
||||||
share/icons/application/*/status/dialog-information.png
|
share/icons/application/*/status/dialog-information.png
|
||||||
|
BIN
share/icons/application/16x16/actions/password-show-off.png
Normal file
BIN
share/icons/application/16x16/actions/password-show-off.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 783 B |
BIN
share/icons/application/16x16/actions/password-show-on.png
Normal file
BIN
share/icons/application/16x16/actions/password-show-on.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 838 B |
@ -18,6 +18,7 @@
|
|||||||
#include "ChangeMasterKeyWidget.h"
|
#include "ChangeMasterKeyWidget.h"
|
||||||
#include "ui_ChangeMasterKeyWidget.h"
|
#include "ui_ChangeMasterKeyWidget.h"
|
||||||
|
|
||||||
|
#include "core/FilePath.h"
|
||||||
#include "keys/FileKey.h"
|
#include "keys/FileKey.h"
|
||||||
#include "keys/PasswordKey.h"
|
#include "keys/PasswordKey.h"
|
||||||
#include "gui/FileDialog.h"
|
#include "gui/FileDialog.h"
|
||||||
@ -31,7 +32,9 @@ ChangeMasterKeyWidget::ChangeMasterKeyWidget(QWidget* parent)
|
|||||||
|
|
||||||
connect(m_ui->buttonBox, SIGNAL(accepted()), SLOT(generateKey()));
|
connect(m_ui->buttonBox, SIGNAL(accepted()), SLOT(generateKey()));
|
||||||
connect(m_ui->buttonBox, SIGNAL(rejected()), SLOT(reject()));
|
connect(m_ui->buttonBox, SIGNAL(rejected()), SLOT(reject()));
|
||||||
connect(m_ui->togglePasswordButton, SIGNAL(toggled(bool)), SLOT(togglePassword(bool)));
|
m_ui->togglePasswordButton->setIcon(filePath()->onOffIcon("actions", "password-show"));
|
||||||
|
connect(m_ui->togglePasswordButton, SIGNAL(toggled(bool)), m_ui->enterPasswordEdit, SLOT(setShowPassword(bool)));
|
||||||
|
m_ui->repeatPasswordEdit->enableVerifyMode(m_ui->enterPasswordEdit);
|
||||||
connect(m_ui->createKeyFileButton, SIGNAL(clicked()), SLOT(createKeyFile()));
|
connect(m_ui->createKeyFileButton, SIGNAL(clicked()), SLOT(createKeyFile()));
|
||||||
connect(m_ui->browseKeyFileButton, SIGNAL(clicked()), SLOT(browseKeyFile()));
|
connect(m_ui->browseKeyFileButton, SIGNAL(clicked()), SLOT(browseKeyFile()));
|
||||||
}
|
}
|
||||||
@ -40,12 +43,6 @@ ChangeMasterKeyWidget::~ChangeMasterKeyWidget()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChangeMasterKeyWidget::togglePassword(bool checked)
|
|
||||||
{
|
|
||||||
m_ui->enterPasswordEdit->setEchoMode(checked ? QLineEdit::Password : QLineEdit::Normal);
|
|
||||||
m_ui->repeatPasswordEdit->setEchoMode(checked ? QLineEdit::Password : QLineEdit::Normal);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ChangeMasterKeyWidget::createKeyFile()
|
void ChangeMasterKeyWidget::createKeyFile()
|
||||||
{
|
{
|
||||||
QString filters = QString("%1 (*.key);;%2 (*)").arg(tr("Key files"), tr("All files"));
|
QString filters = QString("%1 (*.key);;%2 (*)").arg(tr("Key files"), tr("All files"));
|
||||||
@ -77,7 +74,7 @@ void ChangeMasterKeyWidget::clearForms()
|
|||||||
{
|
{
|
||||||
m_key.clear();
|
m_key.clear();
|
||||||
|
|
||||||
m_ui->passwordGroup->setChecked(true);
|
m_ui->passwordGroup->setChecked(false);
|
||||||
m_ui->enterPasswordEdit->setText("");
|
m_ui->enterPasswordEdit->setText("");
|
||||||
m_ui->repeatPasswordEdit->setText("");
|
m_ui->repeatPasswordEdit->setText("");
|
||||||
m_ui->keyFileGroup->setChecked(false);
|
m_ui->keyFileGroup->setChecked(false);
|
||||||
|
@ -45,7 +45,6 @@ Q_SIGNALS:
|
|||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
void generateKey();
|
void generateKey();
|
||||||
void reject();
|
void reject();
|
||||||
void togglePassword(bool checked);
|
|
||||||
void createKeyFile();
|
void createKeyFile();
|
||||||
void browseKeyFile();
|
void browseKeyFile();
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@
|
|||||||
<item row="0" column="1">
|
<item row="0" column="1">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLineEdit" name="enterPasswordEdit">
|
<widget class="PasswordEdit" name="enterPasswordEdit">
|
||||||
<property name="echoMode">
|
<property name="echoMode">
|
||||||
<enum>QLineEdit::Password</enum>
|
<enum>QLineEdit::Password</enum>
|
||||||
</property>
|
</property>
|
||||||
@ -60,15 +60,9 @@
|
|||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QToolButton" name="togglePasswordButton">
|
<widget class="QToolButton" name="togglePasswordButton">
|
||||||
<property name="text">
|
|
||||||
<string>...</string>
|
|
||||||
</property>
|
|
||||||
<property name="checkable">
|
<property name="checkable">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="checked">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
@ -81,7 +75,7 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="1">
|
<item row="1" column="1">
|
||||||
<widget class="QLineEdit" name="repeatPasswordEdit">
|
<widget class="PasswordEdit" name="repeatPasswordEdit">
|
||||||
<property name="echoMode">
|
<property name="echoMode">
|
||||||
<enum>QLineEdit::Password</enum>
|
<enum>QLineEdit::Password</enum>
|
||||||
</property>
|
</property>
|
||||||
@ -151,6 +145,13 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
<customwidgets>
|
||||||
|
<customwidget>
|
||||||
|
<class>PasswordEdit</class>
|
||||||
|
<extends>QLineEdit</extends>
|
||||||
|
<header>gui/PasswordEdit.h</header>
|
||||||
|
</customwidget>
|
||||||
|
</customwidgets>
|
||||||
<tabstops>
|
<tabstops>
|
||||||
<tabstop>passwordGroup</tabstop>
|
<tabstop>passwordGroup</tabstop>
|
||||||
<tabstop>enterPasswordEdit</tabstop>
|
<tabstop>enterPasswordEdit</tabstop>
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include "core/Config.h"
|
#include "core/Config.h"
|
||||||
#include "core/Database.h"
|
#include "core/Database.h"
|
||||||
|
#include "core/FilePath.h"
|
||||||
#include "gui/FileDialog.h"
|
#include "gui/FileDialog.h"
|
||||||
#include "gui/MessageBox.h"
|
#include "gui/MessageBox.h"
|
||||||
#include "format/KeePass2Reader.h"
|
#include "format/KeePass2Reader.h"
|
||||||
@ -40,7 +41,9 @@ DatabaseOpenWidget::DatabaseOpenWidget(QWidget* parent)
|
|||||||
|
|
||||||
m_ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
|
m_ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
|
||||||
|
|
||||||
connect(m_ui->buttonTogglePassword, SIGNAL(toggled(bool)), SLOT(togglePassword(bool)));
|
m_ui->buttonTogglePassword->setIcon(filePath()->onOffIcon("actions", "password-show"));
|
||||||
|
connect(m_ui->buttonTogglePassword, SIGNAL(toggled(bool)),
|
||||||
|
m_ui->editPassword, SLOT(setShowPassword(bool)));
|
||||||
connect(m_ui->buttonBrowseFile, SIGNAL(clicked()), SLOT(browseKeyFile()));
|
connect(m_ui->buttonBrowseFile, SIGNAL(clicked()), SLOT(browseKeyFile()));
|
||||||
|
|
||||||
connect(m_ui->editPassword, SIGNAL(textChanged(QString)), SLOT(activatePassword()));
|
connect(m_ui->editPassword, SIGNAL(textChanged(QString)), SLOT(activatePassword()));
|
||||||
@ -155,11 +158,6 @@ void DatabaseOpenWidget::reject()
|
|||||||
Q_EMIT editFinished(false);
|
Q_EMIT editFinished(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DatabaseOpenWidget::togglePassword(bool checked)
|
|
||||||
{
|
|
||||||
m_ui->editPassword->setEchoMode(checked ? QLineEdit::Password : QLineEdit::Normal);
|
|
||||||
}
|
|
||||||
|
|
||||||
void DatabaseOpenWidget::activatePassword()
|
void DatabaseOpenWidget::activatePassword()
|
||||||
{
|
{
|
||||||
m_ui->checkPassword->setChecked(true);
|
m_ui->checkPassword->setChecked(true);
|
||||||
|
@ -52,7 +52,6 @@ protected Q_SLOTS:
|
|||||||
void reject();
|
void reject();
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
void togglePassword(bool checked);
|
|
||||||
void activatePassword();
|
void activatePassword();
|
||||||
void activateKeyFile();
|
void activateKeyFile();
|
||||||
void setOkButtonEnabled();
|
void setOkButtonEnabled();
|
||||||
|
@ -72,7 +72,7 @@
|
|||||||
<item row="0" column="1">
|
<item row="0" column="1">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLineEdit" name="editPassword">
|
<widget class="PasswordEdit" name="editPassword">
|
||||||
<property name="echoMode">
|
<property name="echoMode">
|
||||||
<enum>QLineEdit::Password</enum>
|
<enum>QLineEdit::Password</enum>
|
||||||
</property>
|
</property>
|
||||||
@ -80,15 +80,9 @@
|
|||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QToolButton" name="buttonTogglePassword">
|
<widget class="QToolButton" name="buttonTogglePassword">
|
||||||
<property name="text">
|
|
||||||
<string>...</string>
|
|
||||||
</property>
|
|
||||||
<property name="checkable">
|
<property name="checkable">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="checked">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
@ -144,6 +138,13 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
<customwidgets>
|
||||||
|
<customwidget>
|
||||||
|
<class>PasswordEdit</class>
|
||||||
|
<extends>QLineEdit</extends>
|
||||||
|
<header>gui/PasswordEdit.h</header>
|
||||||
|
</customwidget>
|
||||||
|
</customwidgets>
|
||||||
<tabstops>
|
<tabstops>
|
||||||
<tabstop>checkPassword</tabstop>
|
<tabstop>checkPassword</tabstop>
|
||||||
<tabstop>editPassword</tabstop>
|
<tabstop>editPassword</tabstop>
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
#include "core/Config.h"
|
#include "core/Config.h"
|
||||||
#include "core/Database.h"
|
#include "core/Database.h"
|
||||||
#include "core/Entry.h"
|
#include "core/Entry.h"
|
||||||
|
#include "core/FilePath.h"
|
||||||
#include "core/Metadata.h"
|
#include "core/Metadata.h"
|
||||||
#include "core/TimeDelta.h"
|
#include "core/TimeDelta.h"
|
||||||
#include "core/Tools.h"
|
#include "core/Tools.h"
|
||||||
@ -80,19 +81,16 @@ EditEntryWidget::~EditEntryWidget()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
const QColor EditEntryWidget::CorrectSoFarColor = QColor(255, 205, 15);
|
|
||||||
const QColor EditEntryWidget::ErrorColor = QColor(255, 125, 125);
|
|
||||||
|
|
||||||
void EditEntryWidget::setupMain()
|
void EditEntryWidget::setupMain()
|
||||||
{
|
{
|
||||||
m_mainUi->setupUi(m_mainWidget);
|
m_mainUi->setupUi(m_mainWidget);
|
||||||
add(tr("Entry"), m_mainWidget);
|
add(tr("Entry"), m_mainWidget);
|
||||||
|
|
||||||
connect(m_mainUi->togglePasswordButton, SIGNAL(toggled(bool)), SLOT(togglePassword(bool)));
|
m_mainUi->togglePasswordButton->setIcon(filePath()->onOffIcon("actions", "password-show"));
|
||||||
|
connect(m_mainUi->togglePasswordButton, SIGNAL(toggled(bool)), m_mainUi->passwordEdit, SLOT(setShowPassword(bool)));
|
||||||
connect(m_mainUi->tooglePasswordGeneratorButton, SIGNAL(toggled(bool)), SLOT(togglePasswordGeneratorButton(bool)));
|
connect(m_mainUi->tooglePasswordGeneratorButton, SIGNAL(toggled(bool)), SLOT(togglePasswordGeneratorButton(bool)));
|
||||||
connect(m_mainUi->expireCheck, SIGNAL(toggled(bool)), m_mainUi->expireDatePicker, SLOT(setEnabled(bool)));
|
connect(m_mainUi->expireCheck, SIGNAL(toggled(bool)), m_mainUi->expireDatePicker, SLOT(setEnabled(bool)));
|
||||||
connect(m_mainUi->passwordEdit, SIGNAL(textEdited(QString)), SLOT(setPasswordCheckColors()));
|
m_mainUi->passwordRepeatEdit->enableVerifyMode(m_mainUi->passwordEdit);
|
||||||
connect(m_mainUi->passwordRepeatEdit, SIGNAL(textEdited(QString)), SLOT(setPasswordCheckColors()));
|
|
||||||
connect(m_mainUi->passwordGenerator, SIGNAL(newPassword(QString)), SLOT(setGeneratedPassword(QString)));
|
connect(m_mainUi->passwordGenerator, SIGNAL(newPassword(QString)), SLOT(setGeneratedPassword(QString)));
|
||||||
|
|
||||||
m_mainUi->expirePresets->setMenu(createPresetsMenu());
|
m_mainUi->expirePresets->setMenu(createPresetsMenu());
|
||||||
@ -307,11 +305,10 @@ void EditEntryWidget::setForms(const Entry* entry, bool restore)
|
|||||||
m_mainUi->urlEdit->setText(entry->url());
|
m_mainUi->urlEdit->setText(entry->url());
|
||||||
m_mainUi->passwordEdit->setText(entry->password());
|
m_mainUi->passwordEdit->setText(entry->password());
|
||||||
m_mainUi->passwordRepeatEdit->setText(entry->password());
|
m_mainUi->passwordRepeatEdit->setText(entry->password());
|
||||||
setPasswordCheckColors();
|
|
||||||
m_mainUi->expireCheck->setChecked(entry->timeInfo().expires());
|
m_mainUi->expireCheck->setChecked(entry->timeInfo().expires());
|
||||||
m_mainUi->expireDatePicker->setDateTime(entry->timeInfo().expiryTime().toLocalTime());
|
m_mainUi->expireDatePicker->setDateTime(entry->timeInfo().expiryTime().toLocalTime());
|
||||||
m_mainUi->expirePresets->setEnabled(!m_history);
|
m_mainUi->expirePresets->setEnabled(!m_history);
|
||||||
m_mainUi->togglePasswordButton->setChecked(true);
|
m_mainUi->togglePasswordButton->setChecked(false);
|
||||||
|
|
||||||
m_mainUi->notesEdit->setPlainText(entry->notes());
|
m_mainUi->notesEdit->setPlainText(entry->notes());
|
||||||
|
|
||||||
@ -478,12 +475,6 @@ void EditEntryWidget::cancel()
|
|||||||
Q_EMIT editFinished(false);
|
Q_EMIT editFinished(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EditEntryWidget::togglePassword(bool checked)
|
|
||||||
{
|
|
||||||
m_mainUi->passwordEdit->setEchoMode(checked ? QLineEdit::Password : QLineEdit::Normal);
|
|
||||||
m_mainUi->passwordRepeatEdit->setEchoMode(checked ? QLineEdit::Password : QLineEdit::Normal);
|
|
||||||
}
|
|
||||||
|
|
||||||
void EditEntryWidget::togglePasswordGeneratorButton(bool checked)
|
void EditEntryWidget::togglePasswordGeneratorButton(bool checked)
|
||||||
{
|
{
|
||||||
m_mainUi->passwordGenerator->setVisible(checked);
|
m_mainUi->passwordGenerator->setVisible(checked);
|
||||||
@ -494,25 +485,6 @@ bool EditEntryWidget::passwordsEqual()
|
|||||||
return m_mainUi->passwordEdit->text() == m_mainUi->passwordRepeatEdit->text();
|
return m_mainUi->passwordEdit->text() == m_mainUi->passwordRepeatEdit->text();
|
||||||
}
|
}
|
||||||
|
|
||||||
void EditEntryWidget::setPasswordCheckColors()
|
|
||||||
{
|
|
||||||
if (passwordsEqual()) {
|
|
||||||
m_mainUi->passwordRepeatEdit->setStyleSheet("");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
QString stylesheet = "QLineEdit { background: %1; }";
|
|
||||||
|
|
||||||
if (m_mainUi->passwordEdit->text().startsWith(m_mainUi->passwordRepeatEdit->text())) {
|
|
||||||
stylesheet = stylesheet.arg(CorrectSoFarColor.name());
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
stylesheet = stylesheet.arg(ErrorColor.name());
|
|
||||||
}
|
|
||||||
|
|
||||||
m_mainUi->passwordRepeatEdit->setStyleSheet(stylesheet);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void EditEntryWidget::setGeneratedPassword(const QString& password)
|
void EditEntryWidget::setGeneratedPassword(const QString& password)
|
||||||
{
|
{
|
||||||
m_mainUi->passwordEdit->setText(password);
|
m_mainUi->passwordEdit->setText(password);
|
||||||
|
@ -58,9 +58,6 @@ public:
|
|||||||
void loadEntry(Entry* entry, bool create, bool history, const QString& parentName,
|
void loadEntry(Entry* entry, bool create, bool history, const QString& parentName,
|
||||||
Database* database);
|
Database* database);
|
||||||
|
|
||||||
static const QColor CorrectSoFarColor;
|
|
||||||
static const QColor ErrorColor;
|
|
||||||
|
|
||||||
void createPresetsMenu(QMenu* expirePresetsMenu);
|
void createPresetsMenu(QMenu* expirePresetsMenu);
|
||||||
QString entryTitle() const;
|
QString entryTitle() const;
|
||||||
|
|
||||||
@ -71,9 +68,7 @@ Q_SIGNALS:
|
|||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
void saveEntry();
|
void saveEntry();
|
||||||
void cancel();
|
void cancel();
|
||||||
void togglePassword(bool checked);
|
|
||||||
void togglePasswordGeneratorButton(bool checked);
|
void togglePasswordGeneratorButton(bool checked);
|
||||||
void setPasswordCheckColors();
|
|
||||||
void setGeneratedPassword(const QString& password);
|
void setGeneratedPassword(const QString& password);
|
||||||
void insertAttribute();
|
void insertAttribute();
|
||||||
void editCurrentAttribute();
|
void editCurrentAttribute();
|
||||||
|
@ -44,7 +44,7 @@
|
|||||||
<item row="3" column="1">
|
<item row="3" column="1">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLineEdit" name="passwordEdit">
|
<widget class="PasswordEdit" name="passwordEdit">
|
||||||
<property name="echoMode">
|
<property name="echoMode">
|
||||||
<enum>QLineEdit::Password</enum>
|
<enum>QLineEdit::Password</enum>
|
||||||
</property>
|
</property>
|
||||||
@ -52,15 +52,9 @@
|
|||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QToolButton" name="togglePasswordButton">
|
<widget class="QToolButton" name="togglePasswordButton">
|
||||||
<property name="text">
|
|
||||||
<string>...</string>
|
|
||||||
</property>
|
|
||||||
<property name="checkable">
|
<property name="checkable">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="checked">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
@ -75,7 +69,7 @@
|
|||||||
<item row="5" column="1">
|
<item row="5" column="1">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLineEdit" name="passwordRepeatEdit">
|
<widget class="PasswordEdit" name="passwordRepeatEdit">
|
||||||
<property name="echoMode">
|
<property name="echoMode">
|
||||||
<enum>QLineEdit::Password</enum>
|
<enum>QLineEdit::Password</enum>
|
||||||
</property>
|
</property>
|
||||||
@ -160,6 +154,11 @@
|
|||||||
<header>gui/PasswordGeneratorWidget.h</header>
|
<header>gui/PasswordGeneratorWidget.h</header>
|
||||||
<container>1</container>
|
<container>1</container>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
|
<customwidget>
|
||||||
|
<class>PasswordEdit</class>
|
||||||
|
<extends>QLineEdit</extends>
|
||||||
|
<header>gui/PasswordEdit.h</header>
|
||||||
|
</customwidget>
|
||||||
</customwidgets>
|
</customwidgets>
|
||||||
<tabstops>
|
<tabstops>
|
||||||
<tabstop>titleEdit</tabstop>
|
<tabstop>titleEdit</tabstop>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user