Cockatrice 2026-10-19-Development-3.1.2-beta.2
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 <QString>
15#include <functional>
17#include <qtmetamacros.h>
18#include <utility>
19
20class AbstractGame;
21class UserListProxy;
22class AbstractClient;
23class ChatView;
25class QAction;
26class QPoint;
27class Response;
28class TabSupervisor;
29class QWidget;
30
31class UserContextMenu : public QObject
32{
33 Q_OBJECT
34private:
39
40 QAction *aUserName;
41 QAction *aDetails;
42 QAction *aShowGames;
44 QAction *aChat;
47 QAction *aKick;
48 QAction *aReport;
49 QAction *aBan, *aBanHistory;
55 std::function<QList<GameInviteOption>()> gameInviteLinkProvider;
57signals:
58 void openMessageDialog(const QString &userName, bool focus);
59private slots:
66 void adjustMod_processUserResponse(const Response &resp, const CommandContainer &commandContainer);
70 void gamesOfUserReceived(const Response &resp, const CommandContainer &commandContainer);
71
72public:
73 UserContextMenu(TabSupervisor *_tabSupervisor, QWidget *_parent, AbstractGame *_game = 0);
74 void retranslateUi();
75 void showContextMenu(const QPoint &pos,
76 const QString &userName,
77 UserLevelFlags userLevel,
78 bool online = true,
79 int playerId = -1);
80 void showContextMenu(const QPoint &pos, const QString &userName, UserLevelFlags userLevel, ChatView *chatView);
81 void showContextMenu(const QPoint &pos,
82 const QString &userName,
83 UserLevelFlags userLevel,
84 bool online,
85 int playerId,
86 const QString &deckHash,
87 ChatView *chatView = nullptr);
88
90 {
91 return userListProxy;
92 }
93
94 void setGameInviteLinkProvider(std::function<QList<GameInviteOption>()> provider)
95 {
96 gameInviteLinkProvider = std::move(provider);
97 }
98
104 QList<GameInviteOption> inviteOptionsForUser(const QString &userName) const;
105
107 bool hasGameInviteLink(const QString &userName) const
108 {
109 return !inviteOptionsForUser(userName).isEmpty();
110 }
111
112 // Individual action entry points — used by UserInfoPopup to trigger
113 // actions without re-running the full context menu flow.
114 void execChat(const QString &userName);
115 void execInvite(const QString &userName);
116 void execDetails(const QString &userName);
117 void execShowGames(const QString &userName);
118 void execViewPublicDecks(const QString &userName);
119 void execAddToBuddy(const QString &userName);
120 void execRemoveFromBuddy(const QString &userName);
121 void execAddToIgnore(const QString &userName);
122 void execRemoveFromIgnore(const QString &userName);
123 void execKick(int playerId);
124 void execBan(const QString &userName);
125 void execWarn(const QString &userName);
126 void execBanHistory(const QString &userName);
127 void execWarnHistory(const QString &userName);
128 void execAdminNotes(const QString &userName);
129 void execInvestigateUser(const QString &userName);
130 void execAdjustMod(const QString &userName, bool shouldBeMod);
131 void execAdjustJudge(const QString &userName, bool shouldBeJudge);
132 void execAdjustDeveloper(const QString &userName, bool shouldBeDeveloper);
133
134private:
135 void execInvite(const QString &userName, const GameInviteOption &option);
136};
137
138#endif
Definition abstract_client.h:73
Definition abstract_game.h:23
Definition chat_view.h:56
Definition remote_connection_controller.h:20
Definition tab_supervisor.h:92
QAction * aShowGames
Definition user_context_menu.h:42
void adjustMod_processUserResponse(const Response &resp, const CommandContainer &commandContainer)
Definition user_context_menu.cpp:297
void getAdminNotes_processResponse(const Response &resp)
Definition user_context_menu.cpp:282
AbstractClient * client
Definition user_context_menu.h:35
void showContextMenu(const QPoint &pos, const QString &userName, UserLevelFlags userLevel, bool online=true, int playerId=-1)
Definition user_context_menu.cpp:369
void execWarn(const QString &userName)
Definition user_context_menu.cpp:708
QAction * aAddToBuddyList
Definition user_context_menu.h:45
void execInvestigateUser(const QString &userName)
Definition user_context_menu.cpp:744
void warnUser_dialogFinished()
Definition user_context_menu.cpp:338
TabSupervisor * tabSupervisor
Definition user_context_menu.h:36
QAction * aBanHistory
Definition user_context_menu.h:49
QAction * aDemoteFromMod
Definition user_context_menu.h:50
QAction * aPromoteToMod
Definition user_context_menu.h:50
QAction * aWarnUser
Definition user_context_menu.h:53
void openMessageDialog(const QString &userName, bool focus)
QAction * aWarnHistory
Definition user_context_menu.h:53
QAction * aBan
Definition user_context_menu.h:49
std::function< QList< GameInviteOption >()> gameInviteLinkProvider
Definition user_context_menu.h:55
AbstractGame * game
Definition user_context_menu.h:38
QAction * aReport
Definition user_context_menu.h:48
void execWarnHistory(const QString &userName)
Definition user_context_menu.cpp:726
void execAdjustJudge(const QString &userName, bool shouldBeJudge)
Definition user_context_menu.cpp:759
QAction * aKick
Definition user_context_menu.h:47
QAction * aDemoteFromDeveloper
Definition user_context_menu.h:52
QAction * aUserName
Definition user_context_menu.h:40
QList< GameInviteOption > inviteOptionsForUser(const QString &userName) const
Definition user_context_menu.cpp:570
QAction * aRemoveFromIgnoreList
Definition user_context_menu.h:46
void retranslateUi()
Definition user_context_menu.cpp:89
void execViewPublicDecks(const QString &userName)
Definition user_context_menu.cpp:641
void banUser_dialogFinished()
Definition user_context_menu.cpp:319
void warnUser_processUserInfoResponse(const Response &resp)
Definition user_context_menu.cpp:191
QAction * aViewPublicDecks
Definition user_context_menu.h:43
QAction * aDemoteFromJudge
Definition user_context_menu.h:51
void execChat(const QString &userName)
Definition user_context_menu.cpp:565
bool hasGameInviteLink(const QString &userName) const
Definition user_context_menu.h:107
void execKick(int playerId)
Definition user_context_menu.cpp:686
void execAddToIgnore(const QString &userName)
Definition user_context_menu.cpp:662
void execAdminNotes(const QString &userName)
Definition user_context_menu.cpp:735
QAction * aChat
Definition user_context_menu.h:44
QAction * aAddToIgnoreList
Definition user_context_menu.h:46
UserContextMenu(TabSupervisor *_tabSupervisor, QWidget *_parent, AbstractGame *_game=0)
Definition user_context_menu.cpp:57
void gamesOfUserReceived(const Response &resp, const CommandContainer &commandContainer)
Definition user_context_menu.cpp:115
void warnUser_processGetWarningsListResponse(const Response &r)
Definition user_context_menu.cpp:171
void execAddToBuddy(const QString &userName)
Definition user_context_menu.cpp:646
void execBanHistory(const QString &userName)
Definition user_context_menu.cpp:717
void execShowGames(const QString &userName)
Definition user_context_menu.cpp:632
QAction * aGetAdminNotes
Definition user_context_menu.h:54
void execRemoveFromIgnore(const QString &userName)
Definition user_context_menu.cpp:678
const UserListProxy * getUserListProxy() const
Definition user_context_menu.h:89
void banUser_processUserInfoResponse(const Response &resp)
Definition user_context_menu.cpp:161
QAction * aPromoteToJudge
Definition user_context_menu.h:51
void execInvite(const QString &userName)
Definition user_context_menu.cpp:589
void setGameInviteLinkProvider(std::function< QList< GameInviteOption >()> provider)
Definition user_context_menu.h:94
void banUserHistory_processResponse(const Response &resp)
Definition user_context_menu.cpp:204
const UserListProxy * userListProxy
Definition user_context_menu.h:37
void execBan(const QString &userName)
Definition user_context_menu.cpp:699
QAction * aRemoveFromBuddyList
Definition user_context_menu.h:45
QAction * aInvestigateUser
Definition user_context_menu.h:56
void execDetails(const QString &userName)
Definition user_context_menu.cpp:624
void execRemoveFromBuddy(const QString &userName)
Definition user_context_menu.cpp:654
void execAdjustDeveloper(const QString &userName, bool shouldBeDeveloper)
Definition user_context_menu.cpp:769
QAction * aPromoteToDeveloper
Definition user_context_menu.h:52
QAction * aDetails
Definition user_context_menu.h:41
void updateAdminNotes_dialogFinished()
Definition user_context_menu.cpp:358
void warnUserHistory_processResponse(const Response &resp)
Definition user_context_menu.cpp:244
void execAdjustMod(const QString &userName, bool shouldBeMod)
Definition user_context_menu.cpp:749
Definition user_list_proxy.h:19
Definition commands.proto:8
Definition game_link.h:32
Definition response.proto:11