X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fclient%2Fcoreaccountmodel.cpp;h=1ab159c89c22e6365b6f98c5447e2decc079e794;hb=b099603e2e1297ec41a354dc949729e4f77d7bbd;hp=1734c78894e91b2f46b597a6418999e14b915333;hpb=0f87a72d470196f5781053927d9b91e52cc363f2;p=quassel.git diff --git a/src/client/coreaccountmodel.cpp b/src/client/coreaccountmodel.cpp index 1734c788..1ab159c8 100644 --- a/src/client/coreaccountmodel.cpp +++ b/src/client/coreaccountmodel.cpp @@ -42,6 +42,7 @@ void CoreAccountModel::update(const CoreAccountModel *other) { beginInsertRows(QModelIndex(), 0, other->_accounts.count() -1); _internalAccount = other->internalAccount(); _accounts = other->_accounts; + _removedAccounts = other->_removedAccounts; endInsertRows(); } @@ -65,7 +66,10 @@ void CoreAccountModel::load() { void CoreAccountModel::save() { CoreAccountSettings s; - s.clearAccounts(); + foreach(AccountId id, _removedAccounts) { + s.removeAccount(id); + } + _removedAccounts.clear(); foreach(const CoreAccount &acc, accounts()) { QVariantMap map = acc.toVariantMap(false); // TODO Hook into kwallet/password saving stuff s.storeAccountData(acc.accountId(), map); @@ -141,7 +145,7 @@ AccountId CoreAccountModel::createOrUpdateAccount(const CoreAccount &newAcc) { AccountId newId = 0; const QList &ids = accountIds(); for(int i = 1; ; i++) { - if(!ids.contains(i)) { + if(!_removedAccounts.contains(i) && !ids.contains(i)) { newId = i; break; } @@ -200,6 +204,7 @@ CoreAccount CoreAccountModel::takeAccount(AccountId accId) { void CoreAccountModel::removeAccount(AccountId accId) { takeAccount(accId); + _removedAccounts.insert(accId); } QModelIndex CoreAccountModel::accountIndex(AccountId accId) const {