diff options
Diffstat (limited to 'kmix/dialogselectmaster.cpp')
-rw-r--r-- | kmix/dialogselectmaster.cpp | 63 |
1 files changed, 41 insertions, 22 deletions
diff --git a/kmix/dialogselectmaster.cpp b/kmix/dialogselectmaster.cpp index ec957d4b..06b8d22c 100644 --- a/kmix/dialogselectmaster.cpp +++ b/kmix/dialogselectmaster.cpp @@ -31,6 +31,7 @@ #include <kcombobox.h> #include <kdebug.h> #include <kdialogbase.h> +#include <tdeapplication.h> #include <tdelocale.h> #include "dialogselectmaster.h" @@ -43,7 +44,6 @@ DialogSelectMaster::DialogSelectMaster( Mixer *mixer ) _layout = 0; m_vboxForScrollView = 0; createWidgets(mixer); // Open with Mixer Hardware #0 - } DialogSelectMaster::~DialogSelectMaster() @@ -60,23 +60,29 @@ void DialogSelectMaster::createWidgets(Mixer *ptr_mixer) TQFrame *m_mainFrame = plainPage(); _layout = new TQVBoxLayout(m_mainFrame,0,-1, "_layout" ); + // Default or user selected + TQButtonGroup *bgMasterSelection = new TQButtonGroup(1, Qt::Vertical, i18n("KMix master channel selection"), m_mainFrame); + connect(bgMasterSelection, TQT_SIGNAL(clicked(int)), this, TQT_SLOT(masterSelectionChanged(int))); + _layout->add(bgMasterSelection); + m_defaultMaster = new TQRadioButton(i18n("Default"), bgMasterSelection); + m_userMaster = new TQRadioButton(i18n("Custom"), bgMasterSelection); + + m_vboxChannels = new TQVBox(m_mainFrame); + _layout->add(m_vboxChannels); if ( Mixer::mixers().count() > 1 ) { //kdDebug(67100) << "DialogSelectMaster::createPage count()>1" << "\n"; // More than one Mixer => show Combo-Box to select Mixer // Mixer widget line - TQHBoxLayout* mixerNameLayout = new TQHBoxLayout( _layout ); - //widgetsLayout->setStretchFactor( mixerNameLayout, 0 ); - //TQSizePolicy qsp( TQSizePolicy::Ignored, TQSizePolicy::Maximum); - //mixerNameLayout->setSizePolicy(qsp); - mixerNameLayout->setSpacing(KDialog::spacingHint()); - - TQLabel *qlbl = new TQLabel( i18n("Current Mixer"), m_mainFrame ); - mixerNameLayout->addWidget(qlbl); + TQHBox *hboxMixerName = new TQHBox(m_vboxChannels); + hboxMixerName->setSpacing(KDialog::spacingHint()); + + TQLabel *qlbl = new TQLabel( i18n("Current Mixer"), hboxMixerName ); qlbl->setFixedHeight(qlbl->sizeHint().height()); - m_cMixer = new KComboBox( FALSE, m_mainFrame, "mixerCombo" ); + m_cMixer = new KComboBox( FALSE, hboxMixerName, "mixerCombo" ); m_cMixer->setFixedHeight(m_cMixer->sizeHint().height()); - connect( m_cMixer, TQT_SIGNAL( activated( int ) ), this, TQT_SLOT( createPageByID( int ) ) ); + TQToolTip::add(m_cMixer, i18n("Current mixer")); + connect(m_cMixer, TQT_SIGNAL(activated(int)), this, TQT_SLOT(createPageByID(int))); //int id=1; for ( Mixer *mixer = Mixer::mixers().first(); mixer !=0; mixer = Mixer::mixers().next() ) { @@ -87,24 +93,37 @@ void DialogSelectMaster::createWidgets(Mixer *ptr_mixer) } //id++; } // end for all_Mixers - - TQToolTip::add( m_cMixer, i18n("Current mixer" ) ); - mixerNameLayout->addWidget(m_cMixer); - } // end if (more_than_1_Mixer) - TQLabel *qlbl = new TQLabel( i18n("Select the channel representing the master volume:"), m_mainFrame ); + TQLabel *qlbl = new TQLabel( i18n("Select the channel representing the master volume:"), m_vboxChannels ); _layout->addWidget(qlbl); - m_scrollableChannelSelector = new TQScrollView(m_mainFrame, "scrollableChannelSelector"); + m_scrollableChannelSelector = new TQScrollView(m_vboxChannels, "scrollableChannelSelector"); m_scrollableChannelSelector->viewport()->setBackgroundMode(TQt::PaletteBackground); - _layout->add(m_scrollableChannelSelector); m_buttonGroupForScrollView = new TQButtonGroup(this); // invisible TQButtonGroup m_buttonGroupForScrollView->hide(); createPage(ptr_mixer); - connect( this, TQT_SIGNAL(okClicked()) , this, TQT_SLOT(apply()) ); + + kapp->config()->setGroup(0); + bool useDefaultMaster = kapp->config()->readBoolEntry("UseDefaultMaster", true); + if (useDefaultMaster) + { + m_defaultMaster->setChecked(true); + } + else + { + m_userMaster->setChecked(true); + } + masterSelectionChanged(0); + + connect( this, TQT_SIGNAL(okClicked()) , this, TQT_SLOT(apply()) ); +} + +void DialogSelectMaster::masterSelectionChanged(int _unused) +{ + m_vboxChannels->setEnabled(m_userMaster->isChecked()); } /** @@ -180,15 +199,15 @@ void DialogSelectMaster::apply() int channel_id = m_buttonGroupForScrollView->selectedId(); if ( channel_id != -1 ) { // A channel was selected by the user => emit the "newMasterSelected()" signal - //kdDebug(67100) << "DialogSelectMaster::apply(): card=" << soundcard_id << ", channel=" << channel_id << endl; + //kdDebug(67100) << "DialogSelectMaster::apply(): default master=" << m_defaultMaster->isChecked() << ", card=" << soundcard_id << ", channel=" << channel_id << endl; Mixer *mixer = Mixer::mixers().at(soundcard_id); if ( mixer == 0 ) { kdError(67100) << "DialogSelectMaster::createPage(): Invalid Mixer (mixerID=" << soundcard_id << ")" << endl; return; // can not happen } else { - mixer->setMasterDevice( m_mixerPKs[channel_id] ); - emit newMasterSelected(soundcard_id, m_mixerPKs[channel_id] ); + mixer->setMasterDevice(m_mixerPKs[channel_id]); + emit newMasterSelected(m_defaultMaster->isChecked(), soundcard_id, m_mixerPKs[channel_id]); } } } |