diff --git a/src/Airmap/AirspaceControl.qml b/src/Airmap/AirspaceControl.qml
index 0447aa6e1a97f886cc8ce66f184c95c3e6dbce71..26c5fc843b8b32fadfe2a21b17269a4ae6d1dced 100644
--- a/src/Airmap/AirspaceControl.qml
+++ b/src/Airmap/AirspaceControl.qml
@@ -21,6 +21,7 @@ Item {
height: _colapsed ? colapsedRect.height : expandedRect.height
property bool showColapse: true
+ property bool planView: true
property color _airspaceColor: _validAdvisories ? getAispaceColor(QGroundControl.airspaceManager.advisories.airspaceColor) : _colorGray
property bool _validRules: QGroundControl.airspaceManager.ruleSets.valid
@@ -360,14 +361,14 @@ Item {
}
//-- Footer
QGCButton {
- text: qsTr("File Flight Plan")
+ text: planView ? qsTr("File Flight Plan") : qsTr("Flight Brief")
backRadius: 4
heightFactor: 0.3333
showBorder: true
width: ScreenTools.defaultFontPixelWidth * 16
anchors.horizontalCenter: parent.horizontalCenter
onClicked: {
- rootLoader.sourceComponent = flightDetails
+ rootLoader.sourceComponent = planView ? flightDetails : flightBrief
mainWindow.disableToolbar()
}
}
@@ -564,8 +565,8 @@ Item {
width: mainWindow.width
height: mainWindow.height
color: Qt.rgba(0,0,0,0.1)
- property real flickHeight: ScreenTools.defaultFontPixelHeight * 22
- property real flickWidth: ScreenTools.defaultFontPixelWidth * 40
+ property real baseHeight: ScreenTools.defaultFontPixelHeight * 22
+ property real baseWidth: ScreenTools.defaultFontPixelWidth * 40
Component.onCompleted: {
_dirty = false
mainWindow.disableToolbar()
@@ -607,117 +608,9 @@ Item {
anchors.centerIn: parent
//---------------------------------------------------------
//-- Flight Details
- Column {
- spacing: ScreenTools.defaultFontPixelHeight * 0.25
- Rectangle {
- color: qgcPal.windowShade
- anchors.right: parent.right
- anchors.left: parent.left
- height: detailsLabel.height + ScreenTools.defaultFontPixelHeight
- QGCLabel {
- id: detailsLabel
- text: qsTr("Flight Details")
- font.pointSize: ScreenTools.mediumFontPointSize
- font.family: ScreenTools.demiboldFontFamily
- anchors.centerIn: parent
- }
- }
- Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 0.5; }
- Flickable {
- clip: true
- width: flightDetailsRoot.flickWidth
- height: flightDetailsRoot.flickHeight
- contentHeight: flContextCol.height
- flickableDirection: Flickable.VerticalFlick
- Column {
- id: flContextCol
- spacing: ScreenTools.defaultFontPixelHeight * 0.5
- anchors.right: parent.right
- anchors.left: parent.left
- QGCLabel {
- text: qsTr("Flight Date & Time")
- }
- Rectangle {
- id: dateRect
- color: qgcPal.windowShade
- anchors.right: parent.right
- anchors.left: parent.left
- height: datePickerCol.height + (ScreenTools.defaultFontPixelHeight * 2)
- Column {
- id: datePickerCol
- spacing: ScreenTools.defaultFontPixelHeight * 0.5
- anchors.margins: ScreenTools.defaultFontPixelWidth
- anchors.right: parent.right
- anchors.left: parent.left
- anchors.verticalCenter: parent.verticalCenter
- QGCButton {
- text: {
- var today = new Date();
- if(datePicker.selectedDate.setHours(0,0,0,0) === today.setHours(0,0,0,0)) {
- return qsTr("Today")
- } else {
- return datePicker.selectedDate.toLocaleDateString(Qt.locale())
- }
- }
- iconSource: "qrc:/airmap/expand.svg"
- anchors.right: parent.right
- anchors.left: parent.left
- onClicked: {
- _dirty = true
- datePicker.visible = true
- }
- }
- Item {
- anchors.right: parent.right
- anchors.left: parent.left
- height: timeSlider.height
- QGCLabel {
- id: timeLabel
- text: ('00' + hour).slice(-2) + ":" + ('00' + minute).slice(-2)
- width: ScreenTools.defaultFontPixelWidth * 5
- anchors.left: parent.left
- anchors.verticalCenter: parent.verticalCenter
- property int hour: Math.floor(timeSlider.value * 0.25)
- property int minute: (timeSlider.value * 15) % 60
- }
- QGCSlider {
- id: timeSlider
- width: parent.width - timeLabel.width - ScreenTools.defaultFontPixelWidth
- stepSize: 1
- minimumValue: 0
- maximumValue: 95 // 96 blocks of 15 minutes in 24 hours
- anchors.right: parent.right
- anchors.verticalCenter: parent.verticalCenter
- onValueChanged: {
- _dirty = true
- }
- Component.onCompleted: {
- var today = new Date()
- var val = (((today.getHours() * 60) + today.getMinutes()) * (96/1440)) + 1
- if(val > 95) val = 95
- value = Math.ceil(val)
- }
- }
- }
- }
- }
- Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 0.25; }
- QGCLabel {
- text: qsTr("Flight Context")
- visible: QGroundControl.airspaceManager.flightPlan.briefFeatures.count > 0
- }
- Repeater {
- model: QGroundControl.airspaceManager.flightPlan.briefFeatures
- visible: QGroundControl.airspaceManager.flightPlan.briefFeatures.count > 0
- delegate: FlightFeature {
- feature: object
- visible: object && object.type !== AirspaceRuleFeature.Unknown && object.description !== "" && object.name !== ""
- anchors.right: parent.right
- anchors.left: parent.left
- }
- }
- }
- }
+ FlightDetails {
+ baseHeight: flightDetailsRoot.baseHeight
+ baseWidth: flightDetailsRoot.baseWidth
}
//---------------------------------------------------------
//-- Divider
@@ -730,192 +623,67 @@ Item {
}
//---------------------------------------------------------
//-- Flight Brief
- Column {
- spacing: ScreenTools.defaultFontPixelHeight * 0.25
- Rectangle {
- color: qgcPal.windowShade
- anchors.right: parent.right
- anchors.left: parent.left
- height: briefLabel.height + ScreenTools.defaultFontPixelHeight
- QGCLabel {
- id: briefLabel
- text: qsTr("Flight Brief")
- font.pointSize: ScreenTools.mediumFontPointSize
- font.family: ScreenTools.demiboldFontFamily
- anchors.centerIn: parent
- }
- }
- Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 0.5; }
- Flickable {
- clip: true
- width: flightDetailsRoot.flickWidth
- height: flightDetailsRoot.flickHeight - buttonRow.height - ScreenTools.defaultFontPixelHeight
- contentHeight: briefCol.height
- flickableDirection: Flickable.VerticalFlick
- Column {
- id: briefCol
- spacing: ScreenTools.defaultFontPixelHeight * 0.5
- anchors.right: parent.right
- anchors.left: parent.left
- QGCLabel {
- text: qsTr("Authorizations")
- }
- Rectangle {
- color: qgcPal.windowShade
- anchors.right: parent.right
- anchors.left: parent.left
- height: authCol.height + ScreenTools.defaultFontPixelHeight
- Column {
- id: authCol
- spacing: ScreenTools.defaultFontPixelHeight * 0.5
- anchors.margins: ScreenTools.defaultFontPixelWidth
- anchors.right: parent.right
- anchors.left: parent.left
- anchors.verticalCenter: parent.verticalCenter
- QGCLabel {
- text: qsTr("Federal Aviation Administration")
- visible: _flightPermit !== AirspaceFlightPlanProvider.PermitNone
- }
- QGCLabel {
- text: qsTr("Automatic authorization to fly in controlled airspace")
- visible: _flightPermit !== AirspaceFlightPlanProvider.PermitNone
- font.pointSize: ScreenTools.smallFontPointSize
- }
- Rectangle {
- anchors.right: parent.right
- anchors.left: parent.left
- height: label.height + (ScreenTools.defaultFontPixelHeight * 0.5)
- color: {
- if(_flightPermit == AirspaceFlightPlanProvider.PermitPending)
- return _colorOrange
- if(_flightPermit == AirspaceFlightPlanProvider.PermitAccepted)
- return _colorGreen
- if(_flightPermit == AirspaceFlightPlanProvider.PermitRejected)
- return _colorRed
- return _colorGray
- }
- QGCLabel {
- id: label
- color: _colorWhite
- text: {
- if(_flightPermit === AirspaceFlightPlanProvider.PermitPending)
- return qsTr("Authorization Pending")
- if(_flightPermit === AirspaceFlightPlanProvider.PermitAccepted)
- return qsTr("Authorization Accepted")
- if(_flightPermit === AirspaceFlightPlanProvider.PermitRejected)
- return qsTr("Authorization Rejected")
- return qsTr("Authorization Unknown")
- }
- anchors.centerIn: parent
- }
- }
- }
- }
- Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 0.25; }
- QGCLabel {
- text: qsTr("Rules & Compliance")
- visible: hasBriefRules()
- }
- ExclusiveGroup { id: ruleGroup }
- ComplianceRules {
- text: qsTr("Rules you may be violating")
- rules: violationRules
- visible: violationRules && violationRules.count
- color: _colorRed
- exclusiveGroup: ruleGroup
- anchors.right: parent.right
- anchors.left: parent.left
- property var violationRules: QGroundControl.airspaceManager.flightPlan.rulesViolation
- }
- ComplianceRules {
- text: qsTr("Rules needing more information")
- rules: infoRules
- color: _colorOrange
- visible: infoRules && infoRules.count
- exclusiveGroup: ruleGroup
- anchors.right: parent.right
- anchors.left: parent.left
- property var infoRules: QGroundControl.airspaceManager.flightPlan.rulesInfo
- }
- ComplianceRules {
- text: qsTr("Rules you should review")
- rules: reviewRules
- color: _colorYellow
- visible: reviewRules && reviewRules.count
- exclusiveGroup: ruleGroup
- anchors.right: parent.right
- anchors.left: parent.left
- property var reviewRules: QGroundControl.airspaceManager.flightPlan.rulesReview
- }
- ComplianceRules {
- text: qsTr("Rules you are following")
- rules: followRules
- color: _colorGreen
- visible: followRules && followRules.count
- exclusiveGroup: ruleGroup
- anchors.right: parent.right
- anchors.left: parent.left
- property var followRules: QGroundControl.airspaceManager.flightPlan.rulesFollowing
- }
- }
- }
- //-------------------------------------------------------------
- //-- File Flight Plan or Close
- Item { width: 1; height: ScreenTools.defaultFontPixelHeight; }
- Row {
- id: buttonRow
- spacing: ScreenTools.defaultFontPixelWidth
- anchors.horizontalCenter: parent.horizontalCenter
- QGCButton {
- text: qsTr("Update Plan")
- backRadius: 4
- heightFactor: 0.3333
- showBorder: true
- enabled: _flightPermit !== AirspaceFlightPlanProvider.PermitNone && _dirty
- width: ScreenTools.defaultFontPixelWidth * 12
- onClicked: {
- //-- TODO: Update Plan
- mainWindow.enableToolbar()
- rootLoader.sourceComponent = null
- }
- }
- QGCButton {
- text: qsTr("Submit Plan")
- backRadius: 4
- heightFactor: 0.3333
- showBorder: true
- enabled: _flightPermit !== AirspaceFlightPlanProvider.PermitNone
- width: ScreenTools.defaultFontPixelWidth * 12
- onClicked: {
- //-- TODO: File Plan
- mainWindow.enableToolbar()
- rootLoader.sourceComponent = null
- }
- }
- QGCButton {
- text: qsTr("Close")
- backRadius: 4
- heightFactor: 0.3333
- showBorder: true
- width: ScreenTools.defaultFontPixelWidth * 12
- onClicked: {
- mainWindow.enableToolbar()
- rootLoader.sourceComponent = null
- }
- }
- }
+ FlightBrief {
+ baseHeight: flightDetailsRoot.baseHeight
+ baseWidth: flightDetailsRoot.baseWidth
}
}
}
- Calendar {
- id: datePicker
- anchors.centerIn: parent
- visible: false;
- minimumDate: {
- return new Date()
- }
- onClicked: {
- visible = false;
+ }
+ }
+ //---------------------------------------------------------------
+ //-- Flight Brief
+ Component {
+ id: flightBrief
+ Rectangle {
+ id: flightBriefRoot
+ width: mainWindow.width
+ height: mainWindow.height
+ color: Qt.rgba(0,0,0,0.1)
+ property real baseHeight: ScreenTools.defaultFontPixelHeight * 22
+ property real baseWidth: ScreenTools.defaultFontPixelWidth * 40
+ Component.onCompleted: {
+ _dirty = false
+ mainWindow.disableToolbar()
+ }
+ MouseArea {
+ anchors.fill: parent
+ hoverEnabled: true
+ onWheel: { wheel.accepted = true; }
+ onPressed: { mouse.accepted = true; }
+ onReleased: { mouse.accepted = true; }
+ }
+ Rectangle {
+ id: flightBriefShadow
+ anchors.fill: flightBriefRect
+ radius: flightBriefRect.radius
+ color: qgcPal.window
+ visible: false
+ }
+ DropShadow {
+ anchors.fill: flightBriefShadow
+ visible: flightBriefRect.visible
+ horizontalOffset: 4
+ verticalOffset: 4
+ radius: 32.0
+ samples: 65
+ color: Qt.rgba(0,0,0,0.75)
+ source: flightBriefShadow
+ }
+ Rectangle {
+ id: flightBriefRect
+ color: qgcPal.window
+ width: flightBriedItem.width + (ScreenTools.defaultFontPixelWidth * 4)
+ height: flightBriedItem.height + (ScreenTools.defaultFontPixelHeight * 2)
+ radius: ScreenTools.defaultFontPixelWidth
+ anchors.centerIn: parent
+ //---------------------------------------------------------
+ //-- Flight Brief
+ FlightBrief {
+ id: flightBriedItem
+ baseHeight: flightBriefRoot.baseHeight
+ baseWidth: flightBriefRoot.baseWidth
+ anchors.centerIn: parent
}
}
}
diff --git a/src/Airmap/FlightBrief.qml b/src/Airmap/FlightBrief.qml
new file mode 100644
index 0000000000000000000000000000000000000000..6ae37f2350c7dfe826d802e8c45b0d34d409e7a2
--- /dev/null
+++ b/src/Airmap/FlightBrief.qml
@@ -0,0 +1,199 @@
+import QtQuick 2.3
+import QtQuick.Controls 1.2
+import QtQuick.Controls.Styles 1.4
+import QtQuick.Dialogs 1.2
+import QtQml 2.2
+
+import QGroundControl 1.0
+import QGroundControl.Airmap 1.0
+import QGroundControl.Airspace 1.0
+import QGroundControl.Controls 1.0
+import QGroundControl.Palette 1.0
+import QGroundControl.ScreenTools 1.0
+import QGroundControl.SettingsManager 1.0
+
+Item {
+ id: _root
+ implicitHeight: briefRootCol.height
+ implicitWidth: briefRootCol.width
+ property real baseHeight: ScreenTools.defaultFontPixelHeight * 22
+ property real baseWidth: ScreenTools.defaultFontPixelWidth * 40
+ Column {
+ id: briefRootCol
+ spacing: ScreenTools.defaultFontPixelHeight * 0.25
+ Rectangle {
+ color: qgcPal.windowShade
+ anchors.right: parent.right
+ anchors.left: parent.left
+ height: briefLabel.height + ScreenTools.defaultFontPixelHeight
+ QGCLabel {
+ id: briefLabel
+ text: qsTr("Flight Brief")
+ font.pointSize: ScreenTools.mediumFontPointSize
+ font.family: ScreenTools.demiboldFontFamily
+ anchors.centerIn: parent
+ }
+ }
+ Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 0.5; }
+ Flickable {
+ clip: true
+ width: baseWidth
+ height: baseHeight - buttonRow.height - ScreenTools.defaultFontPixelHeight
+ contentHeight: briefCol.height
+ flickableDirection: Flickable.VerticalFlick
+ Column {
+ id: briefCol
+ spacing: ScreenTools.defaultFontPixelHeight * 0.5
+ anchors.right: parent.right
+ anchors.left: parent.left
+ QGCLabel {
+ text: qsTr("Authorizations")
+ }
+ Rectangle {
+ color: qgcPal.windowShade
+ anchors.right: parent.right
+ anchors.left: parent.left
+ height: authCol.height + ScreenTools.defaultFontPixelHeight
+ Column {
+ id: authCol
+ spacing: ScreenTools.defaultFontPixelHeight * 0.5
+ anchors.margins: ScreenTools.defaultFontPixelWidth
+ anchors.right: parent.right
+ anchors.left: parent.left
+ anchors.verticalCenter: parent.verticalCenter
+ QGCLabel {
+ text: qsTr("Federal Aviation Administration")
+ visible: _flightPermit !== AirspaceFlightPlanProvider.PermitNone
+ }
+ QGCLabel {
+ text: qsTr("Automatic authorization to fly in controlled airspace")
+ visible: _flightPermit !== AirspaceFlightPlanProvider.PermitNone
+ font.pointSize: ScreenTools.smallFontPointSize
+ }
+ Rectangle {
+ anchors.right: parent.right
+ anchors.left: parent.left
+ height: label.height + (ScreenTools.defaultFontPixelHeight * 0.5)
+ color: {
+ if(_flightPermit == AirspaceFlightPlanProvider.PermitPending)
+ return _colorOrange
+ if(_flightPermit == AirspaceFlightPlanProvider.PermitAccepted)
+ return _colorGreen
+ if(_flightPermit == AirspaceFlightPlanProvider.PermitRejected)
+ return _colorRed
+ return _colorGray
+ }
+ QGCLabel {
+ id: label
+ color: _colorWhite
+ text: {
+ if(_flightPermit === AirspaceFlightPlanProvider.PermitPending)
+ return qsTr("Authorization Pending")
+ if(_flightPermit === AirspaceFlightPlanProvider.PermitAccepted)
+ return qsTr("Authorization Accepted")
+ if(_flightPermit === AirspaceFlightPlanProvider.PermitRejected)
+ return qsTr("Authorization Rejected")
+ return qsTr("Authorization Unknown")
+ }
+ anchors.centerIn: parent
+ }
+ }
+ }
+ }
+ Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 0.25; }
+ QGCLabel {
+ text: qsTr("Rules & Compliance")
+ visible: hasBriefRules()
+ }
+ ExclusiveGroup { id: ruleGroup }
+ ComplianceRules {
+ text: qsTr("Rules you may be violating")
+ rules: violationRules
+ visible: violationRules && violationRules.count
+ color: _colorRed
+ exclusiveGroup: ruleGroup
+ anchors.right: parent.right
+ anchors.left: parent.left
+ property var violationRules: QGroundControl.airspaceManager.flightPlan.rulesViolation
+ }
+ ComplianceRules {
+ text: qsTr("Rules needing more information")
+ rules: infoRules
+ color: _colorOrange
+ visible: infoRules && infoRules.count
+ exclusiveGroup: ruleGroup
+ anchors.right: parent.right
+ anchors.left: parent.left
+ property var infoRules: QGroundControl.airspaceManager.flightPlan.rulesInfo
+ }
+ ComplianceRules {
+ text: qsTr("Rules you should review")
+ rules: reviewRules
+ color: _colorYellow
+ visible: reviewRules && reviewRules.count
+ exclusiveGroup: ruleGroup
+ anchors.right: parent.right
+ anchors.left: parent.left
+ property var reviewRules: QGroundControl.airspaceManager.flightPlan.rulesReview
+ }
+ ComplianceRules {
+ text: qsTr("Rules you are following")
+ rules: followRules
+ color: _colorGreen
+ visible: followRules && followRules.count
+ exclusiveGroup: ruleGroup
+ anchors.right: parent.right
+ anchors.left: parent.left
+ property var followRules: QGroundControl.airspaceManager.flightPlan.rulesFollowing
+ }
+ }
+ }
+ //-------------------------------------------------------------
+ //-- File Flight Plan or Close
+ Item { width: 1; height: ScreenTools.defaultFontPixelHeight; }
+ Row {
+ id: buttonRow
+ spacing: ScreenTools.defaultFontPixelWidth
+ anchors.horizontalCenter: parent.horizontalCenter
+ QGCButton {
+ text: qsTr("Update Plan")
+ backRadius: 4
+ heightFactor: 0.3333
+ showBorder: true
+ enabled: _flightPermit !== AirspaceFlightPlanProvider.PermitNone && _dirty
+ visible: planView
+ width: ScreenTools.defaultFontPixelWidth * 12
+ onClicked: {
+ //-- TODO: Update Plan
+ mainWindow.enableToolbar()
+ rootLoader.sourceComponent = null
+ }
+ }
+ QGCButton {
+ text: qsTr("Submit Plan")
+ backRadius: 4
+ heightFactor: 0.3333
+ showBorder: true
+ enabled: _flightPermit !== AirspaceFlightPlanProvider.PermitNone
+ width: ScreenTools.defaultFontPixelWidth * 12
+ visible: planView
+ onClicked: {
+ //-- TODO: File Plan
+ mainWindow.enableToolbar()
+ rootLoader.sourceComponent = null
+ }
+ }
+ QGCButton {
+ text: qsTr("Close")
+ backRadius: 4
+ heightFactor: 0.3333
+ showBorder: true
+ width: ScreenTools.defaultFontPixelWidth * 12
+ onClicked: {
+ mainWindow.enableToolbar()
+ rootLoader.sourceComponent = null
+ }
+ }
+ }
+ }
+}
diff --git a/src/Airmap/FlightDetails.qml b/src/Airmap/FlightDetails.qml
new file mode 100644
index 0000000000000000000000000000000000000000..fda70b3af8b68de507ebfd15415f68f4272d33c2
--- /dev/null
+++ b/src/Airmap/FlightDetails.qml
@@ -0,0 +1,145 @@
+import QtQuick 2.3
+import QtQuick.Controls 1.2
+import QtQuick.Controls.Styles 1.4
+import QtQuick.Dialogs 1.2
+import QtQml 2.2
+
+import QGroundControl 1.0
+import QGroundControl.Airmap 1.0
+import QGroundControl.Airspace 1.0
+import QGroundControl.Controls 1.0
+import QGroundControl.Palette 1.0
+import QGroundControl.ScreenTools 1.0
+import QGroundControl.SettingsManager 1.0
+
+Item {
+ id: _root
+ implicitHeight: detailCol.height
+ implicitWidth: detailCol.width
+ property real baseHeight: ScreenTools.defaultFontPixelHeight * 22
+ property real baseWidth: ScreenTools.defaultFontPixelWidth * 40
+ Column {
+ id: detailCol
+ spacing: ScreenTools.defaultFontPixelHeight * 0.25
+ Rectangle {
+ color: qgcPal.windowShade
+ anchors.right: parent.right
+ anchors.left: parent.left
+ height: detailsLabel.height + ScreenTools.defaultFontPixelHeight
+ QGCLabel {
+ id: detailsLabel
+ text: qsTr("Flight Details")
+ font.pointSize: ScreenTools.mediumFontPointSize
+ font.family: ScreenTools.demiboldFontFamily
+ anchors.centerIn: parent
+ }
+ }
+ Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 0.5; }
+ Flickable {
+ clip: true
+ width: baseWidth
+ height: baseHeight
+ contentHeight: flContextCol.height
+ flickableDirection: Flickable.VerticalFlick
+ Column {
+ id: flContextCol
+ spacing: ScreenTools.defaultFontPixelHeight * 0.5
+ anchors.right: parent.right
+ anchors.left: parent.left
+ QGCLabel {
+ text: qsTr("Flight Date & Time")
+ }
+ Rectangle {
+ id: dateRect
+ color: qgcPal.windowShade
+ anchors.right: parent.right
+ anchors.left: parent.left
+ height: datePickerCol.height + (ScreenTools.defaultFontPixelHeight * 2)
+ Column {
+ id: datePickerCol
+ spacing: ScreenTools.defaultFontPixelHeight * 0.5
+ anchors.margins: ScreenTools.defaultFontPixelWidth
+ anchors.right: parent.right
+ anchors.left: parent.left
+ anchors.verticalCenter: parent.verticalCenter
+ QGCButton {
+ text: {
+ var today = new Date();
+ if(datePicker.selectedDate.setHours(0,0,0,0) === today.setHours(0,0,0,0)) {
+ return qsTr("Today")
+ } else {
+ return datePicker.selectedDate.toLocaleDateString(Qt.locale())
+ }
+ }
+ iconSource: "qrc:/airmap/expand.svg"
+ anchors.right: parent.right
+ anchors.left: parent.left
+ onClicked: {
+ _dirty = true
+ datePicker.visible = true
+ }
+ }
+ Item {
+ anchors.right: parent.right
+ anchors.left: parent.left
+ height: timeSlider.height
+ QGCLabel {
+ id: timeLabel
+ text: ('00' + hour).slice(-2) + ":" + ('00' + minute).slice(-2)
+ width: ScreenTools.defaultFontPixelWidth * 5
+ anchors.left: parent.left
+ anchors.verticalCenter: parent.verticalCenter
+ property int hour: Math.floor(timeSlider.value * 0.25)
+ property int minute: (timeSlider.value * 15) % 60
+ }
+ QGCSlider {
+ id: timeSlider
+ width: parent.width - timeLabel.width - ScreenTools.defaultFontPixelWidth
+ stepSize: 1
+ minimumValue: 0
+ maximumValue: 95 // 96 blocks of 15 minutes in 24 hours
+ anchors.right: parent.right
+ anchors.verticalCenter: parent.verticalCenter
+ onValueChanged: {
+ _dirty = true
+ }
+ Component.onCompleted: {
+ var today = new Date()
+ var val = (((today.getHours() * 60) + today.getMinutes()) * (96/1440)) + 1
+ if(val > 95) val = 95
+ value = Math.ceil(val)
+ }
+ }
+ }
+ }
+ }
+ Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 0.25; }
+ QGCLabel {
+ text: qsTr("Flight Context")
+ visible: QGroundControl.airspaceManager.flightPlan.briefFeatures.count > 0
+ }
+ Repeater {
+ model: QGroundControl.airspaceManager.flightPlan.briefFeatures
+ visible: QGroundControl.airspaceManager.flightPlan.briefFeatures.count > 0
+ delegate: FlightFeature {
+ feature: object
+ visible: object && object.type !== AirspaceRuleFeature.Unknown && object.description !== "" && object.name !== ""
+ anchors.right: parent.right
+ anchors.left: parent.left
+ }
+ }
+ }
+ }
+ }
+ Calendar {
+ id: datePicker
+ anchors.centerIn: parent
+ visible: false;
+ minimumDate: {
+ return new Date()
+ }
+ onClicked: {
+ visible = false;
+ }
+ }
+}
diff --git a/src/Airmap/QGroundControl.Airmap.qmldir b/src/Airmap/QGroundControl.Airmap.qmldir
index caf88024f82ec4fcba8bba308692206a474a06b4..b125667d4406e78ab8a8d8045cc8e5f1c285f215 100644
--- a/src/Airmap/QGroundControl.Airmap.qmldir
+++ b/src/Airmap/QGroundControl.Airmap.qmldir
@@ -6,3 +6,5 @@ AirspaceWeather 1.0 AirspaceWeather.qml
ComplianceRules 1.0 ComplianceRules.qml
FlightFeature 1.0 FlightFeature.qml
RuleSelector 1.0 RuleSelector.qml
+FlightBrief 1.0 FlightBrief.qml
+FlightDetails 1.0 FlightDetails.qml
\ No newline at end of file
diff --git a/src/Airmap/airmap.qrc b/src/Airmap/airmap.qrc
index a4f8d249c5b3419e335b75e17d26c0a7ef8d153f..975719d676935a0a7241436ac1fe014e26f8cb85 100644
--- a/src/Airmap/airmap.qrc
+++ b/src/Airmap/airmap.qrc
@@ -5,6 +5,8 @@
AirspaceRegulation.qml
AirspaceWeather.qml
ComplianceRules.qml
+ FlightBrief.qml
+ FlightDetails.qml
FlightFeature.qml
QGroundControl.Airmap.qmldir
RuleSelector.qml
diff --git a/src/FlightDisplay/FlightDisplayViewWidgets.qml b/src/FlightDisplay/FlightDisplayViewWidgets.qml
index 0a58861a86b36a11a855a6bfa98ee0cfe94c9eae..533c768771d2a4290d11a53151660fc7635c2f0a 100644
--- a/src/FlightDisplay/FlightDisplayViewWidgets.qml
+++ b/src/FlightDisplay/FlightDisplayViewWidgets.qml
@@ -139,6 +139,7 @@ Item {
AirspaceControl {
id: airspaceControl
width: getPreferredInstrumentWidth()
+ planView: false
visible: _airspaceEnabled
anchors.margins: ScreenTools.defaultFontPixelHeight * 0.5
}
diff --git a/src/PlanView/PlanView.qml b/src/PlanView/PlanView.qml
index 0d2c75b216f7ef8409907c2805e9ff28a169da9d..3c0c3f8ab57855b94ff4a916935d062c696c59d3 100644
--- a/src/PlanView/PlanView.qml
+++ b/src/PlanView/PlanView.qml
@@ -571,6 +571,7 @@ QGCView {
id: airspaceControl
width: parent.width
visible: _airspaceEnabled
+ planView: true
showColapse: true
}
//-------------------------------------------------------