/** * @RDE_HEADER@ * Class MovementTrackManager * $Id$ * $HeadURL$ * $Author$ */ #pragma once // Own #include "movement_track.h" #include // Qt #include #include #include #include //---------------------------------------------------------------------------- namespace SituationMap { class SITUATIONMAP_EXPORT MovementTrackManager : public QObject { Q_OBJECT public: using COORD_T = MovementTrack::COORD_T; using BaseClass = QObject; /// Constructor explicit MovementTrackManager(QObject *parent = nullptr); /// Destructor virtual ~MovementTrackManager(); void init(); qint64 currentTimeMsec() { return m_currentTimeMsec; } QSet setCurrentTimeMsec(qint64 timeMsec); qint64 maxAgeMsec() { return m_maxAgeMsec; } void setMaxAgeMsec(qint64 timeMsec) { m_maxAgeMsec = timeMsec; } qint64 maxViewAgeMsec() { return m_maxViewAgeMsec; } void setMaxViewAgeMsec(qint64 maxViewAgeMsec) { m_maxViewAgeMsec = maxViewAgeMsec; } int maxNumberOfTracks() const { return m_maxNumberOfTracks; } void setMaxNumberOfTracks(int maxNumberOfTracks) { m_maxNumberOfTracks = maxNumberOfTracks; } int maxNumberOfPointsPerTrack() const { return m_maxNumberOfPointsPerTrack; } void setMaxNumberOfPointsPerTrack(int maxPoints) { m_maxNumberOfPointsPerTrack = maxPoints; } int minDistance() const { return m_minDistance; } void setMinDistance(int minDistance) { m_minDistance = minDistance; } bool addPosition(int trackId, const COORD_T &coord, qint64 timeMsec); // if track exists void removeTrack(int trackId); void activateTrack(int trackId); void deactivateTrack(int trackId); bool hasTrack(int trackId) const { return getTrack(trackId); } int size() const { return m_cont.size(); } QVector activeTrackIds() const; QVector deactiveTrackIds() const; PositionCont activeAndVisibleTrack(int trackId) const; void emit_activeSimIdsChanged(const QVector &activeSimIds); bool read(const QJsonObject &json); QJsonObject toJsonObject() const; QByteArray toJson() const; Q_SIGNALS: void trackActivityChanged(int trackId, bool active); void trackRemoved(int trackId); void activeSimIdsChanged(const QVector &activeSimIds); private: bool addTrack(int trackId); using DATA_T = QSharedPointer; using CONT_T = QVector; DATA_T getTrack(int trackId) const; protected: CONT_T m_cont; qint64 m_currentTimeMsec; qint64 m_maxAgeMsec; qint64 m_maxViewAgeMsec; int m_minDistance; int m_maxNumberOfTracks; int m_maxNumberOfPointsPerTrack; private: LOGGER_T m_logger; ///< Interface to the Logging-Facility }; } // namespace SituationMap