Cockatrice 2026-10-19-Development-3.1.2-beta.2
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
visual_deck_editor_widget.h
Go to the documentation of this file.
1
6
7#ifndef VISUAL_DECK_EDITOR_H
8#define VISUAL_DECK_EDITOR_H
9
10#include <QHash>
11#include <QMouseEvent>
12#include <QPersistentModelIndex>
13#include <QString>
14#include <QStringList>
15#include <QWidget>
16#include <qtmetamacros.h>
17
23class CardSizeWidget;
25class DeckList;
26class DeckListModel;
27class ExactCard;
28class FlowWidget;
29class QCompleter;
30class QHBoxLayout;
31class QItemSelection;
32class QItemSelectionModel;
33class QLineEdit;
34class QModelIndex;
35class QScrollArea;
36class QVBoxLayout;
38
39enum class DisplayType
40{
43};
44
45class VisualDeckEditorWidget : public QWidget
46{
47 Q_OBJECT
48
49public:
50 explicit VisualDeckEditorWidget(QWidget *parent,
52 QItemSelectionModel *selectionModel,
53 CardDatabaseModel *_cardDatabaseModel = nullptr);
54 void retranslateUi();
55 void updateCompactMode();
57
58 void setDeckList(const DeckList &_deckListModel);
59
60 void setSelectionModel(QItemSelectionModel *model);
61 void onSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
63 QItemSelectionModel *getSelectionModel() const
64 {
65 return selectionModel;
66 }
67
68 QLineEdit *searchBar;
70
71public slots:
72 void decklistDataChanged(QModelIndex topLeft, QModelIndex bottomRight);
73 void updateZoneWidgets();
75 void onCardAddition(const QModelIndex &parent, int first, int last);
76 void onCardRemoval(const QModelIndex &parent, int first, int last);
77 void constructZoneWidgetForIndex(QPersistentModelIndex persistent);
79
80signals:
81 void activeCardChanged(const ExactCard &activeCard);
82 void activeGroupCriteriaChanged(QString activeGroupCriteria);
83 void activeSortCriteriaChanged(QStringList activeSortCriteria);
84 void cardClicked(QMouseEvent *event, const ExactCard &card, const QString &zoneName);
87
88protected:
90 void addCardFromSearch();
95
96protected slots:
97 void onHover(const ExactCard &hoveredCard);
98 void decklistModelReset();
99 void resizeEvent(QResizeEvent *event) override;
100
101private:
105 QItemSelectionModel *selectionModel;
106 QVBoxLayout *mainLayout;
111 QHBoxLayout *searchLayout;
112 QCompleter *completer;
116 QScrollArea *scrollArea;
120 // OverlapControlWidget *overlapControlWidget;
122};
123
124#endif // VISUAL_DECK_EDITOR_H
Definition card_completer_proxy_model.h:16
Definition card_database_display_model.h:27
Definition card_database_model.h:23
A widget for adjusting card sizes using a slider.
Definition card_size_widget.h:23
Definition compact_push_button.h:12
Definition deck_card_zone_display_widget.h:33
Qt model representing a decklist for use in views (tree/table).
Definition deck_list_model.h:228
Represents a complete deck, including metadata, zones, cards, and sideboard plans.
Definition deck_list.h:67
Represents a specific card instance, defined by its CardInfo and a particular printing.
Definition exact_card.h:24
Definition flow_widget.h:27
Definition mana_curve_category_widget.h:11
A widget that controls how deck cards are displayed in the visual deck editor.
Definition visual_deck_display_options_widget.h:34
Definition visual_deck_editor_placeholder_widget.h:11
QWidget * searchContainer
Definition visual_deck_editor_widget.h:110
void activeSortCriteriaChanged(QStringList activeSortCriteria)
void onCardAddition(const QModelIndex &parent, int first, int last)
Definition visual_deck_editor_widget.cpp:360
void cardAdditionRequested(const ExactCard &card)
void constructZoneWidgetsFromDeckListModel()
Definition visual_deck_editor_widget.cpp:306
VisualDeckEditorWidget(QWidget *parent, DeckListModel *deckListModel, QItemSelectionModel *selectionModel, CardDatabaseModel *_cardDatabaseModel=nullptr)
Definition visual_deck_editor_widget.cpp:47
CardSizeWidget * cardSizeWidget
Definition visual_deck_editor_widget.h:69
void decklistDataChanged(QModelIndex topLeft, QModelIndex bottomRight)
Definition visual_deck_editor_widget.cpp:397
VisualDeckEditorPlaceholderWidget * placeholderWidget
Definition visual_deck_editor_widget.h:119
void decklistModelReset()
Definition visual_deck_editor_widget.cpp:391
QVBoxLayout * mainLayout
Definition visual_deck_editor_widget.h:106
CompactPushButton * searchPushButton
Definition visual_deck_editor_widget.h:115
void initializeSearchBarAndCompleter()
Definition visual_deck_editor_widget.cpp:91
void clearAllDisplayWidgets()
Definition visual_deck_editor_widget.cpp:333
QItemSelectionModel * selectionModel
Definition visual_deck_editor_widget.h:105
QHBoxLayout * searchLayout
Definition visual_deck_editor_widget.h:111
void cardClicked(QMouseEvent *event, const ExactCard &card, const QString &zoneName)
void constructZoneWidgetForIndex(QPersistentModelIndex persistent)
Definition visual_deck_editor_widget.cpp:282
void initializeDisplayOptionsWidget()
Definition visual_deck_editor_widget.cpp:165
void onCardRemoval(const QModelIndex &parent, int first, int last)
Definition visual_deck_editor_widget.cpp:376
void onHover(const ExactCard &hoveredCard)
Definition visual_deck_editor_widget.cpp:411
CardDatabaseDisplayModel * cardDatabaseDisplayModel
Definition visual_deck_editor_widget.h:108
QHash< QPersistentModelIndex, QWidget * > indexToWidgetMap
Definition visual_deck_editor_widget.h:121
DeckListModel * deckListModel
Definition visual_deck_editor_widget.h:104
QItemSelectionModel * getSelectionModel() const
Definition visual_deck_editor_widget.h:63
QVBoxLayout * zoneContainerLayout
Definition visual_deck_editor_widget.h:118
void initializeDisplayOptionsAndSearchWidget()
Definition visual_deck_editor_widget.cpp:176
int expandedWidthAll
Definition visual_deck_editor_widget.h:102
int expandedWidthDisplayCompact
Definition visual_deck_editor_widget.h:103
void initializeScrollAreaAndZoneContainer()
Definition visual_deck_editor_widget.cpp:189
void setDeckList(const DeckList &_deckListModel)
void updatePlaceholderVisibility()
Definition visual_deck_editor_widget.cpp:271
void connectDeckListModel()
Definition visual_deck_editor_widget.cpp:213
void activeGroupCriteriaChanged(QString activeGroupCriteria)
void displayTypeChanged(DisplayType displayType)
void cleanupInvalidZones(DeckCardZoneDisplayWidget *displayWidget)
Definition visual_deck_editor_widget.cpp:344
void updateCompactMode()
Definition visual_deck_editor_widget.cpp:239
CardDatabaseModel * cardDatabaseModel
Definition visual_deck_editor_widget.h:107
void updateZoneWidgets()
Definition visual_deck_editor_widget.cpp:329
QScrollArea * scrollArea
Definition visual_deck_editor_widget.h:116
void onSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
Definition visual_deck_editor_widget.cpp:443
QWidget * zoneContainer
Definition visual_deck_editor_widget.h:117
QCompleter * completer
Definition visual_deck_editor_widget.h:112
QLineEdit * searchBar
Definition visual_deck_editor_widget.h:68
void retranslateUi()
Definition visual_deck_editor_widget.cpp:221
CardCompleterProxyModel * proxyModel
Definition visual_deck_editor_widget.h:109
FlowWidget * displayOptionsAndSearch
Definition visual_deck_editor_widget.h:113
void activeCardChanged(const ExactCard &activeCard)
void setSelectionModel(QItemSelectionModel *model)
Definition visual_deck_editor_widget.cpp:425
void addCardFromSearch()
Definition visual_deck_editor_widget.cpp:152
VisualDeckDisplayOptionsWidget * displayOptionsWidget
Definition visual_deck_editor_widget.h:114
void resizeEvent(QResizeEvent *event) override
Definition visual_deck_editor_widget.cpp:233
DisplayType
Definition visual_deck_editor_widget.h:40
@ Overlap
Definition visual_deck_editor_widget.h:42
@ Flat
Definition visual_deck_editor_widget.h:41