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
93cf7dba
Commit
93cf7dba
authored
Jan 27, 2015
by
Gavin Bisesi
Browse files
Merge pull request #609 from poixen/chat_mention_fixes
Chat mention fixes
parents
aa1814ef
3c0aca70
Changes
2
Hide whitespace changes
Inline
Side-by-side
cockatrice/src/chatview.cpp
View file @
93cf7dba
...
...
@@ -9,7 +9,6 @@
#include
"pixmapgenerator.h"
#include
"settingscache.h"
#include
"main.h"
#include
"userlist.h"
#include
"tab_userlists.h"
const
QColor
MENTION_COLOR
=
QColor
(
190
,
25
,
85
);
// maroon
...
...
@@ -206,14 +205,16 @@ void ChatView::appendMessage(QString message, QString sender, UserLevelFlags use
QString
userMention
=
message
.
left
(
mentionEndIndex
);
QString
userName
=
userMention
.
right
(
userMention
.
size
()
-
1
).
normalized
(
QString
::
NormalizationForm_D
);
QMap
<
QString
,
UserListTWI
*>
userList
=
tabSupervisor
->
getUserListsTab
()
->
getAllUsersList
()
->
getUsers
();
if
(
userList
.
contains
(
userName
))
{
UserListTWI
*
vlu
=
userList
.
value
(
userName
);
mentionFormatOtherUser
.
setAnchorHref
(
"user://"
+
QString
::
number
(
vlu
->
getUserInfo
().
user_level
())
+
"_"
+
userName
);
cursor
.
insertText
(
"@"
+
userName
,
mentionFormatOtherUser
);
QString
correctUserName
=
getNameFromUserList
(
userList
,
userName
);
if
(
!
correctUserName
.
isEmpty
())
{
UserListTWI
*
vlu
=
userList
.
value
(
correctUserName
);
mentionFormatOtherUser
.
setAnchorHref
(
"user://"
+
QString
::
number
(
vlu
->
getUserInfo
().
user_level
())
+
"_"
+
correctUserName
);
cursor
.
insertText
(
"@"
+
correctUserName
,
mentionFormatOtherUser
);
}
else
cursor
.
insertText
(
"@"
+
userName
,
defaultFormat
);
message
=
message
.
mid
(
userName
.
size
()
+
1
);
}
cursor
.
setCharFormat
(
defaultFormat
);
// reset format after each itteration
}
}
...
...
@@ -224,6 +225,20 @@ void ChatView::appendMessage(QString message, QString sender, UserLevelFlags use
verticalScrollBar
()
->
setValue
(
verticalScrollBar
()
->
maximum
());
}
/**
Returns the correct case version of the provided username, if no correct casing version
was found then the provided name is not available and will return an empty QString.
*/
QString
ChatView
::
getNameFromUserList
(
QMap
<
QString
,
UserListTWI
*>
&
userList
,
QString
&
userName
)
{
QMap
<
QString
,
UserListTWI
*>::
iterator
i
;
QString
lowerUserName
=
userName
.
toLower
();
for
(
i
=
userList
.
begin
();
i
!=
userList
.
end
();
++
i
)
{
if
(
i
.
key
().
toLower
()
==
lowerUserName
)
return
i
.
key
();
}
return
QString
();
}
void
ChatView
::
clearChat
()
{
document
()
->
clear
();
}
...
...
cockatrice/src/chatview.h
View file @
93cf7dba
...
...
@@ -5,6 +5,7 @@
#include
<QTextFragment>
#include
<QTextCursor>
#include
<QColor>
#include
"userlist.h"
#include
"user_level.h"
#include
"tab_supervisor.h"
...
...
@@ -35,6 +36,7 @@ private:
QTextCursor
prepareBlock
(
bool
same
=
false
);
void
appendCardTag
(
QTextCursor
&
cursor
,
const
QString
&
cardName
);
void
appendUrlTag
(
QTextCursor
&
cursor
,
QString
url
);
QString
getNameFromUserList
(
QMap
<
QString
,
UserListTWI
*>
&
userList
,
QString
&
userName
);
private
slots
:
void
openLink
(
const
QUrl
&
link
);
public:
...
...
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