Cockatrice 2026-10-19-Development-3.1.2-beta.2
A 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
12
13#include <QAbstractTableModel>
14#include <QList>
15#include <QMimeData>
16#include <QModelIndex>
17#include <QModelIndexList>
18#include <QSet>
19#include <QSortFilterProxyModel>
20#include <QString>
21#include <QStringList>
22#include <QtGlobal>
23#include <qnamespace.h>
24#include <qtmetamacros.h>
25
26class CardDatabase;
27class QObject;
28
29class SetsMimeData : public QMimeData
30{
31 Q_OBJECT
32private:
33 int oldRow;
34
35public:
36 SetsMimeData(int _oldRow) : oldRow(_oldRow)
37 {
38 }
39 [[nodiscard]] int getOldRow() const
40 {
41 return oldRow;
42 }
43 [[nodiscard]] QStringList formats() const
44 {
45 return QStringList() << "application/x-cockatricecardset";
46 }
47};
48
49class SetsModel : public QAbstractTableModel
50{
51 Q_OBJECT
52 friend class SetsProxyModel;
53
54private:
55 static const int NUM_COLS = 7;
58
59public:
71 enum Role
72 {
73 SortRole = Qt::UserRole
74 };
75
76 explicit SetsModel(CardDatabase *_db, QObject *parent = nullptr);
77 ~SetsModel() override;
78 [[nodiscard]] int rowCount(const QModelIndex &parent = QModelIndex()) const override;
79 [[nodiscard]] int columnCount(const QModelIndex &parent = QModelIndex()) const override
80 {
81 Q_UNUSED(parent);
82 return NUM_COLS;
83 }
84 [[nodiscard]] QVariant data(const QModelIndex &index, int role) const override;
85 bool setData(const QModelIndex &index, const QVariant &value, int role) override;
86 [[nodiscard]] QVariant
87 headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
88 [[nodiscard]] Qt::ItemFlags flags(const QModelIndex &index) const override;
89 [[nodiscard]] Qt::DropActions supportedDropActions() const override;
90
91 [[nodiscard]] QMimeData *mimeData(const QModelIndexList &indexes) const override;
92 bool
93 dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override;
94 [[nodiscard]] QStringList mimeTypes() const override;
95 void swapRows(int oldRow, int newRow);
96 void toggleRow(int row, bool enable);
97 void toggleRow(int row);
98 void toggleAll(bool);
99 void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override;
100 void save(CardDatabase *db);
101 void restore(CardDatabase *db);
103};
104
105class SetsDisplayModel : public QSortFilterProxyModel
106{
107 Q_OBJECT
108public:
109 explicit SetsDisplayModel(QObject *parent = nullptr);
110
111protected:
112 [[nodiscard]] bool lessThan(const QModelIndex &left, const QModelIndex &right) const override;
113 [[nodiscard]] bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override;
114 void fetchMore(const QModelIndex &index) override;
115};
116
117#endif
Core in-memory container for card and set data.
Definition card_database.h:38
A list-like container for CardSet objects with extended management methods.
Definition card_set_list.h:22
Definition dlg_manage_sets.h:29
void fetchMore(const QModelIndex &index) override
Definition card_sets_model.cpp:305
SetsDisplayModel(QObject *parent=nullptr)
Definition card_sets_model.cpp:299
bool lessThan(const QModelIndex &left, const QModelIndex &right) const override
Definition card_sets_model.cpp:329
bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override
Definition card_sets_model.cpp:314
QStringList formats() const
Definition card_sets_model.h:43
SetsMimeData(int _oldRow)
Definition card_sets_model.h:36
int oldRow
Definition card_sets_model.h:33
int getOldRow() const
Definition card_sets_model.h:39
void toggleRow(int row, bool enable)
Definition card_sets_model.cpp:171
bool setData(const QModelIndex &index, const QVariant &value, int role) override
Definition card_sets_model.cpp:81
SetsModel(CardDatabase *_db, QObject *parent=nullptr)
Definition card_sets_model.cpp:18
static const int NUM_COLS
Definition card_sets_model.h:55
Qt::DropActions supportedDropActions() const override
Definition card_sets_model.cpp:131
void swapRows(int oldRow, int newRow)
Definition card_sets_model.cpp:214
void save(CardDatabase *db)
Definition card_sets_model.cpp:259
friend class SetsProxyModel
Definition card_sets_model.h:52
int columnCount(const QModelIndex &parent=QModelIndex()) const override
Definition card_sets_model.h:79
SetsColumns
Definition card_sets_model.h:61
@ PriorityCol
Definition card_sets_model.h:69
@ EnabledCol
Definition card_sets_model.h:64
@ SortKeyCol
Definition card_sets_model.h:62
@ LongNameCol
Definition card_sets_model.h:65
@ ReleaseDateCol
Definition card_sets_model.h:68
@ SetTypeCol
Definition card_sets_model.h:67
@ ShortNameCol
Definition card_sets_model.h:66
@ IsKnownCol
Definition card_sets_model.h:63
void restore(CardDatabase *db)
Definition card_sets_model.cpp:277
QSet< CardSetPtr > enabledSets
Definition card_sets_model.h:57
void toggleAll(bool)
Definition card_sets_model.cpp:201
QVariant data(const QModelIndex &index, int role) const override
Definition card_sets_model.cpp:39
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
Definition card_sets_model.cpp:90
QMimeData * mimeData(const QModelIndexList &indexes) const override
Definition card_sets_model.cpp:136
bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override
Definition card_sets_model.cpp:146
~SetsModel() override
CardSetList sets
Definition card_sets_model.h:56
Role
Definition card_sets_model.h:72
@ SortRole
Definition card_sets_model.h:73
Qt::ItemFlags flags(const QModelIndex &index) const override
Definition card_sets_model.cpp:116
int rowCount(const QModelIndex &parent=QModelIndex()) const override
Definition card_sets_model.cpp:30
void sort(int column, Qt::SortOrder order=Qt::AscendingOrder) override
Definition card_sets_model.cpp:234
void restoreOriginalOrder()
Definition card_sets_model.cpp:227
QStringList mimeTypes() const override
Definition card_sets_model.cpp:294
CardDatabase * db