#include "corebuffersyncer.h"
#include "corebacklogmanager.h"
#include "corebufferviewmanager.h"
+#include "coredccconfig.h"
#include "coreeventmanager.h"
#include "coreidentity.h"
#include "coreignorelistmanager.h"
_bufferSyncer(new CoreBufferSyncer(this)),
_backlogManager(new CoreBacklogManager(this)),
_bufferViewManager(new CoreBufferViewManager(_signalProxy, this)),
+ _dccConfig(new CoreDccConfig(this)),
_ircListHelper(new CoreIrcListHelper(this)),
_networkConfig(new CoreNetworkConfig("GlobalNetworkConfig", this)),
_coreInfo(this),
p->synchronize(_bufferSyncer);
p->synchronize(&aliasManager());
p->synchronize(_backlogManager);
+ p->synchronize(dccConfig());
p->synchronize(ircListHelper());
p->synchronize(networkConfig());
p->synchronize(&_coreInfo);
Q_ASSERT(!createBuffer);
bufferInfo = Core::bufferInfo(user(), rawMsg.networkId, BufferInfo::StatusBuffer, "");
}
- Message msg(bufferInfo, rawMsg.type, rawMsg.text, rawMsg.sender, rawMsg.flags);
+ Message msg(bufferInfo, rawMsg.type, rawMsg.text, rawMsg.sender,
+ senderPrefixes(rawMsg.sender, bufferInfo), rawMsg.flags);
if(Core::storeMessage(msg))
emit displayMsg(msg);
}
}
bufferInfoCache[rawMsg.networkId][rawMsg.target] = bufferInfo;
}
- Message msg(bufferInfo, rawMsg.type, rawMsg.text, rawMsg.sender, rawMsg.flags);
+ Message msg(bufferInfo, rawMsg.type, rawMsg.text, rawMsg.sender,
+ senderPrefixes(rawMsg.sender, bufferInfo), rawMsg.flags);
messages << msg;
}
// 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, rawMsg.type, rawMsg.text, rawMsg.sender, rawMsg.flags);
+ Message msg(bufferInfo, rawMsg.type, rawMsg.text, rawMsg.sender,
+ senderPrefixes(rawMsg.sender, bufferInfo), rawMsg.flags);
messages << msg;
}
_messageQueue.clear();
}
+QString CoreSession::senderPrefixes(const QString &sender, const BufferInfo &bufferInfo) const
+{
+ CoreNetwork *currentNetwork = network(bufferInfo.networkId());
+ if (!currentNetwork) {
+ return "";
+ }
+
+ if (bufferInfo.type() != BufferInfo::ChannelBuffer) {
+ return "";
+ }
+
+ IrcChannel *currentChannel = currentNetwork->ircChannel(bufferInfo.bufferName());
+ if (!currentChannel) {
+ return "";
+ }
+
+ const QString modes = currentChannel->userModes(nickFromMask(sender).toLower());
+ return currentNetwork->modesToPrefixes(modes);
+}
Protocol::SessionState CoreSession::sessionState() const
{
if (!identity->detachAwayReason().isEmpty())
awayReason = identity->detachAwayReason();
net->setAutoAwayActive(true);
+ // Allow handleAway() to format the current date/time in the string.
net->userInputHandler()->handleAway(BufferInfo(), awayReason);
}
}
}
-void CoreSession::globalAway(const QString &msg)
+void CoreSession::globalAway(const QString &msg, const bool skipFormatting)
{
QHash<NetworkId, CoreNetwork *>::iterator netIter = _networks.begin();
CoreNetwork *net = 0;
if (!net->isConnected())
continue;
- net->userInputHandler()->issueAway(msg, false /* no force away */);
+ net->userInputHandler()->issueAway(msg, false /* no force away */, skipFormatting);
}
}