diff --git a/include/fader.h b/include/fader.h index f627e17b9..edb76430d 100644 --- a/include/fader.h +++ b/include/fader.h @@ -53,6 +53,8 @@ #include "AutomatableModelView.h" +class textFloat; + class fader : public QWidget, public FloatModelView { @@ -75,9 +77,18 @@ private: virtual void contextMenuEvent( QContextMenuEvent * _me ); virtual void mousePressEvent( QMouseEvent *ev ); virtual void mouseMoveEvent( QMouseEvent *ev ); + virtual void mouseReleaseEvent( QMouseEvent * _me ); virtual void wheelEvent( QWheelEvent *ev ); virtual void paintEvent( QPaintEvent *ev ); + inline uint knob_y() const + { + float fRange = m_model->maxValue() - m_model->minValue(); + float realVal = m_model->value() - m_model->minValue(); +// uint knob_y = (uint)( 116.0 - ( 86.0 * ( m_model->value() / fRange ) ) ); + return (uint)( 116.0 - ( 86.0 * ( realVal / fRange ) ) ); + } + FloatModel * m_model; float m_fPeakValue_L; @@ -88,6 +99,10 @@ private: QPixmap m_back; QPixmap m_leds; QPixmap m_knob; + + static textFloat * s_textFloat; + void updateTextFloat(); + } ; diff --git a/src/gui/widgets/fader.cpp b/src/gui/widgets/fader.cpp index cee9cc5e0..17403a41e 100644 --- a/src/gui/widgets/fader.cpp +++ b/src/gui/widgets/fader.cpp @@ -53,9 +53,13 @@ #include "embed.h" #include "engine.h" #include "caption_menu.h" +#include "config_mgr.h" +#include "text_float.h" #include "MainWindow.h" +textFloat * fader::s_textFloat = NULL; + fader::fader( FloatModel * _model, const QString & _name, QWidget * _parent ) : QWidget( _parent ), @@ -69,6 +73,10 @@ fader::fader( FloatModel * _model, const QString & _name, QWidget * _parent ) : m_leds( embed::getIconPixmap( "fader_leds" ) ), m_knob( embed::getIconPixmap( "fader_knob" ) ) { + if( s_textFloat == NULL ) + { + s_textFloat = new textFloat; + } setAccessibleName( _name ); setAttribute( Qt::WA_OpaquePaintEvent, true ); setMinimumSize( 23, 116 ); @@ -105,6 +113,8 @@ void fader::mouseMoveEvent( QMouseEvent *ev ) fVal = fVal + m_model->minValue(); m_model->setValue( fVal ); + + updateTextFloat(); } @@ -115,6 +125,9 @@ void fader::mousePressEvent( QMouseEvent * _me ) if( _me->button() == Qt::LeftButton && ! ( _me->modifiers() & Qt::ControlModifier ) ) { + updateTextFloat(); + s_textFloat->show(); + mouseMoveEvent( _me ); _me->accept(); } @@ -126,6 +139,11 @@ void fader::mousePressEvent( QMouseEvent * _me ) +void fader::mouseReleaseEvent( QMouseEvent * _me ) +{ + s_textFloat->hide(); +} + void fader::wheelEvent ( QWheelEvent *ev ) { @@ -139,6 +157,8 @@ void fader::wheelEvent ( QWheelEvent *ev ) { m_model->incValue( -5 ); } + updateTextFloat(); + s_textFloat->setVisibilityTimeOut( 1000 ); } @@ -182,6 +202,19 @@ void fader::setPeak_R( float fPeak ) } } +void fader::updateTextFloat() +{ + if( configManager::inst()->value( "app", "displaydbv" ).toInt() ) + { + s_textFloat->setText( QString("Volume: %1 dBV"). + arg( 20.0 * log10( model()->value() ), 3, 'f', 2 ) ); + } + else + { + s_textFloat->setText( QString("Volume: %1 %").arg( m_model->value() * 100 ) ); + } + s_textFloat->moveGlobal( this, QPoint( width() - m_knob.width() - 5, knob_y() - 46 ) ); +}