Ok this is the major rework of quassel we've all been waiting for. For the actual...
[quassel.git] / src / qtgui / coreconnectdlg.cpp
index 90efe6f..4d0740c 100644 (file)
@@ -20,7 +20,6 @@
 
 #include <QtGui>
 #include "coreconnectdlg.h"
-#include "clientproxy.h"
 #include "global.h"
 #include "client.h"
 #include "clientsettings.h"
 CoreConnectDlg::CoreConnectDlg(QWidget *parent, bool /*doAutoConnect*/) : QDialog(parent) {
   ui.setupUi(this); //qDebug() << "new dlg";
 
+  setAttribute(Qt::WA_DeleteOnClose);
+
   coreState = 0;
+  /* We show ui.internalCore in any case, because we might want to run as monolithic client anyway at another time
   if(Global::runMode == Global::Monolithic) {
     connect(ui.internalCore, SIGNAL(toggled(bool)), ui.hostEdit, SLOT(setDisabled(bool)));
     connect(ui.internalCore, SIGNAL(toggled(bool)), ui.port, SLOT(setDisabled(bool)));
     ui.internalCore->setChecked(true);
   } else {
-    ui.internalCore->hide();
+    //ui.internalCore->hide();
   }
+  */
   connect(ui.newAccount, SIGNAL(clicked()), this, SLOT(createAccount()));
   connect(ui.delAccount, SIGNAL(clicked()), this, SLOT(removeAccount()));
   connect(ui.buttonBox1, SIGNAL(accepted()), this, SLOT(doConnect()));
   connect(ui.hostEdit, SIGNAL(textChanged(const QString &)), this, SLOT(checkInputValid()));
   connect(ui.userEdit, SIGNAL(textChanged(const QString &)), this, SLOT(checkInputValid()));
   connect(ui.internalCore, SIGNAL(toggled(bool)), this, SLOT(checkInputValid()));
+  connect(ui.internalCore, SIGNAL(toggled(bool)), ui.hostEdit, SLOT(setDisabled(bool)));
+  connect(ui.internalCore, SIGNAL(toggled(bool)), ui.port, SLOT(setDisabled(bool)));
   connect(ui.accountList, SIGNAL(currentIndexChanged(const QString &)), this, SLOT(accountChanged(const QString &)));
   connect(ui.autoConnect, SIGNAL(clicked(bool)), this, SLOT(autoConnectToggled(bool)));
 
@@ -55,7 +60,7 @@ CoreConnectDlg::CoreConnectDlg(QWidget *parent, bool /*doAutoConnect*/) : QDialo
   curacc = s.lastAccount();
   if(!ui.accountList->count()) {
     //if(doAutoConnect) reject();
-    /*
+
     setAccountEditEnabled(false);
     QString newacc = QInputDialog::getText(this, tr("Create Account"), tr(
                                            "In order to connect to a Quassel Core, you need to create an account.<br>"
@@ -67,7 +72,7 @@ CoreConnectDlg::CoreConnectDlg(QWidget *parent, bool /*doAutoConnect*/) : QDialo
       ui.internalCore->setChecked(false);
       setAccountEditEnabled(true);
     }
-    */
+    /*
     // FIXME We create a default account here that just connects to the internal core
     curacc = "Default";
     ui.accountList->addItem("Default");
@@ -80,7 +85,7 @@ CoreConnectDlg::CoreConnectDlg(QWidget *parent, bool /*doAutoConnect*/) : QDialo
     ui.accountList->setCurrentIndex(0);
     ui.autoConnect->setChecked(true);
     autoConnectToggled(true);
-
+    */
   } else {
     if(!curacc.isEmpty()) {
       //if(doAutoConnect) { qDebug() << "auto";
@@ -99,6 +104,10 @@ CoreConnectDlg::CoreConnectDlg(QWidget *parent, bool /*doAutoConnect*/) : QDialo
   }
 }
 
