Make Message a proper class rather than a struct (i.e. use setters/getters and
[quassel.git] / src / qtgui / serverlist.cpp
index ab12919..8a07694 100644 (file)
@@ -20,7 +20,8 @@
 
 #include "serverlist.h"
 #include "identities.h"
-#include "guiproxy.h"
+#include "client.h"
+#include "signalproxy.h"
 
 /* NOTE: This dialog holds not only the server list, but also the identities.
  *       This makes perfect sense given the fact that connections are initiated from
@@ -36,21 +37,23 @@ ServerListDlg::ServerListDlg(QWidget *parent) : QDialog(parent) {
 
   updateNetworkTree();
   connect(ui.networkTree, SIGNAL(itemSelectionChanged()), this, SLOT(updateButtons()));
+  connect(Client::instance(), SIGNAL(sessionDataChanged(const QString &)), this, SLOT(updateNetworkTree()));
 
   settings.endGroup();
-  // check if we already have a valid identity
-  if(!Global::data("Identities", VarMap()).toMap().contains("Default")) editIdentities(true);
-  connect(this, SIGNAL(requestConnect(QStringList)), ClientProxy::instance(), SLOT(gsRequestConnect(QStringList)));
+
+  Client::signalProxy()->attachSignal(this, SIGNAL(requestConnect(QString)));
 
   // Autoconnect
+  /* Should not be the client's task... :-P
   QStringList list;
-  VarMap networks = Global::data("Networks").toMap();
+  QVariantMap networks = Client::retrieveSessionData("Networks").toMap();
   foreach(QString net, networks.keys()) {
     if(networks[net].toMap()["AutoConnect"].toBool()) {
       list << net;
     }
   }
   if(!list.isEmpty()) emit requestConnect(list);
+  */
 }
 
 ServerListDlg::~ServerListDlg() {
@@ -58,7 +61,7 @@ ServerListDlg::~ServerListDlg() {
 }
 
 void ServerListDlg::updateNetworkTree() {
-  VarMap networks = Global::data("Networks").toMap();
+  QVariantMap networks = Client::retrieveSessionData("Networks").toMap();
   //QStringList headers;
   //headers << "Network" << "Autoconnect";
   ui.networkTree->clear();
@@ -66,7 +69,7 @@ void ServerListDlg::updateNetworkTree() {
   ui.networkTree->setHeaderLabel("Networks");
   QHash<QString, QTreeWidgetItem *> groups;
   foreach(QString net, networks.keys()) {
-    VarMap s = networks[net].toMap();
+    QVariantMap s = networks[net].toMap();
     QString gr = s["Group"].toString();
     QTreeWidgetItem *item = 0;
     if(gr.isEmpty()) {
@@ -92,7 +95,7 @@ void ServerListDlg::updateNetworkTree() {
     //item->setCheckState(1, Qt::Unchecked);
   }
   ui.networkTree->sortItems(0, Qt::AscendingOrder);
-
+  updateButtons();
 }
 
 void ServerListDlg::updateButtons() {
@@ -108,25 +111,25 @@ bool ServerListDlg::showOnStartup() {
 }
 
 void ServerListDlg::on_addButton_clicked() {
-  NetworkEditDlg dlg(this, VarMap());
+  NetworkEditDlg dlg(this, QVariantMap());
   if(dlg.exec() == QDialog::Accepted) {
-    VarMap networks = Global::data("Networks").toMap();
-    VarMap net = dlg.getNetwork();
+    QVariantMap networks = Client::retrieveSessionData("Networks").toMap();
+    QVariantMap net = dlg.getNetwork();
     networks[net["Name"].toString()] = net;
-    Global::putData("Networks", networks);
+    Client::storeSessionData("Networks", networks);
     updateNetworkTree();
   }
 }
 
 void ServerListDlg::on_editButton_clicked() {
   QString curnet = ui.networkTree->currentItem()->text(0);
-  VarMap networks = Global::data("Networks").toMap();
+  QVariantMap networks = Client::retrieveSessionData("Networks").toMap();
   NetworkEditDlg dlg(this, networks[curnet].toMap());
   if(dlg.exec() == QDialog::Accepted) {
-    VarMap net = dlg.getNetwork();
+    QVariantMap net = dlg.getNetwork();
     networks.remove(curnet);
     networks[net["Name"].toString()] = net;
-    Global::putData("Networks", networks);
+    Client::storeSessionData("Networks", networks);
     updateNetworkTree();
   }
 }
@@ -134,12 +137,12 @@ void ServerListDlg::on_editButton_clicked() {
 void ServerListDlg::on_deleteButton_clicked() {
   if(QMessageBox::warning(this, tr("Remove Network?"), tr("Are you sure you want to delete the selected network(s)?"),
                         QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) {
-    VarMap networks = Global::data("Networks").toMap();
+    QVariantMap networks = Client::retrieveSessionData("Networks").toMap();
     QList<QTreeWidgetItem *> sel = ui.networkTree->selectedItems();
     foreach(QTreeWidgetItem *item, sel) {
       networks.remove(item->text(0));
     }
-    Global::putData("Networks", networks);
+    Client::storeSessionData("Networks", networks);
     updateNetworkTree();
   }
 }
@@ -170,27 +173,27 @@ void ServerListDlg::accept() {
   foreach(QTreeWidgetItem *item, list) {
     nets << item->text(0);
   }
-  emit requestConnect(nets);
+  emit requestConnect(nets[0]); // FIXME
   QDialog::accept();
 }
 
 /***************************************************************************/
 
-NetworkEditDlg::NetworkEditDlg(QWidget *parent, VarMap _network) : QDialog(parent) {
+NetworkEditDlg::NetworkEditDlg(QWidget *parent, QVariantMap _network) : QDialog(parent) {
   ui.setupUi(this);
   network = _network;
   oldName = network["Name"].toString();
 
   connect(ui.serverList, SIGNAL(itemSelectionChanged()), this, SLOT(updateServerButtons()));
 
-  VarMap identities = Global::data("Identities").toMap();
+  QVariantMap identities = Client::retrieveSessionData("Identities").toMap();
 
   ui.identityList->addItem(tr("Default Identity"));
   foreach(QString id, identities.keys()) {
     if(id != "Default") ui.identityList->addItem(id);
   }
   QStringList groups; groups << "";
-  VarMap nets = Global::data("Networks").toMap();
+  QVariantMap nets = Client::retrieveSessionData("Networks").toMap();
   foreach(QString net, nets.keys()) {
     QString gr = nets[net].toMap()["Group"].toString();
     if(!groups.contains(gr) && !gr.isEmpty()) {
@@ -212,8 +215,8 @@ NetworkEditDlg::NetworkEditDlg(QWidget *parent, VarMap _network) : QDialog(paren
   ui.networkName->setFocus();
 }
 
-VarMap NetworkEditDlg::createDefaultNetwork() {
-  VarMap net;
+QVariantMap NetworkEditDlg::createDefaultNetwork() {
+  QVariantMap net;
 
   net["Name"] = QString();
   net["Group"] = QString();
@@ -225,7 +228,7 @@ VarMap NetworkEditDlg::createDefaultNetwork() {
 void NetworkEditDlg::updateWidgets() {
   ui.serverList->clear();
   foreach(QVariant s, network["Servers"].toList()) {
-    VarMap server = s.toMap();
+    QVariantMap server = s.toMap();
     QString entry = QString("%1:%2").arg(server["Address"].toString()).arg(server["Port"].toInt());
     QListWidgetItem *item = new QListWidgetItem(entry);
     //if(server["Exclude"].toBool()) item->setCheckState(Qt::Checked);
@@ -273,7 +276,7 @@ void NetworkEditDlg::accept() {
 
 QString NetworkEditDlg::checkValidity() {
   QString r;
-  VarMap nets = Global::data("Networks").toMap();
+  QVariantMap nets = Client::retrieveSessionData("Networks").toMap();
   if(ui.networkName->text() != oldName && nets.keys().contains(ui.networkName->text())) {
     r += tr(" Network name already exists.");
   }
@@ -338,7 +341,7 @@ void NetworkEditDlg::on_editIdentities_clicked() {
   else id = "Default";
   IdentitiesDlg dlg(this, id);
   if(dlg.exec() == QDialog::Accepted) {
-    VarMap identities = Global::data("Identities").toMap();
+    QVariantMap identities = Client::retrieveSessionData("Identities").toMap();
     ui.identityList->clear();
     ui.identityList->addItem(tr("Default Identity"));
     foreach(QString i, identities.keys()) {
@@ -355,7 +358,7 @@ void NetworkEditDlg::on_editIdentities_clicked() {
 
 /***************************************************************************/
 
-ServerEditDlg::ServerEditDlg(QWidget *parent, VarMap server) {
+ServerEditDlg::ServerEditDlg(QWidget *parent, QVariantMap server) : QDialog(parent) {
   ui.setupUi(this);
 
   if(!server.isEmpty()) {
@@ -372,8 +375,8 @@ void ServerEditDlg::on_serverAddress_textChanged() {
   ui.buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!ui.serverAddress->text().isEmpty());
 }
 
-VarMap ServerEditDlg::getServer() {
-  VarMap s;
+QVariantMap ServerEditDlg::getServer() {
+  QVariantMap s;
   s["Address"] = ui.serverAddress->text();
   s["Port"] = ui.serverPort->text();
   return s;