123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- #include "slider-ignorewheel.hpp"
- SliderIgnoreScroll::SliderIgnoreScroll(QWidget *parent) : QSlider(parent)
- {
- setFocusPolicy(Qt::StrongFocus);
- }
- SliderIgnoreScroll::SliderIgnoreScroll(Qt::Orientation orientation,
- QWidget *parent)
- : QSlider(parent)
- {
- setFocusPolicy(Qt::StrongFocus);
- setOrientation(orientation);
- }
- void SliderIgnoreScroll::wheelEvent(QWheelEvent *event)
- {
- if (!hasFocus())
- event->ignore();
- else
- QSlider::wheelEvent(event);
- }
- VolumeSlider::VolumeSlider(obs_fader_t *fader, QWidget *parent)
- : SliderIgnoreScroll(parent)
- {
- fad = fader;
- }
- VolumeSlider::VolumeSlider(obs_fader_t *fader, Qt::Orientation orientation,
- QWidget *parent)
- : SliderIgnoreScroll(orientation, parent)
- {
- fad = fader;
- }
- VolumeAccessibleInterface::VolumeAccessibleInterface(QWidget *w)
- : QAccessibleWidget(w)
- {
- }
- VolumeSlider *VolumeAccessibleInterface::slider() const
- {
- return qobject_cast<VolumeSlider *>(object());
- }
- QString VolumeAccessibleInterface::text(QAccessible::Text t) const
- {
- if (slider()->isVisible()) {
- switch (t) {
- case QAccessible::Text::Value:
- return currentValue().toString();
- default:
- break;
- }
- }
- return QAccessibleWidget::text(t);
- }
- QVariant VolumeAccessibleInterface::currentValue() const
- {
- QString text;
- float db = obs_fader_get_db(slider()->fad);
- if (db < -96.0f)
- text = "-inf dB";
- else
- text = QString::number(db, 'f', 1).append(" dB");
- return text;
- }
- void VolumeAccessibleInterface::setCurrentValue(const QVariant &value)
- {
- slider()->setValue(value.toInt());
- }
- QVariant VolumeAccessibleInterface::maximumValue() const
- {
- return slider()->maximum();
- }
- QVariant VolumeAccessibleInterface::minimumValue() const
- {
- return slider()->minimum();
- }
- QVariant VolumeAccessibleInterface::minimumStepSize() const
- {
- return slider()->singleStep();
- }
- QAccessible::Role VolumeAccessibleInterface::role() const
- {
- return QAccessible::Role::Slider;
- }
- void SliderIgnoreClick::mousePressEvent(QMouseEvent *event)
- {
- QStyleOptionSlider styleOption;
- initStyleOption(&styleOption);
- QRect handle = style()->subControlRect(QStyle::CC_Slider, &styleOption,
- QStyle::SC_SliderHandle, this);
- #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
- QPointF pointExact = event->position();
- #endif
- if (handle.contains(
- #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
- QPoint(pointExact.x(), pointExact.y())
- #else
- // Ubuntu 20.04. Sigh.
- QPoint(event->x(), event->y())
- #endif
- )) {
- SliderIgnoreScroll::mousePressEvent(event);
- dragging = true;
- } else {
- event->accept();
- }
- }
- void SliderIgnoreClick::mouseReleaseEvent(QMouseEvent *event)
- {
- dragging = false;
- SliderIgnoreScroll::mouseReleaseEvent(event);
- }
- void SliderIgnoreClick::mouseMoveEvent(QMouseEvent *event)
- {
- if (dragging) {
- SliderIgnoreScroll::mouseMoveEvent(event);
- } else {
- event->accept();
- }
- }
|