Merge pull request #535 from poixen/chatnamehighlight
Chat highlighting when username is mentioned
This commit is contained in:
commit
8fee9c6c4b
5 changed files with 37 additions and 3 deletions
|
@ -8,6 +8,8 @@
|
|||
#include "user_context_menu.h"
|
||||
#include "tab_supervisor.h"
|
||||
#include "pixmapgenerator.h"
|
||||
#include "settingscache.h"
|
||||
#include "main.h"
|
||||
|
||||
ChatView::ChatView(const TabSupervisor *_tabSupervisor, TabGame *_game, bool _showTimestamps, QWidget *parent)
|
||||
: QTextBrowser(parent), tabSupervisor(_tabSupervisor), game(_game), evenNumber(true), showTimestamps(_showTimestamps), hoveredItemType(HoveredNothing)
|
||||
|
@ -102,7 +104,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(Qt::red);
|
||||
senderFormat.setForeground(QBrush(QColor(255, 120, 0)));
|
||||
} else {
|
||||
senderFormat.setForeground(Qt::blue);
|
||||
if (playerBold)
|
||||
|
@ -168,8 +170,17 @@ void ChatView::appendMessage(QString message, QString sender, UserLevelFlags use
|
|||
} else
|
||||
from = 1;
|
||||
}
|
||||
|
||||
QTextCharFormat charFormat;
|
||||
if (settingsCache->getChatMention()) {
|
||||
if (message.toLower().contains("@" + QString::fromStdString(tabSupervisor->getUserInfo()->name()).toLower())) {
|
||||
charFormat.setFontWeight(QFont::Bold);
|
||||
charFormat.setForeground(QBrush(QColor(255, 120, 0)));
|
||||
}
|
||||
}
|
||||
|
||||
if (!message.isEmpty())
|
||||
cursor.insertText(message);
|
||||
cursor.insertText(message, charFormat);
|
||||
|
||||
if (atBottom)
|
||||
verticalScrollBar()->setValue(verticalScrollBar()->maximum());
|
||||
|
|
|
@ -506,6 +506,10 @@ UserInterfaceSettingsPage::UserInterfaceSettingsPage()
|
|||
tapAnimationCheckBox->setChecked(settingsCache->getTapAnimation());
|
||||
connect(tapAnimationCheckBox, SIGNAL(stateChanged(int)), settingsCache, SLOT(setTapAnimation(int)));
|
||||
|
||||
chatMentionCheckBox = new QCheckBox;
|
||||
chatMentionCheckBox->setChecked(settingsCache->getChatMention());
|
||||
connect(chatMentionCheckBox, SIGNAL(stateChanged(int)), settingsCache, SLOT(setChatMention(int)));
|
||||
|
||||
soundEnabledCheckBox = new QCheckBox;
|
||||
soundEnabledCheckBox->setChecked(settingsCache->getSoundEnabled());
|
||||
connect(soundEnabledCheckBox, SIGNAL(stateChanged(int)), settingsCache, SLOT(setSoundEnabled(int)));
|
||||
|
@ -537,9 +541,16 @@ UserInterfaceSettingsPage::UserInterfaceSettingsPage()
|
|||
animationGroupBox = new QGroupBox;
|
||||
animationGroupBox->setLayout(animationGrid);
|
||||
|
||||
QGridLayout *chatGrid = new QGridLayout;
|
||||
chatGrid->addWidget(chatMentionCheckBox, 0, 0);
|
||||
|
||||
chatGroupBox = new QGroupBox;
|
||||
chatGroupBox->setLayout(chatGrid);
|
||||
|
||||
QVBoxLayout *mainLayout = new QVBoxLayout;
|
||||
mainLayout->addWidget(generalGroupBox);
|
||||
mainLayout->addWidget(animationGroupBox);
|
||||
mainLayout->addWidget(chatGroupBox);
|
||||
mainLayout->addWidget(soundGroupBox);
|
||||
|
||||
setLayout(mainLayout);
|
||||
|
@ -552,7 +563,9 @@ void UserInterfaceSettingsPage::retranslateUi()
|
|||
doubleClickToPlayCheckBox->setText(tr("&Double-click cards to play them (instead of single-click)"));
|
||||
playToStackCheckBox->setText(tr("&Play all nonlands onto the stack (not the battlefield) by default"));
|
||||
animationGroupBox->setTitle(tr("Animation settings"));
|
||||
chatGroupBox->setTitle(tr("Chat settings"));
|
||||
tapAnimationCheckBox->setText(tr("&Tap/untap animation"));
|
||||
chatMentionCheckBox->setText(tr("Enable chat mentions ('@yourusername' in chat log will be highlighted)"));
|
||||
soundEnabledCheckBox->setText(tr("Enable &sounds"));
|
||||
soundPathLabel->setText(tr("Path to sounds directory:"));
|
||||
soundTestButton->setText(tr("Test system sound engine"));
|
||||
|
|
|
@ -91,10 +91,11 @@ private:
|
|||
QCheckBox *doubleClickToPlayCheckBox;
|
||||
QCheckBox *playToStackCheckBox;
|
||||
QCheckBox *tapAnimationCheckBox;
|
||||
QCheckBox *chatMentionCheckBox;
|
||||
QCheckBox *soundEnabledCheckBox;
|
||||
QLabel *soundPathLabel;
|
||||
QLineEdit *soundPathEdit;
|
||||
QGroupBox *generalGroupBox, *animationGroupBox, *soundGroupBox;
|
||||
QGroupBox *generalGroupBox, *animationGroupBox, *soundGroupBox, *chatGroupBox;
|
||||
QPushButton *soundTestButton;
|
||||
public:
|
||||
UserInterfaceSettingsPage();
|
||||
|
|
|
@ -40,6 +40,7 @@ SettingsCache::SettingsCache()
|
|||
invertVerticalCoordinate = settings->value("table/invert_vertical", false).toBool();
|
||||
minPlayersForMultiColumnLayout = settings->value("interface/min_players_multicolumn", 5).toInt();
|
||||
tapAnimation = settings->value("cards/tapanimation", true).toBool();
|
||||
chatMention = settings->value("chat/mention", true).toBool();
|
||||
|
||||
zoneViewSortByName = settings->value("zoneview/sortbyname", true).toBool();
|
||||
zoneViewSortByType = settings->value("zoneview/sortbytype", true).toBool();
|
||||
|
@ -232,6 +233,11 @@ void SettingsCache::setTapAnimation(int _tapAnimation)
|
|||
settings->setValue("cards/tapanimation", tapAnimation);
|
||||
}
|
||||
|
||||
void SettingsCache::setChatMention(int _chatMention) {
|
||||
chatMention = _chatMention;
|
||||
settings->setValue("chat/mention", chatMention);
|
||||
}
|
||||
|
||||
void SettingsCache::setZoneViewSortByName(int _zoneViewSortByName)
|
||||
{
|
||||
zoneViewSortByName = _zoneViewSortByName;
|
||||
|
|
|
@ -54,6 +54,7 @@ private:
|
|||
bool invertVerticalCoordinate;
|
||||
int minPlayersForMultiColumnLayout;
|
||||
bool tapAnimation;
|
||||
bool chatMention;
|
||||
bool zoneViewSortByName, zoneViewSortByType;
|
||||
bool soundEnabled;
|
||||
QString soundPath;
|
||||
|
@ -92,6 +93,7 @@ public:
|
|||
bool getInvertVerticalCoordinate() const { return invertVerticalCoordinate; }
|
||||
int getMinPlayersForMultiColumnLayout() const { return minPlayersForMultiColumnLayout; }
|
||||
bool getTapAnimation() const { return tapAnimation; }
|
||||
bool getChatMention() const { return chatMention; }
|
||||
bool getZoneViewSortByName() const { return zoneViewSortByName; }
|
||||
bool getZoneViewSortByType() const { return zoneViewSortByType; }
|
||||
bool getSoundEnabled() const { return soundEnabled; }
|
||||
|
@ -131,6 +133,7 @@ public slots:
|
|||
void setInvertVerticalCoordinate(int _invertVerticalCoordinate);
|
||||
void setMinPlayersForMultiColumnLayout(int _minPlayersForMultiColumnLayout);
|
||||
void setTapAnimation(int _tapAnimation);
|
||||
void setChatMention(int _chatMention);
|
||||
void setZoneViewSortByName(int _zoneViewSortByName);
|
||||
void setZoneViewSortByType(int _zoneViewSortByType);
|
||||
void setSoundEnabled(int _soundEnabled);
|
||||
|
|
Loading…
Reference in a new issue