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