Files
qt5-legatus-legacy/Lts/Application/THP/thpwidgets/thp_situation_building_base.h
T
2026-08-13 18:33:10 +02:00

106 lines
2.5 KiB
C++
Executable File

/**
* @RDE_HEADER@
* Handle situation / building display in thp
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include <QFrame>
#include <NGLLogger/INGLLogger.h>
#include <SituationReplay/main_handler_sqlite.h>
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<SituationReplay::ReplayInformation> m_replayInformation;
QVector<SituationReplay::FilterInformation> m_filterInformation;
QVector<SituationReplay::FilterInformation> 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