From 839a836926fea4df517faeba69d0dc0b34597bc5 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Tue, 29 May 2018 13:33:25 +0200 Subject: [PATCH] Encapsulated last network server used in network setup. Will allow to retrieve ecosystem for T272 --- src/blackcore/data/globalsetup.h | 2 +- src/blackcore/data/networksetup.cpp | 85 +++++++++++++++++++++++++++++ src/blackcore/data/networksetup.h | 85 +++++++++++++++++++++++++++++ 3 files changed, 171 insertions(+), 1 deletion(-) create mode 100644 src/blackcore/data/networksetup.cpp create mode 100644 src/blackcore/data/networksetup.h diff --git a/src/blackcore/data/globalsetup.h b/src/blackcore/data/globalsetup.h index 77e04d6ac..c4a07cfba 100644 --- a/src/blackcore/data/globalsetup.h +++ b/src/blackcore/data/globalsetup.h @@ -229,7 +229,7 @@ namespace BlackCore BlackMisc::Network::CUrlList m_newsUrls; //!< where we can obtain latest news BlackMisc::Network::CUrlList m_onlineHelpUrls; //!< online help URLs BlackMisc::Network::CUrlList m_mapUrls; //!< swift map URLs - BlackMisc::Network::CServerList m_fsdTestServers; //!< FSD test servers + BlackMisc::Network::CServerList m_fsdTestServers; //!< FSD test servers loaded from setup file BlackMisc::Network::CUrl m_ncepGlobalForecastSystemUrl; //!< NCEP GFS url // transient members, to be switched on/off via GUI or set from reader diff --git a/src/blackcore/data/networksetup.cpp b/src/blackcore/data/networksetup.cpp new file mode 100644 index 000000000..b4b86b714 --- /dev/null +++ b/src/blackcore/data/networksetup.cpp @@ -0,0 +1,85 @@ +/* Copyright (C) 2018 + * 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 and at http://www.swift-project.org/license.html. 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 "blackcore/data/networksetup.h" +#include "blackcore/application.h" +#include "blackconfig/buildconfig.h" + +using namespace BlackConfig; +using namespace BlackMisc; +using namespace BlackMisc::Network; + +namespace BlackCore +{ + namespace Data + { + CNetworkSetup::CNetworkSetup() + { } + + CServer CNetworkSetup::getLastVatsimServer() const + { + return m_lastVatsimServer.get(); + } + + CStatusMessage CNetworkSetup::setLastVatsimServer(const CServer &server) + { + return m_lastVatsimServer.set(server); + } + + CServer CNetworkSetup::getLastServer() const + { + return m_lastServer.get(); + } + + CStatusMessage CNetworkSetup::setLastServer(const CServer &server) + { + return m_lastServer.set(server); + } + + CServerList CNetworkSetup::getOtherServers() const + { + return m_otherTrafficNetworkServers.get(); + } + + CServerList CNetworkSetup::getOtherServersPlusTestServers() const + { + // add a testserver when no servers can be loaded + CServerList otherServers(this->getOtherServers()); + if (otherServers.isEmpty() && CBuildConfig::isLocalDeveloperDebugBuild()) + { + otherServers.push_back(sApp->getGlobalSetup().getFsdTestServersPlusHardcodedServers()); + } + return otherServers; + } + + CEcosystem CNetworkSetup::getLastEcosystem() const + { + return this->getLastServer().getEcosystem(); + } + + bool CNetworkSetup::wasLastUsedWithVatsim() const + { + return (this->getLastEcosystem() == CEcosystem::vatsim()); + } + + bool CNetworkSetup::wasLastUsedWithOtherServer() const + { + const CServer server(this->getLastServer()); + if (server.isNull()) { return false; } + return server.getEcosystem() == CEcosystem::privateFsd() || + server.getEcosystem() == CEcosystem::swiftTest() || + server.getEcosystem() == CEcosystem::swift(); + } + + void CNetworkSetup::onSettingsChanged() + { + emit this->setupChanged(); + } + } // ns +} // ns diff --git a/src/blackcore/data/networksetup.h b/src/blackcore/data/networksetup.h new file mode 100644 index 000000000..b4419b80f --- /dev/null +++ b/src/blackcore/data/networksetup.h @@ -0,0 +1,85 @@ +/* Copyright (C) 2018 + * 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 and at http://www.swift-project.org/license.html. 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 BLACKCORE_DATA_NETWORKSETUP_H +#define BLACKCORE_DATA_NETWORKSETUP_H + +#include "blackcore/vatsim/vatsimsettings.h" +#include "blackcore/data/vatsimsetup.h" +#include "blackcore/blackcoreexport.h" +#include "blackmisc/network/data/lastserver.h" +#include "blackmisc/network/serverlist.h" +#include "blackmisc/settingscache.h" +#include "blackmisc/metaclass.h" + +#include +#include +#include + +namespace BlackCore +{ + namespace Data + { + //! Remembering the last servers and ecosystem. + class BLACKCORE_EXPORT CNetworkSetup : public QObject + { + Q_OBJECT + + public: + //! Default constructor + CNetworkSetup(); + + //! Destructor. + virtual ~CNetworkSetup() {} + + //! Last VATSIM server (VATSIM only) + BlackMisc::Network::CServer getLastVatsimServer() const; + + //! Set value of last VATSIM server + BlackMisc::CStatusMessage setLastVatsimServer(const BlackMisc::Network::CServer &server); + + //! Last server (all networks) + BlackMisc::Network::CServer getLastServer() const; + + //! Set value of last server + BlackMisc::CStatusMessage setLastServer(const BlackMisc::Network::CServer &server); + + //! Last used eco system + BlackMisc::Network::CEcosystem getLastEcosystem() const; + + //! The other servers + BlackMisc::Network::CServerList getOtherServers() const; + + //! The other servers plus test servers + BlackMisc::Network::CServerList getOtherServersPlusTestServers() const; + + //! Last used with VATSIM? + bool wasLastUsedWithVatsim() const; + + //! Used with an other server (i.e. non VATSIM) + bool wasLastUsedWithOtherServer() const; + + signals: + //! Setup changed + void setupChanged(); + + private: + //! Settings have been changed + void onSettingsChanged(); + + BlackMisc::CSettingReadOnly m_otherTrafficNetworkServers { this, &CNetworkSetup::onSettingsChanged }; + BlackMisc::CData m_lastServer { this, &CNetworkSetup::onSettingsChanged }; //!< recently used server (VATSIM, other) + BlackMisc::CData m_lastVatsimServer { this, &CNetworkSetup::onSettingsChanged }; //!< recently used VATSIM server + }; + } // ns +} // ns + +#endif // guard