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
41class SettingsGroup : public QObject
42{
43 Q_OBJECT
44
45public:
48 SettingsGroup(const QString &name, const QString &settingsGroup, QObject* parent = nullptr);
49
50 Q_PROPERTY(bool visible READ visible WRITE setVisible NOTIFY visibleChanged)
51
52 virtual bool visible () { return _visible; }
53 virtual void setVisible (bool vis) { _visible = vis; emit visibleChanged(); }
54
55 QString settingsGroup() const { return _settingsGroup; }
56
57signals:
59
60protected:
61 SettingsFact* _createSettingsFact(const QString& factName);
62
64 QString _name;
66
67 QMap<QString, FactMetaData*> _nameToMetaDataMap;
68
69private:
70 static constexpr const char* kJsonFileTemplate = ":/json/%1.SettingsGroup.json";
71};
A SettingsFact is Fact which holds a QSettings value.
QMap< QString, FactMetaData * > _nameToMetaDataMap
SettingsFact * _createSettingsFact(const QString &factName)
QString settingsGroup() const
QString _settingsGroup
void visibleChanged()
virtual void setVisible(bool vis)
bool visible READ visible WRITE setVisible NOTIFY virtual visibleChanged bool visible()