Propagate FacilityType and LoginMode to value objects

This commit is contained in:
Roland Rossgotterer
2019-09-13 11:07:38 +02:00
parent 4772aadc1a
commit fa6e7108c7
21 changed files with 243 additions and 56 deletions

View File

@@ -1451,7 +1451,7 @@ namespace BlackCore
if (!sApp || sApp->isShuttingDown() || !sApp->getIContextNetwork()) { return false; }
// It is only relevant if we are logged in as observer
if (sApp->getIContextNetwork()->getLoginMode() != INetwork::LoginAsObserver) { return false; }
if (sApp->getIContextNetwork()->getLoginMode() != BlackMisc::Network::CLoginMode::Observer) { return false; }
const CCallsign ownCallsign = this->getOwnAircraft().getCallsign();
return ownCallsign.isMaybeCopilotCallsign(callsign);

View File

@@ -27,6 +27,7 @@
#include "blackmisc/aviation/flightplan.h"
#include "blackmisc/network/connectionstatus.h"
#include "blackmisc/network/clientlist.h"
#include "blackmisc/network/loginmode.h"
#include "blackmisc/network/server.h"
#include "blackmisc/network/serverlist.h"
#include "blackmisc/network/textmessagelist.h"
@@ -248,16 +249,16 @@ namespace BlackCore
const QString &extraLiveryString, bool sendLivery,
const QString &extraModelString, bool sendModelString,
const BlackMisc::Aviation::CCallsign &partnerCallsign,
BlackCore::INetwork::LoginMode loginMode) = 0;
BlackMisc::Network::CLoginMode loginMode) = 0;
//! Server which is connected, if not connected empty default object.
virtual BlackMisc::Network::CServer getConnectedServer() const = 0;
//! Login mode
virtual INetwork::LoginMode getLoginMode() const = 0;
virtual BlackMisc::Network::CLoginMode getLoginMode() const = 0;
//! Mode as string
const QString &getLoginModeAsString() const { return INetwork::modeAsString(this->getLoginMode()); }
QString getLoginModeAsString() const { return this->getLoginMode().toQString(); }
//! Disconnect from network
//! \return messages generated during disconnecting

View File

@@ -124,7 +124,7 @@ namespace BlackCore
}
//! \copydoc IContextNetwork::connectToNetwork
virtual BlackMisc::CStatusMessage connectToNetwork(const BlackMisc::Network::CServer &server, const QString &extraLiveryString, bool sendLivery, const QString &extraModelString, bool sendModelString, const BlackMisc::Aviation::CCallsign &partnerCallsign, BlackCore::INetwork::LoginMode mode) override
virtual BlackMisc::CStatusMessage connectToNetwork(const BlackMisc::Network::CServer &server, const QString &extraLiveryString, bool sendLivery, const QString &extraModelString, bool sendModelString, const BlackMisc::Aviation::CCallsign &partnerCallsign, BlackMisc::Network::CLoginMode mode) override
{
Q_UNUSED(mode);
Q_UNUSED(server);
@@ -166,10 +166,10 @@ namespace BlackCore
}
//! \copydoc IContextNetwork::getLoginMode
virtual INetwork::LoginMode getLoginMode() const override
virtual BlackMisc::Network::CLoginMode getLoginMode() const override
{
logEmptyContextWarning(Q_FUNC_INFO);
return BlackCore::INetwork::LoginNormal;
return BlackMisc::Network::CLoginMode::Pilot;
}
//! \copydoc IContextNetwork::sendTextMessages()

View File

@@ -217,7 +217,7 @@ namespace BlackCore
if (m_airspace) { m_airspace->gracefulShutdown(); }
}
CStatusMessage CContextNetwork::connectToNetwork(const CServer &server, const QString &extraLiveryString, bool sendLivery, const QString &extraModelString, bool sendModelString, const CCallsign &partnerCallsign, INetwork::LoginMode mode)
CStatusMessage CContextNetwork::connectToNetwork(const CServer &server, const QString &extraLiveryString, bool sendLivery, const QString &extraModelString, bool sendModelString, const CCallsign &partnerCallsign, CLoginMode mode)
{
if (this->isDebugEnabled()) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; }
QString msg;

