[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:14:44
Message-ID: 20110721231444.852EBAC879 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1242585 by esken:

Add appStream property to MixDevice
Allow more than one control in the Dockarea-Popup
Put labels on subcontrols

 M  +0 -5      apps/kmix.cpp  
 M  +1 -0      backends/mixer_mpris2.cpp  
 M  +10 -2     backends/mixer_pulse.cpp  
 M  +1 -0      backends/mixer_pulse.h  
 M  +1 -0      core/mixdevice.cpp  
 M  +9 -0      core/mixdevice.h  
 M  +9 -0      core/volume.cpp  
 M  +1 -1      core/volume.h  
 M  +33 -11    gui/mdwslider.cpp  
 M  +3 -1      gui/mdwslider.h  
 M  +26 -12    gui/viewdockareapopup.cpp  
 M  +1 -0      gui/viewdockareapopup.h  


--- trunk/KDE/kdemultimedia/kmix/apps/kmix.cpp #1242584:1242585
@@ -494,11 +494,6 @@
  */
 void KMixWindow::recreateGUI(bool saveConfig, const QString& mixerId, bool \
forceNewTab)  {
-  kDebug(67100) << "new dockarea with popup";
-  ViewBase::ViewFlags vf1 = (ViewBase::ViewFlags)0;
-  ViewDockAreaPopup* vdap = new ViewDockAreaPopup(0, "New Dockarea Popup with Apps", \
                Mixer::mixers().at(0), vf1, 0, 0 );
-  vdap->show();
-  
     // -1- Find out which of the tabs is currently selected for restoration
     int current_tab = -1;
     if (m_wsMixers)
--- trunk/KDE/kdemultimedia/kmix/backends/mixer_mpris2.cpp #1242584:1242585
@@ -148,6 +148,7 @@
 	Volume::ChannelMask chn = (Volume::ChannelMask)(Volume::MLEFT | Volume::MRIGHT);
 	MixDevice* md = new MixDevice(_mixer, readableName, readableName, \
MixDevice::VOLUME);  Volume* vol = new Volume( chn, 100, 0, true, false);
+	md->setApplicationStream(true);
 	md->addPlaybackVolume(*vol);
 	m_mixDevices.append( md );
     }
--- trunk/KDE/kdemultimedia/kmix/backends/mixer_pulse.cpp #1242584:1242585
@@ -819,6 +819,11 @@
 
 void Mixer_PULSE::addDevice(devinfo& dev)
 {
+  addDevice(dev, false);
+}
+  
+void Mixer_PULSE::addDevice(devinfo& dev, bool isAppStream)
+{
     if (dev.chanMask != Volume::MNONE) {
         MixSet *ms = 0;
         if (m_devnum == KMIXPA_APP_PLAYBACK && s_mixers.contains(KMIXPA_PLAYBACK))
@@ -829,6 +834,9 @@
         Volume v(dev.chanMask, PA_VOLUME_NORM, PA_VOLUME_MUTED, true, false);
         setVolumeFromPulse(v, dev);
         MixDevice* md = new MixDevice( _mixer, dev.name, dev.description, \
dev.icon_name, ms); +	if (isAppStream) 
+	  md->setApplicationStream(true);
+	
         md->addPlaybackVolume(v);
         md->setMuted(dev.mute);
         m_mixDevices.append(md);
@@ -991,9 +999,9 @@
         {
             m_mixerName = i18n("Playback Streams");
             for (iter = outputRoles.begin(); iter != outputRoles.end(); ++iter)
-                addDevice(*iter);
+                addDevice(*iter, true);
             for (iter = outputStreams.begin(); iter != outputStreams.end(); ++iter)
-                addDevice(*iter);
+                addDevice(*iter, true);
         }
         else if (KMIXPA_APP_CAPTURE == m_devnum)
         {
--- trunk/KDE/kdemultimedia/kmix/backends/mixer_pulse.h #1242584:1242585
@@ -74,6 +74,7 @@
 
     private:
         void addDevice(devinfo& dev);
+        void addDevice(devinfo& dev, bool);
         bool connectToDaemon();
 
     public slots:
--- trunk/KDE/kdemultimedia/kmix/core/mixdevice.cpp #1242584:1242585
@@ -106,6 +106,7 @@
 void MixDevice::init(  Mixer* mixer, const QString& id, const QString& name, const \
QString& iconName, MixSet* moveDestinationMixSet )  {
     _artificial = false;
+    _applicationStream = false;
     _mixer = mixer;
     _id = id;
     if( name.isEmpty() )
--- trunk/KDE/kdemultimedia/kmix/core/mixdevice.h #1242584:1242585
@@ -145,6 +145,14 @@
    virtual bool isRecSource();
    virtual void setRecSource(bool value);
    virtual bool isEnum();
+   /**
+    * Returns whether this is an application stream.
+    */
+   virtual bool isApplicationStream() const { return _applicationStream; };
+   /**
+    * Mark this MixDevice as application stream
+    */
+    void setApplicationStream(bool applicationStream) { _applicationStream = \
applicationStream; }  
    bool isMovable() const
    {
@@ -197,6 +205,7 @@
    bool _artificial;
    MixSet *_moveDestinationMixSet;
    QString _iconName;
+   bool _applicationStream;
 
    QString _name;   // Channel name
    QString _id;     // Primary key, used as part in config file keys
--- trunk/KDE/kdemultimedia/kmix/core/volume.cpp #1242584:1242585
@@ -35,6 +35,15 @@
       MREARCENTER
     };
 
+    QString Volume::ChannelNameReadable[9] =
+    {
+      "Left", "Right",
+      "Center", "Subwoofer",
+      "Surround Left", "Surround Right",
+      "Side Left", "Side Right",
+      "Rear Center"
+    };
+    
     char Volume::ChannelNameForPersistence[9][30] = {
       "volumeL", "volumeR",
       "volumeCenter", "volumeWoofer",
--- trunk/KDE/kdemultimedia/kmix/core/volume.h #1242584:1242585
@@ -70,8 +70,8 @@
 
                   CHIDMAX      = 8 };
 
-
     static char ChannelNameForPersistence[9][30];
+    static QString ChannelNameReadable[9];
 
     enum VolumeType { PlaybackVT = 0 , CaptureVT = 1 };
 
--- trunk/KDE/kdemultimedia/kmix/gui/mdwslider.cpp #1242584:1242585
@@ -488,21 +488,12 @@
 	QList<QWidget *>& ref_sliders = *ref_slidersP;
 
 
-	if (addLabel)
+	if (addLabel && type == 'c')
 	{
 		static QString capture = i18n("capture");
-
-		if ( type == 'c' ) { // capture
-			if (_orientation == Qt::Horizontal)
-				m_extraCaptureLabel = new QLabel(capture, this);
-			else
-				m_extraCaptureLabel = new VerticalText(this, capture);
+		m_extraCaptureLabel = createLabel(this, capture, volLayout, false);
 		}
-		m_extraCaptureLabel->installEventFilter( this );
-		volLayout->addWidget(m_extraCaptureLabel);
 
-	}
-
 	const int minSliderSize = fontMetrics().height() * 10;
 	for ( int i=0; i<= Volume::CHIDMAX; i++ ) {
 		if ( vol._chmask & Volume::_channelMaskEnum[i] ) {
@@ -511,6 +502,14 @@
 			long minvol = vol.minVolume();
 			long maxvol = vol.maxVolume();
 
+// 			if (addLabel)
+// 			{
+			  kDebug(67100) << "Add label to " << chid << ": " <<  \
Volume::ChannelNameReadable[chid]; +			    QString subcontrolTranslation = \
Volume::ChannelNameReadable[chid]; //Volume::getSubcontrolTranslation(chid); +			    \
QWidget *subcontrolLabel = createLabel(this, subcontrolTranslation, volLayout, true); \
+			   +// 			}
+
 			QWidget* slider;
 			if ( m_small ) {
 				slider = new KSmallSlider( minvol, maxvol, (maxvol-minvol)/10, // @todo !! User \
definable steps @@ -560,6 +559,29 @@
 	} // for all channels of this device
 }
 
+QWidget* MDWSlider::createLabel(QWidget* parent, QString& label, QBoxLayout *layout, \
bool small) +{
+  QFont qf;
+  qf.setPointSize(8);
+
+  QWidget* labelWidget;
+	if (_orientation == Qt::Horizontal)
+	{
+		labelWidget = new QLabel(label, parent);
+		if ( small ) ((QLabel*)labelWidget)->setFont(qf);
+	}
+	else {
+		labelWidget = new VerticalText(parent, label);
+		if ( small ) ((VerticalText*)labelWidget)->setFont(qf);
+	}
+	
+	labelWidget->installEventFilter( parent );
+	layout->addWidget(labelWidget);
+
+	return labelWidget;
+}
+
+
 QPixmap MDWSlider::loadIcon( QString filename )
 {
 	return KIconLoader::global()->loadIcon( filename, KIconLoader::Small, \
                KIconLoader::SizeSmallMedium );
--- trunk/KDE/kdemultimedia/kmix/gui/mdwslider.h #1242584:1242585
@@ -94,6 +94,7 @@
     void update();
     void showMoveMenu();
     virtual void showContextMenu();
+    //void getSubcontrolTranslation(Volume::ChannelID arg1);
 
 
 signals:
@@ -119,13 +120,14 @@
     QPixmap loadIcon( QString filename );
     void createWidgets( bool showMuteLED, bool showCaptureLED );
     void addSliders( QBoxLayout *volLayout, char type, bool addLabel);
-    void addDefaultLabel(QBoxLayout *layout, Qt::Orientation orientation);
+    //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<QWidget *>& ref_sliders );
     void setTicksInternal( QList<QWidget *>& ref_sliders,  bool ticks );
     void volumeChangeInternal(Volume& vol, QList<Volume::ChannelID>& slidersChids, \
                QList<QWidget *>& ref_sliders );
     void updateInternal(Volume& vol, QList<QWidget *>& ref_sliders, \
QList<Volume::ChannelID>& slidersChids); +    QWidget* createLabel(QWidget* parent, \
QString& label, QBoxLayout *layout, bool);  
 
     bool m_linked;
--- trunk/KDE/kdemultimedia/kmix/gui/viewdockareapopup.cpp #1242584:1242585
@@ -44,10 +44,12 @@
 ViewDockAreaPopup::ViewDockAreaPopup(QWidget* parent, const char* name, Mixer* \
                mixer, ViewBase::ViewFlags vflags, GUIProfile *guiprof, KMixWindow \
                *dockW )
     : ViewBase(parent, name, mixer, /*Qt::FramelessWindowHint | \
Qt::MSWindowsFixedSizeDialogHint*/0, vflags, guiprof), _dock(dockW)  {
+    //_layoutControls = new QHBoxLayout(this);
     _layoutMDW = new QGridLayout( this );
     _layoutMDW->setSpacing( KDialog::spacingHint() );
     _layoutMDW->setMargin(0);
     _layoutMDW->setObjectName( QLatin1String( "KmixPopupLayout" ) );
+    //_layoutMDW->addItem(_layoutControls);
     setMixSet();
 }
 
@@ -107,11 +109,19 @@
       _mixSet->append(dockMD);
    }
    
+   Mixer* mixer2;
+   foreach ( mixer2 , Mixer::mixers() )
+   {
    MixDevice *md;
-   foreach ( md, _mixer->getMixSet() )
+   foreach ( md, mixer2->getMixSet() )
    {
+     if (md->isApplicationStream())
+     {
      _mixSet->append(md);
+      kDebug(67100) << "Add to tray popup: " << md->id();
    }
+   }
+}
    
 }
 
@@ -125,26 +135,30 @@
       true,         // Show Mute LED
       false,        // Show Record LED
       false,        // Small
-      Qt::Vertical, // Direction: only 1 device, so doesn't matter
+      Qt::Horizontal, // Direction: only 1 device, so doesn't matter
       this,         // parent
       0             // Is "NULL", so that there is no RMB-popup
       , pctl
    );
-   _layoutMDW->addItem( new QSpacerItem( 5, 20 ), 0, 2 );
-   _layoutMDW->addItem( new QSpacerItem( 5, 20 ), 0, 0 );
-   _layoutMDW->addWidget( mdw, 0, 1 );
+   int sliderColumn = _layoutMDW->rowCount();
+   if (sliderColumn == 1 ) sliderColumn =0;
+   _layoutMDW->addItem( new QSpacerItem( 5, 20 ), sliderColumn,0 );
+   _layoutMDW->addWidget( mdw, sliderColumn+1,0 );
 
-   // Add button to show main panel
-   QPushButton *pb = new QPushButton( i18n("Mixer"), this );
-   pb->setObjectName( QLatin1String("MixerPanel" ));
-   connect ( pb, SIGNAL( clicked() ), SLOT( showPanelSlot() ) );
-   _layoutMDW->addWidget( pb, 1, 0, 1, 3 );
-
+   kDebug(67100) << "ADDED " << md->id() << " at column " << sliderColumn;
    return mdw;
 }
 
 void ViewDockAreaPopup::constructionFinished() {
    //    kDebug(67100) << "ViewDockAreaPopup::constructionFinished()\n";
+
+   int sliderColumn = _layoutMDW->rowCount();
+  _layoutMDW->addItem( new QSpacerItem( 5, 20 ), sliderColumn, 0 ); // TODO add this \
on "polish()" +   QPushButton *pb = new QPushButton( i18n("Mixer"), this );
+   pb->setObjectName( QLatin1String("MixerPanel" ));
+   connect ( pb, SIGNAL( clicked() ), SLOT( showPanelSlot() ) );
+   _layoutMDW->addWidget( pb, sliderColumn+1, 0, 1, 1 );
+/*
    QWidget* mdw = 0;
    if ( !_mdws.isEmpty() )
       mdw = _mdws.first();
@@ -152,8 +166,8 @@
    if ( mdw != 0 ) {
       mdw->move(0,0);
       mdw->show();
+   }*/
    }
-}
 
 
 void ViewDockAreaPopup::refreshVolumeLevels() {
--- trunk/KDE/kdemultimedia/kmix/gui/viewdockareapopup.h #1242584:1242585
@@ -52,6 +52,7 @@
     virtual void _setMixSet();
 
 private:
+  QLayout* _layoutControls;
     QGridLayout* _layoutMDW;
 
 private slots:


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic