diff options
Diffstat (limited to 'src/ui/devicewidget.cpp')
| -rw-r--r-- | src/ui/devicewidget.cpp | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/ui/devicewidget.cpp b/src/ui/devicewidget.cpp new file mode 100644 index 0000000..420d5fd --- /dev/null +++ b/src/ui/devicewidget.cpp @@ -0,0 +1,69 @@ +#include "devicewidget.h" +#include "../model/audiodevice.h" + +#include <tqlabel.h> +#include <tqlayout.h> +#include <tqslider.h> +#include <tqtoolbutton.h> + +DeviceWidget::DeviceWidget( AudioDevice *device, TQWidget *parent ) + : TQWidget(parent), m_device(device) +{ + TQVBoxLayout *layout = new TQVBoxLayout( this, 4, 2 ); + + m_label = new TQLabel( device->name(), this ); + m_label->setAlignment( TQLabel::AlignHCenter ); + + m_slider = new TQSlider( 0, 100, 5, device->volume(), TQt::Vertical, this ); + m_slider->setTickmarks( TQSlider::NoMarks ); + + m_muteButton = new TQToolButton( this ); + m_muteButton->setToggleButton( true ); + m_muteButton->setTextLabel( "M" ); + m_muteButton->setOn( device->muted() ); + + layout->addWidget( m_label ); + layout->addWidget( m_slider, 1 ); + layout->addWidget( m_muteButton, 0, TQt::AlignHCenter ); + + // slider → device + connect( m_slider, TQ_SIGNAL(valueChanged(int)), this, TQ_SLOT(onVolumeChanged(int)) ); + connect( m_muteButton, TQ_SIGNAL(clicked()), this, TQ_SLOT(onMuteToggled()) ); + + // device → widget + connect( device, TQ_SIGNAL(volumeChanged(int)), this, TQ_SLOT(onDeviceVolume(int)) ); + connect( device, TQ_SIGNAL(muteChanged(bool)), this, TQ_SLOT(onDeviceMute(bool)) ); + connect( device, TQ_SIGNAL(nameChanged(const TQString&)), this, TQ_SLOT(onDeviceName(const TQString&)) ); +} + +void DeviceWidget::onVolumeChanged( int v ) +{ + m_device->setVolume( v ); +} + +void DeviceWidget::onMuteToggled() +{ + m_device->setMuted( !m_device->muted() ); +} + +void DeviceWidget::onDeviceVolume( int v ) +{ + // Block signal to avoid feedback loop back to device. + m_slider->blockSignals( true ); + m_slider->setValue( v ); + m_slider->blockSignals( false ); +} + +void DeviceWidget::onDeviceMute( bool m ) +{ + m_muteButton->blockSignals( true ); + m_muteButton->setOn( m ); + m_muteButton->blockSignals( false ); +} + +void DeviceWidget::onDeviceName( const TQString &name ) +{ + m_label->setText( name ); +} + +#include "devicewidget.moc" |
