diff --git a/samples/blackgui/mainwindow.cpp b/samples/blackgui/mainwindow.cpp index 4b3663719..73aea98f7 100644 --- a/samples/blackgui/mainwindow.cpp +++ b/samples/blackgui/mainwindow.cpp @@ -201,7 +201,7 @@ void MainWindow::toggleNetworkConnection() this->m_ownAircraft.setIcaoInfo(icao); // send latest aircraft to network/voice - this->getIContextNetwork()->setOwnAircraft(this->m_ownAircraft); + this->getIContextOwnAircraft()->updateOwnAircraft(this->m_ownAircraft, MainWindow::ownAircraftContextOriginator()); if (this->m_contextAudioAvailable) this->getIContextAudio()->setOwnAircraft(this->m_ownAircraft); // Login is based on setting current server @@ -461,7 +461,7 @@ void MainWindow::updateSimulatorData() else ui->le_SimulatorStatus->setText("Not connected"); - CAircraft ownAircraft = this->getIContextSimulator()->getOwnAircraft(); + CAircraft ownAircraft = this->getIContextOwnAircraft()->getOwnAircraft(); ui->le_SimulatorLatitude->setText(ownAircraft.getSituation().latitude().toFormattedQString()); ui->le_SimulatorLongitude->setText(ownAircraft.getSituation().longitude().toFormattedQString()); ui->le_SimulatorAltitude->setText(ownAircraft.getSituation().getAltitude().toFormattedQString()); diff --git a/samples/blackgui/mainwindow.h b/samples/blackgui/mainwindow.h index 702978f97..46d6a3ae6 100644 --- a/samples/blackgui/mainwindow.h +++ b/samples/blackgui/mainwindow.h @@ -219,6 +219,13 @@ private: //! Set the hotkeys void setHotkeys(); + //! Originator for aircraft context + static const QString &ownAircraftContextOriginator() + { + static const QString o("GUISAMPLE1"); + return o; + } + private slots: // diff --git a/samples/blackgui/mainwindow_aircraft.cpp b/samples/blackgui/mainwindow_aircraft.cpp index 10d4ba8fb..cf22bbe5b 100644 --- a/samples/blackgui/mainwindow_aircraft.cpp +++ b/samples/blackgui/mainwindow_aircraft.cpp @@ -24,7 +24,7 @@ bool MainWindow::reloadOwnAircraft() // check for changed aircraft bool changed = false; - CAircraft loadedAircraft = this->getIContextNetwork()->getOwnAircraft(); + CAircraft loadedAircraft = this->getIContextOwnAircraft()->getOwnAircraft(); if (loadedAircraft != this->m_ownAircraft) { this->m_ownAircraft = loadedAircraft; @@ -47,8 +47,5 @@ void MainWindow::setTestPosition(const QString &wgsLatitude, const QString &wgsL this->m_ownAircraft.setPosition(coordinate); this->m_ownAircraft.setAltitude(altitude); - this->getIContextNetwork()->updateOwnPosition( - coordinate, - altitude - ); + this->getIContextOwnAircraft()->updateOwnPosition(coordinate, altitude, MainWindow::ownAircraftContextOriginator()); } diff --git a/samples/blackgui/mainwindow_cockpit.cpp b/samples/blackgui/mainwindow_cockpit.cpp index e35088717..6b3e8241b 100644 --- a/samples/blackgui/mainwindow_cockpit.cpp +++ b/samples/blackgui/mainwindow_cockpit.cpp @@ -252,7 +252,7 @@ void MainWindow::sendCockpitUpdates() this->m_ownAircraft.getCom2System() != com2 || this->m_ownAircraft.getTransponder() != transponder) { - this->getIContextNetwork()->updateOwnCockpit(com1, com2, transponder); + this->getIContextOwnAircraft()->updateOwnCockpit(com1, com2, transponder, MainWindow::ownAircraftContextOriginator()); this->reloadOwnAircraft(); // also loads resolved voice rooms changedCockpit = true; } diff --git a/src/blackcore/context_simulator.h b/src/blackcore/context_simulator.h index 55c4729cf..5ebd5dbc8 100644 --- a/src/blackcore/context_simulator.h +++ b/src/blackcore/context_simulator.h @@ -69,9 +69,6 @@ namespace BlackCore //! \brief Disconnect from simulator virtual bool disconnectFrom() = 0; - //! Get user aircraft value object - virtual BlackMisc::Aviation::CAircraft getOwnAircraft() const = 0; - //! Simulator info virtual BlackSim::CSimulatorInfo getSimulatorInfo() const = 0; diff --git a/src/blackcore/context_simulator_impl.cpp b/src/blackcore/context_simulator_impl.cpp index 3d6a0232a..9a18fce9d 100644 --- a/src/blackcore/context_simulator_impl.cpp +++ b/src/blackcore/context_simulator_impl.cpp @@ -4,9 +4,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "context_simulator_impl.h" +#include "context_ownaircraft_impl.h" +#include "context_runtime.h" + #include #include -#include "context_runtime.h" using namespace BlackMisc; using namespace BlackMisc::PhysicalQuantities; @@ -27,6 +29,13 @@ namespace BlackCore asyncConnectTo(); } + void CContextSimulator::updateOwnAircraft() + { + Q_ASSERT(this->getRuntime()); + Q_ASSERT(this->getRuntime()->getCContextOwnAircraft()); + this->getRuntime()->getCContextOwnAircraft()->updateOwnAircraft(this->m_simulator->getOwnAircraft(), IContextSimulator::InterfaceName()); + } + CContextSimulator::~CContextSimulator() { disconnectFrom(); @@ -68,7 +77,7 @@ namespace BlackCore { if (this->getRuntime()->isSlotLogForSimulatorEnabled()) this->getRuntime()->logSlot(Q_FUNC_INFO); if (!m_simulator || m_canConnectResult.isRunning()) return; // already checking - m_simulator->asyncConnectTo(); + this->m_canConnectResult = QtConcurrent::run(this, &CContextSimulator::connectTo); } bool CContextSimulator::disconnectFrom() @@ -78,12 +87,6 @@ namespace BlackCore return m_simulator->disconnectFrom(); } - BlackMisc::Aviation::CAircraft CContextSimulator::getOwnAircraft() const - { - if (this->getRuntime()->isSlotLogForSimulatorEnabled()) this->getRuntime()->logSlot(Q_FUNC_INFO); - return m_ownAircraft; - } - BlackSim::CSimulatorInfo CContextSimulator::getSimulatorInfo() const { if (this->getRuntime()->isSlotLogForSimulatorEnabled()) this->getRuntime()->logSlot(Q_FUNC_INFO); @@ -113,7 +116,7 @@ namespace BlackCore m_simulator = factory->create(this); Q_ASSERT(m_simulator); - connect(m_simulator, SIGNAL(statusChanged(ISimulator::Status)), this, SLOT(setConnectionStatus(ISimulator::Status))); + connect(m_simulator, SIGNAL(connectionChanged(bool)), this, SLOT(setConnectionStatus(bool))); return true; } @@ -125,26 +128,13 @@ namespace BlackCore m_simulator = nullptr; } - void CContextSimulator::updateOwnAircraft() + void CContextSimulator::setConnectionStatus(bool value) { - m_ownAircraft = m_simulator->getOwnAircraft(); - getIContextNetwork()->updateOwnSituation(m_ownAircraft.getSituation()); - getIContextNetwork()->updateOwnCockpit(m_ownAircraft.getCom1System(), m_ownAircraft.getCom2System(), m_ownAircraft.getTransponder()); - } - - void CContextSimulator::setConnectionStatus(ISimulator::Status status) - { - if (status == ISimulator::Connected) - { + if (value) m_updateTimer->start(100); - emit connectionChanged(true); - } else - { m_updateTimer->stop(); - emit connectionChanged(false); - } - + emit connectionChanged(value); } void CContextSimulator::findSimulatorPlugins() diff --git a/src/blackcore/context_simulator_impl.h b/src/blackcore/context_simulator_impl.h index 4e215133c..9bff1f4c6 100644 --- a/src/blackcore/context_simulator_impl.h +++ b/src/blackcore/context_simulator_impl.h @@ -55,9 +55,6 @@ namespace BlackCore //! \copydoc IContextSimulator::disconnectFrom virtual bool disconnectFrom() override; - //! \copydoc IContextSimulator::getOwnAircraft() - virtual BlackMisc::Aviation::CAircraft getOwnAircraft() const override; - //! \copydoc IContextSimulator::getSimulatorInfo() virtual BlackSim::CSimulatorInfo getSimulatorInfo() const override; @@ -84,7 +81,7 @@ namespace BlackCore private slots: //! \copydoc IContextSimulator::updateOwnAircraft() - virtual void updateOwnAircraft(); + void updateOwnAircraft(); //! Set new connection status void setConnectionStatus(ISimulator::Status status); @@ -93,7 +90,6 @@ namespace BlackCore //! \brief find and catalog all simulator plugins void findSimulatorPlugins(); - BlackMisc::Aviation::CAircraft m_ownAircraft; BlackMisc::Network::CAircraftModel m_aircraftModel; BlackCore::ISimulator *m_simulator; diff --git a/src/blackcore/context_simulator_proxy.cpp b/src/blackcore/context_simulator_proxy.cpp index 35f0ea34a..e3f0cb463 100644 --- a/src/blackcore/context_simulator_proxy.cpp +++ b/src/blackcore/context_simulator_proxy.cpp @@ -58,11 +58,6 @@ namespace BlackCore return m_dBusInterface->callDBusRet(QLatin1Literal("disconnectFrom")); } - BlackMisc::Aviation::CAircraft CContextSimulatorProxy::getOwnAircraft() const - { - return m_dBusInterface->callDBusRet(QLatin1Literal("getOwnAircraft")); - } - BlackMisc::Network::CAircraftModel CContextSimulatorProxy::getOwnAircraftModel() const { return m_dBusInterface->callDBusRet(QLatin1Literal("getOwnAircraftModel")); diff --git a/src/blackcore/context_simulator_proxy.h b/src/blackcore/context_simulator_proxy.h index 2b98214fa..5bd9279c5 100644 --- a/src/blackcore/context_simulator_proxy.h +++ b/src/blackcore/context_simulator_proxy.h @@ -54,9 +54,6 @@ namespace BlackCore //! \copydoc IContextSimulator::disconnectFrom virtual bool disconnectFrom() override; - //! \copydoc IContextSimulator::getOwnAircraft() - virtual BlackMisc::Aviation::CAircraft getOwnAircraft() const override; - //! \copydoc IContextSimulator::getAircraftModel() virtual BlackMisc::Network::CAircraftModel getOwnAircraftModel() const override; diff --git a/src/blackgui/flightplancomponent.cpp b/src/blackgui/flightplancomponent.cpp index ca57a0dac..520bf4b8e 100644 --- a/src/blackgui/flightplancomponent.cpp +++ b/src/blackgui/flightplancomponent.cpp @@ -242,7 +242,7 @@ namespace BlackGui { if (this->getIContextNetwork()) { - this->prefillWithAircraftData(this->getIContextNetwork()->getOwnAircraft()); + this->prefillWithAircraftData(this->getIContextOwnAircraft()->getOwnAircraft()); } this->ui->le_AircraftRegistration->clear(); this->ui->le_AirlineOperator->clear(); diff --git a/src/blackgui/textmessagecomponent.h b/src/blackgui/textmessagecomponent.h index d80f35c8f..c403ece63 100644 --- a/src/blackgui/textmessagecomponent.h +++ b/src/blackgui/textmessagecomponent.h @@ -86,7 +86,7 @@ namespace BlackGui BlackMisc::Network::CTextMessage getTextMessageStubForChannel(); //! own aircraft - const BlackMisc::Aviation::CAircraft getOwnAircraft() const { Q_ASSERT(this->getIContextNetwork()); return this->getIContextNetwork()->getOwnAircraft(); } + const BlackMisc::Aviation::CAircraft getOwnAircraft() const { Q_ASSERT(this->getIContextOwnAircraft()); return this->getIContextOwnAircraft()->getOwnAircraft(); } //! For this text message's recepient, is the current tab selected? bool isCorrespondingTextMessageTabSelected(BlackMisc::Network::CTextMessage textMessage) const;