AccountState: Run only a single validator, allow error message overriding #3236 ...
authorMarkus Goetz <markus@woboq.com>
Fri, 15 May 2015 10:26:23 +0000 (12:26 +0200)
committerMarkus Goetz <markus@woboq.com>
Fri, 15 May 2015 10:27:35 +0000 (12:27 +0200)
src/gui/accountstate.cpp
src/gui/accountstate.h

index a2c9cf63e43d6bbb461afade35367d701b128116..05ee53a7f7177872767390bc8eff82e84bf183da 100644 (file)
@@ -114,9 +114,10 @@ void AccountState::setState(State state)
         } else if (oldState == SignedOut && _state == Disconnected) {
             checkConnectivity();
         }
-
-        emit stateChanged(_state);
     }
+
+    // might not have changed but the underlying _connectionErrors might have
+    emit stateChanged(_state);
 }
 
 QString AccountState::stateString(State state)
@@ -174,7 +175,12 @@ void AccountState::checkConnectivity()
         return;
     }
 
+    if (_connectionValidator) {
+        qDebug() << "ConnectionValidator already running, ignoring";
+        return;
+    }
     ConnectionValidator * conValidator = new ConnectionValidator(account());
+    _connectionValidator = conValidator;
     connect(conValidator, SIGNAL(connectionResult(ConnectionValidator::Status,QStringList)),
             SLOT(slotConnectionValidatorResult(ConnectionValidator::Status,QStringList)));
     if (isConnected()) {
index c21b25ead399fd657f673872178362ec1031bc98..97bca8fe335a93f03d89de9ce629f7e93cb2f758 100644 (file)
@@ -16,6 +16,7 @@
 #define ACCOUNTINFO_H
 
 #include <QByteArray>
+#include <QPointer>
 #include "utility.h"
 #include "connectionvalidator.h"
 
@@ -128,6 +129,7 @@ private:
     ConnectionStatus _connectionStatus;
     QStringList _connectionErrors;
     bool _waitingForNewCredentials;
+    QPointer<ConnectionValidator> _connectionValidator;
 };
 
 }