// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #ifndef JFJOCH_SLIDERPLUSBOX_H #define JFJOCH_SLIDERPLUSBOX_H #include #include #include #include #include #include class SliderPlusBox : public QWidget { Q_OBJECT public: enum ScaleType { Linear, Logarithmic }; Q_ENUM(ScaleType) private: QSlider* m_slider; QDoubleSpinBox* m_doubleSpinBox; QTimer* m_updateTimer; double v; double m_step; double m_min; double m_max; int m_decimals; int m_pendingSliderValue; bool m_sliderDragging; ScaleType m_scaleType; void updateFromSlider(int sliderValue); double sliderToValue(int sliderValue) const; int valueToSlider(double value) const; void updateSliderRange(); public: SliderPlusBox(double min, double max, double step, int decimals, QWidget *parent = nullptr, ScaleType scaleType = Linear); void setValue(double value); double value() const { return v; } void setScaleType(ScaleType type); ScaleType scaleType() const { return m_scaleType; } signals: void valueChanged(double value); }; #endif //JFJOCH_SLIDERPLUSBOX_H