First working version of internal core connection.
authorMarcus Eggenberger <egs@quassel-irc.org>
Mon, 20 Oct 2008 16:29:59 +0000 (18:29 +0200)
committerMarcus Eggenberger <egs@quassel-irc.org>
Tue, 21 Oct 2008 16:52:52 +0000 (18:52 +0200)
Disconnecting is not possible for now. Currently the clientsyncer needs to link against corelib - ouch.

src/client/clientsyncer.cpp
src/client/clientsyncer.h
src/core/core.h
src/core/sessionthread.cpp
src/qtui/coreconnectdlg.cpp
src/qtui/coreconnectdlg.h
src/qtui/ui/coreconnectdlg.ui

index 2b53270..a5a64d7 100644 (file)
 #include "quassel.h"
 #include "signalproxy.h"
 
+//#ifdef BUILD_MONO
+#include "core.h"
+//#endif
+
 ClientSyncer::ClientSyncer(QObject *parent)
   : QObject(parent)
 {
@@ -40,6 +44,11 @@ ClientSyncer::ClientSyncer(QObject *parent)
   blockSize = 0;
 
   connect(Client::signalProxy(), SIGNAL(disconnected()), this, SLOT(coreSocketDisconnected()));
+
+  //#ifdef BUILD_MONO
+  connect(this, SIGNAL(connectToInternalCore(SignalProxy *)), Core::instance(), SLOT(setupInternalClientSession(SignalProxy *)));
+  connect(Core::instance(), SIGNAL(sessionState(const QVariant &)), this, SLOT(internalSessionStateReceived(const QVariant &)));
+  //#endif
 }
 
 ClientSyncer::~ClientSyncer() {
@@ -169,6 +178,10 @@ void ClientSyncer::coreSocketConnected() {
   SignalProxy::writeDataToDevice(socket, clientInit);
 }
 
+void ClientSyncer::useInternalCore() {
+  emit connectToInternalCore(Client::instance()->signalProxy());
+}
+
 void ClientSyncer::coreSocketDisconnected() {
   emit socketDisconnected();
   Client::instance()->disconnectFromCore();
@@ -240,6 +253,13 @@ void ClientSyncer::loginToCore(const QString &user, const QString &passwd) {
   SignalProxy::writeDataToDevice(socket, clientLogin);
 }
 
+void ClientSyncer::internalSessionStateReceived(const QVariant &packedState) {
+  QVariantMap state = packedState.toMap();
+  emit sessionProgress(1, 1);
+  // Client::instance()->setConnectedToCore(socket, AccountId());
+  syncToCore(state);
+}
+
 void ClientSyncer::sessionStateReceived(const QVariantMap &state) {
   emit sessionProgress(1, 1);
   disconnect(this, SIGNAL(recvPartialItem(quint32, quint32)), this, SIGNAL(sessionProgress(quint32, quint32)));
index b77b234..16c516d 100644 (file)
@@ -33,6 +33,7 @@
 
 class IrcUser;
 class IrcChannel;
+class SignalProxy;
 
 class ClientSyncer : public QObject {
   Q_OBJECT
@@ -60,10 +61,13 @@ signals:
 
   void encrypted(bool);
 
+  void connectToInternalCore(SignalProxy *proxy);
+
 public slots:
   void connectToCore(const QVariantMap &);
   void loginToCore(const QString &user, const QString &passwd);
   void disconnectFromCore();
+  void useInternalCore();
 
 private slots:
   void coreSocketError(QAbstractSocket::SocketError);
@@ -78,6 +82,7 @@ private slots:
   void checkSyncState();
 
   void syncToCore(const QVariantMap &sessionState);
+  void internalSessionStateReceived(const QVariant &packedState);
   void sessionStateReceived(const QVariantMap &state);
 
   void doCoreSetup(const QVariant &setupData);
index 26a22db..c38129a 100644 (file)
@@ -294,6 +294,9 @@ class Core : public QObject {
     //! Sent when a BufferInfo is updated in storage.
     void bufferInfoUpdated(UserId user, const BufferInfo &info);
 
+  //! Relay From CoreSession::sessionState(const QVariant &). Used for internal connection only
+  void sessionState(const QVariant &);
+
   private slots:
     bool startListening();
     void stopListening();
index cee4c8d..6a17bd9 100644 (file)
@@ -23,6 +23,7 @@
 #include "sessionthread.h"
 #include "signalproxy.h"
 #include "coresession.h"
+#include "core.h"
 
 SessionThread::SessionThread(UserId uid, bool restoreState, QObject *parent)
   : QThread(parent),
@@ -98,6 +99,7 @@ void SessionThread::run() {
   _session = new CoreSession(user(), _restoreState);
   connect(this, SIGNAL(addRemoteClient(QIODevice *)), _session, SLOT(addClient(QIODevice *)));
   connect(this, SIGNAL(addInternalClient(SignalProxy *)), _session, SLOT(addClient(SignalProxy *)));
+  connect(_session, SIGNAL(sessionState(const QVariant &)), Core::instance(), SIGNAL(sessionState(const QVariant &)));
   emit initialized();
   exec();
   delete _session;
index 3f6d120..a7e3939 100644 (file)
@@ -211,6 +211,11 @@ void CoreConnectDlg::on_accountButtonBox_accepted() {
   connectToCore();
 }
 
+void CoreConnectDlg::on_useInternalCore_clicked() {
+  clientSyncer->useInternalCore();
+  startSync();
+}
+
 /*****************************************************
  * Connecting to the Core
  ****************************************************/
index 99e3379..ff980d3 100644 (file)
@@ -34,90 +34,91 @@ class CoreConfigWizard;
 class CoreConnectDlg : public QDialog {
   Q_OBJECT
 
-  public:
-    CoreConnectDlg(bool = false, QWidget *parent = 0);
-    ~CoreConnectDlg();
+public:
+  CoreConnectDlg(bool = false, QWidget *parent = 0);
+  ~CoreConnectDlg();
 
-  private slots:
+private slots:
 
-    /*** Phase Null: Accounts ***/
-    void restartPhaseNull();
+  /*** Phase Null: Accounts ***/
+  void restartPhaseNull();
 
-    void on_accountList_itemSelectionChanged();
-    void on_autoConnect_clicked(bool);
+  void on_accountList_itemSelectionChanged();
+  void on_autoConnect_clicked(bool);
 
-    void on_addAccount_clicked();
-    void on_editAccount_clicked();
-    void on_deleteAccount_clicked();
+  void on_addAccount_clicked();
+  void on_editAccount_clicked();
+  void on_deleteAccount_clicked();
+  void on_useInternalCore_clicked();
 
-    void on_accountList_itemDoubleClicked(QListWidgetItem *item);
-    void on_accountButtonBox_accepted();
+  void on_accountList_itemDoubleClicked(QListWidgetItem *item);
+  void on_accountButtonBox_accepted();
 
-    void setAccountWidgetStates();
+  void setAccountWidgetStates();
 
-    /*** Phase One: Connection ***/
-    void connectToCore();
+  /*** Phase One: Connection ***/
+  void connectToCore();
 
-    void initPhaseError(const QString &error);
-    void initPhaseMsg(const QString &msg);
-    void initPhaseSocketState(QAbstractSocket::SocketState);
-    void encrypted(bool);
+  void initPhaseError(const QString &error);
+  void initPhaseMsg(const QString &msg);
+  void initPhaseSocketState(QAbstractSocket::SocketState);
+  void encrypted(bool);
 
-    /*** Phase Two: Login ***/
-    void startLogin();
-    void doLogin();
-    void doLogin(const QVariantMap &loginData);
-    void loginFailed(const QString &);
-    void startCoreConfig(const QVariantList &backends);
-    void configWizardAccepted();
-    void configWizardRejected();
-    void on_launchCoreConfigWizard_clicked();
+  /*** Phase Two: Login ***/
+  void startLogin();
+  void doLogin();
+  void doLogin(const QVariantMap &loginData);
+  void loginFailed(const QString &);
+  void startCoreConfig(const QVariantList &backends);
+  void configWizardAccepted();
+  void configWizardRejected();
+  void on_launchCoreConfigWizard_clicked();
 
-    void setLoginWidgetStates();
+  void setLoginWidgetStates();
 
-    /*** Phase Three: Sync ***/
-    void startSync();
-    void syncFinished();
+  /*** Phase Three: Sync ***/
+  void startSync();
+  void syncFinished();
 
-    void coreSessionProgress(quint32, quint32);
-    void coreNetworksProgress(quint32, quint32);
+  void coreSessionProgress(quint32, quint32);
+  void coreNetworksProgress(quint32, quint32);
 
-  private:
-    Ui::CoreConnectDlg ui;
+private:
+  Ui::CoreConnectDlg ui;
 
-    AccountId autoConnectAccount;
-    QHash<AccountId, QVariantMap> accounts;
-    QVariantMap accountData;
-    AccountId account;
+  AccountId autoConnectAccount;
+  QHash<AccountId, QVariantMap> accounts;
+  QVariantMap accountData;
+  AccountId account;
 
-    bool doingAutoConnect;
+  bool doingAutoConnect;
 
-    QVariantList storageBackends;
+  QVariantList storageBackends;
 
-    ClientSyncer *clientSyncer;
-    CoreConfigWizard *wizard;
+  ClientSyncer *clientSyncer;
+  CoreConfigWizard *wizard;
 };
 
 class CoreAccountEditDlg : public QDialog {
   Q_OBJECT
 
-  public:
-    CoreAccountEditDlg(AccountId id, const QVariantMap &data, const QStringList &existing = QStringList(), QWidget *parent = 0);
+public:
+  CoreAccountEditDlg(AccountId id, const QVariantMap &data, const QStringList &existing = QStringList(), QWidget *parent = 0);
 
-    QVariantMap accountData();
+  QVariantMap accountData();
 
-  private slots:
-    void on_host_textChanged(const QString &);
-    void on_accountName_textChanged(const QString &);
-    void on_useRemote_toggled(bool);
+private slots:
+  void on_host_textChanged(const QString &);
+  void on_accountName_textChanged(const QString &);
+  void on_useRemote_toggled(bool);
 
-    void setWidgetStates();
+  void setWidgetStates();
 
-  private:
-    Ui::CoreAccountEditDlg ui;
+private:
+  Ui::CoreAccountEditDlg ui;
 
-    QStringList existing;
-    QVariantMap account;
+  QStringList existing;
+  QVariantMap account;
 };
 
 #endif
index 9b62884..574609e 100644 (file)
@@ -19,7 +19,7 @@
    <string>Connect to Quassel Core</string>
   </property>
   <property name="windowIcon" >
-   <iconset resource="../../icons/icons.qrc" >
+   <iconset>
     <normaloff>:/16x16/actions/network-disconnect</normaloff>:/16x16/actions/network-disconnect</iconset>
   </property>
   <layout class="QHBoxLayout" >
@@ -32,7 +32,7 @@
       </sizepolicy>
      </property>
      <property name="currentIndex" >
-      <number>2</number>
+      <number>0</number>
      </property>
      <widget class="QWidget" name="accountPage" >
       <property name="geometry" >
@@ -40,7 +40,7 @@
         <x>0</x>
         <y>0</y>
         <width>539</width>
-        <height>331</height>
+        <height>332</height>
        </rect>
       </property>
       <layout class="QVBoxLayout" >
@@ -65,7 +65,7 @@
                <string>Edit...</string>
               </property>
               <property name="icon" >
-               <iconset resource="../../icons/icons.qrc" >
+               <iconset>
                 <normaloff>:/16x16/actions/oxygen/16x16/actions/document-properties.png</normaloff>:/16x16/actions/oxygen/16x16/actions/document-properties.png</iconset>
               </property>
              </widget>
@@ -76,7 +76,7 @@
                <string>Add...</string>
               </property>
               <property name="icon" >
-               <iconset resource="../../icons/icons.qrc" >
+               <iconset>
                 <normaloff>:/16x16/actions/oxygen/16x16/actions/list-add.png</normaloff>:/16x16/actions/oxygen/16x16/actions/list-add.png</iconset>
               </property>
              </widget>
@@ -87,7 +87,7 @@
                <string>Delete</string>
               </property>
               <property name="icon" >
-               <iconset resource="../../icons/icons.qrc" >
+               <iconset>
                 <normaloff>:/16x16/actions/oxygen/16x16/actions/list-remove.png</normaloff>:/16x16/actions/oxygen/16x16/actions/list-remove.png</iconset>
               </property>
              </widget>
               </property>
              </spacer>
             </item>
+            <item>
+             <widget class="QPushButton" name="useInternalCore" >
+              <property name="text" >
+               <string>use internal core</string>
+              </property>
+             </widget>
+            </item>
            </layout>
           </item>
          </layout>
                <string/>
               </property>
               <property name="pixmap" >
-               <pixmap resource="../../icons/icons.qrc" >:/22x22/actions/network-disconnect</pixmap>
+               <pixmap>:/22x22/actions/network-disconnect</pixmap>
               </property>
              </widget>
             </item>
@@ -227,7 +234,7 @@ space</string>
                <string/>
               </property>
               <property name="pixmap" >
-               <pixmap resource="../../icons/icons.qrc" >:/22x22/actions/oxygen/22x22/actions/document-encrypt.png</pixmap>
+               <pixmap>:/22x22/actions/oxygen/22x22/actions/document-encrypt.png</pixmap>
               </property>
              </widget>
             </item>
@@ -250,7 +257,7 @@ space</string>
                <x>0</x>
                <y>0</y>
                <width>501</width>
-               <height>145</height>
+               <height>146</height>
               </rect>
              </property>
              <layout class="QVBoxLayout" >