Respect autoconnect settings in CoreConnection
authorManuel Nickschas <sputnick@quassel-irc.org>
Fri, 20 Nov 2009 00:22:21 +0000 (01:22 +0100)
committerManuel Nickschas <sputnick@quassel-irc.org>
Sat, 28 Nov 2009 23:39:41 +0000 (00:39 +0100)
src/client/coreconnection.cpp
src/client/coreconnection.h

index b2c040e..9c8889c 100644 (file)
@@ -25,6 +25,7 @@
 #endif
 
 #include "client.h"
 #endif
 
 #include "client.h"
+#include "clientsettings.h"
 #include "coreaccountmodel.h"
 #include "identity.h"
 #include "network.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()));
 }
 void CoreConnection::init() {
   connect(Client::signalProxy(), SIGNAL(disconnected()), SLOT(coreSocketDisconnected()));
 }
@@ -237,18 +234,37 @@ void CoreConnection::disconnectFromCore() {
 }
 
 void CoreConnection::reconnectToCore() {
 }
 
 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);
   _account = accountModel()->account(accId);
-
   if(!_account.accountId().isValid()) {
   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());
   Q_ASSERT(!_socket);
 #ifdef HAVE_SSL
   QSslSocket *sock = new QSslSocket(Client::instance());
index 67b9b14..7a5d841 100644 (file)
@@ -52,7 +52,6 @@ public:
   CoreConnection(CoreAccountModel *model, QObject *parent = 0);
 
   void init();
   CoreConnection(CoreAccountModel *model, QObject *parent = 0);
 
   void init();
-  void start();
 
   inline ConnectionState state() const;
   inline bool isConnected() const;
 
   inline ConnectionState state() const;
   inline bool isConnected() const;
@@ -64,7 +63,7 @@ public:
   inline QString progressText() const;
 
 public slots:
   inline QString progressText() const;
 
 public slots:
-  void connectToCore(AccountId);
+  bool connectToCore(AccountId = 0);
   void reconnectToCore();
   void disconnectFromCore();
 
   void reconnectToCore();
   void disconnectFromCore();
 
@@ -91,6 +90,8 @@ signals:
   void handleIgnoreWarnings(bool permanently);
 
 private slots:
   void handleIgnoreWarnings(bool permanently);
 
 private slots:
+  void connectToCurrentAccount();
+
   void socketStateChanged(QAbstractSocket::SocketState);
   void coreSocketError(QAbstractSocket::SocketError);
   void coreHasData();
   void socketStateChanged(QAbstractSocket::SocketState);
   void coreSocketError(QAbstractSocket::SocketError);
   void coreHasData();