mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-14 00:25:35 +08:00
Ref T270, changes to context/and interpolation log display so we can display "internals" of airspace monitor
This commit is contained in:
@@ -9,11 +9,20 @@
|
||||
|
||||
#include "interpolationlogdisplay.h"
|
||||
#include "ui_interpolationlogdisplay.h"
|
||||
#include "blackgui/guiapplication.h"
|
||||
#include "blackcore/context/contextnetworkimpl.h"
|
||||
#include "blackcore/airspacemonitor.h"
|
||||
#include "blackmisc/simulation/interpolationlogger.h"
|
||||
#include "blackmisc/stringutils.h"
|
||||
|
||||
using namespace BlackCore;
|
||||
using namespace BlackCore::Context;
|
||||
using namespace BlackMisc;
|
||||
using namespace BlackMisc::Aviation;
|
||||
using namespace BlackMisc::Geo;
|
||||
using namespace BlackMisc::Network;
|
||||
using namespace BlackMisc::Simulation;
|
||||
using namespace BlackMisc::PhysicalQuantities;
|
||||
|
||||
namespace BlackGui
|
||||
{
|
||||
@@ -24,6 +33,7 @@ namespace BlackGui
|
||||
ui(new Ui::CInterpolationLogDisplay)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
ui->tw_LogTabs->setCurrentIndex(TabFlow);
|
||||
constexpr int timeSecs = 5;
|
||||
ui->hs_UpdateTime->setValue(timeSecs);
|
||||
this->onSliderChanged(timeSecs);
|
||||
@@ -32,6 +42,12 @@ namespace BlackGui
|
||||
connect(ui->pb_StartStop, &QPushButton::released, this, &CInterpolationLogDisplay::toggleStartStop);
|
||||
connect(ui->comp_CallsignCompleter, &CCallsignCompleter::validCallsignEntered, this, &CInterpolationLogDisplay::onCallsignEntered);
|
||||
|
||||
CLedWidget::LedShape shape = CLedWidget::Rounded;
|
||||
ui->led_Parts->setValues(CLedWidget::Yellow, CLedWidget::Black, shape, "Parts received", "", 14);
|
||||
ui->led_Situation->setValues(CLedWidget::Yellow, CLedWidget::Black, shape, "Situation received", "", 14);
|
||||
ui->led_Elevation->setValues(CLedWidget::Yellow, CLedWidget::Black, shape, "Elevation received", "", 14);
|
||||
ui->led_Running->setValues(CLedWidget::Yellow, CLedWidget::Black, shape, "Running", "Stopped", 14);
|
||||
|
||||
m_callsign = ui->comp_CallsignCompleter->getCallsign();
|
||||
}
|
||||
|
||||
@@ -40,21 +56,59 @@ namespace BlackGui
|
||||
|
||||
void CInterpolationLogDisplay::setSimulator(CSimulatorCommon *simulatorCommon)
|
||||
{
|
||||
if (simulatorCommon && simulatorCommon == m_simulatorCommon) { return; } // same
|
||||
if (m_simulatorCommon)
|
||||
{
|
||||
this->disconnect(m_simulatorCommon);
|
||||
m_simulatorCommon->disconnect(this);
|
||||
}
|
||||
m_simulatorCommon = simulatorCommon;
|
||||
connect(m_simulatorCommon, &CSimulatorCommon::receivedRequestedElevation, this, &CInterpolationLogDisplay::onElevationReceived);
|
||||
connect(m_simulatorCommon, &CSimulatorCommon::requestedElevation, this, &CInterpolationLogDisplay::onElevationRequested);
|
||||
}
|
||||
|
||||
void CInterpolationLogDisplay::setAirspaceMonitor(CAirspaceMonitor *airspaceMonitor)
|
||||
{
|
||||
if (airspaceMonitor && airspaceMonitor == m_airspaceMonitor) { return; } // same
|
||||
if (m_airspaceMonitor)
|
||||
{
|
||||
this->disconnect(m_airspaceMonitor);
|
||||
m_airspaceMonitor->disconnect(this);
|
||||
}
|
||||
m_airspaceMonitor = airspaceMonitor;
|
||||
|
||||
connect(m_airspaceMonitor, &CAirspaceMonitor::addedAircraftSituation, this, &CInterpolationLogDisplay::onSituationAdded, Qt::QueuedConnection);
|
||||
connect(m_airspaceMonitor, &CAirspaceMonitor::addedAircraftParts, this, &CInterpolationLogDisplay::onPartsAdded, Qt::QueuedConnection);
|
||||
}
|
||||
|
||||
void CInterpolationLogDisplay::updateLog()
|
||||
{
|
||||
const bool hasLogger = m_simulatorCommon;
|
||||
if (hasLogger && !m_callsign.isEmpty())
|
||||
if (!sGui || sGui->isShuttingDown()) { return; }
|
||||
const bool hasLogger = m_simulatorCommon && m_airspaceMonitor;
|
||||
if (!hasLogger || m_callsign.isEmpty())
|
||||
{
|
||||
ui->te_TextLog->setText("No logger attached or no callsign");
|
||||
this->stop();
|
||||
this->clear();
|
||||
}
|
||||
|
||||
// only display visible tab
|
||||
if (ui->tw_LogTabs->currentWidget() == ui->tb_TextLog)
|
||||
{
|
||||
const QString log = m_simulatorCommon->latestLoggedDataFormatted(m_callsign);
|
||||
ui->te_Log->setText(log);
|
||||
ui->te_TextLog->setText(log);
|
||||
}
|
||||
else
|
||||
else if (ui->tw_LogTabs->currentWidget() == ui->tb_DataFlow)
|
||||
{
|
||||
ui->te_Log->setText("No logger attached or no callsign");
|
||||
this->stop();
|
||||
ui->le_CG->setText(m_airspaceMonitor->getCG(m_callsign).valueRoundedWithUnit(CLengthUnit::ft(), 1));
|
||||
ui->le_CG->home(false);
|
||||
ui->le_Parts->setText(boolToYesNo(m_airspaceMonitor->isRemoteAircraftSupportingParts(m_callsign)));
|
||||
|
||||
static const QString avgUpdateTime("%1ms");
|
||||
ui->le_AvgUpdateTimeMs->setText(avgUpdateTime.arg(m_simulatorCommon->getStatisticsAverageUpdateTimeMs()));
|
||||
|
||||
const CClient client = m_airspaceMonitor->getClientOrDefaultForCallsign(m_callsign);
|
||||
ui->le_GndFlag->setText(boolToYesNo(client.hasGndFlagCapability()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,12 +127,14 @@ namespace BlackGui
|
||||
this->stop();
|
||||
return;
|
||||
}
|
||||
if (m_callsign == cs) { return; }
|
||||
|
||||
// clear last callsign
|
||||
if (!m_callsign.isEmpty())
|
||||
{
|
||||
m_simulatorCommon->setLogInterpolation(false, m_callsign); // stop logging "old" callsign
|
||||
m_callsign = CCallsign(); // clear callsign
|
||||
this->clear();
|
||||
}
|
||||
|
||||
// set new callsign or stop
|
||||
@@ -95,14 +151,8 @@ namespace BlackGui
|
||||
void CInterpolationLogDisplay::toggleStartStop()
|
||||
{
|
||||
const bool running = m_updateTimer.isActive();
|
||||
if (running)
|
||||
{
|
||||
this->stop();
|
||||
}
|
||||
else
|
||||
{
|
||||
this->start();
|
||||
}
|
||||
if (running) { this->stop(); }
|
||||
else { this->start(); }
|
||||
}
|
||||
|
||||
void CInterpolationLogDisplay::start()
|
||||
@@ -110,12 +160,79 @@ namespace BlackGui
|
||||
const int interval = ui->hs_UpdateTime->value() * 1000;
|
||||
m_updateTimer.start(interval);
|
||||
ui->pb_StartStop->setText(stopText());
|
||||
ui->led_Running->setOn(true);
|
||||
}
|
||||
|
||||
void CInterpolationLogDisplay::stop()
|
||||
{
|
||||
m_updateTimer.stop();
|
||||
ui->pb_StartStop->setText(startText());
|
||||
ui->led_Running->setOn(false);
|
||||
}
|
||||
|
||||
bool CInterpolationLogDisplay::logCallsign(const CCallsign &cs) const
|
||||
{
|
||||
if (!sGui || sGui->isShuttingDown()) { return false; }
|
||||
if (!m_airspaceMonitor || !m_simulatorCommon || m_callsign.isEmpty()) { return false; }
|
||||
if (cs != m_callsign) { return false; }
|
||||
return true;
|
||||
}
|
||||
|
||||
void CInterpolationLogDisplay::onSituationAdded(const CAircraftSituation &situation)
|
||||
{
|
||||
const CCallsign cs = situation.getCallsign();
|
||||
if (!this->logCallsign(cs)) { return; }
|
||||
const CAircraftSituationList situations = m_airspaceMonitor->remoteAircraftSituations(cs);
|
||||
ui->tvp_AircraftSituations->updateContainerAsync(situations);
|
||||
ui->led_Situation->blink();
|
||||
}
|
||||
|
||||
void CInterpolationLogDisplay::onPartsAdded(const CCallsign &callsign, const CAircraftParts &parts)
|
||||
{
|
||||
if (!this->logCallsign(callsign)) { return; }
|
||||
Q_UNUSED(parts);
|
||||
const CAircraftPartsList partsList = m_airspaceMonitor->remoteAircraftParts(callsign);
|
||||
ui->tvp_AircraftParts->updateContainerAsync(partsList);
|
||||
ui->led_Parts->blink();
|
||||
}
|
||||
|
||||
void CInterpolationLogDisplay::onElevationReceived(const CElevationPlane &plane, const CCallsign &callsign)
|
||||
{
|
||||
if (!this->logCallsign(callsign)) { return; }
|
||||
m_elvReceived++;
|
||||
ui->le_Elevation->setText(plane.toQString());
|
||||
ui->led_Elevation->blink();
|
||||
ui->le_ElevationRec->setText(QString::number(m_elvReceived));
|
||||
}
|
||||
|
||||
void CInterpolationLogDisplay::onElevationRequested(const CCallsign &callsign)
|
||||
{
|
||||
if (!this->logCallsign(callsign)) { return; }
|
||||
m_elvRequested++;
|
||||
ui->led_Elevation->blink();
|
||||
ui->le_ElevationReq->setText(QString::number(m_elvRequested));
|
||||
}
|
||||
|
||||
void CInterpolationLogDisplay::clear()
|
||||
{
|
||||
ui->tvp_AircraftParts->clear();
|
||||
ui->tvp_AircraftSituations->clear();
|
||||
ui->te_TextLog->clear();
|
||||
ui->le_CG->clear();
|
||||
ui->le_Elevation->clear();
|
||||
ui->le_ElevationRec->clear();
|
||||
ui->le_ElevationReq->clear();
|
||||
ui->le_Parts->clear();
|
||||
ui->le_AvgUpdateTimeMs->clear();
|
||||
m_elvReceived = m_elvRequested = 0;
|
||||
}
|
||||
|
||||
void CInterpolationLogDisplay::linkWithAirspaceMonitor()
|
||||
{
|
||||
if (!sGui || sGui->isShuttingDown() || !sGui->supportsContexts()) { return; }
|
||||
if (!sGui->getCoreFacade() || !sGui->getCoreFacade()->getCContextNetwork()) { return; }
|
||||
const CContextNetwork *cn = sGui->getCoreFacade()->getCContextNetwork();
|
||||
this->setAirspaceMonitor(cn->airspace());
|
||||
}
|
||||
|
||||
const QString &CInterpolationLogDisplay::startText()
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include <QScopedPointer>
|
||||
#include <QPointer>
|
||||
|
||||
namespace BlackCore { class CAirspaceMonitor; }
|
||||
namespace Ui { class CInterpolationLogDisplay; }
|
||||
namespace BlackGui
|
||||
{
|
||||
@@ -33,6 +34,13 @@ namespace BlackGui
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
//! Tabs
|
||||
enum Tab
|
||||
{
|
||||
TabFlow,
|
||||
TabTextLog
|
||||
};
|
||||
|
||||
//! Constructor
|
||||
explicit CInterpolationLogDisplay(QWidget *parent = nullptr);
|
||||
|
||||
@@ -42,6 +50,12 @@ namespace BlackGui
|
||||
//! Set simulator
|
||||
void setSimulator(BlackCore::CSimulatorCommon *simulatorCommon);
|
||||
|
||||
//! Set corresponding airspace monitor
|
||||
void setAirspaceMonitor(BlackCore::CAirspaceMonitor *airspaceMonitor);
|
||||
|
||||
//! If possible link with airspace monitor
|
||||
void linkWithAirspaceMonitor();
|
||||
|
||||
private:
|
||||
//! Update log.
|
||||
void updateLog();
|
||||
@@ -61,10 +75,31 @@ namespace BlackGui
|
||||
//! Stop displaying
|
||||
void stop();
|
||||
|
||||
//! Log the current callsign
|
||||
bool logCallsign(const BlackMisc::Aviation::CCallsign &cs) const;
|
||||
|
||||
//! \copydoc BlackCore::CAirspaceMonitor::addedAircraftSituation
|
||||
void onSituationAdded(const BlackMisc::Aviation::CAircraftSituation &situation);
|
||||
|
||||
//! \copydoc BlackCore::CAirspaceMonitor::addedAircraftSituation
|
||||
void onPartsAdded(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftParts &parts);
|
||||
|
||||
//! \copydoc BlackCore::CSimulatorCommon::receivedRequestedElevation
|
||||
void onElevationReceived(const BlackMisc::Geo::CElevationPlane &plane, const BlackMisc::Aviation::CCallsign &callsign);
|
||||
|
||||
//! \copydoc BlackCore::CSimulatorCommon::requestedElevation
|
||||
void onElevationRequested(const BlackMisc::Aviation::CCallsign &callsign);
|
||||
|
||||
//! Clear
|
||||
void clear();
|
||||
|
||||
QScopedPointer<Ui::CInterpolationLogDisplay> ui;
|
||||
QTimer m_updateTimer;
|
||||
QPointer<BlackCore::CSimulatorCommon> m_simulatorCommon = nullptr; //!< related simulator
|
||||
QPointer<BlackCore::CSimulatorCommon> m_simulatorCommon; //!< related simulator
|
||||
QPointer<BlackCore::CAirspaceMonitor> m_airspaceMonitor; //!< related airspace monitor
|
||||
BlackMisc::Aviation::CCallsign m_callsign; //!< current callsign
|
||||
int m_elvRequested = 0;
|
||||
int m_elvReceived = 0;
|
||||
|
||||
static const QString &startText();
|
||||
static const QString &stopText();
|
||||
|
||||
@@ -6,19 +6,57 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>640</width>
|
||||
<height>480</height>
|
||||
<width>800</width>
|
||||
<height>600</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Interpolation log. display</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<layout class="QVBoxLayout" name="vl_InterpolationLog">
|
||||
<property name="leftMargin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QFrame" name="fr_Top">
|
||||
<layout class="QHBoxLayout" name="hl_Top" stretch="2,4,1,1">
|
||||
<widget class="QGroupBox" name="gb_LogCallsign">
|
||||
<property name="title">
|
||||
<string>Log.callsign</string>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="hl_LogCallsign" stretch="2,1,4,1">
|
||||
<property name="leftMargin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="BlackGui::Components::CCallsignCompleter" name="comp_CallsignCompleter"/>
|
||||
<widget class="BlackGui::Components::CCallsignCompleter" name="comp_CallsignCompleter">
|
||||
<property name="focusPolicy">
|
||||
<enum>Qt::StrongFocus</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="le_UpdateTime">
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSlider" name="hs_UpdateTime">
|
||||
@@ -39,13 +77,6 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="le_UpdateTime">
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pb_StartStop">
|
||||
<property name="text">
|
||||
@@ -57,10 +88,328 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTextEdit" name="te_Log">
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
<widget class="QGroupBox" name="gb_Status">
|
||||
<property name="title">
|
||||
<string>Status</string>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="hl_Status">
|
||||
<property name="leftMargin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="lbl_RunningLed">
|
||||
<property name="text">
|
||||
<string>Running</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="BlackGui::CLedWidget" name="led_Running" native="true"/>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="hs_LedBar">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>352</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="lbl_SituationsLed">
|
||||
<property name="text">
|
||||
<string>Situations</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="BlackGui::CLedWidget" name="led_Situation" native="true"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="lbl_PartsLed">
|
||||
<property name="text">
|
||||
<string>Parts</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="BlackGui::CLedWidget" name="led_Parts" native="true"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="lbl_ElevationLed">
|
||||
<property name="text">
|
||||
<string>Elevation</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="BlackGui::CLedWidget" name="led_Elevation" native="true"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTabWidget" name="tw_LogTabs">
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="tb_DataFlow">
|
||||
<attribute name="title">
|
||||
<string>Data flow</string>
|
||||
</attribute>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="4" column="0">
|
||||
<widget class="QGroupBox" name="gb_InboundSituations">
|
||||
<property name="title">
|
||||
<string>Inbound situations</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="vl_InboundSituations">
|
||||
<item>
|
||||
<widget class="BlackGui::Views::CAircraftSituationView" name="tvp_AircraftSituations">
|
||||
<property name="selectionMode">
|
||||
<enum>QAbstractItemView::SingleSelection</enum>
|
||||
</property>
|
||||
<property name="selectionBehavior">
|
||||
<enum>QAbstractItemView::SelectRows</enum>
|
||||
</property>
|
||||
<attribute name="verticalHeaderVisible">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="2">
|
||||
<widget class="QGroupBox" name="gb_DataMisc">
|
||||
<property name="title">
|
||||
<string>Misc.</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="vl_Misc" stretch="0,0">
|
||||
<property name="leftMargin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QFrame" name="fr_Misc1">
|
||||
<layout class="QHBoxLayout" name="hl_Misc1">
|
||||
<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>
|
||||
<widget class="QLabel" name="lbl_CG">
|
||||
<property name="text">
|
||||
<string>CG:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="le_CG">
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="placeholderText">
|
||||
<string>CG</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="lbl_Parts">
|
||||
<property name="text">
|
||||
<string>Parts:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="le_Parts">
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="placeholderText">
|
||||
<string>parts?</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="lbl_GndFlag">
|
||||
<property name="text">
|
||||
<string>Gnd.flag:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="le_GndFlag">
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="placeholderText">
|
||||
<string>gnd.flag?</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="lbl_AverageUpdateTime">
|
||||
<property name="text">
|
||||
<string>Avg.time:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="le_AvgUpdateTimeMs">
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="lbl_ElevationRequested">
|
||||
<property name="text">
|
||||
<string>req.:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="le_ElevationReq">
|
||||
<property name="toolTip">
|
||||
<string>elevation requested</string>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="placeholderText">
|
||||
<string>req.</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="lbl_ElevationReceived">
|
||||
<property name="text">
|
||||
<string>Rec.:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="le_ElevationRec">
|
||||
<property name="toolTip">
|
||||
<string>elevation received</string>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="placeholderText">
|
||||
<string>rec.</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QFrame" name="fr_Misc2">
|
||||
<layout class="QHBoxLayout" name="hl_Misc2">
|
||||
<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>
|
||||
<widget class="QLabel" name="lbl_Elevation">
|
||||
<property name="text">
|
||||
<string>Elevation:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="le_Elevation">
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="placeholderText">
|
||||
<string>elevation</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<widget class="QGroupBox" name="gb_InboundParts">
|
||||
<property name="title">
|
||||
<string>Inbound parts</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="vl_InboundParts">
|
||||
<item>
|
||||
<widget class="BlackGui::Views::CAircraftPartsView" name="tvp_AircraftParts">
|
||||
<property name="selectionMode">
|
||||
<enum>QAbstractItemView::SingleSelection</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>
|
||||
</attribute>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QTextEdit" name="te_TextLog">
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
@@ -72,7 +421,39 @@
|
||||
<header>blackgui/components/callsigncompleter.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>BlackGui::Views::CAircraftPartsView</class>
|
||||
<extends>QTableView</extends>
|
||||
<header>blackgui/views/aircraftpartsview.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>BlackGui::Views::CAircraftSituationView</class>
|
||||
<extends>QTableView</extends>
|
||||
<header>blackgui/views/aircraftsituationview.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>BlackGui::CLedWidget</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>blackgui/led.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<tabstops>
|
||||
<tabstop>comp_CallsignCompleter</tabstop>
|
||||
<tabstop>le_UpdateTime</tabstop>
|
||||
<tabstop>hs_UpdateTime</tabstop>
|
||||
<tabstop>le_CG</tabstop>
|
||||
<tabstop>le_Parts</tabstop>
|
||||
<tabstop>le_GndFlag</tabstop>
|
||||
<tabstop>le_ElevationReq</tabstop>
|
||||
<tabstop>le_Elevation</tabstop>
|
||||
<tabstop>tvp_AircraftSituations</tabstop>
|
||||
<tabstop>tvp_AircraftParts</tabstop>
|
||||
<tabstop>tw_LogTabs</tabstop>
|
||||
<tabstop>te_TextLog</tabstop>
|
||||
<tabstop>le_ElevationRec</tabstop>
|
||||
<tabstop>pb_StartStop</tabstop>
|
||||
</tabstops>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
||||
@@ -17,13 +17,22 @@ namespace BlackGui
|
||||
{
|
||||
namespace Components
|
||||
{
|
||||
CInterpolationLogDisplayDialog::CInterpolationLogDisplayDialog(CSimulatorCommon *simulatorCommon, QWidget *parent) :
|
||||
CInterpolationLogDisplayDialog::CInterpolationLogDisplayDialog(CSimulatorCommon *simulatorCommon, CAirspaceMonitor *airspaceMonitor, QWidget *parent) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::CInterpolationLogDisplayDialog)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
this->setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
||||
this->setSimulator(simulatorCommon);
|
||||
|
||||
if (airspaceMonitor)
|
||||
{
|
||||
this->setAirspaceMonitor(airspaceMonitor);
|
||||
}
|
||||
else
|
||||
{
|
||||
ui->comp_InterpolationLogDisplay->linkWithAirspaceMonitor();
|
||||
}
|
||||
}
|
||||
|
||||
CInterpolationLogDisplayDialog::~CInterpolationLogDisplayDialog()
|
||||
@@ -33,5 +42,10 @@ namespace BlackGui
|
||||
{
|
||||
ui->comp_InterpolationLogDisplay->setSimulator(simulatorCommon);
|
||||
}
|
||||
|
||||
void CInterpolationLogDisplayDialog::setAirspaceMonitor(CAirspaceMonitor *airspaceMonitor)
|
||||
{
|
||||
ui->comp_InterpolationLogDisplay->setAirspaceMonitor(airspaceMonitor);
|
||||
}
|
||||
} // ns
|
||||
} // ns
|
||||
|
||||
@@ -16,8 +16,12 @@
|
||||
#include <QScopedPointer>
|
||||
#include <QDialog>
|
||||
|
||||
namespace BlackCore
|
||||
{
|
||||
class CSimulatorCommon;
|
||||
class CAirspaceMonitor;
|
||||
}
|
||||
namespace Ui { class CInterpolationLogDisplayDialog; }
|
||||
namespace BlackCore { class CSimulatorCommon; }
|
||||
namespace BlackGui
|
||||
{
|
||||
namespace Components
|
||||
@@ -31,7 +35,9 @@ namespace BlackGui
|
||||
|
||||
public:
|
||||
//! Constructor
|
||||
explicit CInterpolationLogDisplayDialog(BlackCore::CSimulatorCommon *simulatorCommon, QWidget *parent = nullptr);
|
||||
explicit CInterpolationLogDisplayDialog(
|
||||
BlackCore::CSimulatorCommon *simulatorCommon, BlackCore::CAirspaceMonitor *airspaceMonitor,
|
||||
QWidget *parent = nullptr);
|
||||
|
||||
//! Destructor
|
||||
virtual ~CInterpolationLogDisplayDialog();
|
||||
@@ -39,6 +45,9 @@ namespace BlackGui
|
||||
//! Set simulator
|
||||
void setSimulator(BlackCore::CSimulatorCommon *simulatorCommon);
|
||||
|
||||
//! Set airspace monitor
|
||||
void setAirspaceMonitor(BlackCore::CAirspaceMonitor *airspaceMonitor);
|
||||
|
||||
private:
|
||||
QScopedPointer<Ui::CInterpolationLogDisplayDialog> ui;
|
||||
};
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>260</width>
|
||||
<height>276</height>
|
||||
<width>299</width>
|
||||
<height>341</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
|
||||
Reference in New Issue
Block a user