X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fcoreaccountmodel.cpp;h=a7a2f017333c0d132584c58bab910bda7e663436;hp=bcd69dce1fab158e9e601ea8375b3425bd188418;hb=86bd6b1ffb870e65af6d830a2ea16471c348ed5a;hpb=3bb1d366e9c13f087458bd4e219bac8760b7e38b diff --git a/src/client/coreaccountmodel.cpp b/src/client/coreaccountmodel.cpp index bcd69dce..a7a2f017 100644 --- a/src/client/coreaccountmodel.cpp +++ b/src/client/coreaccountmodel.cpp @@ -39,10 +39,13 @@ CoreAccountModel::CoreAccountModel(const CoreAccountModel *other, QObject *paren void CoreAccountModel::update(const CoreAccountModel *other) { clear(); - beginInsertRows(QModelIndex(), 0, other->_accounts.count() -1); + if (other->_accounts.count() > 0) { + beginInsertRows(QModelIndex(), 0, other->_accounts.count() -1); + _accounts = other->_accounts; + endInsertRows(); + } _internalAccount = other->internalAccount(); - _accounts = other->_accounts; - endInsertRows(); + _removedAccounts = other->_removedAccounts; } void CoreAccountModel::load() { @@ -58,17 +61,19 @@ void CoreAccountModel::load() { // Make sure we have an internal account in monolithic mode CoreAccount intAcc; intAcc.setInternal(true); - insertAccount(intAcc); + intAcc.setAccountName(tr("Internal Core")); + _internalAccount = createOrUpdateAccount(intAcc); } } void CoreAccountModel::save() { CoreAccountSettings s; + foreach(AccountId id, _removedAccounts) { + s.removeAccount(id); + } + _removedAccounts.clear(); foreach(const CoreAccount &acc, accounts()) { - if(acc.isInternal()) - continue; // FIXME don't save internal for now - but make sure to handle this correctly once mono can do remotes! - // we'll have to ensure that autoConnectAccount works with internal as well then - QVariantMap map = acc.toVariantMap(true); // TODO Hook into kwallet/password saving stuff + QVariantMap map = acc.toVariantMap(false); // TODO Hook into kwallet/password saving stuff s.storeAccountData(acc.accountId(), map); } } @@ -142,7 +147,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; } @@ -167,8 +172,6 @@ AccountId CoreAccountModel::createOrUpdateAccount(const CoreAccount &newAcc) { void CoreAccountModel::insertAccount(const CoreAccount &acc) { if(acc.isInternal()) { - if(Quassel::runMode() == Quassel::Monolithic) - return; if(internalAccount().isValid()) { qWarning() << "Trying to insert a second internal account in CoreAccountModel, ignoring"; return; @@ -203,6 +206,7 @@ CoreAccount CoreAccountModel::takeAccount(AccountId accId) { void CoreAccountModel::removeAccount(AccountId accId) { takeAccount(accId); + _removedAccounts.insert(accId); } QModelIndex CoreAccountModel::accountIndex(AccountId accId) const {