X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fuistyle.cpp;h=555f87707f577c8b5ad41254a8c53f1cb9af518b;hp=3bd9b62413568f1f039daa954652d037797cd371;hb=64bc0567e3fe373ab996a23ed690ec5631bb417f;hpb=0b17a8e987118c138c91b756f5fed4166a23a354 diff --git a/src/uisupport/uistyle.cpp b/src/uisupport/uistyle.cpp index 3bd9b624..555f8770 100644 --- a/src/uisupport/uistyle.cpp +++ b/src/uisupport/uistyle.cpp @@ -68,9 +68,9 @@ UiStyle::UiStyle(QObject *parent) setTimestampFormatString("[hh:mm:ss]"); // BufferView / NickView settings - BufferSettings bufferSettings; - _showBufferViewIcons = _showNickViewIcons = bufferSettings.showUserStateIcons(); - bufferSettings.notify("ShowUserStateIcons", this, SLOT(showUserStateIconsChanged())); + UiStyleSettings s; + _showBufferViewIcons = _showNickViewIcons = s.value("ShowItemViewIcons", true).toBool(); + s.notify("ShowItemViewIcons", this, SLOT(showItemViewIconsChanged())); loadStyleSheet(); } @@ -87,6 +87,7 @@ void UiStyle::loadStyleSheet() { qDeleteAll(_metricsCache); _metricsCache.clear(); _formatCache.clear(); + _formats.clear(); UiStyleSettings s; @@ -107,7 +108,7 @@ void UiStyle::loadStyleSheet() { foreach(quint64 fmtType, parser.formats().keys()) { QTextCharFormat fmt = baseFmt; fmt.merge(parser.formats().value(fmtType)); - _formatCache[fmtType] = fmt; + _formats[fmtType] = fmt; } _listItemFormats = parser.listItemFormats(); @@ -147,9 +148,9 @@ void UiStyle::setTimestampFormatString(const QString &format) { /******** ItemView Styling *******/ -void UiStyle::showUserStateIconsChanged() { - BufferSettings bufferSettings; - _showBufferViewIcons = _showNickViewIcons = bufferSettings.showUserStateIcons(); +void UiStyle::showItemViewIconsChanged() { + UiStyleSettings s; + _showBufferViewIcons = _showNickViewIcons = s.value("ShowItemViewIcons").toBool(); } QVariant UiStyle::bufferViewItemData(const QModelIndex &index, int role) const { @@ -279,12 +280,12 @@ QVariant UiStyle::itemData(int role, const QTextCharFormat &format) const { /******** Caching *******/ -QTextCharFormat UiStyle::cachedFormat(quint64 key) const { - return _formatCache.value(key, QTextCharFormat()); +QTextCharFormat UiStyle::format(quint64 key) const { + return _formats.value(key, QTextCharFormat()); } QTextCharFormat UiStyle::cachedFormat(quint32 formatType, quint32 messageLabel) const { - return cachedFormat(formatType | ((quint64)messageLabel << 32)); + return _formatCache.value(formatType | ((quint64)messageLabel << 32), QTextCharFormat()); } void UiStyle::setCachedFormat(const QTextCharFormat &format, quint32 formatType, quint32 messageLabel) { @@ -312,7 +313,7 @@ QTextCharFormat UiStyle::format(quint32 ftype, quint32 label_) { quint64 label = (quint64)label_ << 32; // check if we have exactly this format readily cached already - QTextCharFormat fmt = cachedFormat(label|ftype); + QTextCharFormat fmt = cachedFormat(ftype, label_); if(fmt.properties().count()) return fmt; @@ -332,10 +333,10 @@ void UiStyle::mergeFormat(QTextCharFormat &fmt, quint32 ftype, quint64 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 + if((ftype & 0xfff00)) { // element format for(quint32 mask = 0x00100; mask <= 0x40000; mask <<= 1) { if(ftype & mask) { - mergeSubElementFormat(fmt, mask | 0xff, label); + mergeSubElementFormat(fmt, ftype & (mask | 0xff), label); } } } @@ -357,10 +358,10 @@ 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(0x0000ffffffffff00))); // label + subelement - fmt.merge(cachedFormat(key & Q_UINT64_C(0x0000ffffffffffff))); // label + subelement + msgtype - fmt.merge(cachedFormat(key & Q_UINT64_C(0xffffffffffffff00))); // label + subelement + nickhash - fmt.merge(cachedFormat(key & Q_UINT64_C(0xffffffffffffffff))); // label + subelement + nickhash + msgtype + fmt.merge(format(key & Q_UINT64_C(0x0000ffffffffff00))); // label + subelement + fmt.merge(format(key & Q_UINT64_C(0x0000ffffffffffff))); // label + subelement + msgtype + fmt.merge(format(key & Q_UINT64_C(0xffffffffffffff00))); // label + subelement + nickhash + fmt.merge(format(key & Q_UINT64_C(0xffffffffffffffff))); // label + subelement + nickhash + msgtype } UiStyle::FormatType UiStyle::formatType(Message::Type msgType) {