View File

@@ -252,9 +252,9 @@ namespace BlackCore
virtual BlackMisc::Aviation::CAtcStation getOnlineStationForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual BlackMisc::Aviation::CAtcStationList getOnlineStationsForFrequency(const BlackMisc::PhysicalQuantities::CFrequency &frequency, BlackMisc::Aviation::CComSystem::ChannelSpacing channelSpacing) const override;
virtual bool isOnlineStation(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual BlackMisc::CStatusMessage connectToNetwork(const BlackMisc::Network::CServer &server, const QString &extraLiveryString, bool sendLivery, const QString &extraModelString, bool sendModelString, const BlackMisc::Aviation::CCallsign &partnerCallsign, BlackCore::INetwork::LoginMode mode) override;
virtual BlackMisc::CStatusMessage connectToNetwork(const BlackMisc::Network::CServer &server, const QString &extraLiveryString, bool sendLivery, const QString &extraModelString, bool sendModelString, const BlackMisc::Aviation::CCallsign &partnerCallsign, BlackMisc::Network::CLoginMode mode) override;
virtual BlackMisc::Network::CServer getConnectedServer() const override;
virtual INetwork::LoginMode getLoginMode() const override;
virtual BlackMisc::Network::CLoginMode getLoginMode() const override;
virtual BlackMisc::CStatusMessage disconnectFromNetwork() override;
virtual bool isConnected() const override;
virtual void sendTextMessages(const BlackMisc::Network::CTextMessageList &textMessages) override;
@@ -295,7 +295,7 @@ namespace BlackCore
CAirspaceMonitor *m_airspace = nullptr;
INetwork *m_network = nullptr;
INetwork::ConnectionStatus m_currentStatus = INetwork::Disconnected; //!< used to detect pending connections
INetwork::LoginMode m_currentMode = INetwork::LoginNormal; //!< current modeM
BlackMisc::Network::CLoginMode m_currentMode = BlackMisc::Network::CLoginMode::Pilot; //!< current modeM
QTimer *m_requestAircraftDataTimer = nullptr; //!< general updates such as frequencies, see requestAircraftDataUpdates()
QTimer *m_requestAtisTimer = nullptr; //!< general updates such as ATIS

View File

@@ -353,7 +353,7 @@ namespace BlackCore
return m_dBusInterface->callDBusRet<bool>(QLatin1String("testAddAltitudeOffset"), callsign, offset);
}
CStatusMessage CContextNetworkProxy::connectToNetwork(const CServer &server, const QString &extraLiveryString, bool sendLiveryString, const QString &extraModelString, bool sendModelString, const CCallsign &partnerCallsign, INetwork::LoginMode loginMode)
CStatusMessage CContextNetworkProxy::connectToNetwork(const CServer &server, const QString &extraLiveryString, bool sendLiveryString, const QString &extraModelString, bool sendModelString, const CCallsign &partnerCallsign, CLoginMode loginMode)
{
return m_dBusInterface->callDBusRet<BlackMisc::CStatusMessage>(QLatin1String("connectToNetwork"), server, extraLiveryString, sendLiveryString, extraModelString, sendModelString, partnerCallsign, loginMode);
}
@@ -373,9 +373,9 @@ namespace BlackCore
return m_dBusInterface->callDBusRet<BlackMisc::Network::CServer>(QLatin1String("getConnectedServer"));
}
INetwork::LoginMode CContextNetworkProxy::getLoginMode() const
CLoginMode CContextNetworkProxy::getLoginMode() const
{
return m_dBusInterface->callDBusRet<BlackCore::INetwork::LoginMode>(QLatin1String("getLoginMode"));
return m_dBusInterface->callDBusRet<CLoginMode>(QLatin1String("getLoginMode"));
}
bool CContextNetworkProxy::parseCommandLine(const QString &commandLine, const CIdentifier &originator)

