X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=gui%2Fstyle.cpp;h=54889868dfbf79936cd8ace762402fcfea215812;hp=8837872e85134665af3c6748ad1586aa55ec4b5d;hb=a72defa2957b67d05fb4fb3d18b1fb6755a5908c;hpb=12369966345e76e3bba92f64c84c940ef4d8d916 diff --git a/gui/style.cpp b/gui/style.cpp index 8837872e..54889868 100644 --- a/gui/style.cpp +++ b/gui/style.cpp @@ -40,7 +40,8 @@ void Style::init() { colors["15"] = QColor("silver"); QTextCharFormat def; - //def.setFont(QFont("Lucida Mono")); + def.setForeground(QBrush("black")); + def.setFont(QFont("Verdana",9)); formats["default"] = def; // %B - 0x02 - bold @@ -49,7 +50,7 @@ void Style::init() { formats["%B"] = bold; // %O - 0x0f - plain - formats["%O"] = QTextCharFormat(); + formats["%O"] = def; // %R - 0x12 - reverse // -- - 0x16 - reverse @@ -97,15 +98,15 @@ void Style::init() { formats["%Dj"] = join; // %Dp - part QTextCharFormat part; - part.setForeground(QBrush("firebrick")); + part.setForeground(QBrush("indianred")); formats["%Dp"] = part; // %Dq - quit QTextCharFormat quit; - quit.setForeground(QBrush("firebrick")); + quit.setForeground(QBrush("indianred")); formats["%Dq"] = quit; // %Dk - kick QTextCharFormat kick; - kick.setForeground(QBrush("firebrick")); + kick.setForeground(QBrush("indianred")); formats["%Dk"] = kick; // %Dr - nick rename QTextCharFormat nren; @@ -115,6 +116,11 @@ void Style::init() { QTextCharFormat mode; mode.setForeground(QBrush("steelblue")); formats["%Dm"] = mode; + // %Da - ctcp action + QTextCharFormat action; + action.setFontItalic(true); + action.setForeground(QBrush("darkmagenta")); + formats["%Da"] = action; // %DT - timestamp QTextCharFormat ts; @@ -143,7 +149,11 @@ void Style::init() { QTextCharFormat flags; flags.setFontWeight(QFont::Bold); formats["%DM"] = flags; - + // %DU - clickable URL + QTextCharFormat url; + url.setFontUnderline(true); + url.setAnchor(true); + formats["%DU"] = url; } QString Style::mircToInternal(QString mirc) { @@ -162,10 +172,10 @@ QString Style::mircToInternal(QString mirc) { * describing the formats of the string. * \param s string in internal format (% style format codes) */ -Style::StringFormats Style::internalToFormatted(QString s) { +Style::FormattedString Style::internalToFormatted(QString s) { QHash toggles; QString p; - StringFormats sf; + FormattedString sf; QTextLayout::FormatRange rng; rng.format = formats["default"]; rng.start = 0; rng.length = -1; sf.formats.append(rng); toggles["default"] = sf.formats.count() - 1; @@ -216,6 +226,7 @@ Style::StringFormats Style::internalToFormatted(QString s) { } } else if(s[i] == 'O') { foreach(QString key, toggles.keys()) { + if(key == "default") continue; sf.formats[toggles[key]].length = j - sf.formats[toggles[key]].start; toggles.remove(key); } @@ -231,6 +242,16 @@ Style::StringFormats Style::internalToFormatted(QString s) { if(s[i] == 'D') i++; if(toggles.contains(key)) { sf.formats[toggles[key]].length = j - sf.formats[toggles[key]].start; + if(key == "%DU") { + // URL handling + // FIXME check for and handle format codes within URLs + QString u = s.mid(i - sf.formats[toggles[key]].length - 2, sf.formats[toggles[key]].length); + UrlInfo url; + url.start = sf.formats[toggles[key]].start; + url.end = j; + url.url = QUrl(u); + sf.urls.append(url); + } toggles.remove(key); } else { QTextLayout::FormatRange range;