#endif
#include "client.h"
+#include "clientsettings.h"
#include "coreaccountmodel.h"
#include "identity.h"
#include "network.h"
}
-void CoreConnection::start() {
- connectToCore(1);
-}
-
void CoreConnection::init() {
connect(Client::signalProxy(), SIGNAL(disconnected()), SLOT(coreSocketDisconnected()));
}
}
void CoreConnection::reconnectToCore() {
-
+ if(currentAccount().isValid())
+ connectToCore(currentAccount().accountId());
}
-void CoreConnection::connectToCore(AccountId accId) {
- resetConnection();
+bool CoreConnection::connectToCore(AccountId accId) {
+ CoreAccountSettings s;
+
+ if(!accId.isValid()) {
+ // check our settings and figure out what to do
+ if(!s.autoConnectOnStartup())
+ return false;
+ if(s.autoConnectToFixedAccount())
+ accId = s.autoConnectAccount();
+ else
+ accId = s.lastAccount();
+ if(!accId.isValid())
+ return false;
+ }
_account = accountModel()->account(accId);
-
if(!_account.accountId().isValid()) {
- emit connectionError(tr("Invalid core account, cannot connect!"));
- return;
+ return false;
}
+ s.setLastAccount(accId);
+ connectToCurrentAccount();
+ return true;
+}
+
+void CoreConnection::connectToCurrentAccount() {
+ resetConnection();
+
Q_ASSERT(!_socket);
#ifdef HAVE_SSL
QSslSocket *sock = new QSslSocket(Client::instance());
CoreConnection(CoreAccountModel *model, QObject *parent = 0);
void init();
- void start();
inline ConnectionState state() const;
inline bool isConnected() const;
inline QString progressText() const;
public slots:
- void connectToCore(AccountId);
+ bool connectToCore(AccountId = 0);
void reconnectToCore();
void disconnectFromCore();
void handleIgnoreWarnings(bool permanently);
private slots:
+ void connectToCurrentAccount();
+
void socketStateChanged(QAbstractSocket::SocketState);
void coreSocketError(QAbstractSocket::SocketError);
void coreHasData();