#include "mixerwindow.h" #include "../model/pulsemodel.h" #include #include #include #include static MixerWindow::Tab makeTab( KTabWidget *tabs, const TQString &label ) { MixerWindow::Tab t; TQScrollView *scroll = new TQScrollView( tabs ); scroll->setResizePolicy( TQScrollView::AutoOneFit ); scroll->setHScrollBarMode( TQScrollView::Auto ); scroll->setVScrollBarMode( TQScrollView::AlwaysOff ); scroll->setFrameStyle( TQFrame::NoFrame ); t.page = new TQWidget( scroll->viewport() ); scroll->addChild( t.page ); t.layout = new TQHBoxLayout( t.page, 6, 4 ); tabs->addTab( scroll, label ); return t; } MixerWindow::MixerWindow( PulseModel *model, TQWidget *parent ) : TQWidget(parent), m_model(model) { setCaption( i18n("TMix") ); TQVBoxLayout *top = new TQVBoxLayout( this, 4, 0 ); m_tabs = new KTabWidget( this ); top->addWidget( m_tabs ); m_output = makeTab( m_tabs, i18n("Output") ); m_input = makeTab( m_tabs, i18n("Input") ); m_playback = makeTab( m_tabs, i18n("Playback") ); m_recording = makeTab( m_tabs, i18n("Recording") ); connect( model, TQ_SIGNAL(deviceAdded(AudioDevice*)), this, TQ_SLOT(onDeviceAdded(AudioDevice*)) ); connect( model, TQ_SIGNAL(deviceRemoved(AudioDevice*)), this, TQ_SLOT(onDeviceRemoved(AudioDevice*)) ); // Populate with any devices already known at construction time. AudioDevice::Category cats[] = { AudioDevice::Output, AudioDevice::Input, AudioDevice::Playback, AudioDevice::Recording }; for ( int i = 0; i < 4; i++ ) { TQPtrList devs = model->devices( cats[i] ); for ( TQPtrListIterator it(devs); *it; ++it ) onDeviceAdded( *it ); } } MixerWindow::Tab &MixerWindow::tabForCategory( AudioDevice::Category cat ) { switch ( cat ) { case AudioDevice::Output: return m_output; case AudioDevice::Input: return m_input; case AudioDevice::Playback: return m_playback; case AudioDevice::Recording: return m_recording; } return m_output; } void MixerWindow::onDeviceAdded( AudioDevice *dev ) { Tab &t = tabForCategory( dev->category() ); TQWidget *w = dev->createWidget( t.page ); t.layout->addWidget( w ); w->show(); m_widgets.insert( dev, w ); } void MixerWindow::onDeviceRemoved( AudioDevice *dev ) { TQWidget *w = m_widgets[dev]; if ( !w ) return; Tab &t = tabForCategory( dev->category() ); t.layout->remove( w ); m_widgets.remove( dev ); delete w; } #include "mixerwindow.moc"