Cockatrice 2025-11-30-Development-2.11.0-beta.38
A cross-platform virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
card_sets_model.h
Go to the documentation of this file.
1
6
7#ifndef SETSMODEL_H
8#define SETSMODEL_H
9
10#include <QAbstractTableModel>
11#include <QMimeData>
12#include <QSet>
13#include <QSortFilterProxyModel>
15
16class SetsProxyModel;
17
18class SetsMimeData : public QMimeData
19{
20 Q_OBJECT
21private:
22 int oldRow;
23
24public:
25 SetsMimeData(int _oldRow) : oldRow(_oldRow)
26 {
27 }
28 [[nodiscard]] int getOldRow() const
29 {
30 return oldRow;
31 }
32 [[nodiscard]] QStringList formats() const
33 {
34 return QStringList() << "application/x-cockatricecardset";
35 }
36};
37
38class SetsModel : public QAbstractTableModel
39{
40 Q_OBJECT
41 friend class SetsProxyModel;
42
43private:
44 static const int NUM_COLS = 7;
46 QSet<CardSetPtr> enabledSets;
47
48public:
60 enum Role
61 {
62 SortRole = Qt::UserRole
63 };
64
65 explicit SetsModel(CardDatabase *_db, QObject *parent = nullptr);
66 ~SetsModel() override;
67 [[nodiscard]] int rowCount(const QModelIndex &parent = QModelIndex()) const override;
68 [[nodiscard]] int columnCount(const QModelIndex &parent = QModelIndex()) const override
69 {
70 Q_UNUSED(parent);
71 return NUM_COLS;
72 }
73 [[nodiscard]] QVariant data(const QModelIndex &index, int role) const override;
74 bool setData(const QModelIndex &index, const QVariant &value, int role) override;
75 [[nodiscard]] QVariant
76 headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
77 [[nodiscard]] Qt::ItemFlags flags(const QModelIndex &index) const override;
78 [[nodiscard]] Qt::DropActions supportedDropActions() const override;
79
80 [[nodiscard]] QMimeData *mimeData(const QModelIndexList &indexes) const override;
81 bool
82 dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override;
83 [[nodiscard]] QStringList mimeTypes() const override;
84 void swapRows(int oldRow, int newRow);
85 void toggleRow(int row, bool enable);
86 void toggleRow(int row);
87 void toggleAll(bool);
88 void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override;
89 void save(CardDatabase *db);
90 void restore(CardDatabase *db);
92};
93
94class SetsDisplayModel : public QSortFilterProxyModel
95{
96 Q_OBJECT
97public:
98 explicit SetsDisplayModel(QObject *parent = nullptr);
99
100protected:
101 [[nodiscard]] bool lessThan(const QModelIndex &left, const QModelIndex &right) const override;
102 [[nodiscard]] bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override;
103 void fetchMore(const QModelIndex &index) override;
104};
105
106#endif
Core in-memory container for card and set data.
Definition card_database.h:29
A list-like container for CardSet objects with extended management methods.
Definition card_set_list.h:20
void fetchMore(const QModelIndex &index) override
Definition card_sets_model.cpp:271
SetsDisplayModel(QObject *parent=nullptr)
Definition card_sets_model.cpp:265
bool lessThan(const QModelIndex &left, const QModelIndex &right) const override
Definition card_sets_model.cpp:297
bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override
Definition card_sets_model.cpp:280
QStringList formats() const
Definition card_sets_model.h:32
SetsMimeData(int _oldRow)
Definition card_sets_model.h:25
int oldRow
Definition card_sets_model.h:22
int getOldRow() const
Definition card_sets_model.h:28
void toggleRow(int row, bool enable)
Definition card_sets_model.cpp:147
bool setData(const QModelIndex &index, const QVariant &value, int role) override
Definition card_sets_model.cpp:64
SetsModel(CardDatabase *_db, QObject *parent=nullptr)
Definition card_sets_model.cpp:5
static const int NUM_COLS
Definition card_sets_model.h:44
Qt::DropActions supportedDropActions() const override
Definition card_sets_model.cpp:111
void swapRows(int oldRow, int newRow)
Definition card_sets_model.cpp:185
void save(CardDatabase *db)
Definition card_sets_model.cpp:229
friend class SetsProxyModel
Definition card_sets_model.h:41
int columnCount(const QModelIndex &parent=QModelIndex()) const override
Definition card_sets_model.h:68
SetsColumns
Definition card_sets_model.h:50
@ PriorityCol
Definition card_sets_model.h:58
@ EnabledCol
Definition card_sets_model.h:53
@ SortKeyCol
Definition card_sets_model.h:51
@ LongNameCol
Definition card_sets_model.h:54
@ ReleaseDateCol
Definition card_sets_model.h:57
@ SetTypeCol
Definition card_sets_model.h:56
@ ShortNameCol
Definition card_sets_model.h:55
@ IsKnownCol
Definition card_sets_model.h:52
void restore(CardDatabase *db)
Definition card_sets_model.cpp:244
QSet< CardSetPtr > enabledSets
Definition card_sets_model.h:46
void toggleAll(bool)
Definition card_sets_model.cpp:174
QVariant data(const QModelIndex &index, int role) const override
Definition card_sets_model.cpp:24
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
Definition card_sets_model.cpp:73
QMimeData * mimeData(const QModelIndexList &indexes) const override
Definition card_sets_model.cpp:116
bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override
Definition card_sets_model.cpp:125
~SetsModel() override
CardSetList sets
Definition card_sets_model.h:45
Role
Definition card_sets_model.h:61
@ SortRole
Definition card_sets_model.h:62
Qt::ItemFlags flags(const QModelIndex &index) const override
Definition card_sets_model.cpp:98
int rowCount(const QModelIndex &parent=QModelIndex()) const override
Definition card_sets_model.cpp:16
void sort(int column, Qt::SortOrder order=Qt::AscendingOrder) override
Definition card_sets_model.cpp:205
void restoreOriginalOrder()
Definition card_sets_model.cpp:198
QStringList mimeTypes() const override
Definition card_sets_model.cpp:260
CardDatabase * db