Implemented a signal handler to graceful shutdown Quassel when SIGTERM or
[quassel.git] / src / qtgui / coreconnectdlg.cpp
index 90efe6f..d845f00 100644 (file)
 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 +61,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 +73,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 +86,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 +105,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,8 +119,7 @@ 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());
 }
 
@@ -184,6 +193,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;
   }
@@ -203,12 +213,16 @@ void CoreConnectDlg::doConnect() {
   VarMap conninfo;
   ui.stackedWidget->setCurrentIndex(1);
   if(ui.internalCore->isChecked()) {
+    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();