View File

@@ -88,11 +88,11 @@ namespace BlackCore
virtual BlackMisc::Aviation::CAtcStationList getOnlineStationsForFrequency(const BlackMisc::PhysicalQuantities::CFrequency &frequency, BlackMisc::Aviation::CComSystem::ChannelSpacing channelSpacing) const override;
virtual BlackMisc::Aviation::CAtcStation getOnlineStationForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual bool isOnlineStation(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual BlackMisc::CStatusMessage connectToNetwork(const BlackMisc::Network::CServer &server, const QString &extraLiveryString, bool sendLivery, const QString &extraModelString, bool sendModelString, const BlackMisc::Aviation::CCallsign &partnerCallsign, BlackCore::INetwork::LoginMode mode) override;
virtual BlackMisc::CStatusMessage connectToNetwork(const BlackMisc::Network::CServer &server, const QString &extraLiveryString, bool sendLivery, const QString &extraModelString, bool sendModelString, const BlackMisc::Aviation::CCallsign &partnerCallsign, BlackMisc::Network::CLoginMode mode) override;
virtual BlackMisc::CStatusMessage disconnectFromNetwork() override;
virtual bool isConnected() const override;
virtual BlackMisc::Network::CServer getConnectedServer() const override;
virtual INetwork::LoginMode getLoginMode() const override;
virtual BlackMisc::Network::CLoginMode getLoginMode() const override;
virtual bool parseCommandLine(const QString &commandLine, const BlackMisc::CIdentifier &originator) override;
virtual void sendTextMessages(const BlackMisc::Network::CTextMessageList &textMessages) override;
virtual void sendFlightPlan(const BlackMisc::Aviation::CFlightPlan &flightPlan) override;

View File

@@ -30,8 +30,6 @@ namespace BlackCore
{
// not really clear when a type here has to be registered with qRegisterMetaType
// however, does not harm if it is redundant
qRegisterMetaType<INetwork::ConnectionStatus>();
qRegisterMetaType<INetwork::LoginMode>();
qRegisterMetaType<IVoiceChannel::ConnectionStatus>();
qRegisterMetaType<CWebReaderFlags::WebReader>();
qRegisterMetaType<CWebReaderFlags::WebReaderFlag>();
@@ -40,14 +38,14 @@ namespace BlackCore
qDBusRegisterMetaType<Context::CLogSubscriptionPair>();
qDBusRegisterMetaType<Context::CSettingsDictionary>();
qDBusRegisterMetaType<INetwork::ConnectionStatus>();
qDBusRegisterMetaType<INetwork::LoginMode>();
qDBusRegisterMetaType<BlackMisc::Network::CLoginMode>();
qDBusRegisterMetaType<IVoiceChannel::ConnectionStatus>();
qRegisterMetaTypeStreamOperators<Context::CLogSubscriptionHash>();
qRegisterMetaTypeStreamOperators<Context::CLogSubscriptionPair>();
qRegisterMetaTypeStreamOperators<Context::CSettingsDictionary>();
qRegisterMetaTypeStreamOperators<BlackMisc::Network::CLoginMode>();
qRegisterMetaTypeStreamOperators<INetwork::ConnectionStatus>();
qRegisterMetaTypeStreamOperators<INetwork::LoginMode>();
qRegisterMetaTypeStreamOperators<IVoiceChannel::ConnectionStatus>();
Db::CDatabaseReaderConfig::registerMetadata();

View File

@@ -22,7 +22,6 @@
#include "blackcore/context/contextnetwork.h"
#include "blackcore/data/globalsetup.h"
#include "blackcore/webdataservices.h"
#include "blackcore/network.h"
#include "blackcore/simulator.h"
#include "blackmisc/simulation/simulatorinternals.h"
#include "blackmisc/simulation/aircraftmodel.h"
@@ -167,11 +166,10 @@ namespace BlackGui
ui->comp_OwnAircraft->updateOwnAircaftIcaoValuesFromGuiValues();
// Login mode
const INetwork::LoginMode mode = ui->comp_NetworkDetails->getLoginMode();
switch (mode)
const CLoginMode mode = ui->comp_NetworkDetails->getLoginMode();
switch (mode.getLoginMode())
{
case INetwork::LoginStealth: CLogMessage(this).info(u"login in stealth mode"); break;
case INetwork::LoginAsObserver: CLogMessage(this).info(u"login in observer mode"); break;
case CLoginMode::Observer: CLogMessage(this).info(u"login in observer mode"); break;
default: break; // INetwork::LoginNormal
}

View File

@@ -289,13 +289,8 @@ namespace BlackGui
this->updateOwnAircaftIcaoValuesFromGuiValues();
// Login mode
const INetwork::LoginMode mode = ui->frp_LoginMode->getLoginMode();
switch (mode)
{
case INetwork::LoginStealth: CLogMessage(this).info(u"login in stealth mode"); break;
case INetwork::LoginAsObserver: CLogMessage(this).info(u"login in observer mode"); break;
default: break; // INetwork::LoginNormal
}
const CLoginMode mode = ui->frp_LoginMode->getLoginMode();
if(mode.isObserver()) { CLogMessage(this).info(u"login in observer mode"); }
// Server
currentServer = this->getCurrentServer();

View File

@@ -13,7 +13,6 @@
#include "blackcore/vatsim/vatsimsettings.h"
#include "blackcore/data/networksetup.h"
#include "blackcore/network.h"
#include "blackgui/settings/guisettings.h"
#include "blackgui/overlaymessagesframe.h"
#include "blackgui/blackguiexport.h"

View File

@@ -75,12 +75,12 @@ namespace BlackGui
CNetworkDetailsComponent::~CNetworkDetailsComponent()
{ }
INetwork::LoginMode CNetworkDetailsComponent::getLoginMode() const
CLoginMode CNetworkDetailsComponent::getLoginMode() const
{
return ui->frp_LoginMode->getLoginMode();
}
void CNetworkDetailsComponent::setLoginMode(INetwork::LoginMode mode)
void CNetworkDetailsComponent::setLoginMode(CLoginMode mode)
{
ui->frp_LoginMode->setLoginMode(mode);
}

View File

@@ -15,7 +15,6 @@
#include <QScopedPointer>
#include "blackcore/data/networksetup.h"
#include "blackcore/network.h"
#include "blackmisc/network/data/lastserver.h"
#include "blackmisc/network/entityflags.h"
#include "blackmisc/network/fsdsetup.h"
@@ -23,6 +22,7 @@
#include "blackmisc/settingscache.h"
#include "blackmisc/datacache.h"
#include "blackmisc/network/connectionstatus.h"
#include "blackmisc/network/loginmode.h"
namespace Ui { class CNetworkDetailsComponent; }
namespace BlackGui
@@ -79,10 +79,10 @@ namespace BlackGui
bool isVoiceSetupOverrideEnabled() const;
//! Login mode
BlackCore::INetwork::LoginMode getLoginMode() const;
BlackMisc::Network::CLoginMode getLoginMode() const;
//! Login mode
void setLoginMode(BlackCore::INetwork::LoginMode mode);
void setLoginMode(BlackMisc::Network::CLoginMode mode);
//! Reset state
void resetState();

View File

@@ -19,6 +19,7 @@
using namespace BlackConfig;
using namespace BlackCore;
using namespace BlackCore::Context;
using namespace BlackMisc::Network;
namespace BlackGui
{
@@ -35,32 +36,25 @@ namespace BlackGui
CLoginModeButtons::~CLoginModeButtons()
{ }
INetwork::LoginMode BlackGui::CLoginModeButtons::getLoginMode() const
CLoginMode BlackGui::CLoginModeButtons::getLoginMode() const
{
INetwork::LoginMode mode = INetwork::LoginNormal;
if (ui->rb_LoginStealth->isChecked())
CLoginMode mode = CLoginMode::Pilot;
if (ui->rb_LoginObserver->isChecked())
{
mode = INetwork::LoginStealth;
}
else if (ui->rb_LoginObserver->isChecked())
{
mode = INetwork::LoginAsObserver;
mode.setLoginMode(CLoginMode::Observer);
}
return mode;
}
void CLoginModeButtons::setLoginMode(INetwork::LoginMode mode)
void CLoginModeButtons::setLoginMode(CLoginMode mode)
{
switch (mode)
switch (mode.getLoginMode())
{
case INetwork::LoginAsObserver:
case CLoginMode::Observer:
ui->rb_LoginObserver->setChecked(true);
break;
case INetwork::LoginStealth:
ui->rb_LoginStealth->setChecked(true);
break;
default:
case INetwork::LoginNormal:
case CLoginMode::Pilot:
ui->rb_LoginNormal->setChecked(true);
break;
}

View File

@@ -11,9 +11,10 @@
#ifndef BLACKGUI_LOGINMODEBUTTONS_H
#define BLACKGUI_LOGINMODEBUTTONS_H
#include "blackcore/network.h"
#include "blackgui/blackguiexport.h"
#include "blackmisc/network/connectionstatus.h"
#include "blackmisc/network/loginmode.h"
#include <QFrame>
#include <QObject>
#include <QScopedPointer>
@@ -34,10 +35,10 @@ namespace BlackGui
virtual ~CLoginModeButtons() override;
//! Get login mode, \sa BlackCore::INetwork::LoginMode
BlackCore::INetwork::LoginMode getLoginMode() const;
BlackMisc::Network::CLoginMode getLoginMode() const;
//! Set login mode
void setLoginMode(BlackCore::INetwork::LoginMode mode);
void setLoginMode(BlackMisc::Network::CLoginMode mode);
//! Set to read only
void setReadOnly(bool readonly);

View File

@@ -0,0 +1,36 @@
/* Copyright (C) 2019
* swift project Community / Contributors
*
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution. No part of swift project, including this file, may be copied, modified, propagated,
* or distributed except according to the terms contained in the LICENSE file.
*/
#include "blackmisc/network/facilitytype.h"
namespace BlackMisc
{
namespace Network
{
QString CFacilityType::convertToQString(bool i18n) const
{
Q_UNUSED(i18n);
switch (m_facilityType)
{
case OBS: return QStringLiteral("OBS");
case FSS: return QStringLiteral("FSS");
case DEL: return QStringLiteral("DEL");
case GND: return QStringLiteral("GND");
case TWR: return QStringLiteral("TWR");
case APP: return QStringLiteral("APP");
case CTR: return QStringLiteral("CTR");
case Unknown: return QStringLiteral("Unknown");
}
Q_UNREACHABLE();
return {};
}
} // namespace
} // namespace

View File

@@ -0,0 +1,66 @@
/* Copyright (C) 2019
* swift project Community / Contributors
*
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution. No part of swift project, including this file, may be copied, modified, propagated,
* or distributed except according to the terms contained in the LICENSE file.
*/
//! \file
#ifndef BLACKMISC_NETWORK_FACILITYTYPE_H
#define BLACKMISC_NETWORK_FACILITYTYPE_H
#include "blackmisc/blackmiscexport.h"
#include "blackmisc/valueobject.h"
namespace BlackMisc
{
namespace Network
{
//! Value object encapsulating the ATC facility type, e.g. TWR, DEP, APP
class BLACKMISC_EXPORT CFacilityType : public CValueObject<CFacilityType>
{
public:
//! Login modes
enum FacilityType
{
OBS, /*!< OBS */
FSS, /*!< FSS */
DEL, /*!< Delivery */
GND, /*!< Ground */
TWR, /*!< Tower */
APP, /*!< Approach */
CTR, /*!< Center */
Unknown /*!< Unknown */
};
//! Default constructor.
CFacilityType() = default;
//! Constructor
CFacilityType(FacilityType mode) : m_facilityType(mode) {}
//! Get type
FacilityType getFacilityType() const { return m_facilityType; }
//! Set type
void setFacilityType(FacilityType type) { m_facilityType = type; }
//! \copydoc BlackMisc::Mixin::String::toQString
QString convertToQString(bool i18n = false) const;
private:
FacilityType m_facilityType = Unknown;
BLACK_METACLASS(
CFacilityType,
BLACK_METAMEMBER(facilityType)
);
};
} // namespace
} // namespace
Q_DECLARE_METATYPE(BlackMisc::Network::CFacilityType)
#endif // guard

View File

@@ -0,0 +1,30 @@
/* Copyright (C) 2019
* swift project Community / Contributors
*
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution. No part of swift project, including this file, may be copied, modified, propagated,
* or distributed except according to the terms contained in the LICENSE file.
*/
#include "blackmisc/network/loginmode.h"
namespace BlackMisc
{
namespace Network
{
QString CLoginMode::convertToQString(bool i18n) const
{
Q_UNUSED(i18n);
switch (m_loginMode)
{
case Pilot: return QStringLiteral("Pilot");
case Observer: return QStringLiteral("Observer");
}
Q_UNREACHABLE();
return {};
}
} // namespace
} // namespace

View File

@@ -0,0 +1,64 @@
/* Copyright (C) 2019
* swift project Community / Contributors
*
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution. No part of swift project, including this file, may be copied, modified, propagated,
* or distributed except according to the terms contained in the LICENSE file.
*/
//! \file
#ifndef BLACKMISC_NETWORK_LOGINMODE_H
#define BLACKMISC_NETWORK_LOGINMODE_H
#include "blackmisc/blackmiscexport.h"
#include "blackmisc/valueobject.h"
namespace BlackMisc
{
namespace Network
{
//! Value object encapsulating information about login mode
class BLACKMISC_EXPORT CLoginMode : public CValueObject<CLoginMode>
{
public:
//! Login modes
enum LoginMode
{
Pilot, //!< Normal login
Observer, //!< Login as observer
};
//! Default constructor.
CLoginMode() = default;
//! Constructor
CLoginMode(LoginMode mode) : m_loginMode(mode) {}
bool isPilot() const { return m_loginMode == Pilot; }
bool isObserver() const { return m_loginMode == Observer; }
//! Get status
LoginMode getLoginMode() const { return m_loginMode; }
//! Set status
void setLoginMode(LoginMode mode) { m_loginMode = mode; }
//! \copydoc BlackMisc::Mixin::String::toQString
QString convertToQString(bool i18n = false) const;
private:
LoginMode m_loginMode = Pilot;
BLACK_METACLASS(
CLoginMode,
BLACK_METAMEMBER(loginMode)
);
};
} // namespace
} // namespace
Q_DECLARE_METATYPE(BlackMisc::Network::CLoginMode)
#endif // guard

View File

@@ -23,7 +23,9 @@
#include "blackmisc/network/ecosystem.h"
#include "blackmisc/network/ecosystemlist.h"
#include "blackmisc/network/entityflags.h"
#include "blackmisc/network/facilitytype.h"
#include "blackmisc/network/fsdsetup.h"
#include "blackmisc/network/loginmode.h"
#include "blackmisc/network/rawfsdmessage.h"
#include "blackmisc/network/rawfsdmessagelist.h"
#include "blackmisc/network/role.h"

View File

@@ -24,7 +24,9 @@ namespace BlackMisc
CEcosystem::registerMetadata();
CEcosystemList::registerMetadata();
CEntityFlags::registerMetadata();
CFacilityType::registerMetadata();
CFsdSetup::registerMetadata();
CLoginMode::registerMetadata();
CRawFsdMessage::registerMetadata();
CRawFsdMessageList::registerMetadata();
CRemoteFile::registerMetadata();
@@ -44,6 +46,7 @@ namespace BlackMisc
CUserList::registerMetadata();
CVoiceCapabilities::registerMetadata();
Settings::CNetworkSettings::registerMetadata();
}
} // ns
} // ns