diff options
| author | isanae <14251494+isanae@users.noreply.github.com> | 2019-10-05 13:47:11 -0400 |
|---|---|---|
| committer | isanae <14251494+isanae@users.noreply.github.com> | 2019-10-05 13:47:11 -0400 |
| commit | e7cc4774e1a7d03fb0710875f6a91ec703b0005e (patch) | |
| tree | 3f9e70411c528986ba2a814ff86f78f95a818c63 | |
| parent | 8269ac1b489d30ca6065ec2b97542ddbb22298b3 (diff) | |
don't show the progress dialog on startup until after the first failure
| -rw-r--r-- | src/nxmaccessmanager.cpp | 45 | ||||
| -rw-r--r-- | src/nxmaccessmanager.h | 4 |
2 files changed, 47 insertions, 2 deletions
diff --git a/src/nxmaccessmanager.cpp b/src/nxmaccessmanager.cpp index 99b93048..5d8b8b9e 100644 --- a/src/nxmaccessmanager.cpp +++ b/src/nxmaccessmanager.cpp @@ -702,13 +702,21 @@ bool NexusKeyValidator::nextTry() } void NexusKeyValidator::onAttemptSuccess( - const ValidationAttempt&, const APIUserAccount& u) + const ValidationAttempt& a, const APIUserAccount& u) { + if (attemptFinished) { + attemptFinished(a); + } + setFinished(ValidationAttempt::Success, "", u); } void NexusKeyValidator::onAttemptFailure(const ValidationAttempt& a) { + if (attemptFinished) { + attemptFinished(a); + } + switch (a.result()) { case ValidationAttempt::SoftError: @@ -755,6 +763,10 @@ NXMAccessManager::NXMAccessManager(QObject *parent, const QString &moVersion) onValidatorFinished(r, m, u); }; + m_validator.attemptFinished = [&](auto&& a) { + onValidatorAttemptFinished(a); + }; + setCookieJar(new PersistentCookieJar(QDir::fromNativeSeparators( Settings::instance().paths().cache() + "/nexus_cookies.dat"))); @@ -820,7 +832,12 @@ void NXMAccessManager::startValidationCheck(const QString& key) { m_validationState = NotChecked; m_validator.start(key, NexusKeyValidator::Retry); - startProgress(); + + if (m_ProgressDialog) { + // don't show the progress dialog on startup for the first attempt; the + // dialog will be shown in onValidatorAttemptFinished() if it failed + startProgress(); + } } void NXMAccessManager::onValidatorFinished( @@ -843,6 +860,30 @@ void NXMAccessManager::onValidatorFinished( } } +void NXMAccessManager::onValidatorAttemptFinished(const ValidationAttempt& a) +{ + if (!m_ProgressDialog) { + switch (a.result()) + { + case ValidationAttempt::SoftError: + case ValidationAttempt::HardError: + { + startProgress(); + break; + } + + case ValidationAttempt::None: + case ValidationAttempt::Success: + case ValidationAttempt::Cancelled: + default: + { + // don't show the dialog + break; + } + } + } +} + bool NXMAccessManager::validated() const { if (m_validator.isActive()) { diff --git a/src/nxmaccessmanager.h b/src/nxmaccessmanager.h index b0ea45e7..6a45d880 100644 --- a/src/nxmaccessmanager.h +++ b/src/nxmaccessmanager.h @@ -144,6 +144,7 @@ public: std::optional<APIUserAccount>); std::function<FinishedCallback> finished; + std::function<void (const ValidationAttempt&)> attemptFinished; NexusKeyValidator(NXMAccessManager& am); ~NexusKeyValidator(); @@ -269,10 +270,13 @@ private: States m_validationState; void startValidationCheck(const QString& key); + void onValidatorFinished( ValidationAttempt::Result r, const QString& message, std::optional<APIUserAccount>); + void onValidatorAttemptFinished(const ValidationAttempt& a); + void startProgress(); void stopProgress(); }; |
