#ifndef PHASESTOOLBAR_H #define PHASESTOOLBAR_H #include #include #include class Player; class GameCommand; class PhaseButton : public QObject, public QGraphicsItem { Q_OBJECT private: QString name; bool active, highlightable; int activeAnimationCounter; QTimer *activeAnimationTimer; QAction *doubleClickAction; double width; void updatePixmap(QPixmap &pixmap); private slots: void updateAnimation(); public: PhaseButton(const QString &_name, QGraphicsItem *parent = 0, QAction *_doubleClickAction = 0, bool _highlightable = true); QRectF boundingRect() const; void setWidth(double _width); void setActive(bool _active); bool getActive() const { return active; } void triggerDoubleClickAction(); signals: void clicked(); protected: void paint(QPainter *painter, const QStyleOptionGraphicsItem * /*option*/, QWidget * /*widget*/); void mousePressEvent(QGraphicsSceneMouseEvent *event); void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); }; class PhasesToolbar : public QObject, public QGraphicsItem { Q_OBJECT private: QList buttonList; PhaseButton *nextTurnButton; double width, height, ySpacing, symbolSize; static const int buttonCount = 12; static const int spaceCount = 6; static const double margin = 3; void rearrangeButtons(); public: PhasesToolbar(QGraphicsItem *parent = 0); QRectF boundingRect() const; void retranslateUi(); void setHeight(double _height); double getWidth() const { return width; } int phaseCount() const { return buttonList.size(); } QString getLongPhaseName(int phase) const; public slots: void setActivePhase(int phase); private slots: void phaseButtonClicked(); void actNextTurn(); void actUntapAll(); void actDrawCard(); signals: void sendGameCommand(GameCommand *command, int playerId); protected: void paint(QPainter *painter, const QStyleOptionGraphicsItem * /*option*/, QWidget * /*widget*/); }; #endif