Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qgroundcontrol
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
01d977cb
Commit
01d977cb
authored
Feb 20, 2017
by
Gus Grubba
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Allow plugins to change/replace toolbar indicators.
parent
549936ec
Changes
12
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
632 additions
and
574 deletions
+632
-574
qgroundcontrol.qrc
qgroundcontrol.qrc
+8
-0
QGCCorePlugin.cc
src/api/QGCCorePlugin.cc
+15
-2
QGCCorePlugin.h
src/api/QGCCorePlugin.h
+19
-20
AppSettings.qml
src/ui/AppSettings.qml
+1
-1
BatteryIndicator.qml
src/ui/toolbar/BatteryIndicator.qml
+129
-0
GPS.qml
src/ui/toolbar/GPS.qml
+0
-34
GPSIndicator.qml
src/ui/toolbar/GPSIndicator.qml
+122
-0
MainToolBarIndicators.qml
src/ui/toolbar/MainToolBarIndicators.qml
+14
-517
MessageIndicator.qml
src/ui/toolbar/MessageIndicator.qml
+69
-0
ModeIndicator.qml
src/ui/toolbar/ModeIndicator.qml
+63
-0
RCRSSIIndicator.qml
src/ui/toolbar/RCRSSIIndicator.qml
+105
-0
TelemetryRSSIIndicator.qml
src/ui/toolbar/TelemetryRSSIIndicator.qml
+87
-0
No files found.
qgroundcontrol.qrc
View file @
01d977cb
...
...
@@ -2,6 +2,14 @@
<qresource prefix="/unittest">
<file alias="FactSystemTest.qml">src/FactSystem/FactSystemTest.qml</file>
</qresource>
<qresource prefix="/toolbar">
<file alias="BatteryIndicator.qml">src/ui/toolbar/BatteryIndicator.qml</file>
<file alias="GPSIndicator.qml">src/ui/toolbar/GPSIndicator.qml</file>
<file alias="MessageIndicator.qml">src/ui/toolbar/MessageIndicator.qml</file>
<file alias="ModeIndicator.qml">src/ui/toolbar/ModeIndicator.qml</file>
<file alias="RCRSSIIndicator.qml">src/ui/toolbar/RCRSSIIndicator.qml</file>
<file alias="TelemetryRSSIIndicator.qml">src/ui/toolbar/TelemetryRSSIIndicator.qml</file>
</qresource>
<qresource prefix="/qml">
<file alias="AirframeComponent.qml">src/AutoPilotPlugins/PX4/AirframeComponent.qml</file>
<file alias="AirframeComponentSummary.qml">src/AutoPilotPlugins/PX4/AirframeComponentSummary.qml</file>
...
...
src/api/QGCCorePlugin.cc
View file @
01d977cb
...
...
@@ -65,6 +65,7 @@ public:
QGCSettings
*
pDebug
;
#endif
QVariantList
settingsList
;
QVariantList
toolBarIndicatorList
;
QGCOptions
*
defaultOptions
;
};
...
...
@@ -126,7 +127,7 @@ QVariantList &QGCCorePlugin::settings()
return
_p
->
settingsList
;
}
int
QGCCorePlugin
::
defaltSettings
()
int
QGCCorePlugin
::
defa
u
ltSettings
()
{
return
0
;
}
...
...
@@ -142,7 +143,19 @@ QGCOptions* QGCCorePlugin::options()
QVariant
QGCCorePlugin
::
overrideSettingsDefault
(
QString
name
,
QVariant
defaultValue
)
{
Q_UNUSED
(
name
);
// No overrides for base plugin
return
defaultValue
;
}
QVariantList
&
QGCCorePlugin
::
toolBarIndicators
()
{
if
(
_p
->
toolBarIndicatorList
.
size
()
==
0
)
{
_p
->
toolBarIndicatorList
.
append
(
QVariant
::
fromValue
(
QUrl
::
fromUserInput
(
"qrc:/toolbar/MessageIndicator.qml"
)));
_p
->
toolBarIndicatorList
.
append
(
QVariant
::
fromValue
(
QUrl
::
fromUserInput
(
"qrc:/toolbar/GPSIndicator.qml"
)));
_p
->
toolBarIndicatorList
.
append
(
QVariant
::
fromValue
(
QUrl
::
fromUserInput
(
"qrc:/toolbar/TelemetryRSSIIndicator.qml"
)));
_p
->
toolBarIndicatorList
.
append
(
QVariant
::
fromValue
(
QUrl
::
fromUserInput
(
"qrc:/toolbar/RCRSSIIndicator.qml"
)));
_p
->
toolBarIndicatorList
.
append
(
QVariant
::
fromValue
(
QUrl
::
fromUserInput
(
"qrc:/toolbar/BatteryIndicator.qml"
)));
_p
->
toolBarIndicatorList
.
append
(
QVariant
::
fromValue
(
QUrl
::
fromUserInput
(
"qrc:/toolbar/ModeIndicator.qml"
)));
}
return
_p
->
toolBarIndicatorList
;
}
src/api/QGCCorePlugin.h
View file @
01d977cb
...
...
@@ -32,36 +32,35 @@ public:
QGCCorePlugin
(
QGCApplication
*
app
);
~
QGCCorePlugin
();
Q_PROPERTY
(
QVariantList
settings
READ
settings
CONSTANT
)
Q_PROPERTY
(
int
defaltSettings
READ
defaltSettings
CONSTANT
)
Q_PROPERTY
(
QGCOptions
*
options
READ
options
CONSTANT
)
Q_PROPERTY
(
QVariantList
settings
READ
settings
CONSTANT
)
Q_PROPERTY
(
int
defaultSettings
READ
defaultSettings
CONSTANT
)
Q_PROPERTY
(
QGCOptions
*
options
READ
options
CONSTANT
)
Q_PROPERTY
(
QVariantList
toolBarIndicators
READ
toolBarIndicators
CONSTANT
)
//! The list of settings under the Settings Menu
/*!
@return A list of QGCSettings
*/
virtual
QVariantList
&
settings
();
/// The list of settings under the Settings Menu
/// @return A list of QGCSettings
virtual
QVariantList
&
settings
();
//! The default settings panel to show
/*!
@return The settings index
*/
virtual
int
defaltSettings
();
/// Allows the core plugin to override the toolbar indicators
/// @return A list of QUrl with the indicators (see MainToolBarIndicators.qml)
virtual
QVariantList
&
toolBarIndicators
();
//! Global options
/*!
@return An instance of QGCOptions
*/
virtual
QGCOptions
*
options
();
/// The default settings panel to show
/// @return The settings index
virtual
int
defaultSettings
();
/// Global options
/// @return An instance of QGCOptions
virtual
QGCOptions
*
options
();
/// Allows the core plugin to override the default value for the specified setting
/// @param name - Setting name
/// @param defaultValue - Standard default value for setting
/// @return New default value for setting, if no override just return passed in defaultValue
virtual
QVariant
overrideSettingsDefault
(
QString
name
,
QVariant
defaultValue
);
virtual
QVariant
overrideSettingsDefault
(
QString
name
,
QVariant
defaultValue
);
// Override from QGCTool
void
setToolbox
(
QGCToolbox
*
toolbox
);
void
setToolbox
(
QGCToolbox
*
toolbox
);
private:
QGCCorePlugin_p
*
_p
;
};
src/ui/AppSettings.qml
View file @
01d977cb
...
...
@@ -36,7 +36,7 @@ Rectangle {
Component.onCompleted
:
{
//-- Default Settings
__rightPanel
.
source
=
QGroundControl
.
corePlugin
.
settings
[
QGroundControl
.
corePlugin
.
defaltSettings
].
url
__rightPanel
.
source
=
QGroundControl
.
corePlugin
.
settings
[
QGroundControl
.
corePlugin
.
defa
u
ltSettings
].
url
}
QGCFlickable
{
...
...
src/ui/toolbar/BatteryIndicator.qml
0 → 100644
View file @
01d977cb
/****************************************************************************
*
* (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.
*
****************************************************************************/
import
QtQuick
2.5
import
QtQuick
.
Controls
1.2
import
QtQuick
.
Layouts
1.2
import
QGroundControl
1.0
import
QGroundControl
.
Controls
1.0
import
QGroundControl
.
MultiVehicleManager
1.0
import
QGroundControl
.
ScreenTools
1.0
import
QGroundControl
.
Palette
1.0
//-------------------------------------------------------------------------
//-- Battery Indicator
Item
{
anchors.top
:
parent
.
top
anchors.bottom
:
parent
.
bottom
width
:
batteryIndicatorRow
.
width
function
getBatteryColor
()
{
if
(
activeVehicle
)
{
if
(
activeVehicle
.
battery
.
percentRemaining
.
value
>
75
)
{
return
qgcPal
.
text
}
if
(
activeVehicle
.
battery
.
percentRemaining
.
value
>
50
)
{
return
colorOrange
}
if
(
activeVehicle
.
battery
.
percentRemaining
.
value
>
0.1
)
{
return
colorRed
}
}
return
colorGrey
}
function
getBatteryPercentageText
()
{
if
(
activeVehicle
)
{
if
(
activeVehicle
.
battery
.
percentRemaining
.
value
>
98.9
)
{
return
"
100%
"
}
if
(
activeVehicle
.
battery
.
percentRemaining
.
value
>
0.1
)
{
return
activeVehicle
.
battery
.
percentRemaining
.
valueString
+
activeVehicle
.
battery
.
percentRemaining
.
units
}
if
(
activeVehicle
.
battery
.
voltage
.
value
>=
0
)
{
return
activeVehicle
.
battery
.
voltage
.
valueString
+
activeVehicle
.
battery
.
voltage
.
units
}
}
return
"
N/A
"
}
Component
{
id
:
batteryInfo
Rectangle
{
width
:
battCol
.
width
+
ScreenTools
.
defaultFontPixelWidth
*
3
height
:
battCol
.
height
+
ScreenTools
.
defaultFontPixelHeight
*
2
radius
:
ScreenTools
.
defaultFontPixelHeight
*
0.5
color
:
qgcPal
.
window
border.color
:
qgcPal
.
text
Column
{
id
:
battCol
spacing
:
ScreenTools
.
defaultFontPixelHeight
*
0.5
width
:
Math
.
max
(
battGrid
.
width
,
battLabel
.
width
)
anchors.margins
:
ScreenTools
.
defaultFontPixelHeight
anchors.centerIn
:
parent
QGCLabel
{
id
:
battLabel
text
:
qsTr
(
"
Battery Status
"
)
font.family
:
ScreenTools
.
demiboldFontFamily
anchors.horizontalCenter
:
parent
.
horizontalCenter
}
GridLayout
{
id
:
battGrid
anchors.margins
:
ScreenTools
.
defaultFontPixelHeight
columnSpacing
:
ScreenTools
.
defaultFontPixelWidth
columns
:
2
anchors.horizontalCenter
:
parent
.
horizontalCenter
QGCLabel
{
text
:
qsTr
(
"
Voltage:
"
)
}
QGCLabel
{
text
:
(
activeVehicle
&&
activeVehicle
.
battery
.
voltage
.
value
!=
-
1
)
?
(
activeVehicle
.
battery
.
voltage
.
valueString
+
"
"
+
activeVehicle
.
battery
.
voltage
.
units
)
:
"
N/A
"
}
QGCLabel
{
text
:
qsTr
(
"
Accumulated Consumption:
"
)
}
QGCLabel
{
text
:
(
activeVehicle
&&
activeVehicle
.
battery
.
mahConsumed
.
value
!=
-
1
)
?
(
activeVehicle
.
battery
.
mahConsumed
.
valueString
+
"
"
+
activeVehicle
.
battery
.
mahConsumed
.
units
)
:
"
N/A
"
}
}
}
Component.onCompleted
:
{
var
pos
=
mapFromItem
(
toolBar
,
centerX
-
(
width
/
2
),
toolBar
.
height
)
x
=
pos
.
x
y
=
pos
.
y
+
ScreenTools
.
defaultFontPixelHeight
}
}
}
Row
{
id
:
batteryIndicatorRow
anchors.top
:
parent
.
top
anchors.bottom
:
parent
.
bottom
opacity
:
(
activeVehicle
&&
activeVehicle
.
battery
.
voltage
.
value
>=
0
)
?
1
:
0.5
QGCColoredImage
{
anchors.top
:
parent
.
top
anchors.bottom
:
parent
.
bottom
width
:
height
sourceSize.width
:
width
source
:
"
/qmlimages/Battery.svg
"
fillMode
:
Image
.
PreserveAspectFit
color
:
qgcPal
.
text
}
QGCLabel
{
text
:
getBatteryPercentageText
()
font.pointSize
:
ScreenTools
.
mediumFontPointSize
color
:
getBatteryColor
()
anchors.verticalCenter
:
parent
.
verticalCenter
}
}
MouseArea
{
anchors.fill
:
parent
onClicked
:
mainWindow
.
showPopUp
(
batteryInfo
,
mapToItem
(
toolBar
,
x
,
y
).
x
+
(
width
/
2
))
}
}
src/ui/toolbar/GPS.qml
deleted
100644 → 0
View file @
549936ec
/****************************************************************************
*
* (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.
*
****************************************************************************/
/**
* @file
* @brief QGC Main Tool GPS
* @author Gus Grubba <mavlink@grubba.com>
*/
import
QtQuick
2.4
import
QGroundControl
.
Controls
1.0
Item
{
id
:
gpsRoot
property
real
size
:
50
property
real
percent
:
0
width
:
size
height
:
size
Image
{
source
:
"
/qmlimages/Gps.svg
"
fillMode
:
Image
.
PreserveAspectFit
mipmap
:
true
smooth
:
true
anchors.fill
:
parent
opacity
:
(
percent
+
25
)
*
0.8
}
}
src/ui/toolbar/GPSIndicator.qml
0 → 100644
View file @
01d977cb
/****************************************************************************
*
* (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.
*
****************************************************************************/
import
QtQuick
2.5
import
QtQuick
.
Controls
1.2
import
QtQuick
.
Layouts
1.2
import
QGroundControl
1.0
import
QGroundControl
.
Controls
1.0
import
QGroundControl
.
MultiVehicleManager
1.0
import
QGroundControl
.
ScreenTools
1.0
import
QGroundControl
.
Palette
1.0
//-------------------------------------------------------------------------
//-- GPS Indicator
Item
{
id
:
satelitte
width
:
(
gpsValuesColumn
.
x
+
gpsValuesColumn
.
width
)
*
1.1
anchors.top
:
parent
.
top
anchors.bottom
:
parent
.
bottom
Component
{
id
:
gpsInfo
Rectangle
{
width
:
gpsCol
.
width
+
ScreenTools
.
defaultFontPixelWidth
*
3
height
:
gpsCol
.
height
+
ScreenTools
.
defaultFontPixelHeight
*
2
radius
:
ScreenTools
.
defaultFontPixelHeight
*
0.5
color
:
qgcPal
.
window
border.color
:
qgcPal
.
text
Column
{
id
:
gpsCol
spacing
:
ScreenTools
.
defaultFontPixelHeight
*
0.5
width
:
Math
.
max
(
gpsGrid
.
width
,
gpsLabel
.
width
)
anchors.margins
:
ScreenTools
.
defaultFontPixelHeight
anchors.centerIn
:
parent
QGCLabel
{
id
:
gpsLabel
text
:
(
activeVehicle
&&
activeVehicle
.
gps
.
count
.
value
>=
0
)
?
qsTr
(
"
GPS Status
"
)
:
qsTr
(
"
GPS Data Unavailable
"
)
font.family
:
ScreenTools
.
demiboldFontFamily
anchors.horizontalCenter
:
parent
.
horizontalCenter
}
GridLayout
{
id
:
gpsGrid
visible
:
(
activeVehicle
&&
activeVehicle
.
gps
.
count
.
value
>=
0
)
anchors.margins
:
ScreenTools
.
defaultFontPixelHeight
columnSpacing
:
ScreenTools
.
defaultFontPixelWidth
anchors.horizontalCenter
:
parent
.
horizontalCenter
columns
:
2
QGCLabel
{
text
:
qsTr
(
"
GPS Count:
"
)
}
QGCLabel
{
text
:
activeVehicle
?
activeVehicle
.
gps
.
count
.
valueString
:
qsTr
(
"
N/A
"
,
"
No data to display
"
)
}
QGCLabel
{
text
:
qsTr
(
"
GPS Lock:
"
)
}
QGCLabel
{
text
:
activeVehicle
?
activeVehicle
.
gps
.
lock
.
enumStringValue
:
qsTr
(
"
N/A
"
,
"
No data to display
"
)
}
QGCLabel
{
text
:
qsTr
(
"
HDOP:
"
)
}
QGCLabel
{
text
:
activeVehicle
?
activeVehicle
.
gps
.
hdop
.
valueString
:
qsTr
(
"
--.--
"
,
"
No data to display
"
)
}
QGCLabel
{
text
:
qsTr
(
"
VDOP:
"
)
}
QGCLabel
{
text
:
activeVehicle
?
activeVehicle
.
gps
.
vdop
.
valueString
:
qsTr
(
"
--.--
"
,
"
No data to display
"
)
}
QGCLabel
{
text
:
qsTr
(
"
Course Over Ground:
"
)
}
QGCLabel
{
text
:
activeVehicle
?
activeVehicle
.
gps
.
courseOverGround
.
valueString
:
qsTr
(
"
--.--
"
,
"
No data to display
"
)
}
}
}
Component.onCompleted
:
{
var
pos
=
mapFromItem
(
toolBar
,
centerX
-
(
width
/
2
),
toolBar
.
height
)
x
=
pos
.
x
y
=
pos
.
y
+
ScreenTools
.
defaultFontPixelHeight
}
}
}
QGCColoredImage
{
id
:
gpsIcon
width
:
height
anchors.top
:
parent
.
top
anchors.bottom
:
parent
.
bottom
source
:
"
/qmlimages/Gps.svg
"
fillMode
:
Image
.
PreserveAspectFit
sourceSize.height
:
height
opacity
:
(
activeVehicle
&&
activeVehicle
.
gps
.
count
.
value
>=
0
)
?
1
:
0.5
color
:
qgcPal
.
buttonText
}
Column
{
id
:
gpsValuesColumn
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.leftMargin
:
ScreenTools
.
defaultFontPixelWidth
/
2
anchors.left
:
gpsIcon
.
right
QGCLabel
{
anchors.horizontalCenter
:
hdopValue
.
horizontalCenter
visible
:
activeVehicle
&&
!
isNaN
(
activeVehicle
.
gps
.
hdop
.
value
)
color
:
qgcPal
.
buttonText
text
:
activeVehicle
?
activeVehicle
.
gps
.
count
.
valueString
:
""
}
QGCLabel
{
id
:
hdopValue
visible
:
activeVehicle
&&
!
isNaN
(
activeVehicle
.
gps
.
hdop
.
value
)
color
:
qgcPal
.
buttonText
text
:
activeVehicle
?
activeVehicle
.
gps
.
hdop
.
value
.
toFixed
(
1
)
:
""
}
}
MouseArea
{
anchors.fill
:
parent
onClicked
:
{
var
centerX
=
mapToItem
(
toolBar
,
x
,
y
).
x
+
(
width
/
2
)
mainWindow
.
showPopUp
(
gpsInfo
,
centerX
)
}
}
}
src/ui/toolbar/MainToolBarIndicators.qml
View file @
01d977cb
This diff is collapsed.
Click to expand it.
src/ui/toolbar/MessageIndicator.qml
0 → 100644
View file @
01d977cb
/****************************************************************************
*
* (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.
*
****************************************************************************/
import
QtQuick
2.5
import
QtQuick
.
Controls
1.2
import
QtQuick
.
Layouts
1.2
import
QGroundControl
1.0
import
QGroundControl
.
Controls
1.0
import
QGroundControl
.
MultiVehicleManager
1.0
import
QGroundControl
.
ScreenTools
1.0
import
QGroundControl
.
Palette
1.0
//-------------------------------------------------------------------------
//-- GPS Indicator
Item
{
width
:
height
anchors.top
:
parent
.
top
anchors.bottom
:
parent
.
bottom
function
getMessageColor
()
{
if
(
activeVehicle
)
{
if
(
activeVehicle
.
messageTypeNone
)
return
colorGrey
if
(
activeVehicle
.
messageTypeNormal
)
return
colorBlue
;
if
(
activeVehicle
.
messageTypeWarning
)
return
colorOrange
;
if
(
activeVehicle
.
messageTypeError
)
return
colorRed
;
// Cannot be so make make it obnoxious to show error
console
.
log
(
"
Invalid vehicle message type
"
)
return
"
purple
"
;
}
//-- It can only get here when closing (vehicle gone while window active)
return
"
white
"
;
}
Image
{
id
:
criticalMessageIcon
anchors.fill
:
parent
source
:
"
/qmlimages/Yield.svg
"
sourceSize.height
:
height
fillMode
:
Image
.
PreserveAspectFit
cache
:
false
visible
:
activeVehicle
&&
activeVehicle
.
messageCount
>
0
&&
isMessageImportant
}
QGCColoredImage
{
anchors.fill
:
parent
source
:
"
/qmlimages/Megaphone.svg
"
sourceSize.height
:
height
fillMode
:
Image
.
PreserveAspectFit
color
:
getMessageColor
()
visible
:
!
criticalMessageIcon
.
visible
}
MouseArea
{
anchors.fill
:
parent
onClicked
:
mainWindow
.
showMessageArea
()
}
}
src/ui/toolbar/ModeIndicator.qml
0 → 100644
View file @
01d977cb
/****************************************************************************
*
* (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.
*
****************************************************************************/
import
QtQuick
2.5
import
QtQuick
.
Controls
1.2
import
QGroundControl
1.0
import
QGroundControl
.
Controls
1.0
import
QGroundControl
.
MultiVehicleManager
1.0
import
QGroundControl
.
ScreenTools
1.0
import
QGroundControl
.
Palette
1.0
//-------------------------------------------------------------------------
//-- Mode Indicator
QGCLabel
{
id
:
flightModeSelector
text
:
activeVehicle
?
activeVehicle
.
flightMode
:
qsTr
(
"
N/A
"
,
"
No data to display
"
)
font.pointSize
:
ScreenTools
.
mediumFontPointSize
color
:
qgcPal
.
buttonText
anchors.verticalCenter
:
parent
.
verticalCenter
Menu
{
id
:
flightModesMenu
}
Component
{
id
:
flightModeMenuItemComponent
MenuItem
{
onTriggered
:
activeVehicle
.
flightMode
=
text
}
}
property
var
flightModesMenuItems
:
[]
function
updateFlightModesMenu
()
{
if
(
activeVehicle
&&
activeVehicle
.
flightModeSetAvailable
)
{
// Remove old menu items
for
(
var
i
=
0
;
i
<
flightModesMenuItems
.
length
;
i
++
)
{
flightModesMenu
.
removeItem
(
flightModesMenuItems
[
i
])
}
flightModesMenuItems
.
length
=
0
// Add new items
for
(
var
i
=
0
;
i
<
activeVehicle
.
flightModes
.
length
;
i
++
)
{
var
menuItem
=
flightModeMenuItemComponent
.
createObject
(
null
,
{
"
text
"
:
activeVehicle
.
flightModes
[
i
]
})
flightModesMenuItems
.
push
(
menuItem
)
flightModesMenu
.
insertItem
(
i
,
menuItem
)
}
}
}
Component.onCompleted
:
flightModeSelector
.
updateFlightModesMenu
()
Connections
{
target
:
QGroundControl
.
multiVehicleManager
onActiveVehicleChanged
:
flightModeSelector
.
updateFlightModesMenu
()
}
MouseArea
{
visible
:
activeVehicle
&&
activeVehicle
.
flightModeSetAvailable
anchors.fill
:
parent
onClicked
:
flightModesMenu
.
popup
()
}
}
src/ui/toolbar/RCRSSIIndicator.qml
0 → 100644
View file @
01d977cb
/****************************************************************************
*
* (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.
*
****************************************************************************/
import
QtQuick
2.5
import
QtQuick
.
Controls
1.2
import
QtQuick
.
Layouts
1.2
import
QGroundControl
1.0
import
QGroundControl
.
Controls
1.0
import
QGroundControl
.
MultiVehicleManager
1.0
import
QGroundControl
.
ScreenTools
1.0
import
QGroundControl
.
Palette
1.0
//-------------------------------------------------------------------------
//-- GPS Indicator
Item
{
width
:
rssiRow
.
width
*
1.1
anchors.top
:
parent
.
top
anchors.bottom
:
parent
.
bottom
visible
:
activeVehicle
?
activeVehicle
.
supportsRadio
:
true
Component
{
id
:
rcRSSIInfo
Rectangle
{
width
:
rcrssiCol
.
width
+
ScreenTools
.
defaultFontPixelWidth
*
3
height
:
rcrssiCol
.
height
+
ScreenTools
.
defaultFontPixelHeight
*
2
radius
:
ScreenTools
.
defaultFontPixelHeight
*
0.5
color
:
qgcPal
.
window
border.color
:
qgcPal
.
text
Column
{
id
:
rcrssiCol
spacing
:
ScreenTools
.
defaultFontPixelHeight
*
0.5
width
:
Math
.
max
(
rcrssiGrid
.
width
,
rssiLabel
.
width
)
anchors.margins
:
ScreenTools
.
defaultFontPixelHeight
anchors.centerIn
:
parent
QGCLabel
{
id
:
rssiLabel
text
:
activeVehicle
?
(
activeVehicle
.
rcRSSI
!=
255
?
qsTr
(
"
RC RSSI Status
"
)
:
qsTr
(
"
RC RSSI Data Unavailable
"
))
:
qsTr
(
"
N/A
"
,
"
No data available
"
)
font.family
:
ScreenTools
.
demiboldFontFamily
anchors.horizontalCenter
:
parent
.
horizontalCenter
}
GridLayout
{
id
:
rcrssiGrid
visible
:
activeVehicle
&&
activeVehicle
.
rcRSSI
!=
255
anchors.margins
:
ScreenTools
.
defaultFontPixelHeight
columnSpacing
:
ScreenTools
.
defaultFontPixelWidth
columns
:
2
anchors.horizontalCenter
:
parent
.
horizontalCenter
QGCLabel
{
text
:
qsTr
(
"
RSSI:
"
)
}
QGCLabel
{
text
:
activeVehicle
?
(
activeVehicle
.
rcRSSI
+
"
%
"
)
:
0
}
}
}
Component.onCompleted
:
{
var
pos
=
mapFromItem
(
toolBar
,
centerX
-
(
width
/
2
),
toolBar
.
height
)
x
=
pos
.
x
y
=
pos
.
y
+
ScreenTools
.
defaultFontPixelHeight
}
}
}
Row
{
id
:
rssiRow
anchors.top
:
parent
.
top
anchors.bottom
:
parent
.
bottom
spacing
:
ScreenTools
.
defaultFontPixelWidth
QGCColoredImage
{
width
:
height
anchors.top
:
parent
.
top
anchors.bottom
:
parent
.
bottom
sourceSize.height
:
height
source
:
"
/qmlimages/RC.svg
"
fillMode
:
Image
.
PreserveAspectFit
opacity
:
activeVehicle
?
(((
activeVehicle
.
rcRSSI
<
0
)
||
(
activeVehicle
.
rcRSSI
>
100
))
?
0.5
:
1
)
:
0.5
color
:
qgcPal
.
buttonText
}
SignalStrength
{
anchors.verticalCenter
:
parent
.
verticalCenter
size
:
parent
.
height
*
0.5
percent
:
activeVehicle
?
((
activeVehicle
.
rcRSSI
>
100
)
?
0
:
activeVehicle
.
rcRSSI
)
:
0
}
}
MouseArea
{
anchors.fill
:
parent
onClicked
:
{
var
centerX
=
mapToItem
(
toolBar
,
x
,
y
).
x
+
(
width
/
2
)
mainWindow
.
showPopUp
(
rcRSSIInfo
,
centerX
)
}
}
}
src/ui/toolbar/TelemetryRSSIIndicator.qml
0 → 100644
View file @
01d977cb
/****************************************************************************
*
* (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.
*
****************************************************************************/
import
QtQuick
2.5
import
QtQuick
.
Controls
1.2
import
QtQuick
.
Layouts
1.2
import
QGroundControl
1.0
import
QGroundControl
.
Controls
1.0
import
QGroundControl
.
MultiVehicleManager
1.0
import
QGroundControl
.
ScreenTools
1.0
import
QGroundControl
.
Palette
1.0
//-------------------------------------------------------------------------
//-- Telemetry RSSI
QGCColoredImage
{
anchors.top
:
parent
.
top
anchors.bottom
:
parent
.
bottom
sourceSize.height
:
height
source
:
"
/qmlimages/TelemRSSI.svg
"
fillMode
:
Image
.
PreserveAspectFit
color
:
qgcPal
.
buttonText
visible
:
activeVehicle
?
(
activeVehicle
.
telemetryLRSSI
<
0
)
:
false
Component
{
id
:
telemRSSIInfo
Rectangle
{
width
:
telemCol
.
width
+
ScreenTools
.
defaultFontPixelWidth
*
3
height
:
telemCol
.
height
+
ScreenTools
.
defaultFontPixelHeight
*
2
radius
:
ScreenTools
.
defaultFontPixelHeight
*
0.5
color
:
qgcPal
.
window
border.color
:
qgcPal
.
text
Column
{
id
:
telemCol
spacing
:
ScreenTools
.
defaultFontPixelHeight
*
0.5
width
:
Math
.
max
(
telemGrid
.
width
,
telemLabel
.
width
)
anchors.margins
:
ScreenTools
.
defaultFontPixelHeight
anchors.centerIn
:
parent
QGCLabel
{
id
:
telemLabel
text
:
qsTr
(
"
Telemetry RSSI Status
"
)
font.family
:
ScreenTools
.
demiboldFontFamily
anchors.horizontalCenter
:
parent
.
horizontalCenter
}
GridLayout
{
id
:
telemGrid
anchors.margins
:
ScreenTools
.
defaultFontPixelHeight
columnSpacing
:
ScreenTools
.
defaultFontPixelWidth
columns
:
2
anchors.horizontalCenter
:
parent
.
horizontalCenter
QGCLabel
{
text
:
qsTr
(
"
Local RSSI:
"
)
}
QGCLabel
{
text
:
activeVehicle
.
telemetryLRSSI
+
"
dBm
"
}
QGCLabel
{
text
:
qsTr
(
"
Remote RSSI:
"
)
}
QGCLabel
{
text
:
activeVehicle
.
telemetryRRSSI
+
"
dBm
"
}
QGCLabel
{
text
:
qsTr
(
"
RX Errors:
"
)
}
QGCLabel
{
text
:
activeVehicle
.
telemetryRXErrors
}
QGCLabel
{
text
:
qsTr
(
"
Errors Fixed:
"
)
}
QGCLabel
{
text
:
activeVehicle
.
telemetryFixed
}
QGCLabel
{
text
:
qsTr
(
"
TX Buffer:
"
)
}
QGCLabel
{
text
:
activeVehicle
.
telemetryTXBuffer
}
QGCLabel
{
text
:
qsTr
(
"
Local Noise:
"
)
}
QGCLabel
{
text
:
activeVehicle
.
telemetryLNoise
}
QGCLabel
{
text
:
qsTr
(
"
Remote Noise:
"
)
}
QGCLabel
{
text
:
activeVehicle
.
telemetryRNoise
}
}
}
Component.onCompleted
:
{
var
pos
=
mapFromItem
(
toolBar
,
centerX
-
(
width
/
2
),
toolBar
.
height
)
x
=
pos
.
x
y
=
pos
.
y
+
ScreenTools
.
defaultFontPixelHeight
}
}
}
MouseArea
{
anchors.fill
:
parent
onClicked
:
{
var
centerX
=
mapToItem
(
toolBar
,
x
,
y
).
x
+
(
width
/
2
)
mainWindow
.
showPopUp
(
telemRSSIInfo
,
centerX
)
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a 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