proxy: Actually fix settings migration logic
[quassel.git] / src / uisupport / uistyle.cpp
index 6c6e999..3b9e079 100644 (file)
@@ -32,6 +32,7 @@ QHash<QString, UiStyle::FormatType> UiStyle::_formatCodes;
 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)
@@ -74,6 +75,7 @@ UiStyle::UiStyle(QObject *parent)
     // in there.
     setUseCustomTimestampFormat(false);
     setTimestampFormatString(" hh:mm:ss");
+    enableSenderPrefixes(false);
     enableSenderBrackets(true);
 
     // BufferView / NickView settings
@@ -224,6 +226,13 @@ void UiStyle::setTimestampFormatString(const QString &format)
     }
 }
 
+void UiStyle::enableSenderPrefixes(bool enabled)
+{
+    if (_showSenderPrefixes != enabled) {
+        _showSenderPrefixes = enabled;
+    }
+}
+
 void UiStyle::enableSenderBrackets(bool enabled)
 {
     if (_showSenderBrackets != enabled) {
@@ -908,15 +917,20 @@ QString UiStyle::StyledMessage::plainSender() const
 
 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:
@@ -950,7 +964,7 @@ QString UiStyle::StyledMessage::decoratedSender() const
     case Message::Invite:
         return "->"; break;
     default:
-        return QString("%1").arg(plainSender());
+        return QString("%1%2").arg(_senderPrefixes, plainSender());
     }
 }
 
@@ -961,7 +975,19 @@ quint8 UiStyle::StyledMessage::senderHash() const
     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) == '_')