summaryrefslogtreecommitdiffstats
path: root/kmix/dialogselectmaster.cpp
diff options
context:
space:
mode:
authorMichele Calgaro <michele.calgaro@yahoo.it>2020-05-12 01:34:29 +0900
committerMichele Calgaro <michele.calgaro@yahoo.it>2020-05-25 13:24:32 +0900
commit2251b3395ac880f0b24db47615bf21ed97ec69f3 (patch)
tree219d0543f15a1b8651b87e78c33c7ae62d5bdb60 /kmix/dialogselectmaster.cpp
parenta00a998b33895808e19627966f047e7c32d2556c (diff)
downloadtdemultimedia-2251b3395ac880f0b24db47615bf21ed97ec69f3.tar.gz
tdemultimedia-2251b3395ac880f0b24db47615bf21ed97ec69f3.zip
Added initial support for PulseAudio in KMix. The mixer/device channel to control
from the system tray widget is now selectable from the user and default to the main one if not specifically selected. This allows to control PulseAudio volume from KMix correctly. Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
Diffstat (limited to 'kmix/dialogselectmaster.cpp')
-rw-r--r--kmix/dialogselectmaster.cpp63
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]);
}
}
}