slider-ignorewheel.cpp 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #include "slider-ignorewheel.hpp"
  2. #include "volume-control.hpp"
  3. SliderIgnoreScroll::SliderIgnoreScroll(QWidget *parent) : QSlider(parent)
  4. {
  5. setFocusPolicy(Qt::StrongFocus);
  6. }
  7. SliderIgnoreScroll::SliderIgnoreScroll(Qt::Orientation orientation,
  8. QWidget *parent)
  9. : QSlider(parent)
  10. {
  11. setFocusPolicy(Qt::StrongFocus);
  12. setOrientation(orientation);
  13. }
  14. void SliderIgnoreScroll::wheelEvent(QWheelEvent *event)
  15. {
  16. if (!hasFocus())
  17. event->ignore();
  18. else
  19. QSlider::wheelEvent(event);
  20. }
  21. VolumeSlider::VolumeSlider(obs_fader_t *fader, QWidget *parent)
  22. : SliderIgnoreScroll(parent)
  23. {
  24. fad = fader;
  25. }
  26. VolumeSlider::VolumeSlider(obs_fader_t *fader, Qt::Orientation orientation,
  27. QWidget *parent)
  28. : SliderIgnoreScroll(orientation, parent)
  29. {
  30. fad = fader;
  31. }
  32. VolumeAccessibleInterface::VolumeAccessibleInterface(QWidget *w)
  33. : QAccessibleWidget(w)
  34. {
  35. }
  36. VolumeSlider *VolumeAccessibleInterface::slider() const
  37. {
  38. return qobject_cast<VolumeSlider *>(object());
  39. }
  40. QString VolumeAccessibleInterface::text(QAccessible::Text t) const
  41. {
  42. if (slider()->isVisible()) {
  43. switch (t) {
  44. case QAccessible::Text::Value:
  45. return currentValue().toString();
  46. default:
  47. break;
  48. }
  49. }
  50. return QAccessibleWidget::text(t);
  51. }
  52. QVariant VolumeAccessibleInterface::currentValue() const
  53. {
  54. QString text;
  55. float db = obs_fader_get_db(slider()->fad);
  56. if (db < -96.0f)
  57. text = "-inf dB";
  58. else
  59. text = QString::number(db, 'f', 1).append(" dB");
  60. return text;
  61. }
  62. void VolumeAccessibleInterface::setCurrentValue(const QVariant &value)
  63. {
  64. slider()->setValue(value.toInt());
  65. }
  66. QVariant VolumeAccessibleInterface::maximumValue() const
  67. {
  68. return slider()->maximum();
  69. }
  70. QVariant VolumeAccessibleInterface::minimumValue() const
  71. {
  72. return slider()->minimum();
  73. }
  74. QVariant VolumeAccessibleInterface::minimumStepSize() const
  75. {
  76. return slider()->singleStep();
  77. }
  78. QAccessible::Role VolumeAccessibleInterface::role() const
  79. {
  80. return QAccessible::Role::Slider;
  81. }