X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fcoreconnectdlg.cpp;h=dab92a27d534f0f25a11962bd7d5479b3da311bf;hp=954be2d194530161f080a8412e721e8aefb9dbb4;hb=4649188af29520951aa7485c577aa7ab912bef1a;hpb=d04fd0d39884932c5b9656ad3a4a6e13c204b529 diff --git a/src/qtui/coreconnectdlg.cpp b/src/qtui/coreconnectdlg.cpp index 954be2d1..dab92a27 100644 --- a/src/qtui/coreconnectdlg.cpp +++ b/src/qtui/coreconnectdlg.cpp @@ -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")); @@ -65,6 +66,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 +155,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; @@ -221,7 +219,14 @@ void CoreConnectDlg::on_accountButtonBox_accepted() { } void CoreConnectDlg::on_useInternalCore_clicked() { - clientSyncer->useInternalCore(); + if(!_internalAccountId.isValid()) { + _internalAccountId = findFreeAccountId(); + QVariantMap data; + data["InternalAccount"] = true; + CoreAccountSettings accountSettings; + accountSettings.storeAccountData(_internalAccountId, data); + } + clientSyncer->useInternalCore(_internalAccountId); startSync(); } @@ -450,6 +455,13 @@ void CoreConnectDlg::syncFinished() { } } +AccountId CoreConnectDlg::findFreeAccountId() { + for(AccountId i = 1;; i++) { + if(!accounts.contains(i) && i != _internalAccountId) + return i; + } +} + /***************************************************************************************** * CoreAccountEditDlg *****************************************************************************************/