1
1
/***************************************************************************
2
* Copyright (C) 2005-08 by the Quassel IRC Team *
2
* Copyright (C) 2005-09 by the Quassel Project *
3
3
* devel@quassel-irc.org *
5
5
* This program is free software; you can redistribute it and/or modify *
42
45
ui.editServer->setIcon(SmallIcon("configure"));
43
46
ui.upServer->setIcon(SmallIcon("go-up"));
44
47
ui.downServer->setIcon(SmallIcon("go-down"));
48
ui.editIdentities->setIcon(SmallIcon("configure"));
46
50
_ignoreWidgetChanges = false;
68
72
connect(Client::instance(), SIGNAL(identityRemoved(IdentityId)), this, SLOT(clientIdentityRemoved(IdentityId)));
70
74
connect(ui.identityList, SIGNAL(currentIndexChanged(int)), this, SLOT(widgetHasChanged()));
71
connect(ui.randomServer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
75
//connect(ui.randomServer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
72
76
connect(ui.performEdit, SIGNAL(textChanged()), this, SLOT(widgetHasChanged()));
73
77
connect(ui.autoIdentify, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
74
78
connect(ui.autoIdentifyService, SIGNAL(textEdited(const QString &)), this, SLOT(widgetHasChanged()));
75
79
connect(ui.autoIdentifyPassword, SIGNAL(textEdited(const QString &)), this, SLOT(widgetHasChanged()));
76
connect(ui.useDefaultEncodings, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
80
connect(ui.useCustomEncodings, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
77
81
connect(ui.sendEncoding, SIGNAL(currentIndexChanged(int)), this, SLOT(widgetHasChanged()));
78
82
connect(ui.recvEncoding, SIGNAL(currentIndexChanged(int)), this, SLOT(widgetHasChanged()));
79
83
connect(ui.serverEncoding, SIGNAL(currentIndexChanged(int)), this, SLOT(widgetHasChanged()));
186
190
ui.detailsBox->setEnabled(true);
187
191
ui.renameNetwork->setEnabled(true);
188
192
ui.deleteNetwork->setEnabled(true);
193
/* button disabled for now
189
194
ui.connectNow->setEnabled(net);
190
195
// && (Client::network(id)->connectionState() == Network::Initialized
191
196
// || Client::network(id)->connectionState() == Network::Disconnected));
201
206
ui.connectNow->setIcon(QIcon());
202
207
ui.connectNow->setText(tr("Apply first!"));
205
210
ui.renameNetwork->setEnabled(false);
206
211
ui.deleteNetwork->setEnabled(false);
207
ui.connectNow->setEnabled(false);
212
//ui.connectNow->setEnabled(false);
208
213
ui.detailsBox->setEnabled(false);
210
215
// network details
386
391
void NetworksSettingsPage::networkConnectionStateChanged(Network::ConnectionState state) {
387
393
const Network *net = qobject_cast<const Network *>(sender());
389
396
if(net->networkId() == currentId) {
390
397
ui.connectNow->setEnabled(state == Network::Initialized || state == Network::Disconnected);
392
400
setItemState(net->networkId());
393
401
setWidgetStates();
429
437
ui.identityList->setCurrentIndex(ui.identityList->findData(info.identity.toInt()));
430
438
ui.serverList->clear();
431
439
foreach(Network::Server server, info.serverList) {
432
ui.serverList->addItem(QString("%1:%2").arg(server.host).arg(server.port));
440
QListWidgetItem *item = new QListWidgetItem(QString("%1:%2").arg(server.host).arg(server.port));
442
item->setIcon(SmallIcon("document-encrypt"));
443
ui.serverList->addItem(item);
434
445
//setItemState(id);
435
ui.randomServer->setChecked(info.useRandomServer);
446
//ui.randomServer->setChecked(info.useRandomServer);
436
447
ui.performEdit->setPlainText(info.perform.join("\n"));
437
448
ui.autoIdentify->setChecked(info.useAutoIdentify);
438
449
ui.autoIdentifyService->setText(info.autoIdentifyService);
441
452
ui.sendEncoding->setCurrentIndex(ui.sendEncoding->findText(Network::defaultCodecForEncoding()));
442
453
ui.recvEncoding->setCurrentIndex(ui.recvEncoding->findText(Network::defaultCodecForDecoding()));
443
454
ui.serverEncoding->setCurrentIndex(ui.serverEncoding->findText(Network::defaultCodecForServer()));
444
ui.useDefaultEncodings->setChecked(true);
455
ui.useCustomEncodings->setChecked(false);
446
457
ui.sendEncoding->setCurrentIndex(ui.sendEncoding->findText(info.codecForEncoding));
447
458
ui.recvEncoding->setCurrentIndex(ui.recvEncoding->findText(info.codecForDecoding));
448
459
ui.serverEncoding->setCurrentIndex(ui.serverEncoding->findText(info.codecForServer));
449
ui.useDefaultEncodings->setChecked(false);
460
ui.useCustomEncodings->setChecked(true);
451
462
ui.autoReconnect->setChecked(info.useAutoReconnect);
452
463
ui.reconnectInterval->setValue(info.autoReconnectInterval);
469
480
void NetworksSettingsPage::saveToNetworkInfo(NetworkInfo &info) {
470
481
info.identity = ui.identityList->itemData(ui.identityList->currentIndex()).toInt();
471
info.useRandomServer = ui.randomServer->isChecked();
482
//info.useRandomServer = ui.randomServer->isChecked();
472
483
info.perform = ui.performEdit->toPlainText().split("\n");
473
484
info.useAutoIdentify = ui.autoIdentify->isChecked();
474
485
info.autoIdentifyService = ui.autoIdentifyService->text();
475
486
info.autoIdentifyPassword = ui.autoIdentifyPassword->text();
476
if(ui.useDefaultEncodings->isChecked()) {
487
if(!ui.useCustomEncodings->isChecked()) {
477
488
info.codecForEncoding.clear();
478
489
info.codecForDecoding.clear();
479
490
info.codecForServer.clear();
508
519
void NetworksSettingsPage::on_addNetwork_clicked() {
509
520
QStringList existing;
510
521
for(int i = 0; i < ui.networkList->count(); i++) existing << ui.networkList->item(i)->text();
511
NetworkEditDlg dlg(QString(), existing, this);
522
NetworkAddDlg dlg(existing, this);
512
523
if(dlg.exec() == QDialog::Accepted) {
524
NetworkInfo info = dlg.networkInfo();
525
if(info.networkName.isEmpty())
526
return; // sanity check
514
529
for(id = 1; id <= networkInfos.count(); id++) {
515
530
widgetHasChanged();
516
531
if(!networkInfos.keys().contains(-id.toInt())) break;
518
533
id = -id.toInt();
520
534
info.networkId = id;
521
info.networkName = dlg.networkName();
525
info.useRandomServer = false;
526
info.useAutoReconnect = true;
527
info.autoReconnectInterval = 60;
528
info.autoReconnectRetries = 20;
529
info.unlimitedReconnectRetries = false;
530
info.useAutoIdentify = false;
531
info.autoIdentifyService = "NickServ";
532
info.rejoinChannels = true;
534
535
networkInfos[id] = info;
535
536
QListWidgetItem *item = insertNetwork(info);
536
537
ui.networkList->setCurrentItem(item);
634
637
widgetHasChanged();
640
void NetworksSettingsPage::on_editIdentities_clicked() {
641
SettingsPageDlg dlg(new IdentitiesSettingsPage(this), this);
645
/**************************************************************************
647
*************************************************************************/
649
NetworkAddDlg::NetworkAddDlg(const QStringList &exist, QWidget *parent) : QDialog(parent), existing(exist) {
651
ui.useSSL->setIcon(SmallIcon("document-encrypt"));
653
// read preset networks
654
QStringList networks = Network::presetNetworks();
655
foreach(QString s, existing)
656
networks.removeAll(s);
658
ui.presetList->addItems(networks);
660
ui.useManual->setChecked(true);
661
ui.usePreset->setEnabled(false);
663
connect(ui.networkName, SIGNAL(textChanged(const QString &)), SLOT(setButtonStates()));
664
connect(ui.serverAddress, SIGNAL(textChanged(const QString &)), SLOT(setButtonStates()));
668
NetworkInfo NetworkAddDlg::networkInfo() const {
669
if(ui.useManual->isChecked()) {
671
info.networkName = ui.networkName->text().trimmed();
672
info.serverList << Network::Server(ui.serverAddress->text().trimmed(), ui.port->value(), ui.serverPassword->text(), ui.useSSL->isChecked());
675
return Network::networkInfoFromPreset(ui.presetList->currentText());
678
void NetworkAddDlg::setButtonStates() {
680
if(ui.usePreset->isChecked() && ui.presetList->count())
682
else if(ui.useManual->isChecked()) {
683
ok = !ui.networkName->text().trimmed().isEmpty() && !existing.contains(ui.networkName->text().trimmed())
684
&& !ui.serverAddress->text().isEmpty();
686
ui.buttonBox->button(QDialogButtonBox::Ok)->setEnabled(ok);
637
689
/**************************************************************************
639
691
*************************************************************************/