/[svn]/qsampler/trunk/src/qsamplerDevice.cpp
ViewVC logotype

Diff of /qsampler/trunk/src/qsamplerDevice.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 461 by capela, Sun Mar 13 22:06:59 2005 UTC revision 462 by capela, Tue Mar 15 11:39:12 2005 UTC
# Line 121  void qsamplerDevice::setDevice ( lscp_cl Line 121  void qsamplerDevice::setDevice ( lscp_cl
121          qsamplerDeviceType deviceType, int iDeviceID )          qsamplerDeviceType deviceType, int iDeviceID )
122  {  {
123          // Device id and type should be always set.          // Device id and type should be always set.
124          m_iDeviceID   = iDeviceID;          m_iDeviceID  = iDeviceID;
125          m_deviceType  = deviceType;          m_deviceType = deviceType;
126    
127          // Retrieve device info, if any.          // Retrieve device info, if any.
128          lscp_device_info_t *pDeviceInfo = NULL;          lscp_device_info_t *pDeviceInfo = NULL;
# Line 177  void qsamplerDevice::setDevice ( lscp_cl Line 177  void qsamplerDevice::setDevice ( lscp_cl
177  }  }
178    
179    
180  // Driver name initializer.  // Driver name initializer/settler.
181  void qsamplerDevice::setDriver ( lscp_client_t *pClient,  void qsamplerDevice::setDriver ( lscp_client_t *pClient,
182          const QString& sDriverName )          const QString& sDriverName )
183  {  {
# Line 257  const QString& qsamplerDevice::deviceNam Line 257  const QString& qsamplerDevice::deviceNam
257  }  }
258    
259  // Device parameter accessor.  // Device parameter accessor.
260  qsamplerDeviceParamMap& qsamplerDevice::params (void)  const qsamplerDeviceParamMap& qsamplerDevice::params (void) const
261  {  {
262          return m_params;          return m_params;
263  }  }
264    
265    
266  // Update/refresh device/driver data.  // Set the proper device parameter value.
267  void qsamplerDevice::refresh (void)  void qsamplerDevice::setParam ( const QString& sParam,
268            const QString& sValue )
269  {  {
270            m_params[sParam].value = sValue;
271  }  }
272    
273    
274  // Device ids enumerator.  // Device ids enumerator.
275  int *qsamplerDevice::getDevices ( lscp_client_t *pClient,  int *qsamplerDevice::getDevices ( lscp_client_t *pClient,
276          qsamplerDeviceType deviceType )          qsamplerDeviceType deviceType )
# Line 313  QStringList qsamplerDevice::getDrivers ( Line 316  QStringList qsamplerDevice::getDrivers (
316    
317    
318  //-------------------------------------------------------------------------  //-------------------------------------------------------------------------
319    // qsamplerDevicePort - MIDI/Audio Device port/channel structure.
320    //
321    
322    // Constructor.
323    qsamplerDevicePort::qsamplerDevicePort ( lscp_client_t *pClient,
324            const qsamplerDevice& device, int iPortID )
325    {
326            setDevicePort(pClient, device, iPortID);
327    }
328    
329    // Default destructor.
330    qsamplerDevicePort::~qsamplerDevicePort (void)
331    {
332    }
333    
334    
335    // Initializer.
336    void qsamplerDevicePort::setDevicePort ( lscp_client_t *pClient,
337            const qsamplerDevice& device, int iPortID )
338    {
339            // Device port id should be always set.
340            m_iPortID = iPortID;
341    
342            // Retrieve device port/channel info, if any.
343            lscp_device_port_info_t *pPortInfo = NULL;
344            switch (device.deviceType()) {
345            case qsamplerDevice::Audio:
346                    pPortInfo = ::lscp_get_audio_channel_info(pClient, device.deviceID(), iPortID);
347                    break;
348            case qsamplerDevice::Midi:
349                    pPortInfo = ::lscp_get_midi_port_info(pClient, device.deviceID(), iPortID);
350                    break;
351            case qsamplerDevice::None:
352                    break;
353            }
354    
355            // If we're bogus, bail out...
356            if (pPortInfo == NULL) {
357                    m_sPortName = QString::null;
358                    return;
359            }
360    
361            // Set device port/channel properties...
362            m_sPortName = pPortInfo->name;
363    
364            // Grab device port/channel parameters...
365            m_params.clear();
366            for (int i = 0; pPortInfo->params && pPortInfo->params[i].key; i++) {
367                    const char *pszParam = pPortInfo->params[i].key;
368                    lscp_param_info_t *pParamInfo = NULL;
369                    switch (device.deviceType()) {
370                    case qsamplerDevice::Audio:
371                            pParamInfo = ::lscp_get_audio_channel_param_info(pClient,
372                                    device.deviceID(), iPortID, pszParam);
373                            break;
374                    case qsamplerDevice::Midi:
375                            pParamInfo = ::lscp_get_midi_port_param_info(pClient,
376                                    device.deviceID(), iPortID, pszParam);
377                            break;
378                    case qsamplerDevice::None:
379                            break;
380                    }
381                    if (pParamInfo) {
382                            m_params[pszParam] = qsamplerDeviceParam(pParamInfo,
383                                    pPortInfo->params[i].value);
384                    }
385            }
386    }
387    
388    
389    // Device port/channel property accessors.
390    int qsamplerDevicePort::portID (void) const
391    {
392            return m_iPortID;
393    }
394    
395    const QString& qsamplerDevicePort::portName (void) const
396    {
397            return m_sPortName;
398    }
399    
400    // Device port/channel parameter accessor.
401    const qsamplerDeviceParamMap& qsamplerDevicePort::params (void) const
402    {
403            return m_params;
404    }
405    
406    
407    // Set the proper device port/channel parameter value.
408    void qsamplerDevicePort::setParam ( const QString& sParam,
409            const QString& sValue )
410    {
411            m_params[sParam].value = sValue;
412    }
413    
414    
415    //-------------------------------------------------------------------------
416  // qsamplerDeviceItem - QListView device item.  // qsamplerDeviceItem - QListView device item.
417  //  //
418    
# Line 409  qsamplerDeviceParamTable::~qsamplerDevic Line 509  qsamplerDeviceParamTable::~qsamplerDevic
509  }  }
510    
511    
512  // The main table refresher.  // Common parameter table renderer.
513  void qsamplerDeviceParamTable::refresh ( qsamplerDevice& device )  void qsamplerDeviceParamTable::refresh ( const qsamplerDeviceParamMap& params,
514            bool bEditable )
515  {  {
516          // Always (re)start it empty.          // Always (re)start it empty.
517          QTable::setUpdatesEnabled(false);          QTable::setUpdatesEnabled(false);
518          QTable::setNumRows(0);          QTable::setNumRows(0);
519    
520          // Now fill the parameter table...          // Fill the parameter table...
         qsamplerDeviceParamMap& params = device.params();  
521          QTable::insertRows(0, params.count());          QTable::insertRows(0, params.count());
522          int iRow = 0;          int iRow = 0;
523          qsamplerDeviceParamMap::ConstIterator iter;          qsamplerDeviceParamMap::ConstIterator iter;
524          for (iter = params.begin(); iter != params.end(); ++iter) {          for (iter = params.begin(); iter != params.end(); ++iter) {
525                  const qsamplerDeviceParam& param = iter.data();                  const qsamplerDeviceParam& param = iter.data();
526                  bool bEnabled = (device.deviceID() < 0 || !param.fix);                  bool bEnabled = (bEditable || !param.fix);
527                  QTable::setText(iRow, 0, iter.key());                  QTable::setText(iRow, 0, iter.key());
528                  QTable::setText(iRow, 1, param.description);                  QTable::setText(iRow, 1, param.description);
529                  if (param.type == LSCP_TYPE_BOOL && bEnabled) {                  if (param.type == LSCP_TYPE_BOOL) {
530                          QStringList opts;                          QStringList opts;
531                          opts.append(tr("false"));                          opts.append(tr("False"));
532                          opts.append(tr("true"));                          opts.append(tr("True"));
533                          QComboTableItem *pComboItem = new QComboTableItem(this, opts);                          QComboTableItem *pComboItem = new QComboTableItem(this, opts);
534                          pComboItem->setCurrentItem(param.value.lower() == "true" ? 1 : 0);                          pComboItem->setCurrentItem(param.value.lower() == "true" ? 1 : 0);
535                          pComboItem->setEnabled(bEnabled);                          pComboItem->setEnabled(bEnabled);

Legend:
Removed from v.461  
changed lines
  Added in v.462

  ViewVC Help
Powered by ViewVC