diff --git a/gui/src/Visualization/VisualizationGraphRenderingDelegate.cpp b/gui/src/Visualization/VisualizationGraphRenderingDelegate.cpp index 7abc709..3760ec0 100644 --- a/gui/src/Visualization/VisualizationGraphRenderingDelegate.cpp +++ b/gui/src/Visualization/VisualizationGraphRenderingDelegate.cpp @@ -1,10 +1,29 @@ #include "Visualization/VisualizationGraphRenderingDelegate.h" #include "Visualization/qcustomplot.h" +namespace { + +/// Timeout after which a tracer is displayed +const auto TRACER_TIMEOUT = 500; + +} // namespace + struct VisualizationGraphRenderingDelegate::VisualizationGraphRenderingDelegatePrivate { - explicit VisualizationGraphRenderingDelegatePrivate(QCustomPlot &plot) : m_Plot{plot} {} + explicit VisualizationGraphRenderingDelegatePrivate(QCustomPlot &plot) + : m_Plot{plot}, + m_PointTracer{new QCPItemTracer{&plot}}, + m_TextTracer{new QCPItemText{&plot}}, + m_TracerTimer{} + { + + m_TracerTimer.setInterval(TRACER_TIMEOUT); + m_TracerTimer.setSingleShot(true); + } QCustomPlot &m_Plot; + QCPItemTracer *m_PointTracer; + QCPItemText *m_TextTracer; + QTimer m_TracerTimer; }; VisualizationGraphRenderingDelegate::VisualizationGraphRenderingDelegate(QCustomPlot &plot) @@ -14,4 +33,14 @@ VisualizationGraphRenderingDelegate::VisualizationGraphRenderingDelegate(QCustom void VisualizationGraphRenderingDelegate::onMouseMove(QMouseEvent *event) noexcept { + // Cancels pending refresh + impl->m_TracerTimer.disconnect(); + + auto showTracers = [ eventPos = event->pos(), this ]() + { + }; + + // Starts the timer to display tracers at timeout + QObject::connect(&impl->m_TracerTimer, &QTimer::timeout, showTracers); + impl->m_TracerTimer.start(); }