Cockatrice 2026-10-19-Development-3.1.2-beta.2
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
12
13#include <QModelIndex>
14#include <QSet>
15#include <QSortFilterProxyModel>
16#include <QString>
17#include <QTimer>
20#include <qtmetamacros.h>
21
22class FilterTree;
23class QObject;
24template <class Key, class T> class QMap;
25
26class CardDatabaseDisplayModel : public QSortFilterProxyModel
27{
28 Q_OBJECT
29public:
36
37private:
44 QTimer dirtyTimer;
46 QString searchText;
47
50
51public:
52 explicit CardDatabaseDisplayModel(QObject *parent = nullptr);
53 void setSourceModel(QAbstractItemModel *model) override;
54 void setFilterTree(FilterTree *_filterTree);
55 void setIsToken(FilterBool _isToken)
56 {
57 isToken = _isToken;
58 dirty();
59 }
60
61 void setCardName(const QString &_cardName)
62 {
63 if (filterString != nullptr) {
64 delete filterString;
65 filterString = nullptr;
66 }
68 dirty();
69 }
70 void setStringFilter(const QString &_src);
71 void setCardNameSet(const QSet<QString> &_cardNameSet)
72 {
73 cardNameSet = _cardNameSet;
74 dirty();
75 }
76 void setSearchLanguage(const CardSearchLanguage &searchLang);
77
78 void dirty()
79 {
80 dirtyTimer.start(20);
81 }
82 void clearFilterAll();
83 [[nodiscard]] int rowCount(const QModelIndex &parent = QModelIndex()) const override;
84 [[nodiscard]] bool canFetchMore(const QModelIndex &parent) const override;
85 void fetchMore(const QModelIndex &parent) override;
86signals:
87 void modelDirty();
88
89protected:
90 [[nodiscard]] bool lessThan(const QModelIndex &left, const QModelIndex &right) const override;
91 static int lessThanNumerically(const QString &left, const QString &right);
92 [[nodiscard]] bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override;
93 [[nodiscard]] bool rowMatchesCardName(CardInfoPtr info) const;
94
95private slots:
96 void filterTreeChanged();
98 const QString sanitizeCardName(const QString &dirtyName, const QMap<wchar_t, wchar_t> &table);
99};
100
101#endif // COCKATRICE_CARD_DATABASE_DISPLAY_MODEL_H
QSharedPointer< CardInfo > CardInfoPtr
Definition card_info.cpp:15
int rowCount(const QModelIndex &parent=QModelIndex()) const override
Definition card_database_display_model.cpp:78
void setCardName(const QString &_cardName)
Definition card_database_display_model.h:61
bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override
Definition card_database_display_model.cpp:190
QSet< QString > cardColors
Definition card_database_display_model.h:40
void setSourceModel(QAbstractItemModel *model) override
Definition card_database_display_model.cpp:38
QSet< QString > cardTypes
Definition card_database_display_model.h:40
bool rowMatchesCardName(CardInfoPtr info) const
Definition card_database_display_model.cpp:208
FilterBool
Definition card_database_display_model.h:31
@ ShowTrue
Definition card_database_display_model.h:32
@ ShowAll
Definition card_database_display_model.h:34
@ ShowFalse
Definition card_database_display_model.h:33
CardSearchLanguage searchLanguage
Definition card_database_display_model.h:45
void clearFilterAll()
Definition card_database_display_model.cpp:231
QTimer dirtyTimer
Definition card_database_display_model.h:44
CardDatabaseDisplayModel(QObject *parent=nullptr)
Definition card_database_display_model.cpp:22
static int lessThanNumerically(const QString &left, const QString &right)
Definition card_database_display_model.cpp:122
int loadedRowCount
Definition card_database_display_model.h:43
QString cardName
Definition card_database_display_model.h:39
const QString sanitizeCardName(const QString &dirtyName, const QMap< wchar_t, wchar_t > &table)
Definition card_database_display_model.cpp:288
void setSearchLanguage(const CardSearchLanguage &searchLang)
Definition card_database_display_model.cpp:269
void setCardNameSet(const QSet< QString > &_cardNameSet)
Definition card_database_display_model.h:71
void setIsToken(FilterBool _isToken)
Definition card_database_display_model.h:55
void setFilterTree(FilterTree *_filterTree)
Definition card_database_display_model.cpp:250
QSet< QString > cardNameSet
Definition card_database_display_model.h:40
FilterTree * filterTree
Definition card_database_display_model.h:41
void setStringFilter(const QString &_src)
Definition card_database_display_model.cpp:261
FilterBool isToken
Definition card_database_display_model.h:38
void fetchMore(const QModelIndex &parent) override
Definition card_database_display_model.cpp:62
QString searchText
Definition card_database_display_model.h:46
void filterTreeChanged()
Definition card_database_display_model.cpp:283
FilterString * filterString
Definition card_database_display_model.h:42
bool canFetchMore(const QModelIndex &parent) const override
Definition card_database_display_model.cpp:57
bool lessThan(const QModelIndex &left, const QModelIndex &right) const override
Definition card_database_display_model.cpp:83
static QMap< wchar_t, wchar_t > characterTranslation
Definition card_database_display_model.h:52
QString cardText
Definition card_database_display_model.h:39
void dirty()
Definition card_database_display_model.h:78
Definition filter_string.h:35
Definition filter_tree.h:240
Definition game.h:18
Definition dlg_manage_sets.h:29
The card language and matching mode searches run against.
Definition card_localization.h:27