[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