From 3460b927a301725243cc882f0a9bc07a5b117c1f Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sun, 30 Sep 2018 22:38:55 +0200 Subject: [PATCH] Ref T372, interpolation log.display show min/max/mean times and allow to stop by entering empty callsign --- .../components/interpolationlogdisplay.cpp | 31 ++++++++++++------- .../components/interpolationlogdisplay.ui | 7 +++++ 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/src/blackgui/components/interpolationlogdisplay.cpp b/src/blackgui/components/interpolationlogdisplay.cpp index 12f0d8b95..d5969691c 100644 --- a/src/blackgui/components/interpolationlogdisplay.cpp +++ b/src/blackgui/components/interpolationlogdisplay.cpp @@ -14,6 +14,7 @@ #include "blackcore/context/contextnetworkimpl.h" #include "blackcore/context/contextsimulator.h" #include "blackcore/airspacemonitor.h" +#include "blackmisc/timestampobjectlist.h" #include "blackmisc/stringutils.h" using namespace BlackCore; @@ -55,7 +56,7 @@ namespace BlackGui ui->tvp_InboundAircraftSituations->setWithMenuRequestElevation(true); connect(&m_updateTimer, &QTimer::timeout, this, &CInterpolationLogDisplay::updateLog); - connect(ui->comp_CallsignCompleter, &CCallsignCompleter::validCallsignEntered, this, &CInterpolationLogDisplay::onCallsignEntered); + connect(ui->comp_CallsignCompleter, &CCallsignCompleter::editingFinished, this, &CInterpolationLogDisplay::onCallsignEntered); connect(ui->hs_UpdateTime, &QSlider::valueChanged, this, &CInterpolationLogDisplay::onSliderChanged); connect(ui->pb_StartStop, &QPushButton::released, this, &CInterpolationLogDisplay::toggleStartStop); connect(ui->pb_ResetLastSent, &QPushButton::released, this, &CInterpolationLogDisplay::resetLastSentValues); @@ -195,29 +196,32 @@ namespace BlackGui void CInterpolationLogDisplay::onCallsignEntered() { - const CCallsign cs = ui->comp_CallsignCompleter->getCallsign(); if (!m_simulator) { this->stop(); return; } + + const CCallsign cs = ui->comp_CallsignCompleter->getCallsign(); if (m_callsign == cs) { return; } + // empty callsign, just stop + if (cs.isEmpty()) + { + this->stop(); + m_callsign.clear(); + return; + } + // clear last callsign if (!m_callsign.isEmpty()) { m_simulator->setLogInterpolation(false, m_callsign); // stop logging "old" callsign - m_callsign = CCallsign(); // clear callsign + m_callsign.clear(); // clear callsign this->clear(); } // set new callsign or stop - if (cs.isEmpty()) - { - this->stop(); - return; - } - m_callsign = cs; m_simulator->setLogInterpolation(true, cs); if (!this->start()) @@ -299,12 +303,17 @@ namespace BlackGui void CInterpolationLogDisplay::onSituationAdded(const CAircraftSituation &situation) { + static const QString info("times: %1 offset %2"); + const CCallsign cs = situation.getCallsign(); if (!this->logCallsign(cs)) { return; } const CAircraftSituationList situations = m_airspaceMonitor->remoteAircraftSituations(cs); + const MillisecondsMinMaxMean tsDiffMsMinMaxMean = situations.getTimestampDifferenceMinMaxMean(); + const MillisecondsMinMaxMean offsetMsMinMaxMean = situations.getOffsetMinMaxMean(); const CAircraftSituationChangeList changes = m_airspaceMonitor->remoteAircraftSituationChanges(cs); ui->tvp_InboundAircraftSituations->updateContainerAsync(situations); ui->tvp_Changes->updateContainerMaybeAsync(changes); + ui->le_InboundSituationsInfo->setText(info.arg(tsDiffMsMinMaxMean.asString(), offsetMsMinMaxMean.asString())); ui->led_Situation->blink(); } @@ -392,8 +401,8 @@ namespace BlackGui if (!sApp || sApp->isShuttingDown()) { break; } // stop and return if (m_callsign.isEmpty()) { - static const CStatusMessage ms = CStatusMessage(this).validationError("No callsign"); - m = ms; + // static const CStatusMessage ms = CStatusMessage(this).validationError("No callsign for logging"); + // m = ms; break; } diff --git a/src/blackgui/components/interpolationlogdisplay.ui b/src/blackgui/components/interpolationlogdisplay.ui index 7e37fde1b..c89ff38a5 100644 --- a/src/blackgui/components/interpolationlogdisplay.ui +++ b/src/blackgui/components/interpolationlogdisplay.ui @@ -531,6 +531,13 @@ Inbound situations from network + + + + true + + +