/** * @RDE_HEADER@ * Handle situation / building display in thp * $Id$ * $HeadURL$ * $Author$ */ #pragma once #include #include #include namespace FileManagement { namespace Database { struct FlmFileContent; } } namespace SituationReplay { class MainHandlerSqlite; } namespace LtsUtils { class QPoint3D; } namespace Ui { class SituationBuildingBase; } namespace THP { enum class State { PS_UNDEFINED = 0, PS_STOP = 1, PS_PLAY = 2, PS_PAUSE = 3 }; constexpr int s_sliderMax = 1000; // 0 .. 1000 class SituationBuildingBase : public QFrame { Q_OBJECT public: explicit SituationBuildingBase(const char *loggerName, QWidget *parent = nullptr); ~SituationBuildingBase(); bool init(SituationReplay::MainHandlerSqlite *replayHandler); bool showSituation(const QString &sitReplayDescription, const QString &basePath); void updateButtons(); bool stop(); QString currentDTGTime() const; protected: virtual bool showSituationInternal(); protected Q_SLOTS: void setSpeed(double newSpeed); virtual void applyCurentFilter(const SituationReplay::FilterInformation &filter) = 0; virtual void applyNewOverlay(int overlayId) = 0; virtual void removeOverlay(int overlayId) = 0; void onSlower(); void onFaster(); void on100pct(); void onPlay(); void onStop(); void onSliderPressed(); void onSliderPositionChanged(int newPosition); void onSliderReleased(); void updateSpeedLabel(); void onUpdateTimeSlider(qint64 curTime); void onCbPlaybackPartsChanged(); void updatePositionLabel(const LtsUtils::QPoint3D &geoPos, bool isValid); virtual void updateZoomSlider() {} virtual void onInitDone(); virtual void emitPartitionTimeChanged(qint64 curTime) = 0; virtual void onFileContentAvailable(const FileManagement::Database::FlmFileContent &) {} protected: QVector m_replayInformation; QVector m_filterInformation; QVector m_overlayInformation; QJsonObject m_attributes; QString m_scriptPath; // sitmap.json double m_speedVal = 1; State m_state = State::PS_STOP; QTimer *m_playTimer = nullptr; SituationReplay::MainHandlerSqlite *m_replayHandler = nullptr; QString m_currentTimeDTGString; qint64 m_sliderMoveTime = 0; Ui::SituationBuildingBase *m_ui; NGL::INGLLogger &m_logger; }; } // namespace THP