Workaround #151 (deleting and readding a network with the same name)
[quassel.git] / src / qtui / settingspages / networkssettingspage.cpp
index 8cd8715..7c06ed4 100644 (file)
@@ -42,9 +42,11 @@ NetworksSettingsPage::NetworksSettingsPage(QWidget *parent) : SettingsPage(tr("G
     QByteArray codec = QTextCodec::codecForMib(mib)->name();
     ui.sendEncoding->addItem(codec);
     ui.recvEncoding->addItem(codec);
+    ui.serverEncoding->addItem(codec);
   }
   ui.sendEncoding->model()->sort(0);
   ui.recvEncoding->model()->sort(0);
+  ui.serverEncoding->model()->sort(0);
   currentId = 0;
   setEnabled(Client::isConnected());  // need a core connection!
   setWidgetStates();
@@ -63,6 +65,7 @@ NetworksSettingsPage::NetworksSettingsPage(QWidget *parent) : SettingsPage(tr("G
   connect(ui.useDefaultEncodings, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
   connect(ui.sendEncoding, SIGNAL(currentIndexChanged(int)), this, SLOT(widgetHasChanged()));
   connect(ui.recvEncoding, SIGNAL(currentIndexChanged(int)), this, SLOT(widgetHasChanged()));
+  connect(ui.serverEncoding, SIGNAL(currentIndexChanged(int)), this, SLOT(widgetHasChanged()));
   connect(ui.autoReconnect, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
   connect(ui.reconnectInterval, SIGNAL(valueChanged(int)), this, SLOT(widgetHasChanged()));
   connect(ui.reconnectRetries, SIGNAL(valueChanged(int)), this, SLOT(widgetHasChanged()));
@@ -376,6 +379,7 @@ void NetworksSettingsPage::networkConnectionStateChanged(Network::ConnectionStat
     ui.connectNow->setEnabled(state == Network::Initialized || state == Network::Disconnected);
   }
   setItemState(net->networkId());
+  setWidgetStates();
 }
 
 void NetworksSettingsPage::networkConnectionError(const QString &) {
@@ -425,10 +429,12 @@ void NetworksSettingsPage::displayNetwork(NetworkId id) {
     if(info.codecForEncoding.isEmpty()) {
       ui.sendEncoding->setCurrentIndex(ui.sendEncoding->findText(Network::defaultCodecForEncoding()));
       ui.recvEncoding->setCurrentIndex(ui.recvEncoding->findText(Network::defaultCodecForDecoding()));
+      ui.serverEncoding->setCurrentIndex(ui.serverEncoding->findText(Network::defaultCodecForServer()));
       ui.useDefaultEncodings->setChecked(true);
     } else {
       ui.sendEncoding->setCurrentIndex(ui.sendEncoding->findText(info.codecForEncoding));
       ui.recvEncoding->setCurrentIndex(ui.recvEncoding->findText(info.codecForDecoding));
+      ui.serverEncoding->setCurrentIndex(ui.serverEncoding->findText(info.codecForServer));
       ui.useDefaultEncodings->setChecked(false);
     }
     ui.autoReconnect->setChecked(info.useAutoReconnect);
@@ -459,9 +465,11 @@ void NetworksSettingsPage::saveToNetworkInfo(NetworkInfo &info) {
   if(ui.useDefaultEncodings->isChecked()) {
     info.codecForEncoding.clear();
     info.codecForDecoding.clear();
+    info.codecForServer.clear();
   } else {
     info.codecForEncoding = ui.sendEncoding->currentText().toLatin1();
     info.codecForDecoding = ui.recvEncoding->currentText().toLatin1();
+    info.codecForServer = ui.serverEncoding->currentText().toLatin1();
   }
   info.useAutoReconnect = ui.autoReconnect->isChecked();
   info.autoReconnectInterval = ui.reconnectInterval->value();
@@ -688,6 +696,9 @@ SaveNetworksDlg::SaveNetworksDlg(const QList<NetworkInfo> &toCreate, const QList
     connect(Client::instance(), SIGNAL(networkCreated(NetworkId)), this, SLOT(clientEvent()));
     connect(Client::instance(), SIGNAL(networkRemoved(NetworkId)), this, SLOT(clientEvent()));
 
+    foreach(NetworkId id, toRemove) {
+      Client::removeNetwork(id);
+    }
     foreach(NetworkInfo info, toCreate) {
       Client::createNetwork(info);
     }
@@ -702,9 +713,6 @@ SaveNetworksDlg::SaveNetworksDlg(const QList<NetworkInfo> &toCreate, const QList
       connect(net, SIGNAL(updatedRemotely()), this, SLOT(clientEvent()));
       Client::updateNetwork(info);
     }
-    foreach(NetworkId id, toRemove) {
-      Client::removeNetwork(id);
-    }
   } else {
     qWarning() << "Sync dialog called without stuff to change!";
     accept();