/***************************************************************************
- * Copyright (C) 2005-07 by the Quassel IRC Team *
+ * Copyright (C) 2005-08 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#include "identity.h"
#include "util.h"
-#include "sessionsettings.h"
+#include "coreusersettings.h"
#include <QtScript>
SignalProxy *p = signalProxy();
- SessionSettings s(user);
- sessionData = s.sessionData(); qDebug() << sessionData;
- /*
- QSettings s; // FIXME don't use QSettings anymore
- mutex.lock();
- s.beginGroup(QString("SessionData/%1").arg(user));
- foreach(QString key, s.allKeys()) { qDebug() << key;
- sessionData[key] = s.value(key);
- }
- s.endGroup();
- mutex.unlock(); // FIXME remove
- */
- /* temporarily disabled
- s.beginGroup(QString("Identities/%1").arg(user));
- foreach(QString id, s.childKeys()) {
- Identity *i = new Identity(s.value(id).value<Identity>(), this);
- if(i->id() < 1) {
- qDebug() << QString("Invalid identity!");
+ CoreUserSettings s(user);
+ sessionData = s.sessionData();
+#ifdef SPUTDEV
+ foreach(IdentityId id, s.identityIds()) {
+ Identity *i = new Identity(s.identity(id), this);
+ if(!i->isValid()) {
+ qDebug() << QString("Invalid identity! Removing...");
+ s.removeIdentity(id);
+ delete i;
continue;
}
if(_identities.contains(i->id())) {
qDebug() << "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);
+ 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::storeSessionData(const QString &key, const QVariant &data) {
- SessionSettings s(user);
+ CoreUserSettings s(user);
mutex.lock();
s.setSessionValue(key, data);
sessionData[key] = data;
emit scriptResult(scriptEngine->evaluate(script).toString());
}
-void CoreSession::createOrUpdateIdentity(const Identity &id) {
+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(i);
+}
+
+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;
}
- 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();
+ _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();
}
}