refs #799, use message settings

This commit is contained in:
Klaus Basan
2016-11-13 00:44:51 +01:00
parent af6dcc6191
commit 8a44774c98
4 changed files with 28 additions and 6 deletions

View File

@@ -554,8 +554,12 @@ namespace BlackCore
void CContextSimulator::ps_textMessagesReceived(const Network::CTextMessageList &textMessages) void CContextSimulator::ps_textMessagesReceived(const Network::CTextMessageList &textMessages)
{ {
if (!isSimulatorSimulating()) { return; } if (!isSimulatorSimulating()) { return; }
if (!this->getIContextOwnAircraft()) { return; }
const CSettingsSimulatorMessages settings = m_messageSettings.getThreadLocal();
const CSimulatedAircraft ownAircraft = this->getIContextOwnAircraft()->getOwnAircraft();
for (const auto &tm : textMessages) for (const auto &tm : textMessages)
{ {
if (!settings.relayThisTextMessage(tm, ownAircraft)) { continue; }
m_simulatorPlugin.second->displayTextMessage(tm); m_simulatorPlugin.second->displayTextMessage(tm);
} }
} }
@@ -598,9 +602,12 @@ namespace BlackCore
void CContextSimulator::ps_relayStatusMessageToSimulator(const BlackMisc::CStatusMessage &message) void CContextSimulator::ps_relayStatusMessageToSimulator(const BlackMisc::CStatusMessage &message)
{ {
if (!isSimulatorSimulating()) { return; } if (!isSimulatorSimulating()) { return; }
//! \todo add settings and only relay messages as set in settings const CSettingsSimulatorMessages simMsg = m_messageSettings.getThreadLocal();
if (simMsg.relayThisStatusMessage(message))
{
m_simulatorPlugin.second->displayStatusMessage(message); m_simulatorPlugin.second->displayStatusMessage(message);
} }
}
void CContextSimulator::restoreSimulatorPlugins() void CContextSimulator::restoreSimulatorPlugins()
{ {

View File

@@ -12,6 +12,7 @@
#ifndef BLACKCORE_CONTEXT_CONTEXTSIMULATOR_IMPL_H #ifndef BLACKCORE_CONTEXT_CONTEXTSIMULATOR_IMPL_H
#define BLACKCORE_CONTEXT_CONTEXTSIMULATOR_IMPL_H #define BLACKCORE_CONTEXT_CONTEXTSIMULATOR_IMPL_H
#include "blackcore/aircraftmatcher.h" #include "blackcore/aircraftmatcher.h"
#include "blackcore/blackcoreexport.h" #include "blackcore/blackcoreexport.h"
#include "blackcore/context/contextsimulator.h" #include "blackcore/context/contextsimulator.h"
@@ -31,6 +32,7 @@
#include "blackmisc/simulation/simulatorplugininfo.h" #include "blackmisc/simulation/simulatorplugininfo.h"
#include "blackmisc/simulation/simulatorplugininfolist.h" #include "blackmisc/simulation/simulatorplugininfolist.h"
#include "blackmisc/simulation/simulatorsetup.h" #include "blackmisc/simulation/simulatorsetup.h"
#include "blackmisc/simulation/simulationsettings.h"
#include "blackmisc/worker.h" #include "blackmisc/worker.h"
#include <QObject> #include <QObject>
@@ -194,6 +196,7 @@ namespace BlackCore
BlackCore::CAircraftMatcher m_modelMatcher; //!< Model matcher BlackCore::CAircraftMatcher m_modelMatcher; //!< Model matcher
BlackMisc::Simulation::CAircraftModelSetLoader m_modelSetLoader { this }; //!< load model set from caches BlackMisc::Simulation::CAircraftModelSetLoader m_modelSetLoader { this }; //!< load model set from caches
QMap<BlackMisc::Aviation::CCallsign, BlackMisc::CStatusMessageList> m_matchingMessages; QMap<BlackMisc::Aviation::CCallsign, BlackMisc::CStatusMessageList> m_matchingMessages;
BlackMisc::CSettingReadOnly<BlackMisc::Simulation::TSimulatorMessages> m_messageSettings { this }; //!< settings for messages
bool m_initallyAddAircrafts = false; bool m_initallyAddAircrafts = false;
bool m_enableMatchingMessages = true; bool m_enableMatchingMessages = true;
}; };

View File

@@ -351,7 +351,16 @@ namespace BlackMisc
return this->getRelayedTextMessageTypes().testFlag(TextMessagesCom2); return this->getRelayedTextMessageTypes().testFlag(TextMessagesCom2);
} }
bool CSettingsSimulatorMessages::isRelayedTextMessage(const Network::CTextMessage &msg, const BlackMisc::Simulation::CSimulatedAircraft &aircraft) const bool CSettingsSimulatorMessages::relayThisStatusMessage(const CStatusMessage &message) const
{
if (message.isEmpty()) { return false; }
if (!this->isGloballyEnabled()) { return false; }
if (!this->isRelayedTechnicalMessages()) { return false; }
int s = static_cast<int>(message.getSeverity());
return (s >= this->m_technicalLogLevel);
}
bool CSettingsSimulatorMessages::relayThisTextMessage(const Network::CTextMessage &msg, const BlackMisc::Simulation::CSimulatedAircraft &aircraft) const
{ {
if (msg.isEmpty()) { return false; } if (msg.isEmpty()) { return false; }
if (!this->isGloballyEnabled()) { return false; } if (!this->isGloballyEnabled()) { return false; }

View File

@@ -246,15 +246,18 @@ namespace BlackMisc
//! Relay UNICOM messages //! Relay UNICOM messages
bool isRelayedUnicomTextMessages() const; bool isRelayedUnicomTextMessages() const;
//! Relay given text message
bool isRelayedTextMessage(const BlackMisc::Network::CTextMessage &msg, const BlackMisc::Simulation::CSimulatedAircraft &aircraft) const;
//! Relay COM1 text message //! Relay COM1 text message
bool isRelayedCom1TextMessages() const; bool isRelayedCom1TextMessages() const;
//! Relay COM2 text message //! Relay COM2 text message
bool isRelayedCom2TextMessages() const; bool isRelayedCom2TextMessages() const;
//! Relay given text message
bool relayThisTextMessage(const BlackMisc::Network::CTextMessage &msg, const BlackMisc::Simulation::CSimulatedAircraft &aircraft) const;
//! Relay this particular message
bool relayThisStatusMessage(const BlackMisc::CStatusMessage &message) const;
//! Relayed text messages //! Relayed text messages
CSettingsSimulatorMessages::TextMessageType getRelayedTextMessageTypes() const; CSettingsSimulatorMessages::TextMessageType getRelayedTextMessageTypes() const;