Cockatrice 2026-01-14-Development-2.11.0-beta.46
A cross-platform 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,
38 CardDatabaseModel *database_model,
39 CardDatabaseDisplayModel *database_display_model);
40 void retranslateUi();
41
43 void populateCards();
44 void loadPage(int start, int end);
45 void loadNextPage();
46 void loadCurrentPage();
47 void sortCardList(const QStringList &properties, Qt::SortOrder order) const;
48 void setDeckList(const DeckList &new_deck_list_model);
49
54
59
60 QTreeView *getDatabaseView()
61 {
62 return databaseView;
63 }
64
66 QHBoxLayout *searchLayout;
68 QPushButton *displayModeButton;
71
72public slots:
74
75signals:
77 void cardHoveredDatabaseDisplay(const ExactCard &hoveredCard);
78
79protected slots:
80 void initialize();
81 void onClick(QMouseEvent *event, CardInfoPictureWithTextOverlayWidget *instance);
82 void onHover(const ExactCard &hoveredCard);
83 void addCard(const ExactCard &cardToAdd);
84 void databaseDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight);
85 void wheelEvent(QWheelEvent *event) override;
86 void modelDirty() const;
87 void updateSearch(const QString &search) const;
88 void onDisplayModeChanged(bool checked);
89
90private:
92
93 QToolButton *clearFilterWidget;
99 QTreeView *databaseView;
100 QList<ExactCard> *cards;
101 QVBoxLayout *mainLayout;
102 QScrollArea *scrollArea;
110
111 int debounceTime = 300; // in Ms
112 int currentPage = 0; // Current page index
113 int cardsPerPage = 100; // Number of cards per page
114
115protected:
116 void resizeEvent(QResizeEvent *event) override;
117};
118
119#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.
TODO: Document this.
AbstractTabDeckEditor is the base class for all deck editor tabs.
Definition abstract_tab_deck_editor.h:93
Definition card_database_display_model.h:17
Definition card_database_model.h:16
Definition card_info_picture_with_text_overlay_widget.h:18
A widget for adjusting card sizes using a slider.
Definition card_size_widget.h:21
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:20
Definition key_signals.h:15
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
QHBoxLayout * searchLayout
Definition visual_database_display_widget.h:66
FlowWidget * flowWidget
Definition visual_database_display_widget.h:103
VisualDatabaseDisplayColorFilterWidget * colorFilterWidget
Definition visual_database_display_widget.h:70
void wheelEvent(QWheelEvent *event) override
Definition visual_database_display_widget.cpp:341
OverlapControlWidget * overlapControlWidget
Definition visual_database_display_widget.h:106
QPushButton * displayModeButton
Definition visual_database_display_widget.h:68
QWidget * searchContainer
Definition visual_database_display_widget.h:65
QVBoxLayout * mainLayout
Definition visual_database_display_widget.h:101
void initialize()
Definition visual_database_display_widget.cpp:138
QTreeView * getDatabaseView()
Definition visual_database_display_widget.h:60
SearchLineEdit * searchEdit
Definition visual_database_display_widget.h:67
QVBoxLayout * overlapCategoriesLayout
Definition visual_database_display_widget.h:105
void loadNextPage()
Definition visual_database_display_widget.cpp:275
void onDisplayModeChanged(bool checked)
Definition visual_database_display_widget.cpp:189
void resizeEvent(QResizeEvent *event) override
Definition visual_database_display_widget.cpp:183
QTimer * loadCardsTimer
Definition visual_database_display_widget.h:109
CardDatabaseDisplayModel * databaseDisplayModel
Definition visual_database_display_widget.h:98
void updateSearch(const QString &search) const
Definition visual_database_display_widget.cpp:230
void sortCardList(const QStringList &properties, Qt::SortOrder order) const
Definition visual_database_display_widget.cpp:325
void addCard(const ExactCard &cardToAdd)
Definition visual_database_display_widget.cpp:218
void loadCurrentPage()
Definition visual_database_display_widget.cpp:256
int currentPage
Definition visual_database_display_widget.h:112
int debounceTime
Definition visual_database_display_widget.h:111
void populateCards()
Definition visual_database_display_widget.cpp:269
QToolButton * clearFilterWidget
Definition visual_database_display_widget.h:93
AbstractTabDeckEditor * getDeckEditor()
Definition visual_database_display_widget.h:50
QList< ExactCard > * cards
Definition visual_database_display_widget.h:100
void modelDirty() const
Definition visual_database_display_widget.cpp:320
void loadPage(int start, int end)
Definition visual_database_display_widget.cpp:291
QTreeView * databaseView
Definition visual_database_display_widget.h:99
FilterTreeModel * filterModel
Definition visual_database_display_widget.h:69
void retranslateUi()
Definition visual_database_display_widget.cpp:177
void onClick(QMouseEvent *event, CardInfoPictureWithTextOverlayWidget *instance)
Definition visual_database_display_widget.cpp:208
CardDatabaseModel * databaseModel
Definition visual_database_display_widget.h:97
void setDeckList(const DeckList &new_deck_list_model)
KeySignals searchKeySignals
Definition visual_database_display_widget.h:95
QTimer * debounceTimer
Definition visual_database_display_widget.h:108
QScrollArea * scrollArea
Definition visual_database_display_widget.h:102
CardDatabaseDisplayModel * getDatabaseDisplayModel()
Definition visual_database_display_widget.h:55
void onSearchModelChanged()
Definition visual_database_display_widget.cpp:239
VisualDatabaseDisplayFilterToolbarWidget * filterContainer
Definition visual_database_display_widget.h:94
void cardClickedDatabaseDisplay(QMouseEvent *event, CardInfoPictureWithTextOverlayWidget *instance)
int cardsPerPage
Definition visual_database_display_widget.h:113
CardSizeWidget * cardSizeWidget
Definition visual_database_display_widget.h:107
void cardHoveredDatabaseDisplay(const ExactCard &hoveredCard)
QWidget * overlapCategories
Definition visual_database_display_widget.h:104
void onHover(const ExactCard &hoveredCard)
Definition visual_database_display_widget.cpp:213
AbstractTabDeckEditor * deckEditor
Definition visual_database_display_widget.h:96
VisualDatabaseDisplayWidget(QWidget *parent, AbstractTabDeckEditor *deckEditor, CardDatabaseModel *database_model, CardDatabaseDisplayModel *database_display_model)
Definition visual_database_display_widget.cpp:25
void databaseDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight)
Definition visual_database_display_widget.cpp:334
QLabel * databaseLoadIndicator
Definition visual_database_display_widget.h:91
TODO: Document this.
static peg::parser search(R"( Start <- QueryPartList ~ws <- [ ]+ QueryPartList <- ComplexQueryPart ( ws ("AND" ws)? ComplexQueryPart)* ws* ComplexQueryPart <- SomewhatComplexQueryPart ws "OR" ws ComplexQueryPart / SomewhatComplexQueryPart SomewhatComplexQueryPart <- [(] QueryPartList [)] / QueryPart QueryPart <- NotQuery / DeckContentQuery / DeckNameQuery / FileNameQuery / PathQuery / FormatQuery / CommentQuery / GenericQuery NotQuery <- ('NOT' ws/'-') SomewhatComplexQueryPart DeckContentQuery <- CardSearch NumericExpression? CardSearch <- '[[' CardFilterString ']]' CardFilterString <- (!']]'.)* DeckNameQuery <- ([Dd] 'eck')? [Nn] 'ame'? [:] String FileNameQuery <- [Ff] ([Nn] / 'ile' ([Nn] 'ame')?) [:] String PathQuery <- [Pp] 'ath'? [:] String FormatQuery <- [Ff] 'ormat'? [:] String CommentQuery <- [Cc] ('omment' 's'?)? [:] String GenericQuery <- String NonDoubleQuoteUnlessEscaped <- '\\\"'. / !["]. NonSingleQuoteUnlessEscaped<- "\\\'"./![']. UnescapedStringListPart<- !['":<>=! ]. SingleApostropheString <- (UnescapedStringListPart+ ws*)* ['] (UnescapedStringListPart+ ws*)* String <- SingleApostropheString / UnescapedStringListPart+ / ["]< NonDoubleQuoteUnlessEscaped * >["] / ['] <NonSingleQuoteUnlessEscaped*> ['] NumericExpression <- NumericOperator ws? NumericValue NumericOperator <- [=:] / <[><!][=]?> NumericValue <- [0-9]+ )")
TODO: Document this.
TODO: Document this.
TODO: Document this.
TODO: Document this.
Q_LOGGING_CATEGORY(VisualDatabaseDisplayLog, "visual_database_display")