/** * @RDE_HEADER@ * Interface * $Id$ * $HeadURL$ * $Author$ */ #pragma once #include "sim_to_situation_map_tmpl.h" #include "participant_to_map.h" // participantIsVisible #include #include #include #include #include #include namespace SituationMap { // forward: class PdmHandler; class HitlineInfo2SituationMap final : public Sim2SituationMap , protected DdsFilterHandling { Q_OBJECT using BaseClass = SituationMap::Sim2SituationMap; using FilterClass = DdsFilterHandling; public: HitlineInfo2SituationMap(PdmHandler *pdmHandler, Participant2SituationMap *participant2SituationMap, ObjectFactory &objFac, const QString &layername, int drawOrder, const char *loggerName); ~HitlineInfo2SituationMap(); bool init(PluginProvider *pluginProvider); bool run() override; void stop() override; bool isElapsed(const ParticipantManagement::HitLineInfo &ddsData) const override; bool mapObjectsClicked(const QVector &uniqueMapIds) override; bool unifiedMapObjectData(UniqueMapId uniqueMapId, UnifiedMapObjectData &umodOut) const override; QString chargeTypeIdentifier(const int32_t originatorChargeTypeId) const; protected Q_SLOTS: bool onHitLineInfoChanged(const Sim2SituationMap::DDS_T &ddsData, DataModification modType = DataModification::eAdded); void onBuildingHitlineInfoChanged(const Buildings::BuildingHitLineInfo &data, DataModification modType); void onCleanupBuildingHitlines(); protected: bool isVisible(const Sim2SituationMap::DDS_T &ddsData, bool *bUncertain) const; bool visibleBySymbolPartyAppearance(const Sim2SituationMap::DDS_T &ddsData) const; bool visibleByParticipants(const Sim2SituationMap::DDS_T &ddsData, bool *bUncertain) const; bool visibleByBldgHitlines(const Sim2SituationMap::DDS_T &ddsData) const; bool visibleByHitLineDisplayLength(const qint64 newPartitionTime, const DDS_T &ddsData) const; void onPartitionTimeChanged(); bool createElement(const DDS_T &ddsData) override; int32_t getSimId(const Sim2SituationMap::DDS_T &ddsData) const override; bool updateElementImpl(const Sim2SituationMap::DDS_T &ddsData, RefPointer mapObj) override; void onSymbolAppearanceSettingsChanged(FilterManagement::SymbolAppearanceSettings::Part part) override; bool symbolAppearanceSettingsChangesAreRelevant(const FilterManagement::SymbolAppearanceSettings::Settings &newSas) const override; void handleSymbolAppearanceSettings(RefPointer &mapObj) override { if (!mapObj.valid()) return; const int simId = m_uniqueMapId2SimId.value(mapObj->uniqueMapId()); handleSymbolAppearanceSettings(mapObj, m_ddsDataContainer.value(simId)); } void handleSymbolAppearanceSettings(); void handleSymbolAppearanceSettings(RefPointer mapObj, const Sim2SituationMap::DDS_T &ddsData); private: PluginProvider *m_pluginProvider = nullptr; std::shared_ptr m_ppmDtc; PdmHandler *m_pdmHandler = nullptr; QPointer m_participant2SituationMap; struct BuildingHit { int64_t sampleTime = 0; int originatorParticipantId = 0; int chargeTypeId = 0; }; QHash> m_buildingHits; QTimer *m_pBuildingHitlineCleanupTimer = nullptr; }; } // namespace