mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-30 11:55:35 +08:00
Ref T268, log.display UI allows to display "loopback" situations
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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 <QFrame>
|
||||
@@ -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<BlackCore::ISimulator> m_simulator; //!< related simulator
|
||||
QPointer<BlackCore::CAirspaceMonitor> 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
|
||||
|
||||
@@ -532,7 +532,7 @@
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="vl_InboundSituations">
|
||||
<item>
|
||||
<widget class="BlackGui::Views::CAircraftSituationView" name="tvp_AircraftSituations">
|
||||
<widget class="BlackGui::Views::CAircraftSituationView" name="tvp_InboundAircraftSituations">
|
||||
<property name="selectionMode">
|
||||
<enum>QAbstractItemView::NoSelection</enum>
|
||||
</property>
|
||||
@@ -552,7 +552,7 @@
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="vl_InboundParts">
|
||||
<item>
|
||||
<widget class="BlackGui::Views::CAircraftPartsView" name="tvp_AircraftParts">
|
||||
<widget class="BlackGui::Views::CAircraftPartsView" name="tvp_InboundAircraftParts">
|
||||
<property name="selectionMode">
|
||||
<enum>QAbstractItemView::NoSelection</enum>
|
||||
</property>
|
||||
@@ -603,7 +603,7 @@
|
||||
<attribute name="title">
|
||||
<string>Interpolation</string>
|
||||
</attribute>
|
||||
<layout class="QVBoxLayout" name="vl_Interpolation" stretch="0,0,2,1">
|
||||
<layout class="QVBoxLayout" name="vl_Interpolation">
|
||||
<property name="leftMargin">
|
||||
<number>4</number>
|
||||
</property>
|
||||
@@ -747,6 +747,57 @@
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tb_Loopback">
|
||||
<attribute name="title">
|
||||
<string>Loopback (Sim->Driver)</string>
|
||||
</attribute>
|
||||
<layout class="QVBoxLayout" name="vl_Loopback">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="gb_InterpolatedSituations">
|
||||
<property name="title">
|
||||
<string>Interpolated</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="vl_InterpolatedGb">
|
||||
<item>
|
||||
<widget class="BlackGui::Views::CAircraftSituationView" name="tvp_InterpolatedAircraftSituations">
|
||||
<property name="selectionMode">
|
||||
<enum>QAbstractItemView::NoSelection</enum>
|
||||
</property>
|
||||
<property name="selectionBehavior">
|
||||
<enum>QAbstractItemView::SelectRows</enum>
|
||||
</property>
|
||||
<attribute name="verticalHeaderVisible">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="gb_LoopbackSituations">
|
||||
<property name="title">
|
||||
<string>Loopback</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="vl_LoopbackGb">
|
||||
<item>
|
||||
<widget class="BlackGui::Views::CAircraftSituationView" name="tvp_LoopbackAircraftSituations">
|
||||
<property name="selectionMode">
|
||||
<enum>QAbstractItemView::NoSelection</enum>
|
||||
</property>
|
||||
<property name="selectionBehavior">
|
||||
<enum>QAbstractItemView::SelectRows</enum>
|
||||
</property>
|
||||
<attribute name="verticalHeaderVisible">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tb_TextLog">
|
||||
<attribute name="title">
|
||||
<string>Text log.</string>
|
||||
@@ -818,8 +869,8 @@
|
||||
<tabstop>le_ElevationReqRec</tabstop>
|
||||
<tabstop>le_Elevation</tabstop>
|
||||
<tabstop>le_SimulatorSpecific</tabstop>
|
||||
<tabstop>tvp_AircraftSituations</tabstop>
|
||||
<tabstop>tvp_AircraftParts</tabstop>
|
||||
<tabstop>tvp_InboundAircraftSituations</tabstop>
|
||||
<tabstop>tvp_InboundAircraftParts</tabstop>
|
||||
<tabstop>tvp_Changes</tabstop>
|
||||
<tabstop>le_InjectElevation</tabstop>
|
||||
<tabstop>pb_InjectElevation</tabstop>
|
||||
|
||||
Reference in New Issue
Block a user