X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fcoreconnectdlg.cpp;h=2e2c09492a34e1f2d8b91ed7e45be01ef0bd77dc;hp=953b8da225391f0dc0e954e87645efd4f009d95d;hb=f824db0e31b54969e0b7fa0b5405b1e9173d482c;hpb=81b7a767c2e8066ca560001c4e69073daaa77272 diff --git a/src/qtui/coreconnectdlg.cpp b/src/qtui/coreconnectdlg.cpp index 953b8da2..2e2c0949 100644 --- a/src/qtui/coreconnectdlg.cpp +++ b/src/qtui/coreconnectdlg.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-08 by the Quassel IRC Team * + * Copyright (C) 2005-09 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -32,7 +32,8 @@ #include "quassel.h" CoreConnectDlg::CoreConnectDlg(bool autoconnect, QWidget *parent) - : QDialog(parent) + : QDialog(parent), + _internalAccountId(0) { ui.setupUi(this); ui.editAccount->setIcon(SmallIcon("document-properties")); @@ -49,8 +50,9 @@ CoreConnectDlg::CoreConnectDlg(bool autoconnect, QWidget *parent) setWindowFlags(Qt::Sheet); clientSyncer = new ClientSyncer(this); - connect(this, SIGNAL(newClientSyncer(ClientSyncer *)), Client::instance(), SIGNAL(newClientSyncer(ClientSyncer *))); - emit newClientSyncer(clientSyncer); // announce the new client syncer via the client. + Client::registerClientSyncer(clientSyncer); +// connect(this, SIGNAL(newClientSyncer(ClientSyncer *)), Client::instance(), SIGNAL(newClientSyncer(ClientSyncer *))); +// emit newClientSyncer(clientSyncer); // announce the new client syncer via the client. wizard = 0; @@ -65,6 +67,10 @@ CoreConnectDlg::CoreConnectDlg(bool autoconnect, QWidget *parent) foreach(AccountId id, s.knownAccounts()) { if(!id.isValid()) continue; QVariantMap data = s.retrieveAccountData(id); + if(data.contains("InternalAccount") && data["InternalAccount"].toBool()) { + _internalAccountId = id; + continue; + } data["AccountId"] = QVariant::fromValue(id); accounts[id] = data; QListWidgetItem *item = new QListWidgetItem(data["AccountName"].toString(), ui.accountList); @@ -150,14 +156,7 @@ void CoreConnectDlg::on_addAccount_clicked() { for(int i = 0; i < ui.accountList->count(); i++) existing << ui.accountList->item(i)->text(); CoreAccountEditDlg dlg(0, QVariantMap(), existing, this); if(dlg.exec() == QDialog::Accepted) { - // find free ID - AccountId id = accounts.count() + 1; - for(AccountId i = 1; i <= accounts.count(); i++) { - if(!accounts.keys().contains(i)) { - id = i; - break; - } - } + AccountId id = findFreeAccountId(); QVariantMap data = dlg.accountData(); data["AccountId"] = QVariant::fromValue(id); accounts[id] = data; @@ -222,7 +221,7 @@ void CoreConnectDlg::on_accountButtonBox_accepted() { void CoreConnectDlg::on_useInternalCore_clicked() { clientSyncer->useInternalCore(); - startSync(); + ui.loginButtonBox->setStandardButtons(QDialogButtonBox::Cancel); } /***************************************************** @@ -420,7 +419,8 @@ void CoreConnectDlg::startSync() { ui.user->setEnabled(true); ui.password->setEnabled(true); ui.rememberPasswd->setEnabled(true); - ui.loginButtonBox->button(QDialogButtonBox::Ok)->setEnabled(true); + if(ui.loginButtonBox->standardButtons() & QDialogButtonBox::Ok) // in mono mode we don't show an Ok Button + ui.loginButtonBox->button(QDialogButtonBox::Ok)->setEnabled(true); } void CoreConnectDlg::coreSessionProgress(quint32 val, quint32 max) { @@ -450,6 +450,13 @@ void CoreConnectDlg::syncFinished() { } } +AccountId CoreConnectDlg::findFreeAccountId() { + for(AccountId i = 1;; i++) { + if(!accounts.contains(i) && i != _internalAccountId) + return i; + } +} + /***************************************************************************************** * CoreAccountEditDlg *****************************************************************************************/ @@ -461,6 +468,8 @@ CoreAccountEditDlg::CoreAccountEditDlg(AccountId id, const QVariantMap &acct, co existing = _existing; if(id.isValid()) { + account = acct; + existing.removeAll(acct["AccountName"].toString()); ui.host->setText(acct["Host"].toString()); ui.port->setValue(acct["Port"].toUInt());