From aa1d373fe6a71c692586ff5898ce20c75682d5d0 Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Fri, 20 Nov 2009 01:22:21 +0100 Subject: [PATCH] Respect autoconnect settings in CoreConnection --- src/client/coreconnection.cpp | 36 +++++++++++++++++++++++++---------- src/client/coreconnection.h | 5 +++-- 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/src/client/coreconnection.cpp b/src/client/coreconnection.cpp index b2c040eb..9c8889c8 100644 --- a/src/client/coreconnection.cpp +++ b/src/client/coreconnection.cpp @@ -25,6 +25,7 @@ #endif #include "client.h" +#include "clientsettings.h" #include "coreaccountmodel.h" #include "identity.h" #include "network.h" @@ -45,10 +46,6 @@ CoreConnection::CoreConnection(CoreAccountModel *model, QObject *parent) } -void CoreConnection::start() { - connectToCore(1); -} - void CoreConnection::init() { connect(Client::signalProxy(), SIGNAL(disconnected()), SLOT(coreSocketDisconnected())); } @@ -237,18 +234,37 @@ void CoreConnection::disconnectFromCore() { } 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()); diff --git a/src/client/coreconnection.h b/src/client/coreconnection.h index 67b9b142..7a5d841f 100644 --- a/src/client/coreconnection.h +++ b/src/client/coreconnection.h @@ -52,7 +52,6 @@ public: CoreConnection(CoreAccountModel *model, QObject *parent = 0); void init(); - void start(); inline ConnectionState state() const; inline bool isConnected() const; @@ -64,7 +63,7 @@ public: inline QString progressText() const; public slots: - void connectToCore(AccountId); + bool connectToCore(AccountId = 0); void reconnectToCore(); void disconnectFromCore(); @@ -91,6 +90,8 @@ signals: void handleIgnoreWarnings(bool permanently); private slots: + void connectToCurrentAccount(); + void socketStateChanged(QAbstractSocket::SocketState); void coreSocketError(QAbstractSocket::SocketError); void coreHasData(); -- 2.20.1