X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fclient%2Fclientsyncer.cpp;h=0c6993b87e239e4a8d8c014523d655431bbdfe42;hb=9fcd3d063228a779afae82f015a9067186c3b742;hp=a8e08ef2c22b2343153b474c2a31e219474ae2f2;hpb=c6fc5ae878a4f92b658c3da2861bcc7da9c2594f;p=quassel.git diff --git a/src/client/clientsyncer.cpp b/src/client/clientsyncer.cpp index a8e08ef2..0c6993b8 100644 --- a/src/client/clientsyncer.cpp +++ b/src/client/clientsyncer.cpp @@ -167,9 +167,35 @@ void ClientSyncer::coreSocketConnected() { SignalProxy::writeDataToDevice(socket, clientInit); } -void ClientSyncer::useInternalCore(AccountId internalAccountId) { +void ClientSyncer::useInternalCore() { + AccountId internalAccountId; + + CoreAccountSettings accountSettings; + QList knownAccounts = accountSettings.knownAccounts(); + foreach(AccountId id, knownAccounts) { + if(!id.isValid()) + continue; + QVariantMap data = accountSettings.retrieveAccountData(id); + if(data.contains("InternalAccount") && data["InternalAccount"].toBool()) { + internalAccountId = id; + break; + } + } + + if(!internalAccountId.isValid()) { + for(AccountId i = 1;; i++) { + if(!knownAccounts.contains(i)) { + internalAccountId = i; + break; + } + } + QVariantMap data; + data["InternalAccount"] = true; + accountSettings.storeAccountData(internalAccountId, data); + } + coreConnectionInfo["AccountId"] = QVariant::fromValue(internalAccountId); - emit startInternalCore(); + emit startInternalCore(this); emit connectToInternalCore(Client::instance()->signalProxy()); }