X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcore%2Fcoresession.cpp;h=119d73d732e9ba060ee3d4fbcc8bb983151b7944;hb=8efbb2ef22f5f007b5dc6d5b15ecf070ccef08ca;hp=3bc6f3c4523d8631fcd3eb303647162a312b48fa;hpb=cc6e7c08709c4e761e2fd9c2e322751015497003;p=quassel.git diff --git a/src/core/coresession.cpp b/src/core/coresession.cpp index 3bc6f3c4..119d73d7 100644 --- a/src/core/coresession.cpp +++ b/src/core/coresession.cpp @@ -20,6 +20,8 @@ #include "coresession.h" +#include + #include #include "core.h" @@ -113,7 +115,7 @@ CoreSession::CoreSession(UserId uid, bool restoreState, bool strictIdentEnabled, QVariantMap data; data["quasselVersion"] = Quassel::buildInfo().fancyVersionString; data["quasselBuildDate"] = Quassel::buildInfo().commitDate; // "BuildDate" for compatibility - data["startTime"] = Core::instance()->startTime(); + data["startTime"] = Core::startTime(); data["sessionConnectedClients"] = 0; _coreInfo->setCoreData(data); @@ -130,7 +132,7 @@ CoreSession::CoreSession(UserId uid, bool restoreState, bool strictIdentEnabled, eventManager()->registerObject(ctcpParser(), EventManager::LowPriority, "send"); // periodically save our session state - connect(Core::instance()->syncTimer(), &QTimer::timeout, this, &CoreSession::saveSessionState); + connect(Core::syncTimer(), &QTimer::timeout, this, &CoreSession::saveSessionState); p->synchronize(_bufferSyncer); p->synchronize(&aliasManager()); @@ -201,7 +203,7 @@ void CoreSession::loadSettings() // migrate to db QList ids = s.identityIds(); QList networkInfos = Core::networks(user()); - foreach (IdentityId id, ids) { + for (IdentityId id : ids) { CoreIdentity identity(s.identity(id)); IdentityId newId = Core::createIdentity(user(), identity); QList::iterator networkIter = networkInfos.begin(); @@ -219,11 +221,11 @@ void CoreSession::loadSettings() } // end of migration - foreach (CoreIdentity identity, Core::identities(user())) { + for (const CoreIdentity& identity : Core::identities(user())) { createIdentity(identity); } - foreach (NetworkInfo info, Core::networks(user())) { + for (const NetworkInfo& info : Core::networks(user())) { createNetwork(info); } } @@ -239,7 +241,7 @@ void CoreSession::restoreSessionState() { QList nets = Core::connectedNetworks(user()); CoreNetwork* net = nullptr; - foreach (NetworkId id, nets) { + for (NetworkId id : nets) { net = network(id); Q_ASSERT(net); net->connectToIrc(); @@ -300,31 +302,23 @@ void CoreSession::msgFromClient(BufferInfo bufinfo, QString msg) // ALL messages coming pass through these functions before going to the GUI. // So this is the perfect place for storing the backlog and log stuff. -void CoreSession::recvMessageFromServer(NetworkId networkId, - Message::Type type, - BufferInfo::Type bufferType, - const QString& target, - const QString& text_, - const QString& sender, - Message::Flags flags) +void CoreSession::recvMessageFromServer(RawMessage msg) { // U+FDD0 and U+FDD1 are special characters for Qt's text engine, specifically they mark the boundaries of // text frames in a QTextDocument. This might lead to problems in widgets displaying QTextDocuments (such as // KDE's notifications), hence we remove those just to be safe. - QString text = text_; - text.remove(QChar(0xfdd0)).remove(QChar(0xfdd1)); - RawMessage rawMsg(networkId, type, bufferType, target, text, sender, flags); + msg.text.remove(QChar(0xfdd0)).remove(QChar(0xfdd1)); // check for HardStrictness ignore - CoreNetwork* currentNetwork = network(networkId); + CoreNetwork* currentNetwork = network(msg.networkId); QString networkName = currentNetwork ? currentNetwork->networkName() : QString(""); - if (_ignoreListManager.match(rawMsg, networkName) == IgnoreListManager::HardStrictness) + if (_ignoreListManager.match(msg, networkName) == IgnoreListManager::HardStrictness) return; - if (currentNetwork && _highlightRuleManager.match(rawMsg, currentNetwork->myNick(), currentNetwork->identityPtr()->nicks())) - rawMsg.flags |= Message::Flag::Highlight; + if (currentNetwork && _highlightRuleManager.match(msg, currentNetwork->myNick(), currentNetwork->identityPtr()->nicks())) + msg.flags |= Message::Flag::Highlight; - _messageQueue << rawMsg; + _messageQueue << std::move(msg); if (!_processMessages) { _processMessages = true; QCoreApplication::postEvent(this, new ProcessMessagesEvent()); @@ -335,18 +329,21 @@ void CoreSession::recvStatusMsgFromServer(QString msg) { auto* net = qobject_cast(sender()); Q_ASSERT(net); - emit displayStatusMsg(net->networkName(), msg); + emit displayStatusMsg(net->networkName(), std::move(msg)); } void CoreSession::processMessageEvent(MessageEvent* event) { - recvMessageFromServer(event->networkId(), - event->msgType(), - event->bufferType(), - event->target().isNull() ? "" : event->target(), - event->text().isNull() ? "" : event->text(), - event->sender().isNull() ? "" : event->sender(), - event->msgFlags()); + recvMessageFromServer(RawMessage{ + event->timestamp(), + event->networkId(), + event->msgType(), + event->bufferType(), + event->target().isNull() ? "" : event->target(), + event->text().isNull() ? "" : event->text(), + event->sender().isNull() ? "" : event->sender(), + event->msgFlags() + }); } QList CoreSession::buffers() const @@ -373,7 +370,8 @@ void CoreSession::processMessages() Q_ASSERT(!createBuffer); bufferInfo = Core::bufferInfo(user(), rawMsg.networkId, BufferInfo::StatusBuffer, ""); } - Message msg(bufferInfo, + Message msg(rawMsg.timestamp, + bufferInfo, rawMsg.type, rawMsg.text, rawMsg.sender, @@ -404,7 +402,8 @@ void CoreSession::processMessages() } bufferInfoCache[rawMsg.networkId][rawMsg.target] = bufferInfo; } - Message msg(bufferInfo, + Message msg(rawMsg.timestamp, + bufferInfo, rawMsg.type, rawMsg.text, rawMsg.sender, @@ -427,7 +426,8 @@ void CoreSession::processMessages() // add the StatusBuffer to the Cache in case there are more Messages for the original target bufferInfoCache[rawMsg.networkId][rawMsg.target] = bufferInfo; } - Message msg(bufferInfo, + Message msg(rawMsg.timestamp, + bufferInfo, rawMsg.type, rawMsg.text, rawMsg.sender, @@ -502,12 +502,15 @@ Protocol::SessionState CoreSession::sessionState() const QVariantList networkIds; QVariantList identities; - foreach (const BufferInfo& id, buffers()) + for (const BufferInfo& id : buffers()) { bufferInfos << QVariant::fromValue(id); - foreach (const NetworkId& id, _networks.keys()) + } + for (const NetworkId& id : _networks.keys()) { networkIds << QVariant::fromValue(id); - foreach (const Identity* i, _identities.values()) + } + for (const Identity* i : _identities.values()) { identities << QVariant::fromValue(*i); + } return Protocol::SessionState(identities, bufferInfos, networkIds); } @@ -609,7 +612,7 @@ void CoreSession::createNetwork(const NetworkInfo& info_, const QStringList& per if (!_networks.contains(id)) { // create persistent chans QRegExp rx(R"(\s*(\S+)(?:\s*(\S+))?\s*)"); - foreach (QString channel, persistentChans) { + for (const QString& channel : persistentChans) { if (!rx.exactMatch(channel)) { qWarning() << QString("Invalid persistent channel declaration: %1").arg(channel); continue; @@ -672,7 +675,7 @@ void CoreSession::destroyNetwork(NetworkId id) } } // remove buffers from syncer - foreach (BufferId bufferId, removedBuffers) { + for (BufferId bufferId : removedBuffers) { _bufferSyncer->removeBuffer(bufferId); } emit networkRemoved(id);