Enable horizontal direction of manipulation

Extend `FloatModelEditorBase` so that it also allows manipulation of the
values when the mouse is moved in horizontal directions. The default is
to use the vertical direction.

Make use of this new feature in `BarModelEditor` which now reacts to
horizontal movements when changing values.
This commit is contained in:
Michael Gregorius
2023-07-09 17:48:20 +02:00
parent 73a6c5b313
commit 126ec55314
3 changed files with 17 additions and 6 deletions

View File

@@ -7,7 +7,7 @@ namespace lmms::gui
{
BarModelEditor::BarModelEditor(QString text, FloatModel * floatModel, QWidget * parent) :
FloatModelEditorBase(parent),
FloatModelEditorBase(DirectionOfManipulation::Horizontal, parent),
m_text(text)
{
setModel(floatModel);

View File

@@ -51,12 +51,13 @@ namespace lmms::gui
SimpleTextFloat * FloatModelEditorBase::s_textFloat = nullptr;
FloatModelEditorBase::FloatModelEditorBase(QWidget * _parent, const QString & _name ) :
FloatModelEditorBase::FloatModelEditorBase(DirectionOfManipulation directionOfManipulation, QWidget * _parent, const QString & _name ) :
QWidget( _parent ),
FloatModelView( new FloatModel( 0, 0, 0, 1, nullptr, _name, true ), this ),
m_volumeKnob( false ),
m_volumeRatio( 100.0, 0.0, 1000000.0 ),
m_buttonPressed( false )
m_buttonPressed( false ),
m_directionOfManipulation(directionOfManipulation)
{
initUi( _name );
}
@@ -80,10 +81,11 @@ void FloatModelEditorBase::initUi( const QString & _name )
float FloatModelEditorBase::getValue( const QPoint & _p )
{
float value;
// Find out which direction/coordinate is relevant for this control
int const coordinate = m_directionOfManipulation == DirectionOfManipulation::Vertical ? _p.y() : -_p.x();
// knob value increase is linear to mouse movement
value = .4f * _p.y();
float value = .4f * coordinate;
// if shift pressed we want slower movement
if( getGUI()->mainWindow()->isShiftPressed() )