* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
+#define SPUTDEV
+
#include "coresession.h"
#include "server.h"
CoreUserSettings s(user);
sessionData = s.sessionData();
-/*
- CoreSettings cs;
- foreach(QString id, cs.localChildKeys(QString("Identities/%1").arg(user))) {
- Identity *i = new Identity(cs.localValue(QString("Identities/%1/%2").arg(user).arg(id)).value<Identity>(), this);
- if(i->id() < 1) {
- qDebug() << QString("Invalid identity!");
+#ifdef SPUTDEV
+ foreach(IdentityId id, s.identityIds()) {
+ Identity *i = new Identity(s.identity(id), this);
+ if(!i->isValid()) {
+ qWarning() << QString("Invalid identity! Removing...");
+ s.removeIdentity(id);
+ delete i;
continue;
}
if(_identities.contains(i->id())) {
- qDebug() << "Duplicate identity, ignoring!";
+ qWarning() << "Duplicate identity, ignoring!";
+ delete i;
continue;
}
- qDebug() << "loaded identity" << id;
_identities[i->id()] = i;
}
- s.endGroup();
- mutex.unlock();
if(!_identities.count()) {
Identity i(1);
i.setToDefaults();
- //_identities[i->id()] = i;
- createOrUpdateIdentity(i);
+ i.setIdentityName(tr("Default Identity"));
+ createIdentity(i);
}
- */
+#endif
p->attachSlot(SIGNAL(requestNetworkStates()), this, SLOT(serverStateRequested()));
p->attachSlot(SIGNAL(requestConnect(QString)), this, SLOT(connectToNetwork(QString)));
p->attachSignal(this, SIGNAL(identityCreated(const Identity &)));
p->attachSignal(this, SIGNAL(identityRemoved(IdentityId)));
- p->attachSlot(SIGNAL(createIdentity(const Identity &)), this, SLOT(createOrUpdateIdentity(const Identity &)));
- p->attachSlot(SIGNAL(updateIdentity(const Identity &)), this, SLOT(createOrUpdateIdentity(const Identity &)));
+ p->attachSlot(SIGNAL(createIdentity(const Identity &)), this, SLOT(createIdentity(const Identity &)));
+ p->attachSlot(SIGNAL(updateIdentity(const Identity &)), this, SLOT(updateIdentity(const Identity &)));
p->attachSlot(SIGNAL(removeIdentity(IdentityId)), this, SLOT(removeIdentity(IdentityId)));
initScriptEngine();
void CoreSession::scriptRequest(QString script) {
emit scriptResult(scriptEngine->evaluate(script).toString());
}
+#include <QDebug>
+void CoreSession::createIdentity(const Identity &id) {
+ // find free ID
+ int i;
+ for(i = 1; i <= _identities.count(); i++) {
+ if(!_identities.keys().contains(i)) break;
+ }
+ //qDebug() << "found free id" << i;
+ Identity *newId = new Identity(id, this);
+ newId->setId(i);
+ _identities[i] = newId;
+ signalProxy()->synchronize(newId);
+ CoreUserSettings s(user);
+ s.storeIdentity(*newId);
+ emit identityCreated(*newId);
+}
-void CoreSession::createOrUpdateIdentity(const Identity &id) {
+void CoreSession::updateIdentity(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);
+ qWarning() << "Update request for unknown identity received!";
+ return;
}
-/*
- CoreSettings s;
- s.beginGroup(QString("Identities/%1").arg(user));
- s.setValue(QString::number(id.id()), QVariant::fromValue<Identity>(*_identities[id.id()]));
- s.endGroup();*/
+ _identities[id.id()]->update(id);
+
+ CoreUserSettings s(user);
+ s.storeIdentity(id);
}
void CoreSession::removeIdentity(IdentityId id) {
Identity *i = _identities.take(id);
if(i) {
emit identityRemoved(id);
+ CoreUserSettings s(user);
+ s.removeIdentity(id);
i->deleteLater();
}
}