AchievementLoginDialog: Lock out "Login" if fields aren't filled

This commit is contained in:
Silent 2021-03-08 21:10:55 +01:00
parent 3849ec449b
commit 08b2f6c715
No known key found for this signature in database
GPG Key ID: AE53149BB0C45AF1
3 changed files with 14 additions and 6 deletions

View File

@ -16,11 +16,6 @@ void AchievementLoginDialog::loginClicked()
{
const std::string username(m_ui.userName->text().toStdString());
const std::string password(m_ui.password->text().toStdString());
if (username.empty() || password.empty())
{
QMessageBox::critical(this, tr("Login Error"), tr("A user name and password must be provided."));
return;
}
// TODO: Make cancellable.
m_ui.status->setText(tr("Logging in..."));
@ -52,6 +47,10 @@ void AchievementLoginDialog::connectUi()
{
connect(m_ui.login, &QPushButton::clicked, this, &AchievementLoginDialog::loginClicked);
connect(m_ui.cancel, &QPushButton::clicked, this, &AchievementLoginDialog::cancelClicked);
auto enableLoginButton = [this](const QString&) { m_ui.login->setEnabled(canEnableLoginButton()); };
connect(m_ui.userName, &QLineEdit::textChanged, enableLoginButton);
connect(m_ui.password, &QLineEdit::textChanged, enableLoginButton);
}
void AchievementLoginDialog::enableUI(bool enabled)
@ -59,5 +58,10 @@ void AchievementLoginDialog::enableUI(bool enabled)
m_ui.userName->setEnabled(enabled);
m_ui.password->setEnabled(enabled);
m_ui.cancel->setEnabled(enabled);
m_ui.login->setEnabled(enabled);
m_ui.login->setEnabled(enabled && canEnableLoginButton());
}
bool AchievementLoginDialog::canEnableLoginButton() const
{
return !m_ui.userName->text().isEmpty() && !m_ui.password->text().isEmpty();
}

View File

@ -17,6 +17,7 @@ private Q_SLOTS:
private:
void connectUi();
void enableUI(bool enabled);
bool canEnableLoginButton() const;
Ui::AchievementLoginDialog m_ui;
};

View File

@ -125,6 +125,9 @@
</item>
<item>
<widget class="QPushButton" name="login">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>&amp;Login</string>
</property>