Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
/****************************************************************************
*
* (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
*
****************************************************************************/
#include "QGCCorePlugin.h"
#include "QGCOptions.h"
#include "QGCSettings.h"
#include <QtQml>
#include <QQmlEngine>
/// @file
/// @brief Core Plugin Interface for QGroundControl - Default Implementation
/// @author Gus Grubba <mavlink@grubba.com>
class QGCCorePlugin_p
{
public:
QGCCorePlugin_p()
: pGeneral(NULL)
, pCommLinks(NULL)
, pOfflineMaps(NULL)
, pMAVLink(NULL)
, pConsole(NULL)
#if defined(QT_DEBUG)
, pMockLink(NULL)
, pDebug(NULL)
#endif
, defaultOptions(NULL)
{
}
~QGCCorePlugin_p()
{
if(pGeneral)
delete pGeneral;
if(pCommLinks)
delete pCommLinks;
if(pOfflineMaps)
delete pOfflineMaps;
if(pMAVLink)
delete pMAVLink;
if(pConsole)
delete pConsole;
#if defined(QT_DEBUG)
if(pMockLink)
delete pMockLink;
if(pDebug)
delete pDebug;
#endif
if(defaultOptions)
delete defaultOptions;
}
QGCSettings* pGeneral;
QGCSettings* pCommLinks;
QGCSettings* pOfflineMaps;
QGCSettings* pMAVLink;
QGCSettings* pConsole;
#if defined(QT_DEBUG)
QGCSettings* pMockLink;
QGCSettings* pDebug;
#endif
QVariantList settingsList;
QGCOptions* defaultOptions;
};
QGCCorePlugin::~QGCCorePlugin()
{
if(_p) {
delete _p;
}
}
QGCCorePlugin::QGCCorePlugin(QGCApplication *app)
: QGCTool(app)
{
_p = new QGCCorePlugin_p;
}
void QGCCorePlugin::setToolbox(QGCToolbox *toolbox)
{
QGCTool::setToolbox(toolbox);
QQmlEngine::setObjectOwnership(this, QQmlEngine::CppOwnership);
qmlRegisterUncreatableType<QGCCorePlugin>("QGroundControl.QGCCorePlugin", 1, 0, "QGCCorePlugin", "Reference only");
qmlRegisterUncreatableType<QGCOptions>("QGroundControl.QGCOptions", 1, 0, "QGCOptions", "Reference only");
}
QVariantList &QGCCorePlugin::settings()
{
//-- If this hasn't been overridden, create default set of settings
if(!_p->pGeneral) {
QGCOptions* pOptions = options();
//-- Default Settings
if(pOptions->enabledSettings() & QGCOptions::SETTINGS_GENERAL) {
_p->pGeneral = new QGCSettings(tr("General"),
QUrl::fromUserInput("qrc:/qml/GeneralSettings.qml"),
QUrl::fromUserInput("qrc:/res/gear-white.svg"));
_p->settingsList.append(QVariant::fromValue((QGCSettings*)_p->pGeneral));
}
if(pOptions->enabledSettings() & QGCOptions::SETTINGS_COMM_LINKS) {
_p->pCommLinks = new QGCSettings(tr("Comm Links"),
QUrl::fromUserInput("qrc:/qml/LinkSettings.qml"),
QUrl::fromUserInput("qrc:/res/waves.svg"));
_p->settingsList.append(QVariant::fromValue((QGCSettings*)_p->pCommLinks));
}
if(pOptions->enabledSettings() & QGCOptions::SETTINGS_OFFLINE_MAPS) {
_p->pOfflineMaps = new QGCSettings(tr("Offline Maps"),
QUrl::fromUserInput("qrc:/qml/OfflineMap.qml"),
QUrl::fromUserInput("qrc:/res/waves.svg"));
_p->settingsList.append(QVariant::fromValue((QGCSettings*)_p->pOfflineMaps));
}
if(pOptions->enabledSettings() & QGCOptions::SETTINGS_MAVLINK) {
_p->pMAVLink = new QGCSettings(tr("MAVLink"),
QUrl::fromUserInput("qrc:/qml/MavlinkSettings.qml"),
QUrl::fromUserInput("qrc:/res/waves.svg"));
_p->settingsList.append(QVariant::fromValue((QGCSettings*)_p->pMAVLink));
}
if(pOptions->enabledSettings() & QGCOptions::SETTINGS_CONSOLE) {
_p->pConsole = new QGCSettings(tr("Console"),
QUrl::fromUserInput("qrc:/QGroundControl/Controls/AppMessages.qml"));
_p->settingsList.append(QVariant::fromValue((QGCSettings*)_p->pConsole));
}
#if defined(QT_DEBUG)
//-- These are always present on Debug builds
if(pOptions->enabledSettings() & QGCOptions::SETTINGS_MOCKLINK) {
_p->pMockLink = new QGCSettings(tr("Mock Link"),
QUrl::fromUserInput("qrc:/qml/MockLink.qml"));
_p->settingsList.append(QVariant::fromValue((QGCSettings*)_p->pMockLink));
}
if(pOptions->enabledSettings() & QGCOptions::SETTINGS_DEBUG) {
_p->pDebug = new QGCSettings(tr("Debug"),
QUrl::fromUserInput("qrc:/qml/DebugWindow.qml"));
_p->settingsList.append(QVariant::fromValue((QGCSettings*)_p->pDebug));
}
#endif
}
return _p->settingsList;
}
QGCOptions* QGCCorePlugin::options()
{
if(!_p->defaultOptions) {
_p->defaultOptions = new QGCOptions();
}
return _p->defaultOptions;
}