diff --git a/qgcresources.qrc b/qgcresources.qrc
index 36f728b9b0e779a8d633cf4da3bef136e48dd5b6..3dba5b6195ce657b3115e59a4c9e179bde94bd07 100644
--- a/qgcresources.qrc
+++ b/qgcresources.qrc
@@ -126,8 +126,6 @@
src/FlightMap/Images/MapSyncChanged.svg
src/FlightMap/Images/MapType.svg
src/FlightMap/Images/MapTypeBlack.svg
- src/FlightMap/Images/TrashDelete.svg
- src/FlightMap/Images/TrashDeleteBlack.svg
src/ui/toolbar/Images/Armed.svg
src/ui/toolbar/Images/Battery.svg
src/ui/toolbar/Images/Connect.svg
@@ -174,6 +172,7 @@
resources/QGroundControlConnect.svg
resources/SplashScreen.png
resources/Stop.svg
+ resources/TrashDelete.svg
resources/XDelete.svg
resources/XDeleteBlack.svg
diff --git a/resources/TrashDelete.svg b/resources/TrashDelete.svg
new file mode 100644
index 0000000000000000000000000000000000000000..cb4c5a3d7a24e8b7eb722bdd3730bfa4a5d70704
--- /dev/null
+++ b/resources/TrashDelete.svg
@@ -0,0 +1,8 @@
+
+
+
diff --git a/src/FlightMap/Images/TrashDelete.svg b/src/FlightMap/Images/TrashDelete.svg
deleted file mode 100644
index 1b0826ba046132064adf73ab0793056024898f77..0000000000000000000000000000000000000000
--- a/src/FlightMap/Images/TrashDelete.svg
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
diff --git a/src/FlightMap/Images/TrashDeleteBlack.svg b/src/FlightMap/Images/TrashDeleteBlack.svg
deleted file mode 100644
index 17effa14549bd9623d9624dab30619399475345b..0000000000000000000000000000000000000000
--- a/src/FlightMap/Images/TrashDeleteBlack.svg
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
diff --git a/src/Vehicle/Vehicle.cc b/src/Vehicle/Vehicle.cc
index 30d5f74237044c3d6e0bb2b2eec4c8b0171c2836..858a140efad30c3aaeac245932a362beddc9e220 100644
--- a/src/Vehicle/Vehicle.cc
+++ b/src/Vehicle/Vehicle.cc
@@ -922,6 +922,11 @@ QString Vehicle::formatedMessages()
return messages;
}
+void Vehicle::clearMessages()
+{
+ qgcApp()->toolbox()->uasMessageHandler()->clearMessages();
+}
+
void Vehicle::_handletextMessageReceived(UASMessage* message)
{
if(message)
diff --git a/src/Vehicle/Vehicle.h b/src/Vehicle/Vehicle.h
index 2f82e24985f6a266e3900322b80fb59c5c3c62b4..d35c69e63ca272c75ab93449b002999977660061 100644
--- a/src/Vehicle/Vehicle.h
+++ b/src/Vehicle/Vehicle.h
@@ -363,6 +363,9 @@ public:
/// Reboot vehicle
Q_INVOKABLE void rebootVehicle();
+ /// Clear Messages
+ Q_INVOKABLE void clearMessages();
+
bool guidedModeSupported(void) const;
bool pauseVehicleSupported(void) const;
diff --git a/src/ui/MainWindowInner.qml b/src/ui/MainWindowInner.qml
index b3bcb769c576e1d0e8c6d01aaaaf731bba2dd1d4..dd646c8fa39030825fd243e517bc58b97687c2de 100644
--- a/src/ui/MainWindowInner.qml
+++ b/src/ui/MainWindowInner.qml
@@ -349,13 +349,11 @@ Item {
//-- System Message Area
Rectangle {
id: messageArea
-
function close() {
currentPopUp = null
messageText.text = ""
messageArea.visible = false
}
-
width: mainWindow.width * 0.5
height: mainWindow.height * 0.5
color: Qt.rgba(0,0,0,0.8)
@@ -366,6 +364,13 @@ Item {
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
anchors.topMargin: tbHeight + ScreenTools.defaultFontPixelHeight
+ MouseArea {
+ // This MouseArea prevents the Map below it from getting Mouse events. Without this
+ // things like mousewheel will scroll the Flickable and then scroll the map as well.
+ anchors.fill: parent
+ preventStealing: true
+ onWheel: wheel.accepted = true
+ }
QGCFlickable {
id: messageFlick
anchors.margins: ScreenTools.defaultFontPixelHeight
@@ -383,7 +388,7 @@ Item {
}
//-- Dismiss System Message
Image {
- //anchors.margins: ScreenTools.defaultFontPixelHeight
+ anchors.margins: ScreenTools.defaultFontPixelHeight * 0.5
anchors.top: parent.top
anchors.right: parent.right
width: ScreenTools.isTinyScreen ? ScreenTools.defaultFontPixelHeight * 1.5 : ScreenTools.defaultFontPixelHeight
@@ -400,7 +405,30 @@ Item {
}
}
}
+ //-- Clear Messages
+ Image {
+ anchors.bottom: parent.bottom
+ anchors.right: parent.right
+ anchors.margins: ScreenTools.defaultFontPixelHeight * 0.5
+ height: ScreenTools.isTinyScreen ? ScreenTools.defaultFontPixelHeight * 1.5 : ScreenTools.defaultFontPixelHeight
+ width: height
+ sourceSize.height: height
+ source: "/res/TrashDelete.svg"
+ fillMode: Image.PreserveAspectFit
+ mipmap: true
+ smooth: true
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ if(QGroundControl.multiVehicleManager.activeVehicleAvailable) {
+ activeVehicle.clearMessages();
+ messageArea.close()
+ }
+ }
+ }
+ }
}
+
//-------------------------------------------------------------------------
//-- Critical Message Area
Rectangle {
@@ -468,7 +496,7 @@ Item {
//-- Dismiss Critical Message
QGCColoredImage {
id: criticalClose
- anchors.margins: ScreenTools.defaultFontPixelHeight
+ anchors.margins: ScreenTools.defaultFontPixelHeight * 0.5
anchors.top: parent.top
anchors.right: parent.right
width: ScreenTools.isTinyScreen ? ScreenTools.defaultFontPixelHeight * 1.5 : ScreenTools.defaultFontPixelHeight
@@ -487,7 +515,7 @@ Item {
//-- More text below indicator
QGCColoredImage {
- anchors.margins: ScreenTools.defaultFontPixelHeight
+ anchors.margins: ScreenTools.defaultFontPixelHeight * 0.5
anchors.bottom: parent.bottom
anchors.right: parent.right
width: ScreenTools.isTinyScreen ? ScreenTools.defaultFontPixelHeight * 1.5 : ScreenTools.defaultFontPixelHeight
diff --git a/src/ui/uas/UASMessageView.cc b/src/ui/uas/UASMessageView.cc
index 763f6da90b86210618e6126eac065594327c6608..72c2fee1ab87433569d778d3a2b7a3022f2d95b6 100644
--- a/src/ui/uas/UASMessageView.cc
+++ b/src/ui/uas/UASMessageView.cc
@@ -87,7 +87,11 @@ void UASMessageViewWidget::handleTextMessage(UASMessage *message)
// Turn off updates while we're appending content to avoid breaking the autoscroll behavior
msgWidget->setUpdatesEnabled(false);
QScrollBar *scroller = msgWidget->verticalScrollBar();
- msgWidget->appendHtml(message->getFormatedText());
+ QString messages = message->getFormatedText();
+ messages = messages.replace("<#E>", "color: #f95e5e; font: monospace;");
+ messages = messages.replace("<#I>", "color: #f9b55e; font: monospace;");
+ messages = messages.replace("<#N>", "color: #ffffff; font: monospace;");
+ msgWidget->appendHtml(messages);
// Ensure text area scrolls correctly
scroller->setValue(scroller->maximum());
msgWidget->setUpdatesEnabled(true);