QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
SettingsGroup.h
Go to the documentation of this file.
1#pragma once
2
3#include "SettingsFact.h"
4
5// The best way to understand these macros is to look at their use in SettingsGroup subclasses
6
7#define DEFINE_SETTING_NAME_GROUP() \
8 static const char* name; \
9 static const char* settingsGroup;
10
11#define DECLARE_SETTINGGROUP(NAME, GROUP) \
12 const char* NAME ## Settings::name = #NAME; \
13 const char* NAME ## Settings::settingsGroup = GROUP; \
14 NAME ## Settings::NAME ## Settings(QObject* parent) \
15 : SettingsGroup(name, settingsGroup, parent)
16
17#define DECLARE_SETTINGSFACT(CLASS, NAME) \
18 const char* CLASS::NAME ## Name = #NAME; \
19 Fact* CLASS::NAME() \
20 { \
21 if (!_ ## NAME ## Fact) { \
22 _ ## NAME ## Fact = _createSettingsFact(NAME ## Name); \
23 } \
24 return _ ## NAME ## Fact; \
25 }
26
27#define DECLARE_SETTINGSFACT_NO_FUNC(CLASS, NAME) \
28 const char* CLASS::NAME ## Name = #NAME; \
29 Fact* CLASS::NAME()
30
31#define DEFINE_SETTINGFACT(NAME) \
32 private: \
33 SettingsFact* _ ## NAME ## Fact = nullptr; \
34 public: \
35 Q_PROPERTY(Fact* NAME READ NAME CONSTANT) \
36 Fact* NAME(); \
37 static const char* NAME ## Name;
38
43
44class SettingsGroup : public QObject
45{
46 Q_OBJECT
47
48public:
51 SettingsGroup(const QString &name, const QString &settingsGroup, QObject* parent = nullptr);
52
55 Q_PROPERTY(bool userVisible READ userVisible WRITE setUserVisible NOTIFY userVisibleChanged)
56
57 virtual bool userVisible () { return _userVisible; }
58 virtual void setUserVisible (bool vis) { _userVisible = vis; emit userVisibleChanged(); }
59
60 QString settingsGroup() const { return _settingsGroup; }
61
62signals:
64
65protected:
66 SettingsFact* _createSettingsFact(const QString& factName);
67
69 QString _name;
71
72 QMap<QString, FactMetaData*> _nameToMetaDataMap;
73
74private:
75 static constexpr const char* kJsonFileTemplate = ":/json/%1.SettingsGroup.json";
76};
A SettingsFact is Fact which holds a QSettings value.
Provides access to group of settings.
QMap< QString, FactMetaData * > _nameToMetaDataMap
SettingsFact * _createSettingsFact(const QString &factName)
virtual bool userVisible()
QString settingsGroup() const
QString _settingsGroup
virtual void setUserVisible(bool vis)
void userVisibleChanged()