From 45112e49b127cc009db536d975a6ed74a4b3c41c Mon Sep 17 00:00:00 2001 From: Matt Lowe Date: Sat, 17 Jan 2015 14:47:16 +0100 Subject: [PATCH] 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. --- cockatrice/src/chatview.cpp | 11 +++++++---- cockatrice/src/chatview.h | 1 + cockatrice/src/tab_room.cpp | 5 +++++ cockatrice/src/tab_room.h | 1 + 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/cockatrice/src/chatview.cpp b/cockatrice/src/chatview.cpp index f3d67253..659d5c12 100644 --- a/cockatrice/src/chatview.cpp +++ b/cockatrice/src/chatview.cpp @@ -249,12 +249,15 @@ 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); - - userContextMenu->showContextMenu(event->globalPos(), userName, userLevel); + 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; } diff --git a/cockatrice/src/chatview.h b/cockatrice/src/chatview.h index 67849262..4f06cb5e 100644 --- a/cockatrice/src/chatview.h +++ b/cockatrice/src/chatview.h @@ -49,6 +49,7 @@ signals: void cardNameHovered(QString cardName); void showCardInfoPopup(QPoint pos, QString cardName); void deleteCardInfoPopup(QString cardName); + void addMentionTag(QString mentionTag); }; #endif diff --git a/cockatrice/src/tab_room.cpp b/cockatrice/src/tab_room.cpp index fa307e7d..18e196a6 100644 --- a/cockatrice/src/tab_room.cpp +++ b/cockatrice/src/tab_room.cpp @@ -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); diff --git a/cockatrice/src/tab_room.h b/cockatrice/src/tab_room.h index 600513a2..6826cc11 100644 --- a/cockatrice/src/tab_room.h +++ b/cockatrice/src/tab_room.h @@ -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);