Improve editing of connection password

Previously only a new password was saved if the save password checkbox was checked, Which always
started in the unchecked state. Now when editing existing connection the save password checkbox now
reflects if a password has been saved. Only when the password field is edited the program will update
the saved password. If the save password checkbox is unchecked then clear the save password.
This commit is contained in:
eelke 2022-09-05 14:33:51 +02:00
parent 677302b5a7
commit da19c46d5e
7 changed files with 39 additions and 6 deletions

View file

@ -102,6 +102,7 @@ ConnectionConfigurationWidget::ConnectionConfigurationWidget(
edtPassword = new QLineEdit;
SET_OBJECT_NAME(edtPassword);
edtPassword->setEchoMode(QLineEdit::PasswordEchoOnEdit);
connect(edtPassword, &QLineEdit::textEdited, this, &ConnectionConfigurationWidget::passwordEdited);
cbSavePassword = new QCheckBox;
SET_OBJECT_NAME(cbSavePassword);
@ -212,6 +213,13 @@ void ConnectionConfigurationWidget::setData(const ConnectionConfig &cfg)
edtCrl->setText(cfg.sslCrl());
encodedPassword = cfg.encodedPassword();
cbSavePassword->setCheckState(
encodedPassword.isEmpty()
? Qt::CheckState::Unchecked
: Qt::CheckState::Checked
);
passwordChanged = false;
}
ConnectionConfig ConnectionConfigurationWidget::data() const
@ -240,7 +248,12 @@ QString ConnectionConfigurationWidget::group() const
bool ConnectionConfigurationWidget::savePassword() const
{
return cbSavePassword->isChecked() && !edtPassword->text().isEmpty();
return cbSavePassword->isChecked() && !edtPassword->text().isEmpty() && passwordChanged;
}
bool ConnectionConfigurationWidget::clearPassword() const
{
return !cbSavePassword->isChecked();
}
void ConnectionConfigurationWidget::testConnection()
@ -278,3 +291,8 @@ void ConnectionConfigurationWidget::handleTestResult(TestConnectionResult result
cmbDbname->setCurrentText(current);
}
void ConnectionConfigurationWidget::passwordEdited(const QString &)
{
passwordChanged = true;
}