[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdemultimedia/kmix
From: Christian Esken <esken () kde ! org>
Date: 2011-07-21 23:15:38
Message-ID: 20110721231538.1900AAC87A () svn ! kde ! org
[Download RAW message or body]
SVN commit 1242604 by esken:
Subcontrol label support
M +1 -0 apps/kmix.cpp
M +19 -0 backends/mixer_oss.cpp
M +1 -1 core/version.h
M +1 -0 gui/kmixdockwidget.cpp
M +39 -37 gui/mdwslider.cpp
M +4 -4 gui/mdwslider.h
M +4 -0 gui/volumesliderextradata.h
--- trunk/KDE/kdemultimedia/kmix/apps/kmix.cpp #1242603:1242604
@@ -435,6 +435,7 @@
QString mixerIgnoreExpression = config.readEntry( "MixerIgnoreExpression", \
"Modem" );
MixerToolBox::instance()->setMixerIgnoreExpression(mixerIgnoreExpression);
m_backendFilter = config.readEntry<>( "Backends", QList<QString>() );
+ kDebug() << "Backends: " << m_backendFilter;
if ( orientationString == "Horizontal" )
m_toplevelOrientation = Qt::Horizontal;
--- trunk/KDE/kdemultimedia/kmix/backends/mixer_oss.cpp #1242603:1242604
@@ -101,6 +101,7 @@
{
QString finalDeviceName;
finalDeviceName = deviceName( m_devnum );
+ kDebug() << "OSS open() " << finalDeviceName;
if ((m_fd= ::open( finalDeviceName.toAscii().data(), O_RDWR)) < 0)
{
if ( errno == EACCES )
@@ -258,14 +259,30 @@
}
*/
+void print_recsrc(int recsrc)
+{
+ int i;
+ QString msg;
+ for (i = 0; i < SOUND_MIXER_NRDEVICES; i++)
+ {
+ if ((1 << i) & recsrc)
+ msg += '+';
+ else
+ msg += '.';
+ }
+ kDebug() << msg;
+}
void Mixer_OSS::setRecsrcHW( const QString& id, bool on )
{
+ kDebug() << "Auslesen 1:";
int i_recsrc, oldrecsrc;
int devnum = id2num(id);
if (ioctl(m_fd, SOUND_MIXER_READ_RECSRC, &i_recsrc) == -1)
errormsg(Mixer::ERR_READ);
+ kDebug() << "Auslesen 2:"; print_recsrc(i_recsrc);
+
oldrecsrc = i_recsrc = on ?
(i_recsrc | (1 << devnum )) :
(i_recsrc & ~(1 << devnum ));
@@ -317,6 +334,8 @@
}
+
+
int Mixer_OSS::readVolumeFromHW( const QString& id, MixDevice* md )
{
int ret = 0;
--- trunk/KDE/kdemultimedia/kmix/core/version.h #1242603:1242604
@@ -20,6 +20,6 @@
*/
#ifndef APP_VERSION
-#define APP_VERSION "3.9-alpha"
+#define APP_VERSION "3.9"
#define KMIX_CONFIG_VERSION 3
#endif // APP_VERSION
--- trunk/KDE/kdemultimedia/kmix/gui/kmixdockwidget.cpp #1242603:1242604
@@ -64,6 +64,7 @@
, _contextMenuWasOpen(false)
{
setToolTipIconByName("kmix");
+ setTitle(i18n( "Volume Control"));
setCategory(Hardware);
setStatus(Active);
m_mixer = Mixer::getGlobalMasterMixer(); // ugly, but we'll live with that for \
now
--- trunk/KDE/kdemultimedia/kmix/gui/mdwslider.cpp #1242603:1242604
@@ -332,7 +332,7 @@
if ( hasVolumeSliders )
{
if ( wantsPlaybackSliders )
- addSliders( volLayout, 'p', false );
+ addSliders( volLayout, 'p', bothCaptureANDPlaybackExist );
if ( wantsCaptureSliders )
addSliders( volLayout, 'c', bothCaptureANDPlaybackExist );
if ( wantsMediaControls )
@@ -529,38 +529,37 @@
mixDevice()->mediaPlay();
}
-void MDWSlider::addSliders( QBoxLayout *volLayout, char type, bool addLabel)
+void MDWSlider::addSliders( QBoxLayout *volLayout, char type, bool \
forceCaptureLabel) {
Volume* volP;
QList<QAbstractSlider *>* ref_slidersP;
- QList<QWidget *>* ref_labelsP;
if ( type == 'c' ) { // capture
volP = &m_mixdevice->captureVolume();
ref_slidersP = &m_slidersCapture;
- ref_labelsP = &m_labelsCapture;
}
else { // playback
volP = &m_mixdevice->playbackVolume();
ref_slidersP = &m_slidersPlayback;
- ref_labelsP = &m_labelsPlayback;
}
Volume& vol = *volP;
QList<QAbstractSlider *>& ref_sliders = *ref_slidersP;
- QList<QWidget *>& ref_labels = *ref_labelsP;
LabelType labelType = LT_NONE;
- if (addLabel && type == 'c')
+
+ if ( vol.count() >= 2 && ! isStereoLinked() )
{
- labelType = LT_FIRST_CAPTURE;
+ labelType = LT_ALL;
}
- if ( vol.count() > 2 && ! isStereoLinked())
+ else if (forceCaptureLabel && type == 'c')
{
- labelType = LT_ALL;
+ if (isStereoLinked()) labelType = LT_ALL;
+ else labelType = LT_FIRST_CAPTURE;
}
+kDebug() << "------------ volcount=" << vol.count() << " labelType=" << labelType;
const int minSliderSize = fontMetrics().height() * 10;
long minvol = vol.minVolume();
@@ -572,13 +571,26 @@
foreach (VolumeChannel vc, vols )
{
kDebug(67100) << "Add label to " << vc.chid << ": " << \
Volume::ChannelNameReadable[vc.chid];
- QString subcontrolTranslation = Volume::ChannelNameReadable[vc.chid]; \
//Volume::getSubcontrolTranslation(chid);
- QWidget *subcontrolLabel = createLabel(this, subcontrolTranslation, volLayout, \
true);
- ref_labels.append ( subcontrolLabel ); // add to list
+ QWidget *subcontrolLabel;
+ if ( labelType == LT_FIRST_CAPTURE && type == 'c' && first )
+ {
+ QString subcontrolTranslation = i18n("Capture"); // Put a simple "Capture" label
+ subcontrolLabel = createLabel(this, subcontrolTranslation, volLayout, true);
+ }
+ else
+ {
+ QString subcontrolTranslation;
+ if ( type == 'c' ) subcontrolTranslation += i18n("Capture") + " ";
+ subcontrolTranslation += Volume::ChannelNameReadable[vc.chid]; \
//Volume::getSubcontrolTranslation(chid); + subcontrolLabel = createLabel(this, \
subcontrolTranslation, volLayout, true); + }
- if( labelType == LT_NONE ) subcontrolLabel->hide();
- else if ( labelType == LT_FIRST_CAPTURE && !first ) subcontrolLabel->hide();
+ bool show = true;
+ if( labelType == LT_NONE ) show = false;
+ else if ( labelType == LT_FIRST_CAPTURE && !first ) show = false;
else subcontrolLabel->show();
+ subcontrolLabel->setVisible(show);
+ kDebug(67100) << "Add label to " << vc.chid << ": " << \
Volume::ChannelNameReadable[vc.chid] << " show=" << show;
QAbstractSlider* slider;
if ( m_small )
@@ -592,6 +604,7 @@
slider->setMaximum(maxvol);
slider->setPageStep(maxvol/10);
slider->setValue( maxvol - vol.getVolume( vc.chid ) );
+ extraData(slider).setSubcontrolLabel(subcontrolLabel);
if ( _orientation == Qt::Vertical ) {
slider->setMinimumHeight( minSliderSize );
@@ -744,29 +757,26 @@
MDWSlider::setStereoLinked(bool value)
{
m_linked = value;
- if (m_slidersPlayback.count() != 0) setStereoLinkedInternal(m_slidersPlayback, \
m_labelsPlayback);
- if (m_slidersCapture.count() != 0) setStereoLinkedInternal(m_slidersCapture, \
m_labelsCapture); + if (m_slidersPlayback.count() != 0) \
setStereoLinkedInternal(m_slidersPlayback); + if (m_slidersCapture.count() != 0) \
setStereoLinkedInternal(m_slidersCapture); update(); // Call update(), so that the \
sliders can adjust EITHER to the individual values OR the average value. }
void
-MDWSlider::setStereoLinkedInternal(QList<QAbstractSlider *>& ref_sliders, \
QList<QWidget *>& ref_labels) \
+MDWSlider::setStereoLinkedInternal(QList<QAbstractSlider *>& ref_sliders) {
bool first = true;
- foreach ( QWidget* slider1, ref_sliders )
+ foreach ( QAbstractSlider* slider1, ref_sliders )
{
if ( first ) first = false;
- else if ( slider1 != 0 ) slider1->setHidden(m_linked);
+ else if ( slider1 != 0 ) {
+ slider1->setHidden(m_linked);
}
-
- first = true;
- foreach ( QWidget* label1, ref_labels )
- {
- if ( first ) first = false;
- else if ( label1 != 0 ) label1->setHidden(m_linked);
+ extraData(slider1).getSubcontrolLabel()->setHidden(false);
}
+
// Redo the tickmarks to last slider in the slider list.
// The implementation is not obvious, so lets explain:
// We ALWAYS have tickmarks on the LAST slider. Sometimes the slider is not shown, \
and then we just don't bother. @@ -1027,9 +1037,9 @@
void MDWSlider::update()
{
if ( m_slidersPlayback.count() != 0 || m_mixdevice->playbackVolume().hasSwitch() )
- updateInternal(m_mixdevice->playbackVolume(), m_slidersPlayback, \
m_labelsPlayback); + updateInternal(m_mixdevice->playbackVolume(), \
m_slidersPlayback); if ( m_slidersCapture.count() != 0 || \
m_mixdevice->captureVolume().hasSwitch() )
- updateInternal(m_mixdevice->captureVolume(), m_slidersCapture, m_labelsCapture );
+ updateInternal(m_mixdevice->captureVolume(), m_slidersCapture);
if (m_label) {
QLabel *l;
VerticalText *v;
@@ -1040,21 +1050,13 @@
}
}
-void MDWSlider::updateInternal(Volume& vol, QList<QAbstractSlider *>& ref_sliders, \
QList<QWidget *>& ref_labels) +void MDWSlider::updateInternal(Volume& vol, \
QList<QAbstractSlider *>& ref_sliders) {
-
-// QList<Volume::ChannelID>::Iterator it = ref_slidersChids.begin();
for( int i=0; i<ref_sliders.count(); i++ ) {
QAbstractSlider *slider = ref_sliders.at( i );
Volume::ChannelID chid = extraData(slider).getChid();
long useVolume = vol.getVolume(chid);
-// QWidget *labelAtSlider = ref_labels.at( i ); // TODO hide labels
-/* if ( i==0 )
- {
- kDebug(67100) << "XXXX -------------------------";
- }
- kDebug(67100) << "XXXX " << chid << " now at " << useVolume;*/
slider->blockSignals( true );
slider->setValue( useVolume );
if ( slider->inherits( "KSmallSlider" ) )
--- trunk/KDE/kdemultimedia/kmix/gui/mdwslider.h #1242603:1242604
@@ -133,10 +133,10 @@
//void addDefaultLabel(QBoxLayout *layout, Qt::Orientation orientation);
// Methods that are called two times from a wrapper. Once for playabck, once for \
capture
- void setStereoLinkedInternal( QList< QAbstractSlider* >& ref_sliders, QList< \
QWidget* >& ref_labels ); + void setStereoLinkedInternal( QList< QAbstractSlider* \
>& ref_sliders);
void setTicksInternal( QList< QAbstractSlider* >& ref_sliders, bool ticks );
void volumeChangeInternal(Volume& vol, QList< QAbstractSlider* >& ref_sliders );
- void updateInternal(Volume& vol, QList< QAbstractSlider* >& ref_sliders, QList< \
QWidget* >& ref_labels); + void updateInternal(Volume& vol, QList< \
QAbstractSlider* >& ref_sliders);
QWidget* createLabel(QWidget* parent, QString& label, QBoxLayout *layout, bool);
@@ -166,8 +166,8 @@
QList<QAbstractSlider *> m_slidersPlayback;
QList<QAbstractSlider *> m_slidersCapture;
- QList<QWidget *> m_labelsPlayback;
- QList<QWidget *> m_labelsCapture;
+// QList<QWidget *> m_labelsPlayback;
+// QList<QWidget *> m_labelsCapture;
};
#endif
--- trunk/KDE/kdemultimedia/kmix/gui/volumesliderextradata.h #1242603:1242604
@@ -29,12 +29,16 @@
class VolumeSliderExtraData
{
public:
+ VolumeSliderExtraData() : subcontrolLabel(0) {};
~VolumeSliderExtraData() {};
void setChid(Volume::ChannelID chid) { this->chid = chid; };
Volume::ChannelID getChid() { return chid; };
+ void setSubcontrolLabel(QWidget *subcontrolLabel) { this->subcontrolLabel = \
subcontrolLabel; }; + QWidget* getSubcontrolLabel() {return subcontrolLabel; }
protected:
Volume::ChannelID chid;
+ QWidget *subcontrolLabel;
};
class AbstractVolumeSlider : public QAbstractSlider, public VolumeSliderExtraData
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic