Fader adjustments via keyboard

Allow the adjustment of the faders via the keyboard. Using the up or
plus key will increment the fader value whereas the down or minus key
will decrement it. The same key modifiers as for the wheel event apply:
* No modifier: adjust by 1 dB
* Shift: adjust by 3 dB
* Control: adjust by 0.1 dB

Due to the very similar behavior of the mouse wheel and key press
handling some common functionality was factored out:
* Determinination of the (absolute) adjustment delta value by
  insprecting the modifier keys of an event. Factored into
  `determineAdjustmentDelta`.
* Adjustment of the model by a given dB delta value. Factored into
  `adjustModelByDBDelta`.
This commit is contained in:
Michael Gregorius
2024-12-29 15:17:51 +01:00
parent 344fae26f2
commit aa74df22e0
2 changed files with 62 additions and 19 deletions

View File

@@ -115,11 +115,15 @@ private:
void mouseMoveEvent(QMouseEvent* ev) override;
void mouseReleaseEvent(QMouseEvent* me) override;
void wheelEvent(QWheelEvent* ev) override;
void keyPressEvent(QKeyEvent *event) override;
void paintEvent(QPaintEvent* ev) override;
void paintLevels(QPaintEvent* ev, QPainter& painter, bool linear = false);
void paintFaderTicks(QPainter& painter);
float determineAdjustmentDelta(const Qt::KeyboardModifiers & modifiers) const;
void adjustModelByDBDelta(float value);
int calculateKnobPosYFromModel() const;
void setVolumeByLocalPixelValue(int y);