Ref T571, radar component style and layout

* grid layout for buttons
* using string builder
This commit is contained in:
Klaus Basan
2019-03-20 00:55:38 +01:00
committed by Mat Sutcliffe
parent 781253a6ad
commit d0809f4b22
3 changed files with 115 additions and 107 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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>