Cockatrice 2026-09-01-Development-3.1.0-beta.10
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
abstract_counter.h
Go to the documentation of this file.
1
6
7#ifndef COUNTER_H
8#define COUNTER_H
9
13
14#include <QGraphicsItem>
15#include <QInputDialog>
16
17class PlayerLogic;
18class QAction;
19class QKeyEvent;
20class QMenu;
21class QString;
22
23class AbstractCounter : public QObject, public QGraphicsItem, public AbstractPlayerComponent
24{
25 Q_OBJECT
26 Q_INTERFACES(QGraphicsItem)
27
28protected:
30 int id;
31 QString name;
32 int value;
33 QColor color;
34 int radius;
35 bool hovered = false;
37
43 virtual void onValueChanged(int oldValue, int newValue);
44
45 void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
46 void hoverEnterEvent(QGraphicsSceneHoverEvent *event) override;
47 void hoverLeaveEvent(QGraphicsSceneHoverEvent *event) override;
48
49private:
50 QAction *aSet = nullptr, *aDec = nullptr, *aInc = nullptr;
51 TearOffMenu *menu = nullptr;
52 bool dialogSemaphore = false;
53 bool deleteAfterDialog = false;
55 bool shortcutActive = false;
56
57private slots:
58 void refreshShortcuts();
59 void incrementCounter();
60 void setCounter();
61
62public:
66 bool useNameForShortcut = false,
67 QGraphicsItem *parent = nullptr);
68 ~AbstractCounter() override;
69
70 void retranslateUi() override;
71 void setShortcutsActive() override;
72 void setShortcutsInactive() override;
73 void delCounter();
74
75 QMenu *getMenu() const
76 {
77 return menu;
78 }
79 int getId() const
80 {
81 return id;
82 }
83 QString getName() const
84 {
85 return name;
86 }
87 QColor getColor() const
88 {
89 return color;
90 }
91 int getRadius() const
92 {
93 return radius;
94 }
95 int getValue() const
96 {
97 return value;
98 }
100 {
101 return shownInCounterArea;
102 }
103};
104
105class AbstractCounterDialog : public QInputDialog
106{
107 Q_OBJECT
108public:
109 AbstractCounterDialog(const QString &name, const QString &value, QWidget *parent = nullptr);
110
111protected:
112 bool eventFilter(QObject *obj, QEvent *event) override;
113 void changeValue(int diff);
114};
115
116#endif
Polymorphic interface for player-bound UI components managed by PlayerMenu.
void changeValue(int diff)
Definition abstract_counter.cpp:222
bool eventFilter(QObject *obj, QEvent *event) override
Definition abstract_counter.cpp:205
AbstractCounterDialog(const QString &name, const QString &value, QWidget *parent=nullptr)
Definition abstract_counter.cpp:196
QAction * aSet
Definition abstract_counter.h:50
void retranslateUi() override
Retranslate all user-visible strings. Called on language change.
Definition abstract_counter.cpp:84
int getValue() const
Definition abstract_counter.h:95
AbstractCounter(CounterState *state, PlayerLogic *player, bool shownInCounterArea, bool useNameForShortcut=false, QGraphicsItem *parent=nullptr)
Definition abstract_counter.cpp:21
int radius
Definition abstract_counter.h:34
bool hovered
Definition abstract_counter.h:35
void refreshShortcuts()
Definition abstract_counter.cpp:123
int value
Definition abstract_counter.h:32
bool getShownInCounterArea() const
Definition abstract_counter.h:99
int id
Definition abstract_counter.h:30
void setShortcutsActive() override
Bind keyboard shortcuts. Called when this player gains focus.
Definition abstract_counter.cpp:91
QColor color
Definition abstract_counter.h:33
QString name
Definition abstract_counter.h:31
int getId() const
Definition abstract_counter.h:79
void mousePressEvent(QGraphicsSceneMouseEvent *event) override
Definition abstract_counter.cpp:130
int getRadius() const
Definition abstract_counter.h:91
QMenu * getMenu() const
Definition abstract_counter.h:75
QAction * aDec
Definition abstract_counter.h:50
bool shownInCounterArea
Definition abstract_counter.h:54
~AbstractCounter() override
Definition abstract_counter.cpp:70
virtual void onValueChanged(int oldValue, int newValue)
Hook for subclasses that need per-value-change feedback (e.g. life-total flash).
Definition abstract_counter.cpp:233
TearOffMenu * menu
Definition abstract_counter.h:51
void hoverLeaveEvent(QGraphicsSceneHoverEvent *event) override
Definition abstract_counter.cpp:155
void incrementCounter()
Definition abstract_counter.cpp:161
PlayerLogic * player
Definition abstract_counter.h:29
QAction * aInc
Definition abstract_counter.h:50
bool useNameForShortcut
Definition abstract_counter.h:36
QColor getColor() const
Definition abstract_counter.h:87
void setShortcutsInactive() override
Unbind keyboard shortcuts. Called when this player loses focus.
Definition abstract_counter.cpp:109
bool shortcutActive
Definition abstract_counter.h:55
void delCounter()
Definition abstract_counter.cpp:75
QString getName() const
Definition abstract_counter.h:83
void setCounter()
Definition abstract_counter.cpp:169
void hoverEnterEvent(QGraphicsSceneHoverEvent *event) override
Definition abstract_counter.cpp:150
bool dialogSemaphore
Definition abstract_counter.h:52
bool deleteAfterDialog
Definition abstract_counter.h:53
Interface for player-bound UI components that need shortcut and translation lifecycle management.
Definition abstract_player_component.h:18
Definition counter_state.h:10
Definition player_logic.h:65
Definition tearoff_menu.h:15