X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fuisupport%2Fuistyle.cpp;h=08190ed1a0cca73a24e84aee972536108e1aa94c;hb=1c0eb65f8545bb444f5fb9e792b8d9587ce8cefa;hp=2926a754d05f9eeaef8d3c478e4d46b626553b34;hpb=8755c3329fc3abc6fdeae3f143557aabb67d679f;p=quassel.git diff --git a/src/uisupport/uistyle.cpp b/src/uisupport/uistyle.cpp index 2926a754..08190ed1 100644 --- a/src/uisupport/uistyle.cpp +++ b/src/uisupport/uistyle.cpp @@ -19,10 +19,14 @@ ***************************************************************************/ #include +#include "quassel.h" #include "uistyle.h" -#include "uistylesettings.h" +#include "uisettings.h" #include "util.h" +// FIXME remove with migration code +#include + UiStyle::UiStyle(const QString &settingsKey) : _settingsKey(settingsKey) { // register FormatList if that hasn't happened yet // FIXME I don't think this actually avoids double registration... then again... does it hurt? @@ -32,6 +36,24 @@ UiStyle::UiStyle(const QString &settingsKey) : _settingsKey(settingsKey) { Q_ASSERT(QVariant::nameToType("UiStyle::FormatList") != QVariant::Invalid); } + // FIXME remove migration at some point + // We remove old settings if we find them, since they conflict +#ifdef Q_WS_MAC + QSettings mys(QCoreApplication::organizationDomain(), Quassel::buildInfo().clientApplicationName); +#else + QSettings mys(QCoreApplication::organizationName(), Quassel::buildInfo().clientApplicationName); +#endif + mys.beginGroup("QtUi"); + if(mys.childGroups().contains("Colors")) { + qDebug() << "Removing obsolete UiStyle settings!"; + mys.endGroup(); + mys.remove("Ui"); + mys.remove("QtUiStyle"); + mys.remove("QtUiStyleNew"); + mys.remove("QtUi/Colors"); + mys.sync(); + } + _defaultFont = QFont("Monospace", QApplication::font().pointSize()); // Default format @@ -47,13 +69,6 @@ UiStyle::UiStyle(const QString &settingsKey) : _settingsKey(settingsKey) { _customFormats[type] = s.customFormat(type); } - // Initialize color codes according to mIRC "standard" - QStringList colors; - //colors << "white" << "black" << "navy" << "green" << "red" << "maroon" << "purple" << "orange"; - //colors << "yellow" << "lime" << "teal" << "aqua" << "royalblue" << "fuchsia" << "grey" << "silver"; - colors << "#ffffff" << "#000000" << "#000080" << "#008000" << "#ff0000" << "#800000" << "#800080" << "#ffa500"; - colors << "#ffff00" << "#00ff00" << "#008080" << "#00ffff" << "#4169E1" << "#ff00ff" << "#808080" << "#c0c0c0"; - // Now initialize the mapping between FormatCodes and FormatTypes... _formatCodes["%O"] = None; _formatCodes["%B"] = Bold; @@ -81,14 +96,21 @@ UiStyle::UiStyle(const QString &settingsKey) : _settingsKey(settingsKey) { _formatCodes["%DM"] = ModeFlags; _formatCodes["%DU"] = Url; + // Initialize color codes according to mIRC "standard" + QStringList colors; + //colors << "white" << "black" << "navy" << "green" << "red" << "maroon" << "purple" << "orange"; + //colors << "yellow" << "lime" << "teal" << "aqua" << "royalblue" << "fuchsia" << "grey" << "silver"; + colors << "#ffffff" << "#000000" << "#000080" << "#008000" << "#ff0000" << "#800000" << "#800080" << "#ffa500"; + colors << "#ffff00" << "#00ff00" << "#008080" << "#00ffff" << "#4169E1" << "#ff00ff" << "#808080" << "#c0c0c0"; + // Set color formats for(int i = 0; i < 16; i++) { QString idx = QString("%1").arg(i, (int)2, (int)10, (QChar)'0'); - _formatCodes[QString("%Dcf%1").arg(idx)] = (FormatType)(FgCol00 + i); - _formatCodes[QString("%Dcb%1").arg(idx)] = (FormatType)(BgCol00 + i); + _formatCodes[QString("%Dcf%1").arg(idx)] = (FormatType)(FgCol00 | i<<24); + _formatCodes[QString("%Dcb%1").arg(idx)] = (FormatType)(BgCol00 | i<<28); QTextCharFormat fgf, bgf; - fgf.setForeground(QBrush(QColor(colors[i]))); setFormat((FormatType)(FgCol00 + i), fgf, Settings::Default); - bgf.setBackground(QBrush(QColor(colors[i]))); setFormat((FormatType)(BgCol00 + i), bgf, Settings::Default); + fgf.setForeground(QBrush(QColor(colors[i]))); setFormat((FormatType)(FgCol00 | i<<24), fgf, Settings::Default); + bgf.setBackground(QBrush(QColor(colors[i]))); setFormat((FormatType)(BgCol00 | i<<28), bgf, Settings::Default); } // Set a few more standard formats @@ -117,7 +139,7 @@ void UiStyle::setFormat(FormatType ftype, QTextCharFormat fmt, Settings::Mode mo _customFormats[ftype] = fmt; s.setCustomFormat(ftype, fmt); } else { - _customFormats[ftype] = QTextFormat().toCharFormat(); + _customFormats.remove(ftype); s.removeCustomFormat(ftype); } } @@ -208,10 +230,13 @@ UiStyle::StyledString UiStyle::styleString(const QString &s_) { int color = 10 * s[pos+4].digitValue() + s[pos+5].digitValue(); //TODO: use 99 as transparent color (re mirc color "standard") color &= 0x0f; - if(pos+3 == 'f') + if(s[pos+3] == 'f') { + curfmt &= 0xf0ffffff; curfmt |= (color << 24) | 0x00400000; - else + } else { + curfmt &= 0x0fffffff; curfmt |= (color << 28) | 0x00800000; + } length = 6; } } else if(s[pos+1] == 'O') { // reset formatting @@ -242,7 +267,7 @@ UiStyle::StyledString UiStyle::styleString(const QString &s_) { return result; } -QString UiStyle::mircToInternal(const QString &mirc_) { +QString UiStyle::mircToInternal(const QString &mirc_) const { QString mirc = mirc_; mirc.replace('%', "%%"); // escape % just to be sure mirc.replace('\x02', "%B"); @@ -292,6 +317,7 @@ UiStyle::StyledMessage UiStyle::styleMessage(const Message &msg) { QString nick = nickFromMask(msg.sender()); QString txt = mircToInternal(msg.contents()); QString bufferName = msg.bufferInfo().bufferName(); + bufferName.replace('%', "%%"); // well, you _can_ have a % in a buffername apparently... -_- StyledMessage result; @@ -314,7 +340,7 @@ UiStyle::StyledMessage UiStyle::styleMessage(const Message &msg) { if(!txt.isEmpty()) t = QString("%1 (%2)").arg(t).arg(txt); break; case Message::Quit: - s = tr("%Dq<--"); t = tr("%Dq%DN%DU%1%DU%DN %DH(%2@%3)%DH has quit").arg(nick, user, host); + s = tr("%Dq<--"); t = tr("%Dq%DN%1%DN %DH(%2@%3)%DH has quit").arg(nick, user, host); if(!txt.isEmpty()) t = QString("%1 (%2)").arg(t).arg(txt); break; case Message::Kick: