From 5c9e670705b3ff1778769a1cc7523ca11f80a4c1 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Wed, 18 Jul 2018 03:32:18 +0200 Subject: [PATCH] Ref T268, log.display UI allows to display "loopback" situations --- .../components/interpolationlogdisplay.cpp | 44 +++++++++---- .../components/interpolationlogdisplay.h | 13 +++- .../components/interpolationlogdisplay.ui | 61 +++++++++++++++++-- 3 files changed, 100 insertions(+), 18 deletions(-) diff --git a/src/blackgui/components/interpolationlogdisplay.cpp b/src/blackgui/components/interpolationlogdisplay.cpp index 976eedeab..afd891d7f 100644 --- a/src/blackgui/components/interpolationlogdisplay.cpp +++ b/src/blackgui/components/interpolationlogdisplay.cpp @@ -13,7 +13,6 @@ #include "blackcore/context/contextnetworkimpl.h" #include "blackcore/context/contextsimulator.h" #include "blackcore/airspacemonitor.h" -#include "blackmisc/simulation/interpolationlogger.h" #include "blackmisc/stringutils.h" using namespace BlackCore; @@ -51,7 +50,7 @@ namespace BlackGui ui->led_Updating->setValues(CLedWidget::Yellow, CLedWidget::Black, shape, "Just updating", "Idle", 14); m_callsign = ui->comp_CallsignCompleter->getCallsign(); - ui->tvp_AircraftSituations->setWithMenuRequestElevation(true); + ui->tvp_InboundAircraftSituations->setWithMenuRequestElevation(true); connect(&m_updateTimer, &QTimer::timeout, this, &CInterpolationLogDisplay::updateLog); connect(ui->comp_CallsignCompleter, &CCallsignCompleter::validCallsignEntered, this, &CInterpolationLogDisplay::onCallsignEntered); @@ -63,9 +62,9 @@ namespace BlackGui connect(ui->pb_FollowInSimulator, &QPushButton::released, this, &CInterpolationLogDisplay::followInSimulator); connect(ui->pb_RequestElevation1, &QPushButton::released, this, &CInterpolationLogDisplay::requestElevationClicked); connect(ui->pb_RequestElevation2, &QPushButton::released, this, &CInterpolationLogDisplay::requestElevationClicked); - connect(ui->pb_GetLastInterpolation, &QPushButton::released, this, &CInterpolationLogDisplay::displayLastInterpolation); + connect(ui->pb_GetLastInterpolation, &QPushButton::released, this, &CInterpolationLogDisplay::getLogAmdDisplayLastInterpolation); connect(ui->pb_InjectElevation, &QPushButton::released, this, &CInterpolationLogDisplay::onInjectElevation); - connect(ui->tvp_AircraftSituations, &CAircraftSituationView::requestElevation, this, &CInterpolationLogDisplay::requestElevation); + connect(ui->tvp_InboundAircraftSituations, &CAircraftSituationView::requestElevation, this, &CInterpolationLogDisplay::requestElevation); connect(ui->le_InjectElevation, &QLineEdit::returnPressed, this, &CInterpolationLogDisplay::onInjectElevation); connect(sGui, &CGuiApplication::aboutToShutdown, this, &CInterpolationLogDisplay::onAboutToShutdown); } @@ -114,6 +113,9 @@ namespace BlackGui return; } + const SituationLog sLog = m_simulator->interpolationLogger().getLastSituationLog(); + m_lastInterpolations.push_frontKeepLatestAdjustedFirst(sLog.situationCurrent, true, 10); + // only display visible tab if (ui->tw_LogTabs->currentWidget() == ui->tb_TextLog) { @@ -146,15 +148,24 @@ namespace BlackGui ui->le_GndFlag->setText(boolToYesNo(client.hasGndFlagCapability())); this->displayElevationRequestReceive(); - this->displayLastInterpolation(); + this->displayLastInterpolation(sLog); + } + else if (ui->tw_LogTabs->currentWidget() == ui->tb_Loopback) + { + this->displayLoopback(); } } - void CInterpolationLogDisplay::displayLastInterpolation() + void CInterpolationLogDisplay::getLogAmdDisplayLastInterpolation() + { + const SituationLog sLog = m_simulator->interpolationLogger().getLastSituationLog(); + this->displayLastInterpolation(sLog); + } + + void CInterpolationLogDisplay::displayLastInterpolation(const SituationLog &sLog) { if (!this->checkLogPrerequisites()) { return; } - const SituationLog sLog = m_simulator->interpolationLogger().getLastSituationLog(); ui->te_LastInterpolatedSituation->setText(sLog.situationCurrent.toQString(true)); ui->te_SituationChange->setText(sLog.change.toQString(true)); @@ -165,6 +176,13 @@ namespace BlackGui ui->te_LastInterpolatedParts->setText(pLog.parts.toQString(true)); } + void CInterpolationLogDisplay::displayLoopback() + { + if (!m_simulator) { return; } + ui->tvp_LoopbackAircraftSituations->updateContainerAsync(m_simulator->getLoopbackSituations(m_callsign)); + ui->tvp_InterpolatedAircraftSituations->updateContainerAsync(m_lastInterpolations); + } + void CInterpolationLogDisplay::onSliderChanged(int timeSecs) { static const QString time("%1secs"); @@ -282,7 +300,7 @@ namespace BlackGui if (!this->logCallsign(cs)) { return; } const CAircraftSituationList situations = m_airspaceMonitor->remoteAircraftSituations(cs); const CAircraftSituationChangeList changes = m_airspaceMonitor->remoteAircraftSituationChanges(cs); - ui->tvp_AircraftSituations->updateContainerAsync(situations); + ui->tvp_InboundAircraftSituations->updateContainerAsync(situations); ui->tvp_Changes->updateContainerMaybeAsync(changes); ui->led_Situation->blink(); } @@ -292,7 +310,7 @@ namespace BlackGui if (!this->logCallsign(callsign)) { return; } Q_UNUSED(parts); const CAircraftPartsList partsList = m_airspaceMonitor->remoteAircraftParts(callsign); - ui->tvp_AircraftParts->updateContainerAsync(partsList); + ui->tvp_InboundAircraftParts->updateContainerAsync(partsList); ui->led_Parts->blink(); } @@ -341,8 +359,8 @@ namespace BlackGui void CInterpolationLogDisplay::clear() { - ui->tvp_AircraftParts->clear(); - ui->tvp_AircraftSituations->clear(); + ui->tvp_InboundAircraftParts->clear(); + ui->tvp_InboundAircraftSituations->clear(); ui->te_TextLog->clear(); ui->le_CG->clear(); ui->le_Elevation->clear(); @@ -352,6 +370,8 @@ namespace BlackGui ui->le_UpdateTimes->clear(); ui->le_Limited->clear(); m_elvReceived = m_elvRequested = 0; + m_lastInterpolations.clear(); + m_lastLoopbackSituations.clear(); } bool CInterpolationLogDisplay::checkLogPrerequisites() @@ -376,7 +396,7 @@ namespace BlackGui break; } - if (!m_simulator->getLogCallsigns().contains(m_callsign)) + if (!m_simulator->isLogCallsign(m_callsign)) { static const CStatusMessage ms = CStatusMessage(this).validationError("No longer logging callsign"); m = ms; diff --git a/src/blackgui/components/interpolationlogdisplay.h b/src/blackgui/components/interpolationlogdisplay.h index a01f62d70..6d10ad7b1 100644 --- a/src/blackgui/components/interpolationlogdisplay.h +++ b/src/blackgui/components/interpolationlogdisplay.h @@ -15,6 +15,8 @@ #include "blackgui/overlaymessagesframe.h" #include "blackgui/blackguiexport.h" #include "blackcore/simulator.h" +#include "blackmisc/simulation/interpolationlogger.h" +#include "blackmisc/aviation/aircraftsituationlist.h" #include "blackmisc/aviation/callsign.h" #include "blackmisc/identifiable.h" #include @@ -44,6 +46,7 @@ namespace BlackGui TabFlow, TabFlow2, TabInterpolation, + TabLoopback, TabTextLog }; @@ -67,7 +70,13 @@ namespace BlackGui void updateLog(); //! Get last interpolation - void displayLastInterpolation(); + void getLogAmdDisplayLastInterpolation(); + + //! Get last interpolation + void displayLastInterpolation(const BlackMisc::Simulation::SituationLog &sLog); + + //! Display the loopback information + void displayLoopback(); //! Slider interval void onSliderChanged(int timeSecs); @@ -145,6 +154,8 @@ namespace BlackGui QTimer m_updateTimer; QPointer m_simulator; //!< related simulator QPointer m_airspaceMonitor; //!< related airspace monitor + BlackMisc::Aviation::CAircraftSituationList m_lastInterpolations; + BlackMisc::Aviation::CAircraftSituationList m_lastLoopbackSituations; BlackMisc::Aviation::CCallsign m_callsign; //!< current callsign int m_elvRequested = 0; //!< counted via signal int m_elvReceived = 0; //!< counted via signal diff --git a/src/blackgui/components/interpolationlogdisplay.ui b/src/blackgui/components/interpolationlogdisplay.ui index ed8e2a3c4..0358cf632 100644 --- a/src/blackgui/components/interpolationlogdisplay.ui +++ b/src/blackgui/components/interpolationlogdisplay.ui @@ -532,7 +532,7 @@ - + QAbstractItemView::NoSelection @@ -552,7 +552,7 @@ - + QAbstractItemView::NoSelection @@ -603,7 +603,7 @@ Interpolation - + 4 @@ -747,6 +747,57 @@ + + + Loopback (Sim->Driver) + + + + + + Interpolated + + + + + + QAbstractItemView::NoSelection + + + QAbstractItemView::SelectRows + + + false + + + + + + + + + + Loopback + + + + + + QAbstractItemView::NoSelection + + + QAbstractItemView::SelectRows + + + false + + + + + + + + Text log. @@ -818,8 +869,8 @@ le_ElevationReqRec le_Elevation le_SimulatorSpecific - tvp_AircraftSituations - tvp_AircraftParts + tvp_InboundAircraftSituations + tvp_InboundAircraftParts tvp_Changes le_InjectElevation pb_InjectElevation