X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fuistyle.cpp;h=6cfff50a433653465f621c5987c783f571b6c62c;hp=35d3162d158e24e31c3f73c89c0d7882dac2f786;hb=fdf69d69f0dda76a65a27ce7059b7b86696ff79c;hpb=4c740970699031a20315c7f5666d1f88c439f739 diff --git a/src/uisupport/uistyle.cpp b/src/uisupport/uistyle.cpp index 35d3162d..6cfff50a 100644 --- a/src/uisupport/uistyle.cpp +++ b/src/uisupport/uistyle.cpp @@ -168,14 +168,14 @@ QTextCharFormat UiStyle::format(quint32 ftype, quint32 label_) { } void UiStyle::mergeFormat(QTextCharFormat &fmt, quint32 ftype, quint64 label) { - mergeSubElementFormat(fmt, ftype & 0x000f, label); + mergeSubElementFormat(fmt, ftype & 0x00ff, label); // TODO: allow combinations for mirc formats and colors (each), e.g. setting a special format for "bold and italic" // or "foreground 01 and background 03" if((ftype & 0xfff0)) { // element format - for(quint32 mask = 0x0010; mask <= 0x2000; mask <<= 1) { + for(quint32 mask = 0x00100; mask <= 0x40000; mask <<= 1) { if(ftype & mask) { - mergeSubElementFormat(fmt, mask | 0x0f, label); + mergeSubElementFormat(fmt, mask | 0xff, label); } } } @@ -197,9 +197,9 @@ void UiStyle::mergeFormat(QTextCharFormat &fmt, quint32 ftype, quint64 label) { // Merge a subelement format into an existing message format void UiStyle::mergeSubElementFormat(QTextCharFormat& fmt, quint32 ftype, quint64 label) { quint64 key = ftype | label; - fmt.merge(cachedFormat(key & Q_UINT64_C(0x0000fffffffffff0))); // label + subelement + fmt.merge(cachedFormat(key & Q_UINT64_C(0x0000ffffffffff00))); // label + subelement fmt.merge(cachedFormat(key & Q_UINT64_C(0x0000ffffffffffff))); // label + subelement + msgtype - fmt.merge(cachedFormat(key & Q_UINT64_C(0xfffffffffffffff0))); // label + subelement + nickhash + fmt.merge(cachedFormat(key & Q_UINT64_C(0xffffffffffffff00))); // label + subelement + nickhash fmt.merge(cachedFormat(key & Q_UINT64_C(0xffffffffffffffff))); // label + subelement + nickhash + msgtype } @@ -300,7 +300,7 @@ UiStyle::StyledString UiStyle::styleString(const QString &s_, quint32 baseFormat length = 6; } } else if(s[pos+1] == 'O') { // reset formatting - curfmt &= 0x0000000f; // we keep message type-specific formatting + curfmt &= 0x000000ff; // we keep message type-specific formatting length = 2; } else if(s[pos+1] == 'R') { // reverse // TODO: implement reverse formatting @@ -487,20 +487,12 @@ QString UiStyle::StyledMessage::decoratedSender() const { return tr("<%1>").arg(plainSender()); break; case Message::Notice: return tr("[%1]").arg(plainSender()); break; -<<<<<<< HEAD - case Message::Topic: - case Message::Server: - return tr("*"); break; - case Message::Error: - return tr("*"); break; -======= case Message::Action: return tr("-*-"); break; case Message::Nick: return tr("<->"); break; case Message::Mode: return tr("***"); break; ->>>>>>> Handle all message types properly in UiStyle; eliminate msgtype format codes case Message::Join: return tr("-->"); break; case Message::Part: @@ -524,50 +516,6 @@ QString UiStyle::StyledMessage::decoratedSender() const { } } -UiStyle::FormatType UiStyle::StyledMessage::senderFormat() const { - 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. - { - 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::Topic: - case Message::Server: - return UiStyle::ServerMsg; break; - case Message::Error: - return UiStyle::ErrorMsg; break; - case Message::Join: - return UiStyle::JoinMsg; break; - case Message::Part: - return UiStyle::PartMsg; break; - case Message::Quit: - return UiStyle::QuitMsg; break; - case Message::Kick: - return UiStyle::KickMsg; break; - case Message::Nick: - return UiStyle::NickMsg; break; - case Message::Mode: - return UiStyle::ModeMsg; break; - case Message::Action: - return UiStyle::ActionMsg; break; - default: - return UiStyle::ErrorMsg; - } -} - // FIXME hardcoded to 16 sender hashes quint8 UiStyle::StyledMessage::senderHash() const { if(_senderHash != 0xff)