X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fuistyle.cpp;h=1a478f28835a0a599a88670b0cfeb7615964389e;hp=f497c49b8fbb0a2f30604411e5ab7ff4e92cc006;hb=d33a73406dc7b2a41c97d169b865836f6fce4980;hpb=6853298d912ce9d4bc339187e8a53963b8ec3c41 diff --git a/src/uisupport/uistyle.cpp b/src/uisupport/uistyle.cpp index f497c49b..1a478f28 100644 --- a/src/uisupport/uistyle.cpp +++ b/src/uisupport/uistyle.cpp @@ -38,7 +38,7 @@ UiStyle::UiStyle(QObject *parent) : QObject(parent) { } // Now initialize the mapping between FormatCodes and FormatTypes... - _formatCodes["%O"] = None; + _formatCodes["%O"] = Base; _formatCodes["%B"] = Bold; _formatCodes["%S"] = Italic; _formatCodes["%U"] = Underline; @@ -81,7 +81,13 @@ void UiStyle::loadStyleSheet() { QssParser parser; parser.processStyleSheet(styleSheet); QApplication::setPalette(parser.palette()); - _formatCache = parser.formats(); + + QTextCharFormat baseFmt = parser.formats().value(Base); + foreach(quint64 fmtType, parser.formats().keys()) { + QTextCharFormat fmt = baseFmt; + fmt.merge(parser.formats().value(fmtType)); + _formatCache[fmtType] = fmt; + } qApp->setStyleSheet(styleSheet); // pass the remaining sections to the application } @@ -487,20 +493,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 +522,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)