X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fuistyle.cpp;h=dd2ed9612ebc669a2111bad813696ba2cafe004f;hp=281ec76c15003984429d41ce8a8f1c348b99b249;hb=55f8b0001cf7c26a05eac2d097aab2b06eface6d;hpb=02ed3d0a95051e55ecaf66561f379041ae111cca diff --git a/src/uisupport/uistyle.cpp b/src/uisupport/uistyle.cpp index 281ec76c..dd2ed961 100644 --- a/src/uisupport/uistyle.cpp +++ b/src/uisupport/uistyle.cpp @@ -70,7 +70,10 @@ UiStyle::UiStyle(QObject *parent) // BufferView / NickView settings UiStyleSettings s; _showBufferViewIcons = _showNickViewIcons = s.value("ShowItemViewIcons", true).toBool(); - s.notify("ShowItemViewIcons", this, SLOT(showItemViewIconsChanged())); + s.notify("ShowItemViewIcons", this, SLOT(showItemViewIconsChanged(QVariant))); + + _allowMircColors = s.value("AllowMircColors", true).toBool(); + s.notify("AllowMircColors", this, SLOT(allowMircColorsChanged(QVariant))); loadStyleSheet(); } @@ -92,7 +95,7 @@ void UiStyle::loadStyleSheet() { UiStyleSettings s; QString styleSheet; - styleSheet += loadStyleSheet("file:///" + Quassel::findDataFilePath("default.qss")); + styleSheet += loadStyleSheet("file:///" + Quassel::findDataFilePath("stylesheets/default.qss")); styleSheet += loadStyleSheet("file:///" + Quassel::configDirPath() + "settings.qss"); if(s.value("UseCustomStyleSheet", false).toBool()) styleSheet += loadStyleSheet("file:///" + s.value("CustomStyleSheetPath").toString(), true); @@ -143,11 +146,15 @@ void UiStyle::setTimestampFormatString(const QString &format) { } } +void UiStyle::allowMircColorsChanged(const QVariant &v) { + _allowMircColors = v.toBool(); + emit changed(); +} + /******** ItemView Styling *******/ -void UiStyle::showItemViewIconsChanged() { - UiStyleSettings s; - _showBufferViewIcons = _showNickViewIcons = s.value("ShowItemViewIcons").toBool(); +void UiStyle::showItemViewIconsChanged(const QVariant &v) { + _showBufferViewIcons = _showNickViewIcons = v.toBool(); } QVariant UiStyle::bufferViewItemData(const QModelIndex &index, int role) const { @@ -340,12 +347,14 @@ void UiStyle::mergeFormat(QTextCharFormat &fmt, quint32 ftype, quint64 label) { // Now we handle color codes // We assume that those can't be combined with subelement and message types. - if(ftype & 0x00400000) - mergeSubElementFormat(fmt, ftype & 0x0f400000, label); // foreground - if(ftype & 0x00800000) - mergeSubElementFormat(fmt, ftype & 0xf0800000, label); // background - if((ftype & 0x00c00000) == 0x00c00000) - mergeSubElementFormat(fmt, ftype & 0xffc00000, label); // combination + if(_allowMircColors) { + if(ftype & 0x00400000) + mergeSubElementFormat(fmt, ftype & 0x0f400000, label); // foreground + if(ftype & 0x00800000) + mergeSubElementFormat(fmt, ftype & 0xf0800000, label); // background + if((ftype & 0x00c00000) == 0x00c00000) + mergeSubElementFormat(fmt, ftype & 0xffc00000, label); // combination + } // URL if(ftype & Url) @@ -475,6 +484,7 @@ UiStyle::StyledString UiStyle::styleString(const QString &s_, quint32 baseFormat if(s[pos+1] == 'D') code += s[pos+2]; FormatType ftype = formatType(code); if(ftype == Invalid) { + pos++; qWarning() << (QString("Invalid format code in string: %1").arg(s)); continue; } @@ -494,6 +504,7 @@ UiStyle::StyledString UiStyle::styleString(const QString &s_, quint32 baseFormat QString UiStyle::mircToInternal(const QString &mirc_) { QString mirc = mirc_; mirc.replace('%', "%%"); // escape % just to be sure + mirc.replace('\t', " "); // tabs break layout, also this is italics in Konversation mirc.replace('\x02', "%B"); mirc.replace('\x0f', "%O"); mirc.replace('\x12', "%R"); @@ -552,6 +563,9 @@ void UiStyle::StyledMessage::style() const { QString txt = UiStyle::mircToInternal(contents()); QString bufferName = bufferInfo().bufferName(); bufferName.replace('%', "%%"); // well, you _can_ have a % in a buffername apparently... -_- + host.replace('%', "%%"); // hostnames too... + user.replace('%', "%%"); // and the username... + nick.replace('%', "%%"); // ... and then there's totally RFC-violating servers like justin.tv m( const int maxNetsplitNicks = 15; QString t; @@ -616,7 +630,7 @@ void UiStyle::StyledMessage::style() const { //: Topic Message t = tr("%1").arg(txt); break; case Message::NetsplitJoin: { - QStringList users = txt.split(":"); + QStringList users = txt.split("#:#"); QStringList servers = users.takeLast().split(" "); for(int i = 0; i < users.count() && i < maxNetsplitNicks; i++) @@ -630,7 +644,7 @@ void UiStyle::StyledMessage::style() const { } break; case Message::NetsplitQuit: { - QStringList users = txt.split(":"); + QStringList users = txt.split("#:#"); QStringList servers = users.takeLast().split(" "); for(int i = 0; i < users.count() && i < maxNetsplitNicks; i++)