Commit 50d02ed7 authored by DonLakeFlyer's avatar DonLakeFlyer

parent f3404af4
......@@ -21,26 +21,28 @@ import QGroundControl.Palette 1.0
//-------------------------------------------------------------------------
//-- Message Indicator
Item {
id: _root
width: height
anchors.top: parent.top
anchors.bottom: parent.bottom
property bool showIndicator: true
property bool _isMessageImportant: activeVehicle ? !activeVehicle.messageTypeNormal && !activeVehicle.messageTypeNone : false
property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle
property bool _isMessageImportant: _activeVehicle ? !_activeVehicle.messageTypeNormal && !_activeVehicle.messageTypeNone : false
function getMessageColor() {
if (activeVehicle) {
if (activeVehicle.messageTypeNone)
if (_activeVehicle) {
if (_activeVehicle.messageTypeNone)
return qgcPal.colorGrey
if (activeVehicle.messageTypeNormal)
if (_activeVehicle.messageTypeNormal)
return qgcPal.colorBlue;
if (activeVehicle.messageTypeWarning)
if (_activeVehicle.messageTypeWarning)
return qgcPal.colorOrange;
if (activeVehicle.messageTypeError)
if (_activeVehicle.messageTypeError)
return qgcPal.colorRed;
// Cannot be so make make it obnoxious to show error
console.log("Invalid vehicle message type")
console.warn("MessageIndicator.qml:getMessageColor Invalid vehicle message type", _activeVehicle.messageTypeNone)
return "purple";
}
//-- It can only get here when closing (vehicle gone while window active)
......@@ -54,7 +56,7 @@ Item {
sourceSize.height: height
fillMode: Image.PreserveAspectFit
cache: false
visible: activeVehicle && activeVehicle.messageCount > 0 && _isMessageImportant
visible: _activeVehicle && _activeVehicle.messageCount > 0 && _isMessageImportant
}
QGCColoredImage {
......@@ -68,6 +70,89 @@ Item {
MouseArea {
anchors.fill: parent
onClicked: mainWindow.showVehicleMessages()
onClicked: mainWindow.showIndicatorPopup(_root, vehicleMessagesPopup)
}
Component {
id: vehicleMessagesPopup
Rectangle {
width: mainWindow.width * 0.666
height: mainWindow.height * 0.666
radius: ScreenTools.defaultFontPixelHeight / 2
color: qgcPal.window
border.color: qgcPal.text
function formatMessage(message) {
message = message.replace(new RegExp("<#E>", "g"), "color: " + qgcPal.warningText + "; font: " + (ScreenTools.defaultFontPointSize.toFixed(0) - 1) + "pt monospace;");
message = message.replace(new RegExp("<#I>", "g"), "color: " + qgcPal.warningText + "; font: " + (ScreenTools.defaultFontPointSize.toFixed(0) - 1) + "pt monospace;");
message = message.replace(new RegExp("<#N>", "g"), "color: " + qgcPal.text + "; font: " + (ScreenTools.defaultFontPointSize.toFixed(0) - 1) + "pt monospace;");
return message;
}
Component.onCompleted: {
messageText.text = formatMessage(_activeVehicle.formattedMessages)
//-- Hack to scroll to last message
for (var i = 0; i < _activeVehicle.messageCount; i++)
messageFlick.flick(0,-5000)
_activeVehicle.resetMessages()
}
Connections {
target: _activeVehicle
onNewFormattedMessage :{
messageText.append(formatMessage(formattedMessage))
//-- Hack to scroll down
messageFlick.flick(0,-500)
}
}
QGCLabel {
anchors.centerIn: parent
text: qsTr("No Messages")
visible: messageText.length === 0
}
//-- Clear Messages
QGCColoredImage {
anchors.bottom: parent.bottom
anchors.right: parent.right
anchors.margins: ScreenTools.defaultFontPixelHeight * 0.5
height: ScreenTools.isMobile ? ScreenTools.defaultFontPixelHeight * 1.5 : ScreenTools.defaultFontPixelHeight
width: height
sourceSize.height: height
source: "/res/TrashDelete.svg"
fillMode: Image.PreserveAspectFit
mipmap: true
smooth: true
color: qgcPal.text
visible: messageText.length !== 0
MouseArea {
anchors.fill: parent
onClicked: {
if (_activeVehicle) {
_activeVehicle.clearMessages()
mainWindow.hideIndicatorPopup()
}
}
}
}
QGCFlickable {
id: messageFlick
anchors.margins: ScreenTools.defaultFontPixelHeight
anchors.fill: parent
contentHeight: messageText.height
contentWidth: messageText.width
pixelAligned: true
TextEdit {
id: messageText
readOnly: true
textFormat: TextEdit.RichText
color: qgcPal.text
}
}
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment