Cockatrice 2025-11-30-Development-2.11.0-beta.38
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"
24
25#include <QLoggingCategory>
26#include <QVBoxLayout>
27#include <QWheelEvent>
28#include <QWidget>
31#include <qscrollarea.h>
32
33inline Q_LOGGING_CATEGORY(VisualDatabaseDisplayLog, "visual_database_display");
34
35class VisualDatabaseDisplayWidget : public QWidget
36{
37 Q_OBJECT
38
39public:
40 explicit VisualDatabaseDisplayWidget(QWidget *parent,
42 CardDatabaseModel *database_model,
43 CardDatabaseDisplayModel *database_display_model);
44 void retranslateUi();
45
47 void populateCards();
48 void loadPage(int start, int end);
49 void loadNextPage();
50 void loadCurrentPage();
51 void sortCardList(const QStringList &properties, Qt::SortOrder order) const;
52 void setDeckList(const DeckList &new_deck_list_model);
53
55 QHBoxLayout *searchLayout;
57 QPushButton *displayModeButton;
60
61public slots:
62 void searchModelChanged();
63
64signals:
66 void cardHoveredDatabaseDisplay(const ExactCard &hoveredCard);
67
68protected slots:
69 void initialize();
70 void onClick(QMouseEvent *event, CardInfoPictureWithTextOverlayWidget *instance);
71 void onHover(const ExactCard &hoveredCard);
72 void addCard(const ExactCard &cardToAdd);
73 void databaseDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight);
74 void wheelEvent(QWheelEvent *event) override;
75 void modelDirty() const;
76 void updateSearch(const QString &search) const;
77 void onDisplayModeChanged(bool checked);
78
79private:
81
82 QLabel *sortByLabel;
84
86 QToolButton *clearFilterWidget;
102 QTreeView *databaseView;
103 QList<ExactCard> *cards;
104 QVBoxLayout *mainLayout;
105 QScrollArea *scrollArea;
113
114 int debounceTime = 300; // in Ms
115 int currentPage = 0; // Current page index
116 int cardsPerPage = 100; // Number of cards per page
117
118protected:
119 void resizeEvent(QResizeEvent *event) override;
120};
121
122#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:92
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:127
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 settings_button_widget.h:17
Definition visual_database_display_color_filter_widget.h:43
Definition visual_database_display_filter_save_load_widget.h:23
Definition visual_database_display_main_type_filter_widget.h:20
Definition visual_database_display_name_filter_widget.h:20
Definition visual_database_display_set_filter_widget.h:35
Definition visual_database_display_sub_type_filter_widget.h:19
QHBoxLayout * searchLayout
Definition visual_database_display_widget.h:55
FlowWidget * flowWidget
Definition visual_database_display_widget.h:106
VisualDatabaseDisplayColorFilterWidget * colorFilterWidget
Definition visual_database_display_widget.h:59
QHBoxLayout * filterContainerLayout
Definition visual_database_display_widget.h:88
void wheelEvent(QWheelEvent *event) override
Definition visual_database_display_widget.cpp:433
OverlapControlWidget * overlapControlWidget
Definition visual_database_display_widget.h:109
QPushButton * displayModeButton
Definition visual_database_display_widget.h:57
QWidget * searchContainer
Definition visual_database_display_widget.h:54
QVBoxLayout * mainLayout
Definition visual_database_display_widget.h:104
void initialize()
Definition visual_database_display_widget.cpp:195
SettingsButtonWidget * quickFilterNameWidget
Definition visual_database_display_widget.h:91
SearchLineEdit * searchEdit
Definition visual_database_display_widget.h:56
QVBoxLayout * overlapCategoriesLayout
Definition visual_database_display_widget.h:108
void loadNextPage()
Definition visual_database_display_widget.cpp:367
QLabel * filterByLabel
Definition visual_database_display_widget.h:85
void onDisplayModeChanged(bool checked)
Definition visual_database_display_widget.cpp:281
void resizeEvent(QResizeEvent *event) override
Definition visual_database_display_widget.cpp:275
QComboBox * sortOrderCombo
Definition visual_database_display_widget.h:83
QTimer * loadCardsTimer
Definition visual_database_display_widget.h:112
CardDatabaseDisplayModel * databaseDisplayModel
Definition visual_database_display_widget.h:101
void searchModelChanged()
Definition visual_database_display_widget.cpp:331
void updateSearch(const QString &search) const
Definition visual_database_display_widget.cpp:322
VisualDatabaseDisplayFilterSaveLoadWidget * saveLoadWidget
Definition visual_database_display_widget.h:90
void sortCardList(const QStringList &properties, Qt::SortOrder order) const
Definition visual_database_display_widget.cpp:417
void addCard(const ExactCard &cardToAdd)
Definition visual_database_display_widget.cpp:310
void loadCurrentPage()
Definition visual_database_display_widget.cpp:348
int currentPage
Definition visual_database_display_widget.h:115
QLabel * sortByLabel
Definition visual_database_display_widget.h:82
SettingsButtonWidget * quickFilterSetWidget
Definition visual_database_display_widget.h:96
int debounceTime
Definition visual_database_display_widget.h:114
void populateCards()
Definition visual_database_display_widget.cpp:361
QToolButton * clearFilterWidget
Definition visual_database_display_widget.h:86
QComboBox * sortColumnCombo
Definition visual_database_display_widget.h:83
SettingsButtonWidget * quickFilterSaveLoadWidget
Definition visual_database_display_widget.h:89
QList< ExactCard > * cards
Definition visual_database_display_widget.h:103
void modelDirty() const
Definition visual_database_display_widget.cpp:412
void loadPage(int start, int end)
Definition visual_database_display_widget.cpp:383
QTreeView * databaseView
Definition visual_database_display_widget.h:102
FilterTreeModel * filterModel
Definition visual_database_display_widget.h:58
SettingsButtonWidget * quickFilterSubTypeWidget
Definition visual_database_display_widget.h:94
void retranslateUi()
Definition visual_database_display_widget.cpp:260
void onClick(QMouseEvent *event, CardInfoPictureWithTextOverlayWidget *instance)
Definition visual_database_display_widget.cpp:300
CardDatabaseModel * databaseModel
Definition visual_database_display_widget.h:100
void setDeckList(const DeckList &new_deck_list_model)
VisualDatabaseDisplaySubTypeFilterWidget * subTypeFilterWidget
Definition visual_database_display_widget.h:95
KeySignals searchKeySignals
Definition visual_database_display_widget.h:98
QWidget * filterContainer
Definition visual_database_display_widget.h:87
QTimer * debounceTimer
Definition visual_database_display_widget.h:111
QScrollArea * scrollArea
Definition visual_database_display_widget.h:105
VisualDatabaseDisplayMainTypeFilterWidget * mainTypeFilterWidget
Definition visual_database_display_widget.h:93
void cardClickedDatabaseDisplay(QMouseEvent *event, CardInfoPictureWithTextOverlayWidget *instance)
int cardsPerPage
Definition visual_database_display_widget.h:116
CardSizeWidget * cardSizeWidget
Definition visual_database_display_widget.h:110
void cardHoveredDatabaseDisplay(const ExactCard &hoveredCard)
QWidget * overlapCategories
Definition visual_database_display_widget.h:107
void onHover(const ExactCard &hoveredCard)
Definition visual_database_display_widget.cpp:305
AbstractTabDeckEditor * deckEditor
Definition visual_database_display_widget.h:99
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:426
VisualDatabaseDisplayNameFilterWidget * nameFilterWidget
Definition visual_database_display_widget.h:92
VisualDatabaseDisplaySetFilterWidget * setFilterWidget
Definition visual_database_display_widget.h:97
QLabel * databaseLoadIndicator
Definition visual_database_display_widget.h:80
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 / GenericQuery NotQuery <- ('NOT' ws/'-') SomewhatComplexQueryPart DeckContentQuery <- CardSearch NumericExpression? CardSearch <- '[[' CardFilterString ']]' CardFilterString <- (!']]'.)* DeckNameQuery <- ([Dd] 'eck')? [Nn] 'ame'? [:] String FileNameQuery <- [Ff] ('ile' 'name'?)? [:] String PathQuery <- [Pp] 'ath'? [:] 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")