Cockatrice 2026-09-01-Development-3.1.0-beta.10
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
user_context_menu.h
Go to the documentation of this file.
1
6
7#ifndef USER_CONTEXT_MENU_H
8#define USER_CONTEXT_MENU_H
9
10#include "../../interface/widgets/server/game_link.h"
11
12#include <QList>
13#include <QObject>
14#include <functional>
16class AbstractGame;
17class UserListProxy;
18class AbstractClient;
19class ChatView;
21class QAction;
22class QMenu;
23class QPoint;
24class Response;
25class ServerInfo_User;
26class TabSupervisor;
27
28class UserContextMenu : public QObject
29{
30 Q_OBJECT
31private:
36
37 QAction *aUserName;
38 QAction *aDetails;
39 QAction *aShowGames;
40 QAction *aChat;
43 QAction *aKick;
44 QAction *aReport;
45 QAction *aBan, *aBanHistory;
50 std::function<QList<GameInviteOption>()> gameInviteLinkProvider;
52signals:
53 void openMessageDialog(const QString &userName, bool focus);
54private slots:
61 void adjustMod_processUserResponse(const Response &resp, const CommandContainer &commandContainer);
65 void gamesOfUserReceived(const Response &resp, const CommandContainer &commandContainer);
66
67public:
68 UserContextMenu(TabSupervisor *_tabSupervisor, QWidget *_parent, AbstractGame *_game = 0);
69 void retranslateUi();
70 void showContextMenu(const QPoint &pos,
71 const QString &userName,
72 UserLevelFlags userLevel,
73 bool online = true,
74 int playerId = -1);
75 void showContextMenu(const QPoint &pos, const QString &userName, UserLevelFlags userLevel, ChatView *chatView);
76 void showContextMenu(const QPoint &pos,
77 const QString &userName,
78 UserLevelFlags userLevel,
79 bool online,
80 int playerId,
81 const QString &deckHash,
82 ChatView *chatView = nullptr);
83
85 {
86 return userListProxy;
87 }
88
89 void setGameInviteLinkProvider(std::function<QList<GameInviteOption>()> provider)
90 {
91 gameInviteLinkProvider = std::move(provider);
92 }
93
99 QList<GameInviteOption> inviteOptionsForUser(const QString &userName) const;
100
102 bool hasGameInviteLink(const QString &userName) const
103 {
104 return !inviteOptionsForUser(userName).isEmpty();
105 }
106
107 // Individual action entry points — used by UserInfoPopup to trigger
108 // actions without re-running the full context menu flow.
109 void execChat(const QString &userName);
110 void execInvite(const QString &userName);
111 void execDetails(const QString &userName);
112 void execShowGames(const QString &userName);
113 void execAddToBuddy(const QString &userName);
114 void execRemoveFromBuddy(const QString &userName);
115 void execAddToIgnore(const QString &userName);
116 void execRemoveFromIgnore(const QString &userName);
117 void execKick(int playerId);
118 void execBan(const QString &userName);
119 void execWarn(const QString &userName);
120 void execBanHistory(const QString &userName);
121 void execWarnHistory(const QString &userName);
122 void execAdminNotes(const QString &userName);
123 void execInvestigateUser(const QString &userName);
124 void execAdjustMod(const QString &userName, bool shouldBeMod);
125 void execAdjustJudge(const QString &userName, bool shouldBeJudge);
126
127private:
128 void execInvite(const QString &userName, const GameInviteOption &option);
129};
130
131#endif
Definition abstract_client.h:57
Definition abstract_game.h:20
Definition chat_view.h:44
Definition tab_supervisor.h:84
QAction * aShowGames
Definition user_context_menu.h:39
void adjustMod_processUserResponse(const Response &resp, const CommandContainer &commandContainer)
Definition user_context_menu.cpp:265
void getAdminNotes_processResponse(const Response &resp)
Definition user_context_menu.cpp:250
AbstractClient * client
Definition user_context_menu.h:32
void showContextMenu(const QPoint &pos, const QString &userName, UserLevelFlags userLevel, bool online=true, int playerId=-1)
Definition user_context_menu.cpp:337
void execWarn(const QString &userName)
Definition user_context_menu.cpp:642
QAction * aAddToBuddyList
Definition user_context_menu.h:41
void execInvestigateUser(const QString &userName)
Definition user_context_menu.cpp:678
void warnUser_dialogFinished()
Definition user_context_menu.cpp:306
TabSupervisor * tabSupervisor
Definition user_context_menu.h:33
QAction * aBanHistory
Definition user_context_menu.h:45
QAction * aDemoteFromMod
Definition user_context_menu.h:46
QAction * aPromoteToMod
Definition user_context_menu.h:46
QAction * aWarnUser
Definition user_context_menu.h:48
void openMessageDialog(const QString &userName, bool focus)
QAction * aWarnHistory
Definition user_context_menu.h:48
QAction * aBan
Definition user_context_menu.h:45
std::function< QList< GameInviteOption >()> gameInviteLinkProvider
Definition user_context_menu.h:50
AbstractGame * game
Definition user_context_menu.h:35
QAction * aReport
Definition user_context_menu.h:44
void execWarnHistory(const QString &userName)
Definition user_context_menu.cpp:660
void execAdjustJudge(const QString &userName, bool shouldBeJudge)
Definition user_context_menu.cpp:693
QAction * aKick
Definition user_context_menu.h:43
QAction * aUserName
Definition user_context_menu.h:37
QList< GameInviteOption > inviteOptionsForUser(const QString &userName) const
Definition user_context_menu.cpp:517
QAction * aRemoveFromIgnoreList
Definition user_context_menu.h:42
void retranslateUi()
Definition user_context_menu.cpp:60
void banUser_dialogFinished()
Definition user_context_menu.cpp:287
void warnUser_processUserInfoResponse(const Response &resp)
Definition user_context_menu.cpp:159
QAction * aDemoteFromJudge
Definition user_context_menu.h:47
void execChat(const QString &userName)
Definition user_context_menu.cpp:512
bool hasGameInviteLink(const QString &userName) const
Definition user_context_menu.h:102
void execKick(int playerId)
Definition user_context_menu.cpp:620
void execAddToIgnore(const QString &userName)
Definition user_context_menu.cpp:604
void execAdminNotes(const QString &userName)
Definition user_context_menu.cpp:669
QAction * aChat
Definition user_context_menu.h:40
QAction * aAddToIgnoreList
Definition user_context_menu.h:42
UserContextMenu(TabSupervisor *_tabSupervisor, QWidget *_parent, AbstractGame *_game=0)
Definition user_context_menu.cpp:31
void gamesOfUserReceived(const Response &resp, const CommandContainer &commandContainer)
Definition user_context_menu.cpp:83
void warnUser_processGetWarningsListResponse(const Response &r)
Definition user_context_menu.cpp:139
void execAddToBuddy(const QString &userName)
Definition user_context_menu.cpp:588
void execBanHistory(const QString &userName)
Definition user_context_menu.cpp:651
void execShowGames(const QString &userName)
Definition user_context_menu.cpp:579
QAction * aGetAdminNotes
Definition user_context_menu.h:49
void execRemoveFromIgnore(const QString &userName)
Definition user_context_menu.cpp:612
const UserListProxy * getUserListProxy() const
Definition user_context_menu.h:84
void banUser_processUserInfoResponse(const Response &resp)
Definition user_context_menu.cpp:129
QAction * aPromoteToJudge
Definition user_context_menu.h:47
void execInvite(const QString &userName)
Definition user_context_menu.cpp:536
void setGameInviteLinkProvider(std::function< QList< GameInviteOption >()> provider)
Definition user_context_menu.h:89
void banUserHistory_processResponse(const Response &resp)
Definition user_context_menu.cpp:172
const UserListProxy * userListProxy
Definition user_context_menu.h:34
void execBan(const QString &userName)
Definition user_context_menu.cpp:633
QAction * aRemoveFromBuddyList
Definition user_context_menu.h:41
QAction * aInvestigateUser
Definition user_context_menu.h:51
void execDetails(const QString &userName)
Definition user_context_menu.cpp:571
void execRemoveFromBuddy(const QString &userName)
Definition user_context_menu.cpp:596
QAction * aDetails
Definition user_context_menu.h:38
void updateAdminNotes_dialogFinished()
Definition user_context_menu.cpp:326
void warnUserHistory_processResponse(const Response &resp)
Definition user_context_menu.cpp:212
void execAdjustMod(const QString &userName, bool shouldBeMod)
Definition user_context_menu.cpp:683
Definition user_list_proxy.h:19
Definition commands.proto:7
Definition game_link.h:32
Definition response.proto:11
Definition serverinfo_user.proto:2