Cockatrice 2026-10-19-Development-3.1.2-beta.2
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
card_database_model.h
Go to the documentation of this file.
1
6
7#ifndef CARDDATABASEMODEL_H
8#define CARDDATABASEMODEL_H
9
11
12#include <QAbstractListModel>
13#include <QList>
14#include <QModelIndex>
15#include <QSet>
16#include <qnamespace.h>
17#include <qtmetamacros.h>
18
19class CardDatabase;
20class QObject;
21
22class CardDatabaseModel : public QAbstractListModel
23{
24 Q_OBJECT
25public:
35 enum Role
36 {
37 SortRole = Qt::UserRole
38 };
39 CardDatabaseModel(CardDatabase *_db, bool _showOnlyCardsFromEnabledSets, QObject *parent = nullptr);
41 [[nodiscard]] int rowCount(const QModelIndex &parent = QModelIndex()) const override;
42 [[nodiscard]] int columnCount(const QModelIndex &parent = QModelIndex()) const override;
43 [[nodiscard]] QVariant data(const QModelIndex &index, int role) const override;
44 [[nodiscard]] QVariant
45 headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
46 [[nodiscard]] CardDatabase *getDatabase() const
47 {
48 return db;
49 }
50 [[nodiscard]] CardInfoPtr getCard(int index) const
51 {
52 return cardList[index];
53 }
54
55private:
57 QSet<CardInfoPtr> cardListSet; // Supports faster lookups in cardDatabaseEnabledSetsChanged()
60
61 inline bool checkCardHasAtLeastOneEnabledSet(const CardInfoPtr &card) const;
62private slots:
63 void cardAdded(const CardInfoPtr &card);
64 void cardRemoved(CardInfoPtr card);
65 void cardInfoChanged(const CardInfoPtr &card);
67 void resetCardList();
68};
69
70#endif
QSharedPointer< CardInfo > CardInfoPtr
Definition card_info.cpp:15
QList< CardInfoPtr > cardList
Definition card_database_model.h:56
QSet< CardInfoPtr > cardListSet
Definition card_database_model.h:57
Role
Definition card_database_model.h:36
@ SortRole
Definition card_database_model.h:37
CardDatabase * db
Definition card_database_model.h:58
CardDatabase * getDatabase() const
Definition card_database_model.h:46
void cardInfoChanged(const CardInfoPtr &card)
Definition card_database_model.cpp:93
void resetCardList()
Definition card_database_model.cpp:195
bool checkCardHasAtLeastOneEnabledSet(const CardInfoPtr &card) const
Definition card_database_model.cpp:103
CardInfoPtr getCard(int index) const
Definition card_database_model.h:50
bool showOnlyCardsFromEnabledSets
Definition card_database_model.h:59
int rowCount(const QModelIndex &parent=QModelIndex()) const override
Definition card_database_model.cpp:30
CardDatabaseModel(CardDatabase *_db, bool _showOnlyCardsFromEnabledSets, QObject *parent=nullptr)
Definition card_database_model.cpp:16
void cardAdded(const CardInfoPtr &card)
Definition card_database_model.cpp:168
Columns
Definition card_database_model.h:27
@ SetListColumn
Definition card_database_model.h:29
@ CardTypeColumn
Definition card_database_model.h:32
@ ManaCostColumn
Definition card_database_model.h:30
@ NameColumn
Definition card_database_model.h:28
@ ColorColumn
Definition card_database_model.h:33
@ PTColumn
Definition card_database_model.h:31
void cardRemoved(CardInfoPtr card)
Definition card_database_model.cpp:180
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
Definition card_database_model.cpp:67
~CardDatabaseModel() override
int columnCount(const QModelIndex &parent=QModelIndex()) const override
Definition card_database_model.cpp:35
void cardDatabaseEnabledSetsChanged()
Definition card_database_model.cpp:120
QVariant data(const QModelIndex &index, int role) const override
Definition card_database_model.cpp:40
Core in-memory container for card and set data.
Definition card_database.h:38
Definition remote_connection_controller.h:20
Definition dlg_manage_sets.h:29