Cockatrice 2026-06-27-Development-3.1.0-beta.3
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
12#include "../../key_signals.h"
20
21#include <QLoggingCategory>
22#include <QVBoxLayout>
23#include <QWheelEvent>
24#include <QWidget>
27#include <qscrollarea.h>
28
29inline Q_LOGGING_CATEGORY(VisualDatabaseDisplayLog, "visual_database_display");
30
31class VisualDatabaseDisplayWidget : public QWidget
32{
33 Q_OBJECT
34
35public:
36 explicit VisualDatabaseDisplayWidget(QWidget *parent,
37 CardDatabaseModel *database_model,
38 DeckListModel *deckListModel = nullptr);
39 void retranslateUi();
40
42 void populateCards();
43 void loadPage(int start, int end);
44 void loadNextPage();
45 void loadCurrentPage();
46 void sortCardList(const QStringList &properties, Qt::SortOrder order) const;
47 void setDeckList(const DeckList &new_deck_list_model);
48
53
58
63
67 bool isVisualDisplayMode() const;
68
69public slots:
71
72signals:
73 void cardClickedDatabaseDisplay(QMouseEvent *event, const ExactCard &card);
74 void cardHoveredDatabaseDisplay(const ExactCard &hoveredCard);
75
76 void cardAdded(const ExactCard &card, const QString &zoneName);
77 void cardDecremented(const ExactCard &card, const QString &zoneName);
78 void edhrecRequested(const CardInfoPtr &cardInfo, bool isCommander);
80 void cardInfoRequested(const ExactCard &cardName);
81
82protected slots:
83 void initialize();
84 void onClick(QMouseEvent *event, const ExactCard &card);
85 void onHover(const ExactCard &hoveredCard);
86 void addCardToDisplay(const ExactCard &cardToAdd);
87 void databaseDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight);
88 void modelDirty() const;
89 void onDisplayModeChanged(bool checked);
90
91 void onSelectedCardChanged(const QString &cardName);
92 void actAddCard(const QString &cardName, const QString &zoneName);
93 void actDecrementCard(const QString &cardName, const QString &zoneName);
94 void onRelatedCardClicked(const QString &relatedCard);
95
96private:
99 QPushButton *displayModeButton;
102
104
105 QToolButton *clearFilterWidget;
109 QList<ExactCard> *cards;
110 QVBoxLayout *mainLayout;
111 QScrollArea *scrollArea;
119
120 int debounceTime = 300; // in Ms
121 int currentPage = 0; // Current page index
122 int cardsPerPage = 100; // Number of cards per page
123
125 bool nearEndOfPage() const;
126
127protected:
128 void resizeEvent(QResizeEvent *event) override;
129};
130
131#endif // VISUAL_DATABASE_DISPLAY_WIDGET_H
Defines the AbstractTabDeckEditor class, which provides a base for deck editor tabs in the applicatio...
The CardDatabaseModel maps the cardList contained in the CardDatabase as a QAbstractListModel.
QSharedPointer< CardInfo > CardInfoPtr
Definition card_info.cpp:20
Definition card_database_display_model.h:17
Definition card_database_model.h:16
The card database table.
Definition card_database_view.h:16
A widget for adjusting card sizes using a slider.
Definition card_size_widget.h:21
Qt model representing a decklist for use in views (tree/table).
Definition deck_list_model.h:217
Represents a complete deck, including metadata, zones, cards, and sideboard plans.
Definition deck_list.h:63
Represents a specific card instance, defined by its CardInfo and a particular printing.
Definition exact_card.h:19
Definition filter_tree_model.h:18
Definition flow_widget.h:22
Definition overlap_control_widget.h:17
Definition custom_line_edit.h:35
Definition visual_database_display_color_filter_widget.h:45
Definition visual_database_display_filter_toolbar_widget.h:14
VisualDatabaseDisplayWidget(QWidget *parent, CardDatabaseModel *database_model, DeckListModel *deckListModel=nullptr)
Definition visual_database_display_widget.cpp:25
FlowWidget * flowWidget
Definition visual_database_display_widget.h:112
VisualDatabaseDisplayColorFilterWidget * colorFilterWidget
Definition visual_database_display_widget.h:101
OverlapControlWidget * overlapControlWidget
Definition visual_database_display_widget.h:115
void cardDecremented(const ExactCard &card, const QString &zoneName)
QPushButton * displayModeButton
Definition visual_database_display_widget.h:99
QVBoxLayout * mainLayout
Definition visual_database_display_widget.h:110
void initialize()
Definition visual_database_display_widget.cpp:137
void actAddCard(const QString &cardName, const QString &zoneName)
Definition visual_database_display_widget.cpp:256
SearchLineEdit * searchEdit
Definition visual_database_display_widget.h:98
QVBoxLayout * overlapCategoriesLayout
Definition visual_database_display_widget.h:114
void loadNextPage()
Definition visual_database_display_widget.cpp:308
void onDisplayModeChanged(bool checked)
Definition visual_database_display_widget.cpp:189
void resizeEvent(QResizeEvent *event) override
Definition visual_database_display_widget.cpp:183
void cardAdded(const ExactCard &card, const QString &zoneName)
void addCardToDisplay(const ExactCard &cardToAdd)
Definition visual_database_display_widget.cpp:218
QTimer * loadCardsTimer
Definition visual_database_display_widget.h:118
CardDatabaseDisplayModel * databaseDisplayModel
Definition visual_database_display_widget.h:107
void onClick(QMouseEvent *event, const ExactCard &card)
Definition visual_database_display_widget.cpp:208
void onSelectedCardChanged(const QString &cardName)
Definition visual_database_display_widget.cpp:251
CardDatabaseView * databaseView
Definition visual_database_display_widget.h:108
void sortCardList(const QStringList &properties, Qt::SortOrder order) const
Definition visual_database_display_widget.cpp:360
void loadCurrentPage()
Definition visual_database_display_widget.cpp:289
int currentPage
Definition visual_database_display_widget.h:121
int debounceTime
Definition visual_database_display_widget.h:120
void populateCards()
Definition visual_database_display_widget.cpp:302
QToolButton * clearFilterWidget
Definition visual_database_display_widget.h:105
bool isVisualDisplayMode() const
Definition visual_database_display_widget.cpp:230
void cardClickedDatabaseDisplay(QMouseEvent *event, const ExactCard &card)
FlowWidget * searchContainer
Definition visual_database_display_widget.h:97
void highlightAllSearchEdit()
Definition visual_database_display_widget.cpp:178
QList< ExactCard > * cards
Definition visual_database_display_widget.h:109
CardDatabaseView * getDatabaseView()
Definition visual_database_display_widget.h:54
void modelDirty() const
Definition visual_database_display_widget.cpp:355
void loadPage(int start, int end)
Definition visual_database_display_widget.cpp:326
FilterTreeModel * filterModel
Definition visual_database_display_widget.h:100
void retranslateUi()
Definition visual_database_display_widget.cpp:172
void setDeckList(const DeckList &new_deck_list_model)
QTimer * debounceTimer
Definition visual_database_display_widget.h:117
QScrollArea * scrollArea
Definition visual_database_display_widget.h:111
bool nearEndOfPage() const
Definition visual_database_display_widget.cpp:275
CardDatabaseDisplayModel * getDatabaseDisplayModel()
Definition visual_database_display_widget.h:49
void actDecrementCard(const QString &cardName, const QString &zoneName)
Definition visual_database_display_widget.cpp:263
void onSearchModelChanged()
Definition visual_database_display_widget.cpp:235
VisualDatabaseDisplayFilterToolbarWidget * filterContainer
Definition visual_database_display_widget.h:106
void cardInfoRequested(const ExactCard &cardName)
void onRelatedCardClicked(const QString &relatedCard)
Definition visual_database_display_widget.cpp:269
void edhrecRequested(const CardInfoPtr &cardInfo, bool isCommander)
int cardsPerPage
Definition visual_database_display_widget.h:122
CardSizeWidget * cardSizeWidget
Definition visual_database_display_widget.h:116
void cardHoveredDatabaseDisplay(const ExactCard &hoveredCard)
QWidget * overlapCategories
Definition visual_database_display_widget.h:113
void onHover(const ExactCard &hoveredCard)
Definition visual_database_display_widget.cpp:213
void databaseDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight)
Definition visual_database_display_widget.cpp:369
FilterTreeModel * getFilterModel()
Definition visual_database_display_widget.h:59
QLabel * databaseLoadIndicator
Definition visual_database_display_widget.h:103
A QWidget that wraps a FlowLayout inside an optional QScrollArea.
Q_LOGGING_CATEGORY(VisualDatabaseDisplayLog, "visual_database_display")