Fix compiler warnings
[quassel.git] / src / qtui / settingspages / networkssettingspage.cpp
index 9d54337..0f252e3 100644 (file)
 
 #include "settingspages/identitiessettingspage.h"
 
-NetworksSettingsPage::NetworksSettingsPage(QWidget *parent) : SettingsPage(tr("General"), tr("Networks"), parent) {
+NetworksSettingsPage::NetworksSettingsPage(QWidget *parent)
+: SettingsPage(tr("IRC"), tr("Networks"), parent) {
   ui.setupUi(this);
 
+  // hide SASL options for older cores
+  if(!(Client::coreFeatures() & Quassel::SaslAuthentication))
+    ui.sasl->hide();
+
   // set up icons
   ui.renameNetwork->setIcon(SmallIcon("edit-rename"));
   ui.addNetwork->setIcon(SmallIcon("list-add"));
@@ -77,6 +82,9 @@ NetworksSettingsPage::NetworksSettingsPage(QWidget *parent) : SettingsPage(tr("G
   connect(ui.autoIdentify, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
   connect(ui.autoIdentifyService, SIGNAL(textEdited(const QString &)), this, SLOT(widgetHasChanged()));
   connect(ui.autoIdentifyPassword, SIGNAL(textEdited(const QString &)), this, SLOT(widgetHasChanged()));
+  connect(ui.sasl, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
+  connect(ui.saslAccount, SIGNAL(textEdited(QString)), this, SLOT(widgetHasChanged()));
+  connect(ui.saslPassword, SIGNAL(textEdited(QString)), this, SLOT(widgetHasChanged()));
   connect(ui.useCustomEncodings, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
   connect(ui.sendEncoding, SIGNAL(currentIndexChanged(int)), this, SLOT(widgetHasChanged()));
   connect(ui.recvEncoding, SIGNAL(currentIndexChanged(int)), this, SLOT(widgetHasChanged()));
@@ -184,13 +192,13 @@ bool NetworksSettingsPage::testHasChanged() {
 void NetworksSettingsPage::setWidgetStates() {
   // network list
   if(ui.networkList->selectedItems().count()) {
-    NetworkId id = ui.networkList->selectedItems()[0]->data(Qt::UserRole).value<NetworkId>();
-    const Network *net = 0;
-    if(id > 0) net = Client::network(id);
     ui.detailsBox->setEnabled(true);
     ui.renameNetwork->setEnabled(true);
     ui.deleteNetwork->setEnabled(true);
+
     /* button disabled for now
+    NetworkId id = ui.networkList->selectedItems()[0]->data(Qt::UserRole).value<NetworkId>();
+    const Network *net = id > 0 ? Client::network(id) : 0;
     ui.connectNow->setEnabled(net);
     //    && (Client::network(id)->connectionState() == Network::Initialized
     //    || Client::network(id)->connectionState() == Network::Disconnected));
@@ -280,22 +288,17 @@ void NetworksSettingsPage::clientIdentityAdded(IdentityId id) {
   const Identity * identity = Client::identity(id);
   connect(identity, SIGNAL(updatedRemotely()), this, SLOT(clientIdentityUpdated()));
 
-  if(id == 1) {
-    // default identity is always the first one!
-    ui.identityList->insertItem(0, identity->identityName(), id.toInt());
-  } else {
-    QString name = identity->identityName();
-    for(int j = 0; j < ui.identityList->count(); j++) {
-      if((j>0 || ui.identityList->itemData(0).toInt() != 1) && name.localeAwareCompare(ui.identityList->itemText(j)) < 0) {
-        ui.identityList->insertItem(j, name, id.toInt());
-        widgetHasChanged();
-        return;
-      }
+  QString name = identity->identityName();
+  for(int j = 0; j < ui.identityList->count(); j++) {
+    if((j>0 || ui.identityList->itemData(0).toInt() != 1) && name.localeAwareCompare(ui.identityList->itemText(j)) < 0) {
+      ui.identityList->insertItem(j, name, id.toInt());
+      widgetHasChanged();
+      return;
     }
-    // append
-    ui.identityList->insertItem(ui.identityList->count(), name, id.toInt());
-    widgetHasChanged();
   }
+  // append
+  ui.identityList->insertItem(ui.identityList->count(), name, id.toInt());
+  widgetHasChanged();
 }
 
 void NetworksSettingsPage::clientIdentityUpdated() {
@@ -315,13 +318,13 @@ void NetworksSettingsPage::clientIdentityUpdated() {
 }
 
 void NetworksSettingsPage::clientIdentityRemoved(IdentityId id) {
+  IdentityId defaultId = defaultIdentity();
   if(currentId != 0) saveToNetworkInfo(networkInfos[currentId]);
-  //ui.identityList->removeItem(ui.identityList->findData(id.toInt()));
   foreach(NetworkInfo info, networkInfos.values()) {
-    //qDebug() << info.networkName << info.networkId << info.identity;
     if(info.identity == id) {
-      if(info.networkId == currentId) ui.identityList->setCurrentIndex(0);
-      info.identity = 1; // set to default
+      if(info.networkId == currentId)
+        ui.identityList->setCurrentIndex(0);
+      info.identity = defaultId;
       networkInfos[info.networkId] = info;
       if(info.networkId > 0) Client::updateNetwork(info);
     }
@@ -341,22 +344,7 @@ QListWidgetItem *NetworksSettingsPage::networkItem(NetworkId id) const {
 void NetworksSettingsPage::clientNetworkAdded(NetworkId id) {
   insertNetwork(id);
   //connect(Client::network(id), SIGNAL(updatedRemotely()), this, SLOT(clientNetworkUpdated()));
-  connect(Client::network(id), SIGNAL(identitySet(IdentityId)), this, SLOT(clientNetworkUpdated()));
-  connect(Client::network(id), SIGNAL(networkNameSet(const QString &)), this, SLOT(clientNetworkUpdated()));
-  connect(Client::network(id), SIGNAL(serverListSet(QVariantList)), this, SLOT(clientNetworkUpdated()));
-  connect(Client::network(id), SIGNAL(useRandomServerSet(bool)), this, SLOT(clientNetworkUpdated()));
-  connect(Client::network(id), SIGNAL(performSet(const QStringList &)), this, SLOT(clientNetworkUpdated()));
-  connect(Client::network(id), SIGNAL(useAutoIdentifySet(bool)), this, SLOT(clientNetworkUpdated()));
-  connect(Client::network(id), SIGNAL(autoIdentifyServiceSet(const QString &)), this, SLOT(clientNetworkUpdated()));
-  connect(Client::network(id), SIGNAL(autoIdentifyPasswordSet(const QString &)), this, SLOT(clientNetworkUpdated()));
-  connect(Client::network(id), SIGNAL(useAutoReconnectSet(bool)), this, SLOT(clientNetworkUpdated()));
-  connect(Client::network(id), SIGNAL(autoReconnectIntervalSet(quint32)), this, SLOT(clientNetworkUpdated()));
-  connect(Client::network(id), SIGNAL(autoReconnectRetriesSet(quint16)), this, SLOT(clientNetworkUpdated()));
-  connect(Client::network(id), SIGNAL(unlimitedReconnectRetriesSet(bool)), this, SLOT(clientNetworkUpdated()));
-  connect(Client::network(id), SIGNAL(rejoinChannelsSet(bool)), this, SLOT(clientNetworkUpdated()));
-  connect(Client::network(id), SIGNAL(codecForServerSet(const QByteArray &)), this, SLOT(clientNetworkUpdated()));
-  connect(Client::network(id), SIGNAL(codecForEncodingSet(const QByteArray &)), this, SLOT(clientNetworkUpdated()));
-  connect(Client::network(id), SIGNAL(codecForDecodingSet(const QByteArray &)), this, SLOT(clientNetworkUpdated()));
+  connect(Client::network(id), SIGNAL(configChanged()), this, SLOT(clientNetworkUpdated()));
 
   connect(Client::network(id), SIGNAL(connectionStateSet(Network::ConnectionState)), this, SLOT(networkConnectionStateChanged(Network::ConnectionState)));
   connect(Client::network(id), SIGNAL(connectionError(const QString &)), this, SLOT(networkConnectionError(const QString &)));
@@ -448,6 +436,9 @@ void NetworksSettingsPage::displayNetwork(NetworkId id) {
     ui.autoIdentify->setChecked(info.useAutoIdentify);
     ui.autoIdentifyService->setText(info.autoIdentifyService);
     ui.autoIdentifyPassword->setText(info.autoIdentifyPassword);
+    ui.sasl->setChecked(info.useSasl);
+    ui.saslAccount->setText(info.saslAccount);
+    ui.saslPassword->setText(info.saslPassword);
     if(info.codecForEncoding.isEmpty()) {
       ui.sendEncoding->setCurrentIndex(ui.sendEncoding->findText(Network::defaultCodecForEncoding()));
       ui.recvEncoding->setCurrentIndex(ui.recvEncoding->findText(Network::defaultCodecForDecoding()));
@@ -471,6 +462,8 @@ void NetworksSettingsPage::displayNetwork(NetworkId id) {
     ui.performEdit->clear();
     ui.autoIdentifyService->clear();
     ui.autoIdentifyPassword->clear();
+    ui.saslAccount->clear();
+    ui.saslPassword->clear();
     setWidgetStates();
   }
   _ignoreWidgetChanges = false;
@@ -484,6 +477,9 @@ void NetworksSettingsPage::saveToNetworkInfo(NetworkInfo &info) {
   info.useAutoIdentify = ui.autoIdentify->isChecked();
   info.autoIdentifyService = ui.autoIdentifyService->text();
   info.autoIdentifyPassword = ui.autoIdentifyPassword->text();
+  info.useSasl = ui.sasl->isChecked();
+  info.saslAccount = ui.saslAccount->text();
+  info.saslPassword = ui.saslPassword->text();
   if(!ui.useCustomEncodings->isChecked()) {
     info.codecForEncoding.clear();
     info.codecForDecoding.clear();
@@ -532,6 +528,7 @@ void NetworksSettingsPage::on_addNetwork_clicked() {
     }
     id = -id.toInt();
     info.networkId = id;
+    info.identity = defaultIdentity();
     networkInfos[id] = info;
     QListWidgetItem *item = insertNetwork(info);
     ui.networkList->setCurrentItem(item);
@@ -642,6 +639,16 @@ void NetworksSettingsPage::on_editIdentities_clicked() {
   dlg.exec();
 }
 
+IdentityId NetworksSettingsPage::defaultIdentity() const {
+  IdentityId defaultId = 0;
+  QList<IdentityId> ids = Client::identityIds();
+  foreach(IdentityId id, ids) {
+    if(defaultId == 0 || id < defaultId)
+      defaultId = id;
+  }
+  return defaultId;
+}
+
 /**************************************************************************
 * NetworkAddDlg
 *************************************************************************/