Commit d581a91b authored by Bryant's avatar Bryant

Reworked the UAS listing. It's organized differently and styled differently....

Reworked the UAS listing. It's organized differently and styled differently. Also the fading of the heartbeat status now works properly. Also fixed some theming issues with the connectButton when it was checked.
parent 2ef52b98
......@@ -259,29 +259,27 @@ QPushButton#controlButton {
min-height: 25px;
}
QPushButton#deleteButton {
QPushButton#deleteButton, QPushButton#killButton {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #D9002F, stop: 1 #AC0025);
}
QPushButton#killButton {
font-weight: bold;
min-height: 30px;
color: #000;
background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffb917, stop:1 #b37300);
background-clip: border;
border: 1px solid #555;
border-radius: 5px;
}
QPushButton:checked, QToolButton:checked {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #09A2B2, stop: 1 #414B52);
}
QPushButton:checked#connectButton, QPushButton:checked#controlButton {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #FF9000, stop: 1 #B37300);
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #E38000, stop: 1 #945F00);
color: #000;
}
QPushButton:checked:hover#connectButton, QPushButton:checked:hover#controlButton {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #FF9000, stop: 1 #B37300);
}
QPushButton:checked:pressed#connectButton, QPushButton:checked:pressed#controlButton {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #DB7C00, stop: 1 #825400);
}
QPushButton:disabled, QToolButton:disabled {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #232228, stop: 1 #020208);
}
......@@ -294,7 +292,7 @@ QPushButton:hover#connectButton, QPushButton:hover#controlButton {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #87FF6D, stop: 1 #1FD16D);
}
QPushButton:hover#deleteButton {
QPushButton:hover#deleteButton, QPushButton#killButton {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #F20034, stop: 1 #9E0022);
}
......@@ -306,20 +304,10 @@ QPushButton:pressed#connectButton, QPushButton:pressed#controlButton {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #62B84E, stop: 1 #148A47);
}
QPushButton:pressed#deleteButton {
QPushButton:pressed#deleteButton, QPushButton#killButton {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #C9002C, stop: 1 #9C0021);
}
QPushButton:pressed#killButton {
font-weight: bold;
min-height: 30px;
color: #000;
background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #bb8500, stop:1 #903000);
background-clip: border;
border: 1px solid #555;
border-radius: 5px;
}
QScrollBar {
border: 1px solid #333;
}
......@@ -472,6 +460,25 @@ UASQuickViewItem QLabel#value {
font-size: 20pt;
}
UASView {
background: #444;
border: 1px solid #AAA;
border-radius: 12px;
}
UASView QLabel#heartBeatLabel, UASView QLabel#typeLabel {
border: 1px solid #333;
border-radius: 5px;
padding: 2px;
}
QGCUnconnectedInfoWidget QPushButton#connectButton {
min-height: 150px;
max-height: 275px;
margin: 15px;
padding: 20px;
}
WaypointEditableView, WaypointViewOnlyView {
border: 1px solid #777;
border-radius: 5px;
......
......@@ -258,30 +258,28 @@ QPushButton#controlButton {
min-height: 25px;
}
QPushButton#deleteButton {
QPushButton#deleteButton, QPushButton#killButton {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #D9002F, stop: 1 #AC0025);
}
QPushButton#killButton {
font-weight: bold;
min-height: 30px;
color: #000;
background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #FFb917, stop: 1 #B37300);
background-clip: border;
border: 1px solid #555;
border-radius: 5px;
}
QPushButton:checked, QToolButton:checked {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #444, stop: 1 #888);
color: #FFF;
}
QPushButton:checked#connectButton, QPushButton:checked#controlButton {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #FF9000, stop: 1 #B37300);
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #E38000, stop: 1 #945F00);
color: #000;
}
QPushButton:checked:hover#connectButton, QPushButton:checked:hover#controlButton {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #FF9000, stop: 1 #B37300);
}
QPushButton:checked:pressed#connectButton, QPushButton:checked:pressed#controlButton {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #DB7C00, stop: 1 #825400);
}
QPushButton:disabled, QToolButton:disabled {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #EEE, stop: 1 #CCC);
color: #AAA;
......@@ -295,7 +293,7 @@ QPushButton:hover#connectButton, QPushButton:hover#controlButton {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #87FF6D, stop: 1 #1FD16D);
}
QPushButton:hover#deleteButton {
QPushButton:hover#deleteButton, QPushButton#killButton {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #F20034, stop: 1 #9E0022);
}
......@@ -307,26 +305,16 @@ QPushButton:pressed#connectButton, QPushButton:pressed#controlButton {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #62B84E, stop: 1 #148A47);
}
QPushButton:pressed#deleteButton {
QPushButton:pressed#deleteButton, QPushButton#killButton {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #C9002C, stop: 1 #9C0021);
}
QPushButton:pressed#killButton {
font-weight: bold;
min-height: 30px;
color: #000;
background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #bb8500, stop:1 #903000);
background-clip: border;
border: 1px solid #555;
border-radius: 5px;
}
QScrollBar {
border: 1px solid #333;
}
QSeparator {
color: #EEE;
color: #000;
}
QSlider {
......@@ -473,6 +461,25 @@ UASQuickViewItem QLabel#value {
font-size: 20pt;
}
UASView {
background: #D0D0D0;
border: 1px solid #666;
border-radius: 12px;
}
UASView QLabel#heartBeatLabel, UASView QLabel#typeLabel {
border: 1px solid #333;
border-radius: 5px;
padding: 2px;
}
QGCUnconnectedInfoWidget QPushButton#connectButton {
min-height: 150px;
max-height: 275px;
margin: 15px;
padding: 20px;
}
WaypointEditableView, WaypointViewOnlyView {
border: 1px solid #333;
border-radius: 5px;
......
......@@ -19,6 +19,14 @@
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>6</number>
</property>
<property name="margin">
<number>3</number>
</property>
</layout>
</widget>
<resources/>
<connections/>
......
......@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>360</width>
<height>121</height>
<height>155</height>
</rect>
</property>
<property name="sizePolicy">
......@@ -32,500 +32,57 @@
<string>Form</string>
</property>
<property name="styleSheet">
<string notr="true">QWidget#colorIcon {}
QWidget {
background-color: #050508;
color: #DDDDDF;
background-clip: border;
font-size: 11px;
}
QLabel {
background-color: transparent;
}
QLabel#nameLabel {
font: bold 16px;
color: #3C7B9E;
}
QLabel#modeLabel {
font: 12px;
}
QLabel#stateLabel {
font: 12px;
color: #3C7B9E;
}
QLabel#navLabel {
font: 12px;
}
QLabel#positionLabel {
font: 8px;
}
QLabel#timeElapsedLabel {
font: 8px;
}
QLabel#groundDistanceLabel {
font: 8px;
}
QLabel#speedLabel {
font: 8px;
}
QLabel#timeRemainingLabel {
font: 8px;
}
QLabel#waypointLabel {
font: 22px;
}
QGroupBox {
border: 1px solid #4A4A4F;
border-radius: 10px;
padding: 0px 0px 0px 0px;
margin: 0px;
}
QGroupBox::title {
subcontrol-origin: margin;
subcontrol-position: top center; /* position at the top center */
margin: 0 3px 0px 3px;
padding: 0 3px 0px 0px;
font: bold 8px;
}
QGroupBox#heartbeatIcon {
background-color: red;
}
QToolButton#typeButton {
font-weight: bold;
font-size: 12px;
border: 0px solid #999999;
border-radius: 5px;
min-width:42px;
max-width: 42px;
min-height: 42px;
max-height: 42px;
padding: 0px;
margin: 0px;
background-color: none;
}
QPushButton {
font-weight: bold;
font-size: 12px;
border: 1px solid #999999;
border-radius: 8px;
min-width: 20px;
max-width: 32px;
min-height: 16px;
max-height: 16px;
padding: 2px;
spacing: 10px;
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #777777, stop: 1 #555555);
}
QPushButton:pressed {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #444444, stop: 1 #555555);
}
QPushButton#abortButton {
background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
stop:0 #ffee01, stop:1 #ae8f00);
}
QPushButton:pressed#abortButton {
background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
stop:0 #bbaa00, stop:1 #a05b00);
}
QPushButton#killButton {
background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
stop:0 #ffb917, stop:1 #b37300);
}
QPushButton:pressed#killButton {
background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
stop:0 #bb8500, stop:1 #903000);
}
QProgressBar:horizontal {
border: 1px solid #4A4A4F;
border-radius: 4px;
text-align: center;
padding: 2px;
color: #111111;
background-color: #111118;
}
QProgressBar:vertical {
border: 1px solid #4A4A4F;
border-radius: 4px;
text-align: center;
font-size: 7px;
padding: 2px;
color: #DDDDDF;
min-width: 16px;
background-color: #111118;
}
QProgressBar:horizontal {
height: 10px;
}
QProgressBar:horizontal QLabel {
font-size: 9px;
color: #111111;
}
QProgressBar:vertical QLabel {
font-size: 7px;
}
QProgressBar:vertical {
width: 14px;
}
QProgressBar::chunk {
background-color: #656565;
}
QProgressBar::chunk#batteryBar {
background-color: green;
}
QProgressBar::chunk#speedBar {
background-color: yellow;
}
QProgressBar::chunk#thrustBar {
background-color: orange;
}
QToolTip {
background-color: #090909;
border: 1px solid #379AC3;
border-radius: 3px;
color: #DDDDDF;
}
QMenu {
border: 1px solid #379AC3;
background-color: #050508;
color: #DDDDDF;
background-clip: border;
font-size: 11px;
}
QMenu::separator {
height: 1px;
background: #379AC3;
margin-top: 8px;
margin-bottom: 4px;
margin-left: 5px;
margin-right: 5px;
}</string>
<string notr="true"/>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="spacing">
<number>2</number>
</property>
<property name="leftMargin">
<number>2</number>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="margin">
<number>5</number>
</property>
<item>
<layout class="QGridLayout" name="gridLayout">
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>2</number>
<number>0</number>
</property>
<property name="bottomMargin">
<item row="1" column="0" rowspan="2">
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="topMargin">
<number>0</number>
</property>
<item>
<widget class="QGroupBox" name="uasViewFrame">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>130</height>
</size>
</property>
<property name="title">
<string/>
</property>
<layout class="QGridLayout" name="gridLayout" columnstretch="1,1,10,10,10,0,90,90">
<property name="horizontalSpacing">
<number>5</number>
</property>
<property name="verticalSpacing">
<number>2</number>
</property>
<property name="margin">
<number>4</number>
</property>
<item row="0" column="0" rowspan="5" colspan="2">
<widget class="QToolButton" name="typeButton">
<property name="minimumSize">
<size>
<width>42</width>
<height>42</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>42</width>
<height>42</height>
</size>
</property>
<property name="baseSize">
<size>
<width>30</width>
<height>30</height>
</size>
</property>
<property name="toolTip">
<string>System Type</string>
</property>
<property name="statusTip">
<string>System Type</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="../../qgroundcontrol.qrc">
<normaloff>:/files/images/mavs/unknown.svg</normaloff>:/files/images/mavs/unknown.svg</iconset>
</property>
<property name="iconSize">
<size>
<width>42</width>
<height>42</height>
</size>
</property>
</widget>
</item>
<item row="0" column="2" colspan="3">
<widget class="QLabel" name="nameLabel">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16</height>
</size>
</property>
<property name="font">
<font>
<pointsize>-1</pointsize>
<weight>75</weight>
<italic>false</italic>
<bold>true</bold>
</font>
</property>
<property name="toolTip">
<string>System Name</string>
</property>
<property name="statusTip">
<string>System Name</string>
</property>
<property name="text">
<string>UAS001</string>
</property>
</widget>
</item>
<item row="0" column="6" colspan="2">
<widget class="QLabel" name="modeLabel">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16</height>
</size>
</property>
<property name="font">
<font>
<pointsize>-1</pointsize>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>MODE</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="2" rowspan="3">
<widget class="QLabel" name="timeRemainingLabel">
<property name="font">
<font>
<pointsize>-1</pointsize>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
</font>
</property>
<widget class="QLabel" name="typeLabel">
<property name="toolTip">
<string>Remaining flight time</string>
<string>System type</string>
</property>
<property name="statusTip">
<string>Remaining flight time</string>
</property>
<property name="text">
<string>00:00:00</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="3" rowspan="3" colspan="2">
<widget class="QLabel" name="timeElapsedLabel">
<property name="font">
<font>
<pointsize>-1</pointsize>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
</font>
<string>System type</string>
</property>
<property name="toolTip">
<string>Uptime</string>
</property>
<property name="statusTip">
<string>Uptime</string>
<property name="whatsThis">
<string>System type</string>
</property>
<property name="text">
<string>00:00:00</string>
<string/>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
<property name="pixmap">
<pixmap resource="../../qgroundcontrol.qrc">:/files/images/mavs/unknown.svg</pixmap>
</property>
</widget>
</item>
<item row="3" column="6" rowspan="2" colspan="2">
<widget class="QProgressBar" name="thrustBar">
<property name="font">
<font>
<pointsize>-1</pointsize>
</font>
</property>
<property name="toolTip">
<string>Current throttle</string>
</property>
<property name="statusTip">
<string>Current throttle</string>
</property>
<property name="value">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<property name="topMargin">
<number>0</number>
</property>
<property name="format">
<string>throttle %p%</string>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QLabel" name="groundDistanceLabel">
<property name="font">
<font>
<pointsize>-1</pointsize>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
</font>
</property>
<property name="toolTip">
<string>Altitude</string>
</property>
<property name="statusTip">
<string>Altitude</string>
</property>
<property name="text">
<string>00.00 m</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="4" column="3" colspan="2">
<widget class="QLabel" name="speedLabel">
<property name="font">
<font>
<pointsize>-1</pointsize>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
</font>
</property>
<property name="toolTip">
<string>Ground Speed</string>
</property>
<property name="statusTip">
<string>Ground Speed</string>
</property>
<property name="text">
<string>00.0 m/s</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="5" column="0" rowspan="3">
<widget class="QGroupBox" name="heartbeatIcon">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>18</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>18</width>
<height>40</height>
</size>
</property>
<item>
<widget class="QLabel" name="heartBeatLabel">
<property name="toolTip">
<string>Heartbeat</string>
</property>
<property name="statusTip">
<string>Heartbeat</string>
</property>
<property name="title">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="5" column="1" rowspan="3">
<item>
<widget class="QProgressBar" name="batteryBar">
<property name="minimumSize">
<size>
......@@ -540,9 +97,7 @@ QMenu::separator {
</size>
</property>
<property name="font">
<font>
<pointsize>-1</pointsize>
</font>
<font/>
</property>
<property name="toolTip">
<string>Battery Fuel</string>
......@@ -553,16 +108,30 @@ QMenu::separator {
<property name="value">
<number>0</number>
</property>
<property name="textVisible">
<bool>false</bool>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item row="7" column="2">
</layout>
</item>
</layout>
</item>
<item row="2" column="1" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="spacing">
<number>2</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="waypointLabel">
<property name="font">
<font>
<pointsize>-1</pointsize>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
......@@ -582,49 +151,43 @@ QMenu::separator {
</property>
</widget>
</item>
<item row="2" column="6" colspan="2">
<widget class="QLabel" name="positionLabel">
<item>
<widget class="QPushButton" name="liftoffButton">
<property name="minimumSize">
<size>
<width>0</width>
<height>12</height>
<width>26</width>
<height>22</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>12</height>
<width>38</width>
<height>22</height>
</size>
</property>
<property name="font">
<font>
<pointsize>-1</pointsize>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
</font>
</property>
<property name="toolTip">
<string>Current Position</string>
<string>Liftoff / Launch</string>
</property>
<property name="statusTip">
<string>Current Position</string>
<string>Liftoff / Launch</string>
</property>
<property name="text">
<string>00.0 00.0 00.0 m</string>
<string/>
</property>
<property name="icon">
<iconset resource="../../qgroundcontrol.qrc">
<normaloff>:/files/images/control/launch.svg</normaloff>:/files/images/control/launch.svg</iconset>
</property>
</widget>
</item>
<item row="7" column="3" colspan="5">
<layout class="QHBoxLayout" name="horizontalLayout" stretch="1,1,1,1,1,1,1">
<property name="spacing">
<number>4</number>
</property>
<property name="sizeConstraint">
<enum>QLayout::SetMinimumSize</enum>
</property>
<item>
<widget class="QPushButton" name="liftoffButton">
<widget class="QPushButton" name="abortButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>26</width>
......@@ -638,17 +201,17 @@ QMenu::separator {
</size>
</property>
<property name="toolTip">
<string>Liftoff / Launch</string>
<string>Emergency land system at closest possible site</string>
</property>
<property name="statusTip">
<string>Liftoff / Launch</string>
<string>Emergency land system at closest possible site</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../../qgroundcontrol.qrc">
<normaloff>:/files/images/control/launch.svg</normaloff>:/files/images/control/launch.svg</iconset>
<normaloff>:/files/images/actions/media-playback-stop.svg</normaloff>:/files/images/actions/media-playback-stop.svg</iconset>
</property>
</widget>
</item>
......@@ -740,7 +303,13 @@ QMenu::separator {
</widget>
</item>
<item>
<widget class="QPushButton" name="shutdownButton">
<widget class="QPushButton" name="killButton">
<property name="minimumSize">
<size>
<width>26</width>
<height>22</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>38</width>
......@@ -748,34 +317,22 @@ QMenu::separator {
</size>
</property>
<property name="toolTip">
<string>Only in standby mode: Power off system</string>
<string>Kill immediately all onboard power</string>
</property>
<property name="statusTip">
<string>Only in standby mode: Power off system</string>
<string>Kill immediately all onboard power</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../../qgroundcontrol.qrc">
<normaloff>:/files/images/actions/system-log-out.svg</normaloff>:/files/images/actions/system-log-out.svg</iconset>
<normaloff>:/files/images/actions/process-stop.svg</normaloff>:/files/images/actions/process-stop.svg</iconset>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="abortButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>26</width>
<height>22</height>
</size>
</property>
<widget class="QPushButton" name="shutdownButton">
<property name="maximumSize">
<size>
<width>38</width>
......@@ -783,59 +340,161 @@ QMenu::separator {
</size>
</property>
<property name="toolTip">
<string>Emergency land system at closest possible site</string>
<string>Only in standby mode: Power off system</string>
</property>
<property name="statusTip">
<string>Emergency land system at closest possible site</string>
<string>Only in standby mode: Power off system</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../../qgroundcontrol.qrc">
<normaloff>:/files/images/actions/media-playback-stop.svg</normaloff>:/files/images/actions/media-playback-stop.svg</iconset>
<normaloff>:/files/images/actions/system-log-out.svg</normaloff>:/files/images/actions/system-log-out.svg</iconset>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="killButton">
<property name="minimumSize">
<size>
<width>26</width>
<height>22</height>
</size>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="spacing">
<number>4</number>
</property>
<property name="sizeConstraint">
<enum>QLayout::SetMinimumSize</enum>
</property>
</layout>
</item>
</layout>
</item>
<item row="1" column="1">
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QLabel" name="nameLabel">
<property name="maximumSize">
<size>
<width>38</width>
<height>22</height>
<width>16777215</width>
<height>16</height>
</size>
</property>
<property name="font">
<font>
<weight>75</weight>
<italic>false</italic>
<bold>true</bold>
</font>
</property>
<property name="toolTip">
<string>Kill immediately all onboard power</string>
<string>System Name</string>
</property>
<property name="statusTip">
<string>Kill immediately all onboard power</string>
<string>System Name</string>
</property>
<property name="text">
<string/>
<string>UAS001</string>
</property>
<property name="icon">
<iconset resource="../../qgroundcontrol.qrc">
<normaloff>:/files/images/actions/process-stop.svg</normaloff>:/files/images/actions/process-stop.svg</iconset>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLabel" name="timeRemainingLabel">
<property name="font">
<font>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
</font>
</property>
<property name="toolTip">
<string>Remaining flight time</string>
</property>
<property name="statusTip">
<string>Remaining flight time</string>
</property>
<property name="text">
<string>00:00:00</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="timeElapsedLabel">
<property name="font">
<font>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
</font>
</property>
<property name="toolTip">
<string>Uptime</string>
</property>
<property name="statusTip">
<string>Uptime</string>
</property>
<property name="text">
<string>00:00:00</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
</item>
<item row="8" column="0" colspan="8">
<widget class="QLabel" name="statusTextLabel">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QLabel" name="groundDistanceLabel">
<property name="font">
<font>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
</font>
</property>
<property name="toolTip">
<string>Altitude</string>
</property>
<property name="statusTip">
<string>Altitude</string>
</property>
<property name="text">
<string>Waiting for first status update..</string>
<string>00.00 m</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="speedLabel">
<property name="font">
<font>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
</font>
</property>
<property name="toolTip">
<string>Ground Speed</string>
</property>
<property name="statusTip">
<string>Ground Speed</string>
</property>
<property name="text">
<string>00.0 m/s</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="6" column="6">
</layout>
</item>
<item>
<widget class="QLabel" name="stateLabel">
<property name="maximumSize">
<size>
......@@ -845,7 +504,6 @@ QMenu::separator {
</property>
<property name="font">
<font>
<pointsize>-1</pointsize>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
......@@ -856,35 +514,107 @@ QMenu::separator {
</property>
</widget>
</item>
<item row="6" column="2" colspan="3">
<widget class="QLabel" name="navLabel">
</layout>
</item>
<item row="1" column="2">
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QLabel" name="modeLabel">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16</height>
</size>
</property>
<property name="font">
<font>
<pointsize>-1</pointsize>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>NAV</string>
<string>MODE</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="5" rowspan="7">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<item>
<widget class="QLabel" name="positionLabel">
<property name="minimumSize">
<size>
<width>0</width>
<height>12</height>
</size>
</property>
<property name="sizeHint" stdset="0">
<property name="maximumSize">
<size>
<width>8</width>
<height>20</height>
<width>16777215</width>
<height>12</height>
</size>
</property>
</spacer>
<property name="font">
<font>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
</font>
</property>
<property name="toolTip">
<string>Current Position</string>
</property>
<property name="statusTip">
<string>Current Position</string>
</property>
<property name="text">
<string>00.0 00.0 00.0 m</string>
</property>
</widget>
</item>
<item>
<widget class="QProgressBar" name="thrustBar">
<property name="font">
<font/>
</property>
<property name="toolTip">
<string>Current throttle</string>
</property>
<property name="statusTip">
<string>Current throttle</string>
</property>
<property name="value">
<number>0</number>
</property>
<property name="format">
<string>throttle %p%</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="navLabel">
<property name="font">
<font>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>NAV</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="statusTextLabel">
<property name="text">
<string>Waiting for first status update..</string>
</property>
</widget>
</item>
</layout>
......
......@@ -6,20 +6,38 @@
<rect>
<x>0</x>
<y>0</y>
<width>372</width>
<height>309</height>
<width>174</width>
<height>174</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout" rowstretch="90,30">
<layout class="QGridLayout" name="gridLayout" rowstretch="0">
<property name="margin">
<number>0</number>
</property>
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QToolButton" name="connectButton">
<widget class="QPushButton" name="connectButton">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>150</height>
<width>174</width>
<height>174</height>
</size>
</property>
<property name="sizeIncrement">
......@@ -35,28 +53,7 @@
</size>
</property>
<property name="styleSheet">
<string notr="true">
QToolButton {
color: #222222;
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #80B81D, stop: 1 #306807);
margin: 15px;
padding: 20px;
border-radius: 18px;
min-height: 100px;
border: 2px solid #085B35;
}
QToolButton:pressed {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #306807, stop: 1 #80B81D);
color: #222222;
border-color: #D1892A;
}
QToolButton:checked {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #306807, stop: 1 #80B81D);
color: #222222;
border-color: #D1892A;
}</string>
<string notr="true"/>
</property>
<property name="text">
<string/>
......@@ -71,24 +68,8 @@ border-color: #D1892A;
<height>140</height>
</size>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonIconOnly</enum>
</property>
</widget>
</item>
<item row="1" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<resources>
......
......@@ -48,19 +48,11 @@ This file is part of the PIXHAWK project
UASListWidget::UASListWidget(QWidget *parent) : QWidget(parent), m_ui(new Ui::UASList)
{
m_ui->setupUi(this);
listLayout = new QVBoxLayout(this);
listLayout->setMargin(0);
listLayout->setSpacing(3);
listLayout->setAlignment(Qt::AlignTop);
this->setLayout(listLayout);
setObjectName("UNMANNED_SYSTEMS_LIST");
m_ui->verticalLayout->setAlignment(Qt::AlignTop);
// Construct initial widget
uWidget = new QGCUnconnectedInfoWidget(this);
listLayout->addWidget(uWidget);
this->setMinimumWidth(262);
m_ui->verticalLayout->addWidget(uWidget);
uasViews = QMap<UASInterface*, UASView*>();
......@@ -98,7 +90,7 @@ void UASListWidget::addUAS(UASInterface* uas)
{
if (uasViews.isEmpty())
{
listLayout->removeWidget(uWidget);
m_ui->verticalLayout->removeWidget(uWidget);
delete uWidget;
uWidget = NULL;
}
......@@ -106,7 +98,7 @@ void UASListWidget::addUAS(UASInterface* uas)
if (!uasViews.contains(uas))
{
uasViews.insert(uas, new UASView(uas, this));
listLayout->addWidget(uasViews.value(uas));
m_ui->verticalLayout->addWidget(uasViews.value(uas));
//connect(uas, SIGNAL(destroyed(QObject*)), this, SLOT(removeUAS(QObject*)));
}
}
......@@ -126,4 +118,3 @@ void UASListWidget::removeUAS(UASInterface* uas)
// listLayout->removeWidget(uasViews.value(uas));
// uasViews.value(uas)->deleteLater();
}
......@@ -54,7 +54,6 @@ public slots:
protected:
QMap<UASInterface*, UASView*> uasViews;
QVBoxLayout* listLayout;
QGCUnconnectedInfoWidget* uWidget;
void changeEvent(QEvent *e);
......
......@@ -47,6 +47,7 @@ UASView::UASView(UASInterface* uas, QWidget *parent) :
startTime(0),
timeout(false),
iconIsRed(true),
disconnected(false),
timeRemaining(0),
chargeLevel(0),
uas(uas),
......@@ -104,7 +105,7 @@ UASView::UASView(UASInterface* uas, QWidget *parent) :
connect(uas, SIGNAL(navModeChanged(int, int, QString)), this, SLOT(updateNavMode(int, int, QString)));
// Setup UAS selection
connect(m_ui->uasViewFrame, SIGNAL(clicked(bool)), this, SLOT(setUASasActive(bool)));
connect(this, SIGNAL(clicked(bool)), this, SLOT(setUASasActive(bool)));
// Setup user interaction
connect(m_ui->liftoffButton, SIGNAL(clicked()), uas, SLOT(launch()));
......@@ -139,8 +140,6 @@ UASView::UASView(UASInterface* uas, QWidget *parent) :
m_ui->nameLabel->setText(uas->getUASName());
}
setBackgroundColor();
// Heartbeat fade
refreshTimer = new QTimer(this);
connect(refreshTimer, SIGNAL(timeout()), this, SLOT(refresh()));
......@@ -153,7 +152,13 @@ UASView::UASView(UASInterface* uas, QWidget *parent) :
refreshTimer->start(updateInterval);
}
// Hide kill and shutdown buttons per default
// Style some elements by default to the UAS' color.
heartbeatColor = uas->getColor();
QString colorstyle("QLabel { background-color: %1; }");
m_ui->typeLabel->setStyleSheet(colorstyle.arg(heartbeatColor.name()));
updateActiveUAS(uas, false);
// Hide kill and shutdown buttons by default
m_ui->killButton->hide();
m_ui->shutdownButton->hide();
......@@ -193,30 +198,6 @@ void UASView::showStatusText(int uasid, int componentid, int severity, QString t
stateDesc = text;
}
/**
* Set the background color based on the MAV color. If the MAV is selected as the
* currently actively controlled system, the frame color is highlighted
*/
void UASView::setBackgroundColor()
{
// UAS color
QColor uasColor = uas->getColor();
QString colorstyle;
QString borderColor = "#4A4A4F";
if (isActive)
{
borderColor = "#FA4A4F";
uasColor = uasColor.darker(475);
}
else
{
uasColor = uasColor.darker(675);
}
colorstyle = colorstyle.sprintf("QGroupBox { border-radius: 12px; padding: 0px; margin: 0px; background-color: #%02X%02X%02X; border: 2px solid %s; }",
uasColor.red(), uasColor.green(), uasColor.blue(), borderColor.toStdString().c_str());
m_ui->uasViewFrame->setStyleSheet(colorstyle);
}
void UASView::setUASasActive(bool active)
{
if (active)
......@@ -230,7 +211,14 @@ void UASView::updateActiveUAS(UASInterface* uas, bool active)
if (uas == this->uas)
{
this->isActive = active;
setBackgroundColor();
if (active)
{
setStyleSheet("UASView { border-width: 3px}");
}
else
{
setStyleSheet(QString("UASView { border-color: %1}").arg(heartbeatColor.name()));
}
}
}
......@@ -295,11 +283,16 @@ void UASView::hideEvent(QHideEvent* event)
void UASView::receiveHeartbeat(UASInterface* uas)
{
Q_UNUSED(uas);
heartbeatColor = QColor(20, 200, 20);
QString colorstyle("QGroupBox { border-radius: 5px; padding: 2px; margin: 0px; border: 0px; background-color: %1; }");
m_ui->heartbeatIcon->setStyleSheet(colorstyle.arg(heartbeatColor.name()));
if (timeout) setBackgroundColor();
heartbeatColor = uas->getColor();
QString colorstyle("QLabel { background-color: %1; }");
m_ui->heartBeatLabel->setStyleSheet(colorstyle.arg(heartbeatColor.name()));
// If we're returning from a disconnection, recolor things properly.
if (disconnected)
{
updateActiveUAS(this->uas, this->isActive);
disconnected = false;
}
timeout = false;
}
......@@ -323,22 +316,22 @@ void UASView::setSystemType(UASInterface* uas, unsigned int systemType)
switch (systemType)
{
case MAV_TYPE_GENERIC:
m_ui->typeButton->setIcon(QIcon(":/files/images/mavs/generic.svg"));
m_ui->typeLabel->setPixmap(QPixmap(":/files/images/mavs/generic.svg"));
break;
case MAV_TYPE_FIXED_WING:
m_ui->typeButton->setIcon(QIcon(":/files/images/mavs/fixed-wing.svg"));
m_ui->typeLabel->setPixmap(QPixmap(":/files/images/mavs/fixed-wing.svg"));
break;
case MAV_TYPE_QUADROTOR:
m_ui->typeButton->setIcon(QIcon(":/files/images/mavs/quadrotor.svg"));
m_ui->typeLabel->setPixmap(QPixmap(":/files/images/mavs/quadrotor.svg"));
break;
case MAV_TYPE_COAXIAL:
m_ui->typeButton->setIcon(QIcon(":/files/images/mavs/coaxial.svg"));
m_ui->typeLabel->setPixmap(QPixmap(":/files/images/mavs/coaxial.svg"));
break;
case MAV_TYPE_HELICOPTER:
m_ui->typeButton->setIcon(QIcon(":/files/images/mavs/helicopter.svg"));
m_ui->typeLabel->setPixmap(QPixmap(":/files/images/mavs/helicopter.svg"));
break;
case MAV_TYPE_ANTENNA_TRACKER:
m_ui->typeButton->setIcon(QIcon(":/files/images/mavs/unknown.svg"));
m_ui->typeLabel->setPixmap(QPixmap(":/files/images/mavs/unknown.svg"));
break;
case MAV_TYPE_GCS: {
// A groundstation is a special system type, update widget
......@@ -356,44 +349,44 @@ void UASView::setSystemType(UASInterface* uas, unsigned int systemType)
m_ui->landButton->hide();
m_ui->shutdownButton->hide();
m_ui->abortButton->hide();
m_ui->typeButton->setIcon(QIcon(":/files/images/mavs/groundstation.svg"));
m_ui->typeLabel->setPixmap(QPixmap(":/files/images/mavs/groundstation.svg"));
}
break;
case MAV_TYPE_AIRSHIP:
m_ui->typeButton->setIcon(QIcon(":files/images/mavs/airship.svg"));
m_ui->typeLabel->setPixmap(QPixmap(":files/images/mavs/airship.svg"));
break;
case MAV_TYPE_FREE_BALLOON:
m_ui->typeButton->setIcon(QIcon(":files/images/mavs/free-balloon.svg"));
m_ui->typeLabel->setPixmap(QPixmap(":files/images/mavs/free-balloon.svg"));
break;
case MAV_TYPE_ROCKET:
m_ui->typeButton->setIcon(QIcon(":files/images/mavs/rocket.svg"));
m_ui->typeLabel->setPixmap(QPixmap(":files/images/mavs/rocket.svg"));
break;
case MAV_TYPE_GROUND_ROVER:
m_ui->typeButton->setIcon(QIcon(":files/images/mavs/ground-rover.svg"));
m_ui->typeLabel->setPixmap(QPixmap(":files/images/mavs/ground-rover.svg"));
break;
case MAV_TYPE_SURFACE_BOAT:
m_ui->typeButton->setIcon(QIcon(":files/images/mavs/surface-boat.svg"));
m_ui->typeLabel->setPixmap(QPixmap(":files/images/mavs/surface-boat.svg"));
break;
case MAV_TYPE_SUBMARINE:
m_ui->typeButton->setIcon(QIcon(":files/images/mavs/submarine.svg"));
m_ui->typeLabel->setPixmap(QPixmap(":files/images/mavs/submarine.svg"));
break;
case MAV_TYPE_HEXAROTOR:
m_ui->typeButton->setIcon(QIcon(":files/images/mavs/hexarotor.svg"));
m_ui->typeLabel->setPixmap(QPixmap(":files/images/mavs/hexarotor.svg"));
break;
case MAV_TYPE_OCTOROTOR:
m_ui->typeButton->setIcon(QIcon(":files/images/mavs/octorotor.svg"));
m_ui->typeLabel->setPixmap(QPixmap(":files/images/mavs/octorotor.svg"));
break;
case MAV_TYPE_TRICOPTER:
m_ui->typeButton->setIcon(QIcon(":files/images/mavs/tricopter.svg"));
m_ui->typeLabel->setPixmap(QPixmap(":files/images/mavs/tricopter.svg"));
break;
case MAV_TYPE_FLAPPING_WING:
m_ui->typeButton->setIcon(QIcon(":files/images/mavs/flapping-wing.svg"));
m_ui->typeLabel->setPixmap(QPixmap(":files/images/mavs/flapping-wing.svg"));
break;
case MAV_TYPE_KITE:
m_ui->typeButton->setIcon(QIcon(":files/images/mavs/kite.svg"));
m_ui->typeLabel->setPixmap(QPixmap(":files/images/mavs/kite.svg"));
break;
default:
m_ui->typeButton->setIcon(QIcon(":/files/images/mavs/unknown.svg"));
m_ui->typeLabel->setPixmap(QPixmap(":/files/images/mavs/unknown.svg"));
break;
}
}
......@@ -677,54 +670,39 @@ void UASView::refresh()
}
generalUpdateCount++;
QString colorstyle("QGroupBox { border-radius: 5px; padding: 2px; margin: 0px; border: 0px; background-color: %1; }");
if (timeout)
{
// CRITICAL CONDITION, NO HEARTBEAT
disconnected = true;
QString borderColor = "#FFFF00";
if (isActive)
{
borderColor = "#FA4A4F";
}
QColor warnColor;
if (iconIsRed)
{
QColor warnColor(Qt::red);
m_ui->heartbeatIcon->setStyleSheet(colorstyle.arg(warnColor.name()));
QString style = QString("QGroupBox { border-radius: 12px; padding: 0px; margin: 0px; border: 2px solid %1; background-color: %2; }").arg(borderColor, warnColor.name());
m_ui->uasViewFrame->setStyleSheet(style);
warnColor = Qt::red;
}
else
{
QColor warnColor(Qt::black);
m_ui->heartbeatIcon->setStyleSheet(colorstyle.arg(warnColor.name()));
QString style = QString("QGroupBox { border-radius: 12px; padding: 0px; margin: 0px; border: 2px solid %1; background-color: %2; }").arg(borderColor, warnColor.name());
m_ui->uasViewFrame->setStyleSheet(style);
warnColor = Qt::darkRed;
refreshTimer->setInterval(errorUpdateInterval);
refreshTimer->start();
}
QString style = QString("UASView {background-color: %1;}").arg(warnColor.name());
this->setStyleSheet(style);
iconIsRed = !iconIsRed;
}
else
{
// If we're not in low power mode, add the additional visual effect of
// fading out the color of the heartbeat for this UAS.
if (!lowPowerModeEnabled)
{
// Fade heartbeat icon
// Make color darker
heartbeatColor = heartbeatColor.darker(210);
//m_ui->heartbeatIcon->setAutoFillBackground(true);
m_ui->heartbeatIcon->setStyleSheet(colorstyle.arg(heartbeatColor.name()));
heartbeatColor = heartbeatColor.darker(110);
QString colorstyle("QLabel {background-color: %1;}");
m_ui->heartBeatLabel->setStyleSheet(colorstyle.arg(heartbeatColor.name()));
refreshTimer->setInterval(updateInterval);
refreshTimer->start();
}
}
//setUpdatesEnabled(true);
//setUpdatesEnabled(false);
}
void UASView::changeEvent(QEvent *e)
......@@ -739,3 +717,14 @@ void UASView::changeEvent(QEvent *e)
break;
}
}
/**
* Implement paintEvent() so that stylesheets work for our custom widget.
*/
void UASView::paintEvent(QPaintEvent *)
{
QStyleOption opt;
opt.init(this);
QPainter p(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}
......@@ -80,8 +80,6 @@ public slots:
void updateActiveUAS(UASInterface* uas, bool active);
/** @brief Set the widget into critical mode */
void heartbeatTimeout(bool timeout, unsigned int ms);
/** @brief Set the background color for the widget */
void setBackgroundColor();
/** @brief Bring up the dialog to rename the system */
void rename();
/** @brief Select airframe for this vehicle */
......@@ -100,6 +98,7 @@ protected:
quint64 startTime;
bool timeout;
bool iconIsRed;
bool disconnected;
int timeRemaining;
float chargeLevel;
UASInterface* uas;
......@@ -146,6 +145,7 @@ protected:
private:
Ui::UASView *m_ui;
virtual void paintEvent(QPaintEvent *);
signals:
void uasInFocus(UASInterface* uas);
......
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