Cockatrice 2026-09-01-Development-3.1.0-beta.10
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>
16
18{
19 Q_OBJECT
20 friend class SettingsCache;
21
22public:
23 void setSortKey(QString shortName, unsigned int sortKey) override;
24 void setEnabled(QString shortName, bool enabled) override;
25 void setIsKnown(QString shortName, bool isknown) override;
26
27 unsigned int getSortKey(QString shortName) const override;
28 bool isEnabled(QString shortName) const override;
29 bool isKnown(QString shortName) const override;
30
31 SetOptions getSetOptions(QString shortName) const override;
32
33 void saveSets(const QVector<SetSaveData> &data) override;
34
35private:
36 explicit CardDatabaseSettings(const QString &settingPath, QObject *parent = nullptr);
37
38 // In-memory cache of set priority options. QSettings re-opens and re-parses
39 // the whole .ini on every access, which is catastrophic when CardSet
40 // construction calls getSortKey/isEnabled/isKnown once per set during the
41 // database load (thousands of file parses). The cache is populated from a
42 // single QSettings session and kept consistent with the writes below.
43 mutable QMutex setOptionsMutex;
44 mutable QHash<QString, SetOptions> setOptionsCache;
45 mutable bool setOptionsLoaded = false;
46
47 void ensureSetOptionsLoaded() const;
48};
49
50#endif // CARDDATABASESETTINGS_H
void setIsKnown(QString shortName, bool isknown) override
Definition card_database_settings.cpp:26
bool isEnabled(QString shortName) const override
Definition card_database_settings.cpp:60
CardDatabaseSettings(const QString &settingPath, QObject *parent=nullptr)
Definition card_database_settings.cpp:5
bool setOptionsLoaded
Definition card_database_settings.h:45
QMutex setOptionsMutex
Definition card_database_settings.h:43
void setSortKey(QString shortName, unsigned int sortKey) override
Definition card_database_settings.cpp:10
SetOptions getSetOptions(QString shortName) const override
Returns the bundled priority options for a set in a single call.
Definition card_database_settings.cpp:74
friend class SettingsCache
Definition card_database_settings.h:20
unsigned int getSortKey(QString shortName) const override
Definition card_database_settings.cpp:53
bool isKnown(QString shortName) const override
Definition card_database_settings.cpp:67
void ensureSetOptionsLoaded() const
Definition card_database_settings.cpp:34
void saveSets(const QVector< SetSaveData > &data) override
Definition card_database_settings.cpp:81
void setEnabled(QString shortName, bool enabled) override
Definition card_database_settings.cpp:18
QHash< QString, SetOptions > setOptionsCache
Definition card_database_settings.h:44
Definition interface_card_set_priority_controller.h:7
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:33
Bundled per-set priority options, returned in a single call.
Definition interface_card_set_priority_controller.h:26