Who stole the ! from main.cpp?
[quassel.git] / src / qtui / coreconnectdlg.cpp
index 4d0740c..643b0ff 100644 (file)
@@ -1,11 +1,11 @@
 /***************************************************************************
- *   Copyright (C) 2005-07 by The Quassel Team                             *
+ *   Copyright (C) 2005-08 by the Quassel Project                          *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
  *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
+ *   (at your option) version 3.                                           *
  *                                                                         *
  *   This program is distributed in the hope that it will be useful,       *
  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 
 #include <QtGui>
 #include "coreconnectdlg.h"
-#include "global.h"
 #include "client.h"
 #include "clientsettings.h"
+#include "configwizard.h"
+#include "global.h"
 
 CoreConnectDlg::CoreConnectDlg(QWidget *parent, bool /*doAutoConnect*/) : QDialog(parent) {
   ui.setupUi(this); //qDebug() << "new dlg";
@@ -54,10 +55,12 @@ CoreConnectDlg::CoreConnectDlg(QWidget *parent, bool /*doAutoConnect*/) : QDialo
   connect(Client::instance(), SIGNAL(coreConnectionProgress(uint, uint)), this, SLOT(updateProgressBar(uint, uint)));
   connect(Client::instance(), SIGNAL(coreConnectionError(QString)), this, SLOT(coreConnectionError(QString)));
   connect(Client::instance(), SIGNAL(connected()), this, SLOT(coreConnected()));
+  
+  connect(Client::instance(), SIGNAL(showConfigWizard(const QVariantMap &)), this, SLOT(showConfigWizard(const QVariantMap &)));
 
   AccountSettings s;
+  QString lastacc = s.lastAccount();
   ui.accountList->addItems(s.knownAccounts());
-  curacc = s.lastAccount();
   if(!ui.accountList->count()) {
     //if(doAutoConnect) reject();
 
@@ -68,7 +71,7 @@ CoreConnectDlg::CoreConnectDlg(QWidget *parent, bool /*doAutoConnect*/) : QDialo
     if(!newacc.isEmpty()) {
       ui.accountList->addItem(newacc);
       ui.hostEdit->setText("localhost");
-      ui.port->setValue(DEFAULT_PORT);
+      ui.port->setValue(Global::defaultPort);
       ui.internalCore->setChecked(false);
       setAccountEditEnabled(true);
     }
@@ -87,7 +90,7 @@ CoreConnectDlg::CoreConnectDlg(QWidget *parent, bool /*doAutoConnect*/) : QDialo
     autoConnectToggled(true);
     */
   } else {
-    if(!curacc.isEmpty()) {
+    if(!lastacc.isEmpty()) {
       //if(doAutoConnect) { qDebug() << "auto";
       //  AccountSettings s;
       //  int idx = ui.accountList->findText(s.autoConnectAccount());
@@ -97,7 +100,7 @@ CoreConnectDlg::CoreConnectDlg(QWidget *parent, bool /*doAutoConnect*/) : QDialo
       //    doConnect();
       //  }
       //} else {
-        int idx = ui.accountList->findText(curacc);
+        int idx = ui.accountList->findText(lastacc);
         ui.accountList->setCurrentIndex(idx);
       //}
     }
@@ -208,7 +211,6 @@ void CoreConnectDlg::doAutoConnect() {
 
 void CoreConnectDlg::doConnect() {
   accountChanged(); // save current account info
-
   QVariantMap conninfo;
   ui.stackedWidget->setCurrentIndex(1);
   if(ui.internalCore->isChecked()) {
@@ -311,3 +313,24 @@ void CoreConnectDlg::recvCoreState(QVariant state) {
 QVariant CoreConnectDlg::getCoreState() {
   return coreState;
 }
+
+void CoreConnectDlg::showConfigWizard(const QVariantMap &coredata) {
+  QStringList storageProviders = coredata["StorageProviders"].toStringList();
+  ConfigWizard *wizard = new ConfigWizard(storageProviders, this);
+  wizard->exec();
+  QVariantMap reply;
+  reply["GuiProtocol"] = GUI_PROTOCOL;
+  reply["HasSettings"] = true;
+  reply["User"] = wizard->field("adminuser.name").toString();
+  reply["Password"] = wizard->field("adminuser.password").toString();
+  QString sp = storageProviders.value(wizard->field("storage.provider").toInt());
+  reply["Type"] = sp;
+  if (sp.compare("Sqlite", Qt::CaseInsensitive)) {
+    reply["Host"] = wizard->field("storage.host").toString();
+    reply["Port"] = wizard->field("storage.port").toString();
+    reply["Database"] = wizard->field("storage.database").toString();
+    reply["User"] = wizard->field("storage.user").toString();
+    reply["Password"] = wizard->field("storage.password").toString();
+  }
+  Client::instance()->setCoreConfiguration(reply);
+}