Commit e3d7e129 authored by dogmaphobic's avatar dogmaphobic

Chevron buttons in Main Tool Bar

parent f743d7d6
...@@ -247,13 +247,11 @@ ...@@ -247,13 +247,11 @@
<qresource prefix="/qml"> <qresource prefix="/qml">
<file alias="test.qml">src/test.qml</file> <file alias="test.qml">src/test.qml</file>
<file alias="QmlTest.qml">src/QmlControls/QmlTest.qml</file> <file alias="QmlTest.qml">src/QmlControls/QmlTest.qml</file>
<file alias="QGroundControl/FactControls/qmldir">src/FactSystem/FactControls/qmldir</file> <file alias="QGroundControl/FactControls/qmldir">src/FactSystem/FactControls/qmldir</file>
<file alias="QGroundControl/FactControls/FactLabel.qml">src/FactSystem/FactControls/FactLabel.qml</file> <file alias="QGroundControl/FactControls/FactLabel.qml">src/FactSystem/FactControls/FactLabel.qml</file>
<file alias="QGroundControl/FactControls/FactTextField.qml">src/FactSystem/FactControls/FactTextField.qml</file> <file alias="QGroundControl/FactControls/FactTextField.qml">src/FactSystem/FactControls/FactTextField.qml</file>
<file alias="QGroundControl/FactControls/FactCheckBox.qml">src/FactSystem/FactControls/FactCheckBox.qml</file> <file alias="QGroundControl/FactControls/FactCheckBox.qml">src/FactSystem/FactControls/FactCheckBox.qml</file>
<file alias="QGroundControl/FactControls/FactComboBox.qml">src/FactSystem/FactControls/FactComboBox.qml</file> <file alias="QGroundControl/FactControls/FactComboBox.qml">src/FactSystem/FactControls/FactComboBox.qml</file>
<file alias="QGroundControl/Controls/qmldir">src/QmlControls/qmldir</file> <file alias="QGroundControl/Controls/qmldir">src/QmlControls/qmldir</file>
<file alias="QGroundControl/Controls/SubMenuButton.qml">src/QmlControls/SubMenuButton.qml</file> <file alias="QGroundControl/Controls/SubMenuButton.qml">src/QmlControls/SubMenuButton.qml</file>
<file alias="QGroundControl/Controls/IndicatorButton.qml">src/QmlControls/IndicatorButton.qml</file> <file alias="QGroundControl/Controls/IndicatorButton.qml">src/QmlControls/IndicatorButton.qml</file>
...@@ -265,26 +263,21 @@ ...@@ -265,26 +263,21 @@
<file alias="QGroundControl/Controls/QGCTextField.qml">src/QmlControls/QGCTextField.qml</file> <file alias="QGroundControl/Controls/QGCTextField.qml">src/QmlControls/QGCTextField.qml</file>
<file alias="QGroundControl/Controls/QGCComboBox.qml">src/QmlControls/QGCComboBox.qml</file> <file alias="QGroundControl/Controls/QGCComboBox.qml">src/QmlControls/QGCComboBox.qml</file>
<file alias="QGroundControl/Controls/QGCColoredImage.qml">src/QmlControls/QGCColoredImage.qml</file> <file alias="QGroundControl/Controls/QGCColoredImage.qml">src/QmlControls/QGCColoredImage.qml</file>
<file alias="QGroundControl/Controls/arrow-down.png">src/QmlControls/arrow-down.png</file> <file alias="QGroundControl/Controls/arrow-down.png">src/QmlControls/arrow-down.png</file>
<file alias="QGroundControl/Controls/QGCToolBarButton.qml">src/QmlControls/QGCToolBarButton.qml</file>
<file alias="octo_x.png">files/images/px4/airframes/octo_x.png</file> <file alias="octo_x.png">files/images/px4/airframes/octo_x.png</file>
<file alias="px4fmu_2.x.png">files/images/px4/boards/px4fmu_2.x.png</file> <file alias="px4fmu_2.x.png">files/images/px4/boards/px4fmu_2.x.png</file>
<file alias="SetupViewButtons.qml">src/VehicleSetup/SetupViewButtons.qml</file> <file alias="SetupViewButtons.qml">src/VehicleSetup/SetupViewButtons.qml</file>
<file alias="VehicleSummary.qml">src/VehicleSetup/VehicleSummary.qml</file> <file alias="VehicleSummary.qml">src/VehicleSetup/VehicleSummary.qml</file>
<file alias="FirmwareUpgrade.qml">src/VehicleSetup/FirmwareUpgrade.qml</file> <file alias="FirmwareUpgrade.qml">src/VehicleSetup/FirmwareUpgrade.qml</file>
<file alias="SafetyComponent.qml">src/AutoPilotPlugins/PX4/SafetyComponent.qml</file> <file alias="SafetyComponent.qml">src/AutoPilotPlugins/PX4/SafetyComponent.qml</file>
<file alias="SensorsComponent.qml">src/AutoPilotPlugins/PX4/SensorsComponent.qml</file> <file alias="SensorsComponent.qml">src/AutoPilotPlugins/PX4/SensorsComponent.qml</file>
<file alias="SafetyComponentSummary.qml">src/AutoPilotPlugins/PX4/SafetyComponentSummary.qml</file> <file alias="SafetyComponentSummary.qml">src/AutoPilotPlugins/PX4/SafetyComponentSummary.qml</file>
<file alias="SensorsComponentSummary.qml">src/AutoPilotPlugins/PX4/SensorsComponentSummary.qml</file> <file alias="SensorsComponentSummary.qml">src/AutoPilotPlugins/PX4/SensorsComponentSummary.qml</file>
<file alias="SensorsComponentSummaryFixedWing.qml">src/AutoPilotPlugins/PX4/SensorsComponentSummaryFixedWing.qml</file> <file alias="SensorsComponentSummaryFixedWing.qml">src/AutoPilotPlugins/PX4/SensorsComponentSummaryFixedWing.qml</file>
<file alias="RadioComponentSummary.qml">src/AutoPilotPlugins/PX4/RadioComponentSummary.qml</file> <file alias="RadioComponentSummary.qml">src/AutoPilotPlugins/PX4/RadioComponentSummary.qml</file>
<file alias="FlightModesComponentSummary.qml">src/AutoPilotPlugins/PX4/FlightModesComponentSummary.qml</file> <file alias="FlightModesComponentSummary.qml">src/AutoPilotPlugins/PX4/FlightModesComponentSummary.qml</file>
<file alias="AirframeComponentSummary.qml">src/AutoPilotPlugins/PX4/AirframeComponentSummary.qml</file> <file alias="AirframeComponentSummary.qml">src/AutoPilotPlugins/PX4/AirframeComponentSummary.qml</file>
<file alias="SafetyComponentTree.png">src/AutoPilotPlugins/PX4/Images/SafetyComponentTree.png</file> <file alias="SafetyComponentTree.png">src/AutoPilotPlugins/PX4/Images/SafetyComponentTree.png</file>
<file alias="SafetyComponentHome.png">src/AutoPilotPlugins/PX4/Images/SafetyComponentHome.png</file> <file alias="SafetyComponentHome.png">src/AutoPilotPlugins/PX4/Images/SafetyComponentHome.png</file>
<file alias="SafetyComponentArrowDown.png">src/AutoPilotPlugins/PX4/Images/SafetyComponentArrowDown.png</file> <file alias="SafetyComponentArrowDown.png">src/AutoPilotPlugins/PX4/Images/SafetyComponentArrowDown.png</file>
...@@ -295,7 +288,6 @@ ...@@ -295,7 +288,6 @@
<file alias="VehicleRight.png">src/AutoPilotPlugins/PX4/Images/VehicleRight.png</file> <file alias="VehicleRight.png">src/AutoPilotPlugins/PX4/Images/VehicleRight.png</file>
<file alias="VehicleNoseDown.png">src/AutoPilotPlugins/PX4/Images/VehicleNoseDown.png</file> <file alias="VehicleNoseDown.png">src/AutoPilotPlugins/PX4/Images/VehicleNoseDown.png</file>
<file alias="VehicleTailDown.png">src/AutoPilotPlugins/PX4/Images/VehicleTailDown.png</file> <file alias="VehicleTailDown.png">src/AutoPilotPlugins/PX4/Images/VehicleTailDown.png</file>
<file alias="QGroundControl/Controls/subMenuButtonImage.png">files/Setup/cogwheels.png</file> <file alias="QGroundControl/Controls/subMenuButtonImage.png">files/Setup/cogwheels.png</file>
<file alias="QGroundControl/Controls/SensorsComponentIcon.png">src/AutoPilotPlugins/PX4/Images/SensorsComponentIcon.png</file> <file alias="QGroundControl/Controls/SensorsComponentIcon.png">src/AutoPilotPlugins/PX4/Images/SensorsComponentIcon.png</file>
<file alias="QGroundControl/Controls/RadioComponentIcon.png">src/AutoPilotPlugins/PX4/Images/RadioComponentIcon.png</file> <file alias="QGroundControl/Controls/RadioComponentIcon.png">src/AutoPilotPlugins/PX4/Images/RadioComponentIcon.png</file>
...@@ -304,8 +296,7 @@ ...@@ -304,8 +296,7 @@
<file alias="QGroundControl/Controls/SafetyComponentIcon.png">src/AutoPilotPlugins/PX4/Images/SafetyComponentIcon.png</file> <file alias="QGroundControl/Controls/SafetyComponentIcon.png">src/AutoPilotPlugins/PX4/Images/SafetyComponentIcon.png</file>
<file alias="QGroundControl/Controls/FirmwareUpgradeIcon.png">src/VehicleSetup/FirmwareUpgradeIcon.png</file> <file alias="QGroundControl/Controls/FirmwareUpgradeIcon.png">src/VehicleSetup/FirmwareUpgradeIcon.png</file>
<file alias="QGroundControl/Controls/VehicleSummaryIcon.png">src/VehicleSetup/VehicleSummaryIcon.png</file> <file alias="QGroundControl/Controls/VehicleSummaryIcon.png">src/VehicleSetup/VehicleSummaryIcon.png</file>
<file alias="MainToolBar.qml">src/ui/toolbar/MainToolBar.qml</file>
<file alias="MainToolBar.qml">src/ui/toolbar/MainToolBar.qml</file>
</qresource> </qresource>
<qresource prefix="/AutoPilotPlugins/PX4"> <qresource prefix="/AutoPilotPlugins/PX4">
<file alias="ParameterFactMetaData.xml">src/AutoPilotPlugins/PX4/ParameterFactMetaData.xml</file> <file alias="ParameterFactMetaData.xml">src/AutoPilotPlugins/PX4/ParameterFactMetaData.xml</file>
......
import QtQuick 2.2
import QtQuick.Controls 1.2
import QtQuick.Controls.Styles 1.2
import QtQuick.Controls.Private 1.0
import QGroundControl.Palette 1.0
Button {
id: button
property bool repaintChevron: false
property var __qgcPal: QGCPalette { colorGroupEnabled: enabled }
style: ButtonStyle {
background: Item {
anchors.margins: 3
Canvas {
id: chevron
anchors.fill: parent
antialiasing: true
Connections {
target: button
onHoveredChanged: chevron.requestPaint()
onPressedChanged: chevron.requestPaint()
onCheckedChanged: chevron.requestPaint()
onRepaintChevronChanged: {
if(repaintChevron) {
chevron.requestPaint()
repaintChevron = false;
}
}
}
onPaint: {
var vMiddle = height / 2;
var context = getContext("2d");
context.reset();
context.beginPath();
context.lineWidth = 6;
context.beginPath();
context.moveTo(0, 0);
context.lineTo(width - 12 - 3, 0);
context.lineTo(width - 3, vMiddle);
context.lineTo(width - 12 - 3, height);
context.lineTo(0, height);
context.closePath();
context.strokeStyle = __qgcPal.windowShade
context.fillStyle = (button.hovered && !button.pressed) ? __qgcPal.buttonHighlight : (button.checked ? __qgcPal.buttonHighlight : __qgcPal.button);
context.stroke();
context.fill();
}
}
}
label: Label {
text: button.text
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
color: (button.hovered && !button.pressed) ? __qgcPal.buttonHighlightText : (button.checked ? __qgcPal.primaryButtonText : __qgcPal.buttonText)
}
}
}
...@@ -7,6 +7,7 @@ QGCCheckBox 1.0 QGCCheckBox.qml ...@@ -7,6 +7,7 @@ QGCCheckBox 1.0 QGCCheckBox.qml
QGCTextField 1.0 QGCTextField.qml QGCTextField 1.0 QGCTextField.qml
QGCComboBox 1.0 QGCComboBox.qml QGCComboBox 1.0 QGCComboBox.qml
QGCColoredImage 1.0 QGCColoredImage.qml QGCColoredImage 1.0 QGCColoredImage.qml
QGCToolBarButton 1.0 QGCToolBarButton.qml
SubMenuButton 1.0 SubMenuButton.qml SubMenuButton 1.0 SubMenuButton.qml
IndicatorButton 1.0 IndicatorButton.qml IndicatorButton 1.0 IndicatorButton.qml
......
...@@ -1373,3 +1373,21 @@ void MainWindow::_showQmlTestWidget(void) ...@@ -1373,3 +1373,21 @@ void MainWindow::_showQmlTestWidget(void)
} }
#endif #endif
// There is a bug in Qt where a Canvas element inside a QQuickWidget does not
// receive update requests. We hook into this event and notify the tool bar
// to update its canvas elements. If other QQuickWidgets start using Canvas
// and this bug is not fixed, this should be turned into a signal emited by
// MainWindow and the various QQuickWidgets that need it should connect to it.
bool MainWindow::event(QEvent* e)
{
bool result = true;
switch (e->type()) {
case QEvent::Paint:
result = QMainWindow::event(e);
_mainToolBar->updateCanvas();
return result;
default:
break;
}
return QMainWindow::event(e);
}
...@@ -219,6 +219,8 @@ public: ...@@ -219,6 +219,8 @@ public:
protected: protected:
bool event(QEvent *);
typedef enum _VIEW_SECTIONS typedef enum _VIEW_SECTIONS
{ {
VIEW_ENGINEER, // Engineering/Analyze view mode. Used for analyzing data and modifying onboard parameters VIEW_ENGINEER, // Engineering/Analyze view mode. Used for analyzing data and modifying onboard parameters
......
...@@ -655,3 +655,8 @@ void MainToolBar::_setSatLoc(UASInterface*, int fix) ...@@ -655,3 +655,8 @@ void MainToolBar::_setSatLoc(UASInterface*, int fix)
emit satelliteLockChanged(_satelliteLock); emit satelliteLockChanged(_satelliteLock);
} }
} }
void MainToolBar::updateCanvas()
{
emit repaintRequestedChanged();
}
...@@ -98,6 +98,7 @@ public: ...@@ -98,6 +98,7 @@ public:
Q_PROPERTY(bool showMav READ showMav NOTIFY showMavChanged) Q_PROPERTY(bool showMav READ showMav NOTIFY showMavChanged)
Q_PROPERTY(bool showMessages READ showMessages NOTIFY showMessagesChanged) Q_PROPERTY(bool showMessages READ showMessages NOTIFY showMessagesChanged)
Q_PROPERTY(bool showBattery READ showBattery NOTIFY showBatteryChanged) Q_PROPERTY(bool showBattery READ showBattery NOTIFY showBatteryChanged)
Q_PROPERTY(bool repaintRequested READ repaintRequested NOTIFY repaintRequestedChanged)
int connectionCount () { return _connectionCount; } int connectionCount () { return _connectionCount; }
double batteryVoltage () { return _batteryVoltage; } double batteryVoltage () { return _batteryVoltage; }
...@@ -122,9 +123,11 @@ public: ...@@ -122,9 +123,11 @@ public:
bool showMav () { return _showMav; } bool showMav () { return _showMav; }
bool showMessages () { return _showMessages; } bool showMessages () { return _showMessages; }
bool showBattery () { return _showBattery; } bool showBattery () { return _showBattery; }
bool repaintRequested () { return true; }
void setCurrentView (int currentView); void setCurrentView (int currentView);
void viewStateChanged (const QString& key, bool value); void viewStateChanged (const QString& key, bool value);
void updateCanvas ();
signals: signals:
void connectionCountChanged (int count); void connectionCountChanged (int count);
...@@ -150,6 +153,7 @@ signals: ...@@ -150,6 +153,7 @@ signals:
void showMavChanged (bool value); void showMavChanged (bool value);
void showMessagesChanged (bool value); void showMessagesChanged (bool value);
void showBatteryChanged (bool value); void showBatteryChanged (bool value);
void repaintRequestedChanged ();
private slots: private slots:
void _setActiveUAS (UASInterface* active); void _setActiveUAS (UASInterface* active);
......
...@@ -40,8 +40,8 @@ Rectangle { ...@@ -40,8 +40,8 @@ Rectangle {
property var qgcPal: QGCPalette { id: palette; colorGroupEnabled: true } property var qgcPal: QGCPalette { id: palette; colorGroupEnabled: true }
property int cellSpacerSize: 4 property int cellSpacerSize: 4
property int cellHeight: 30 property int cellHeight: 30
property int cellRadius: 3 property int cellRadius: 3
property double dpiFactor: (72.0 / mainToolBar.dotsPerInch); property double dpiFactor: (72.0 / mainToolBar.dotsPerInch);
property var colorBlue: "#1a6eaa" property var colorBlue: "#1a6eaa"
...@@ -117,325 +117,344 @@ Rectangle { ...@@ -117,325 +117,344 @@ Rectangle {
} }
Row { Row {
id: row1 id: row1
height: cellHeight height: cellHeight
anchors.left: parent.left anchors.left: parent.left
spacing: cellSpacerSize spacing: 4
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
anchors.leftMargin: 10 anchors.leftMargin: 10
ExclusiveGroup { id: mainActionGroup }
QGCButton { Row {
id: setupButton id: row11
width: 90 height: cellHeight
height: cellHeight spacing: -12
exclusiveGroup: mainActionGroup
text: qsTr("1. Setup")
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
checked: (mainToolBar.currentView === MainToolBar.ViewSetup)
onClicked: { Connections {
mainToolBar.onSetupView(); target: mainToolBar
onRepaintRequestedChanged: {
setupButton.repaintChevron = true;
planButton.repaintChevron = true;
flyButton.repaintChevron = true;
analyzeButton.repaintChevron = true;
}
} }
}
QGCButton { ExclusiveGroup { id: mainActionGroup }
id: planButton
width: 90 QGCToolBarButton {
height: cellHeight id: setupButton
exclusiveGroup: mainActionGroup width: 100
text: qsTr("2. Plan") height: cellHeight
anchors.verticalCenter: parent.verticalCenter exclusiveGroup: mainActionGroup
checked: (mainToolBar.currentView === MainToolBar.ViewPlan) text: qsTr("1. Setup")
onClicked: { anchors.verticalCenter: parent.verticalCenter
mainToolBar.onPlanView(); checked: (mainToolBar.currentView === MainToolBar.ViewSetup)
onClicked: {
mainToolBar.onSetupView();
}
z: 1000
} }
}
QGCButton { QGCToolBarButton {
id: flyButton id: planButton
width: 90 width: 100
height: cellHeight height: cellHeight
exclusiveGroup: mainActionGroup exclusiveGroup: mainActionGroup
text: qsTr("3. Fly") text: qsTr("2. Plan")
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
checked: (mainToolBar.currentView === MainToolBar.ViewFly) checked: (mainToolBar.currentView === MainToolBar.ViewPlan)
onClicked: { onClicked: {
mainToolBar.onFlyView(); mainToolBar.onPlanView();
}
z: 900
} }
}
QGCButton { QGCToolBarButton {
id: analyzeButton id: flyButton
width: 90 width: 100
height: cellHeight height: cellHeight
exclusiveGroup: mainActionGroup exclusiveGroup: mainActionGroup
text: qsTr("4. Analyze") text: qsTr("3. Fly")
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
checked: (mainToolBar.currentView === MainToolBar.ViewAnalyze) checked: (mainToolBar.currentView === MainToolBar.ViewFly)
onClicked: { onClicked: {
mainToolBar.onAnalyzeView(); mainToolBar.onFlyView();
}
z: 800
}
QGCToolBarButton {
id: analyzeButton
width: 100
height: cellHeight
exclusiveGroup: mainActionGroup
text: qsTr("4. Analyze")
anchors.verticalCenter: parent.verticalCenter
checked: (mainToolBar.currentView === MainToolBar.ViewAnalyze)
onClicked: {
mainToolBar.onAnalyzeView();
}
z: 700
} }
}
Rectangle {
width: 4
height: cellHeight
color: "#00000000"
border.color: "#00000000"
border.width: 0
} }
Rectangle { Row {
id: messages id: row12
width: (mainToolBar.newMessageCount > 99) ? 70 : 60 height: cellHeight
height: cellHeight spacing: cellSpacerSize
visible: (mainToolBar.connectionCount > 0) && (mainToolBar.showMessages)
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
color: getMessageColor()
radius: cellRadius
border.color: "#00000000"
border.width: 0
property bool showTriangle: false
Image {
id: messageIcon
source: getMessageIcon();
height: 16
fillMode: Image.PreserveAspectFit
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.leftMargin: 10
}
Rectangle { Rectangle {
id: messageTextRect id: messages
width: (mainToolBar.messageCount > 99) ? 70 : 60
height: cellHeight
visible: (mainToolBar.connectionCount > 0) && (mainToolBar.showMessages)
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right color: getMessageColor()
width: messages.width - messageIcon.width radius: cellRadius
Text { border.color: "#00000000"
id: messageText border.width: 0
text: (mainToolBar.newMessageCount > 0) ? mainToolBar.newMessageCount : '' property bool showTriangle: false
font.pointSize: 14 * dpiFactor
font.weight: Font.DemiBold Image {
id: messageIcon
source: getMessageIcon();
height: 16
fillMode: Image.PreserveAspectFit
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter anchors.left: parent.left
horizontalAlignment: Text.AlignHCenter anchors.leftMargin: 10
color: colorWhite
} }
}
Image { Rectangle {
id: dropDown id: messageTextRect
source: "QGroundControl/Controls/arrow-down.png" anchors.verticalCenter: parent.verticalCenter
visible: (messages.showTriangle) && (mainToolBar.messageCount > 0) anchors.right: parent.right
anchors.bottom: parent.bottom width: messages.width - messageIcon.width
anchors.right: parent.right Text {
anchors.bottomMargin: 3 id: messageText
anchors.rightMargin: 3 text: (mainToolBar.messageCount > 0) ? mainToolBar.messageCount : ''
} font.pointSize: 14 * dpiFactor
font.weight: Font.DemiBold
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
horizontalAlignment: Text.AlignHCenter
color: colorWhite
}
}
Timer { Image {
id: mouseOffTimer id: dropDown
interval: 2000; source: "QGroundControl/Controls/arrow-down.png"
running: false; visible: (messages.showTriangle) && (mainToolBar.messageCount > 0)
repeat: false anchors.bottom: parent.bottom
onTriggered: { anchors.right: parent.right
messages.showTriangle = false; anchors.bottomMargin: 3
anchors.rightMargin: 3
} }
}
MouseArea { Timer {
anchors.fill: parent id: mouseOffTimer
hoverEnabled: true interval: 2000;
onEntered: { running: false;
messages.showTriangle = true; repeat: false
mouseOffTimer.start(); onTriggered: {
messages.showTriangle = false;
}
} }
onClicked: {
if(mainToolBar.messageCount > 0) { MouseArea {
anchors.fill: parent
hoverEnabled: true
onEntered: {
messages.showTriangle = true;
mouseOffTimer.start();
}
onClicked: {
var p = mapToItem(toolBarHolder, mouseX, mouseY); var p = mapToItem(toolBarHolder, mouseX, mouseY);
mainToolBar.onEnterMessageArea(p.x, p.y); mainToolBar.onEnterMessageArea(p.x, p.y);
} }
} }
}
}
Rectangle {
id: mavIcon
width: cellHeight
height: cellHeight
visible: showMavStatus() && (mainToolBar.showMav)
anchors.verticalCenter: parent.verticalCenter
color: colorBlue
radius: cellRadius
border.color: "#00000000"
border.width: 0
Image {
source: mainToolBar.systemPixmap
height: cellHeight * 0.75
fillMode: Image.PreserveAspectFit
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
} }
}
Rectangle { Rectangle {
id: satelitte id: mavIcon
width: 60 width: cellHeight
height: cellHeight height: cellHeight
visible: showMavStatus() && (mainToolBar.showGPS) visible: showMavStatus() && (mainToolBar.showMav)
anchors.verticalCenter: parent.verticalCenter
color: getSatelliteColor();
radius: cellRadius
border.color: "#00000000"
border.width: 0
Image {
source: "qrc:/files/images/status/gps.svg";
height: 24
fillMode: Image.PreserveAspectFit
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left color: colorBlue
anchors.leftMargin: 10 radius: cellRadius
mipmap: true border.color: "#00000000"
smooth: true border.width: 0
Image {
source: mainToolBar.systemPixmap
height: cellHeight * 0.75
fillMode: Image.PreserveAspectFit
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
}
} }
Text { Rectangle {
id: satelitteText id: satelitte
text: (mainToolBar.satelliteCount > 0) ? mainToolBar.satelliteCount : '' width: 60
font.pointSize: 14 * dpiFactor height: cellHeight
font.weight: Font.DemiBold visible: showMavStatus() && (mainToolBar.showGPS)
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right color: getSatelliteColor();
anchors.rightMargin: 10 radius: cellRadius
horizontalAlignment: Text.AlignRight border.color: "#00000000"
color: colorWhite border.width: 0
Image {
source: "qrc:/files/images/status/gps.svg";
height: 24
fillMode: Image.PreserveAspectFit
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.leftMargin: 10
mipmap: true
smooth: true
}
Text {
id: satelitteText
text: (mainToolBar.satelliteCount > 0) ? mainToolBar.satelliteCount : ''
font.pointSize: 14 * dpiFactor
font.weight: Font.DemiBold
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: 10
horizontalAlignment: Text.AlignRight
color: colorWhite
}
} }
}
Rectangle { Rectangle {
id: battery id: battery
width: 80 width: 80
height: cellHeight height: cellHeight
visible: showMavStatus() && (mainToolBar.showBattery) visible: showMavStatus() && (mainToolBar.showBattery)
anchors.verticalCenter: parent.verticalCenter
color: (mainToolBar.batteryPercent > 40.0 || mainToolBar.batteryPercent < 0.01) ? colorGreen : colorRed
radius: cellRadius
border.color: "#00000000"
border.width: 0
Image {
source: getBatteryIcon();
height: 20
fillMode: Image.PreserveAspectFit
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left color: (mainToolBar.batteryPercent > 40.0 || mainToolBar.batteryPercent < 0.01) ? colorBlue : colorRed
anchors.leftMargin: 6 radius: cellRadius
mipmap: true border.color: "#00000000"
smooth: true border.width: 0
Image {
source: getBatteryIcon();
height: 20
fillMode: Image.PreserveAspectFit
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.leftMargin: 6
mipmap: true
smooth: true
}
Text {
id: batteryText
text: mainToolBar.batteryVoltage.toFixed(1) + ' V';
font.pointSize: 14 * dpiFactor
font.weight: Font.DemiBold
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: 8
horizontalAlignment: Text.AlignRight
color: colorWhite
}
} }
Text { Column {
id: batteryText visible: showMavStatus()
text: mainToolBar.batteryVoltage.toFixed(1) + ' V'; height: cellHeight * 0.85
font.pointSize: 14 * dpiFactor width: 80
font.weight: Font.DemiBold
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: 8
horizontalAlignment: Text.AlignRight
color: colorWhite
}
}
Column { Rectangle {
visible: showMavStatus() id: armedStatus
height: cellHeight * 0.85 width: parent.width
width: 80 height: parent.height / 2
anchors.verticalCenter: parent.verticalCenter anchors.horizontalCenter: parent.horizontalCenter
color: "#00000000"
border.color: "#00000000"
border.width: 0
Text {
id: armedStatusText
text: (mainToolBar.systemArmed) ? qsTr("ARMED") : qsTr("DISARMED")
font.pointSize: 12 * dpiFactor
font.weight: Font.DemiBold
anchors.centerIn: parent
color: (mainToolBar.systemArmed) ? colorRed : colorGreen
}
}
Rectangle {
id: stateStatus
width: parent.width
height: parent.height / 2
anchors.horizontalCenter: parent.horizontalCenter
color: "#00000000"
border.color: "#00000000"
border.width: 0
Text {
id: stateStatusText
text: mainToolBar.currentState
font.pointSize: 12 * dpiFactor
font.weight: Font.DemiBold
anchors.centerIn: parent
color: (mainToolBar.currentState === "STANDBY") ? colorGreen : colorRed
}
}
}
Rectangle { Rectangle {
id: armedStatus id: modeStatus
width: parent.width width: 90
height: parent.height / 2 height: cellHeight
anchors.horizontalCenter: parent.horizontalCenter visible: showMavStatus()
color: "#00000000" color: "#00000000"
border.color: "#00000000" border.color: "#00000000"
border.width: 0 border.width: 0
Text { Text {
id: armedStatusText id: modeStatusText
text: (mainToolBar.systemArmed) ? qsTr("ARMED") : qsTr("DISARMED") text: mainToolBar.currentMode
font.pointSize: 12 * dpiFactor font.pointSize: 12 * dpiFactor
font.weight: Font.DemiBold font.weight: Font.DemiBold
anchors.centerIn: parent anchors.horizontalCenter: parent.horizontalCenter
color: (mainToolBar.systemArmed) ? colorRed : colorGreenText anchors.verticalCenter: parent.verticalCenter
color: qgcPal.text
} }
} }
Rectangle { Rectangle {
id: stateStatus id: connectionStatus
width: parent.width width: 160
height: parent.height / 2 height: cellHeight
anchors.horizontalCenter: parent.horizontalCenter visible: (mainToolBar.connectionCount > 0 && mainToolBar.mavPresent && mainToolBar.heartbeatTimeout != 0)
anchors.verticalCenter: parent.verticalCenter
color: "#00000000" color: "#00000000"
border.color: "#00000000" border.color: "#00000000"
border.width: 0 border.width: 0
Text { Text {
id: stateStatusText id: connectionStatusText
text: mainToolBar.currentState text: qsTr("CONNECTION LOST")
font.pointSize: 12 * dpiFactor font.pointSize: 14 * dpiFactor
font.weight: Font.DemiBold font.weight: Font.DemiBold
anchors.centerIn: parent anchors.verticalCenter: parent.verticalCenter
color: (mainToolBar.currentState === "STANDBY") ? colorGreenText : colorRed anchors.horizontalCenter: parent.horizontalCenter
color: colorRed
} }
} }
}
Rectangle {
id: modeStatus
width: 90
height: cellHeight
visible: showMavStatus()
color: "#00000000"
border.color: "#00000000"
border.width: 0
Text {
id: modeStatusText
text: mainToolBar.currentMode
font.pointSize: 12 * dpiFactor
font.weight: Font.DemiBold
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
color: qgcPal.text
}
}
Rectangle {
id: connectionStatus
width: 160
height: cellHeight
visible: (mainToolBar.connectionCount > 0 && mainToolBar.mavPresent && mainToolBar.heartbeatTimeout != 0)
anchors.verticalCenter: parent.verticalCenter
color: "#00000000"
border.color: "#00000000"
border.width: 0
Text {
id: connectionStatusText
text: qsTr("CONNECTION LOST")
font.pointSize: 14 * dpiFactor
font.weight: Font.DemiBold
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
color: colorRed
}
} }
} }
......
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