/** * @file game_view.h * @ingroup GameGraphics */ //! \todo Document this file. #ifndef GAMEVIEW_H #define GAMEVIEW_H #include "selection_subtype_tally.h" #include class GameScene; class QGridLayout; class QLabel; class QRubberBand; class GameView : public QGraphicsView { Q_OBJECT private: QAction *aCloseMostRecentZoneView; QRubberBand *rubberBand; QLabel *dragCountLabel; QLabel *totalCountLabel; QWidget *subtypeCountContainer; QGridLayout *subtypeCountLayout; QPointF selectionOrigin; QList cachedSubtypeEntries; ///< Cached entries to avoid redundant rebuilds QSize rebuildSubtypeLabels(const QList &entries); void clearSubtypeLabels(); protected: void resizeEvent(QResizeEvent *event) override; private slots: void startRubberBand(const QPointF &selectionOrigin); void resizeRubberBand(const QPointF &cursorPoint, int selectedCount); void stopRubberBand(); void refreshShortcuts(); void updateTotalSelectionCount(const QSize &viewSize = QSize()); void setFocusDisabled(bool disabled); public slots: void updateSceneRect(const QRectF &rect); public: explicit GameView(GameScene *scene, QWidget *parent = nullptr); }; #endif