Cockatrice 2025-11-30-Development-2.11.0-beta.38
A cross-platform virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
phases_toolbar.h
Go to the documentation of this file.
1
7
8#ifndef PHASESTOOLBAR_H
9#define PHASESTOOLBAR_H
10
12
13#include <QFrame>
14#include <QGraphicsObject>
15#include <QList>
16
17namespace google
18{
19namespace protobuf
20{
21class Message;
22}
23} // namespace google
24class Player;
25class GameCommand;
26
27class PhaseButton : public QObject, public QGraphicsItem
28{
29 Q_OBJECT
30 Q_INTERFACES(QGraphicsItem)
31private:
32 QString name;
37 double width;
38
39 // void updatePixmap(QPixmap &pixmap);
40private slots:
41 void updateAnimation();
42
43public:
44 explicit PhaseButton(const QString &_name,
45 QGraphicsItem *parent = nullptr,
46 QAction *_doubleClickAction = nullptr,
47 bool _highlightable = true);
48 [[nodiscard]] QRectF boundingRect() const override;
49 void setWidth(double _width);
50 void setActive(bool _active);
51 [[nodiscard]] bool getActive() const
52 {
53 return active;
54 }
56signals:
57 void clicked();
58
59protected:
60 void paint(QPainter *painter, const QStyleOptionGraphicsItem * /*option*/, QWidget * /*widget*/) override;
61 void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
62 void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) override;
63};
64
65class PhasesToolbar : public QObject, public QGraphicsItem
66{
67 Q_OBJECT
68 Q_INTERFACES(QGraphicsItem)
69private:
70 QList<PhaseButton *> buttonList;
73 static const int buttonCount = 12;
74 static const int spaceCount = 6;
75 static const double marginSize;
76 void rearrangeButtons();
77
78public:
79 explicit PhasesToolbar(QGraphicsItem *parent = nullptr);
80 [[nodiscard]] QRectF boundingRect() const override;
81 void retranslateUi();
82 void setHeight(double _height);
83 [[nodiscard]] double getWidth() const
84 {
85 return width;
86 }
87 [[nodiscard]] int phaseCount() const
88 {
89 return buttonList.size();
90 }
91 [[nodiscard]] QString getLongPhaseName(int phase) const;
92public slots:
93 void setActivePhase(int phase);
94 void triggerPhaseAction(int phase);
95private slots:
96 void phaseButtonClicked();
97 void actNextTurn();
98 void actUntapAll();
99 void actDrawCard();
100signals:
101 void sendGameCommand(const ::google::protobuf::Message &command, int playerId);
102
103protected:
104 void paint(QPainter *painter, const QStyleOptionGraphicsItem * /*option*/, QWidget * /*widget*/) override;
105};
106
107#endif
TODO: Document this.
Definition phases_toolbar.h:28
void mousePressEvent(QGraphicsSceneMouseEvent *event) override
Definition phases_toolbar.cpp:89
bool getActive() const
Definition phases_toolbar.h:51
QRectF boundingRect() const override
Definition phases_toolbar.cpp:29
void triggerDoubleClickAction()
Definition phases_toolbar.cpp:99
void clicked()
void setActive(bool _active)
Definition phases_toolbar.cpp:63
void paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) override
Definition phases_toolbar.cpp:34
bool active
Definition phases_toolbar.h:33
PhaseButton(const QString &_name, QGraphicsItem *parent=nullptr, QAction *_doubleClickAction=nullptr, bool _highlightable=true)
Definition phases_toolbar.cpp:15
bool highlightable
Definition phases_toolbar.h:33
double width
Definition phases_toolbar.h:37
void setWidth(double _width)
Definition phases_toolbar.cpp:57
QAction * doubleClickAction
Definition phases_toolbar.h:36
QTimer * activeAnimationTimer
Definition phases_toolbar.h:35
QString name
Definition phases_toolbar.h:32
int activeAnimationCounter
Definition phases_toolbar.h:34
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) override
Definition phases_toolbar.cpp:94
void updateAnimation()
Definition phases_toolbar.cpp:72
double ySpacing
Definition phases_toolbar.h:72
static const double marginSize
Definition phases_toolbar.h:75
double symbolSize
Definition phases_toolbar.h:72
void setHeight(double _height)
Definition phases_toolbar.cpp:214
void triggerPhaseAction(int phase)
Definition phases_toolbar.cpp:235
void retranslateUi()
Definition phases_toolbar.cpp:144
QString getLongPhaseName(int phase) const
Definition phases_toolbar.cpp:150
void rearrangeButtons()
Definition phases_toolbar.cpp:187
int phaseCount() const
Definition phases_toolbar.h:87
double getWidth() const
Definition phases_toolbar.h:83
double height
Definition phases_toolbar.h:72
void actDrawCard()
Definition phases_toolbar.cpp:269
void actNextTurn()
Definition phases_toolbar.cpp:254
static const int spaceCount
Definition phases_toolbar.h:74
void sendGameCommand(const ::google::protobuf::Message &command, int playerId)
PhaseButton * nextTurnButton
Definition phases_toolbar.h:71
static const int buttonCount
Definition phases_toolbar.h:73
void setActivePhase(int phase)
Definition phases_toolbar.cpp:226
void phaseButtonClicked()
Definition phases_toolbar.cpp:242
void paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) override
Definition phases_toolbar.cpp:180
QList< PhaseButton * > buttonList
Definition phases_toolbar.h:70
PhasesToolbar(QGraphicsItem *parent=nullptr)
Definition phases_toolbar.cpp:105
void actUntapAll()
Definition phases_toolbar.cpp:259
QRectF boundingRect() const override
Definition phases_toolbar.cpp:139
double width
Definition phases_toolbar.h:72
Definition player.h:65
Definition phases_toolbar.h:20
Definition phases_toolbar.h:18