Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
8587ff69
Commit
8587ff69
authored
Dec 17, 2015
by
Don Gagne
Browse files
Make FirmwarePlugin::supportedCommands actually work
parent
d07bd665
Changes
11
Show whitespace changes
Inline
Side-by-side
qgroundcontrol.pro
View file @
8587ff69
...
@@ -662,19 +662,21 @@ INCLUDEPATH += \
...
@@ -662,19 +662,21 @@ INCLUDEPATH += \
HEADERS
+=
\
HEADERS
+=
\
src
/
FactSystem
/
Fact
.
h
\
src
/
FactSystem
/
Fact
.
h
\
src
/
FactSystem
/
FactControls
/
FactPanelController
.
h
\
src
/
FactSystem
/
FactMetaData
.
h
\
src
/
FactSystem
/
FactMetaData
.
h
\
src
/
FactSystem
/
FactSystem
.
h
\
src
/
FactSystem
/
FactSystem
.
h
\
src
/
FactSystem
/
FactValidator
.
h
\
src
/
FactSystem
/
FactValidator
.
h
\
src
/
FactSystem
/
ParameterLoader
.
h
\
src
/
FactSystem
/
ParameterLoader
.
h
\
src
/
FactSystem
/
FactControls
/
FactPanelController
.
h
\
src
/
FactSystem
/
SettingsFact
.
h
\
SOURCES
+=
\
SOURCES
+=
\
src
/
FactSystem
/
Fact
.
cc
\
src
/
FactSystem
/
Fact
.
cc
\
src
/
FactSystem
/
FactControls
/
FactPanelController
.
cc
\
src
/
FactSystem
/
FactMetaData
.
cc
\
src
/
FactSystem
/
FactMetaData
.
cc
\
src
/
FactSystem
/
FactSystem
.
cc
\
src
/
FactSystem
/
FactSystem
.
cc
\
src
/
FactSystem
/
FactValidator
.
cc
\
src
/
FactSystem
/
FactValidator
.
cc
\
src
/
FactSystem
/
ParameterLoader
.
cc
\
src
/
FactSystem
/
ParameterLoader
.
cc
\
src
/
FactSystem
/
FactControls
/
FactPanelController
.
cc
\
src
/
FactSystem
/
SettingsFact
.
cc
\
#-------------------------------------------------------------------------------------
#-------------------------------------------------------------------------------------
#
Video
Streaming
#
Video
Streaming
...
...
src/FirmwarePlugin/PX4/PX4FirmwarePlugin.cc
View file @
8587ff69
...
@@ -216,12 +216,7 @@ QList<MAV_CMD> PX4FirmwarePlugin::supportedMissionCommands(void)
...
@@ -216,12 +216,7 @@ QList<MAV_CMD> PX4FirmwarePlugin::supportedMissionCommands(void)
<<
MAV_CMD_NAV_LOITER_UNLIM
<<
MAV_CMD_NAV_LOITER_TURNS
<<
MAV_CMD_NAV_LOITER_TIME
<<
MAV_CMD_NAV_LOITER_UNLIM
<<
MAV_CMD_NAV_LOITER_TURNS
<<
MAV_CMD_NAV_LOITER_TIME
<<
MAV_CMD_NAV_RETURN_TO_LAUNCH
<<
MAV_CMD_NAV_LAND
<<
MAV_CMD_NAV_TAKEOFF
<<
MAV_CMD_NAV_RETURN_TO_LAUNCH
<<
MAV_CMD_NAV_LAND
<<
MAV_CMD_NAV_TAKEOFF
<<
MAV_CMD_NAV_ROI
<<
MAV_CMD_NAV_ROI
<<
MAV_CMD_NAV_GUIDED_ENABLE
<<
MAV_CMD_DO_JUMP
<<
MAV_CMD_DO_SET_ROI
<<
MAV_CMD_DO_GUIDED_LIMITS
<<
MAV_CMD_DO_JUMP
<<
MAV_CMD_DO_CHANGE_SPEED
<<
MAV_CMD_DO_SET_CAM_TRIGG_DIST
<<
MAV_CMD_CONDITION_DELAY
;
<<
MAV_CMD_DO_SET_RELAY
<<
MAV_CMD_DO_REPEAT_RELAY
<<
MAV_CMD_DO_SET_SERVO
<<
MAV_CMD_DO_REPEAT_SERVO
<<
MAV_CMD_DO_DIGICAM_CONFIGURE
<<
MAV_CMD_DO_DIGICAM_CONTROL
<<
MAV_CMD_DO_MOUNT_CONTROL
<<
MAV_CMD_CONDITION_DELAY
<<
MAV_CMD_CONDITION_CHANGE_ALT
<<
MAV_CMD_CONDITION_DISTANCE
<<
MAV_CMD_CONDITION_YAW
;
return
list
;
return
list
;
}
}
src/MissionManager/MissionCommands.cc
View file @
8587ff69
...
@@ -22,6 +22,10 @@ This file is part of the QGROUNDCONTROL project
...
@@ -22,6 +22,10 @@ This file is part of the QGROUNDCONTROL project
#include
"MissionCommands.h"
#include
"MissionCommands.h"
#include
"FactMetaData.h"
#include
"FactMetaData.h"
#include
"Vehicle.h"
#include
"FirmwarePluginManager.h"
#include
"QGCApplication.h"
#include
"QGroundControlQmlGlobal.h"
#include
<QStringList>
#include
<QStringList>
#include
<QJsonDocument>
#include
<QJsonDocument>
...
@@ -60,7 +64,14 @@ const QString MissionCommands::_degreesUnits (QStringLiteral("deg
...
@@ -60,7 +64,14 @@ const QString MissionCommands::_degreesUnits (QStringLiteral("deg
MissionCommands
::
MissionCommands
(
QGCApplication
*
app
)
MissionCommands
::
MissionCommands
(
QGCApplication
*
app
)
:
QGCTool
(
app
)
:
QGCTool
(
app
)
{
{
}
void
MissionCommands
::
setToolbox
(
QGCToolbox
*
toolbox
)
{
QGCTool
::
setToolbox
(
toolbox
);
_loadMavCmdInfoJson
();
_loadMavCmdInfoJson
();
_createFirmwareSpecificLists
();
}
}
bool
MissionCommands
::
_validateKeyTypes
(
QJsonObject
&
jsonObject
,
const
QStringList
&
keys
,
const
QList
<
QJsonValue
::
Type
>&
types
)
bool
MissionCommands
::
_validateKeyTypes
(
QJsonObject
&
jsonObject
,
const
QStringList
&
keys
,
const
QList
<
QJsonValue
::
Type
>&
types
)
...
@@ -165,7 +176,6 @@ void MissionCommands::_loadMavCmdInfoJson(void)
...
@@ -165,7 +176,6 @@ void MissionCommands::_loadMavCmdInfoJson(void)
}
}
_mavCmdInfoMap
[
mavCmdInfo
->
_command
]
=
mavCmdInfo
;
_mavCmdInfoMap
[
mavCmdInfo
->
_command
]
=
mavCmdInfo
;
_commandList
.
append
(
mavCmdInfo
);
// Read params
// Read params
...
@@ -234,16 +244,13 @@ void MissionCommands::_loadMavCmdInfoJson(void)
...
@@ -234,16 +244,13 @@ void MissionCommands::_loadMavCmdInfoJson(void)
if
(
mavCmdInfo
->
_command
!=
MAV_CMD_NAV_LAST
)
{
if
(
mavCmdInfo
->
_command
!=
MAV_CMD_NAV_LAST
)
{
// Don't add fake home postion command to categories
// Don't add fake home postion command to categories
if
(
!
_categories
.
contains
(
mavCmdInfo
->
category
())
&&
mavCmdInfo
->
friendlyEdit
())
{
if
(
mavCmdInfo
->
friendlyEdit
())
{
// Only friendly edit commands go in category list
// Only friendly edit commands go in category list. We use MAV_AUTOPILOT_GENERIC key to store full list.
if
(
!
_categoryToMavCmdInfoListMap
.
contains
(
MAV_AUTOPILOT_GENERIC
)
||
!
_categoryToMavCmdInfoListMap
[
MAV_AUTOPILOT_GENERIC
].
contains
(
mavCmdInfo
->
category
()))
{
qCDebug
(
MissionCommandsLog
)
<<
"Adding new category"
;
qCDebug
(
MissionCommandsLog
)
<<
"Adding new category"
;
_categories
.
append
(
mavCmdInfo
->
category
());
_categoryToMavCmdInfoListMap
[
MAV_AUTOPILOT_GENERIC
][
mavCmdInfo
->
category
()]
=
new
QmlObjectListModel
(
this
);
_categoryToMavCmdInfoListMap
[
mavCmdInfo
->
category
()]
=
new
QmlObjectListModel
(
this
);
}
}
_categoryToMavCmdInfoListMap
[
MAV_AUTOPILOT_GENERIC
][
mavCmdInfo
->
category
()]
->
append
(
mavCmdInfo
);
if
(
mavCmdInfo
->
friendlyEdit
())
{
// Only friendly edit commands go in category list
_categoryToMavCmdInfoListMap
[
mavCmdInfo
->
category
()]
->
append
(
mavCmdInfo
);
}
}
}
}
...
@@ -259,3 +266,64 @@ void MissionCommands::_loadMavCmdInfoJson(void)
...
@@ -259,3 +266,64 @@ void MissionCommands::_loadMavCmdInfoJson(void)
}
}
}
}
}
}
MAV_AUTOPILOT
MissionCommands
::
_firmwareTypeFromVehicle
(
Vehicle
*
vehicle
)
const
{
if
(
vehicle
)
{
return
vehicle
->
firmwareType
();
}
else
{
QSettings
settings
;
// FIXME: Hack duplicated code from QGroundControlQmlGlobal. Had to do this for now since
// QGroundControlQmlGlobal is not available from C++ side.
return
(
MAV_AUTOPILOT
)
settings
.
value
(
"OfflineEditingFirmwareType"
,
MAV_AUTOPILOT_ARDUPILOTMEGA
).
toInt
();
}
}
QString
MissionCommands
::
categoryFromCommand
(
MavlinkQmlSingleton
::
Qml_MAV_CMD
command
)
const
{
return
_mavCmdInfoMap
[(
MAV_CMD
)
command
]
->
category
();
}
QVariant
MissionCommands
::
getCommandsForCategory
(
Vehicle
*
vehicle
,
const
QString
&
category
)
const
{
return
QVariant
::
fromValue
(
_categoryToMavCmdInfoListMap
[
_firmwareTypeFromVehicle
(
vehicle
)][
category
]);
}
const
QStringList
MissionCommands
::
categories
(
Vehicle
*
vehicle
)
const
{
QStringList
list
;
foreach
(
QString
category
,
_categoryToMavCmdInfoListMap
[
_firmwareTypeFromVehicle
(
vehicle
)].
keys
())
{
list
<<
category
;
}
return
list
;
}
void
MissionCommands
::
_createFirmwareSpecificLists
(
void
)
{
QList
<
MAV_AUTOPILOT
>
firmwareList
;
firmwareList
<<
MAV_AUTOPILOT_PX4
<<
MAV_AUTOPILOT_ARDUPILOTMEGA
;
foreach
(
MAV_AUTOPILOT
firmwareType
,
firmwareList
)
{
FirmwarePlugin
*
plugin
=
_toolbox
->
firmwarePluginManager
()
->
firmwarePluginForAutopilot
(
firmwareType
,
MAV_TYPE_QUADROTOR
);
QList
<
MAV_CMD
>
cmdList
=
plugin
->
supportedMissionCommands
();
foreach
(
MAV_CMD
command
,
cmdList
)
{
MavCmdInfo
*
mavCmdInfo
=
_mavCmdInfoMap
[
command
];
if
(
mavCmdInfo
->
friendlyEdit
())
{
if
(
!
_categoryToMavCmdInfoListMap
.
contains
(
firmwareType
)
||
!
_categoryToMavCmdInfoListMap
[
firmwareType
].
contains
(
mavCmdInfo
->
category
()))
{
qCDebug
(
MissionCommandsLog
)
<<
"Adding new category"
<<
firmwareType
;
_categoryToMavCmdInfoListMap
[
firmwareType
][
mavCmdInfo
->
category
()]
=
new
QmlObjectListModel
(
this
);
}
_categoryToMavCmdInfoListMap
[
firmwareType
][
mavCmdInfo
->
category
()]
->
append
(
mavCmdInfo
);
}
else
{
qWarning
()
<<
"Attempt to add non friendly edit supported command"
;
}
}
}
}
src/MissionManager/MissionCommands.h
View file @
8587ff69
...
@@ -38,6 +38,7 @@
...
@@ -38,6 +38,7 @@
Q_DECLARE_LOGGING_CATEGORY
(
MissionCommandsLog
)
Q_DECLARE_LOGGING_CATEGORY
(
MissionCommandsLog
)
class
MissionCommands
;
class
MissionCommands
;
class
Vehicle
;
class
MavCmdParamInfo
:
public
QObject
{
class
MavCmdParamInfo
:
public
QObject
{
...
@@ -129,17 +130,15 @@ class MissionCommands : public QGCTool
...
@@ -129,17 +130,15 @@ class MissionCommands : public QGCTool
public:
public:
MissionCommands
(
QGCApplication
*
app
);
MissionCommands
(
QGCApplication
*
app
);
Q_PROPERTY
(
QStringList
categories
READ
categories
CONSTANT
)
Q_INVOKABLE
const
QStringList
categories
(
Vehicle
*
vehicle
)
const
;
Q_PROPERTY
(
const
QmlObjectListModel
*
commands
READ
commands
CONSTANT
)
Q_INVOKABLE
QString
categoryFromCommand
(
MavlinkQmlSingleton
::
Qml_MAV_CMD
command
)
const
;
Q_INVOKABLE
QVariant
getCommandsForCategory
(
Vehicle
*
vehicle
,
const
QString
&
category
)
const
;
Q_INVOKABLE
QString
categoryFromCommand
(
MavlinkQmlSingleton
::
Qml_MAV_CMD
command
)
{
return
_mavCmdInfoMap
[(
MAV_CMD
)
command
]
->
category
();
}
Q_INVOKABLE
const
QVariant
getCommandsForCategory
(
const
QString
&
category
)
const
{
return
QVariant
::
fromValue
(
_categoryToMavCmdInfoListMap
[
category
]);
}
const
QStringList
categories
(
void
)
const
{
return
_categories
;
}
const
QmlObjectListModel
*
commands
(
void
)
const
{
return
&
_commandList
;
}
const
QMap
<
MAV_CMD
,
MavCmdInfo
*>&
commandInfoMap
(
void
)
const
{
return
_mavCmdInfoMap
;
};
const
QMap
<
MAV_CMD
,
MavCmdInfo
*>&
commandInfoMap
(
void
)
const
{
return
_mavCmdInfoMap
;
};
// Overrides from QGCTool
virtual
void
setToolbox
(
QGCToolbox
*
toolbox
);
static
const
QString
_degreesUnits
;
static
const
QString
_degreesUnits
;
static
const
QString
_degreesConvertUnits
;
static
const
QString
_degreesConvertUnits
;
...
@@ -147,13 +146,13 @@ signals:
...
@@ -147,13 +146,13 @@ signals:
private:
private:
void
_loadMavCmdInfoJson
(
void
);
void
_loadMavCmdInfoJson
(
void
);
void
_createFirmwareSpecificLists
(
void
);
void
_setupMetaData
(
void
);
void
_setupMetaData
(
void
);
bool
_validateKeyTypes
(
QJsonObject
&
jsonObject
,
const
QStringList
&
keys
,
const
QList
<
QJsonValue
::
Type
>&
types
);
bool
_validateKeyTypes
(
QJsonObject
&
jsonObject
,
const
QStringList
&
keys
,
const
QList
<
QJsonValue
::
Type
>&
types
);
MAV_AUTOPILOT
_firmwareTypeFromVehicle
(
Vehicle
*
vehicle
)
const
;
private:
private:
QStringList
_categories
;
QMap
<
MAV_AUTOPILOT
,
QMap
<
QString
,
QmlObjectListModel
*>
>
_categoryToMavCmdInfoListMap
;
QMap
<
QString
,
QmlObjectListModel
*>
_categoryToMavCmdInfoListMap
;
QmlObjectListModel
_commandList
;
QMap
<
MAV_CMD
,
MavCmdInfo
*>
_mavCmdInfoMap
;
QMap
<
MAV_CMD
,
MavCmdInfo
*>
_mavCmdInfoMap
;
static
const
QString
_categoryJsonKey
;
static
const
QString
_categoryJsonKey
;
...
...
src/MissionManager/MissionItem.cc
View file @
8587ff69
...
@@ -37,7 +37,6 @@ FactMetaData* MissionItem::_defaultParamMetaData = NULL;
...
@@ -37,7 +37,6 @@ FactMetaData* MissionItem::_defaultParamMetaData = NULL;
FactMetaData
*
MissionItem
::
_frameMetaData
=
NULL
;
FactMetaData
*
MissionItem
::
_frameMetaData
=
NULL
;
FactMetaData
*
MissionItem
::
_latitudeMetaData
=
NULL
;
FactMetaData
*
MissionItem
::
_latitudeMetaData
=
NULL
;
FactMetaData
*
MissionItem
::
_longitudeMetaData
=
NULL
;
FactMetaData
*
MissionItem
::
_longitudeMetaData
=
NULL
;
FactMetaData
*
MissionItem
::
_supportedCommandMetaData
=
NULL
;
struct
EnumInfo_s
{
struct
EnumInfo_s
{
const
char
*
label
;
const
char
*
label
;
...
@@ -108,7 +107,6 @@ MissionItem::MissionItem(QObject* parent)
...
@@ -108,7 +107,6 @@ MissionItem::MissionItem(QObject* parent)
,
_param7MetaData
(
FactMetaData
::
valueTypeDouble
)
,
_param7MetaData
(
FactMetaData
::
valueTypeDouble
)
,
_syncingAltitudeRelativeToHomeAndFrame
(
false
)
,
_syncingAltitudeRelativeToHomeAndFrame
(
false
)
,
_syncingHeadingDegreesAndParam4
(
false
)
,
_syncingHeadingDegreesAndParam4
(
false
)
,
_syncingSupportedCommandAndCommand
(
false
)
,
_mavCmdInfoMap
(
qgcApp
()
->
toolbox
()
->
missionCommands
()
->
commandInfoMap
())
,
_mavCmdInfoMap
(
qgcApp
()
->
toolbox
()
->
missionCommands
()
->
commandInfoMap
())
{
{
// Need a good command and frame before we start passing signals around
// Need a good command and frame before we start passing signals around
...
@@ -167,7 +165,6 @@ MissionItem::MissionItem(int sequenceNumber,
...
@@ -167,7 +165,6 @@ MissionItem::MissionItem(int sequenceNumber,
,
_param7MetaData
(
FactMetaData
::
valueTypeDouble
)
,
_param7MetaData
(
FactMetaData
::
valueTypeDouble
)
,
_syncingAltitudeRelativeToHomeAndFrame
(
false
)
,
_syncingAltitudeRelativeToHomeAndFrame
(
false
)
,
_syncingHeadingDegreesAndParam4
(
false
)
,
_syncingHeadingDegreesAndParam4
(
false
)
,
_syncingSupportedCommandAndCommand
(
false
)
,
_mavCmdInfoMap
(
qgcApp
()
->
toolbox
()
->
missionCommands
()
->
commandInfoMap
())
,
_mavCmdInfoMap
(
qgcApp
()
->
toolbox
()
->
missionCommands
()
->
commandInfoMap
())
{
{
// Need a good command and frame before we start passing signals around
// Need a good command and frame before we start passing signals around
...
@@ -183,7 +180,6 @@ MissionItem::MissionItem(int sequenceNumber,
...
@@ -183,7 +180,6 @@ MissionItem::MissionItem(int sequenceNumber,
setAutoContinue
(
autoContinue
);
setAutoContinue
(
autoContinue
);
_syncFrameToAltitudeRelativeToHome
();
_syncFrameToAltitudeRelativeToHome
();
_syncCommandToSupportedCommand
(
QVariant
(
this
->
command
()));
_param1Fact
.
setRawValue
(
param1
);
_param1Fact
.
setRawValue
(
param1
);
_param2Fact
.
setRawValue
(
param2
);
_param2Fact
.
setRawValue
(
param2
);
...
@@ -223,7 +219,6 @@ MissionItem::MissionItem(const MissionItem& other, QObject* parent)
...
@@ -223,7 +219,6 @@ MissionItem::MissionItem(const MissionItem& other, QObject* parent)
,
_param4MetaData
(
FactMetaData
::
valueTypeDouble
)
,
_param4MetaData
(
FactMetaData
::
valueTypeDouble
)
,
_syncingAltitudeRelativeToHomeAndFrame
(
false
)
,
_syncingAltitudeRelativeToHomeAndFrame
(
false
)
,
_syncingHeadingDegreesAndParam4
(
false
)
,
_syncingHeadingDegreesAndParam4
(
false
)
,
_syncingSupportedCommandAndCommand
(
false
)
,
_mavCmdInfoMap
(
qgcApp
()
->
toolbox
()
->
missionCommands
()
->
commandInfoMap
())
,
_mavCmdInfoMap
(
qgcApp
()
->
toolbox
()
->
missionCommands
()
->
commandInfoMap
())
{
{
// Need a good command and frame before we start passing signals around
// Need a good command and frame before we start passing signals around
...
@@ -254,7 +249,6 @@ const MissionItem& MissionItem::operator=(const MissionItem& other)
...
@@ -254,7 +249,6 @@ const MissionItem& MissionItem::operator=(const MissionItem& other)
setHomePositionValid
(
other
.
_homePositionValid
);
setHomePositionValid
(
other
.
_homePositionValid
);
_syncFrameToAltitudeRelativeToHome
();
_syncFrameToAltitudeRelativeToHome
();
_syncCommandToSupportedCommand
(
QVariant
(
this
->
command
()));
_param1Fact
.
setRawValue
(
other
.
_param1Fact
.
rawValue
());
_param1Fact
.
setRawValue
(
other
.
_param1Fact
.
rawValue
());
_param2Fact
.
setRawValue
(
other
.
_param2Fact
.
rawValue
());
_param2Fact
.
setRawValue
(
other
.
_param2Fact
.
rawValue
());
...
@@ -282,8 +276,6 @@ void MissionItem::_connectSignals(void)
...
@@ -282,8 +276,6 @@ void MissionItem::_connectSignals(void)
connect
(
this
,
&
MissionItem
::
sequenceNumberChanged
,
this
,
&
MissionItem
::
_setDirtyFromSignal
);
connect
(
this
,
&
MissionItem
::
sequenceNumberChanged
,
this
,
&
MissionItem
::
_setDirtyFromSignal
);
// Values from these facts must propogate back and forth between the real object storage
// Values from these facts must propogate back and forth between the real object storage
connect
(
&
_supportedCommandFact
,
&
Fact
::
valueChanged
,
this
,
&
MissionItem
::
_syncSupportedCommandToCommand
);
connect
(
&
_commandFact
,
&
Fact
::
valueChanged
,
this
,
&
MissionItem
::
_syncCommandToSupportedCommand
);
connect
(
&
_altitudeRelativeToHomeFact
,
&
Fact
::
valueChanged
,
this
,
&
MissionItem
::
_syncAltitudeRelativeToHomeToFrame
);
connect
(
&
_altitudeRelativeToHomeFact
,
&
Fact
::
valueChanged
,
this
,
&
MissionItem
::
_syncAltitudeRelativeToHomeToFrame
);
connect
(
this
,
&
MissionItem
::
frameChanged
,
this
,
&
MissionItem
::
_syncFrameToAltitudeRelativeToHome
);
connect
(
this
,
&
MissionItem
::
frameChanged
,
this
,
&
MissionItem
::
_syncFrameToAltitudeRelativeToHome
);
...
@@ -351,28 +343,10 @@ void MissionItem::_setupMetaData(void)
...
@@ -351,28 +343,10 @@ void MissionItem::_setupMetaData(void)
_longitudeMetaData
->
setUnits
(
"deg"
);
_longitudeMetaData
->
setUnits
(
"deg"
);
_longitudeMetaData
->
setDecimalPlaces
(
7
);
_longitudeMetaData
->
setDecimalPlaces
(
7
);
enumStrings
.
clear
();
enumValues
.
clear
();
// FIXME: Hack hardcode to PX4
QList
<
MAV_CMD
>
supportedCommands
=
qgcApp
()
->
toolbox
()
->
firmwarePluginManager
()
->
firmwarePluginForAutopilot
(
MAV_AUTOPILOT_PX4
,
MAV_TYPE_QUADROTOR
)
->
supportedMissionCommands
();
if
(
supportedCommands
.
count
())
{
foreach
(
MAV_CMD
command
,
supportedCommands
)
{
enumStrings
.
append
(
_mavCmdInfoMap
[
command
]
->
friendlyName
());
enumValues
.
append
(
QVariant
(
command
));
}
}
else
{
foreach
(
const
MavCmdInfo
*
mavCmdInfo
,
_mavCmdInfoMap
)
{
enumStrings
.
append
(
mavCmdInfo
->
friendlyName
());
enumValues
.
append
(
QVariant
(
mavCmdInfo
->
command
()));
}
}
_supportedCommandMetaData
=
new
FactMetaData
(
FactMetaData
::
valueTypeUint32
);
_supportedCommandMetaData
->
setEnumInfo
(
enumStrings
,
enumValues
);
}
}
_commandFact
.
setMetaData
(
_commandMetaData
);
_commandFact
.
setMetaData
(
_commandMetaData
);
_frameFact
.
setMetaData
(
_frameMetaData
);
_frameFact
.
setMetaData
(
_frameMetaData
);
_supportedCommandFact
.
setMetaData
(
_supportedCommandMetaData
);
}
}
MissionItem
::~
MissionItem
()
MissionItem
::~
MissionItem
()
...
@@ -787,24 +761,6 @@ void MissionItem::_syncFrameToAltitudeRelativeToHome(void)
...
@@ -787,24 +761,6 @@ void MissionItem::_syncFrameToAltitudeRelativeToHome(void)
}
}
}
}
void
MissionItem
::
_syncSupportedCommandToCommand
(
const
QVariant
&
value
)
{
if
(
!
_syncingSupportedCommandAndCommand
)
{
_syncingSupportedCommandAndCommand
=
true
;
_commandFact
.
setRawValue
(
value
.
toInt
());
_syncingSupportedCommandAndCommand
=
false
;
}
}
void
MissionItem
::
_syncCommandToSupportedCommand
(
const
QVariant
&
value
)
{
if
(
!
_syncingSupportedCommandAndCommand
)
{
_syncingSupportedCommandAndCommand
=
true
;
_supportedCommandFact
.
setRawValue
(
value
.
toInt
());
_syncingSupportedCommandAndCommand
=
false
;
}
}
void
MissionItem
::
setDefaultsForCommand
(
void
)
void
MissionItem
::
setDefaultsForCommand
(
void
)
{
{
// We set these global defaults first, then if there are param defaults they will get reset
// We set these global defaults first, then if there are param defaults they will get reset
...
...
src/MissionManager/MissionItem.h
View file @
8587ff69
...
@@ -87,7 +87,6 @@ public:
...
@@ -87,7 +87,6 @@ public:
Q_PROPERTY
(
int
sequenceNumber
READ
sequenceNumber
WRITE
setSequenceNumber
NOTIFY
sequenceNumberChanged
)
Q_PROPERTY
(
int
sequenceNumber
READ
sequenceNumber
WRITE
setSequenceNumber
NOTIFY
sequenceNumberChanged
)
Q_PROPERTY
(
bool
standaloneCoordinate
READ
standaloneCoordinate
NOTIFY
commandChanged
)
Q_PROPERTY
(
bool
standaloneCoordinate
READ
standaloneCoordinate
NOTIFY
commandChanged
)
Q_PROPERTY
(
bool
specifiesCoordinate
READ
specifiesCoordinate
NOTIFY
commandChanged
)
Q_PROPERTY
(
bool
specifiesCoordinate
READ
specifiesCoordinate
NOTIFY
commandChanged
)
Q_PROPERTY
(
Fact
*
supportedCommand
READ
supportedCommand
NOTIFY
commandChanged
)
// These properties are used to display the editing ui
// These properties are used to display the editing ui
Q_PROPERTY
(
QmlObjectListModel
*
checkboxFacts
READ
checkboxFacts
NOTIFY
uiModelChanged
)
Q_PROPERTY
(
QmlObjectListModel
*
checkboxFacts
READ
checkboxFacts
NOTIFY
uiModelChanged
)
...
@@ -118,7 +117,6 @@ public:
...
@@ -118,7 +117,6 @@ public:
int
sequenceNumber
(
void
)
const
{
return
_sequenceNumber
;
}
int
sequenceNumber
(
void
)
const
{
return
_sequenceNumber
;
}
bool
standaloneCoordinate
(
void
)
const
;
bool
standaloneCoordinate
(
void
)
const
;
bool
specifiesCoordinate
(
void
)
const
;
bool
specifiesCoordinate
(
void
)
const
;
Fact
*
supportedCommand
(
void
)
{
return
&
_supportedCommandFact
;
}
QmlObjectListModel
*
textFieldFacts
(
void
);
QmlObjectListModel
*
textFieldFacts
(
void
);
...
@@ -206,9 +204,7 @@ private slots:
...
@@ -206,9 +204,7 @@ private slots:
void
_sendFriendlyEditAllowedChanged
(
void
);
void
_sendFriendlyEditAllowedChanged
(
void
);
void
_sendUiModelChanged
(
void
);
void
_sendUiModelChanged
(
void
);
void
_syncAltitudeRelativeToHomeToFrame
(
const
QVariant
&
value
);
void
_syncAltitudeRelativeToHomeToFrame
(
const
QVariant
&
value
);
void
_syncCommandToSupportedCommand
(
const
QVariant
&
value
);
void
_syncFrameToAltitudeRelativeToHome
(
void
);
void
_syncFrameToAltitudeRelativeToHome
(
void
);
void
_syncSupportedCommandToCommand
(
const
QVariant
&
value
);
private:
private:
void
_clearParamMetaData
(
void
);
void
_clearParamMetaData
(
void
);
...
@@ -249,7 +245,6 @@ private:
...
@@ -249,7 +245,6 @@ private:
static
FactMetaData
*
_frameMetaData
;
static
FactMetaData
*
_frameMetaData
;
static
FactMetaData
*
_latitudeMetaData
;
static
FactMetaData
*
_latitudeMetaData
;
static
FactMetaData
*
_longitudeMetaData
;
static
FactMetaData
*
_longitudeMetaData
;
static
FactMetaData
*
_supportedCommandMetaData
;
FactMetaData
_param1MetaData
;
FactMetaData
_param1MetaData
;
FactMetaData
_param2MetaData
;
FactMetaData
_param2MetaData
;
...
@@ -264,7 +259,6 @@ private:
...
@@ -264,7 +259,6 @@ private:
bool
_syncingAltitudeRelativeToHomeAndFrame
;
///< true: already in a sync signal, prevents signal loop
bool
_syncingAltitudeRelativeToHomeAndFrame
;
///< true: already in a sync signal, prevents signal loop
bool
_syncingHeadingDegreesAndParam4
;
///< true: already in a sync signal, prevents signal loop
bool
_syncingHeadingDegreesAndParam4
;
///< true: already in a sync signal, prevents signal loop
bool
_syncingSupportedCommandAndCommand
;
///< true: already in a sync signal, prevents signal loop
const
QMap
<
MAV_CMD
,
MavCmdInfo
*>&
_mavCmdInfoMap
;
const
QMap
<
MAV_CMD
,
MavCmdInfo
*>&
_mavCmdInfoMap
;
};
};
...
...
src/QGCApplication.cc
View file @
8587ff69
...
@@ -145,7 +145,11 @@ static QObject* mavlinkQmlSingletonFactory(QQmlEngine*, QJSEngine*)
...
@@ -145,7 +145,11 @@ static QObject* mavlinkQmlSingletonFactory(QQmlEngine*, QJSEngine*)
static
QObject
*
qgroundcontrolQmlGlobalSingletonFactory
(
QQmlEngine
*
,
QJSEngine
*
)
static
QObject
*
qgroundcontrolQmlGlobalSingletonFactory
(
QQmlEngine
*
,
QJSEngine
*
)
{
{
return
new
QGroundControlQmlGlobal
(
qgcApp
()
->
toolbox
());
// We create this object as a QGCTool even though it isn't int he toolbox
QGroundControlQmlGlobal
*
qmlGlobal
=
new
QGroundControlQmlGlobal
(
qgcApp
());
qmlGlobal
->
setToolbox
(
qgcApp
()
->
toolbox
());
return
qmlGlobal
;
}
}
/**
/**
...
...
src/QmlControls/MissionCommandDialog.qml
View file @
8587ff69
...
@@ -32,6 +32,8 @@ import QGroundControl.Palette 1.0
...
@@ -32,6 +32,8 @@ import QGroundControl.Palette 1.0
QGCViewDialog
{
QGCViewDialog
{
property
var
missionItem
property
var
missionItem
property
var
_vehicle
:
QGroundControl
.
multiVehicleManager
.
activeVehicle
QGCPalette
{
id
:
qgcPal
}
QGCPalette
{
id
:
qgcPal
}
QGCLabel
{
QGCLabel
{
...
@@ -45,10 +47,10 @@ QGCViewDialog {
...
@@ -45,10 +47,10 @@ QGCViewDialog {
anchors.margins
:
ScreenTools
.
defaultFontPixelWidth
anchors.margins
:
ScreenTools
.
defaultFontPixelWidth
anchors.left
:
categoryLabel
.
right
anchors.left
:
categoryLabel
.
right
anchors.right
:
parent
.
right
anchors.right
:
parent
.
right
model
:
QGroundControl
.
missionCommands
.
categories
model
:
QGroundControl
.
missionCommands
.
categories
(
_vehicle
)
function
categorySelected
(
category
)
{
function
categorySelected
(
category
)
{
commandList
.
model
=
QGroundControl
.
missionCommands
.
getCommandsForCategory
(
category
)
commandList
.
model
=
QGroundControl
.
missionCommands
.
getCommandsForCategory
(
_vehicle
,
category
)
}
}
Component.onCompleted
:
{
Component.onCompleted
:
{
...
@@ -109,5 +111,4 @@ QGCViewDialog {
...
@@ -109,5 +111,4 @@ QGCViewDialog {
}
}
}
}
}
// ListView
}
// ListView
}
// QGCViewDialog
}
// QGCViewDialog
src/QmlControls/QGroundControlQmlGlobal.cc
View file @
8587ff69
...
@@ -25,7 +25,6 @@
...
@@ -25,7 +25,6 @@
/// @author Don Gagne <don@thegagnes.com>
/// @author Don Gagne <don@thegagnes.com>
#include
"QGroundControlQmlGlobal.h"
#include
"QGroundControlQmlGlobal.h"
#include
"QGCApplication.h"
#include
<QSettings>
#include
<QSettings>
...
@@ -33,19 +32,49 @@ static const char* kQmlGlobalKeyName = "QGCQml";
...
@@ -33,19 +32,49 @@ static const char* kQmlGlobalKeyName = "QGCQml";
const
char
*
QGroundControlQmlGlobal
::
_virtualTabletJoystickKey
=
"VirtualTabletJoystick"
;
const
char
*
QGroundControlQmlGlobal
::
_virtualTabletJoystickKey
=
"VirtualTabletJoystick"
;
QGroundControlQmlGlobal
::
QGroundControlQmlGlobal
(
QGC
Toolbox
*
toolbox
,
QObject
*
parent
)
QGroundControlQmlGlobal
::
QGroundControlQmlGlobal
(
QGC
Application
*
app
)
:
Q
Object
(
parent
)
:
Q
GCTool
(
app
)
,
_flightMapSettings
(
toolbox
->
flightMapSettings
()
)
,
_flightMapSettings
(
NULL
)
,
_homePositionManager
(
toolbox
->
homePositionManager
()
)
,
_homePositionManager
(
NULL
)
,
_linkManager
(
toolbox
->
linkManager
()
)
,
_linkManager
(
NULL
)
,
_missionCommands
(
toolbox
->
missionCommands
()
)
,
_missionCommands
(
NULL
)
,
_multiVehicleManager
(
toolbox
->
multiVehicleManager
()
)
,
_multiVehicleManager
(
NULL
)
,
_virtualTabletJoystick
(
false
)
,
_virtualTabletJoystick
(
false
)
,
_offlineEditingFirmwareTypeFact
(
QString
(),
"OfflineEditingFirmwareType"
,
FactMetaData
::
valueTypeUint32
,
(
uint32_t
)
MAV_AUTOPILOT_ARDUPILOTMEGA
)
,
_offlineEditingFirmwareTypeMetaData
(
FactMetaData
::
valueTypeUint32
)
{
{
QSettings
settings
;
QSettings
settings
;
_virtualTabletJoystick
=
settings
.
value
(
_virtualTabletJoystickKey
,
false
).
toBool
();
_virtualTabletJoystick
=
settings
.
value
(
_virtualTabletJoystickKey
,
false
).
toBool
();
QStringList
firmwareEnumStrings
;
QVariantList
firmwareEnumValues
;
firmwareEnumStrings
<<
"APM Flight Stack"
<<
"PX4 Flight Stack"
<<
"Mavlink Generic Flight Stack"
;
firmwareEnumValues
<<
QVariant
::
fromValue
((
uint32_t
)
MAV_AUTOPILOT_ARDUPILOTMEGA
)
<<
QVariant
::
fromValue
((
uint32_t
)
MAV_AUTOPILOT_PX4
)
<<
QVariant
::
fromValue
((
uint32_t
)
MAV_AUTOPILOT_GENERIC
);
_offlineEditingFirmwareTypeMetaData
.
setEnumInfo
(
firmwareEnumStrings
,
firmwareEnumValues
);
_offlineEditingFirmwareTypeFact
.
setMetaData
(
&
_offlineEditingFirmwareTypeMetaData
);
}
QGroundControlQmlGlobal
::~
QGroundControlQmlGlobal
()
{
}
}
void
QGroundControlQmlGlobal
::
setToolbox
(
QGCToolbox
*
toolbox
)
{
QGCTool
::
setToolbox
(
toolbox
);
_flightMapSettings
=
toolbox
->
flightMapSettings
();
_homePositionManager
=
toolbox
->
homePositionManager
();
_linkManager
=
toolbox
->
linkManager
();
_missionCommands
=
toolbox
->
missionCommands
();
_multiVehicleManager
=
toolbox
->
multiVehicleManager
();
}
void
QGroundControlQmlGlobal
::
saveGlobalSetting
(
const
QString
&
key
,
const
QString
&
value
)
void
QGroundControlQmlGlobal
::
saveGlobalSetting
(
const
QString
&
key
,
const
QString
&
value
)
{
{
QSettings
settings
;
QSettings
settings
;
...
...
src/QmlControls/QGroundControlQmlGlobal.h
View file @
8587ff69
...
@@ -27,13 +27,13 @@
...
@@ -27,13 +27,13 @@
#ifndef QGroundControlQmlGlobal_H
#ifndef QGroundControlQmlGlobal_H
#define QGroundControlQmlGlobal_H
#define QGroundControlQmlGlobal_H
#include
<QObject>
#include
"QGCToolBox.h"
#include
"QGCApplication.h"
#include
"QGCApplication.h"
#include
"LinkManager.h"
#include
"LinkManager.h"
#include
"HomePositionManager.h"
#include
"HomePositionManager.h"
#include
"FlightMapSettings.h"
#include
"FlightMapSettings.h"
#include
"MissionCommands.h"
#include
"MissionCommands.h"
#include
"SettingsFact.h"
#ifdef QT_DEBUG
#ifdef QT_DEBUG
#include
"MockLink.h"
#include
"MockLink.h"
...
@@ -41,12 +41,14 @@
...
@@ -41,12 +41,14 @@
class
QGCToolbox
;
class
QGCToolbox
;
class
QGroundControlQmlGlobal
:
public
Q
Object
class
QGroundControlQmlGlobal
:
public
Q
GCTool
{
{
Q_OBJECT
Q_OBJECT
public:
public:
QGroundControlQmlGlobal
(
QGCToolbox
*
toolbox
,
QObject
*
parent
=
NULL
);
QGroundControlQmlGlobal
(
QGCApplication
*
app
);
~
QGroundControlQmlGlobal
();
Q_PROPERTY
(
FlightMapSettings
*
flightMapSettings
READ
flightMapSettings
CONSTANT
)
Q_PROPERTY
(
FlightMapSettings
*
flightMapSettings
READ
flightMapSettings
CONSTANT
)
Q_PROPERTY
(
HomePositionManager
*
homePositionManager
READ
homePositionManager
CONSTANT
)
Q_PROPERTY
(
HomePositionManager
*
homePositionManager
READ
homePositionManager
CONSTANT
)
...
@@ -72,13 +74,15 @@ public:
...
@@ -72,13 +74,15 @@ public:
Q_PROPERTY
(
bool
isVersionCheckEnabled
READ
isVersionCheckEnabled
WRITE
setIsVersionCheckEnabled
NOTIFY
isVersionCheckEnabledChanged
)
Q_PROPERTY
(
bool
isVersionCheckEnabled
READ
isVersionCheckEnabled
WRITE
setIsVersionCheckEnabled
NOTIFY
isVersionCheckEnabledChanged
)
Q_PROPERTY
(
int
mavlinkSystemID
READ
mavlinkSystemID
WRITE
setMavlinkSystemID
NOTIFY
mavlinkSystemIDChanged
)
Q_PROPERTY
(
int
mavlinkSystemID
READ
mavlinkSystemID
WRITE
setMavlinkSystemID
NOTIFY
mavlinkSystemIDChanged
)
Q_PROPERTY
(
Fact
*
offlineEditingFirmwareType
READ
offlineEditingFirmwareType
CONSTANT
)
Q_INVOKABLE
void
saveGlobalSetting
(
const
QString
&
key
,
const
QString
&
value
);
Q_INVOKABLE
void
saveGlobalSetting
(
const
QString
&
key
,
const
QString
&
value
);
Q_INVOKABLE
QString
loadGlobalSetting
(
const
QString
&
key
,
const
QString
&
defaultValue
);
Q_INVOKABLE
QString
loadGlobalSetting
(
const
QString
&
key
,
const
QString
&
defaultValue
);
Q_INVOKABLE
void
saveBoolGlobalSetting
(
const
QString
&
key
,
bool
value
);
Q_INVOKABLE
void
saveBoolGlobalSetting
(
const
QString
&
key
,
bool
value
);
Q_INVOKABLE
bool
loadBoolGlobalSetting
(
const
QString
&
key
,
bool
defaultValue
);
Q_INVOKABLE
bool
loadBoolGlobalSetting
(
const
QString
&
key
,
bool
defaultValue
);
Q_INVOKABLE
void
deleteAllSettingsNextBoot
()
{
qgcApp
()
->
deleteAllSettingsNextBoot
();
}
Q_INVOKABLE
void
deleteAllSettingsNextBoot
()
{
_app
->
deleteAllSettingsNextBoot
();
}
Q_INVOKABLE
void
clearDeleteAllSettingsNextBoot
()
{
qgcApp
()
->
clearDeleteAllSettingsNextBoot
();
}
Q_INVOKABLE
void
clearDeleteAllSettingsNextBoot
()
{
_app
->
clearDeleteAllSettingsNextBoot
();
}
Q_INVOKABLE
void
startPX4MockLink
(
bool
sendStatusText
);
Q_INVOKABLE
void
startPX4MockLink
(
bool
sendStatusText
);
Q_INVOKABLE
void
startGenericMockLink
(
bool
sendStatusText
);
Q_INVOKABLE
void
startGenericMockLink
(
bool
sendStatusText
);
...
@@ -98,16 +102,18 @@ public:
...
@@ -98,16 +102,18 @@ public:
qreal
zOrderWidgets
()
{
return
100
;
}
qreal
zOrderWidgets
()
{
return
100
;
}
qreal
zOrderMapItems
()
{
return
50
;
}
qreal
zOrderMapItems
()
{
return
50
;
}
bool
isDarkStyle
()
{
return
qgcApp
()
->
styleIsDark
();
}
bool
isDarkStyle
()
{
return
_app
->
styleIsDark
();
}
bool
isAudioMuted
()
{
return
qgcApp
()
->
toolbox
()
->
audioOutput
()
->
isMuted
();
}
bool
isAudioMuted
()
{
return
_
toolbox
->
audioOutput
()
->
isMuted
();
}
bool
isSaveLogPrompt
()
{
return
qgcApp
()
->
promptFlightDataSave
();
}
bool
isSaveLogPrompt
()
{
return
_app
->
promptFlightDataSave
();
}
bool
isSaveLogPromptNotArmed
()
{
return
qgcApp
()
->
promptFlightDataSaveNotArmed
();
}
bool
isSaveLogPromptNotArmed
()
{
return
_app
->
promptFlightDataSaveNotArmed
();
}
bool
virtualTabletJoystick
()
{
return
_virtualTabletJoystick
;
}
bool
virtualTabletJoystick
()
{
return
_virtualTabletJoystick
;
}
bool
isHeartBeatEnabled
()
{
return
qgcApp
()
->
toolbox
()
->
mavlinkProtocol
()
->
heartbeatsEnabled
();
}
bool
isHeartBeatEnabled
()
{
return
_toolbox
->
mavlinkProtocol
()
->
heartbeatsEnabled
();
}
bool
isMultiplexingEnabled
()
{
return
qgcApp
()
->
toolbox
()
->
mavlinkProtocol
()
->
multiplexingEnabled
();
}
bool
isMultiplexingEnabled
()
{
return
_toolbox
->
mavlinkProtocol
()
->
multiplexingEnabled
();
}
bool
isVersionCheckEnabled
()
{
return
qgcApp
()
->
toolbox
()
->
mavlinkProtocol
()
->
versionCheckEnabled
();
}
bool
isVersionCheckEnabled
()
{
return
_toolbox
->
mavlinkProtocol
()
->
versionCheckEnabled
();
}
int
mavlinkSystemID
()
{
return
qgcApp
()
->
toolbox
()
->
mavlinkProtocol
()
->
getSystemId
();
}
int
mavlinkSystemID
()
{
return
_toolbox
->
mavlinkProtocol
()
->
getSystemId
();
}
Fact
*
offlineEditingFirmwareType
()
{
return
&
_offlineEditingFirmwareTypeFact
;
}
//-- TODO: Make this into an actual preference.
//-- TODO: Make this into an actual preference.
bool
isAdvancedMode
()
{
return
false
;
}
bool
isAdvancedMode
()
{
return
false
;
}
...
@@ -123,6 +129,9 @@ public:
...
@@ -123,6 +129,9 @@ public:
void
setIsVersionCheckEnabled
(
bool
enable
);
void
setIsVersionCheckEnabled
(
bool
enable
);
void
setMavlinkSystemID
(
int
id
);
void
setMavlinkSystemID
(
int
id
);
// Overrides from QGCTool
virtual
void
setToolbox
(
QGCToolbox
*
toolbox
);
signals:
signals:
void
isDarkStyleChanged
(
bool
dark
);
void
isDarkStyleChanged
(
bool
dark
);
void
isAudioMutedChanged
(
bool
muted
);
void
isAudioMutedChanged
(
bool
muted
);
...
@@ -144,6 +153,9 @@ private:
...
@@ -144,6 +153,9 @@ private:
bool
_virtualTabletJoystick
;
bool
_virtualTabletJoystick
;
SettingsFact
_offlineEditingFirmwareTypeFact
;
FactMetaData
_offlineEditingFirmwareTypeMetaData
;
static
const
char
*
_virtualTabletJoystickKey
;
static
const
char
*
_virtualTabletJoystickKey
;
};
};
...
...
src/ui/preferences/GeneralSettings.qml
View file @
8587ff69
...
@@ -28,6 +28,7 @@ import QtQuick.Dialogs 1.1
...
@@ -28,6 +28,7 @@ import QtQuick.Dialogs 1.1
import
QGroundControl
1.0
import
QGroundControl
1.0
import
QGroundControl
.
FactSystem
1.0
import
QGroundControl
.
FactSystem
1.0
import
QGroundControl
.
FactControls
1.0
import
QGroundControl
.
Controls
1.0
import
QGroundControl
.
Controls
1.0
import
QGroundControl
.
ScreenTools
1.0
import
QGroundControl
.
ScreenTools
1.0
import
QGroundControl
.
MultiVehicleManager
1.0
import
QGroundControl
.
MultiVehicleManager
1.0
...
@@ -194,6 +195,9 @@ Rectangle {
...
@@ -194,6 +195,9 @@ Rectangle {
//-- Autoconnect settings
//-- Autoconnect settings
QGCLabel
{
text
:
"
Autoconnect to the following devices:
"
}
QGCLabel
{
text
:
"
Autoconnect to the following devices:
"
}
Row
{
spacing
:
ScreenTools
.
defaultFontPixelWidth
*
2
QGCCheckBox
{
QGCCheckBox
{
text
:
"
Pixhawk
"
text
:
"
Pixhawk
"
visible
:
!
ScreenTools
.
isiOS
visible
:
!
ScreenTools
.
isiOS
...
@@ -220,6 +224,7 @@ Rectangle {
...
@@ -220,6 +224,7 @@ Rectangle {
checked
:
QGroundControl
.
linkManager
.
autoconnectUDP
checked
:
QGroundControl
.
linkManager
.
autoconnectUDP
onClicked
:
QGroundControl
.
linkManager
.
autoconnectUDP
=
checked
onClicked
:
QGroundControl
.
linkManager
.
autoconnectUDP
=
checked
}
}
}
Item
{
Item
{
height
:
ScreenTools
.
defaultFontPixelHeight
/
2
height
:
ScreenTools
.
defaultFontPixelHeight
/
2
...
@@ -233,6 +238,27 @@ Rectangle {
...
@@ -233,6 +238,27 @@ Rectangle {
checked
:
QGroundControl
.
virtualTabletJoystick
checked
:
QGroundControl
.
virtualTabletJoystick
onClicked
:
QGroundControl
.
virtualTabletJoystick
=
checked
onClicked
:
QGroundControl
.
virtualTabletJoystick
=
checked
}
}
Item
{
height
:
ScreenTools
.
defaultFontPixelHeight
/
2
width
:
parent
.
width
}
Row
{
spacing
:
ScreenTools
.
defaultFontPixelWidth
QGCLabel
{
text
:
"
Offline mission editing vehicle type:
"
anchors.baseline
:
offlineTypeCombo
.
baseline
}
FactComboBox
{
id
:
offlineTypeCombo
width
:
ScreenTools
.
defaultFontPixelWidth
*
25
fact
:
QGroundControl
.
offlineEditingFirmwareType
indexModel
:
false
}
}
}
}
}
}
}
}
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment