Fixes #572 - changes to nick coloring
authorMarcus Eggenberger <egs@quassel-irc.org>
Tue, 9 Jun 2009 20:28:54 +0000 (22:28 +0200)
committerMarcus Eggenberger <egs@quassel-irc.org>
Tue, 9 Jun 2009 20:28:54 +0000 (22:28 +0200)
Nick color is now determined case insensitive, based only on the nick,
and ignored trailing underscores.

src/uisupport/uistyle.cpp

index f6ce8a6..3584afc 100644 (file)
@@ -410,14 +410,23 @@ QString UiStyle::StyledMessage::decoratedSender() const {
 }
 
 UiStyle::FormatType UiStyle::StyledMessage::senderFormat() const {
-  quint16 hash;
   switch(type()) {
     case Message::Plain:
       // To produce random like but stable nick colorings some sort of hashing should work best.
       // In this case we just use the qt function qChecksum which produces a
       // CRC16 hash. This should be fast and 16 bits are more than enough.
-      hash = qChecksum(sender().toAscii().data(), sender().toAscii().size());
-      return (UiStyle::FormatType)((((hash % 12) + 1) << 24) + 0x200); // FIXME: amount of sender colors hardwired
+      {
+        QString nick = nickFromMask(sender()).toLower();
+        if(!nick.isEmpty()) {
+          int chopCount = 0;
+          while(nick[nick.count() - 1 - chopCount] == '_') {
+            chopCount++;
+          }
+          nick.chop(chopCount);
+        }
+        quint16 hash = qChecksum(nick.toAscii().data(), nick.toAscii().size());
+        return (UiStyle::FormatType)((((hash % 12) + 1) << 24) + 0x200); // FIXME: amount of sender colors hardwired
+      }
     case Message::Notice:
       return UiStyle::NoticeMsg; break;
     case Message::Server: