Cockatrice 2026-09-01-Development-3.1.0-beta.10
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#include "custom_zone_menu.h"
12#include "grave_menu.h"
13#include "hand_menu.h"
14#include "library_menu.h"
15#include "rfg_menu.h"
16#include "say_menu.h"
17#include "sideboard_menu.h"
18#include "tally_menu.h"
19#include "utility_menu.h"
20
21#include <QList>
22#include <QMenu>
23#include <QObject>
25
26class CardItem;
27class CardMenu;
29class PlayerMenu : public QObject
30{
31 Q_OBJECT
32
33signals:
34 void cardMenuUpdated(CardMenu *cardMenu);
35 void cardInfoRequested(const CardRef &cardRef);
39
40public slots:
42 QMenu *updateCardMenu(const CardItem *card);
43
44private slots:
45 void refreshShortcuts();
46
47public:
50 void retranslateUi();
51
52 [[nodiscard]] QMenu *getPlayerMenu() const
53 {
54 return playerMenu;
55 }
56
57 [[nodiscard]] QMenu *getCountersMenu()
58 {
59 return countersMenu;
60 }
61
62 [[nodiscard]] LibraryMenu *getLibraryMenu() const
63 {
64 return libraryMenu;
65 }
66
67 [[nodiscard]] UtilityMenu *getUtilityMenu() const
68 {
69 return utilityMenu;
70 }
71
72 [[nodiscard]] bool getShortcutsActive() const
73 {
74 return shortcutsActive;
75 }
76
78 void setShortcutsActive();
81
82private:
95
99 QList<AbstractPlayerComponent *> managedComponents;
100 bool shortcutsActive = false;
101
103 template <typename MenuT, typename... Args> MenuT *addManagedMenu(Args &&...args)
104 {
105 auto *menu = new MenuT(std::forward<Args>(args)...);
106 playerMenu->addMenu(menu);
107 managedComponents.append(menu);
108 return menu;
109 }
110
112 template <typename ComponentT, typename... Args> ComponentT *createManagedComponent(Args &&...args)
113 {
114 auto *component = new ComponentT(std::forward<Args>(args)...);
115 managedComponents.append(component);
116 return component;
117 }
118};
119
120#endif // COCKATRICE_PLAYER_MENU_H
Definition card_item.h:27
Definition card_menu.h:17
Definition custom_zone_menu.h:16
Definition grave_menu.h:18
Definition hand_menu.h:20
Definition library_menu.h:21
Definition player_graphics_item.h:26
QMenu * countersMenu
Definition player_menu.h:85
bool shortcutsActive
Definition player_menu.h:100
void retranslateRequested()
void cardMenuUpdated(CardMenu *cardMenu)
TearOffMenu * playerMenu
Definition player_menu.h:84
CustomZoneMenu * customZonesMenu
Definition player_menu.h:94
UtilityMenu * utilityMenu
Definition player_menu.h:91
HandMenu * handMenu
Definition player_menu.h:86
ComponentT * createManagedComponent(Args &&...args)
Creates component and registers in managedComponents, but does NOT add it as a submenu.
Definition player_menu.h:112
void refreshShortcuts()
Definition player_menu.cpp:112
void shortcutsDeactivated()
TallyMenu * tallyMenu
Definition player_menu.h:92
void setMenusForGraphicItems()
Definition player_menu.cpp:63
PlayerGraphicsItem * player
Definition player_menu.h:83
void retranslateUi()
Retranslate all user-visible strings. Called on language change.
Definition player_menu.cpp:97
QMenu * updateCardMenu(const CardItem *card)
Definition player_menu.cpp:75
MenuT * addManagedMenu(Args &&...args)
Creates component, adds it as a submenu of playerMenu, and registers in managedComponents.
Definition player_menu.h:103
SideboardMenu * sideboardMenu
Definition player_menu.h:88
QMenu * getCountersMenu()
Definition player_menu.h:57
void shortcutsActivated()
LibraryMenu * getLibraryMenu() const
Definition player_menu.h:62
LibraryMenu * libraryMenu
Definition player_menu.h:87
void setShortcutsInactive()
Unbind keyboard shortcuts. Called when this player loses focus.
Definition player_menu.cpp:136
void setShortcutsActive()
Bind keyboard shortcuts. Called when this player gains focus.
Definition player_menu.cpp:127
PlayerMenu(PlayerGraphicsItem *player)
Definition player_menu.cpp:15
QList< AbstractPlayerComponent * > managedComponents
Drives AbstractPlayerComponent lifecycle delegation. Counters are iterated separately via player->get...
Definition player_menu.h:99
SayMenu * sayMenu
Definition player_menu.h:93
bool getShortcutsActive() const
Definition player_menu.h:72
void cardInfoRequested(const CardRef &cardRef)
RfgMenu * rfgMenu
Definition player_menu.h:90
GraveyardMenu * graveMenu
Definition player_menu.h:89
UtilityMenu * getUtilityMenu() const
Definition player_menu.h:67
QMenu * getPlayerMenu() const
Definition player_menu.h:52
Definition rfg_menu.h:18
Definition say_menu.h:16
Definition sideboard_menu.h:16
Definition tally_menu.h:11
Definition tearoff_menu.h:15
Definition utility_menu.h:17
Definition card_ref.h:14