Cockatrice 2026-10-19-Development-3.1.2-beta.2
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
visual_database_display_widget.h
Go to the documentation of this file.
1
6
7#ifndef VISUAL_DATABASE_DISPLAY_WIDGET_H
8#define VISUAL_DATABASE_DISPLAY_WIDGET_H
9
11
12#include <QLoggingCategory>
13#include <QMouseEvent>
14#include <QString>
15#include <QStringList>
16#include <QWidget>
17#include <functional>
18#include <qnamespace.h>
19#include <qtmetamacros.h>
20
24class CardSizeWidget;
25class DeckList;
26class DeckListModel;
27class ExactCard;
28class FilterTreeModel;
29class FlowWidget;
31class QLabel;
32class QModelIndex;
33class QPushButton;
34class QScrollArea;
35class QTimer;
36class QToolButton;
37class QVBoxLayout;
38class SearchLineEdit;
41template <typename T> class QList;
42
43inline Q_LOGGING_CATEGORY(VisualDatabaseDisplayLog, "visual_database_display");
44
45class VisualDatabaseDisplayWidget : public QWidget
46{
47 Q_OBJECT
48
49public:
50 explicit VisualDatabaseDisplayWidget(QWidget *parent,
51 CardDatabaseModel *database_model,
52 DeckListModel *deckListModel = nullptr);
53 void retranslateUi();
54
56 void populateCards();
57 void loadPage(int start, int end);
58 void loadNextPage();
59 void loadCurrentPage();
60 void sortCardList(const QStringList &properties, Qt::SortOrder order) const;
61 void setDeckList(const DeckList &new_deck_list_model);
62
67 void setNewZoneCreator(const std::function<QString()> &creator);
68
73
78
83
87 bool isVisualDisplayMode() const;
88
89public slots:
91
92signals:
93 void cardClickedDatabaseDisplay(QMouseEvent *event, const ExactCard &card);
94 void cardHoveredDatabaseDisplay(const ExactCard &hoveredCard);
95
96 void cardAdded(const ExactCard &card, const QString &zoneName);
97 void cardDecremented(const ExactCard &card, const QString &zoneName);
98 void edhrecRequested(const CardInfoPtr &cardInfo, bool isCommander);
100 void cardInfoRequested(const ExactCard &cardName);
101
102protected slots:
103 void initialize();
104 void onClick(QMouseEvent *event, const ExactCard &card);
105 void onHover(const ExactCard &hoveredCard);
106 void addCardToDisplay(const ExactCard &cardToAdd);
107 void databaseDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight);
108 void modelDirty() const;
109 void onDisplayModeChanged(bool checked);
110
111 void onSelectedCardChanged(const QString &cardName);
112 void actAddCard(const QString &cardName, const QString &zoneName);
113 void actDecrementCard(const QString &cardName, const QString &zoneName);
114 void onRelatedCardClicked(const QString &relatedCard);
115
116private:
119 QPushButton *displayModeButton;
122
124
125 QToolButton *clearFilterWidget;
129 std::function<QString()> newZoneCreator;
131 QVBoxLayout *mainLayout;
132 QScrollArea *scrollArea;
139
140 int debounceTime = 300; // in Ms
141 int currentPage = 0; // Current page index
142 int cardsPerPage = 100; // Number of cards per page
143 bool filtersInitialized = false;
145
146 void initializeFilters();
148 bool nearEndOfPage() const;
149
150protected:
151 void resizeEvent(QResizeEvent *event) override;
152 void showEvent(QShowEvent *event) override;
153};
154
155#endif // VISUAL_DATABASE_DISPLAY_WIDGET_H
QSharedPointer< CardInfo > CardInfoPtr
Definition card_info.cpp:15
Definition card_database_display_model.h:27
Definition card_database_model.h:23
The card database table.
Definition card_database_view.h:24
A widget for adjusting card sizes using a slider.
Definition card_size_widget.h:23
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 filter_tree_model.h:22
Definition flow_widget.h:27
Definition overlap_control_widget.h:19
Definition remote_connection_controller.h:20
Definition custom_line_edit.h:36
Definition visual_database_display_color_filter_widget.h:50
Definition visual_database_display_filter_toolbar_widget.h:22
VisualDatabaseDisplayWidget(QWidget *parent, CardDatabaseModel *database_model, DeckListModel *deckListModel=nullptr)
Definition visual_database_display_widget.cpp:61
void showEvent(QShowEvent *event) override
Definition visual_database_display_widget.cpp:251
FlowWidget * flowWidget
Definition visual_database_display_widget.h:133
VisualDatabaseDisplayColorFilterWidget * colorFilterWidget
Definition visual_database_display_widget.h:121
OverlapControlWidget * overlapControlWidget
Definition visual_database_display_widget.h:136
void cardDecremented(const ExactCard &card, const QString &zoneName)
QPushButton * displayModeButton
Definition visual_database_display_widget.h:119
QVBoxLayout * mainLayout
Definition visual_database_display_widget.h:131
void initialize()
Definition visual_database_display_widget.cpp:199
void actAddCard(const QString &cardName, const QString &zoneName)
Definition visual_database_display_widget.cpp:346
SearchLineEdit * searchEdit
Definition visual_database_display_widget.h:118
QVBoxLayout * overlapCategoriesLayout
Definition visual_database_display_widget.h:135
void loadNextPage()
Definition visual_database_display_widget.cpp:406
void onDisplayModeChanged(bool checked)
Definition visual_database_display_widget.cpp:279
void resizeEvent(QResizeEvent *event) override
Definition visual_database_display_widget.cpp:273
std::function< QString()> newZoneCreator
Definition visual_database_display_widget.h:129
bool filtersInitialized
Definition visual_database_display_widget.h:143
void cardAdded(const ExactCard &card, const QString &zoneName)
void addCardToDisplay(const ExactCard &cardToAdd)
Definition visual_database_display_widget.cpp:308
CardDatabaseDisplayModel * databaseDisplayModel
Definition visual_database_display_widget.h:127
void onClick(QMouseEvent *event, const ExactCard &card)
Definition visual_database_display_widget.cpp:298
void setNewZoneCreator(const std::function< QString()> &creator)
Sets the callback used to create a custom zone from the add-to-zone menu. The callback returns the na...
Definition visual_database_display_widget.cpp:257
void onSelectedCardChanged(const QString &cardName)
Definition visual_database_display_widget.cpp:341
CardDatabaseView * databaseView
Definition visual_database_display_widget.h:128
void sortCardList(const QStringList &properties, Qt::SortOrder order) const
Definition visual_database_display_widget.cpp:458
void loadCurrentPage()
Definition visual_database_display_widget.cpp:379
int currentPage
Definition visual_database_display_widget.h:141
int debounceTime
Definition visual_database_display_widget.h:140
void populateCards()
Definition visual_database_display_widget.cpp:400
QToolButton * clearFilterWidget
Definition visual_database_display_widget.h:125
bool isVisualDisplayMode() const
Definition visual_database_display_widget.cpp:320
void cardClickedDatabaseDisplay(QMouseEvent *event, const ExactCard &card)
FlowWidget * searchContainer
Definition visual_database_display_widget.h:117
void highlightAllSearchEdit()
Definition visual_database_display_widget.cpp:268
QList< ExactCard > * cards
Definition visual_database_display_widget.h:130
CardDatabaseView * getDatabaseView()
Definition visual_database_display_widget.h:74
void modelDirty() const
Definition visual_database_display_widget.cpp:453
void loadPage(int start, int end)
Definition visual_database_display_widget.cpp:424
FilterTreeModel * filterModel
Definition visual_database_display_widget.h:120
void retranslateUi()
Definition visual_database_display_widget.cpp:262
void setDeckList(const DeckList &new_deck_list_model)
bool initialLoadScheduled
Definition visual_database_display_widget.h:144
QTimer * debounceTimer
Definition visual_database_display_widget.h:138
QScrollArea * scrollArea
Definition visual_database_display_widget.h:132
bool nearEndOfPage() const
Definition visual_database_display_widget.cpp:365
CardDatabaseDisplayModel * getDatabaseDisplayModel()
Definition visual_database_display_widget.h:69
void actDecrementCard(const QString &cardName, const QString &zoneName)
Definition visual_database_display_widget.cpp:353
void onSearchModelChanged()
Definition visual_database_display_widget.cpp:325
VisualDatabaseDisplayFilterToolbarWidget * filterContainer
Definition visual_database_display_widget.h:126
void cardInfoRequested(const ExactCard &cardName)
void onRelatedCardClicked(const QString &relatedCard)
Definition visual_database_display_widget.cpp:359
void edhrecRequested(const CardInfoPtr &cardInfo, bool isCommander)
int cardsPerPage
Definition visual_database_display_widget.h:142
CardSizeWidget * cardSizeWidget
Definition visual_database_display_widget.h:137
void cardHoveredDatabaseDisplay(const ExactCard &hoveredCard)
QWidget * overlapCategories
Definition visual_database_display_widget.h:134
void onHover(const ExactCard &hoveredCard)
Definition visual_database_display_widget.cpp:303
void initializeFilters()
Definition visual_database_display_widget.cpp:223
void databaseDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight)
Definition visual_database_display_widget.cpp:467
FilterTreeModel * getFilterModel()
Definition visual_database_display_widget.h:79
QLabel * databaseLoadIndicator
Definition visual_database_display_widget.h:123
Q_LOGGING_CATEGORY(CrashReportLog, "crash_report")