Cockatrice 2026-10-19-Development-3.1.2-beta.2
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
card_database_settings.h
Go to the documentation of this file.
1
7
8#ifndef CARDDATABASESETTINGS_H
9#define CARDDATABASESETTINGS_H
10
11#include "settings_manager.h"
12
13#include <QHash>
14#include <QMutex>
15#include <QString>
16#include <QVector>
18#include <qtmetamacros.h>
19
20class QObject;
21
23{
24 Q_OBJECT
25 friend class SettingsCache;
26
27public:
28 void setSortKey(QString shortName, unsigned int sortKey) override;
29 void setEnabled(QString shortName, bool enabled) override;
30 void setIsKnown(QString shortName, bool isknown) override;
31
32 unsigned int getSortKey(QString shortName) const override;
33 bool isEnabled(QString shortName) const override;
34 bool isKnown(QString shortName) const override;
35
36 SetOptions getSetOptions(QString shortName) const override;
37
38 QStringList getEnabledSetNames() const override;
39
40 void saveSets(const QVector<SetSaveData> &data) override;
41
42private:
43 explicit CardDatabaseSettings(const QString &settingPath, QObject *parent = nullptr);
44
45 // In-memory cache of set priority options. QSettings re-opens and re-parses
46 // the whole .ini on every access, which is catastrophic when CardSet
47 // construction calls getSortKey/isEnabled/isKnown once per set during the
48 // database load (thousands of file parses). The cache is populated from a
49 // single QSettings session and kept consistent with the writes below.
50 mutable QMutex setOptionsMutex;
52 mutable bool setOptionsLoaded = false;
53
54 void ensureSetOptionsLoaded() const;
55};
56
57#endif // CARDDATABASESETTINGS_H
void setIsKnown(QString shortName, bool isknown) override
Definition card_database_settings.cpp:36
QStringList getEnabledSetNames() const override
Returns the short names of every set currently marked as enabled.
Definition card_database_settings.cpp:91
bool isEnabled(QString shortName) const override
Definition card_database_settings.cpp:70
CardDatabaseSettings(const QString &settingPath, QObject *parent=nullptr)
Definition card_database_settings.cpp:15
bool setOptionsLoaded
Definition card_database_settings.h:52
QMutex setOptionsMutex
Definition card_database_settings.h:50
void setSortKey(QString shortName, unsigned int sortKey) override
Definition card_database_settings.cpp:20
SetOptions getSetOptions(QString shortName) const override
Returns the bundled priority options for a set in a single call.
Definition card_database_settings.cpp:84
friend class SettingsCache
Definition card_database_settings.h:25
unsigned int getSortKey(QString shortName) const override
Definition card_database_settings.cpp:63
bool isKnown(QString shortName) const override
Definition card_database_settings.cpp:77
void ensureSetOptionsLoaded() const
Definition card_database_settings.cpp:44
void saveSets(const QVector< SetSaveData > &data) override
Persists per-set options for every entry in a single settings flush.
Definition card_database_settings.cpp:105
void setEnabled(QString shortName, bool enabled) override
Definition card_database_settings.cpp:28
QHash< QString, SetOptions > setOptionsCache
Definition card_database_settings.h:51
Definition interface_card_set_priority_controller.h:8
Definition mana_curve_category_widget.h:11
SettingsManager(const QString &settingPath, const QString &defaultGroup=QString(), const QString &defaultSubGroup=QString(), QObject *parent=nullptr)
Definition settings_manager.cpp:3
QString settingPath
Definition settings_manager.h:36
Bundled per-set priority options, returned in a single call.
Definition interface_card_set_priority_controller.h:28