bool UiStyle::_useCustomTimestampFormat; /// If true, use the custom timestamp format
QString UiStyle::_timestampFormatString; /// Timestamp format
QString UiStyle::_systemTimestampFormatString; /// Cached copy of system locale timestamp format
+bool UiStyle::_showSenderPrefixes; /// If true, show prefixmodes before sender names
bool UiStyle::_showSenderBrackets; /// If true, show brackets around sender names
UiStyle::UiStyle(QObject *parent)
// in there.
setUseCustomTimestampFormat(false);
setTimestampFormatString(" hh:mm:ss");
+ enableSenderPrefixes(false);
enableSenderBrackets(true);
// BufferView / NickView settings
}
}
+void UiStyle::enableSenderPrefixes(bool enabled)
+{
+ if (_showSenderPrefixes != enabled) {
+ _showSenderPrefixes = enabled;
+ }
+}
+
void UiStyle::enableSenderBrackets(bool enabled)
{
if (_showSenderBrackets != enabled) {
QString UiStyle::StyledMessage::decoratedSender() const
{
+ QString _senderPrefixes;
+ if (_showSenderPrefixes) {
+ _senderPrefixes = senderPrefixes();
+ }
+
switch (type()) {
case Message::Plain:
if (_showSenderBrackets)
- return QString("<%1>").arg(plainSender());
+ return QString("<%1%2>").arg(_senderPrefixes, plainSender());
else
- return QString("%1").arg(plainSender());
+ return QString("%1%2").arg(_senderPrefixes, plainSender());
break;
case Message::Notice:
- return QString("[%1]").arg(plainSender()); break;
+ return QString("[%1%2]").arg(_senderPrefixes, plainSender()); break;
case Message::Action:
return "-*-"; break;
case Message::Nick:
case Message::Invite:
return "->"; break;
default:
- return QString("%1").arg(plainSender());
+ return QString("%1%2").arg(_senderPrefixes, plainSender());
}
}
if (_senderHash != 0xff)
return _senderHash;
- QString nick = nickFromMask(sender()).toLower();
+ QString nick;
+
+ // HACK: Until multiple nicknames with different colors can be solved in the theming engine,
+ // for /nick change notifications, use the color of the new nickname (if possible), not the old
+ // nickname.
+ if (type() == Message::Nick) {
+ // New nickname is given as contents. Change to that.
+ nick = stripFormatCodes(contents()).toLower();
+ } else {
+ // Just use the sender directly
+ nick = nickFromMask(sender()).toLower();
+ }
+
if (!nick.isEmpty()) {
int chopCount = 0;
while (chopCount < nick.size() && nick.at(nick.count() - 1 - chopCount) == '_')