Cockatrice 2026-06-01-Development-3.1.0-beta.3
A 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;
37 static QMap<wchar_t, wchar_t> characterTranslation;
38
39public:
40 explicit CardDatabaseDisplayModel(QObject *parent = nullptr);
41 void setSourceModel(QAbstractItemModel *model) override;
42 void setFilterTree(FilterTree *_filterTree);
43 void setIsToken(FilterBool _isToken)
44 {
45 isToken = _isToken;
46 dirty();
47 }
48
49 void setCardName(const QString &_cardName)
50 {
51 if (filterString != nullptr) {
52 delete filterString;
53 filterString = nullptr;
54 }
56 dirty();
57 }
58 void setStringFilter(const QString &_src)
59 {
60 delete filterString;
61 filterString = new FilterString(_src);
62 dirty();
63 }
64 void setCardNameSet(const QSet<QString> &_cardNameSet)
65 {
66 cardNameSet = _cardNameSet;
67 dirty();
68 }
69
70 void dirty()
71 {
72 dirtyTimer.start(20);
73 }
74 void clearFilterAll();
75 [[nodiscard]] int rowCount(const QModelIndex &parent = QModelIndex()) const override;
76 [[nodiscard]] bool canFetchMore(const QModelIndex &parent) const override;
77 void fetchMore(const QModelIndex &parent) override;
78signals:
79 void modelDirty();
80
81protected:
82 [[nodiscard]] bool lessThan(const QModelIndex &left, const QModelIndex &right) const override;
83 static int lessThanNumerically(const QString &left, const QString &right);
84 [[nodiscard]] bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override;
85 [[nodiscard]] bool rowMatchesCardName(CardInfoPtr info) const;
86
87private slots:
88 void filterTreeChanged();
90 const QString sanitizeCardName(const QString &dirtyName, const QMap<wchar_t, wchar_t> &table);
91};
92
93#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:61
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:173
QSet< QString > cardColors
Definition card_database_display_model.h:30
void setSourceModel(QAbstractItemModel *model) override
Definition card_database_display_model.cpp:21
QSet< QString > cardTypes
Definition card_database_display_model.h:30
bool rowMatchesCardName(CardInfoPtr info) const
Definition card_database_display_model.cpp:191
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:208
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:105
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:243
void setCardNameSet(const QSet< QString > &_cardNameSet)
Definition card_database_display_model.h:64
void setIsToken(FilterBool _isToken)
Definition card_database_display_model.h:43
void setFilterTree(FilterTree *_filterTree)
Definition card_database_display_model.cpp:227
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:58
FilterBool isToken
Definition card_database_display_model.h:28
void fetchMore(const QModelIndex &parent) override
Definition card_database_display_model.cpp:45
void filterTreeChanged()
Definition card_database_display_model.cpp:238
FilterString * filterString
Definition card_database_display_model.h:32
bool canFetchMore(const QModelIndex &parent) const override
Definition card_database_display_model.cpp:40
bool lessThan(const QModelIndex &left, const QModelIndex &right) const override
Definition card_database_display_model.cpp:66
static QMap< wchar_t, wchar_t > characterTranslation
Definition card_database_display_model.h:35
QString cardText
Definition card_database_display_model.h:29
void dirty()
Definition card_database_display_model.h:70
Definition filter_string.h:34
Definition filter_tree.h:229