/***************************************************************************
- * Copyright (C) 2005-2016 by the Quassel Project *
+ * Copyright (C) 2005-2018 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#include <QApplication>
#include <QColor>
-#include <QIcon>
#include "buffersettings.h"
+#include "icon.h"
#include "qssparser.h"
#include "quassel.h"
#include "uistyle.h"
bool UiStyle::_useCustomTimestampFormat; /// If true, use the custom timestamp format
QString UiStyle::_timestampFormatString; /// Timestamp format
QString UiStyle::_systemTimestampFormatString; /// Cached copy of system locale timestamp format
-bool UiStyle::_showSenderPrefixes; /// If true, show prefixmodes before sender names
+UiStyle::SenderPrefixMode UiStyle::_senderPrefixDisplay; /// Display of prefix modes before sender
bool UiStyle::_showSenderBrackets; /// If true, show brackets around sender names
namespace {
}
UiStyle::UiStyle(QObject *parent)
- : QObject(parent),
- _channelJoinedIcon(QIcon::fromTheme("irc-channel-joined", QIcon(":/icons/irc-channel-joined.png"))),
- _channelPartedIcon(QIcon::fromTheme("irc-channel-parted", QIcon(":/icons/irc-channel-parted.png"))),
- _userOfflineIcon(QIcon::fromTheme("im-user-offline", QIcon::fromTheme("user-offline", QIcon(":/icons/im-user-offline.png")))),
- _userOnlineIcon(QIcon::fromTheme("im-user", QIcon::fromTheme("user-available", QIcon(":/icons/im-user.png")))), // im-user-* are non-standard oxygen extensions
- _userAwayIcon(QIcon::fromTheme("im-user-away", QIcon::fromTheme("user-away", QIcon(":/icons/im-user-away.png")))),
- _categoryOpIcon(QIcon::fromTheme("irc-operator")),
- _categoryVoiceIcon(QIcon::fromTheme("irc-voice")),
- _opIconLimit(UserCategoryItem::categoryFromModes("o")),
- _voiceIconLimit(UserCategoryItem::categoryFromModes("v"))
+ : QObject(parent)
+ , _channelJoinedIcon{icon::get("irc-channel-active")}
+ , _channelPartedIcon{icon::get("irc-channel-inactive")}
+ , _userOfflineIcon{icon::get({"im-user-offline", "user-offline"})}
+ , _userOnlineIcon{icon::get({"im-user-online", "im-user", "user-available"})}
+ , _userAwayIcon{icon::get({"im-user-away", "user-away"})}
+ , _categoryOpIcon{icon::get("irc-operator")}
+ , _categoryVoiceIcon{icon::get("irc-voice")}
+ , _opIconLimit{UserCategoryItem::categoryFromModes("o")}
+ , _voiceIconLimit{UserCategoryItem::categoryFromModes("v")}
{
static bool registered = []() {
qRegisterMetaType<FormatList>();
// Now initialize the mapping between FormatCodes and FormatTypes...
_formatCodes["%O"] = FormatType::Base;
_formatCodes["%B"] = FormatType::Bold;
- _formatCodes["%S"] = FormatType::Italic;
+ _formatCodes["%I"] = FormatType::Italic;
_formatCodes["%U"] = FormatType::Underline;
+ _formatCodes["%S"] = FormatType::Strikethrough;
_formatCodes["%DN"] = FormatType::Nick;
_formatCodes["%DH"] = FormatType::Hostmask;
// in there.
setUseCustomTimestampFormat(false);
setTimestampFormatString(" hh:mm:ss");
- enableSenderPrefixes(false);
- enableSenderBrackets(true);
+ setSenderPrefixDisplay(UiStyle::SenderPrefixMode::HighestMode);
+ enableSenderBrackets(false);
// BufferView / NickView settings
UiStyleSettings s;
}
}
-void UiStyle::enableSenderPrefixes(bool enabled)
+void UiStyle::setSenderPrefixDisplay(UiStyle::SenderPrefixMode mode)
{
- if (_showSenderPrefixes != enabled) {
- _showSenderPrefixes = enabled;
+ if (_senderPrefixDisplay != mode) {
+ _senderPrefixDisplay = mode;
}
}
case '\x09':
mirc += " ";
break;
+ case '\x11':
+ // Monospace not supported yet
+ break;
case '\x12':
case '\x16':
mirc += "%R";
break;
case '\x1d':
+ mirc += "%I";
+ break;
+ case '\x1e':
mirc += "%S";
break;
case '\x1f':
QString UiStyle::StyledMessage::decoratedSender() const
{
QString _senderPrefixes;
- if (_showSenderPrefixes) {
+ switch (_senderPrefixDisplay) {
+ case UiStyle::SenderPrefixMode::AllModes:
+ // Show every available mode
_senderPrefixes = senderPrefixes();
+ break;
+ case UiStyle::SenderPrefixMode::HighestMode:
+ // Show the highest available mode (left-most)
+ _senderPrefixes = senderPrefixes().left(1);
+ break;
+ case UiStyle::SenderPrefixMode::NoModes:
+ // Don't show any mode (already empty by default)
+ break;
}
switch (type()) {