Cockatrice 2025-11-30-Development-2.11.0-beta.38
A cross-platform virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
card_database_display_model.h
Go to the documentation of this file.
1
7
8#ifndef COCKATRICE_CARD_DATABASE_DISPLAY_MODEL_H
9#define COCKATRICE_CARD_DATABASE_DISPLAY_MODEL_H
10
11#include <QSortFilterProxyModel>
12#include <QTimer>
14
15class FilterTree;
16class CardDatabaseDisplayModel : public QSortFilterProxyModel
17{
18 Q_OBJECT
19public:
26
27private:
34 QTimer dirtyTimer;
35
37 static QMap<wchar_t, wchar_t> characterTranslation;
38
39public:
40 explicit CardDatabaseDisplayModel(QObject *parent = nullptr);
41 void setFilterTree(FilterTree *_filterTree);
42 void setIsToken(FilterBool _isToken)
43 {
44 isToken = _isToken;
45 emit modelDirty();
46 dirty();
47 }
48
49 void setCardName(const QString &_cardName)
50 {
51 if (filterString != nullptr) {
52 delete filterString;
53 filterString = nullptr;
54 }
56 emit modelDirty();
57 dirty();
58 }
59 void setStringFilter(const QString &_src)
60 {
61 delete filterString;
62 filterString = new FilterString(_src);
63 emit modelDirty();
64 dirty();
65 }
66 void setCardNameSet(const QSet<QString> &_cardNameSet)
67 {
68 cardNameSet = _cardNameSet;
69 emit modelDirty();
70 dirty();
71 }
72
73 void dirty()
74 {
75 dirtyTimer.start(20);
76 }
77 void clearFilterAll();
78 [[nodiscard]] int rowCount(const QModelIndex &parent = QModelIndex()) const override;
79 [[nodiscard]] bool canFetchMore(const QModelIndex &parent) const override;
80 void fetchMore(const QModelIndex &parent) override;
81signals:
82 void modelDirty();
83
84protected:
85 [[nodiscard]] bool lessThan(const QModelIndex &left, const QModelIndex &right) const override;
86 static int lessThanNumerically(const QString &left, const QString &right);
87 [[nodiscard]] bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override;
88 [[nodiscard]] bool rowMatchesCardName(CardInfoPtr info) const;
89
90private slots:
91 void filterTreeChanged();
93 const QString sanitizeCardName(const QString &dirtyName, const QMap<wchar_t, wchar_t> &table);
94};
95
96#endif // COCKATRICE_CARD_DATABASE_DISPLAY_MODEL_H
QSharedPointer< CardInfo > CardInfoPtr
Definition card_info.cpp:20
int rowCount(const QModelIndex &parent=QModelIndex()) const override
Definition card_database_display_model.cpp:44
void setCardName(const QString &_cardName)
Definition card_database_display_model.h:49
bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override
Definition card_database_display_model.cpp:154
QSet< QString > cardColors
Definition card_database_display_model.h:30
QSet< QString > cardTypes
Definition card_database_display_model.h:30
bool rowMatchesCardName(CardInfoPtr info) const
Definition card_database_display_model.cpp:171
FilterBool
Definition card_database_display_model.h:21
@ ShowTrue
Definition card_database_display_model.h:22
@ ShowAll
Definition card_database_display_model.h:24
@ ShowFalse
Definition card_database_display_model.h:23
void clearFilterAll()
Definition card_database_display_model.cpp:185
QTimer dirtyTimer
Definition card_database_display_model.h:34
CardDatabaseDisplayModel(QObject *parent=nullptr)
Definition card_database_display_model.cpp:5
static int lessThanNumerically(const QString &left, const QString &right)
Definition card_database_display_model.cpp:86
int loadedRowCount
Definition card_database_display_model.h:33
QString cardName
Definition card_database_display_model.h:29
const QString sanitizeCardName(const QString &dirtyName, const QMap< wchar_t, wchar_t > &table)
Definition card_database_display_model.cpp:218
void setCardNameSet(const QSet< QString > &_cardNameSet)
Definition card_database_display_model.h:66
void setIsToken(FilterBool _isToken)
Definition card_database_display_model.h:42
void setFilterTree(FilterTree *_filterTree)
Definition card_database_display_model.cpp:203
QSet< QString > cardNameSet
Definition card_database_display_model.h:30
FilterTree * filterTree
Definition card_database_display_model.h:31
void setStringFilter(const QString &_src)
Definition card_database_display_model.h:59
FilterBool isToken
Definition card_database_display_model.h:28
void fetchMore(const QModelIndex &parent) override
Definition card_database_display_model.cpp:28
void filterTreeChanged()
Definition card_database_display_model.cpp:213
FilterString * filterString
Definition card_database_display_model.h:32
bool canFetchMore(const QModelIndex &parent) const override
Definition card_database_display_model.cpp:23
bool lessThan(const QModelIndex &left, const QModelIndex &right) const override
Definition card_database_display_model.cpp:49
static QMap< wchar_t, wchar_t > characterTranslation
Definition card_database_display_model.h:18
QString cardText
Definition card_database_display_model.h:29
void dirty()
Definition card_database_display_model.h:73
Definition filter_string.h:34
Definition filter_tree.h:223
TODO: Document this.