Cockatrice
2026-10-19-Development-3.1.2-beta.2
A virtual tabletop for multiplayer card games
Toggle main menu visibility
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>
16
#include <
libcockatrice/network/server/remote/user_level.h
>
17
#include <qtmetamacros.h>
18
#include <utility>
19
20
class
AbstractGame
;
21
class
UserListProxy
;
22
class
AbstractClient
;
23
class
ChatView
;
24
class
CommandContainer
;
25
class
QAction;
26
class
QPoint;
27
class
Response
;
28
class
TabSupervisor
;
29
class
QWidget;
30
31
class
UserContextMenu
:
public
QObject
32
{
33
Q_OBJECT
34
private
:
35
AbstractClient
*
client
;
36
TabSupervisor
*
tabSupervisor
;
37
const
UserListProxy
*
userListProxy
;
38
AbstractGame
*
game
;
39
40
QAction *
aUserName
;
41
QAction *
aDetails
;
42
QAction *
aShowGames
;
43
QAction *
aViewPublicDecks
;
44
QAction *
aChat
;
45
QAction *
aAddToBuddyList
, *
aRemoveFromBuddyList
;
46
QAction *
aAddToIgnoreList
, *
aRemoveFromIgnoreList
;
47
QAction *
aKick
;
48
QAction *
aReport
;
49
QAction *
aBan
, *
aBanHistory
;
50
QAction *
aPromoteToMod
, *
aDemoteFromMod
;
51
QAction *
aPromoteToJudge
, *
aDemoteFromJudge
;
52
QAction *
aPromoteToDeveloper
, *
aDemoteFromDeveloper
;
53
QAction *
aWarnUser
, *
aWarnHistory
;
54
QAction *
aGetAdminNotes
;
55
std::function<QList<GameInviteOption>()>
gameInviteLinkProvider
;
56
QAction *
aInvestigateUser
;
57
signals:
58
void
openMessageDialog
(
const
QString &userName,
bool
focus);
59
private
slots:
60
void
banUser_processUserInfoResponse
(
const
Response
&resp);
61
void
warnUser_processGetWarningsListResponse
(
const
Response
&r);
62
void
warnUser_processUserInfoResponse
(
const
Response
&resp);
63
void
banUserHistory_processResponse
(
const
Response
&resp);
64
void
warnUserHistory_processResponse
(
const
Response
&resp);
65
void
getAdminNotes_processResponse
(
const
Response
&resp);
66
void
adjustMod_processUserResponse
(
const
Response
&resp,
const
CommandContainer
&commandContainer);
67
void
banUser_dialogFinished
();
68
void
warnUser_dialogFinished
();
69
void
updateAdminNotes_dialogFinished
();
70
void
gamesOfUserReceived
(
const
Response
&resp,
const
CommandContainer
&commandContainer);
71
72
public
:
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
89
const
UserListProxy
*
getUserListProxy
()
const
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
134
private
:
135
void
execInvite
(
const
QString &userName,
const
GameInviteOption
&option);
136
};
137
138
#endif
AbstractClient
Definition
abstract_client.h:73
AbstractGame
Definition
abstract_game.h:23
ChatView
Definition
chat_view.h:56
QList
Definition
remote_connection_controller.h:20
TabSupervisor
Definition
tab_supervisor.h:92
UserContextMenu::aShowGames
QAction * aShowGames
Definition
user_context_menu.h:42
UserContextMenu::adjustMod_processUserResponse
void adjustMod_processUserResponse(const Response &resp, const CommandContainer &commandContainer)
Definition
user_context_menu.cpp:297
UserContextMenu::getAdminNotes_processResponse
void getAdminNotes_processResponse(const Response &resp)
Definition
user_context_menu.cpp:282
UserContextMenu::client
AbstractClient * client
Definition
user_context_menu.h:35
UserContextMenu::showContextMenu
void showContextMenu(const QPoint &pos, const QString &userName, UserLevelFlags userLevel, bool online=true, int playerId=-1)
Definition
user_context_menu.cpp:369
UserContextMenu::execWarn
void execWarn(const QString &userName)
Definition
user_context_menu.cpp:708
UserContextMenu::aAddToBuddyList
QAction * aAddToBuddyList
Definition
user_context_menu.h:45
UserContextMenu::execInvestigateUser
void execInvestigateUser(const QString &userName)
Definition
user_context_menu.cpp:744
UserContextMenu::warnUser_dialogFinished
void warnUser_dialogFinished()
Definition
user_context_menu.cpp:338
UserContextMenu::tabSupervisor
TabSupervisor * tabSupervisor
Definition
user_context_menu.h:36
UserContextMenu::aBanHistory
QAction * aBanHistory
Definition
user_context_menu.h:49
UserContextMenu::aDemoteFromMod
QAction * aDemoteFromMod
Definition
user_context_menu.h:50
UserContextMenu::aPromoteToMod
QAction * aPromoteToMod
Definition
user_context_menu.h:50
UserContextMenu::aWarnUser
QAction * aWarnUser
Definition
user_context_menu.h:53
UserContextMenu::openMessageDialog
void openMessageDialog(const QString &userName, bool focus)
UserContextMenu::aWarnHistory
QAction * aWarnHistory
Definition
user_context_menu.h:53
UserContextMenu::aBan
QAction * aBan
Definition
user_context_menu.h:49
UserContextMenu::gameInviteLinkProvider
std::function< QList< GameInviteOption >()> gameInviteLinkProvider
Definition
user_context_menu.h:55
UserContextMenu::game
AbstractGame * game
Definition
user_context_menu.h:38
UserContextMenu::aReport
QAction * aReport
Definition
user_context_menu.h:48
UserContextMenu::execWarnHistory
void execWarnHistory(const QString &userName)
Definition
user_context_menu.cpp:726
UserContextMenu::execAdjustJudge
void execAdjustJudge(const QString &userName, bool shouldBeJudge)
Definition
user_context_menu.cpp:759
UserContextMenu::aKick
QAction * aKick
Definition
user_context_menu.h:47
UserContextMenu::aDemoteFromDeveloper
QAction * aDemoteFromDeveloper
Definition
user_context_menu.h:52
UserContextMenu::aUserName
QAction * aUserName
Definition
user_context_menu.h:40
UserContextMenu::inviteOptionsForUser
QList< GameInviteOption > inviteOptionsForUser(const QString &userName) const
Definition
user_context_menu.cpp:570
UserContextMenu::aRemoveFromIgnoreList
QAction * aRemoveFromIgnoreList
Definition
user_context_menu.h:46
UserContextMenu::retranslateUi
void retranslateUi()
Definition
user_context_menu.cpp:89
UserContextMenu::execViewPublicDecks
void execViewPublicDecks(const QString &userName)
Definition
user_context_menu.cpp:641
UserContextMenu::banUser_dialogFinished
void banUser_dialogFinished()
Definition
user_context_menu.cpp:319
UserContextMenu::warnUser_processUserInfoResponse
void warnUser_processUserInfoResponse(const Response &resp)
Definition
user_context_menu.cpp:191
UserContextMenu::aViewPublicDecks
QAction * aViewPublicDecks
Definition
user_context_menu.h:43
UserContextMenu::aDemoteFromJudge
QAction * aDemoteFromJudge
Definition
user_context_menu.h:51
UserContextMenu::execChat
void execChat(const QString &userName)
Definition
user_context_menu.cpp:565
UserContextMenu::hasGameInviteLink
bool hasGameInviteLink(const QString &userName) const
Definition
user_context_menu.h:107
UserContextMenu::execKick
void execKick(int playerId)
Definition
user_context_menu.cpp:686
UserContextMenu::execAddToIgnore
void execAddToIgnore(const QString &userName)
Definition
user_context_menu.cpp:662
UserContextMenu::execAdminNotes
void execAdminNotes(const QString &userName)
Definition
user_context_menu.cpp:735
UserContextMenu::aChat
QAction * aChat
Definition
user_context_menu.h:44
UserContextMenu::aAddToIgnoreList
QAction * aAddToIgnoreList
Definition
user_context_menu.h:46
UserContextMenu::UserContextMenu
UserContextMenu(TabSupervisor *_tabSupervisor, QWidget *_parent, AbstractGame *_game=0)
Definition
user_context_menu.cpp:57
UserContextMenu::gamesOfUserReceived
void gamesOfUserReceived(const Response &resp, const CommandContainer &commandContainer)
Definition
user_context_menu.cpp:115
UserContextMenu::warnUser_processGetWarningsListResponse
void warnUser_processGetWarningsListResponse(const Response &r)
Definition
user_context_menu.cpp:171
UserContextMenu::execAddToBuddy
void execAddToBuddy(const QString &userName)
Definition
user_context_menu.cpp:646
UserContextMenu::execBanHistory
void execBanHistory(const QString &userName)
Definition
user_context_menu.cpp:717
UserContextMenu::execShowGames
void execShowGames(const QString &userName)
Definition
user_context_menu.cpp:632
UserContextMenu::aGetAdminNotes
QAction * aGetAdminNotes
Definition
user_context_menu.h:54
UserContextMenu::execRemoveFromIgnore
void execRemoveFromIgnore(const QString &userName)
Definition
user_context_menu.cpp:678
UserContextMenu::getUserListProxy
const UserListProxy * getUserListProxy() const
Definition
user_context_menu.h:89
UserContextMenu::banUser_processUserInfoResponse
void banUser_processUserInfoResponse(const Response &resp)
Definition
user_context_menu.cpp:161
UserContextMenu::aPromoteToJudge
QAction * aPromoteToJudge
Definition
user_context_menu.h:51
UserContextMenu::execInvite
void execInvite(const QString &userName)
Definition
user_context_menu.cpp:589
UserContextMenu::setGameInviteLinkProvider
void setGameInviteLinkProvider(std::function< QList< GameInviteOption >()> provider)
Definition
user_context_menu.h:94
UserContextMenu::banUserHistory_processResponse
void banUserHistory_processResponse(const Response &resp)
Definition
user_context_menu.cpp:204
UserContextMenu::userListProxy
const UserListProxy * userListProxy
Definition
user_context_menu.h:37
UserContextMenu::execBan
void execBan(const QString &userName)
Definition
user_context_menu.cpp:699
UserContextMenu::aRemoveFromBuddyList
QAction * aRemoveFromBuddyList
Definition
user_context_menu.h:45
UserContextMenu::aInvestigateUser
QAction * aInvestigateUser
Definition
user_context_menu.h:56
UserContextMenu::execDetails
void execDetails(const QString &userName)
Definition
user_context_menu.cpp:624
UserContextMenu::execRemoveFromBuddy
void execRemoveFromBuddy(const QString &userName)
Definition
user_context_menu.cpp:654
UserContextMenu::execAdjustDeveloper
void execAdjustDeveloper(const QString &userName, bool shouldBeDeveloper)
Definition
user_context_menu.cpp:769
UserContextMenu::aPromoteToDeveloper
QAction * aPromoteToDeveloper
Definition
user_context_menu.h:52
UserContextMenu::aDetails
QAction * aDetails
Definition
user_context_menu.h:41
UserContextMenu::updateAdminNotes_dialogFinished
void updateAdminNotes_dialogFinished()
Definition
user_context_menu.cpp:358
UserContextMenu::warnUserHistory_processResponse
void warnUserHistory_processResponse(const Response &resp)
Definition
user_context_menu.cpp:244
UserContextMenu::execAdjustMod
void execAdjustMod(const QString &userName, bool shouldBeMod)
Definition
user_context_menu.cpp:749
UserListProxy
Definition
user_list_proxy.h:19
CommandContainer
Definition
commands.proto:8
GameInviteOption
Definition
game_link.h:32
Response
Definition
response.proto:11
user_level.h
cockatrice
src
interface
widgets
server
user
user_context_menu.h
Generated by
1.18.0