+CoreConnectDlg::~CoreConnectDlg() {
+  //qDebug() << "destroy";
+}
+
 void CoreConnectDlg::setAccountEditEnabled(bool en) {
   ui.accountList->setEnabled(en);
   ui.hostEdit->setEnabled(en && !ui.internalCore->isChecked());
@@ -109,15 +118,14 @@ void CoreConnectDlg::setAccountEditEnabled(bool en) {
   ui.delAccount->setEnabled(en);
   ui.internalCore->setEnabled(en);
   ui.rememberPasswd->setEnabled(en);
-  //ui.autoConnect->setEnabled(en);
-  ui.autoConnect->setEnabled(false); // FIXME temporär
+  ui.autoConnect->setEnabled(en);
   ui.buttonBox1->button(QDialogButtonBox::Ok)->setEnabled(en && checkInputValid());
 }
 
 void CoreConnectDlg::accountChanged(const QString &text) {
   AccountSettings s;
   if(!curacc.isEmpty()) {
-    VarMap oldAcc;
+    QVariantMap oldAcc;
     oldAcc["User"] = ui.userEdit->text();
     oldAcc["Host"] = ui.hostEdit->text();
     oldAcc["Port"] = ui.port->value();
@@ -129,7 +137,7 @@ void CoreConnectDlg::accountChanged(const QString &text) {
   if(!text.isEmpty()) { // empty text: just save stuff
     curacc = text;
     s.setLastAccount(curacc);
-    VarMap newAcc = s.value(curacc, "AccountData").toMap();
+    QVariantMap newAcc = s.value(curacc, "AccountData").toMap();
     ui.userEdit->setText(newAcc["User"].toString());
     ui.hostEdit->setText(newAcc["Host"].toString());
     ui.port->setValue(newAcc["Port"].toInt());
@@ -161,7 +169,7 @@ void CoreConnectDlg::createAccount() {
     QMessageBox::warning(this, tr("Account name already exists!"), tr("An account named '%1' already exists, and account names must be unique!").arg(accname));
     return;
   }
-  VarMap defdata;
+  QVariantMap defdata;
   ui.accountList->addItem(accname);
   ui.accountList->setCurrentIndex(ui.accountList->findText(accname));
   setAccountEditEnabled(true);
@@ -184,6 +192,7 @@ void CoreConnectDlg::removeAccount() {
 
 bool CoreConnectDlg::willDoInternalAutoConnect() {
   AccountSettings s;
+  if(Global::runMode != Global::Monolithic) return false;
   if(ui.autoConnect->isChecked() && s.autoConnectAccount() == curacc && ui.internalCore->isChecked()) {
     return true;
   }
@@ -200,15 +209,22 @@ void CoreConnectDlg::doAutoConnect() {
 void CoreConnectDlg::doConnect() {
   accountChanged(); // save current account info
 
-  VarMap conninfo;
+  QVariantMap conninfo;
   ui.stackedWidget->setCurrentIndex(1);
   if(ui.internalCore->isChecked()) {
+    // FIXME
+    coreConnectionError(tr("Can't connect to internal core at the moment [serious breakage due to switch to dynamic signals]. Please check back later."));
+    return;
+    if(Global::runMode != Global::Monolithic) {
+      coreConnectionError(tr("Can't connect to internal core, since we are running as a standalone GUI!"));
+      return;
+    }
     ui.connectionGroupBox->setTitle(tr("Connecting to internal core"));
     ui.connectionProgress->hide();
   } else {
     ui.connectionGroupBox->setTitle(tr("Connecting to %1").arg(ui.hostEdit->text()));
     conninfo["Host"] = ui.hostEdit->text();
-    conninfo["Post"] = ui.port->value();
+    conninfo["Port"] = ui.port->value();
   }
   conninfo["User"] = ui.userEdit->text();
   conninfo["Password"] = ui.passwdEdit->text();
@@ -264,7 +280,7 @@ void CoreConnectDlg::coreConnected() { /*
   connect(ClientProxy::instance(), SIGNAL(recvPartialItem(quint32, quint32)), this, SLOT(updateProgressBar(quint32, quint32)));
   connect(ClientProxy::instance(), SIGNAL(csCoreState(QVariant)), this, SLOT(recvCoreState(QVariant)));
   ui.progressBar->show();
-  VarMap initmsg;
+  QVariantMap initmsg;
   initmsg["GUIProtocol"] = GUI_PROTOCOL;
   // FIXME guiProxy->send(GS_CLIENT_INIT, QVariant(initmsg)); */
   ui.connectionStatus->setText(tr("Connected to core."));
@@ -275,7 +291,7 @@ void CoreConnectDlg::coreConnectionError(QString err) {
   ui.stackedWidget->setCurrentIndex(0);
   show(); // just in case we started hidden
   QMessageBox::warning(this, tr("Connection Error"), tr("<b>Could not connect to Quassel Core!</b><br>\n") + err, QMessageBox::Retry);
-  disconnect(ClientProxy::instance(), 0, this, 0);
+  //disconnect(ClientProxy::instance(), 0, this, 0); FIXME?
   //ui.autoConnect->setChecked(false);
   setStartState();
 }