X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fcoresession.cpp;h=1d0d5c5f6e2298b17959eba7833880189f6ee194;hp=508e2b99e519271f03c82536837681d15a995e5a;hb=52f0d47d0cb1932c9e86ebb75cdd4dd0d625dd6f;hpb=9d54503555534a2c554f09a33df6afa33d6308ec diff --git a/src/core/coresession.cpp b/src/core/coresession.cpp index 508e2b99..1d0d5c5f 100644 --- a/src/core/coresession.cpp +++ b/src/core/coresession.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2014 by the Quassel Project * + * Copyright (C) 2005-2015 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -44,10 +44,10 @@ #include "ircuser.h" #include "logger.h" #include "messageevent.h" +#include "remotepeer.h" #include "storage.h" #include "util.h" -#include "protocols/legacy/legacypeer.h" class ProcessMessagesEvent : public QEvent { @@ -100,6 +100,9 @@ CoreSession::CoreSession(UserId uid, bool restoreState, QObject *parent) p->attachSlot(SIGNAL(createNetwork(const NetworkInfo &, const QStringList &)), this, SLOT(createNetwork(const NetworkInfo &, const QStringList &))); p->attachSlot(SIGNAL(removeNetwork(NetworkId)), this, SLOT(removeNetwork(NetworkId))); + p->attachSlot(SIGNAL(changePassword(PeerPtr,QString,QString,QString)), this, SLOT(changePassword(PeerPtr,QString,QString,QString))); + p->attachSignal(this, SIGNAL(passwordChanged(PeerPtr,bool))); + loadSettings(); initScriptEngine(); @@ -172,7 +175,7 @@ void CoreSession::loadSettings() networkIter = networkInfos.erase(networkIter); } else { - networkIter++; + ++networkIter; } } s.removeIdentity(id); @@ -321,8 +324,8 @@ void CoreSession::processMessages() bufferInfo = Core::bufferInfo(user(), rawMsg.networkId, BufferInfo::StatusBuffer, ""); } Message msg(bufferInfo, rawMsg.type, rawMsg.text, rawMsg.sender, rawMsg.flags); - Core::storeMessage(msg); - emit displayMsg(msg); + if(Core::storeMessage(msg)) + emit displayMsg(msg); } else { QHash > bufferInfoCache; @@ -364,10 +367,11 @@ void CoreSession::processMessages() messages << msg; } - Core::storeMessages(messages); - // FIXME: extend protocol to a displayMessages(MessageList) - for (int i = 0; i < messages.count(); i++) { - emit displayMsg(messages[i]); + if(Core::storeMessages(messages)) { + // FIXME: extend protocol to a displayMessages(MessageList) + for (int i = 0; i < messages.count(); i++) { + emit displayMsg(messages[i]); + } } } _processMessages = false; @@ -544,7 +548,7 @@ void CoreSession::destroyNetwork(NetworkId id) messageIter = _messageQueue.erase(messageIter); } else { - messageIter++; + ++messageIter; } } // remove buffers from syncer @@ -574,7 +578,7 @@ void CoreSession::clientsConnected() IrcUser *me = 0; while (netIter != _networks.end()) { net = *netIter; - netIter++; + ++netIter; if (!net->isConnected()) continue; @@ -601,7 +605,7 @@ void CoreSession::clientsDisconnected() QString awayReason; while (netIter != _networks.end()) { net = *netIter; - netIter++; + ++netIter; if (!net->isConnected()) continue; @@ -629,7 +633,7 @@ void CoreSession::globalAway(const QString &msg) CoreNetwork *net = 0; while (netIter != _networks.end()) { net = *netIter; - netIter++; + ++netIter; if (!net->isConnected()) continue; @@ -637,3 +641,13 @@ void CoreSession::globalAway(const QString &msg) net->userInputHandler()->issueAway(msg, false /* no force away */); } } + +void CoreSession::changePassword(PeerPtr peer, const QString &userName, const QString &oldPassword, const QString &newPassword) +{ + bool success = false; + UserId uid = Core::validateUser(userName, oldPassword); + if (uid.isValid() && uid == user()) + success = Core::changeUserPassword(uid, newPassword); + + emit passwordChanged(peer, success); +}