Click tag mentions

You can now click on a username in the main chat to add a "@username"
tag to the chat. Makes communication with other users using tags faster.
This commit is contained in:
Matt Lowe 2015-01-17 14:47:16 +01:00
parent 9b7f488bd7
commit 45112e49b1
4 changed files with 14 additions and 4 deletions

View file

@ -249,13 +249,16 @@ void ChatView::mousePressEvent(QMouseEvent *event)
break;
}
case HoveredUser: {
if (event->button() == Qt::RightButton) {
if (event->button() != Qt::MidButton) {
const int delimiterIndex = hoveredContent.indexOf("_");
UserLevelFlags userLevel(hoveredContent.left(delimiterIndex).toInt());
const QString userName = hoveredContent.mid(delimiterIndex + 1);
if (event->button() == Qt::RightButton) {
UserLevelFlags userLevel(hoveredContent.left(delimiterIndex).toInt());
userContextMenu->showContextMenu(event->globalPos(), userName, userLevel);
}
else if (event->button() == Qt::LeftButton)
emit addMentionTag("@" + userName);
}
break;
}
default: {

View file

@ -49,6 +49,7 @@ signals:
void cardNameHovered(QString cardName);
void showCardInfoPopup(QPoint pos, QString cardName);
void deleteCardInfoPopup(QString cardName);
void addMentionTag(QString mentionTag);
};
#endif

View file

@ -44,6 +44,7 @@ TabRoom::TabRoom(TabSupervisor *_tabSupervisor, AbstractClient *_client, ServerI
connect(chatView, SIGNAL(openMessageDialog(QString, bool)), this, SIGNAL(openMessageDialog(QString, bool)));
connect(chatView, SIGNAL(showCardInfoPopup(QPoint, QString)), this, SLOT(showCardInfoPopup(QPoint, QString)));
connect(chatView, SIGNAL(deleteCardInfoPopup(QString)), this, SLOT(deleteCardInfoPopup(QString)));
connect(chatView, SIGNAL(addMentionTag(QString)), this, SLOT(addMentionTag(QString)));
sayLabel = new QLabel;
sayEdit = new QLineEdit;
sayLabel->setBuddy(sayEdit);
@ -225,6 +226,10 @@ void TabRoom::processRoomSayEvent(const Event_RoomSay &event)
emit userEvent(false);
}
void TabRoom::addMentionTag(QString mentionTag) {
sayEdit->insert(mentionTag + " ");
}
PendingCommand *TabRoom::prepareRoomCommand(const ::google::protobuf::Message &cmd)
{
return client->prepareRoomCommand(cmd, roomId);

View file

@ -56,6 +56,7 @@ private slots:
void actIgnoreUnregisteredUsers();
void actClearChat();
void ignoreUnregisteredUsersChanged();
void addMentionTag(QString mentionTag);
void processListGamesEvent(const Event_ListGames &event);
void processJoinRoomEvent(const Event_JoinRoom &event);