#pragma once #include namespace Timeline { // Video (=> Buldings, Streams) class BuildingsRootTrack : public LtsTimeline::Track { public: explicit BuildingsRootTrack(const QString &text); }; class BuildingTrack : public LtsTimeline::Track { public: BuildingTrack(int mainStructureElementId, const QString &name); int mainStructureElementId() const { return m_msei; } void setHitsTrackId(int id) { m_hitsTrackId = id; } int hitsTrackId() const noexcept(false) { if (m_hitsTrackId == -1) throw QStringLiteral("hits track id not available"); return m_hitsTrackId; } // TODO: std::optional private: int m_msei { -1 }; int m_hitsTrackId { -1 }; }; class BuildingHitsTrack : public LtsTimeline::Track { public: explicit BuildingHitsTrack(const QString &text); }; class BuildingStreamTrack : public LtsTimeline::Track { public: BuildingStreamTrack(const QString &internal, const QString &display); }; // Outdoor Cameras class OutdoorCameraRootTrack : public LtsTimeline::Track { public: explicit OutdoorCameraRootTrack(const QString &text); }; class OutdoorCameraTrack : public LtsTimeline::Track { public: explicit OutdoorCameraTrack(const QString &streamName); const QString &streamName() const { return m_streamName; } private: QString m_streamName; }; class VideosRootTrack : public LtsTimeline::Track { public: explicit VideosRootTrack(const QString &text); }; class VideoTrack : public LtsTimeline::Track { public: explicit VideoTrack(const QString &streamName); const QString &streamName() const { return m_streamName; } private: QString m_streamName; }; // TVC class TvcRootTrack : public LtsTimeline::Track { public: explicit TvcRootTrack(const QString &text); }; class TvcStreamTrack : public LtsTimeline::Track { public: TvcStreamTrack(const QString &internalStreamName, const QString &displayStreamName); const QString &internalStreamName() const { return m_internalStreamName; } private: QString m_internalStreamName; }; // CNR class CnrRootTrack : public LtsTimeline::Track { public: explicit CnrRootTrack(const QString &text); }; class CnrStreamTrack : public LtsTimeline::Track { public: CnrStreamTrack(const QString &internalStreamName, const QString &displayStreamName); const QString &internalStreamName() const { return m_internalStreamName; } private: QString m_internalStreamName; }; // Hit Buildings class HitBuildingsRootTrack : public LtsTimeline::Track { public: explicit HitBuildingsRootTrack(const QString &text); }; class HitBuildingTrack : public LtsTimeline::Track { public: HitBuildingTrack(int mainStructureElementId, const QString &name); int mainStructureElementId() const { return m_msei; } private: int m_msei { -1 }; }; } // namespace Timeline