Merge pull request #1770 from CookiePLMonster/lock-login-button

Achievements Login: Lock "Login" button if credentials are not entered
This commit is contained in:
Connor McLaughlin 2021-03-09 17:18:11 +10:00 committed by GitHub
commit 31a9e1b049
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
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 username(m_ui.userName->text().toStdString());
const std::string password(m_ui.password->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. // TODO: Make cancellable.
m_ui.status->setText(tr("Logging in...")); 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.login, &QPushButton::clicked, this, &AchievementLoginDialog::loginClicked);
connect(m_ui.cancel, &QPushButton::clicked, this, &AchievementLoginDialog::cancelClicked); 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) void AchievementLoginDialog::enableUI(bool enabled)
@ -59,5 +58,10 @@ void AchievementLoginDialog::enableUI(bool enabled)
m_ui.userName->setEnabled(enabled); m_ui.userName->setEnabled(enabled);
m_ui.password->setEnabled(enabled); m_ui.password->setEnabled(enabled);
m_ui.cancel->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: private:
void connectUi(); void connectUi();
void enableUI(bool enabled); void enableUI(bool enabled);
bool canEnableLoginButton() const;
Ui::AchievementLoginDialog m_ui; Ui::AchievementLoginDialog m_ui;
}; };

View file

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