Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Donald Haase
Cockatrice
Commits
342dfe7e
Commit
342dfe7e
authored
Feb 21, 2015
by
Zach
Browse files
Merge pull request #770 from Cockatrice/fix-632
Fix #632. Url and mentions work together
parents
510fe4e0
5ff6693c
Changes
1
Hide whitespace changes
Inline
Side-by-side
cockatrice/src/chatview.cpp
View file @
342dfe7e
...
...
@@ -148,9 +148,25 @@ void ChatView::appendMessage(QString message, QString sender, UserLevelFlags use
messageFormat
.
setForeground
(
Qt
::
darkGreen
);
cursor
.
setCharFormat
(
messageFormat
);
int
from
=
0
,
index
=
0
;
while
((
index
=
message
.
indexOf
(
'['
,
from
))
!=
-
1
)
{
cursor
.
insertText
(
message
.
left
(
index
));
int
from
=
0
,
index
=
0
,
bracket
=
0
,
at
=
0
;
bool
mentionEnabled
=
settingsCache
->
getChatMention
();
while
(((
message
.
indexOf
(
'['
,
from
))
!=
-
1
)
||
(
mentionEnabled
&&
(
message
.
indexOf
(
'@'
,
from
))
!=
-
1
))
{
bracket
=
message
.
indexOf
(
'['
,
from
);
if
(
!
mentionEnabled
)
{
index
=
bracket
;
}
else
{
at
=
message
.
indexOf
(
'@'
,
from
);
if
(
bracket
==
-
1
)
index
=
at
;
else
if
(
at
==
-
1
)
index
=
bracket
;
else
index
=
std
::
min
(
bracket
,
at
);
}
cursor
.
insertText
(
message
.
left
(
index
),
defaultFormat
);
message
=
message
.
mid
(
index
);
if
(
message
.
isEmpty
())
break
;
...
...
@@ -185,27 +201,15 @@ void ChatView::appendMessage(QString message, QString sender, UserLevelFlags use
message
=
message
.
mid
(
closeTagIndex
+
6
);
appendUrlTag
(
cursor
,
url
);
}
else
from
=
1
;
}
if
(
settingsCache
->
getChatMention
())
{
index
=
0
;
while
((
index
=
message
.
indexOf
(
'@'
))
!=
-
1
)
{
cursor
.
insertText
(
message
.
left
(
index
),
defaultFormat
);
message
=
message
.
mid
(
index
);
if
(
message
.
isEmpty
())
break
;
// you have been mentioned
}
else
if
(
mentionEnabled
)
{
if
(
message
.
toLower
().
startsWith
(
mention
))
{
// you have been mentioned
mentionFormat
.
setBackground
(
QBrush
(
getCustomMentionColor
()));
mentionFormat
.
setForeground
(
settingsCache
->
getChatMentionForeground
()
?
QBrush
(
Qt
::
white
)
:
QBrush
(
Qt
::
black
));
cursor
.
insertText
(
"@"
+
userName
,
mentionFormat
);
message
=
message
.
mid
(
mention
.
size
());
QApplication
::
alert
(
this
);
}
// another user has been mentioned
else
{
}
else
{
int
mentionEndIndex
=
message
.
indexOf
(
QRegExp
(
"
\\
W"
),
1
);
// from 1 as @ is non-char
if
(
mentionEndIndex
==
-
1
)
mentionEndIndex
=
message
.
size
();
// there is no text after the mention
...
...
@@ -217,12 +221,13 @@ void ChatView::appendMessage(QString message, QString sender, UserLevelFlags use
UserListTWI
*
vlu
=
userList
.
value
(
correctUserName
);
mentionFormatOtherUser
.
setAnchorHref
(
"user://"
+
QString
::
number
(
vlu
->
getUserInfo
().
user_level
())
+
"_"
+
correctUserName
);
cursor
.
insertText
(
"@"
+
correctUserName
,
mentionFormatOtherUser
);
}
else
}
else
cursor
.
insertText
(
"@"
+
userName
,
defaultFormat
);
message
=
message
.
mid
(
userName
.
size
()
+
1
);
}
cursor
.
setCharFormat
(
defaultFormat
);
// reset format after each itteration
}
cursor
.
setCharFormat
(
defaultFormat
);
// reset format after each iteration
}
else
from
=
1
;
}
if
(
!
message
.
isEmpty
())
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment