Changeset 998

Show
Ignore:
Timestamp:
04/16/08 13:46:05 (13 years ago)
Author:
arnonym
Message:

Try to improve the generic mixer.

Moving the sliders now sends values to the ffado-dbus-server.

And the interface of Continuous is extended by getMinimum() and getMaximum() which should return the range of values this value can have. For now its just [-100,10]. The generic mixer gui adopts to the values returned by these functions...

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libffado/src/libcontrol/BasicElements.cpp

    r973 r998  
    5858{ 
    5959    debugOutput( DEBUG_LEVEL_VERBOSE, "%s getValue()=%lf\n", 
     60        getName().c_str(), m_Value); 
     61    return m_Value; 
     62} 
     63 
     64double 
     65Continuous::getMinimum() 
     66{ 
     67    debugOutput( DEBUG_LEVEL_VERBOSE, "%s getMinimum()=%lf\n", 
     68        getName().c_str(), m_Value); 
     69    return m_Value; 
     70} 
     71 
     72double 
     73Continuous::getMaximum() 
     74{ 
     75    debugOutput( DEBUG_LEVEL_VERBOSE, "%s getMaximum()=%lf\n", 
    6076        getName().c_str(), m_Value); 
    6177    return m_Value; 
  • trunk/libffado/src/libcontrol/BasicElements.h

    r973 r998  
    4747    virtual bool setValue(double v); 
    4848    virtual double getValue(); 
     49    virtual double getMinimum(); 
     50    virtual double getMaximum(); 
    4951    virtual bool setValue(int idx, double v); 
    5052    virtual double getValue(int idx); 
  • trunk/libffado/support/dbus/control-interface.xml

    r992 r998  
    5454      </method> 
    5555      <method name="getValue"> 
     56          <arg type="d" name="value" direction="out"/> 
     57      </method> 
     58      <method name="getMinimum"> 
     59          <arg type="d" name="value" direction="out"/> 
     60      </method> 
     61      <method name="getMaximum"> 
    5662          <arg type="d" name="value" direction="out"/> 
    5763      </method> 
  • trunk/libffado/support/dbus/controlserver.cpp

    r992 r998  
    240240} 
    241241 
     242DBus::Double 
     243Continuous::getMinimum() 
     244{ 
     245    debugOutput( DEBUG_LEVEL_VERBOSE, "getMinimum() TODO: Return a real device-value...\n" ); 
     246    return -100.0; 
     247} 
     248 
     249DBus::Double 
     250Continuous::getMaximum() 
     251{ 
     252    debugOutput( DEBUG_LEVEL_VERBOSE, "getMaximum() TODO: Return a real device-value...\n" ); 
     253    return 10.0; 
     254} 
     255 
    242256// --- Discrete 
    243257 
  • trunk/libffado/support/dbus/controlserver.h

    r992 r998  
    9797    DBus::Double setValue( const DBus::Double & value ); 
    9898    DBus::Double getValue( ); 
     99    DBus::Double getMinimum( ); 
     100    DBus::Double getMaximum( ); 
    99101    DBus::Double setValueIdx( const DBus::Int32 & idx, 
    100102                              const DBus::Double & value ); 
  • trunk/libffado/support/mixer/mixer_generic.py

    r994 r998  
    4949                self.slider = QSlider( self ) 
    5050                l.addWidget( self.slider ) 
    51                 # Not yet working: 
    52                 self.slider.setValue( self.interface.getValue() ) 
     51 
     52                self.min = self.interface.getMinimum() 
     53                self.max = self.interface.getMaximum() 
     54                self.slider.setMinValue( 0 ) 
     55                self.slider.setMaxValue( 100 ) 
     56                self.slider.setValue( self.interfaceToSlider( self.interface.getValue() ) ) 
     57                self.connect( self.slider, SIGNAL( "valueChanged(int)" ), self.sliderMoved ) 
     58 
     59        def sliderToInterFace( self, slider ): 
     60                return ( self.max - self.min ) * (100-slider)/100.0 + self.min 
     61        def interfaceToSlider( self, interface ): 
     62                return - ( interface - self.min ) / ( self.max - self.min ) * 100.0 + 100 
     63 
     64        def sliderMoved( self, i ): 
     65                #print "ContinuousWidget::sliderMoved( %i )" % i 
     66                self.interface.setValue( self.sliderToInterFace( i ) ) 
    5367 
    5468class EnumWidget( QWidget ): 
     
    6680 
    6781        def currentChanged( self, i ): 
    68                 print "EnumWidget::currentChanged(" + str(i) + ")" 
     82                #print "EnumWidget::currentChanged(" + str(i) + ")" 
    6983                self.interface.select( i ) 
    7084 
     
    8498                        if tmp not in interfacelist: 
    8599                                interfacelist.append( tmp ) 
    86                 #print interfacelist 
    87100 
    88101                name = "Unnamed" 
     
    90103                if interfacelist.count( "org.ffado.Control.Element.Element" ): 
    91104                        name = dbus.Interface( element, "org.ffado.Control.Element.Element" ).getName() 
    92                         #print name 
    93105 
    94106                if interfacelist.count( "org.ffado.Control.Element.Container" ): 
     
    99111                        parentwidget.layout().addWidget( w ) 
    100112                        for i in range( end ): 
    101                                 print "%s %i %s" % ( path, i, container.getElementName( i ) ) 
     113                                #print "%s %i %s" % ( path, i, container.getElementName( i ) ) 
    102114                                self.introspect( bus, session, path + "/" + container.getElementName( i ), w ) 
    103115 
    104116                if interfacelist.count( "org.ffado.Control.Element.Continuous" ): 
    105117                        control = dbus.Interface( element, "org.ffado.Control.Element.Continuous" ) 
    106                         #print control.getValue() 
    107118                        w = ContinuousWidget( name, control, parentwidget ) 
    108119                        parentwidget.layout().addWidget( w )