+
+
+void CoreSession::initScriptEngine() {
+ signalProxy()->attachSlot(SIGNAL(scriptRequest(QString)), this, SLOT(scriptRequest(QString)));
+ signalProxy()->attachSignal(this, SIGNAL(scriptResult(QString)));
+
+ QScriptValue storage_ = scriptEngine->newQObject(storage);
+ scriptEngine->globalObject().setProperty("storage", storage_);
+}
+
+void CoreSession::scriptRequest(QString script) {
+ emit scriptResult(scriptEngine->evaluate(script).toString());
+}
+
+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();
+ }
+}
+