X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fqtui%2Fsettingspages%2Fnetworkssettingspage.cpp;h=8e03ce6204f2bc1202ed35ab345df844973ed08b;hb=c0bbc724cda7acf652d9d2ce80605ebb53c4a2ff;hp=a09a0fee416baca7dac27551e598d26e53285d70;hpb=95bbc1d6fc62cd4e4dbafc513cbea4a274fa81ca;p=quassel.git diff --git a/src/qtui/settingspages/networkssettingspage.cpp b/src/qtui/settingspages/networkssettingspage.cpp index a09a0fee..8e03ce62 100644 --- a/src/qtui/settingspages/networkssettingspage.cpp +++ b/src/qtui/settingspages/networkssettingspage.cpp @@ -32,6 +32,7 @@ NetworksSettingsPage::NetworksSettingsPage(QWidget *parent) : SettingsPage(tr("General"), tr("Networks"), parent) { ui.setupUi(this); + _ignoreWidgetChanges = false; connectedIcon = QIcon(":/22x22/actions/network-connect"); connectingIcon = QIcon(":/22x22/actions/gear"); @@ -145,6 +146,7 @@ bool NetworksSettingsPage::aboutToSave() { } void NetworksSettingsPage::widgetHasChanged() { + if(_ignoreWidgetChanges) return; bool changed = testHasChanged(); if(changed != hasChanged()) setChangedState(changed); } @@ -165,18 +167,25 @@ void NetworksSettingsPage::setWidgetStates() { // network list if(ui.networkList->selectedItems().count()) { NetworkId id = ui.networkList->selectedItems()[0]->data(Qt::UserRole).value(); + const Network *net = 0; + if(id > 0) net = Client::network(id); ui.detailsBox->setEnabled(true); ui.renameNetwork->setEnabled(true); ui.deleteNetwork->setEnabled(true); - ui.connectNow->setEnabled(id > 0 - && (Client::network(id)->connectionState() == Network::Initialized - || Client::network(id)->connectionState() == Network::Disconnected)); - if(Client::network(id) && Client::network(id)->isConnected()) { - ui.connectNow->setIcon(disconnectedIcon); - ui.connectNow->setText(tr("Disconnect")); + ui.connectNow->setEnabled(net); + // && (Client::network(id)->connectionState() == Network::Initialized + // || Client::network(id)->connectionState() == Network::Disconnected)); + if(net) { + if(net->connectionState() == Network::Disconnected) { + ui.connectNow->setIcon(connectedIcon); + ui.connectNow->setText(tr("Connect")); + } else { + ui.connectNow->setIcon(disconnectedIcon); + ui.connectNow->setText(tr("Disconnect")); + } } else { - ui.connectNow->setIcon(connectedIcon); - ui.connectNow->setText(tr("Connect")); + ui.connectNow->setIcon(QIcon()); + ui.connectNow->setText(tr("Apply first!")); } } else { ui.renameNetwork->setEnabled(false); @@ -218,7 +227,10 @@ void NetworksSettingsPage::setItemState(NetworkId id, QListWidgetItem *item) { foreach(QListWidgetItem *i, items) { NetworkId oldid = i->data(Qt::UserRole).value(); if(oldid > 0) continue; // only locally created nets should be replaced - if(oldid == currentId) select = true; + if(oldid == currentId) { + select = true; + currentId = 0; + } int row = ui.networkList->row(i); if(row >= 0) { qDebug() << "ABOUT TO REMOVE: id=" << oldid << "from row" << row; @@ -383,6 +395,7 @@ QListWidgetItem *NetworksSettingsPage::insertNetwork(const NetworkInfo &info) { } void NetworksSettingsPage::displayNetwork(NetworkId id) { + _ignoreWidgetChanges = true; if(id != 0) { NetworkInfo info = networkInfos[id]; ui.identityList->setCurrentIndex(ui.identityList->findData(info.identity.toInt())); @@ -415,8 +428,11 @@ void NetworksSettingsPage::displayNetwork(NetworkId id) { ui.identityList->setCurrentIndex(-1); ui.serverList->clear(); ui.performEdit->clear(); + ui.autoIdentifyService->clear(); + ui.autoIdentifyPassword->clear(); setWidgetStates(); } + _ignoreWidgetChanges = false; currentId = id; } @@ -526,7 +542,7 @@ void NetworksSettingsPage::on_connectNow_clicked() { NetworkId id = ui.networkList->selectedItems()[0]->data(Qt::UserRole).value(); const Network *net = Client::network(id); if(!net) return; - if(!net->isConnected()) net->requestConnect(); + if(net->connectionState() == Network::Disconnected) net->requestConnect(); else net->requestDisconnect(); } @@ -631,7 +647,7 @@ ServerEditDlg::ServerEditDlg(const QVariant &_serverData, QWidget *parent) : QDi QVariant ServerEditDlg::serverData() const { QVariantMap _serverData; - _serverData["Host"] = ui.host->text(); + _serverData["Host"] = ui.host->text().trimmed(); _serverData["Port"] = ui.port->value(); _serverData["Password"] = ui.password->text(); _serverData["UseSSL"] = ui.useSSL->isChecked(); @@ -639,7 +655,7 @@ QVariant ServerEditDlg::serverData() const { } void ServerEditDlg::on_host_textChanged() { - ui.buttonBox->button(QDialogButtonBox::Ok)->setDisabled(ui.host->text().isEmpty()); + ui.buttonBox->button(QDialogButtonBox::Ok)->setDisabled(ui.host->text().trimmed().isEmpty()); } /**************************************************************************