Merge pull request #561 from poixen/chatnamehighlight

Username block highlighting
This commit is contained in:
Gavin Bisesi 2015-01-20 12:35:41 -05:00
commit 6dfaa81a53
2 changed files with 21 additions and 6 deletions

View file

@ -18,6 +18,13 @@ ChatView::ChatView(const TabSupervisor *_tabSupervisor, TabGame *_game, bool _sh
userContextMenu = new UserContextMenu(tabSupervisor, this, game);
connect(userContextMenu, SIGNAL(openMessageDialog(QString, bool)), this, SIGNAL(openMessageDialog(QString, bool)));
userName = QString::fromStdString(tabSupervisor->getUserInfo()->name());
mention = "@" + userName.toLower();
mentionFormat.setFontWeight(QFont::Bold);
mentionFormat.setForeground(QBrush(Qt::white));
mentionFormat.setBackground(QBrush(QColor(190, 25, 85)));
viewport()->setCursor(Qt::IBeamCursor);
setReadOnly(true);
setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::LinksAccessibleByMouse);
@ -104,7 +111,7 @@ void ChatView::appendMessage(QString message, QString sender, UserLevelFlags use
QTextCharFormat senderFormat;
if (tabSupervisor && tabSupervisor->getUserInfo() && (sender == QString::fromStdString(tabSupervisor->getUserInfo()->name()))) {
senderFormat.setFontWeight(QFont::Bold);
senderFormat.setForeground(QBrush(QColor(255, 120, 0)));
senderFormat.setForeground(QBrush(QColor(190, 25, 85)));
} else {
senderFormat.setForeground(Qt::blue);
if (playerBold)
@ -172,15 +179,19 @@ void ChatView::appendMessage(QString message, QString sender, UserLevelFlags use
}
if (settingsCache->getChatMention()) {
if (message.toLower().contains("@" + QString::fromStdString(tabSupervisor->getUserInfo()->name()).toLower())) {
messageFormat.setFontWeight(QFont::Bold);
messageFormat.setForeground(QBrush(QColor(255, 120, 0)));
if (message.toLower().contains(mention)) {
int mentionIndex;
while ((mentionIndex = message.toLower().indexOf(mention)) != -1) {
cursor.insertText(message.left(mentionIndex), defaultFormat);
cursor.insertText("@" + userName, mentionFormat);
message = message.mid(mentionIndex + mention.size());
}
}
}
if (!message.isEmpty())
cursor.insertText(message, messageFormat);
cursor.insertText(message, defaultFormat);
if (atBottom)
verticalScrollBar()->setValue(verticalScrollBar()->maximum());
}

View file

@ -22,6 +22,10 @@ private:
enum HoveredItemType { HoveredNothing, HoveredUrl, HoveredCard, HoveredUser };
UserContextMenu *userContextMenu;
QString lastSender;
QString userName;
QString mention;
QTextCharFormat mentionFormat;
QTextCharFormat defaultFormat;
bool evenNumber;
bool showTimestamps;
HoveredItemType hoveredItemType;