mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-13 07:35:41 +08:00
Ref T571, radar component style and layout
* grid layout for buttons * using string builder
This commit is contained in:
committed by
Mat Sutcliffe
parent
781253a6ad
commit
d0809f4b22
@@ -35,17 +35,17 @@ namespace BlackGui
|
||||
|
||||
ui->gv_RadarView->setScene(&m_scene);
|
||||
|
||||
ui->cb_RadarRange->addItem(QString::number(0.5) + " nm", 0.5);
|
||||
ui->cb_RadarRange->addItem(QString::number(0.5) % u" nm", 0.5);
|
||||
for (qreal r = 1.0; r < 10; r += 1)
|
||||
{
|
||||
ui->cb_RadarRange->addItem(QString::number(r) + " nm", r);
|
||||
ui->cb_RadarRange->addItem(QString::number(r) % u" nm", r);
|
||||
}
|
||||
for (qreal r = 10; r < 91; r += 10)
|
||||
{
|
||||
ui->cb_RadarRange->addItem(QString::number(r) + " nm", r);
|
||||
ui->cb_RadarRange->addItem(QString::number(r) % u" nm", r);
|
||||
}
|
||||
|
||||
ui->cb_RadarRange->setCurrentText(QString::number(m_range) + " nm");
|
||||
ui->cb_RadarRange->setCurrentText(QString::number(m_rangeNM) % u" nm");
|
||||
|
||||
connect(ui->gv_RadarView, &CRadarView::radarViewResized, this, &CRadarComponent::fitInView);
|
||||
connect(ui->gv_RadarView, &CRadarView::zoomEvent, this, &CRadarComponent::changeRangeInSteps);
|
||||
@@ -53,7 +53,7 @@ namespace BlackGui
|
||||
|
||||
connect(ui->cb_RadarRange, qOverload<int>(&QComboBox::currentIndexChanged), this, &CRadarComponent::changeRangeFromUserSelection);
|
||||
connect(ui->cb_Callsign, &QCheckBox::toggled, this, &CRadarComponent::refreshTargets);
|
||||
connect(ui->cb_Heading, &QCheckBox::toggled, this, &CRadarComponent::refreshTargets);
|
||||
connect(ui->cb_Heading, &QCheckBox::toggled, this, &CRadarComponent::refreshTargets);
|
||||
connect(ui->cb_Altitude, &QCheckBox::toggled, this, &CRadarComponent::refreshTargets);
|
||||
connect(ui->cb_GroundSpeed, &QCheckBox::toggled, this, &CRadarComponent::refreshTargets);
|
||||
connect(ui->cb_Grid, &QCheckBox::toggled, this, &CRadarComponent::toggleGrid);
|
||||
@@ -142,16 +142,16 @@ namespace BlackGui
|
||||
|
||||
qDeleteAll(m_radarTargets.childItems());
|
||||
|
||||
if (sGui->getIContextNetwork()->isConnected())
|
||||
if (sGui->getIContextNetwork() && sGui->getIContextNetwork()->isConnected())
|
||||
{
|
||||
if (isVisibleWidget())
|
||||
{
|
||||
const CSimulatedAircraftList aircraft = sGui->getIContextNetwork()->getAircraftInRange();
|
||||
for (const CSimulatedAircraft &sa : aircraft)
|
||||
{
|
||||
double distanceNM = sa.getRelativeDistance().value(CLengthUnit::NM());
|
||||
double bearingRad = sa.getRelativeBearing().value(CAngleUnit::rad());
|
||||
int groundSpeedKts = sa.getGroundSpeed().valueInteger(CSpeedUnit::kts());
|
||||
const double distanceNM = sa.getRelativeDistance().value(CLengthUnit::NM());
|
||||
const double bearingRad = sa.getRelativeBearing().value(CAngleUnit::rad());
|
||||
const int groundSpeedKts = sa.getGroundSpeed().valueInteger(CSpeedUnit::kts());
|
||||
|
||||
QPointF position(distanceNM * qSin(bearingRad), -distanceNM * qCos(bearingRad));
|
||||
|
||||
@@ -165,18 +165,17 @@ namespace BlackGui
|
||||
QString tagText;
|
||||
if (ui->cb_Callsign->isChecked())
|
||||
{
|
||||
tagText += sa.getCallsignAsString() % QStringLiteral("\n");
|
||||
tagText += sa.getCallsignAsString() % u"\n";
|
||||
}
|
||||
if (ui->cb_Altitude->isChecked())
|
||||
{
|
||||
int flightLeveL = sa.getAltitude().valueInteger(CLengthUnit::ft()) / 100;
|
||||
tagText += "FL" % QString("%1").arg(flightLeveL, 3, 10, QChar('0'));
|
||||
tagText += u"FL" % QStringLiteral("%1").arg(flightLeveL, 3, 10, QChar('0'));
|
||||
}
|
||||
if (ui->cb_GroundSpeed->isChecked())
|
||||
{
|
||||
if (! tagText.isEmpty()) tagText += QStringLiteral(" ");
|
||||
|
||||
tagText += QString::number(groundSpeedKts) % " kt";
|
||||
if (!tagText.isEmpty()) tagText += QStringLiteral(" ");
|
||||
tagText += QString::number(groundSpeedKts) % u" kt";
|
||||
}
|
||||
|
||||
tag->setPlainText(tagText);
|
||||
@@ -207,35 +206,35 @@ namespace BlackGui
|
||||
|
||||
void CRadarComponent::fitInView()
|
||||
{
|
||||
ui->gv_RadarView->fitInView(-m_range, -m_range, 2.0 * m_range, 2.0 * m_range, Qt::KeepAspectRatio);
|
||||
ui->gv_RadarView->fitInView(-m_rangeNM, -m_rangeNM, 2.0 * m_rangeNM, 2.0 * m_rangeNM, Qt::KeepAspectRatio);
|
||||
}
|
||||
|
||||
void CRadarComponent::changeRangeInSteps(bool zoomIn)
|
||||
{
|
||||
qreal direction = zoomIn ? 1.0 : -1.0;
|
||||
double factor = 10.0;
|
||||
if (m_range < 10.0 || (qFuzzyCompare(m_range, 10.0) && zoomIn))
|
||||
if (m_rangeNM < 10.0 || (qFuzzyCompare(m_rangeNM, 10.0) && zoomIn))
|
||||
{
|
||||
factor = 1.0;
|
||||
}
|
||||
|
||||
if (m_range < 1.0 || (qFuzzyCompare(m_range, 1.0) && zoomIn))
|
||||
if (m_rangeNM < 1.0 || (qFuzzyCompare(m_rangeNM, 1.0) && zoomIn))
|
||||
{
|
||||
factor = 0.5;
|
||||
}
|
||||
|
||||
m_range = m_range - direction * factor;
|
||||
m_range = qMin(90.0, qMax(0.5, m_range));
|
||||
ui->cb_RadarRange->setCurrentText(QString::number(m_range) + " nm");
|
||||
m_rangeNM = m_rangeNM - direction * factor;
|
||||
m_rangeNM = qMin(90.0, qMax(0.5, m_rangeNM));
|
||||
ui->cb_RadarRange->setCurrentText(QString::number(m_rangeNM) % u" nm");
|
||||
fitInView();
|
||||
}
|
||||
|
||||
void CRadarComponent::changeRangeFromUserSelection(int index)
|
||||
{
|
||||
double range = ui->cb_RadarRange->itemData(index).toDouble();
|
||||
if (! qFuzzyCompare(m_range, range))
|
||||
if (! qFuzzyCompare(m_rangeNM, range))
|
||||
{
|
||||
m_range = range;
|
||||
m_rangeNM = range;
|
||||
fitInView();
|
||||
}
|
||||
}
|
||||
@@ -258,6 +257,5 @@ namespace BlackGui
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
} // namespace
|
||||
} // namespace
|
||||
|
||||
@@ -69,10 +69,11 @@ namespace BlackGui
|
||||
|
||||
QPen m_radarTargetPen = { Qt::green, 1 };
|
||||
|
||||
qreal m_range = 10.0;
|
||||
qreal m_rangeNM = 10.0;
|
||||
|
||||
QTimer m_updateTimer;
|
||||
};
|
||||
} // ns
|
||||
} // ns
|
||||
|
||||
#endif // guard
|
||||
|
||||
@@ -6,59 +6,84 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>305</width>
|
||||
<height>414</height>
|
||||
<width>270</width>
|
||||
<height>259</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Log component</string>
|
||||
<string>Radar screen</string>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Plain</enum>
|
||||
</property>
|
||||
<property name="lineWidth">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<layout class="QVBoxLayout" name="vl_RadarComponent">
|
||||
<property name="leftMargin">
|
||||
<number>1</number>
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>1</number>
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>1</number>
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>1</number>
|
||||
<number>3</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="BlackGui::Views::CRadarView" name="gv_RadarView"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QFrame" name="frame">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<widget class="QFrame" name="fr_RadarSettings">
|
||||
<layout class="QGridLayout" name="gl_RadarSettings">
|
||||
<property name="leftMargin">
|
||||
<number>1</number>
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>1</number>
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>1</number>
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>1</number>
|
||||
<number>2</number>
|
||||
</property>
|
||||
<item row="0" column="1">
|
||||
<widget class="QCheckBox" name="cb_Heading">
|
||||
<property name="text">
|
||||
<string>Heading Bug</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QCheckBox" name="cb_Grid">
|
||||
<property name="text">
|
||||
<string>Grid</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<widget class="QCheckBox" name="cb_Altitude">
|
||||
<property name="text">
|
||||
<string>Altitude (FL)</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QCheckBox" name="cb_GroundSpeed">
|
||||
<property name="text">
|
||||
<string>GroundSpeed</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QCheckBox" name="cb_Callsign">
|
||||
<property name="text">
|
||||
@@ -69,60 +94,35 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1" colspan="2">
|
||||
<widget class="QCheckBox" name="cb_Heading">
|
||||
<property name="text">
|
||||
<string>Heading Bug</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="3" colspan="2">
|
||||
<widget class="QCheckBox" name="cb_Altitude">
|
||||
<property name="text">
|
||||
<string>Altitude (FL)</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="QCheckBox" name="cb_Grid">
|
||||
<property name="text">
|
||||
<string>Grid</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="3">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="layoutDirection">
|
||||
<enum>Qt::LeftToRight</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Range</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="4">
|
||||
<widget class="QComboBox" name="cb_RadarRange"/>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="2">
|
||||
<widget class="QCheckBox" name="cb_GroundSpeed">
|
||||
<property name="text">
|
||||
<string>GroundSpeed</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<widget class="QFrame" name="fr_Range">
|
||||
<layout class="QFormLayout" name="fl_Range">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="lbl_Range">
|
||||
<property name="text">
|
||||
<string>Range</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QComboBox" name="cb_RadarRange"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
@@ -137,6 +137,15 @@
|
||||
<header>blackgui/views/radarview.h</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<tabstops>
|
||||
<tabstop>gv_RadarView</tabstop>
|
||||
<tabstop>cb_Callsign</tabstop>
|
||||
<tabstop>cb_Heading</tabstop>
|
||||
<tabstop>cb_Altitude</tabstop>
|
||||
<tabstop>cb_GroundSpeed</tabstop>
|
||||
<tabstop>cb_Grid</tabstop>
|
||||
<tabstop>cb_RadarRange</tabstop>
|
||||
</tabstops>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
||||
Reference in New Issue
Block a user