CoreSession::CoreSession(UserId uid, Storage *_storage) : user(uid), storage(_storage) {
coreProxy = new CoreProxy();
CoreSession::CoreSession(UserId uid, Storage *_storage) : user(uid), storage(_storage) {
coreProxy = new CoreProxy();
connect(coreProxy, SIGNAL(send(CoreSignal, QVariant, QVariant, QVariant)), this, SIGNAL(proxySignal(CoreSignal, QVariant, QVariant, QVariant)));
connect(coreProxy, SIGNAL(requestServerStates()), this, SIGNAL(serverStateRequested()));
connect(coreProxy, SIGNAL(gsRequestConnect(QStringList)), this, SLOT(connectToIrc(QStringList)));
connect(coreProxy, SIGNAL(send(CoreSignal, QVariant, QVariant, QVariant)), this, SIGNAL(proxySignal(CoreSignal, QVariant, QVariant, QVariant)));
connect(coreProxy, SIGNAL(requestServerStates()), this, SIGNAL(serverStateRequested()));
connect(coreProxy, SIGNAL(gsRequestConnect(QStringList)), this, SLOT(connectToIrc(QStringList)));
connect(storage, SIGNAL(bufferIdUpdated(BufferId)), coreProxy, SLOT(csUpdateBufferId(BufferId)));
connect(Global::instance(), SIGNAL(dataUpdatedRemotely(UserId, QString)), this, SLOT(globalDataUpdated(UserId, QString)));
connect(Global::instance(), SIGNAL(dataPutLocally(UserId, QString)), this, SLOT(globalDataUpdated(UserId, QString)));
connect(storage, SIGNAL(bufferIdUpdated(BufferId)), coreProxy, SLOT(csUpdateBufferId(BufferId)));
connect(Global::instance(), SIGNAL(dataUpdatedRemotely(UserId, QString)), this, SLOT(globalDataUpdated(UserId, QString)));
connect(Global::instance(), SIGNAL(dataPutLocally(UserId, QString)), this, SLOT(globalDataUpdated(UserId, QString)));
+ connect(this, SIGNAL(sessionDataChanged(const QString &, const QVariant &)), coreProxy, SLOT(csSessionDataChanged(const QString &, const QVariant &)));
+ connect(coreProxy, SIGNAL(gsSessionDataChanged(const QString &, const QVariant &)), this, SLOT(storeSessionData(const QString &, const QVariant &)));
+void CoreSession::storeSessionData(const QString &key, const QVariant &data) {
+ QSettings s;
+ s.beginGroup(QString("SessionData/%1").arg(user));
+ mutex.lock();
+ sessionData[key] = data;
+ s.setValue(key, data);
+ mutex.unlock();
+ s.endGroup();
+ emit sessionDataChanged(key, data);
+ emit sessionDataChanged(key);
+}
+
+QVariant CoreSession::retrieveSessionData(const QString &key, const QVariant &def) {
+ QVariant data;
+ mutex.lock();
+ if(!sessionData.contains(key)) data = def;
+ else data = sessionData[key];
+ mutex.unlock();
+ return data;
+}
+
void CoreSession::connectToIrc(QStringList networks) {
foreach(QString net, networks) {
if(servers.contains(net)) {
void CoreSession::connectToIrc(QStringList networks) {
foreach(QString net, networks) {
if(servers.contains(net)) {