Cockatrice 2026-10-19-Development-3.1.2-beta.2
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
player_menu.h
Go to the documentation of this file.
1
6
7#ifndef COCKATRICE_PLAYER_MENU_H
8#define COCKATRICE_PLAYER_MENU_H
9
11
12#include <QList>
13#include <QObject>
14#include <qtmetamacros.h>
15#include <utility>
16
17class CardItem;
18class CardMenu;
21class CustomZoneMenu;
22class GraveyardMenu;
23class HandMenu;
24class LibraryMenu;
25class QMenu;
26class RfgMenu;
27class SayMenu;
28class SideboardMenu;
29class TallyMenu;
30class UtilityMenu;
31struct CardRef;
32
33class PlayerMenu : public QObject
34{
35 Q_OBJECT
36
37signals:
38 void cardMenuUpdated(CardMenu *cardMenu);
39 void cardInfoRequested(const CardRef &cardRef);
43
44public slots:
46 QMenu *updateCardMenu(const CardItem *card);
47
48private slots:
49 void refreshShortcuts();
50
51public:
54 void retranslateUi();
55
56 [[nodiscard]] QMenu *getPlayerMenu() const
57 {
58 return playerMenu;
59 }
60
61 [[nodiscard]] QMenu *getCountersMenu()
62 {
63 return countersMenu;
64 }
65
66 [[nodiscard]] LibraryMenu *getLibraryMenu() const
67 {
68 return libraryMenu;
69 }
70
71 [[nodiscard]] UtilityMenu *getUtilityMenu() const
72 {
73 return utilityMenu;
74 }
75
76 [[nodiscard]] bool getShortcutsActive() const
77 {
78 return shortcutsActive;
79 }
80
82 void setShortcutsActive();
85
86private:
99
104 bool shortcutsActive = false;
105
107 template <typename MenuT, typename... Args> MenuT *addManagedMenu(Args &&...args)
108 {
109 auto *menu = new MenuT(std::forward<Args>(args)...);
110 playerMenu->addMenu(menu);
111 managedComponents.append(menu);
112 return menu;
113 }
114
116 template <typename ComponentT, typename... Args> ComponentT *createManagedComponent(Args &&...args)
117 {
118 auto *component = new ComponentT(std::forward<Args>(args)...);
119 managedComponents.append(component);
120 return component;
121 }
122};
123
124#endif // COCKATRICE_PLAYER_MENU_H
Interface for player-bound UI components that need shortcut and translation lifecycle management.
Definition abstract_player_component.h:18
Definition card_item.h:33
Definition card_menu.h:23
Definition custom_zone_menu.h:19
Definition grave_menu.h:21
Definition hand_menu.h:21
Definition library_menu.h:21
Definition player_graphics_item.h:39
QMenu * countersMenu
Definition player_menu.h:89
bool shortcutsActive
Definition player_menu.h:104
void retranslateRequested()
void cardMenuUpdated(CardMenu *cardMenu)
TearOffMenu * playerMenu
Definition player_menu.h:88
CustomZoneMenu * customZonesMenu
Definition player_menu.h:98
UtilityMenu * utilityMenu
Definition player_menu.h:95
HandMenu * handMenu
Definition player_menu.h:90
ComponentT * createManagedComponent(Args &&...args)
Creates component and registers in managedComponents, but does NOT add it as a submenu.
Definition player_menu.h:116
void refreshShortcuts()
Definition player_menu.cpp:127
void shortcutsDeactivated()
TallyMenu * tallyMenu
Definition player_menu.h:96
void setMenusForGraphicItems()
Definition player_menu.cpp:78
PlayerGraphicsItem * player
Definition player_menu.h:87
void retranslateUi()
Retranslate all user-visible strings. Called on language change.
Definition player_menu.cpp:112
QMenu * updateCardMenu(const CardItem *card)
Definition player_menu.cpp:90
MenuT * addManagedMenu(Args &&...args)
Creates component, adds it as a submenu of playerMenu, and registers in managedComponents.
Definition player_menu.h:107
SideboardMenu * sideboardMenu
Definition player_menu.h:92
QMenu * getCountersMenu()
Definition player_menu.h:61
void shortcutsActivated()
LibraryMenu * getLibraryMenu() const
Definition player_menu.h:66
LibraryMenu * libraryMenu
Definition player_menu.h:91
void setShortcutsInactive()
Unbind keyboard shortcuts. Called when this player loses focus.
Definition player_menu.cpp:151
void setShortcutsActive()
Bind keyboard shortcuts. Called when this player gains focus.
Definition player_menu.cpp:142
PlayerMenu(PlayerGraphicsItem *player)
Definition player_menu.cpp:30
QList< AbstractPlayerComponent * > managedComponents
Drives AbstractPlayerComponent lifecycle delegation. Counters are iterated separately via player->get...
Definition player_menu.h:103
SayMenu * sayMenu
Definition player_menu.h:97
bool getShortcutsActive() const
Definition player_menu.h:76
void cardInfoRequested(const CardRef &cardRef)
RfgMenu * rfgMenu
Definition player_menu.h:94
GraveyardMenu * graveMenu
Definition player_menu.h:93
UtilityMenu * getUtilityMenu() const
Definition player_menu.h:71
QMenu * getPlayerMenu() const
Definition player_menu.h:56
Definition remote_connection_controller.h:20
Definition rfg_menu.h:21
Definition say_menu.h:18
Definition sideboard_menu.h:19
Definition tally_menu.h:14
Definition tearoff_menu.h:15
Definition utility_menu.h:23
Definition card_ref.h:14