X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcore%2Fcoresession.cpp;h=cd75f660c3edb410963764364470fae5051b9a8e;hb=21d8d7f0a79eeeb541664aa80ce481fdbfc41f09;hp=866f85bbfbe43f6accf0dad760ebf73ffc8e11c6;hpb=8699dd758516d0ded076811e8ea656adc95e69d0;p=quassel.git diff --git a/src/core/coresession.cpp b/src/core/coresession.cpp index 866f85bb..cd75f660 100644 --- a/src/core/coresession.cpp +++ b/src/core/coresession.cpp @@ -30,7 +30,7 @@ #include "identity.h" #include "util.h" -#include "sessionsettings.h" +#include "coreusersettings.h" #include @@ -44,42 +44,29 @@ CoreSession::CoreSession(UserId uid, Storage *_storage, QObject *parent) 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(), this); - if(i->id() < 1) { + 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!"); + 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))); @@ -95,8 +82,8 @@ CoreSession::CoreSession(UserId uid, Storage *_storage, QObject *parent) 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(); @@ -142,7 +129,7 @@ void CoreSession::restoreState(const QVariant &previousState) { void CoreSession::storeSessionData(const QString &key, const QVariant &data) { - SessionSettings s(user); + CoreUserSettings s(user); mutex.lock(); s.setSessionValue(key, data); sessionData[key] = data; @@ -310,27 +297,39 @@ void CoreSession::scriptRequest(QString script) { 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(*_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(); } }