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
e3d7e129
Commit
e3d7e129
authored
Mar 04, 2015
by
dogmaphobic
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Chevron buttons in Main Tool Bar
parent
f743d7d6
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
367 additions
and
269 deletions
+367
-269
qgroundcontrol.qrc
qgroundcontrol.qrc
+2
-11
QGCToolBarButton.qml
src/QmlControls/QGCToolBarButton.qml
+58
-0
qmldir
src/QmlControls/qmldir
+1
-0
MainWindow.cc
src/ui/MainWindow.cc
+18
-0
MainWindow.h
src/ui/MainWindow.h
+2
-0
MainToolBar.cc
src/ui/toolbar/MainToolBar.cc
+5
-0
MainToolBar.h
src/ui/toolbar/MainToolBar.h
+4
-0
MainToolBar.qml
src/ui/toolbar/MainToolBar.qml
+277
-258
No files found.
qgroundcontrol.qrc
View file @
e3d7e129
...
@@ -247,13 +247,11 @@
...
@@ -247,13 +247,11 @@
<qresource prefix="/qml">
<qresource prefix="/qml">
<file alias="test.qml">src/test.qml</file>
<file alias="test.qml">src/test.qml</file>
<file alias="QmlTest.qml">src/QmlControls/QmlTest.qml</file>
<file alias="QmlTest.qml">src/QmlControls/QmlTest.qml</file>
<file alias="QGroundControl/FactControls/qmldir">src/FactSystem/FactControls/qmldir</file>
<file alias="QGroundControl/FactControls/qmldir">src/FactSystem/FactControls/qmldir</file>
<file alias="QGroundControl/FactControls/FactLabel.qml">src/FactSystem/FactControls/FactLabel.qml</file>
<file alias="QGroundControl/FactControls/FactLabel.qml">src/FactSystem/FactControls/FactLabel.qml</file>
<file alias="QGroundControl/FactControls/FactTextField.qml">src/FactSystem/FactControls/FactTextField.qml</file>
<file alias="QGroundControl/FactControls/FactTextField.qml">src/FactSystem/FactControls/FactTextField.qml</file>
<file alias="QGroundControl/FactControls/FactCheckBox.qml">src/FactSystem/FactControls/FactCheckBox.qml</file>
<file alias="QGroundControl/FactControls/FactCheckBox.qml">src/FactSystem/FactControls/FactCheckBox.qml</file>
<file alias="QGroundControl/FactControls/FactComboBox.qml">src/FactSystem/FactControls/FactComboBox.qml</file>
<file alias="QGroundControl/FactControls/FactComboBox.qml">src/FactSystem/FactControls/FactComboBox.qml</file>
<file alias="QGroundControl/Controls/qmldir">src/QmlControls/qmldir</file>
<file alias="QGroundControl/Controls/qmldir">src/QmlControls/qmldir</file>
<file alias="QGroundControl/Controls/SubMenuButton.qml">src/QmlControls/SubMenuButton.qml</file>
<file alias="QGroundControl/Controls/SubMenuButton.qml">src/QmlControls/SubMenuButton.qml</file>
<file alias="QGroundControl/Controls/IndicatorButton.qml">src/QmlControls/IndicatorButton.qml</file>
<file alias="QGroundControl/Controls/IndicatorButton.qml">src/QmlControls/IndicatorButton.qml</file>
...
@@ -265,26 +263,21 @@
...
@@ -265,26 +263,21 @@
<file alias="QGroundControl/Controls/QGCTextField.qml">src/QmlControls/QGCTextField.qml</file>
<file alias="QGroundControl/Controls/QGCTextField.qml">src/QmlControls/QGCTextField.qml</file>
<file alias="QGroundControl/Controls/QGCComboBox.qml">src/QmlControls/QGCComboBox.qml</file>
<file alias="QGroundControl/Controls/QGCComboBox.qml">src/QmlControls/QGCComboBox.qml</file>
<file alias="QGroundControl/Controls/QGCColoredImage.qml">src/QmlControls/QGCColoredImage.qml</file>
<file alias="QGroundControl/Controls/QGCColoredImage.qml">src/QmlControls/QGCColoredImage.qml</file>
<file alias="QGroundControl/Controls/arrow-down.png">src/QmlControls/arrow-down.png</file>
<file alias="QGroundControl/Controls/arrow-down.png">src/QmlControls/arrow-down.png</file>
<file alias="QGroundControl/Controls/QGCToolBarButton.qml">src/QmlControls/QGCToolBarButton.qml</file>
<file alias="octo_x.png">files/images/px4/airframes/octo_x.png</file>
<file alias="octo_x.png">files/images/px4/airframes/octo_x.png</file>
<file alias="px4fmu_2.x.png">files/images/px4/boards/px4fmu_2.x.png</file>
<file alias="px4fmu_2.x.png">files/images/px4/boards/px4fmu_2.x.png</file>
<file alias="SetupViewButtons.qml">src/VehicleSetup/SetupViewButtons.qml</file>
<file alias="SetupViewButtons.qml">src/VehicleSetup/SetupViewButtons.qml</file>
<file alias="VehicleSummary.qml">src/VehicleSetup/VehicleSummary.qml</file>
<file alias="VehicleSummary.qml">src/VehicleSetup/VehicleSummary.qml</file>
<file alias="FirmwareUpgrade.qml">src/VehicleSetup/FirmwareUpgrade.qml</file>
<file alias="FirmwareUpgrade.qml">src/VehicleSetup/FirmwareUpgrade.qml</file>
<file alias="SafetyComponent.qml">src/AutoPilotPlugins/PX4/SafetyComponent.qml</file>
<file alias="SafetyComponent.qml">src/AutoPilotPlugins/PX4/SafetyComponent.qml</file>
<file alias="SensorsComponent.qml">src/AutoPilotPlugins/PX4/SensorsComponent.qml</file>
<file alias="SensorsComponent.qml">src/AutoPilotPlugins/PX4/SensorsComponent.qml</file>
<file alias="SafetyComponentSummary.qml">src/AutoPilotPlugins/PX4/SafetyComponentSummary.qml</file>
<file alias="SafetyComponentSummary.qml">src/AutoPilotPlugins/PX4/SafetyComponentSummary.qml</file>
<file alias="SensorsComponentSummary.qml">src/AutoPilotPlugins/PX4/SensorsComponentSummary.qml</file>
<file alias="SensorsComponentSummary.qml">src/AutoPilotPlugins/PX4/SensorsComponentSummary.qml</file>
<file alias="SensorsComponentSummaryFixedWing.qml">src/AutoPilotPlugins/PX4/SensorsComponentSummaryFixedWing.qml</file>
<file alias="SensorsComponentSummaryFixedWing.qml">src/AutoPilotPlugins/PX4/SensorsComponentSummaryFixedWing.qml</file>
<file alias="RadioComponentSummary.qml">src/AutoPilotPlugins/PX4/RadioComponentSummary.qml</file>
<file alias="RadioComponentSummary.qml">src/AutoPilotPlugins/PX4/RadioComponentSummary.qml</file>
<file alias="FlightModesComponentSummary.qml">src/AutoPilotPlugins/PX4/FlightModesComponentSummary.qml</file>
<file alias="FlightModesComponentSummary.qml">src/AutoPilotPlugins/PX4/FlightModesComponentSummary.qml</file>
<file alias="AirframeComponentSummary.qml">src/AutoPilotPlugins/PX4/AirframeComponentSummary.qml</file>
<file alias="AirframeComponentSummary.qml">src/AutoPilotPlugins/PX4/AirframeComponentSummary.qml</file>
<file alias="SafetyComponentTree.png">src/AutoPilotPlugins/PX4/Images/SafetyComponentTree.png</file>
<file alias="SafetyComponentTree.png">src/AutoPilotPlugins/PX4/Images/SafetyComponentTree.png</file>
<file alias="SafetyComponentHome.png">src/AutoPilotPlugins/PX4/Images/SafetyComponentHome.png</file>
<file alias="SafetyComponentHome.png">src/AutoPilotPlugins/PX4/Images/SafetyComponentHome.png</file>
<file alias="SafetyComponentArrowDown.png">src/AutoPilotPlugins/PX4/Images/SafetyComponentArrowDown.png</file>
<file alias="SafetyComponentArrowDown.png">src/AutoPilotPlugins/PX4/Images/SafetyComponentArrowDown.png</file>
...
@@ -295,7 +288,6 @@
...
@@ -295,7 +288,6 @@
<file alias="VehicleRight.png">src/AutoPilotPlugins/PX4/Images/VehicleRight.png</file>
<file alias="VehicleRight.png">src/AutoPilotPlugins/PX4/Images/VehicleRight.png</file>
<file alias="VehicleNoseDown.png">src/AutoPilotPlugins/PX4/Images/VehicleNoseDown.png</file>
<file alias="VehicleNoseDown.png">src/AutoPilotPlugins/PX4/Images/VehicleNoseDown.png</file>
<file alias="VehicleTailDown.png">src/AutoPilotPlugins/PX4/Images/VehicleTailDown.png</file>
<file alias="VehicleTailDown.png">src/AutoPilotPlugins/PX4/Images/VehicleTailDown.png</file>
<file alias="QGroundControl/Controls/subMenuButtonImage.png">files/Setup/cogwheels.png</file>
<file alias="QGroundControl/Controls/subMenuButtonImage.png">files/Setup/cogwheels.png</file>
<file alias="QGroundControl/Controls/SensorsComponentIcon.png">src/AutoPilotPlugins/PX4/Images/SensorsComponentIcon.png</file>
<file alias="QGroundControl/Controls/SensorsComponentIcon.png">src/AutoPilotPlugins/PX4/Images/SensorsComponentIcon.png</file>
<file alias="QGroundControl/Controls/RadioComponentIcon.png">src/AutoPilotPlugins/PX4/Images/RadioComponentIcon.png</file>
<file alias="QGroundControl/Controls/RadioComponentIcon.png">src/AutoPilotPlugins/PX4/Images/RadioComponentIcon.png</file>
...
@@ -304,8 +296,7 @@
...
@@ -304,8 +296,7 @@
<file alias="QGroundControl/Controls/SafetyComponentIcon.png">src/AutoPilotPlugins/PX4/Images/SafetyComponentIcon.png</file>
<file alias="QGroundControl/Controls/SafetyComponentIcon.png">src/AutoPilotPlugins/PX4/Images/SafetyComponentIcon.png</file>
<file alias="QGroundControl/Controls/FirmwareUpgradeIcon.png">src/VehicleSetup/FirmwareUpgradeIcon.png</file>
<file alias="QGroundControl/Controls/FirmwareUpgradeIcon.png">src/VehicleSetup/FirmwareUpgradeIcon.png</file>
<file alias="QGroundControl/Controls/VehicleSummaryIcon.png">src/VehicleSetup/VehicleSummaryIcon.png</file>
<file alias="QGroundControl/Controls/VehicleSummaryIcon.png">src/VehicleSetup/VehicleSummaryIcon.png</file>
<file alias="MainToolBar.qml">src/ui/toolbar/MainToolBar.qml</file>
<file alias="MainToolBar.qml">src/ui/toolbar/MainToolBar.qml</file>
</qresource>
</qresource>
<qresource prefix="/AutoPilotPlugins/PX4">
<qresource prefix="/AutoPilotPlugins/PX4">
<file alias="ParameterFactMetaData.xml">src/AutoPilotPlugins/PX4/ParameterFactMetaData.xml</file>
<file alias="ParameterFactMetaData.xml">src/AutoPilotPlugins/PX4/ParameterFactMetaData.xml</file>
...
...
src/QmlControls/QGCToolBarButton.qml
0 → 100644
View file @
e3d7e129
import
QtQuick
2.2
import
QtQuick
.
Controls
1.2
import
QtQuick
.
Controls
.
Styles
1.2
import
QtQuick
.
Controls
.
Private
1.0
import
QGroundControl
.
Palette
1.0
Button
{
id
:
button
property
bool
repaintChevron
:
false
property
var
__qgcPal
:
QGCPalette
{
colorGroupEnabled
:
enabled
}
style
:
ButtonStyle
{
background
:
Item
{
anchors.margins
:
3
Canvas
{
id
:
chevron
anchors.fill
:
parent
antialiasing
:
true
Connections
{
target
:
button
onHoveredChanged
:
chevron
.
requestPaint
()
onPressedChanged
:
chevron
.
requestPaint
()
onCheckedChanged
:
chevron
.
requestPaint
()
onRepaintChevronChanged
:
{
if
(
repaintChevron
)
{
chevron
.
requestPaint
()
repaintChevron
=
false
;
}
}
}
onPaint
:
{
var
vMiddle
=
height
/
2
;
var
context
=
getContext
(
"
2d
"
);
context
.
reset
();
context
.
beginPath
();
context
.
lineWidth
=
6
;
context
.
beginPath
();
context
.
moveTo
(
0
,
0
);
context
.
lineTo
(
width
-
12
-
3
,
0
);
context
.
lineTo
(
width
-
3
,
vMiddle
);
context
.
lineTo
(
width
-
12
-
3
,
height
);
context
.
lineTo
(
0
,
height
);
context
.
closePath
();
context
.
strokeStyle
=
__qgcPal
.
windowShade
context
.
fillStyle
=
(
button
.
hovered
&&
!
button
.
pressed
)
?
__qgcPal
.
buttonHighlight
:
(
button
.
checked
?
__qgcPal
.
buttonHighlight
:
__qgcPal
.
button
);
context
.
stroke
();
context
.
fill
();
}
}
}
label
:
Label
{
text
:
button
.
text
horizontalAlignment
:
Text
.
AlignHCenter
verticalAlignment
:
Text
.
AlignVCenter
color
:
(
button
.
hovered
&&
!
button
.
pressed
)
?
__qgcPal
.
buttonHighlightText
:
(
button
.
checked
?
__qgcPal
.
primaryButtonText
:
__qgcPal
.
buttonText
)
}
}
}
src/QmlControls/qmldir
View file @
e3d7e129
...
@@ -7,6 +7,7 @@ QGCCheckBox 1.0 QGCCheckBox.qml
...
@@ -7,6 +7,7 @@ QGCCheckBox 1.0 QGCCheckBox.qml
QGCTextField 1.0 QGCTextField.qml
QGCTextField 1.0 QGCTextField.qml
QGCComboBox 1.0 QGCComboBox.qml
QGCComboBox 1.0 QGCComboBox.qml
QGCColoredImage 1.0 QGCColoredImage.qml
QGCColoredImage 1.0 QGCColoredImage.qml
QGCToolBarButton 1.0 QGCToolBarButton.qml
SubMenuButton 1.0 SubMenuButton.qml
SubMenuButton 1.0 SubMenuButton.qml
IndicatorButton 1.0 IndicatorButton.qml
IndicatorButton 1.0 IndicatorButton.qml
...
...
src/ui/MainWindow.cc
View file @
e3d7e129
...
@@ -1373,3 +1373,21 @@ void MainWindow::_showQmlTestWidget(void)
...
@@ -1373,3 +1373,21 @@ void MainWindow::_showQmlTestWidget(void)
}
}
#endif
#endif
// There is a bug in Qt where a Canvas element inside a QQuickWidget does not
// receive update requests. We hook into this event and notify the tool bar
// to update its canvas elements. If other QQuickWidgets start using Canvas
// and this bug is not fixed, this should be turned into a signal emited by
// MainWindow and the various QQuickWidgets that need it should connect to it.
bool
MainWindow
::
event
(
QEvent
*
e
)
{
bool
result
=
true
;
switch
(
e
->
type
())
{
case
QEvent
:
:
Paint
:
result
=
QMainWindow
::
event
(
e
);
_mainToolBar
->
updateCanvas
();
return
result
;
default:
break
;
}
return
QMainWindow
::
event
(
e
);
}
src/ui/MainWindow.h
View file @
e3d7e129
...
@@ -219,6 +219,8 @@ public:
...
@@ -219,6 +219,8 @@ public:
protected:
protected:
bool
event
(
QEvent
*
);
typedef
enum
_VIEW_SECTIONS
typedef
enum
_VIEW_SECTIONS
{
{
VIEW_ENGINEER
,
// Engineering/Analyze view mode. Used for analyzing data and modifying onboard parameters
VIEW_ENGINEER
,
// Engineering/Analyze view mode. Used for analyzing data and modifying onboard parameters
...
...
src/ui/toolbar/MainToolBar.cc
View file @
e3d7e129
...
@@ -655,3 +655,8 @@ void MainToolBar::_setSatLoc(UASInterface*, int fix)
...
@@ -655,3 +655,8 @@ void MainToolBar::_setSatLoc(UASInterface*, int fix)
emit
satelliteLockChanged
(
_satelliteLock
);
emit
satelliteLockChanged
(
_satelliteLock
);
}
}
}
}
void
MainToolBar
::
updateCanvas
()
{
emit
repaintRequestedChanged
();
}
src/ui/toolbar/MainToolBar.h
View file @
e3d7e129
...
@@ -98,6 +98,7 @@ public:
...
@@ -98,6 +98,7 @@ public:
Q_PROPERTY
(
bool
showMav
READ
showMav
NOTIFY
showMavChanged
)
Q_PROPERTY
(
bool
showMav
READ
showMav
NOTIFY
showMavChanged
)
Q_PROPERTY
(
bool
showMessages
READ
showMessages
NOTIFY
showMessagesChanged
)
Q_PROPERTY
(
bool
showMessages
READ
showMessages
NOTIFY
showMessagesChanged
)
Q_PROPERTY
(
bool
showBattery
READ
showBattery
NOTIFY
showBatteryChanged
)
Q_PROPERTY
(
bool
showBattery
READ
showBattery
NOTIFY
showBatteryChanged
)
Q_PROPERTY
(
bool
repaintRequested
READ
repaintRequested
NOTIFY
repaintRequestedChanged
)
int
connectionCount
()
{
return
_connectionCount
;
}
int
connectionCount
()
{
return
_connectionCount
;
}
double
batteryVoltage
()
{
return
_batteryVoltage
;
}
double
batteryVoltage
()
{
return
_batteryVoltage
;
}
...
@@ -122,9 +123,11 @@ public:
...
@@ -122,9 +123,11 @@ public:
bool
showMav
()
{
return
_showMav
;
}
bool
showMav
()
{
return
_showMav
;
}
bool
showMessages
()
{
return
_showMessages
;
}
bool
showMessages
()
{
return
_showMessages
;
}
bool
showBattery
()
{
return
_showBattery
;
}
bool
showBattery
()
{
return
_showBattery
;
}
bool
repaintRequested
()
{
return
true
;
}
void
setCurrentView
(
int
currentView
);
void
setCurrentView
(
int
currentView
);
void
viewStateChanged
(
const
QString
&
key
,
bool
value
);
void
viewStateChanged
(
const
QString
&
key
,
bool
value
);
void
updateCanvas
();
signals:
signals:
void
connectionCountChanged
(
int
count
);
void
connectionCountChanged
(
int
count
);
...
@@ -150,6 +153,7 @@ signals:
...
@@ -150,6 +153,7 @@ signals:
void
showMavChanged
(
bool
value
);
void
showMavChanged
(
bool
value
);
void
showMessagesChanged
(
bool
value
);
void
showMessagesChanged
(
bool
value
);
void
showBatteryChanged
(
bool
value
);
void
showBatteryChanged
(
bool
value
);
void
repaintRequestedChanged
();
private
slots
:
private
slots
:
void
_setActiveUAS
(
UASInterface
*
active
);
void
_setActiveUAS
(
UASInterface
*
active
);
...
...
src/ui/toolbar/MainToolBar.qml
View file @
e3d7e129
...
@@ -40,8 +40,8 @@ Rectangle {
...
@@ -40,8 +40,8 @@ Rectangle {
property
var
qgcPal
:
QGCPalette
{
id
:
palette
;
colorGroupEnabled
:
true
}
property
var
qgcPal
:
QGCPalette
{
id
:
palette
;
colorGroupEnabled
:
true
}
property
int
cellSpacerSize
:
4
property
int
cellSpacerSize
:
4
property
int
cellHeight
:
30
property
int
cellHeight
:
30
property
int
cellRadius
:
3
property
int
cellRadius
:
3
property
double
dpiFactor
:
(
72.0
/
mainToolBar
.
dotsPerInch
);
property
double
dpiFactor
:
(
72.0
/
mainToolBar
.
dotsPerInch
);
property
var
colorBlue
:
"
#1a6eaa
"
property
var
colorBlue
:
"
#1a6eaa
"
...
@@ -117,325 +117,344 @@ Rectangle {
...
@@ -117,325 +117,344 @@ Rectangle {
}
}
Row
{
Row
{
id
:
row1
id
:
row1
height
:
cellHeight
height
:
cellHeight
anchors.left
:
parent
.
left
anchors.left
:
parent
.
left
spacing
:
cellSpacerSize
spacing
:
4
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.leftMargin
:
10
anchors.leftMargin
:
10
ExclusiveGroup
{
id
:
mainActionGroup
}
QGCButton
{
Row
{
id
:
setupButton
id
:
row11
width
:
90
height
:
cellHeight
height
:
cellHeight
spacing
:
-
12
exclusiveGroup
:
mainActionGroup
text
:
qsTr
(
"
1. Setup
"
)
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.verticalCenter
:
parent
.
verticalCenter
checked
:
(
mainToolBar
.
currentView
===
MainToolBar
.
ViewSetup
)
onClicked
:
{
Connections
{
mainToolBar
.
onSetupView
();
target
:
mainToolBar
onRepaintRequestedChanged
:
{
setupButton
.
repaintChevron
=
true
;
planButton
.
repaintChevron
=
true
;
flyButton
.
repaintChevron
=
true
;
analyzeButton
.
repaintChevron
=
true
;
}
}
}
}
QGCButton
{
ExclusiveGroup
{
id
:
mainActionGroup
}
id
:
planButton
width
:
90
QGCToolBarButton
{
height
:
cellHeight
id
:
setupButton
exclusiveGroup
:
mainActionGroup
width
:
100
text
:
qsTr
(
"
2. Plan
"
)
height
:
cellHeight
anchors.verticalCenter
:
parent
.
verticalCenter
exclusiveGroup
:
mainActionGroup
checked
:
(
mainToolBar
.
currentView
===
MainToolBar
.
ViewPlan
)
text
:
qsTr
(
"
1. Setup
"
)
onClicked
:
{
anchors.verticalCenter
:
parent
.
verticalCenter
mainToolBar
.
onPlanView
();
checked
:
(
mainToolBar
.
currentView
===
MainToolBar
.
ViewSetup
)
onClicked
:
{
mainToolBar
.
onSetupView
();
}
z
:
1000
}
}
}
QGCButton
{
QGCToolBarButton
{
id
:
flyButton
id
:
planButton
width
:
90
width
:
100
height
:
cellHeight
height
:
cellHeight
exclusiveGroup
:
mainActionGroup
exclusiveGroup
:
mainActionGroup
text
:
qsTr
(
"
3. Fly
"
)
text
:
qsTr
(
"
2. Plan
"
)
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.verticalCenter
:
parent
.
verticalCenter
checked
:
(
mainToolBar
.
currentView
===
MainToolBar
.
ViewFly
)
checked
:
(
mainToolBar
.
currentView
===
MainToolBar
.
ViewPlan
)
onClicked
:
{
onClicked
:
{
mainToolBar
.
onFlyView
();
mainToolBar
.
onPlanView
();
}
z
:
900
}
}
}
QGCButton
{
QGCToolBarButton
{
id
:
analyzeButton
id
:
flyButton
width
:
90
width
:
100
height
:
cellHeight
height
:
cellHeight
exclusiveGroup
:
mainActionGroup
exclusiveGroup
:
mainActionGroup
text
:
qsTr
(
"
4. Analyze
"
)
text
:
qsTr
(
"
3. Fly
"
)
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.verticalCenter
:
parent
.
verticalCenter
checked
:
(
mainToolBar
.
currentView
===
MainToolBar
.
ViewAnalyze
)
checked
:
(
mainToolBar
.
currentView
===
MainToolBar
.
ViewFly
)
onClicked
:
{
onClicked
:
{
mainToolBar
.
onAnalyzeView
();
mainToolBar
.
onFlyView
();
}
z
:
800
}
QGCToolBarButton
{
id
:
analyzeButton
width
:
100
height
:
cellHeight
exclusiveGroup
:
mainActionGroup
text
:
qsTr
(
"
4. Analyze
"
)
anchors.verticalCenter
:
parent
.
verticalCenter
checked
:
(
mainToolBar
.
currentView
===
MainToolBar
.
ViewAnalyze
)
onClicked
:
{
mainToolBar
.
onAnalyzeView
();
}
z
:
700
}
}
}
Rectangle
{
width
:
4
height
:
cellHeight
color
:
"
#00000000
"
border.color
:
"
#00000000
"
border.width
:
0
}
}
Rectangle
{
Row
{
id
:
messages
id
:
row12
width
:
(
mainToolBar
.
newMessageCount
>
99
)
?
70
:
60
height
:
cellHeight
height
:
cellHeight
spacing
:
cellSpacerSize
visible
:
(
mainToolBar
.
connectionCount
>
0
)
&&
(
mainToolBar
.
showMessages
)
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.verticalCenter
:
parent
.
verticalCenter
color
:
getMessageColor
()
radius
:
cellRadius
border.color
:
"
#00000000
"
border.width
:
0
property
bool
showTriangle
:
false
Image
{
id
:
messageIcon
source
:
getMessageIcon
();
height
:
16
fillMode
:
Image
.
PreserveAspectFit
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.left
:
parent
.
left
anchors.leftMargin
:
10
}
Rectangle
{
Rectangle
{
id
:
messageTextRect
id
:
messages
width
:
(
mainToolBar
.
messageCount
>
99
)
?
70
:
60
height
:
cellHeight
visible
:
(
mainToolBar
.
connectionCount
>
0
)
&&
(
mainToolBar
.
showMessages
)
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.right
:
parent
.
right
color
:
getMessageColor
()
width
:
messages
.
width
-
messageIcon
.
width
radius
:
cellRadius
Text
{
border.color
:
"
#00000000
"
id
:
messageText
border.width
:
0
text
:
(
mainToolBar
.
newMessageCount
>
0
)
?
mainToolBar
.
newMessageCount
:
''
property
bool
showTriangle
:
false
font.pointSize
:
14
*
dpiFactor
font.weight
:
Font
.
DemiBold
Image
{
id
:
messageIcon
source
:
getMessageIcon
();
height
:
16
fillMode
:
Image
.
PreserveAspectFit
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.horizontalCenter
:
parent
.
horizontalCenter
anchors.left
:
parent
.
left
horizontalAlignment
:
Text
.
AlignHCenter
anchors.leftMargin
:
10
color
:
colorWhite
}
}
}
Image
{
Rectangle
{
id
:
dropDown
id
:
messageTextRect
source
:
"
QGroundControl/Controls/arrow-down.png
"
anchors.verticalCenter
:
parent
.
verticalCenter
visible
:
(
messages
.
showTriangle
)
&&
(
mainToolBar
.
messageCount
>
0
)
anchors.right
:
parent
.
right
anchors.bottom
:
parent
.
bottom
width
:
messages
.
width
-
messageIcon
.
width
anchors.right
:
parent
.
right
Text
{
anchors.bottomMargin
:
3
id
:
messageText
anchors.rightMargin
:
3
text
:
(
mainToolBar
.
messageCount
>
0
)
?
mainToolBar
.
messageCount
:
''
}
font.pointSize
:
14
*
dpiFactor
font.weight
:
Font
.
DemiBold
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.horizontalCenter
:
parent
.
horizontalCenter
horizontalAlignment
:
Text
.
AlignHCenter
color
:
colorWhite
}
}
Timer
{
Image
{
id
:
mouseOffTimer
id
:
dropDown
interval
:
2000
;
source
:
"
QGroundControl/Controls/arrow-down.png
"
running
:
false
;
visible
:
(
messages
.
showTriangle
)
&&
(
mainToolBar
.
messageCount
>
0
)
repeat
:
false
anchors.bottom
:
parent
.
bottom
onTriggered
:
{
anchors.right
:
parent
.
right
messages
.
showTriangle
=
false
;
anchors.bottomMargin
:
3
anchors.rightMargin
:
3
}
}
}
MouseArea
{
Timer
{
anchors.fill
:
parent
id
:
mouseOffTimer
hoverEnabled
:
true
interval
:
2000
;
onEntered
:
{
running
:
false
;
messages
.
showTriangle
=
true
;
repeat
:
false
mouseOffTimer
.
start
();
onTriggered
:
{
messages
.
showTriangle
=
false
;
}
}
}
onClicked
:
{
if
(
mainToolBar
.
messageCount
>
0
)
{
MouseArea
{
anchors.fill
:
parent
hoverEnabled
:
true
onEntered
:
{
messages
.
showTriangle
=
true
;
mouseOffTimer
.
start
();
}
onClicked
:
{
var
p
=
mapToItem
(
toolBarHolder
,
mouseX
,
mouseY
);
var
p
=
mapToItem
(
toolBarHolder
,
mouseX
,
mouseY
);
mainToolBar
.
onEnterMessageArea
(
p
.
x
,
p
.
y
);
mainToolBar
.
onEnterMessageArea
(
p
.
x
,
p
.
y
);
}
}
}
}
}
}
Rectangle
{
id
:
mavIcon
width
:
cellHeight
height
:
cellHeight
visible
:
showMavStatus
()
&&
(
mainToolBar
.
showMav
)
anchors.verticalCenter
:
parent
.
verticalCenter
color
:
colorBlue
radius
:
cellRadius
border.color
:
"
#00000000
"
border.width
:
0
Image
{
source
:
mainToolBar
.
systemPixmap
height
:
cellHeight
*
0.75
fillMode
:
Image
.
PreserveAspectFit
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.horizontalCenter
:
parent
.
horizontalCenter
}
}
}
Rectangle
{
Rectangle
{
id
:
satelitte
id
:
mavIcon
width
:
60
width
:
cellHeight
height
:
cellHeight
height
:
cellHeight
visible
:
showMavStatus
()
&&
(
mainToolBar
.
showGPS
)
visible
:
showMavStatus
()
&&
(
mainToolBar
.
showMav
)
anchors.verticalCenter
:
parent
.
verticalCenter
color
:
getSatelliteColor
();
radius
:
cellRadius
border.color
:
"
#00000000
"
border.width
:
0
Image
{
source
:
"
qrc:/files/images/status/gps.svg
"
;
height
:
24
fillMode
:
Image
.
PreserveAspectFit
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.left
:
parent
.
left
color
:
colorBlue
anchors.leftMargin
:
10
radius
:
cellRadius
mipmap
:
true
border.color
:
"
#00000000
"
smooth
:
true
border.width
:
0
Image
{
source
:
mainToolBar
.
systemPixmap
height
:
cellHeight
*
0.75
fillMode
:
Image
.
PreserveAspectFit
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.horizontalCenter
:
parent
.
horizontalCenter
}
}
}
Text
{
Rectangle
{
id
:
satelitte
Text
id
:
satelitte
text
:
(
mainToolBar
.
satelliteCount
>
0
)
?
mainToolBar
.
satelliteCount
:
''
width
:
60
font.pointSize
:
14
*
dpiFactor
height
:
cellHeight
font.weight
:
Font
.
DemiBold
visible
:
showMavStatus
()
&&
(
mainToolBar
.
showGPS
)
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.right
:
parent
.
right
color
:
getSatelliteColor
();
anchors.rightMargin
:
10
radius
:
cellRadius
horizontalAlignment
:
Text
.
AlignRight
border.color
:
"
#00000000
"
color
:
colorWhite
border.width
:
0
Image
{
source
:
"
qrc:/files/images/status/gps.svg
"
;
height
:
24
fillMode
:
Image
.
PreserveAspectFit
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.left
:
parent
.
left
anchors.leftMargin
:
10
mipmap
:
true
smooth
:
true
}
Text
{
id
:
satelitteText
text
:
(
mainToolBar
.
satelliteCount
>
0
)
?
mainToolBar
.
satelliteCount
:
''
font.pointSize
:
14
*
dpiFactor
font.weight
:
Font
.
DemiBold
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.right
:
parent
.
right
anchors.rightMargin
:
10
horizontalAlignment
:
Text
.
AlignRight
color
:
colorWhite
}
}
}
}
Rectangle
{
Rectangle
{
id
:
battery
id
:
battery
width
:
80
width
:
80
height
:
cellHeight
height
:
cellHeight
visible
:
showMavStatus
()
&&
(
mainToolBar
.
showBattery
)
visible
:
showMavStatus
()
&&
(
mainToolBar
.
showBattery
)
anchors.verticalCenter
:
parent
.
verticalCenter
color
:
(
mainToolBar
.
batteryPercent
>
40.0
||
mainToolBar
.
batteryPercent
<
0.01
)
?
colorGreen
:
colorRed
radius
:
cellRadius
border.color
:
"
#00000000
"
border.width
:
0
Image
{
source
:
getBatteryIcon
();
height
:
20
fillMode
:
Image
.
PreserveAspectFit
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.left
:
parent
.
left
color
:
(
mainToolBar
.
batteryPercent
>
40.0
||
mainToolBar
.
batteryPercent
<
0.01
)
?
colorBlue
:
colorRed
anchors.leftMargin
:
6
radius
:
cellRadius
mipmap
:
true
border.color
:
"
#00000000
"
smooth
:
true
border.width
:
0
Image
{
source
:
getBatteryIcon
();
height
:
20
fillMode
:
Image
.
PreserveAspectFit
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.left
:
parent
.
left
anchors.leftMargin
:
6
mipmap
:
true
smooth
:
true
}
Text
{
id
:
batteryText
text
:
mainToolBar
.
batteryVoltage
.
toFixed
(
1
)
+
'
V
'
;
font.pointSize
:
14
*
dpiFactor
font.weight
:
Font
.
DemiBold
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.right
:
parent
.
right
anchors.rightMargin
:
8
horizontalAlignment
:
Text
.
AlignRight
color
:
colorWhite
}
}
}
Text
{
Column
{
id
:
batteryText
visible
:
showMavStatus
()
text
:
mainToolBar
.
batteryVoltage
.
toFixed
(
1
)
+
'
V
'
;
height
:
cellHeight
*
0.85
font.pointSize
:
14
*
dpiFactor
width
:
80
font.weight
:
Font
.
DemiBold
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.right
:
parent
.
right
anchors.rightMargin
:
8
horizontalAlignment
:
Text
.
AlignRight
color
:
colorWhite
}
}
Column
{
Rectangle
{
visible
:
showMavStatus
()
id
:
armedStatus
height
:
cellHeight
*
0.85
width
:
parent
.
width
width
:
80
height
:
parent
.
height
/
2
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.horizontalCenter
:
parent
.
horizontalCenter
color
:
"
#00000000
"
border.color
:
"
#00000000
"
border.width
:
0
Text
{
id
:
armedStatusText
text
:
(
mainToolBar
.
systemArmed
)
?
qsTr
(
"
ARMED
"
)
:
qsTr
(
"
DISARMED
"
)
font.pointSize
:
12
*
dpiFactor
font.weight
:
Font
.
DemiBold
anchors.centerIn
:
parent
color
:
(
mainToolBar
.
systemArmed
)
?
colorRed
:
colorGreen
}
}
Rectangle
{
id
:
stateStatus
width
:
parent
.
width
height
:
parent
.
height
/
2
anchors.horizontalCenter
:
parent
.
horizontalCenter
color
:
"
#00000000
"
border.color
:
"
#00000000
"
border.width
:
0
Text
{
id
:
stateStatusText
text
:
mainToolBar
.
currentState
font.pointSize
:
12
*
dpiFactor
font.weight
:
Font
.
DemiBold
anchors.centerIn
:
parent
color
:
(
mainToolBar
.
currentState
===
"
STANDBY
"
)
?
colorGreen
:
colorRed
}
}
}
Rectangle
{
Rectangle
{
id
:
armed
Status
id
:
mode
Status
width
:
parent
.
width
width
:
90
height
:
parent
.
height
/
2
height
:
cellHeight
anchors.horizontalCenter
:
parent
.
horizontalCenter
visible
:
showMavStatus
()
color
:
"
#00000000
"
color
:
"
#00000000
"
border.color
:
"
#00000000
"
border.color
:
"
#00000000
"
border.width
:
0
border.width
:
0
Text
{
Text
{
id
:
armed
StatusText
id
:
mode
StatusText
text
:
(
mainToolBar
.
systemArmed
)
?
qsTr
(
"
ARMED
"
)
:
qsTr
(
"
DISARMED
"
)
text
:
mainToolBar
.
currentMode
font.pointSize
:
12
*
dpiFactor
font.pointSize
:
12
*
dpiFactor
font.weight
:
Font
.
DemiBold
font.weight
:
Font
.
DemiBold
anchors.centerIn
:
parent
anchors.horizontalCenter
:
parent
.
horizontalCenter
color
:
(
mainToolBar
.
systemArmed
)
?
colorRed
:
colorGreenText
anchors.verticalCenter
:
parent
.
verticalCenter
color
:
qgcPal
.
text
}
}
}
}
Rectangle
{
Rectangle
{
id
:
stateStatus
id
:
connectionStatus
width
:
parent
.
width
width
:
160
height
:
parent
.
height
/
2
height
:
cellHeight
anchors.horizontalCenter
:
parent
.
horizontalCenter
visible
:
(
mainToolBar
.
connectionCount
>
0
&&
mainToolBar
.
mavPresent
&&
mainToolBar
.
heartbeatTimeout
!=
0
)
anchors.verticalCenter
:
parent
.
verticalCenter
color
:
"
#00000000
"
color
:
"
#00000000
"
border.color
:
"
#00000000
"
border.color
:
"
#00000000
"
border.width
:
0
border.width
:
0
Text
{
Text
{
id
:
state
StatusText
id
:
connection
StatusText
text
:
mainToolBar
.
currentState
text
:
qsTr
(
"
CONNECTION LOST
"
)
font.pointSize
:
1
2
*
dpiFactor
font.pointSize
:
1
4
*
dpiFactor
font.weight
:
Font
.
DemiBold
font.weight
:
Font
.
DemiBold
anchors.centerIn
:
parent
anchors.verticalCenter
:
parent
.
verticalCenter
color
:
(
mainToolBar
.
currentState
===
"
STANDBY
"
)
?
colorGreenText
:
colorRed
anchors.horizontalCenter
:
parent
.
horizontalCenter
color
:
colorRed
}
}
}
}
}
Rectangle
{
id
:
modeStatus
width
:
90
height
:
cellHeight
visible
:
showMavStatus
()
color
:
"
#00000000
"
border.color
:
"
#00000000
"
border.width
:
0
Text
{
id
:
modeStatusText
text
:
mainToolBar
.
currentMode
font.pointSize
:
12
*
dpiFactor
font.weight
:
Font
.
DemiBold
anchors.horizontalCenter
:
parent
.
horizontalCenter
anchors.verticalCenter
:
parent
.
verticalCenter
color
:
qgcPal
.
text
}
}
Rectangle
{
id
:
connectionStatus
width
:
160
height
:
cellHeight
visible
:
(
mainToolBar
.
connectionCount
>
0
&&
mainToolBar
.
mavPresent
&&
mainToolBar
.
heartbeatTimeout
!=
0
)
anchors.verticalCenter
:
parent
.
verticalCenter
color
:
"
#00000000
"
border.color
:
"
#00000000
"
border.width
:
0
Text
{
id
:
connectionStatusText
text
:
qsTr
(
"
CONNECTION LOST
"
)
font.pointSize
:
14
*
dpiFactor
font.weight
:
Font
.
DemiBold
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.horizontalCenter
:
parent
.
horizontalCenter
color
:
colorRed
}
}
}
}
}
...
...
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