You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
734 lines
40 KiB
734 lines
40 KiB
/**************************************************************************** |
|
* |
|
* (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 QtGraphicalEffects 1.0 |
|
import QtMultimedia 5.5 |
|
import QtQuick 2.3 |
|
import QtQuick.Controls 1.2 |
|
import QtQuick.Controls.Styles 1.4 |
|
import QtQuick.Dialogs 1.2 |
|
import QtQuick.Layouts 1.2 |
|
import QtLocation 5.3 |
|
import QtPositioning 5.3 |
|
|
|
import QGroundControl 1.0 |
|
import QGroundControl.Airspace 1.0 |
|
import QGroundControl.Controllers 1.0 |
|
import QGroundControl.Controls 1.0 |
|
import QGroundControl.FactControls 1.0 |
|
import QGroundControl.FactSystem 1.0 |
|
import QGroundControl.FlightMap 1.0 |
|
import QGroundControl.MultiVehicleManager 1.0 |
|
import QGroundControl.Palette 1.0 |
|
import QGroundControl.ScreenTools 1.0 |
|
import QGroundControl.SettingsManager 1.0 |
|
|
|
QGCView { |
|
id: _qgcView |
|
viewPanel: panel |
|
color: qgcPal.window |
|
anchors.fill: parent |
|
anchors.margins: ScreenTools.defaultFontPixelWidth |
|
|
|
property real _labelWidth: ScreenTools.defaultFontPixelWidth * 20 |
|
property real _editFieldWidth: ScreenTools.defaultFontPixelWidth * 20 |
|
property real _buttonWidth: ScreenTools.defaultFontPixelWidth * 18 |
|
property real _panelWidth: _qgcView.width * _internalWidthRatio |
|
property Fact _enableAirMapFact: QGroundControl.settingsManager.airMapSettings.enableAirMap |
|
property bool _airMapEnabled: _enableAirMapFact.rawValue |
|
property var _authStatus: QGroundControl.airspaceManager.authStatus |
|
|
|
readonly property real _internalWidthRatio: 0.8 |
|
|
|
QGCPalette { id: qgcPal } |
|
|
|
QGCViewPanel { |
|
id: panel |
|
anchors.fill: parent |
|
QGCFlickable { |
|
clip: true |
|
anchors.fill: parent |
|
contentHeight: settingsColumn.height |
|
contentWidth: settingsColumn.width |
|
Column { |
|
id: settingsColumn |
|
width: _qgcView.width |
|
spacing: ScreenTools.defaultFontPixelHeight * 0.5 |
|
anchors.margins: ScreenTools.defaultFontPixelWidth |
|
//----------------------------------------------------------------- |
|
//-- General |
|
Item { |
|
width: _panelWidth |
|
height: generalLabel.height |
|
anchors.margins: ScreenTools.defaultFontPixelWidth |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
visible: QGroundControl.settingsManager.unitsSettings.visible |
|
QGCLabel { |
|
id: generalLabel |
|
text: qsTr("General") |
|
font.family: ScreenTools.demiboldFontFamily |
|
} |
|
} |
|
Rectangle { |
|
height: generalRow.height + (ScreenTools.defaultFontPixelHeight * 2) |
|
width: _panelWidth |
|
color: qgcPal.windowShade |
|
anchors.margins: ScreenTools.defaultFontPixelWidth |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
Row { |
|
id: generalRow |
|
spacing: ScreenTools.defaultFontPixelWidth * 4 |
|
anchors.centerIn: parent |
|
Column { |
|
spacing: ScreenTools.defaultFontPixelWidth |
|
FactCheckBox { |
|
text: qsTr("Enable AirMap Services") |
|
fact: _enableAirMapFact |
|
visible: _enableAirMapFact.visible |
|
} |
|
FactCheckBox { |
|
text: qsTr("Enable Telemetry") |
|
fact: _enableTelemetryFact |
|
visible: _enableTelemetryFact.visible |
|
enabled: _airMapEnabled |
|
property Fact _enableTelemetryFact: QGroundControl.settingsManager.airMapSettings.enableTelemetry |
|
} |
|
} |
|
QGCButton { |
|
text: qsTr("Clear Saved Answers") |
|
enabled: _enableAirMapFact.rawValue |
|
onClicked: clearDialog.open() |
|
anchors.verticalCenter: parent.verticalCenter |
|
MessageDialog { |
|
id: clearDialog |
|
visible: false |
|
icon: StandardIcon.Warning |
|
standardButtons: StandardButton.Yes | StandardButton.No |
|
title: qsTr("Clear Saved Answers") |
|
text: qsTr("All saved ruleset answers will be cleared. Is this really what you want?") |
|
onYes: { |
|
QGroundControl.airspaceManager.ruleSets.clearAllFeatures() |
|
clearDialog.close() |
|
} |
|
onNo: { |
|
clearDialog.close() |
|
} |
|
} |
|
} |
|
} |
|
} |
|
//----------------------------------------------------------------- |
|
//-- Connection Status |
|
Item { |
|
width: _panelWidth |
|
height: statusLabel.height |
|
anchors.margins: ScreenTools.defaultFontPixelWidth |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
visible: QGroundControl.settingsManager.appSettings.visible && _airMapEnabled |
|
QGCLabel { |
|
id: statusLabel |
|
text: qsTr("Connection Status") |
|
font.family: ScreenTools.demiboldFontFamily |
|
} |
|
} |
|
Rectangle { |
|
height: statusCol.height + (ScreenTools.defaultFontPixelHeight * 2) |
|
width: _panelWidth |
|
color: qgcPal.windowShade |
|
visible: QGroundControl.settingsManager.appSettings.visible && _airMapEnabled |
|
anchors.margins: ScreenTools.defaultFontPixelWidth |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
Column { |
|
id: statusCol |
|
spacing: ScreenTools.defaultFontPixelHeight * 0.5 |
|
width: parent.width |
|
anchors.centerIn: parent |
|
QGCLabel { |
|
text: QGroundControl.airspaceManager.connected ? qsTr("Connected") : qsTr("Not Connected") |
|
color: QGroundControl.airspaceManager.connected ? qgcPal.colorGreen : qgcPal.colorRed |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
} |
|
QGCLabel { |
|
text: QGroundControl.airspaceManager.connectStatus |
|
visible: QGroundControl.airspaceManager.connectStatus != "" |
|
wrapMode: Text.WordWrap |
|
horizontalAlignment: Text.AlignHCenter |
|
width: parent.width * 0.8 |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
} |
|
} |
|
} |
|
//----------------------------------------------------------------- |
|
//-- Login / Registration |
|
Item { |
|
width: _panelWidth |
|
height: loginLabel.height |
|
anchors.margins: ScreenTools.defaultFontPixelWidth |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
QGCLabel { |
|
id: loginLabel |
|
text: qsTr("Login / Registration") |
|
font.family: ScreenTools.demiboldFontFamily |
|
} |
|
} |
|
Rectangle { |
|
height: loginGrid.height + (ScreenTools.defaultFontPixelHeight * 2) |
|
width: _panelWidth |
|
color: qgcPal.windowShade |
|
anchors.margins: ScreenTools.defaultFontPixelWidth |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
GridLayout { |
|
id: loginGrid |
|
columns: 3 |
|
columnSpacing: ScreenTools.defaultFontPixelWidth |
|
rowSpacing: ScreenTools.defaultFontPixelHeight * 0.25 |
|
anchors.centerIn: parent |
|
QGCLabel { text: qsTr("User Name:") } |
|
FactTextField { |
|
fact: _usernameFact |
|
width: _editFieldWidth |
|
enabled: _airMapEnabled |
|
visible: _usernameFact.visible |
|
Layout.fillWidth: true |
|
Layout.minimumWidth: _editFieldWidth |
|
property Fact _usernameFact: QGroundControl.settingsManager.airMapSettings.userName |
|
} |
|
QGCLabel { |
|
text: { |
|
if(!QGroundControl.airspaceManager.connected) |
|
return qsTr("Not Connected") |
|
switch(_authStatus) { |
|
case AirspaceManager.Unknown: |
|
return qsTr("") |
|
case AirspaceManager.Anonymous: |
|
return qsTr("Anonymous") |
|
case AirspaceManager.Autheticated: |
|
return qsTr("Autheticated") |
|
default: |
|
return qsTr("Authetication Error") |
|
} |
|
} |
|
Layout.rowSpan: 2 |
|
Layout.alignment: Qt.AlignVCenter |
|
} |
|
QGCLabel { text: qsTr("Password:") } |
|
FactTextField { |
|
fact: _passwordFact |
|
width: _editFieldWidth |
|
enabled: _airMapEnabled |
|
visible: _passwordFact.visible |
|
echoMode: TextInput.Password |
|
Layout.fillWidth: true |
|
Layout.minimumWidth: _editFieldWidth |
|
property Fact _passwordFact: QGroundControl.settingsManager.airMapSettings.password |
|
} |
|
Item { |
|
width: 1 |
|
height: 1 |
|
} |
|
Item { |
|
width: 1 |
|
height: 1 |
|
Layout.columnSpan: 3 |
|
} |
|
QGCLabel { |
|
text: qsTr("Forgot Your AirMap Password?") |
|
Layout.alignment: Qt.AlignHCenter |
|
Layout.columnSpan: 3 |
|
} |
|
Item { |
|
width: 1 |
|
height: 1 |
|
Layout.columnSpan: 3 |
|
} |
|
QGCButton { |
|
text: qsTr("Register for an AirMap Account") |
|
Layout.alignment: Qt.AlignHCenter |
|
Layout.columnSpan: 3 |
|
enabled: _airMapEnabled |
|
onClicked: { |
|
Qt.openUrlExternally("https://www.airmap.com"); |
|
} |
|
} |
|
} |
|
} |
|
//----------------------------------------------------------------- |
|
//-- Pilot Profile |
|
Item { |
|
//-- Disabled for now |
|
width: _panelWidth |
|
height: profileLabel.height |
|
anchors.margins: ScreenTools.defaultFontPixelWidth |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
visible: false // QGroundControl.settingsManager.appSettings.visible |
|
QGCLabel { |
|
id: profileLabel |
|
text: qsTr("Pilot Profile (WIP)") |
|
font.family: ScreenTools.demiboldFontFamily |
|
} |
|
} |
|
Rectangle { |
|
//-- Disabled for now |
|
height: profileGrid.height + (ScreenTools.defaultFontPixelHeight * 2) |
|
width: _panelWidth |
|
color: qgcPal.windowShade |
|
visible: false // QGroundControl.settingsManager.appSettings.visible |
|
anchors.margins: ScreenTools.defaultFontPixelWidth |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
GridLayout { |
|
id: profileGrid |
|
columns: 2 |
|
columnSpacing: ScreenTools.defaultFontPixelHeight * 2 |
|
rowSpacing: ScreenTools.defaultFontPixelWidth * 0.25 |
|
anchors.centerIn: parent |
|
QGCLabel { text: qsTr("Name:") } |
|
QGCLabel { text: qsTr("John Doe") } |
|
QGCLabel { text: qsTr("User Name:") } |
|
QGCLabel { text: qsTr("joe36") } |
|
QGCLabel { text: qsTr("Email:") } |
|
QGCLabel { text: qsTr("jonh@doe.com") } |
|
QGCLabel { text: qsTr("Phone:") } |
|
QGCLabel { text: qsTr("+1 212 555 1212") } |
|
} |
|
} |
|
//----------------------------------------------------------------- |
|
//-- License (Will this stay here?) |
|
Item { |
|
width: _panelWidth |
|
height: licenseLabel.height |
|
anchors.margins: ScreenTools.defaultFontPixelWidth |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
visible: QGroundControl.settingsManager.airMapSettings.usePersonalApiKey.visible |
|
QGCLabel { |
|
id: licenseLabel |
|
text: qsTr("License") |
|
font.family: ScreenTools.demiboldFontFamily |
|
} |
|
} |
|
Rectangle { |
|
height: licenseGrid.height + (ScreenTools.defaultFontPixelHeight * 2) |
|
width: _panelWidth |
|
color: qgcPal.windowShade |
|
anchors.margins: ScreenTools.defaultFontPixelWidth |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
visible: QGroundControl.settingsManager.airMapSettings.usePersonalApiKey.visible |
|
GridLayout { |
|
id: licenseGrid |
|
columns: 2 |
|
columnSpacing: ScreenTools.defaultFontPixelHeight * 2 |
|
rowSpacing: ScreenTools.defaultFontPixelWidth * 0.25 |
|
anchors.centerIn: parent |
|
FactCheckBox { |
|
id: hasPrivateKey |
|
text: qsTr("Personal API Key") |
|
fact: QGroundControl.settingsManager.airMapSettings.usePersonalApiKey |
|
Layout.columnSpan: 2 |
|
} |
|
Item { |
|
width: 1 |
|
height: 1 |
|
visible: hasPrivateKey.checked |
|
Layout.columnSpan: 2 |
|
} |
|
QGCLabel { text: qsTr("API Key:"); visible: hasPrivateKey.checked; } |
|
FactTextField { fact: QGroundControl.settingsManager.airMapSettings.apiKey; width: _editFieldWidth * 2; visible: hasPrivateKey.checked; Layout.fillWidth: true; Layout.minimumWidth: _editFieldWidth * 2; } |
|
QGCLabel { text: qsTr("Client ID:"); visible: hasPrivateKey.checked; } |
|
FactTextField { fact: QGroundControl.settingsManager.airMapSettings.clientID; width: _editFieldWidth * 2; visible: hasPrivateKey.checked; Layout.fillWidth: true; Layout.minimumWidth: _editFieldWidth * 2; } |
|
} |
|
} |
|
//----------------------------------------------------------------- |
|
//-- Flight List |
|
Item { |
|
width: _panelWidth |
|
height: flightListLabel.height |
|
anchors.margins: ScreenTools.defaultFontPixelWidth |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
visible: QGroundControl.settingsManager.appSettings.visible |
|
QGCLabel { |
|
id: flightListLabel |
|
text: qsTr("Flight List Management") |
|
font.family: ScreenTools.demiboldFontFamily |
|
} |
|
} |
|
Rectangle { |
|
height: flightListButton.height + (ScreenTools.defaultFontPixelHeight * 2) |
|
width: _panelWidth |
|
color: qgcPal.windowShade |
|
anchors.margins: ScreenTools.defaultFontPixelWidth |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
QGCButton { |
|
id: flightListButton |
|
text: qsTr("Show Flight List") |
|
backRadius: 4 |
|
heightFactor: 0.3333 |
|
showBorder: true |
|
width: ScreenTools.defaultFontPixelWidth * 16 |
|
anchors.centerIn: parent |
|
onClicked: { |
|
panelLoader.sourceComponent = flightList |
|
} |
|
} |
|
} |
|
} |
|
} |
|
Loader { |
|
id: panelLoader |
|
anchors.centerIn: parent |
|
} |
|
} |
|
//--------------------------------------------------------------- |
|
//-- Flight List |
|
Component { |
|
id: flightList |
|
Rectangle { |
|
id: flightListRoot |
|
width: _qgcView.width |
|
height: _qgcView.height |
|
color: qgcPal.window |
|
property var _flightList: QGroundControl.airspaceManager.flightPlan.flightList |
|
property real _mapWidth: ScreenTools.defaultFontPixelWidth * 40 |
|
MouseArea { |
|
anchors.fill: parent |
|
hoverEnabled: true |
|
onWheel: { wheel.accepted = true; } |
|
onPressed: { mouse.accepted = true; } |
|
onReleased: { mouse.accepted = true; } |
|
} |
|
//--------------------------------------------------------- |
|
//-- Flight List |
|
RowLayout { |
|
anchors.fill: parent |
|
TableView { |
|
id: tableView |
|
model: _flightList |
|
selectionMode: SelectionMode.SingleSelection |
|
Layout.alignment: Qt.AlignVCenter |
|
Layout.fillWidth: true |
|
Layout.fillHeight: true |
|
onCurrentRowChanged: { |
|
var o = _flightList.get(tableView.currentRow) |
|
if(o) { |
|
flightArea.path = o.boundingBox |
|
map.fitViewportToMapItems() |
|
} |
|
} |
|
TableViewColumn { |
|
title: qsTr("No") |
|
width: ScreenTools.defaultFontPixelWidth * 3 |
|
horizontalAlignment: Text.AlignHCenter |
|
delegate : Text { |
|
horizontalAlignment: Text.AlignHCenter |
|
text: (styleData.row + 1) |
|
color: tableView.currentRow === styleData.row ? qgcPal.colorBlue : "black" |
|
font.family: ScreenTools.fixedFontFamily |
|
font.pixelSize: ScreenTools.smallFontPointSize |
|
} |
|
} |
|
TableViewColumn { |
|
title: qsTr("Created") |
|
width: ScreenTools.defaultFontPixelWidth * 18 |
|
horizontalAlignment: Text.AlignHCenter |
|
delegate : Text { |
|
horizontalAlignment: Text.AlignHCenter |
|
text: { |
|
var o = _flightList.get(styleData.row) |
|
return o ? o.createdTime : "" |
|
} |
|
color: tableView.currentRow === styleData.row ? qgcPal.colorBlue : "black" |
|
font.family: ScreenTools.fixedFontFamily |
|
font.pixelSize: ScreenTools.smallFontPointSize |
|
} |
|
} |
|
TableViewColumn { |
|
title: qsTr("Flight Start") |
|
width: ScreenTools.defaultFontPixelWidth * 18 |
|
horizontalAlignment: Text.AlignHCenter |
|
delegate : Text { |
|
horizontalAlignment: Text.AlignHCenter |
|
text: { |
|
var o = _flightList.get(styleData.row) |
|
return o ? o.startTime : "" |
|
} |
|
color: tableView.currentRow === styleData.row ? qgcPal.colorBlue : "black" |
|
font.family: ScreenTools.fixedFontFamily |
|
font.pixelSize: ScreenTools.smallFontPointSize |
|
} |
|
} |
|
TableViewColumn { |
|
title: qsTr("Flight End") |
|
width: ScreenTools.defaultFontPixelWidth * 18 |
|
horizontalAlignment: Text.AlignHCenter |
|
delegate : Text { |
|
horizontalAlignment: Text.AlignHCenter |
|
text: { |
|
var o = _flightList.get(styleData.row) |
|
return o ? o.endTime : "" |
|
} |
|
color: tableView.currentRow === styleData.row ? qgcPal.colorBlue : "black" |
|
font.family: ScreenTools.fixedFontFamily |
|
font.pixelSize: ScreenTools.smallFontPointSize |
|
} |
|
} |
|
TableViewColumn { |
|
title: qsTr("State") |
|
width: ScreenTools.defaultFontPixelWidth * 8 |
|
horizontalAlignment: Text.AlignHCenter |
|
delegate : Text { |
|
horizontalAlignment: Text.AlignHCenter |
|
text: { |
|
var o = _flightList.get(styleData.row) |
|
return o ? (o.active ? qsTr("Active") : qsTr("Completed")) : qsTr("Unknown") |
|
} |
|
color: tableView.currentRow === styleData.row ? qgcPal.colorBlue : "black" |
|
font.family: ScreenTools.fixedFontFamily |
|
font.pixelSize: ScreenTools.smallFontPointSize |
|
} |
|
} |
|
} |
|
Item { |
|
width: flightListRoot._mapWidth |
|
height: parent.height |
|
Layout.alignment: Qt.AlignTop | Qt.AlignLeft |
|
QGCLabel { |
|
id: loadingLabel |
|
text: qsTr("Loading Flight List") |
|
visible: QGroundControl.airspaceManager.flightPlan.loadingFlightList |
|
anchors.centerIn: parent |
|
} |
|
QGCColoredImage { |
|
id: busyIndicator |
|
height: ScreenTools.defaultFontPixelHeight * 2.5 |
|
width: height |
|
source: "/qmlimages/MapSync.svg" |
|
sourceSize.height: height |
|
fillMode: Image.PreserveAspectFit |
|
mipmap: true |
|
smooth: true |
|
color: qgcPal.colorGreen |
|
visible: loadingLabel.visible |
|
anchors.top: loadingLabel.bottom |
|
anchors.topMargin: ScreenTools.defaultFontPixelHeight |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
RotationAnimation on rotation { |
|
loops: Animation.Infinite |
|
from: 360 |
|
to: 0 |
|
duration: 740 |
|
running: busyIndicator.visible |
|
} |
|
} |
|
Column { |
|
spacing: ScreenTools.defaultFontPixelHeight * 0.75 |
|
visible: !QGroundControl.airspaceManager.flightPlan.loadingFlightList |
|
anchors.top: parent.top |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
QGCLabel { |
|
text: qsTr("Flight List") |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
} |
|
Rectangle { |
|
color: qgcPal.window |
|
border.color: qgcPal.globalTheme === QGCPalette.Dark ? Qt.rgba(1,1,1,0.25) : Qt.rgba(0,0,0,0.25) |
|
border.width: 1 |
|
radius: 4 |
|
width: _mapWidth - (ScreenTools.defaultFontPixelWidth * 2) |
|
height: rangeCol.height + (ScreenTools.defaultFontPixelHeight * 2) |
|
Column { |
|
id: rangeCol |
|
anchors.centerIn: parent |
|
spacing: ScreenTools.defaultFontPixelHeight * 0.5 |
|
QGCLabel { |
|
text: qsTr("Range") |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
} |
|
Row { |
|
spacing: ScreenTools.defaultFontPixelWidth * 2 |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
Column { |
|
spacing: ScreenTools.defaultFontPixelHeight * 0.5 |
|
QGCButton { |
|
text: qsTr("From") |
|
backRadius: 4 |
|
heightFactor: 0.3333 |
|
showBorder: true |
|
width: _buttonWidth * 0.5 |
|
onClicked: fromPicker.visible = true |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
} |
|
QGCLabel { |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
text: fromPicker.selectedDate.toLocaleDateString(Qt.locale()) |
|
} |
|
} |
|
Rectangle { |
|
width: 1 |
|
height: parent.height |
|
color: qgcPal.globalTheme === QGCPalette.Dark ? Qt.rgba(1,1,1,0.25) : Qt.rgba(0,0,0,0.25) |
|
} |
|
Column { |
|
spacing: ScreenTools.defaultFontPixelHeight * 0.5 |
|
QGCButton { |
|
text: qsTr("To") |
|
backRadius: 4 |
|
heightFactor: 0.3333 |
|
showBorder: true |
|
width: _buttonWidth * 0.5 |
|
onClicked: toPicker.visible = true |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
} |
|
QGCLabel { |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
text: toPicker.selectedDate.toLocaleDateString(Qt.locale()) |
|
} |
|
} |
|
} |
|
} |
|
} |
|
QGCButton { |
|
text: qsTr("Refresh") |
|
backRadius: 4 |
|
heightFactor: 0.3333 |
|
showBorder: true |
|
width: _buttonWidth |
|
enabled: true |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
onClicked: { |
|
var start = fromPicker.selectedDate |
|
var end = toPicker.selectedDate |
|
start.setHours(0,0,0,0) |
|
end.setHours(23,59,59,0) |
|
QGroundControl.airspaceManager.flightPlan.loadFlightList(start, end) |
|
} |
|
} |
|
QGCButton { |
|
text: qsTr("End Selected") |
|
backRadius: 4 |
|
heightFactor: 0.3333 |
|
showBorder: true |
|
width: _buttonWidth |
|
enabled: { |
|
var o = _flightList.get(tableView.currentRow) |
|
return o && o.active |
|
} |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
onClicked: { |
|
endFlightDialog.visible = true |
|
} |
|
MessageDialog { |
|
id: endFlightDialog |
|
visible: false |
|
icon: StandardIcon.Warning |
|
standardButtons: StandardButton.Yes | StandardButton.No |
|
title: qsTr("End Flight") |
|
text: qsTr("Confirm ending active flight?") |
|
onYes: { |
|
var o = _flightList.get(tableView.currentRow) |
|
if(o) { |
|
QGroundControl.airspaceManager.flightPlan.endFlight(o.flightID) |
|
} |
|
endFlightDialog.visible = false |
|
} |
|
onNo: { |
|
endFlightDialog.visible = false |
|
} |
|
} |
|
} |
|
QGCButton { |
|
text: qsTr("Close") |
|
backRadius: 4 |
|
heightFactor: 0.3333 |
|
showBorder: true |
|
width: _buttonWidth |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
onClicked: { |
|
panelLoader.sourceComponent = null |
|
} |
|
} |
|
QGCLabel { |
|
text: _flightList.count > 0 ? _flightList.count + qsTr(" Flights Loaded") : qsTr("No Flights Loaded") |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
} |
|
QGCLabel { |
|
text: qsTr("A maximum of 250 flights were loaded") |
|
color: qgcPal.colorOrange |
|
font.pixelSize: ScreenTools.smallFontPointSize |
|
visible: _flightList.count >= 250 |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
} |
|
} |
|
QGCLabel { |
|
text: qsTr("Flight Area ") + (tableView.currentRow + 1) |
|
visible: !QGroundControl.airspaceManager.flightPlan.loadingFlightList && _flightList.count > 0 && tableView.currentRow >= 0 |
|
anchors.bottom: map.top |
|
anchors.bottomMargin: ScreenTools.defaultFontPixelHeight * 0.25 |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
} |
|
Map { |
|
id: map |
|
width: ScreenTools.defaultFontPixelWidth * 40 |
|
height: width * 0.6666 |
|
anchors.bottom: parent.bottom |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
zoomLevel: QGroundControl.flightMapZoom |
|
center: QGroundControl.flightMapPosition |
|
gesture.acceptedGestures: MapGestureArea.PinchGesture |
|
plugin: Plugin { name: "QGroundControl" } |
|
visible: !QGroundControl.airspaceManager.flightPlan.loadingFlightList && _flightList.count > 0 && tableView.currentRow >= 0 |
|
function updateActiveMapType() { |
|
var settings = QGroundControl.settingsManager.flightMapSettings |
|
var fullMapName = settings.mapProvider.enumStringValue + " " + settings.mapType.enumStringValue |
|
for (var i = 0; i < map.supportedMapTypes.length; i++) { |
|
if (fullMapName === map.supportedMapTypes[i].name) { |
|
map.activeMapType = map.supportedMapTypes[i] |
|
return |
|
} |
|
} |
|
} |
|
MapPolygon { |
|
id: flightArea |
|
color: Qt.rgba(1,0,0,0.2) |
|
border.color: Qt.rgba(1,1,1,0.65) |
|
} |
|
Component.onCompleted: { |
|
updateActiveMapType() |
|
} |
|
Connections { |
|
target: QGroundControl.settingsManager.flightMapSettings.mapType |
|
onRawValueChanged: updateActiveMapType() |
|
} |
|
|
|
Connections { |
|
target: QGroundControl.settingsManager.flightMapSettings.mapProvider |
|
onRawValueChanged: updateActiveMapType() |
|
} |
|
|
|
} |
|
Calendar { |
|
id: fromPicker |
|
anchors.centerIn: parent |
|
visible: false; |
|
onClicked: { |
|
visible = false; |
|
} |
|
} |
|
Calendar { |
|
id: toPicker |
|
anchors.centerIn: parent |
|
visible: false; |
|
minimumDate: fromPicker.selectedDate |
|
onClicked: { |
|
visible = false; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
}
|
|
|