+
+void CoreSession::createOrUpdateIdentity(const Identity &id) {
+ if(!_identities.contains(id.id())) {
+ // create new
+ _identities[id.id()] = new Identity(id, this);
+ signalProxy()->synchronize(_identities[id.id()]);
+ emit identityCreated(id.id());
+ } else {
+ // update
+ _identities[id.id()]->update(id);
+ }
+ Q_ASSERT(false); // FIX QSettings first!
+ QSettings s; // FIXME don't use QSettings
+ s.beginGroup(QString("Identities/%1").arg(user));
+ s.setValue(QString::number(id.id()), QVariant::fromValue<Identity>(*_identities[id.id()]));
+ s.endGroup();
+}
+
+void CoreSession::removeIdentity(IdentityId id) {
+ Identity *i = _identities.take(id);
+ if(i) {
+ emit identityRemoved(id);
+ i->deleteLater();
+ }
+}
+