From 5498b449ac133acb4fb400cc86a000ba073ae3c3 Mon Sep 17 00:00:00 2001 From: Roland Winklmeier Date: Tue, 6 May 2014 13:19:11 +0200 Subject: [PATCH] Add "ConnectionFailed" to Simulator status enum Rename connectionChanged to statusChanged refs #231 --- samples/blackgui/mainwindow.cpp | 5 ++++- src/blackcore/context_simulator_impl.cpp | 14 ++++++++++---- src/blackcore/context_simulator_impl.h | 2 +- src/blackcore/simulator.h | 7 ++++--- src/plugins/simulator/fsx/simulator_fsx.cpp | 4 ++-- 5 files changed, 21 insertions(+), 11 deletions(-) diff --git a/samples/blackgui/mainwindow.cpp b/samples/blackgui/mainwindow.cpp index a7299b085..aa13d55f2 100644 --- a/samples/blackgui/mainwindow.cpp +++ b/samples/blackgui/mainwindow.cpp @@ -54,7 +54,10 @@ MainWindow::MainWindow(GuiModes::WindowMode windowMode, QWidget *parent) : /* * Destructor */ -MainWindow::~MainWindow() {} +MainWindow::~MainWindow() +{ + this->disconnect(this->getIContextSimulator(), &IContextSimulator::connectionChanged, this, &MainWindow::simulatorConnectionChanged); +} /* * Graceful shutdown diff --git a/src/blackcore/context_simulator_impl.cpp b/src/blackcore/context_simulator_impl.cpp index 12cfb4902..d71c16a6e 100644 --- a/src/blackcore/context_simulator_impl.cpp +++ b/src/blackcore/context_simulator_impl.cpp @@ -113,7 +113,7 @@ namespace BlackCore m_simulator = factory->create(this); Q_ASSERT(m_simulator); - connect(m_simulator, SIGNAL(connectionChanged(bool)), this, SLOT(setConnectionStatus(bool))); + connect(m_simulator, SIGNAL(statusChanged(ISimulator::Status)), this, SLOT(setConnectionStatus(ISimulator::Status))); return true; } @@ -132,13 +132,19 @@ namespace BlackCore getIContextNetwork()->updateOwnCockpit(m_ownAircraft.getCom1System(), m_ownAircraft.getCom2System(), m_ownAircraft.getTransponder()); } - void CContextSimulator::setConnectionStatus(bool value) + void CContextSimulator::setConnectionStatus(ISimulator::Status status) { - if (value) + if (status == ISimulator::Connected) + { m_updateTimer->start(100); + emit connectionChanged(true); + } else + { m_updateTimer->stop(); - emit connectionChanged(value); + emit connectionChanged(false); + } + } void CContextSimulator::findSimulatorPlugins() diff --git a/src/blackcore/context_simulator_impl.h b/src/blackcore/context_simulator_impl.h index 2b6ea7eed..4e215133c 100644 --- a/src/blackcore/context_simulator_impl.h +++ b/src/blackcore/context_simulator_impl.h @@ -87,7 +87,7 @@ namespace BlackCore virtual void updateOwnAircraft(); //! Set new connection status - void setConnectionStatus(bool value); + void setConnectionStatus(ISimulator::Status status); private: //! \brief find and catalog all simulator plugins diff --git a/src/blackcore/simulator.h b/src/blackcore/simulator.h index 333103eca..cf1991e49 100644 --- a/src/blackcore/simulator.h +++ b/src/blackcore/simulator.h @@ -28,8 +28,9 @@ namespace BlackCore //! \brief Simulator connection enum Status { - Not_Connected, - Connected + Disconnected, + Connected, + ConnectionFailed }; //! \brief Constructor @@ -69,7 +70,7 @@ namespace BlackCore signals: //! Emitted when the connection status has changed - void connectionChanged(bool value); + void statusChanged(ISimulator::Status status); //! Emitted when new a new data object of the user aircraft is received void ownAircraftReceived(BlackMisc::Aviation::CAircraft aircraft); diff --git a/src/plugins/simulator/fsx/simulator_fsx.cpp b/src/plugins/simulator/fsx/simulator_fsx.cpp index eef7a69a1..34826d100 100644 --- a/src/plugins/simulator/fsx/simulator_fsx.cpp +++ b/src/plugins/simulator/fsx/simulator_fsx.cpp @@ -69,7 +69,7 @@ namespace BlackSimPlugin m_simconnectTimerId = startTimer(10); m_isConnected = true; - emit connectionChanged(true); + emit statusChanged(Connected); return true; } @@ -78,7 +78,7 @@ namespace BlackSimPlugin if (!m_isConnected) return true; - emit connectionChanged(false); + emit statusChanged(Disconnected); if (m_hSimConnect) SimConnect_Close(m_hSimConnect);