projects
/
quassel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fixed rendering for CTCP ACTION, closing BR #27.
[quassel.git]
/
gui
/
style.cpp
diff --git
a/gui/style.cpp
b/gui/style.cpp
index
8837872
..
5488986
100644
(file)
--- a/
gui/style.cpp
+++ b/
gui/style.cpp
@@
-40,7
+40,8
@@
void Style::init() {
colors["15"] = QColor("silver");
QTextCharFormat def;
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
formats["default"] = def;
// %B - 0x02 - bold
@@
-49,7
+50,7
@@
void Style::init() {
formats["%B"] = bold;
// %O - 0x0f - plain
formats["%B"] = bold;
// %O - 0x0f - plain
- formats["%O"] =
QTextCharFormat()
;
+ formats["%O"] =
def
;
// %R - 0x12 - reverse
// -- - 0x16 - reverse
// %R - 0x12 - reverse
// -- - 0x16 - reverse
@@
-97,15
+98,15
@@
void Style::init() {
formats["%Dj"] = join;
// %Dp - part
QTextCharFormat part;
formats["%Dj"] = join;
// %Dp - part
QTextCharFormat part;
- part.setForeground(QBrush("
firebrick
"));
+ part.setForeground(QBrush("
indianred
"));
formats["%Dp"] = part;
// %Dq - quit
QTextCharFormat quit;
formats["%Dp"] = part;
// %Dq - quit
QTextCharFormat quit;
- quit.setForeground(QBrush("
firebrick
"));
+ quit.setForeground(QBrush("
indianred
"));
formats["%Dq"] = quit;
// %Dk - kick
QTextCharFormat kick;
formats["%Dq"] = quit;
// %Dk - kick
QTextCharFormat kick;
- kick.setForeground(QBrush("
firebrick
"));
+ kick.setForeground(QBrush("
indianred
"));
formats["%Dk"] = kick;
// %Dr - nick rename
QTextCharFormat nren;
formats["%Dk"] = kick;
// %Dr - nick rename
QTextCharFormat nren;
@@
-115,6
+116,11
@@
void Style::init() {
QTextCharFormat mode;
mode.setForeground(QBrush("steelblue"));
formats["%Dm"] = mode;
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;
// %DT - timestamp
QTextCharFormat ts;
@@
-143,7
+149,11
@@
void Style::init() {
QTextCharFormat flags;
flags.setFontWeight(QFont::Bold);
formats["%DM"] = flags;
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) {
}
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)
*/
* 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<QString, int> toggles;
QString p;
QHash<QString, int> 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;
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()) {
}
} 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);
}
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(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;
toggles.remove(key);
} else {
QTextLayout::FormatRange range;