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
f4b62d90
Commit
f4b62d90
authored
Aug 18, 2016
by
Don Gagne
Committed by
GitHub
Aug 18, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #3906 from DonLakeFlyer/JoystickConfig
Joystick config: Fix scrolling
parents
3f63baf5
fcf77a69
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
560 additions
and
558 deletions
+560
-558
SetupPage.qml
src/AutoPilotPlugins/Common/SetupPage.qml
+4
-2
JoystickConfig.qml
src/VehicleSetup/JoystickConfig.qml
+533
-542
SetupView.qml
src/VehicleSetup/SetupView.qml
+23
-14
No files found.
src/AutoPilotPlugins/Common/SetupPage.qml
View file @
f4b62d90
...
...
@@ -25,6 +25,8 @@ QGCView {
viewPanel
:
setupPanel
property
alias
pageComponent
:
pageLoader
.
sourceComponent
property
string
pageName
:
vehicleComponent
?
vehicleComponent
.
name
:
""
property
string
pageDescription
:
vehicleComponent
?
vehicleComponent
.
description
:
""
property
real
availableWidth
:
width
-
pageLoader
.
x
property
real
availableHeight
:
height
-
pageLoader
.
y
...
...
@@ -49,7 +51,7 @@ QGCView {
QGCLabel
{
font.pointSize
:
ScreenTools
.
largeFontPointSize
text
:
vehicleComponent
.
n
ame
+
"
"
+
qsTr
(
"
Setup
"
)
text
:
pageN
ame
+
"
"
+
qsTr
(
"
Setup
"
)
visible
:
!
ScreenTools
.
isShortScreen
}
...
...
@@ -57,7 +59,7 @@ QGCView {
anchors.left
:
parent
.
left
anchors.right
:
parent
.
right
wrapMode
:
Text
.
WordWrap
text
:
vehicleComponent
.
d
escription
text
:
pageD
escription
visible
:
!
ScreenTools
.
isShortScreen
}
}
...
...
src/VehicleSetup/JoystickConfig.qml
View file @
f4b62d90
...
...
@@ -21,688 +21,679 @@ import QGroundControl.FactSystem 1.0
import
QGroundControl
.
FactControls
1.0
/// Joystick Config
QGCView
{
id
:
rootQGCView
viewPanel
:
panel
QGCPalette
{
id
:
qgcPal
;
colorGroupEnabled
:
panel
.
enabled
}
readonly
property
string
dialogTitle
:
qsTr
(
"
Joystick Config
"
)
readonly
property
real
labelToMonitorMargin
:
defaultTextWidth
*
3
property
bool
controllerCompleted
:
false
property
bool
controllerAndViewReady
:
false
property
var
_activeVehicle
:
QGroundControl
.
multiVehicleManager
.
activeVehicle
property
var
_activeJoystick
:
joystickManager
.
activeJoystick
JoystickConfigController
{
id
:
controller
factPanel
:
panel
statusText
:
statusText
cancelButton
:
cancelButton
nextButton
:
nextButton
skipButton
:
skipButton
Component.onCompleted
:
{
controllerCompleted
=
true
if
(
rootQGCView
.
completedSignalled
)
{
controllerAndViewReady
=
true
controller
.
start
()
SetupPage
{
id
:
joystickPage
pageComponent
:
pageComponent
pageName
:
qsTr
(
"
Joystick
"
)
pageDescription
:
qsTr
(
"
Joystick Setup is used to configure a calibrate joysticks.
"
)
Component
{
id
:
pageComponent
Item
{
width
:
availableWidth
height
:
Math
.
max
(
leftColumn
.
height
,
rightColumn
.
height
)
property
bool
controllerCompleted
:
false
property
bool
controllerAndViewReady
:
false
readonly
property
real
labelToMonitorMargin
:
defaultTextWidth
*
3
property
var
_activeVehicle
:
QGroundControl
.
multiVehicleManager
.
activeVehicle
property
var
_activeJoystick
:
joystickManager
.
activeJoystick
JoystickConfigController
{
id
:
controller
factPanel
:
joystickPage
.
viewPanel
statusText
:
statusText
cancelButton
:
cancelButton
nextButton
:
nextButton
skipButton
:
skipButton
Component.onCompleted
:
{
controllerCompleted
=
true
if
(
joystickPage
.
completedSignalled
)
{
controllerAndViewReady
=
true
controller
.
start
()
}
}
}
}
}
onCompleted
:
{
if
(
controllerCompleted
)
{
controllerAndViewReady
=
true
controller
.
start
()
}
}
Component
.
onCompleted
:
{
if
(
controllerCompleted
)
{
controllerAndViewReady
=
true
controller
.
start
()
}
}
QGCViewPanel
{
id
:
panel
anchors.fill
:
par
ent
// Live axis monitor control component
Component
{
id
:
axisMonitorDisplayCompon
ent
// Live axis monitor control component
Component
{
id
:
axisMonitorDisplayComponent
Item
{
property
int
axisValue
:
0
Item
{
property
int
axisValue
:
0
property
int
__lastAxisValue
:
0
readonly
property
int
__axisValueMaxJitter
:
100
property
color
__barColor
:
qgcPal
.
windowShade
property
int
__lastAxisValue
:
0
readonly
property
int
__axisValueMaxJitter
:
100
property
color
__barColor
:
qgcPal
.
windowShade
// Bar
Rectangle
{
id
:
bar
anchors.verticalCenter
:
parent
.
verticalCenter
width
:
parent
.
width
height
:
parent
.
height
/
2
color
:
__barColor
}
// Bar
Rectangle
{
id
:
bar
anchors.verticalCenter
:
parent
.
verticalCenter
width
:
parent
.
width
height
:
parent
.
height
/
2
color
:
__barColor
}
// Center point
Rectangle
{
anchors.horizontalCenter
:
parent
.
horizontalCenter
width
:
defaultTextWidth
/
2
height
:
parent
.
height
color
:
qgcPal
.
window
}
// Center point
Rectangle
{
anchors.horizontalCenter
:
parent
.
horizontalCenter
width
:
defaultTextWidth
/
2
height
:
parent
.
height
color
:
qgcPal
.
window
}
// Indicator
Rectangle
{
anchors.verticalCenter
:
parent
.
verticalCenter
width
:
parent
.
height
*
0.75
height
:
width
x
:
(
reversed
?
(
parent
.
width
-
_indicatorPosition
)
:
_indicatorPosition
)
-
(
width
/
2
)
radius
:
width
/
2
color
:
qgcPal
.
text
visible
:
mapped
property
real
_percentAxisValue
:
((
axisValue
+
32768.0
)
/
(
32768.0
*
2
))
property
real
_indicatorPosition
:
parent
.
width
*
_percentAxisValue
}
// Indicator
Rectangle
{
anchors.verticalCenter
:
parent
.
verticalCenter
width
:
parent
.
height
*
0.75
height
:
width
x
:
(
reversed
?
(
parent
.
width
-
_indicatorPosition
)
:
_indicatorPosition
)
-
(
width
/
2
)
radius
:
width
/
2
color
:
qgcPal
.
text
visible
:
mapped
property
real
_percentAxisValue
:
((
axisValue
+
32768.0
)
/
(
32768.0
*
2
))
property
real
_indicatorPosition
:
parent
.
width
*
_percentAxisValue
}
QGCLabel
{
anchors.fill
:
parent
horizontalAlignment
:
Text
.
AlignHCenter
verticalAlignment
:
Text
.
AlignVCenter
text
:
qsTr
(
"
Not Mapped
"
)
visible
:
!
mapped
}
QGCLabel
{
anchors.fill
:
parent
horizontalAlignment
:
Text
.
AlignHCenter
verticalAlignment
:
Text
.
AlignVCenter
text
:
qsTr
(
"
Not Mapped
"
)
visible
:
!
mapped
}
ColorAnimation
{
id
:
barAnimation
target
:
bar
property
:
"
color
"
from
:
"
yellow
"
to
:
__barColor
duration
:
1500
}
ColorAnimation
{
id
:
barAnimation
target
:
bar
property
:
"
color
"
from
:
"
yellow
"
to
:
__barColor
duration
:
1500
/*
// Axis value debugger
QGCLabel {
anchors.fill: parent
text: axisValue
}
*/
}
}
// Component - axisMonitorDisplayComponent
/*
// Axis value debugger
QGCLabel {
anchors.fill: parent
text: axisValue
}
*/
}
}
// Component - axisMonitorDisplayComponent
// Main view Qml starts here
// Left side column
Column
{
id
:
leftColumn
anchors.rightMargin
:
ScreenTools
.
defaultFontPixelWidth
anchors.left
:
parent
.
left
anchors.right
:
rightColumn
.
left
spacing
:
10
// Main view Qml starts here
// Attitude Controls
Column
{
width
:
parent
.
width
spacing
:
5
QGCLabel
{
id
:
header
font.pointSize
:
ScreenTools
.
mediumFontPointSize
text
:
qsTr
(
"
JOYSTICK
"
)
}
QGCLabel
{
text
:
qsTr
(
"
Attitude Controls
"
)
}
Item
{
id
:
spacer
anchors.top
:
header
.
bottom
width
:
parent
.
width
height
:
10
}
// Left side column
Column
{
id
:
leftColumn
anchors.rightMargin
:
ScreenTools
.
defaultFontPixelWidth
anchors.top
:
spacer
.
bottom
anchors.left
:
parent
.
left
anchors.right
:
rightColumn
.
left
spacing
:
10
// Attitude Controls
Column
{
width
:
parent
.
width
spacing
:
5
Item
{
width
:
parent
.
width
height
:
defaultTextHeight
*
2
QGCLabel
{
text
:
qsTr
(
"
Attitude Controls
"
)
}
QGCLabel
{
id
:
rollLabel
width
:
defaultTextWidth
*
10
text
:
qsTr
(
"
Roll
"
)
}
Item
{
width
:
parent
.
width
height
:
defaultTextHeight
*
2
Loader
{
id
:
rollLoader
anchors.left
:
rollLabel
.
right
anchors.right
:
parent
.
right
height
:
ScreenTools
.
defaultFontPixelHeight
width
:
100
sourceComponent
:
axisMonitorDisplayComponent
property
real
defaultTextWidth
:
ScreenTools
.
defaultFontPixelWidth
property
bool
mapped
:
controller
.
rollAxisMapped
property
bool
reversed
:
controller
.
rollAxisReversed
}
QGCLabel
{
id
:
rollLabel
width
:
defaultTextWidth
*
10
text
:
qsTr
(
"
Roll
"
)
}
Connections
{
target
:
controller
Loader
{
id
:
rollLoader
anchors.left
:
rollLabel
.
right
anchors.right
:
parent
.
right
height
:
rootQGCView
.
defaultTextHeight
width
:
100
sourceComponent
:
axisMonitorDisplayComponent
property
real
defaultTextWidth
:
rootQGCView
.
defaultTextWidth
property
bool
mapped
:
controller
.
rollAxisMapped
property
bool
reversed
:
controller
.
rollAxisReversed
onRollAxisValueChanged
:
rollLoader
.
item
.
axisValue
=
value
}
}
Connections
{
target
:
controller
Item
{
width
:
parent
.
width
height
:
defaultTextHeight
*
2
onRollAxisValueChanged
:
rollLoader
.
item
.
axisValue
=
value
}
}
QGCLabel
{
id
:
pitchLabel
width
:
defaultTextWidth
*
10
text
:
qsTr
(
"
Pitch
"
)
}
Item
{
width
:
parent
.
width
height
:
defaultTextHeight
*
2
Loader
{
id
:
pitchLoader
anchors.left
:
pitchLabel
.
right
anchors.right
:
parent
.
right
height
:
ScreenTools
.
defaultFontPixelHeight
width
:
100
sourceComponent
:
axisMonitorDisplayComponent
property
real
defaultTextWidth
:
ScreenTools
.
defaultFontPixelWidth
property
bool
mapped
:
controller
.
pitchAxisMapped
property
bool
reversed
:
controller
.
pitchAxisReversed
}
QGCLabel
{
id
:
pitchLabel
width
:
defaultTextWidth
*
10
text
:
qsTr
(
"
Pitch
"
)
}
Connections
{
target
:
controller
Loader
{
id
:
pitchLoader
anchors.left
:
pitchLabel
.
right
anchors.right
:
parent
.
right
height
:
rootQGCView
.
defaultTextHeight
width
:
100
sourceComponent
:
axisMonitorDisplayComponent
property
real
defaultTextWidth
:
rootQGCView
.
defaultTextWidth
property
bool
mapped
:
controller
.
pitchAxisMapped
property
bool
reversed
:
controller
.
pitchAxisReversed
onPitchAxisValueChanged
:
pitchLoader
.
item
.
axisValue
=
value
}
}
Connections
{
target
:
controller
Item
{
width
:
parent
.
width
height
:
defaultTextHeight
*
2
onPitchAxisValueChanged
:
pitchLoader
.
item
.
axisValue
=
value
}
}
QGCLabel
{
id
:
yawLabel
width
:
defaultTextWidth
*
10
text
:
qsTr
(
"
Yaw
"
)
}
Item
{
width
:
parent
.
width
height
:
defaultTextHeight
*
2
Loader
{
id
:
yawLoader
anchors.left
:
yawLabel
.
right
anchors.right
:
parent
.
right
height
:
ScreenTools
.
defaultFontPixelHeight
width
:
100
sourceComponent
:
axisMonitorDisplayComponent
property
real
defaultTextWidth
:
ScreenTools
.
defaultFontPixelWidth
property
bool
mapped
:
controller
.
yawAxisMapped
property
bool
reversed
:
controller
.
yawAxisReversed
}
QGCLabel
{
id
:
yawLabel
width
:
defaultTextWidth
*
10
text
:
qsTr
(
"
Yaw
"
)
}
Connections
{
target
:
controller
Loader
{
id
:
yawLoader
anchors.left
:
yawLabel
.
right
anchors.right
:
parent
.
right
height
:
rootQGCView
.
defaultTextHeight
width
:
100
sourceComponent
:
axisMonitorDisplayComponent
property
real
defaultTextWidth
:
rootQGCView
.
defaultTextWidth
property
bool
mapped
:
controller
.
yawAxisMapped
property
bool
reversed
:
controller
.
yawAxisReversed
onYawAxisValueChanged
:
yawLoader
.
item
.
axisValue
=
value
}
}
Connections
{
target
:
controller
Item
{
width
:
parent
.
width
height
:
defaultTextHeight
*
2
onYawAxisValueChanged
:
yawLoader
.
item
.
axisValue
=
value
}
}
QGCLabel
{
id
:
throttleLabel
width
:
defaultTextWidth
*
10
text
:
qsTr
(
"
Throttle
"
)
}
Item
{
width
:
parent
.
width
height
:
defaultTextHeight
*
2
Loader
{
id
:
throttleLoader
anchors.left
:
throttleLabel
.
right
anchors.right
:
parent
.
right
height
:
ScreenTools
.
defaultFontPixelHeight
width
:
100
sourceComponent
:
axisMonitorDisplayComponent
property
real
defaultTextWidth
:
ScreenTools
.
defaultFontPixelWidth
property
bool
mapped
:
controller
.
throttleAxisMapped
property
bool
reversed
:
controller
.
throttleAxisReversed
}
QGCLabel
{
id
:
throttleLabel
width
:
defaultTextWidth
*
10
text
:
qsTr
(
"
Throttle
"
)
}
Connections
{
target
:
controller
Loader
{
id
:
throttleLoader
anchors.left
:
throttleLabel
.
right
anchors.right
:
parent
.
right
height
:
rootQGCView
.
defaultTextHeight
width
:
100
sourceComponent
:
axisMonitorDisplayComponent
property
real
defaultTextWidth
:
rootQGCView
.
defaultTextWidth
property
bool
mapped
:
controller
.
throttleAxisMapped
property
bool
reversed
:
controller
.
throttleAxisReversed
onThrottleAxisValueChanged
:
throttleLoader
.
item
.
axisValue
=
value
}
}
}
// Column - Attitude Control labels
Connections
{
target
:
controller
// Command Buttons
Row
{
spacing
:
10
QGCButton
{
id
:
skipButton
text
:
qsTr
(
"
Skip
"
)
on
ThrottleAxisValueChanged
:
throttleLoader
.
item
.
axisValue
=
value
on
Clicked
:
controller
.
skipButtonClicked
()
}
}
}
// Column - Attitude Control labels
// Command Buttons
Row
{
spacing
:
10
QGCButton
{
id
:
cancelButton
text
:
qsTr
(
"
Cancel
"
)
QGCButton
{
id
:
skipButton
text
:
qsTr
(
"
Skip
"
)
onClicked
:
controller
.
cancelButtonClicked
()
}
onClicked
:
controller
.
skipButtonClicked
()
}
QGCButton
{
id
:
nextButton
primary
:
true
text
:
qsTr
(
"
Calibrate
"
)
QGCButton
{
id
:
cancelButton
text
:
qsTr
(
"
Cancel
"
)
onClicked
:
controller
.
nextButtonClicked
()
}
}
// Row - Buttons
onClicked
:
controller
.
cancelButtonClicked
()
// Status Text
QGCLabel
{
id
:
statusText
width
:
parent
.
width
wrapMode
:
Text
.
WordWrap
}
QGCButton
{
id
:
nextButton
primary
:
true
text
:
qsTr
(
"
Calibrate
"
)
onClicked
:
controller
.
nextButtonClicked
()
Rectangle
{
width
:
parent
.
width
height
:
1
border.color
:
qgcPal
.
text
border.width
:
1
}
}
// Row - Buttons
// Status Text
QGCLabel
{
id
:
statusText
width
:
parent
.
width
wrapMode
:
Text
.
WordWrap
}
Rectangle
{
width
:
parent
.
width
height
:
1
border.color
:
qgcPal
.
text
border.width
:
1
}
// Settings
Row
{
width
:
parent
.
width
spacing
:
ScreenTools
.
defaultFontPixelWidth
// Left column settings
Column
{
width
:
parent
.
width
/
2
spacing
:
ScreenTools
.
defaultFontPixelHeight
QGCLabel
{
text
:
qsTr
(
"
Additional Joystick settings:
"
)
}
// Settings
Row
{
width
:
parent
.
width
spacing
:
ScreenTools
.
defaultFontPixelWidth
// Left column settings
Column
{
width
:
parent
.
width
width
:
parent
.
width
/
2
spacing
:
ScreenTools
.
defaultFontPixelHeight
QGCLabel
{
text
:
qsTr
(
"
Additional Joystick settings:
"
)
}
QGCCheckBox
{
enabled
:
checked
||
_activeJoystick
.
calibrated
text
:
_activeJoystick
.
calibrated
?
qsTr
(
"
Enable joystick input
"
)
:
qsTr
(
"
Enable not allowed (Calibrate First)
"
)
checked
:
_activeVehicle
.
joystickEnabled
Column
{
width
:
parent
.
width
spacing
:
ScreenTools
.
defaultFontPixelHeight
onClicked
:
_activeVehicle
.
joystickEnabled
=
checked
}
Row
{
width
:
parent
.
width
spacing
:
ScreenTools
.
defaultFontPixelWidth
QGCCheckBox
{
enabled
:
checked
||
_activeJoystick
.
calibrated
text
:
_activeJoystick
.
calibrated
?
qsTr
(
"
Enable joystick input
"
)
:
qsTr
(
"
Enable not allowed (Calibrate First)
"
)
checked
:
_activeVehicle
.
joystickEnabled
QGCLabel
{
id
:
activeJoystickLabel
anchors.baseline
:
joystickCombo
.
baseline
text
:
qsTr
(
"
Active joystick:
"
)
onClicked
:
_activeVehicle
.
joystickEnabled
=
checked
}
QGCComboBox
{
id
:
joystickCombo
width
:
parent
.
width
-
activeJoystickLabel
.
width
-
parent
.
spacing
model
:
joystickManager
.
joystickNames
Row
{
width
:
parent
.
width
spacing
:
ScreenTools
.
defaultFontPixelWidth
onActivated
:
joystickManager
.
activeJoystickName
=
textAt
(
index
)
QGCLabel
{
id
:
activeJoystickLabel
anchors.baseline
:
joystickCombo
.
baseline
text
:
qsTr
(
"
Active joystick:
"
)
}
Component.onCompleted
:
{
var
index
=
joystickCombo
.
find
(
joystickManager
.
activeJoystickName
)
if
(
index
==
-
1
)
{
console
.
warn
(
qsTr
(
"
Active joystick name not in combo
"
),
joystickManager
.
activeJoystickName
)
}
else
{
joystickCombo
.
currentIndex
=
index
QGCComboBox
{
id
:
joystickCombo
width
:
parent
.
width
-
activeJoystickLabel
.
width
-
parent
.
spacing
model
:
joystickManager
.
joystickNames
onActivated
:
joystickManager
.
activeJoystickName
=
textAt
(
index
)
Component.onCompleted
:
{
var
index
=
joystickCombo
.
find
(
joystickManager
.
activeJoystickName
)
if
(
index
==
-
1
)
{
console
.
warn
(
qsTr
(
"
Active joystick name not in combo
"
),
joystickManager
.
activeJoystickName
)
}
else
{
joystickCombo
.
currentIndex
=
index
}
}
}
}
}
Column
{
spacing
:
ScreenTools
.
defaultFontPixelHeight
/
3
visible
:
_activeVehicle
.
supportsThrottleModeCenterZero
Column
{
spacing
:
ScreenTools
.
defaultFontPixelHeight
/
3
visible
:
_activeVehicle
.
supportsThrottleModeCenterZero
ExclusiveGroup
{
id
:
throttleModeExclusiveGroup
}
ExclusiveGroup
{
id
:
throttleModeExclusiveGroup
}
QGCRadioButton
{
exclusiveGroup
:
throttleModeExclusiveGroup
text
:
qsTr
(
"
Center stick is zero throttle
"
)
checked
:
_activeJoystick
.
throttleMode
==
0
QGCRadioButton
{
exclusiveGroup
:
throttleModeExclusiveGroup
text
:
qsTr
(
"
Center stick is zero throttle
"
)
checked
:
_activeJoystick
.
throttleMode
==
0
onClicked
:
_activeJoystick
.
throttleMode
=
0
}
onClicked
:
_activeJoystick
.
throttleMode
=
0
}
QGCRadioButton
{
exclusiveGroup
:
throttleModeExclusiveGroup
text
:
qsTr
(
"
Full down stick is zero throttle
"
)
checked
:
_activeJoystick
.
throttleMode
==
1
QGCRadioButton
{
exclusiveGroup
:
throttleModeExclusiveGroup
text
:
qsTr
(
"
Full down stick is zero throttle
"
)
checked
:
_activeJoystick
.
throttleMode
==
1
onClicked
:
_activeJoystick
.
throttleMode
=
1
onClicked
:
_activeJoystick
.
throttleMode
=
1
}
}
}
Column
{
spacing
:
ScreenTools
.
defaultFontPixelHeight
/
3
Column
{
spacing
:
ScreenTools
.
defaultFontPixelHeight
/
3
QGCCheckBox
{
id
:
exponential
checked
:
_activeJoystick
.
exponential
text
:
qsTr
(
"
Use exponential curve on roll, pitch, yaw
"
)
QGCCheckBox
{
id
:
exponential
checked
:
_activeJoystick
.
exponential
text
:
qsTr
(
"
Use exponential curve on roll, pitch, yaw
"
)
onClicked
:
_activeJoystick
.
exponential
=
checked
onClicked
:
_activeJoystick
.
exponential
=
checked
}
}
}
QGCCheckBox
{
id
:
advancedSettings
checked
:
_activeVehicle
.
joystickMode
!=
0
text
:
qsTr
(
"
Advanced settings (careful!)
"
)
QGCCheckBox
{
id
:
advancedSettings
checked
:
_activeVehicle
.
joystickMode
!=
0
text
:
qsTr
(
"
Advanced settings (careful!)
"
)
onClicked
:
{
if
(
!
checked
)
{
_activeVehicle
.
joystickMode
=
0
onClicked
:
{
if
(
!
checked
)
{
_activeVehicle
.
joystickMode
=
0
}
}
}
}
Row
{
width
:
parent
.
width
spacing
:
ScreenTools
.
defaultFontPixelWidth
visible
:
advancedSettings
.
checked
QGCLabel
{
id
:
joystickModeLabel
anchors.baseline
:
joystickModeCombo
.
baseline
text
:
qsTr
(
"
Joystick mode:
"
)
}
Row
{
width
:
parent
.
width
spacing
:
ScreenTools
.
defaultFontPixelWidth
visible
:
advancedSettings
.
checked
QGCLabel
{
id
:
joystickModeLabel
anchors.baseline
:
joystickModeCombo
.
baseline
text
:
qsTr
(
"
Joystick mode:
"
)
}
QGCComboBox
{
id
:
joystickModeCombo
currentIndex
:
_activeVehicle
.
joystickMode
width
:
ScreenTools
.
defaultFontPixelWidth
*
20
model
:
_activeVehicle
.
joystickModes
QGCComboBox
{
id
:
joystickModeCombo
currentIndex
:
_activeVehicle
.
joystickMode
width
:
ScreenTools
.
defaultFontPixelWidth
*
20
model
:
_activeVehicle
.
joystickModes
onActivated
:
_activeVehicle
.
joystickMode
=
index
onActivated
:
_activeVehicle
.
joystickMode
=
index
}
}
}
}
}
// Column - left column
}
// Column - left column
// Right column settings
Column
{
width
:
parent
.
width
/
2
spacing
:
ScreenTools
.
defaultFontPixelHeight
// Right column settings
Column
{
width
:
parent
.
width
/
2
spacing
:
ScreenTools
.
defaultFontPixelHeight
Connections
{
target
:
_activeJoystick
Connections
{
target
:
_activeJoystick
onRawButtonPressedChanged
:
{
if
(
buttonActionRepeater
.
itemAt
(
index
))
{
buttonActionRepeater
.
itemAt
(
index
).
pressed
=
pressed
}
if
(
jsButtonActionRepeater
.
itemAt
(
index
))
{
jsButtonActionRepeater
.
itemAt
(
index
).
pressed
=
pressed
onRawButtonPressedChanged
:
{
if
(
buttonActionRepeater
.
itemAt
(
index
))
{
buttonActionRepeater
.
itemAt
(
index
).
pressed
=
pressed
}
if
(
jsButtonActionRepeater
.
itemAt
(
index
))
{
jsButtonActionRepeater
.
itemAt
(
index
).
pressed
=
pressed
}
}
}
}
QGCLabel
{
text
:
qsTr
(
"
Button actions:
"
)
}
QGCLabel
{
text
:
qsTr
(
"
Button actions:
"
)
}
Column
{
width
:
parent
.
width
spacing
:
ScreenTools
.
defaultFontPixelHeight
/
3
Column
{
width
:
parent
.
width
spacing
:
ScreenTools
.
defaultFontPixelHeight
/
3
QGCLabel
{
visible
:
_activeVehicle
.
manualControlReservedButtonCount
!=
0
text
:
qsTr
(
"
Buttons 0-%1 reserved for firmware use
"
).
arg
(
reservedButtonCount
)
QGCLabel
{
visible
:
_activeVehicle
.
manualControlReservedButtonCount
!=
0
text
:
qsTr
(
"
Buttons 0-%1 reserved for firmware use
"
).
arg
(
reservedButtonCount
)
property
int
reservedButtonCount
:
_activeVehicle
.
manualControlReservedButtonCount
==
-
1
?
_activeJoystick
.
totalButtonCount
:
_activeVehicle
.
manualControlReservedButtonCount
}
property
int
reservedButtonCount
:
_activeVehicle
.
manualControlReservedButtonCount
==
-
1
?
_activeJoystick
.
totalButtonCount
:
_activeVehicle
.
manualControlReservedButtonCount
}
Repeater
{
id
:
buttonActionRepeater
model
:
_activeJoystick
.
totalButtonCount
Repeater
{
id
:
buttonActionRepeater
model
:
_activeJoystick
.
totalButtonCount
Row
{
spacing
:
ScreenTools
.
defaultFontPixelWidth
visible
:
(
_activeVehicle
.
manualControlReservedButtonCount
==
-
1
?
false
:
modelData
>=
_activeVehicle
.
manualControlReservedButtonCount
)
&&
!
_activeVehicle
.
supportsJSButton
Row
{
spacing
:
ScreenTools
.
defaultFontPixelWidth
visible
:
(
_activeVehicle
.
manualControlReservedButtonCount
==
-
1
?
false
:
modelData
>=
_activeVehicle
.
manualControlReservedButtonCount
)
&&
!
_activeVehicle
.
supportsJSButton
property
bool
pressed
property
bool
pressed
QGCCheckBox
{
anchors.verticalCenter
:
parent
.
verticalCenter
checked
:
_activeJoystick
.
buttonActions
[
modelData
]
!=
""
QGCCheckBox
{
anchors.verticalCenter
:
parent
.
verticalCenter
checked
:
_activeJoystick
.
buttonActions
[
modelData
]
!=
""
onClicked
:
_activeJoystick
.
setButtonAction
(
modelData
,
checked
?
buttonActionCombo
.
textAt
(
buttonActionCombo
.
currentIndex
)
:
""
)
}
onClicked
:
_activeJoystick
.
setButtonAction
(
modelData
,
checked
?
buttonActionCombo
.
textAt
(
buttonActionCombo
.
currentIndex
)
:
""
)
}
Rectangle
{
anchors.verticalCenter
:
parent
.
verticalCenter
width
:
ScreenTools
.
defaultFontPixelHeight
*
1.5
height
:
width
border.width
:
1
border.color
:
qgcPal
.
text
color
:
pressed
?
qgcPal
.
buttonHighlight
:
qgcPal
.
button
QGCLabel
{
anchors.fill
:
parent
color
:
pressed
?
qgcPal
.
buttonHighlightText
:
qgcPal
.
buttonText
horizontalAlignment
:
Text
.
AlignHCenter
verticalAlignment
:
Text
.
AlignVCenter
text
:
modelData
Rectangle
{
anchors.verticalCenter
:
parent
.
verticalCenter
width
:
ScreenTools
.
defaultFontPixelHeight
*
1.5
height
:
width
border.width
:
1
border.color
:
qgcPal
.
text
color
:
pressed
?
qgcPal
.
buttonHighlight
:
qgcPal
.
button
QGCLabel
{
anchors.fill
:
parent
color
:
pressed
?
qgcPal
.
buttonHighlightText
:
qgcPal
.
buttonText
horizontalAlignment
:
Text
.
AlignHCenter
verticalAlignment
:
Text
.
AlignVCenter
text
:
modelData
}
}
}
QGCComboBox
{
id
:
buttonActionCombo
width
:
ScreenTools
.
defaultFontPixelWidth
*
20
model
:
_activeJoystick
.
actions
QGCComboBox
{
id
:
buttonActionCombo
width
:
ScreenTools
.
defaultFontPixelWidth
*
20
model
:
_activeJoystick
.
actions
onActivated
:
_activeJoystick
.
setButtonAction
(
modelData
,
textAt
(
index
))
Component.onCompleted
:
currentIndex
=
find
(
_activeJoystick
.
buttonActions
[
modelData
])
onActivated
:
_activeJoystick
.
setButtonAction
(
modelData
,
textAt
(
index
))
Component.onCompleted
:
currentIndex
=
find
(
_activeJoystick
.
buttonActions
[
modelData
])
}
}
}
}
// Repeater
Row
{
spacing
:
ScreenTools
.
defaultFontPixelWidth
visible
:
_activeVehicle
.
supportsJSButton
QGCLabel
{
horizontalAlignment
:
Text
.
AlignHCenter
width
:
ScreenTools
.
defaultFontPixelHeight
*
1.5
text
:
qsTr
(
"
#
"
)
}
QGCLabel
{
width
:
ScreenTools
.
defaultFontPixelWidth
*
15
text
:
qsTr
(
"
Function:
"
)
}
QGCLabel
{
width
:
ScreenTools
.
defaultFontPixelWidth
*
15
text
:
qsTr
(
"
Shift Function:
"
)
}
}
// Row
Repeater
{
id
:
jsButtonActionRepeater
model
:
_activeJoystick
.
totalButtonCount
}
// Repeater
Row
{
spacing
:
ScreenTools
.
defaultFontPixelWidth
visible
:
_activeVehicle
.
supportsJSButton
property
bool
pressed
Rectangle
{
anchors.verticalCenter
:
parent
.
verticalCenter
width
:
ScreenTools
.
defaultFontPixelHeight
*
1.5
height
:
width
border.width
:
1
border.color
:
qgcPal
.
text
color
:
pressed
?
qgcPal
.
buttonHighlight
:
qgcPal
.
button
QGCLabel
{
anchors.fill
:
parent
color
:
pressed
?
qgcPal
.
buttonHighlightText
:
qgcPal
.
buttonText
horizontalAlignment
:
Text
.
AlignHCenter
verticalAlignment
:
Text
.
AlignVCenter
text
:
modelData
}
QGCLabel
{
horizontalAlignment
:
Text
.
AlignHCenter
width
:
ScreenTools
.
defaultFontPixelHeight
*
1.5
text
:
qsTr
(
"
#
"
)
}
FactComboBox
{
id
:
mainJSButtonActionCombo
width
:
ScreenTools
.
defaultFontPixelWidth
*
15
fact
:
controller
.
parameterExists
(
-
1
,
"
BTN
"
+
index
+
"
_FUNCTION
"
)
?
controller
.
getParameterFact
(
-
1
,
"
BTN
"
+
index
+
"
_FUNCTION
"
)
:
null
;
indexModel
:
false
QGCLabel
{
width
:
ScreenTools
.
defaultFontPixelWidth
*
15
text
:
qsTr
(
"
Function:
"
)
}
FactComboBox
{
id
:
shiftJSButtonActionCombo
width
:
ScreenTools
.
defaultFontPixelWidth
*
15
fact
:
controller
.
parameterExists
(
-
1
,
"
BTN
"
+
index
+
"
_SFUNCTION
"
)
?
controller
.
getParameterFact
(
-
1
,
"
BTN
"
+
index
+
"
_SFUNCTION
"
)
:
null
;
indexModel
:
false
QGCLabel
{
width
:
ScreenTools
.
defaultFontPixelWidth
*
15
text
:
qsTr
(
"
Shift Function:
"
)
}
}
// Row
}
// Repeater
}
// Column
}
// Column - right setting column
}
// Row - Settings
}
// Column - Left Main Column
// Right side column
Column
{
id
:
rightColumn
anchors.top
:
parent
.
top
anchors.right
:
parent
.
right
width
:
defaultTextWidth
*
35
spacing
:
10
Image
{
//width: parent.width
height
:
defaultTextHeight
*
15
fillMode
:
Image
.
PreserveAspectFit
smooth
:
true
source
:
controller
.
imageHelp
}
// Axis monitor
Repeater
{
id
:
jsButtonActionRepeater
model
:
_activeJoystick
.
totalButtonCount
Row
{
spacing
:
ScreenTools
.
defaultFontPixelWidth
visible
:
_activeVehicle
.
supportsJSButton
property
bool
pressed
Rectangle
{
anchors.verticalCenter
:
parent
.
verticalCenter
width
:
ScreenTools
.
defaultFontPixelHeight
*
1.5
height
:
width
border.width
:
1
border.color
:
qgcPal
.
text
color
:
pressed
?
qgcPal
.
buttonHighlight
:
qgcPal
.
button
QGCLabel
{
anchors.fill
:
parent
color
:
pressed
?
qgcPal
.
buttonHighlightText
:
qgcPal
.
buttonText
horizontalAlignment
:
Text
.
AlignHCenter
verticalAlignment
:
Text
.
AlignVCenter
text
:
modelData
}
}
FactComboBox
{
id
:
mainJSButtonActionCombo
width
:
ScreenTools
.
defaultFontPixelWidth
*
15
fact
:
controller
.
parameterExists
(
-
1
,
"
BTN
"
+
index
+
"
_FUNCTION
"
)
?
controller
.
getParameterFact
(
-
1
,
"
BTN
"
+
index
+
"
_FUNCTION
"
)
:
null
;
indexModel
:
false
}
FactComboBox
{
id
:
shiftJSButtonActionCombo
width
:
ScreenTools
.
defaultFontPixelWidth
*
15
fact
:
controller
.
parameterExists
(
-
1
,
"
BTN
"
+
index
+
"
_SFUNCTION
"
)
?
controller
.
getParameterFact
(
-
1
,
"
BTN
"
+
index
+
"
_SFUNCTION
"
)
:
null
;
indexModel
:
false
}
}
// Row
}
// Repeater
}
// Column
}
// Column - right setting column
}
// Row - Settings
}
// Column - Left Main Column
// Right side column
Column
{
width
:
parent
.
width
spacing
:
5
id
:
rightColumn
anchors.top
:
parent
.
top
anchors.right
:
parent
.
right
width
:
defaultTextWidth
*
35
spacing
:
10
Image
{
//width: parent.width
height
:
defaultTextHeight
*
15
fillMode
:
Image
.
PreserveAspectFit
smooth
:
true
source
:
controller
.
imageHelp
}
QGCLabel
{
text
:
qsTr
(
"
Axis Monitor
"
)
}
// Axis monitor
Column
{
width
:
parent
.
width
spacing
:
5
Connections
{
target
:
controller
QGCLabel
{
text
:
qsTr
(
"
Axis Monitor
"
)
}
onAxisValueChanged
:
{
if
(
axisMonitorRepeater
.
itemAt
(
axis
))
{
axisMonitorRepeater
.
itemAt
(
axis
).
loader
.
item
.
axisValue
=
value
Connections
{
target
:
controller
onAxisValueChanged
:
{
if
(
axisMonitorRepeater
.
itemAt
(
axis
))
{
axisMonitorRepeater
.
itemAt
(
axis
).
loader
.
item
.
axisValue
=
value
}
}
}
}
Repeater
{
id
:
axisMonitorRepeater
model
:
_activeJoystick
.
axisCount
width
:
parent
.
width
Repeater
{
id
:
axisMonitorRepeater
model
:
_activeJoystick
.
axisCount
width
:
parent
.
width
Row
{
spacing
:
5
Row
{
spacing
:
5
// Need this to get to loader from Connections above
property
Item
loader
:
theLoader
// Need this to get to loader from Connections above
property
Item
loader
:
theLoader
QGCLabel
{
id
:
axisLabel
text
:
modelData
}
QGCLabel
{
id
:
axisLabel
text
:
modelData
}
Loader
{
id
:
theLoader
anchors.verticalCenter
:
axisLabel
.
verticalCenter
height
:
rootQGCView
.
defaultTextHeight
width
:
200
sourceComponent
:
axisMonitorDisplayComponent
property
real
defaultTextWidth
:
rootQGCView
.
defaultTextWidth
property
bool
mapped
:
true
readonly
property
bool
reversed
:
false
Loader
{
id
:
theLoader
anchors.verticalCenter
:
axisLabel
.
verticalCenter
height
:
ScreenTools
.
defaultFontPixelHeight
width
:
200
sourceComponent
:
axisMonitorDisplayComponent
property
real
defaultTextWidth
:
ScreenTools
.
defaultFontPixelWidth
property
bool
mapped
:
true
readonly
property
bool
reversed
:
false
}
}
}
}
}
// Column - Axis Monitor
}
// Column - Axis Monitor
// Button monitor
Column
{
width
:
parent
.
width
spacing
:
ScreenTools
.
defaultFontPixelHeight
// Button monitor
Column
{
width
:
parent
.
width
spacing
:
ScreenTools
.
defaultFontPixelHeight
QGCLabel
{
text
:
qsTr
(
"
Button Monitor
"
)
}
QGCLabel
{
text
:
qsTr
(
"
Button Monitor
"
)
}
Connections
{
target
:
_activeJoystick
Connections
{
target
:
_activeJoystick
onRawButtonPressedChanged
:
{
if
(
buttonMonitorRepeater
.
itemAt
(
index
))
{
buttonMonitorRepeater
.
itemAt
(
index
).
pressed
=
pressed
onRawButtonPressedChanged
:
{
if
(
buttonMonitorRepeater
.
itemAt
(
index
))
{
buttonMonitorRepeater
.
itemAt
(
index
).
pressed
=
pressed
}
}
}
}
Row
{
spacing
:
-
1
Flow
{
width
:
parent
.
width
spacing
:
-
1
Repeater
{
id
:
buttonMonitorRepeater
model
:
_activeJoystick
.
totalButtonCount
Repeater
{
id
:
buttonMonitorRepeater
model
:
_activeJoystick
.
totalButtonCount
Rectangle
{
width
:
ScreenTools
.
defaultFontPixelHeight
*
1.2
height
:
width
border.width
:
1
border.color
:
qgcPal
.
text
color
:
pressed
?
qgcPal
.
buttonHighlight
:
qgcPal
.
button
Rectangle
{
width
:
ScreenTools
.
defaultFontPixelHeight
*
1.2
height
:
width
border.width
:
1
border.color
:
qgcPal
.
text
color
:
pressed
?
qgcPal
.
buttonHighlight
:
qgcPal
.
button
property
bool
pressed
property
bool
pressed
QGCLabel
{
anchors.fill
:
parent
color
:
pressed
?
qgcPal
.
buttonHighlightText
:
qgcPal
.
buttonText
horizontalAlignment
:
Text
.
AlignHCenter
verticalAlignment
:
Text
.
AlignVCenter
text
:
modelData
QGCLabel
{
anchors.fill
:
parent
color
:
pressed
?
qgcPal
.
buttonHighlightText
:
qgcPal
.
buttonText
horizontalAlignment
:
Text
.
AlignHCenter
verticalAlignment
:
Text
.
AlignVCenter
text
:
modelData
}
}
}
}
// R
epeater
}
//
Row
}
// Column -
Axis Monitor
}
//
Column - Right Column
}
//
QGCViewPanel
}
}
// Repeater
}
// R
ow
}
//
Column - Axis Monitor
}
// Column -
Right Column
}
//
Item
}
//
Component - pageComponent
}
// SetupPage
src/VehicleSetup/SetupView.qml
View file @
f4b62d90
...
...
@@ -45,14 +45,14 @@ Rectangle {
{
if
(
_fullParameterVehicleAvailable
)
{
if
(
QGroundControl
.
multiVehicleManager
.
activeVehicle
.
autopilot
.
vehicleComponents
.
length
==
0
)
{
panelLoader
.
s
ourceComponent
=
noComponentsVehicleSummaryComponent
panelLoader
.
s
etSourceComponent
(
noComponentsVehicleSummaryComponent
)
}
else
{
panelLoader
.
s
ource
=
"
VehicleSummary.qml
"
;
panelLoader
.
s
etSource
(
"
VehicleSummary.qml
"
)
}
}
else
if
(
QGroundControl
.
multiVehicleManager
.
parameterReadyVehicleAvailable
)
{
panelLoader
.
s
ourceComponent
=
missingParametersVehicleSummaryComponent
panelLoader
.
s
etSourceComponent
(
missingParametersVehicleSummaryComponent
)
}
else
{
panelLoader
.
s
ourceComponent
=
disconnectedVehicleSummaryComponent
panelLoader
.
s
etSourceComponent
(
disconnectedVehicleSummaryComponent
)
}
}
...
...
@@ -61,9 +61,9 @@ Rectangle {
if
(
!
ScreenTools
.
isMobile
)
{
if
(
QGroundControl
.
multiVehicleManager
.
activeVehicleAvailable
&&
QGroundControl
.
multiVehicleManager
.
activeVehicle
.
armed
)
{
_messagePanelText
=
_armedVehicleText
panelLoader
.
s
ourceComponent
=
messagePanelComponent
panelLoader
.
s
etSourceComponent
(
messagePanelComponent
)
}
else
{
panelLoader
.
s
ource
=
"
FirmwareUpgrade.qml
"
;
panelLoader
.
s
etSource
(
"
FirmwareUpgrade.qml
"
)
}
}
}
...
...
@@ -72,34 +72,33 @@ Rectangle {
{
if
(
QGroundControl
.
multiVehicleManager
.
activeVehicleAvailable
&&
QGroundControl
.
multiVehicleManager
.
activeVehicle
.
armed
)
{
_messagePanelText
=
_armedVehicleText
panelLoader
.
s
ourceComponent
=
messagePanelComponent
panelLoader
.
s
etSourceComponent
(
messagePanelComponent
)
}
else
{
panelLoader
.
s
ource
=
"
JoystickConfig.qml
"
;
panelLoader
.
s
etSource
(
"
JoystickConfig.qml
"
)
}
}
function
showParametersPanel
()
{
panelLoader
.
s
ource
=
"
SetupParameterEditor.qml
"
;
panelLoader
.
s
etSource
(
"
SetupParameterEditor.qml
"
)
}
function
showPX4FlowPanel
()
{
panelLoader
.
s
ource
=
"
PX4FlowSensor.qml
"
;
panelLoader
.
s
etSource
(
"
PX4FlowSensor.qml
"
)
}
function
showVehicleComponentPanel
(
vehicleComponent
)
{
if
(
QGroundControl
.
multiVehicleManager
.
activeVehicle
.
armed
&&
!
vehicleComponent
.
allowSetupWhileArmed
)
{
_messagePanelText
=
_armedVehicleText
panelLoader
.
s
ourceComponent
=
messagePanelComponent
panelLoader
.
s
etSourceComponent
(
messagePanelComponent
)
}
else
{
if
(
vehicleComponent
.
prerequisiteSetup
!=
""
)
{
_messagePanelText
=
vehicleComponent
.
prerequisiteSetup
+
"
setup must be completed prior to
"
+
vehicleComponent
.
name
+
"
setup.
"
panelLoader
.
s
ourceComponent
=
messagePanelComponent
panelLoader
.
s
etSourceComponent
(
messagePanelComponent
)
}
else
{
panelLoader
.
vehicleComponent
=
vehicleComponent
panelLoader
.
source
=
vehicleComponent
.
setupSource
panelLoader
.
setSource
(
vehicleComponent
.
setupSource
,
vehicleComponent
)
for
(
var
i
=
0
;
i
<
componentRepeater
.
count
;
i
++
)
{
var
obj
=
componentRepeater
.
itemAt
(
i
);
if
(
obj
.
text
===
vehicleComponent
.
name
)
{
...
...
@@ -350,6 +349,16 @@ Rectangle {
anchors.top
:
parent
.
top
anchors.bottom
:
parent
.
bottom
function
setSource
(
source
,
vehicleComponent
)
{
panelLoader
.
vehicleComponent
=
vehicleComponent
panelLoader
.
source
=
source
}
function
setSourceComponent
(
sourceComponent
,
vehicleComponent
)
{
panelLoader
.
vehicleComponent
=
vehicleComponent
panelLoader
.
sourceComponent
=
sourceComponent
}
property
var
vehicleComponent
}
}
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