Cockatrice 2026-10-19-Development-3.1.2-beta.2
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
view_zone.h
Go to the documentation of this file.
1
6
7#ifndef ZONEVIEWERZONE_H
8#define ZONEVIEWERZONE_H
9
11#include "select_zone.h"
12
13#include <QGraphicsLayoutItem>
14#include <QList>
15#include <QLoggingCategory>
16#include <QRectF>
17#include <QSizeF>
18#include <QString>
20#include <qnamespace.h>
21#include <qtmetamacros.h>
22
23// IWYU pragma: keep
24// ServerInfo_Card appears inside QList<...> in signal and slot
25// signatures, which the moc-generated code needs to be complete.
26#include <libcockatrice/protocol/pb/serverinfo_card.pb.h>
27
28class QGraphicsItem;
30
31inline Q_LOGGING_CATEGORY(ViewZoneLog, "view_zone");
32
33class Response;
34class ServerInfo_Card;
35class QGraphicsSceneWheelEvent;
36
46class ZoneViewZone : public SelectZone, public QGraphicsLayoutItem
47{
48 Q_OBJECT
49 Q_INTERFACES(QGraphicsLayoutItem)
50private:
51 static constexpr int HORIZONTAL_PADDING = 12;
52 static constexpr int VERTICAL_PADDING = 5;
53
59
60 struct GridSize
61 {
62 int rows;
63 int cols;
64 };
65
67
68 void
69 handleDropEvent(const QList<CardDragItem *> &dragItems, CardZoneLogic *startZone, const QPoint &dropPoint) override;
70
71public:
72 ZoneViewZone(ZoneViewZoneLogic *_logic, QGraphicsItem *parent);
73 [[nodiscard]] QRectF boundingRect() const override;
74 void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
75 void reorganizeCards() override;
77 void setGeometry(const QRectF &rect) override;
78 [[nodiscard]] QRectF getOptimumRect() const
79 {
80 return optimumRect;
81 }
82public slots:
83 void addToViews();
84 void removeFromViews();
85 void close();
86 void setFilterString(const QString &_filterString);
87 void setGroupBy(CardList::SortOption _groupBy);
88 void setSortBy(CardList::SortOption _sortBy);
89 void setPileView(int _pileView);
90private slots:
91 void zoneDumpReceived(const Response &r);
92signals:
93 void closed();
95 void wheelEventReceived(QGraphicsSceneWheelEvent *event);
96
97protected:
98 [[nodiscard]] QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const override;
99 void wheelEvent(QGraphicsSceneWheelEvent *event) override;
100};
101
102#endif
Definition card_list.h:20
SortOption
Definition card_list.h:26
@ NoSort
Definition card_list.h:27
Definition card_zone_logic.h:27
Definition filter_string.h:35
FilterString()
Definition filter_string.cpp:430
Definition remote_connection_controller.h:20
SelectZone(CardZoneLogic *logic, QGraphicsItem *parent=nullptr)
Definition select_zone.cpp:156
Definition view_zone_logic.h:17
void wheelEventReceived(QGraphicsSceneWheelEvent *event)
static constexpr int VERTICAL_PADDING
Definition view_zone.h:52
QRectF getOptimumRect() const
Definition view_zone.h:78
CardList::SortOption sortBy
Definition view_zone.h:57
bool pileView
Definition view_zone.h:58
CardList::SortOption groupBy
Definition view_zone.h:57
QRectF optimumRect
Definition view_zone.h:54
QRectF boundingRect() const override
Definition view_zone.cpp:76
void wheelEvent(QGraphicsSceneWheelEvent *event) override
Definition view_zone.cpp:336
static constexpr int HORIZONTAL_PADDING
Definition view_zone.h:51
void handleDropEvent(const QList< CardDragItem * > &dragItems, CardZoneLogic *startZone, const QPoint &dropPoint) override
Definition view_zone.cpp:300
void removeFromViews()
Definition view_zone.cpp:57
int minRows
Definition view_zone.h:55
ZoneViewZone(ZoneViewZoneLogic *_logic, QGraphicsItem *parent)
Definition view_zone.cpp:42
void setSortBy(CardList::SortOption _sortBy)
Definition view_zone.cpp:288
void close()
Definition view_zone.cpp:66
GridSize positionCardsForDisplay(CardList &cards, CardList::SortOption pileOption=CardList::NoSort)
Sets the position of each card to the proper position for the view.
Definition view_zone.cpp:207
void initializeCards(const QList< const ServerInfo_Card * > &cardList=QList< const ServerInfo_Card * >())
Definition view_zone.cpp:88
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override
Definition view_zone.cpp:81
void reorganizeCards() override
Definition view_zone.cpp:146
QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint=QSizeF()) const override
Definition view_zone.cpp:331
FilterString filterString
Definition view_zone.h:56
void addToViews()
Definition view_zone.cpp:52
void optimumRectChanged()
void setGeometry(const QRectF &rect) override
Definition view_zone.cpp:324
void zoneDumpReceived(const Response &r)
Definition view_zone.cpp:125
void setGroupBy(CardList::SortOption _groupBy)
Definition view_zone.cpp:282
void setFilterString(const QString &_filterString)
Definition view_zone.cpp:273
QRectF bRect
Definition view_zone.h:54
void setPileView(int _pileView)
Definition view_zone.cpp:294
Q_LOGGING_CATEGORY(CrashReportLog, "crash_report")
Base class for zones where cards are laid out and individually interactable.
Definition response.proto:11
Definition serverinfo_card.proto:5
Definition view_zone.h:61
int cols
Definition view_zone.h:63
int rows
Definition view_zone.h:62