diff --git a/src/blackmisc/aviation/aircraftpartslist.h b/src/blackmisc/aviation/aircraftpartslist.h index 6f7a2b0bc..dfc633dab 100644 --- a/src/blackmisc/aviation/aircraftpartslist.h +++ b/src/blackmisc/aviation/aircraftpartslist.h @@ -12,13 +12,14 @@ #ifndef BLACKMISC_AVIATION_AIRCRAFTPARTSLIST_H #define BLACKMISC_AVIATION_AIRCRAFTPARTSLIST_H +#include "blackmisc/aviation/callsign.h" #include "blackmisc/blackmiscexport.h" #include "blackmisc/collection.h" #include "blackmisc/sequence.h" #include "blackmisc/aviation/aircraftparts.h" #include "blackmisc/timestampobjectlist.h" #include "blackmisc/variant.h" - +#include #include namespace BlackMisc @@ -46,11 +47,20 @@ namespace BlackMisc //! Set on ground for all entries int setOnGround(bool onGround); }; + + //! Parts per callsign + using CAircraftPartsPerCallsign = QHash; + + //! Parts (list) per callsign + using CAircraftPartsListPerCallsign = QHash; + } //namespace } // namespace Q_DECLARE_METATYPE(BlackMisc::Aviation::CAircraftPartsList) Q_DECLARE_METATYPE(BlackMisc::CCollection) Q_DECLARE_METATYPE(BlackMisc::CSequence) +Q_DECLARE_METATYPE(BlackMisc::Aviation::CAircraftPartsPerCallsign) +Q_DECLARE_METATYPE(BlackMisc::Aviation::CAircraftPartsListPerCallsign) #endif //guard diff --git a/src/blackmisc/aviation/aircraftsituationlist.h b/src/blackmisc/aviation/aircraftsituationlist.h index 7d4e15750..d9138fff1 100644 --- a/src/blackmisc/aviation/aircraftsituationlist.h +++ b/src/blackmisc/aviation/aircraftsituationlist.h @@ -25,6 +25,7 @@ #include #include #include +#include namespace BlackMisc { @@ -34,7 +35,7 @@ namespace BlackMisc { class CAircraftParts; - //! Value object encapsulating a list of aircraft situations + //! List of aircraft situations class BLACKMISC_EXPORT CAircraftSituationList : public CSequence, public Geo::IGeoObjectList, @@ -181,11 +182,20 @@ namespace BlackMisc //! \note distance is without CG, so on ground it can also be used to calculate QPair altitudeAglStandardDeviationAndMean() const; }; + + //! Situation per callsign + using CAircraftSituationPerCallsign = QHash; + + //! Situations (list) per callsign + using CAircraftSituationListPerCallsign = QHash; + } // namespace } // namespace Q_DECLARE_METATYPE(BlackMisc::Aviation::CAircraftSituationList) Q_DECLARE_METATYPE(BlackMisc::CCollection) Q_DECLARE_METATYPE(BlackMisc::CSequence) +Q_DECLARE_METATYPE(BlackMisc::Aviation::CAircraftSituationPerCallsign) +Q_DECLARE_METATYPE(BlackMisc::Aviation::CAircraftSituationListPerCallsign) #endif // guard diff --git a/src/blackmisc/aviation/callsignobjectlist.cpp b/src/blackmisc/aviation/callsignobjectlist.cpp index b727991ec..a0068890c 100644 --- a/src/blackmisc/aviation/callsignobjectlist.cpp +++ b/src/blackmisc/aviation/callsignobjectlist.cpp @@ -215,6 +215,28 @@ namespace BlackMisc container().sortBy(&OBJ::getCallsign); } + template + QMap ICallsignObjectList::asCallsignMap() const + { + QMap map; + for (const OBJ &obj : this->container()) + { + map.insert(obj.getCallsign(), obj); + } + return map; + } + + template + QHash ICallsignObjectList::asCallsignHash() const + { + QHash hash; + for (const OBJ &obj : this->container()) + { + hash.insert(obj.getCallsign(), obj); + } + return hash; + } + template CONTAINER ICallsignObjectList::sortedByCallsign() const { diff --git a/src/blackmisc/aviation/callsignobjectlist.h b/src/blackmisc/aviation/callsignobjectlist.h index 2f80f4494..3190a98fa 100644 --- a/src/blackmisc/aviation/callsignobjectlist.h +++ b/src/blackmisc/aviation/callsignobjectlist.h @@ -16,6 +16,7 @@ #include "blackmisc/propertyindexvariantmap.h" #include +#include namespace BlackMisc { @@ -78,7 +79,7 @@ namespace BlackMisc CONTAINER findBySuffix(const QString &suffix) const; //! First found index of callsign, otherwise -1 - int firstIndexOfCallsign(const BlackMisc::Aviation::CCallsign &callsign); + int firstIndexOfCallsign(const CCallsign &callsign); //! Remove all objects with callsign int removeByCallsign(const CCallsign &callsign); @@ -90,7 +91,7 @@ namespace BlackMisc QMap getSuffixes() const; //! Split into 0..n containers as per callsign - QHash splitPerCallsign() const; + QHash splitPerCallsign() const; //! Replace or add objects by callsign int replaceOrAddObjectByCallsign(const OBJ &otherObject); @@ -104,6 +105,12 @@ namespace BlackMisc //! Sort by callsign void sortByCallsign(); + //! Turn into callsign map + QMap asCallsignMap() const; + + //! Turn into callsign hash + QHash asCallsignHash() const; + //! Copy of list sorted by callsign CONTAINER sortedByCallsign() const; diff --git a/src/blackmisc/aviation/percallsign.h b/src/blackmisc/aviation/percallsign.h new file mode 100644 index 000000000..e5189b3ba --- /dev/null +++ b/src/blackmisc/aviation/percallsign.h @@ -0,0 +1,40 @@ +/* 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 BLACKMISC_AVIATION_PERCALLSIGN_H +#define BLACKMISC_AVIATION_PERCALLSIGN_H + +#include "blackmisc/aviation/callsign.h" +#include "blackmisc/pq/length.h" +#include "blackmisc/statusmessagelist.h" + +#include + +namespace BlackMisc +{ + namespace Aviation + { + //! Status message per callsign + using CStatusMessagePerCallsign = QHash; + + //! Status messages (list) per callsign + using CStatusMessageListPerCallsign = QHash; + + //! Timestamp der callsign + using CTimestampPerCallsign = QHash; + + //! Lenght per callsign + using CLengthPerCallsign = QHash; + + } // namespace +} // namespace + +#endif // guard diff --git a/src/blackmisc/network/clientlist.cpp b/src/blackmisc/network/clientlist.cpp index 52e08f68c..f9b8c8813 100644 --- a/src/blackmisc/network/clientlist.cpp +++ b/src/blackmisc/network/clientlist.cpp @@ -30,15 +30,5 @@ namespace BlackMisc if (this->isEmpty()) { return static_cast(CClient::None); } return this->findFirstByCallsign(callsign).getCapabilities(); } - - QMap CClientList::asMap() const - { - QMap map; - for (const CClient &client : *this) - { - map.insert(client.getCallsign(), client); - } - return map; - } } // namespace } // namespace diff --git a/src/blackmisc/network/clientlist.h b/src/blackmisc/network/clientlist.h index 005ac2cd4..8c76113cb 100644 --- a/src/blackmisc/network/clientlist.h +++ b/src/blackmisc/network/clientlist.h @@ -13,11 +13,11 @@ #define BLACKMISC_NETWORK_CLIENTLIST_H #include "blackmisc/aviation/callsignobjectlist.h" -#include "blackmisc/blackmiscexport.h" #include "blackmisc/collection.h" #include "blackmisc/network/client.h" #include "blackmisc/sequence.h" #include "blackmisc/variant.h" +#include "blackmisc/blackmiscexport.h" #include #include @@ -45,15 +45,16 @@ namespace BlackMisc //! Capabilities of client for callsign CClient::Capabilities getCapabilities(const Aviation::CCallsign &callsign) const; - - //! As map - QMap asMap() const; }; + + //! Client per callsign + using CClientPerCallsign = QHash; } //namespace } // namespace Q_DECLARE_METATYPE(BlackMisc::Network::CClientList) Q_DECLARE_METATYPE(BlackMisc::CCollection) Q_DECLARE_METATYPE(BlackMisc::CSequence) +Q_DECLARE_METATYPE(BlackMisc::Network::CClientPerCallsign) #endif //guard