From 04e5bc6ecb8fdb9f9baec6bd8fdddf833deee77a Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sat, 26 Nov 2016 00:06:21 +0100 Subject: [PATCH] refs #818, allow to log dummy messages / text messages from internals UI * UI * slots in network context * adjusted overlay layout (based on the tests) --- src/blackcore/context/contextnetwork.h | 7 +- src/blackcore/context/contextnetworkempty.h | 7 + src/blackcore/context/contextnetworkimpl.cpp | 9 ++ src/blackcore/context/contextnetworkimpl.h | 3 + src/blackcore/context/contextnetworkproxy.cpp | 5 + src/blackcore/context/contextnetworkproxy.h | 1 + .../components/internalscomponent.cpp | 59 ++++++++ src/blackgui/components/internalscomponent.h | 8 +- src/blackgui/components/internalscomponent.ui | 130 +++++++++++++++++- src/blackgui/overlaymessages.ui | 9 +- 10 files changed, 228 insertions(+), 10 deletions(-) diff --git a/src/blackcore/context/contextnetwork.h b/src/blackcore/context/contextnetwork.h index 458b2abde..def1fac50 100644 --- a/src/blackcore/context/contextnetwork.h +++ b/src/blackcore/context/contextnetwork.h @@ -146,10 +146,10 @@ namespace BlackCore //! Connection status changed void connectionStatusChanged(BlackCore::INetwork::ConnectionStatus from, BlackCore::INetwork::ConnectionStatus to); - //! Text messages received (also private chat messages, rfaio channel messages) + //! Text messages received (also private chat messages, radio channel messages) void textMessagesReceived(const BlackMisc::Network::CTextMessageList &textMessages); - //! A superivisor text message was received + //! A supervisor text message was received void supervisorTextMessageReceived(const BlackMisc::Network::CTextMessage &message); //! Text message sent (by me) @@ -283,6 +283,9 @@ namespace BlackCore //! Inject aircraft parts for testing virtual void testAddAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftParts &parts, bool incremental) = 0; + //! Inject a text message as received + virtual void testReceivedTextMessages(const BlackMisc::Network::CTextMessageList &textMessages) = 0; + protected: //! Constructor IContextNetwork(CCoreFacadeConfig::ContextMode mode, CCoreFacade *runtime) : CContext(mode, runtime) {} diff --git a/src/blackcore/context/contextnetworkempty.h b/src/blackcore/context/contextnetworkempty.h index 5fe80ba47..27b0e5674 100644 --- a/src/blackcore/context/contextnetworkempty.h +++ b/src/blackcore/context/contextnetworkempty.h @@ -229,6 +229,13 @@ namespace BlackCore logEmptyContextWarning(Q_FUNC_INFO); } + //! \copydoc IContextNetwork::testReceivedTextMessages + virtual void testReceivedTextMessages(const BlackMisc::Network::CTextMessageList &textMessages) override + { + Q_UNUSED(textMessages); + logEmptyContextWarning(Q_FUNC_INFO); + } + //! \copydoc IContextNetwork::parseCommandLine virtual bool parseCommandLine(const QString &commandLine, const BlackMisc::CIdentifier &originator) override { diff --git a/src/blackcore/context/contextnetworkimpl.cpp b/src/blackcore/context/contextnetworkimpl.cpp index 6291b212e..4bfa99a01 100644 --- a/src/blackcore/context/contextnetworkimpl.cpp +++ b/src/blackcore/context/contextnetworkimpl.cpp @@ -654,6 +654,15 @@ namespace BlackCore this->m_airspace->testAddAircraftParts(callsign, parts, incremental); } + void CContextNetwork::testReceivedTextMessages(const CTextMessageList &textMessages) + { + if (this->isDebugEnabled()) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << textMessages.toQString(); } + if (this->network()) + { + emit this->network()->textMessagesReceived(textMessages); + } + } + CMetar CContextNetwork::getMetarForAirport(const BlackMisc::Aviation::CAirportIcaoCode &airportIcaoCode) const { if (this->isDebugEnabled()) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << airportIcaoCode; } diff --git a/src/blackcore/context/contextnetworkimpl.h b/src/blackcore/context/contextnetworkimpl.h index 53cd65a03..b1623b9cc 100644 --- a/src/blackcore/context/contextnetworkimpl.h +++ b/src/blackcore/context/contextnetworkimpl.h @@ -273,6 +273,9 @@ namespace BlackCore //! \copydoc IContextNetwork::testAddAircraftParts virtual void testAddAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftParts &parts, bool incremental) override; + //! \copydoc IContextNetwork::testReceivedTextMessages + virtual void testReceivedTextMessages(const BlackMisc::Network::CTextMessageList &textMessages) override; + //! Gracefully shut down, e.g. for thread safety void gracefulShutdown(); diff --git a/src/blackcore/context/contextnetworkproxy.cpp b/src/blackcore/context/contextnetworkproxy.cpp index 225bd2bd4..b51b7441c 100644 --- a/src/blackcore/context/contextnetworkproxy.cpp +++ b/src/blackcore/context/contextnetworkproxy.cpp @@ -241,6 +241,11 @@ namespace BlackCore this->m_dBusInterface->callDBus(QLatin1Literal("testAddAircraftParts"), callsign, parts, incremental); } + void CContextNetworkProxy::testReceivedTextMessages(const CTextMessageList &textMessages) + { + this->m_dBusInterface->callDBus(QLatin1Literal("testReceivedTextMessages"), textMessages); + } + CStatusMessage CContextNetworkProxy::connectToNetwork(const CServer &server, INetwork::LoginMode loginMode) { return this->m_dBusInterface->callDBusRet(QLatin1Literal("connectToNetwork"), server, loginMode); diff --git a/src/blackcore/context/contextnetworkproxy.h b/src/blackcore/context/contextnetworkproxy.h index 803fc1c61..8920af838 100644 --- a/src/blackcore/context/contextnetworkproxy.h +++ b/src/blackcore/context/contextnetworkproxy.h @@ -111,6 +111,7 @@ namespace BlackCore virtual void enableReverseLookupMessages(bool enabled) override; virtual void testCreateDummyOnlineAtcStations(int number) override; virtual void testAddAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftParts &parts, bool incremental) override; + virtual void testReceivedTextMessages(const BlackMisc::Network::CTextMessageList &textMessages) override; //! @} private: diff --git a/src/blackgui/components/internalscomponent.cpp b/src/blackgui/components/internalscomponent.cpp index bb000db87..f1969ef39 100644 --- a/src/blackgui/components/internalscomponent.cpp +++ b/src/blackgui/components/internalscomponent.cpp @@ -15,9 +15,11 @@ #include "blackgui/components/internalscomponent.h" #include "blackgui/components/remoteaircraftselector.h" #include "blackgui/guiapplication.h" +#include "blackgui/uppercasevalidator.h" #include "blackmisc/aviation/aircraftenginelist.h" #include "blackmisc/aviation/aircraftlights.h" #include "blackmisc/aviation/callsign.h" +#include "blackmisc/network/textmessage.h" #include "blackmisc/logmessage.h" #include "blackmisc/statusmessage.h" @@ -35,6 +37,8 @@ using namespace BlackMisc; using namespace BlackMisc::Aviation; +using namespace BlackMisc::Network; +using namespace BlackMisc::PhysicalQuantities; using namespace BlackCore; namespace BlackGui @@ -46,6 +50,11 @@ namespace BlackGui ui(new Ui::CInternalsComponent) { ui->setupUi(this); + ui->tw_Internals->setCurrentIndex(0); + + ui->le_TxtMsgFrom->setValidator(new CUpperCaseValidator(ui->le_TxtMsgFrom)); + ui->le_TxtMsgTo->setValidator(new CUpperCaseValidator(ui->le_TxtMsgFrom)); + connect(ui->pb_SendAircraftPartsGui, &QPushButton::pressed, this, &CInternalsComponent::ps_sendAircraftParts); connect(ui->pb_SendAircraftPartsJson, &QPushButton::pressed, this, &CInternalsComponent::ps_sendAircraftParts); connect(ui->pb_AircraftPartsLightsOn, &QPushButton::pressed, this, &CInternalsComponent::ps_setAllLights); @@ -64,6 +73,10 @@ namespace BlackGui connect(ui->cb_DebugInterpolator, &QCheckBox::stateChanged, this, &CInternalsComponent::ps_enableDebug); connect(ui->cb_ForceFullInterpolation, &QCheckBox::stateChanged, this, &CInternalsComponent::ps_enableDebug); + connect(ui->pb_SendTextMessage, &QPushButton::pressed, this, &CInternalsComponent::ps_sendTextMessage); + connect(ui->tb_LogStatusMessage, &QPushButton::pressed, this, &CInternalsComponent::ps_logStatusMessage); + connect(ui->le_StatusMessage, &QLineEdit::returnPressed, this, &CInternalsComponent::ps_logStatusMessage); + contextFlagsToGui(); } @@ -178,6 +191,52 @@ namespace BlackGui } } + void CInternalsComponent::ps_sendTextMessage() + { + if (ui->le_TxtMsgTo->text().isEmpty()) { return; } + if (ui->le_TxtMsgFrom->text().isEmpty()) { return; } + if (ui->pte_TxtMsg->toPlainText().isEmpty()) { return; } + if (!sGui->getIContextNetwork()) { return; } + + const CCallsign sender(ui->le_TxtMsgFrom->text().trimmed()); + const CCallsign recipient(ui->le_TxtMsgTo->text().trimmed()); + const QString msgTxt(ui->pte_TxtMsg->toPlainText().trimmed()); + const double freqMHz = ui->dsb_TxtMsgFrequency->value(); + CTextMessage tm; + CFrequency f; + if (freqMHz >= 118.0) + { + f = CFrequency(freqMHz, CFrequencyUnit::MHz()); + tm = CTextMessage(msgTxt, f, sender); + } + else + { + tm = CTextMessage(msgTxt, sender, recipient); + } + tm.setCurrentUtcTime(); + sGui->getIContextNetwork()->testReceivedTextMessages(CTextMessageList({ tm })); + } + + void CInternalsComponent::ps_logStatusMessage() + { + if (ui->le_StatusMessage->text().isEmpty()) { return; } + CStatusMessage::StatusSeverity s = CStatusMessage::SeverityDebug; + if (ui->rb_StatusMessageError->isChecked()) + { + s = CStatusMessage::SeverityError; + } + else if (ui->rb_StatusMessageWarning->isChecked()) + { + s = CStatusMessage::SeverityWarning; + } + else if (ui->rb_StatusMessageInfo->isChecked()) + { + s = CStatusMessage::SeverityInfo; + } + const CStatusMessage sm = CStatusMessage(this, s, ui->le_StatusMessage->text().trimmed()); + CLogMessage::preformatted(sm); + } + CAircraftParts CInternalsComponent::guiToAircraftParts() const { CAircraftLights lights( diff --git a/src/blackgui/components/internalscomponent.h b/src/blackgui/components/internalscomponent.h index 35a91bae1..17e8f36f9 100644 --- a/src/blackgui/components/internalscomponent.h +++ b/src/blackgui/components/internalscomponent.h @@ -54,12 +54,18 @@ namespace BlackGui //! Set all engines void ps_setAllEngines(); - //! GUI to Json + //! GUI to JSON void ps_guiToJson(); //! Enable / disable debugging void ps_enableDebug(int state); + //! Send the text message + void ps_sendTextMessage(); + + //! Send a dummy status message + void ps_logStatusMessage(); + private: QScopedPointer ui; diff --git a/src/blackgui/components/internalscomponent.ui b/src/blackgui/components/internalscomponent.ui index 046b2a22c..1a08cbcb4 100644 --- a/src/blackgui/components/internalscomponent.ui +++ b/src/blackgui/components/internalscomponent.ui @@ -6,7 +6,7 @@ 0 0 - 282 + 289 450 @@ -56,7 +56,7 @@ Contexts - + @@ -100,7 +100,7 @@ Driver plugin and interpolator - + @@ -125,6 +125,126 @@ + + + + + 3 + + + + + w + + + + + + + e + + + true + + + + + + + i + + + + + + + status message + + + + + + + ... + + + + :/diagona/icons/diagona/icons/arrow-circle-225-left.png:/diagona/icons/diagona/icons/arrow-circle-225-left.png + + + + + + + + + + + 3 + + + 9 + + + + + MHz + + + 3 + + + 117.974999999999994 + + + 136.000000000000000 + + + 0.025000000000000 + + + 117.974999999999994 + + + + + + + send + + + + + + + Text messages: + + + + + + + from + + + + + + + to + + + + + + + Text message + + + + + + @@ -543,6 +663,8 @@ 1 - + + + diff --git a/src/blackgui/overlaymessages.ui b/src/blackgui/overlaymessages.ui index a3483778d..03d04875d 100644 --- a/src/blackgui/overlaymessages.ui +++ b/src/blackgui/overlaymessages.ui @@ -114,7 +114,7 @@ - 1 + 4 @@ -242,10 +242,13 @@ + + 9 + - To + to @@ -280,7 +283,7 @@ - +