1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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"
|