slider-ignorewheel.hpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #pragma once
  2. #include "obs.hpp"
  3. #include <QSlider>
  4. #include <QInputEvent>
  5. #include <QtCore/QObject>
  6. #include <QAccessibleWidget>
  7. #include <QStyleOptionSlider>
  8. class SliderIgnoreScroll : public QSlider {
  9. Q_OBJECT
  10. public:
  11. SliderIgnoreScroll(QWidget *parent = nullptr);
  12. SliderIgnoreScroll(Qt::Orientation orientation,
  13. QWidget *parent = nullptr);
  14. protected:
  15. virtual void wheelEvent(QWheelEvent *event) override;
  16. };
  17. class VolumeSlider : public SliderIgnoreScroll {
  18. Q_OBJECT
  19. public:
  20. obs_fader_t *fad;
  21. VolumeSlider(obs_fader_t *fader, QWidget *parent = nullptr);
  22. VolumeSlider(obs_fader_t *fader, Qt::Orientation orientation,
  23. QWidget *parent = nullptr);
  24. };
  25. class VolumeAccessibleInterface : public QAccessibleWidget {
  26. public:
  27. VolumeAccessibleInterface(QWidget *w);
  28. QVariant currentValue() const;
  29. void setCurrentValue(const QVariant &value);
  30. QVariant maximumValue() const;
  31. QVariant minimumValue() const;
  32. QVariant minimumStepSize() const;
  33. private:
  34. VolumeSlider *slider() const;
  35. protected:
  36. virtual QAccessible::Role role() const override;
  37. virtual QString text(QAccessible::Text t) const override;
  38. };
  39. class SliderIgnoreClick : public SliderIgnoreScroll {
  40. public:
  41. inline SliderIgnoreClick(Qt::Orientation orientation,
  42. QWidget *parent = nullptr)
  43. : SliderIgnoreScroll(orientation, parent)
  44. {
  45. }
  46. protected:
  47. virtual void mousePressEvent(QMouseEvent *event) override;
  48. virtual void mouseReleaseEvent(QMouseEvent *event) override;
  49. virtual void mouseMoveEvent(QMouseEvent *event) override;
  50. private:
  51. bool dragging = false;
  52. };