/[svn]/qsampler/trunk/src/qsamplerDeviceForm.ui.h
ViewVC logotype

Diff of /qsampler/trunk/src/qsamplerDeviceForm.ui.h

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

revision 433 by capela, Wed Mar 9 16:44:04 2005 UTC revision 442 by capela, Thu Mar 10 15:48:38 2005 UTC
# Line 37  void qsamplerDeviceForm::init (void) Line 37  void qsamplerDeviceForm::init (void)
37          m_pMainForm   = (qsamplerMainForm *) QWidget::parentWidget();          m_pMainForm   = (qsamplerMainForm *) QWidget::parentWidget();
38          m_pClient     = NULL;          m_pClient     = NULL;
39          m_iDirtySetup = 0;          m_iDirtySetup = 0;
         m_iDirtyCount = 0;  
40          m_bNewDevice  = false;          m_bNewDevice  = false;
41            m_deviceType  = qsamplerDevice::None;
42            m_pAudioItems = NULL;
43            m_pMidiItems  = NULL;
44    
45          // This an outsider (from designer), but rather important.          // This an outsider (from designer), but rather important.
46          QObject::connect(DeviceParamTable, SIGNAL(valueChanged(int,int)),          QObject::connect(DeviceParamTable, SIGNAL(valueChanged(int,int)),
47              this, SLOT(changeValue(int,int)));                  this, SLOT(changeValue(int,int)));
48                    
49          // Try to restore normal window positioning.          // Try to restore normal window positioning.
50          adjustSize();          adjustSize();
# Line 95  void qsamplerDeviceForm::setClient ( lsc Line 97  void qsamplerDeviceForm::setClient ( lsc
97  // Create a new device from current table view.  // Create a new device from current table view.
98  void qsamplerDeviceForm::createDevice (void)  void qsamplerDeviceForm::createDevice (void)
99  {  {
         //  
         // TODO: Create a new device from current table view...  
         //  
         m_pMainForm->appendMessages("qsamplerDeviceForm::createDevice()");  
   
100          QListViewItem *pItem = DeviceListView->selectedItem();          QListViewItem *pItem = DeviceListView->selectedItem();
101          if (pItem == NULL || pItem->rtti() != QSAMPLER_DEVICE_ITEM)          if (pItem == NULL || pItem->rtti() != QSAMPLER_DEVICE_ITEM)
102                  return;                  return;
# Line 109  void qsamplerDeviceForm::createDevice (v Line 106  void qsamplerDeviceForm::createDevice (v
106          // Build the parameter list...          // Build the parameter list...
107          qsamplerDeviceParamMap& params = device.params();          qsamplerDeviceParamMap& params = device.params();
108          lscp_param_t *pParams = new lscp_param_t [params.count() + 1];          lscp_param_t *pParams = new lscp_param_t [params.count() + 1];
109          int i = 0;          int iParam = 0;
110          qsamplerDeviceParamMap::ConstIterator iter;          qsamplerDeviceParamMap::ConstIterator iter;
111          for (iter = params.begin(); iter != params.end(); ++iter) {          for (iter = params.begin(); iter != params.end(); ++iter) {
112                  pParams[i].key   = (char *) iter.key().latin1();                  pParams[iParam].key   = (char *) iter.key().latin1();
113                  pParams[i].value = (char *) iter.data().value.latin1();                  pParams[iParam].value = (char *) iter.data().value.latin1();
114                    ++iParam;
115          }          }
116          // Null terminated.          // Null terminated.
117          pParams[i].key   = NULL;          pParams[iParam].key   = NULL;
118          pParams[i].value = NULL;          pParams[iParam].value = NULL;
119    
120          // Now it depends on the device type...          // Now it depends on the device type...
121            qsamplerDeviceItem *pRootItem = NULL;
122          int iDeviceID = -1;          int iDeviceID = -1;
123          switch (device.deviceType()) {          switch (device.deviceType()) {
124          case qsamplerDevice::Audio:          case qsamplerDevice::Audio:
125              if ((iDeviceID = ::lscp_create_audio_device(m_pClient,              pRootItem = m_pAudioItems;
126                    if ((iDeviceID = ::lscp_create_audio_device(m_pClient,
127                                  device.driverName().latin1(), pParams)) < 0)                                  device.driverName().latin1(), pParams)) < 0)
128                          m_pMainForm->appendMessagesClient("lscp_create_audio_device");                          m_pMainForm->appendMessagesClient("lscp_create_audio_device");
129                  break;                  break;
130          case qsamplerDevice::Midi:          case qsamplerDevice::Midi:
131              if ((iDeviceID = ::lscp_create_midi_device(m_pClient,              pRootItem = m_pMidiItems;
132                    if ((iDeviceID = ::lscp_create_midi_device(m_pClient,
133                                  device.driverName().latin1(), pParams)) < 0)                                  device.driverName().latin1(), pParams)) < 0)
134                          m_pMainForm->appendMessagesClient("lscp_create_midi_device");                          m_pMainForm->appendMessagesClient("lscp_create_midi_device");
135                  break;                  break;
136            case qsamplerDevice::None:
137                    break;
138          }          }
139    
140          // Free used parameter array.          // Free used parameter array.
141          delete [] pParams;          delete pParams;
142    
143          // Show result.          // We're on to create the new device item.
144          if (iDeviceID >= 0) {          if (iDeviceID >= 0) {
145                  m_pMainForm->appendMessages(device.deviceName() + ' ' + tr("created."));                  // Append the new device item.
146                    qsamplerDeviceItem *pDeviceItem = new qsamplerDeviceItem(pRootItem,
147                            m_pClient, device.deviceType(), iDeviceID);
148                    // Just make it the new selection...
149                    DeviceListView->setSelected(pDeviceItem, true);
150                  // Done.                  // Done.
151                  refreshDevices();                  m_pMainForm->appendMessages(pDeviceItem->device().deviceName() + ' '
152                            + tr("created."));
153                  // Main session should be marked dirty.                  // Main session should be marked dirty.
154                  m_pMainForm->sessionDirty();                  m_pMainForm->sessionDirty();
155          }          }
# Line 151  void qsamplerDeviceForm::createDevice (v Line 159  void qsamplerDeviceForm::createDevice (v
159  // Delete current device in table view.  // Delete current device in table view.
160  void qsamplerDeviceForm::deleteDevice (void)  void qsamplerDeviceForm::deleteDevice (void)
161  {  {
         //  
         // TODO: Delete current device in table view...  
         //  
         m_pMainForm->appendMessages("qsamplerDeviceForm::deleteDevice()");  
   
162          QListViewItem *pItem = DeviceListView->selectedItem();          QListViewItem *pItem = DeviceListView->selectedItem();
163          if (pItem == NULL || pItem->rtti() != QSAMPLER_DEVICE_ITEM)          if (pItem == NULL || pItem->rtti() != QSAMPLER_DEVICE_ITEM)
164                  return;                  return;
165    
166          qsamplerDevice& device = ((qsamplerDeviceItem *) pItem)->device();          qsamplerDevice& device = ((qsamplerDeviceItem *) pItem)->device();
167    
168            // Prompt user if this is for real...
169            qsamplerOptions *pOptions = m_pMainForm->options();
170        if (pOptions && pOptions->bConfirmRemove) {
171            if (QMessageBox::warning(this, tr("Warning"),
172                tr("Delete %1 device:\n\n"
173                   "%2\n\n"
174                   "Are you sure?")
175                   .arg(device.deviceTypeName())
176                   .arg(device.deviceName()),
177                tr("OK"), tr("Cancel")) > 0)
178                return;
179        }
180    
181          // Now it depends on the device type...          // Now it depends on the device type...
182          lscp_status_t ret = LSCP_FAILED;          lscp_status_t ret = LSCP_FAILED;
183          switch (device.deviceType()) {          switch (device.deviceType()) {
184          case qsamplerDevice::Audio:          case qsamplerDevice::Audio:
185              if ((ret = ::lscp_destroy_audio_device(m_pClient,                  if ((ret = ::lscp_destroy_audio_device(m_pClient,
186                                  device.deviceID())) != LSCP_OK)                                  device.deviceID())) != LSCP_OK)
187                          m_pMainForm->appendMessagesClient("lscp_destroy_audio_device");                          m_pMainForm->appendMessagesClient("lscp_destroy_audio_device");
188                  break;                  break;
189          case qsamplerDevice::Midi:          case qsamplerDevice::Midi:
190              if ((ret = ::lscp_destroy_midi_device(m_pClient,                  if ((ret = ::lscp_destroy_midi_device(m_pClient,
191                                  device.deviceID())) != LSCP_OK)                                  device.deviceID())) != LSCP_OK)
192                          m_pMainForm->appendMessagesClient("lscp_destroy_midi_device");                          m_pMainForm->appendMessagesClient("lscp_destroy_midi_device");
193                  break;                  break;
194            case qsamplerDevice::None:
195                    break;
196          }          }
197    
198          // Show result.          // Show result.
199          if (ret == LSCP_OK) {          if (ret == LSCP_OK) {
200                  m_pMainForm->appendMessages(device.deviceName() + ' ' + tr("deleted."));                  // Show log message before loosing it.
201                    m_pMainForm->appendMessages(device.deviceName() + ' '
202                            + tr("deleted."));
203                  // Done.                  // Done.
204                  refreshDevices();                  delete pItem;
205                  // Main session should be marked dirty.                  // Main session should be marked dirty.
206                  m_pMainForm->sessionDirty();                  m_pMainForm->sessionDirty();
207          }          }
# Line 195  void qsamplerDeviceForm::refreshDevices Line 215  void qsamplerDeviceForm::refreshDevices
215          m_iDirtySetup++;          m_iDirtySetup++;
216    
217          //          //
218          // TODO: Load device configuration data ...          // (Re)Load complete device configuration data ...
219          //          //
220          m_pMainForm->appendMessages("qsamplerDeviceForm::refreshDevices()");          m_pAudioItems = NULL;
221            m_pMidiItems = NULL;
222          DeviceListView->clear();          DeviceListView->clear();
223          if (m_pClient) {          if (m_pClient) {
                 qsamplerDeviceItem *pItem;  
224                  int *piDeviceIDs;                  int *piDeviceIDs;
225                  // Grab and pop Audio devices...                  // Grab and pop Audio devices...
226                  pItem = new qsamplerDeviceItem(DeviceListView, m_pClient,                  m_pAudioItems = new qsamplerDeviceItem(DeviceListView, m_pClient,
227                          qsamplerDevice::Audio);                          qsamplerDevice::Audio);
228                  if (pItem) {                  if (m_pAudioItems) {
229                          pItem->setText(0, tr("Audio"));                          m_pAudioItems->setText(0, tr("Audio"));
230                          piDeviceIDs = qsamplerDevice::getDevices(m_pClient, qsamplerDevice::Audio);                          piDeviceIDs = qsamplerDevice::getDevices(m_pClient, qsamplerDevice::Audio);
231                          for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; i++) {                          for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; i++) {
232                                  new qsamplerDeviceItem(pItem, m_pClient,                                  new qsamplerDeviceItem(m_pAudioItems, m_pClient,
233                                          qsamplerDevice::Audio, piDeviceIDs[i]);                                          qsamplerDevice::Audio, piDeviceIDs[i]);
234                          }                          }
235                          pItem->setOpen(true);                          m_pAudioItems->setOpen(true);
236                  }                  }
237                  // Grab and pop MIDI devices...                  // Grab and pop MIDI devices...
238                  pItem = new qsamplerDeviceItem(DeviceListView, m_pClient,                  m_pMidiItems = new qsamplerDeviceItem(DeviceListView, m_pClient,
239                          qsamplerDevice::Midi);                          qsamplerDevice::Midi);
240                  if (pItem) {                  if (m_pMidiItems) {
241                          pItem->setText(0, tr("MIDI"));                          m_pMidiItems->setText(0, tr("MIDI"));
242                          piDeviceIDs = qsamplerDevice::getDevices(m_pClient, qsamplerDevice::Midi);                          piDeviceIDs = qsamplerDevice::getDevices(m_pClient, qsamplerDevice::Midi);
243                          for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; i++) {                          for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; i++) {
244                                  new qsamplerDeviceItem(pItem, m_pClient,                                  new qsamplerDeviceItem(m_pMidiItems, m_pClient,
245                                          qsamplerDevice::Midi, piDeviceIDs[i]);                                          qsamplerDevice::Midi, piDeviceIDs[i]);
246                          }                          }
247                          pItem->setOpen(true);                          m_pMidiItems->setOpen(true);
248                  }                  }
249          }          }
250    
251          // Done.          // Done.
         m_iDirtyCount = 0;  
252          m_iDirtySetup--;          m_iDirtySetup--;
253            
254          // Show something.          // Show something.
255          selectDevice();          selectDevice();
256  }  }
# Line 242  void qsamplerDeviceForm::refreshDevices Line 260  void qsamplerDeviceForm::refreshDevices
260  void qsamplerDeviceForm::selectDriver ( const QString& sDriverName )  void qsamplerDeviceForm::selectDriver ( const QString& sDriverName )
261  {  {
262          if (m_iDirtySetup > 0)          if (m_iDirtySetup > 0)
263              return;                  return;
264    
265          //          //
266          //  TODO: Driver name has changed for a new device...          //  Driver name has changed for a new device...
267          //          //
         m_pMainForm->appendMessages("qsamplerDeviceForm::selectDriver()");  
268    
269          QListViewItem *pItem = DeviceListView->selectedItem();          QListViewItem *pItem = DeviceListView->selectedItem();
270          if (pItem == NULL || pItem->rtti() != QSAMPLER_DEVICE_ITEM)          if (pItem == NULL || pItem->rtti() != QSAMPLER_DEVICE_ITEM)
271                  return;                  return;
272    
273          qsamplerDevice& device = ((qsamplerDeviceItem *) pItem)->device();          qsamplerDevice& device = ((qsamplerDeviceItem *) pItem)->device();
274    
275            // Driver change is only valid for scratch devices...
276          if (m_bNewDevice) {          if (m_bNewDevice) {
277                    m_iDirtySetup++;
278                  device.setDriver(m_pClient, sDriverName);                  device.setDriver(m_pClient, sDriverName);
279                  m_iDirtyCount++;                  DeviceParamTable->refresh(device);
280                    m_iDirtySetup--;
281                    // Done.
282                    stabilizeForm();
283          }          }
   
         // Done.  
         stabilizeForm();  
284  }  }
285    
286    
# Line 268  void qsamplerDeviceForm::selectDriver ( Line 288  void qsamplerDeviceForm::selectDriver (
288  void qsamplerDeviceForm::selectDevice (void)  void qsamplerDeviceForm::selectDevice (void)
289  {  {
290          if (m_iDirtySetup > 0)          if (m_iDirtySetup > 0)
291              return;                  return;
292    
293          //          //
294          //  TODO: Device selection has changed...          //  Device selection has changed...
295          //          //
         m_pMainForm->appendMessages("qsamplerDeviceForm::selectDevice()");  
296    
297          QListViewItem *pItem = DeviceListView->selectedItem();          QListViewItem *pItem = DeviceListView->selectedItem();
298          if (pItem == NULL || pItem->rtti() != QSAMPLER_DEVICE_ITEM) {          if (pItem == NULL || pItem->rtti() != QSAMPLER_DEVICE_ITEM) {
299              DeviceNameTextLabel->setText(QString::null);                  m_deviceType = qsamplerDevice::None;
300              DeviceParamTable->setNumRows(0);                  DeviceNameTextLabel->setText(QString::null);
301                    DeviceParamTable->setNumRows(0);
302                  stabilizeForm();                  stabilizeForm();
303                  return;                  return;
304          }          }
305    
306            m_iDirtySetup++;
307          qsamplerDevice& device = ((qsamplerDeviceItem *) pItem)->device();          qsamplerDevice& device = ((qsamplerDeviceItem *) pItem)->device();
308    
309            // Flag whether this is a new device.
310          m_bNewDevice = (device.deviceID() < 0);          m_bNewDevice = (device.deviceID() < 0);
311    
312          // Fill the device/driver heading...          // Fill the device/driver heading...
313          DeviceNameTextLabel->setText(device.deviceTypeName() + ' ' + device.deviceName());          DeviceNameTextLabel->setText(device.deviceTypeName() + ' ' + device.deviceName());
314          DriverNameComboBox->clear();          // The driver combobox is only rebuilt if device type has changed...
315          DriverNameComboBox->insertStringList(          if (device.deviceType() != m_deviceType) {
316                  qsamplerDevice::getDrivers(m_pClient, device.deviceType()));                  DriverNameComboBox->clear();
317          const QString& sDriverName = device.driverName();                  DriverNameComboBox->insertStringList(
318          if (m_bNewDevice || sDriverName.isEmpty()) {                          qsamplerDevice::getDrivers(m_pClient, device.deviceType()));
319                  device.setDriver(m_pClient, DriverNameComboBox->currentText());                  m_deviceType = device.deviceType();
         } else {  
                 if (DriverNameComboBox->listBox()->findItem(sDriverName, Qt::ExactMatch) == NULL)  
                         DriverNameComboBox->insertItem(sDriverName);  
                 DriverNameComboBox->setCurrentText(sDriverName);  
320          }          }
321            // Do we need a driver name?
322            if (m_bNewDevice || device.driverName().isEmpty())
323                    device.setDriver(m_pClient, DriverNameComboBox->currentText());
324            const QString& sDriverName = device.driverName();
325            if (DriverNameComboBox->listBox()->findItem(sDriverName, Qt::ExactMatch) == NULL)
326                    DriverNameComboBox->insertItem(sDriverName);
327            DriverNameComboBox->setCurrentText(sDriverName);
328          DriverNameTextLabel->setEnabled(m_bNewDevice);          DriverNameTextLabel->setEnabled(m_bNewDevice);
329          DriverNameComboBox->setEnabled(m_bNewDevice);          DriverNameComboBox->setEnabled(m_bNewDevice);
   
330          // Fill the device parameter table...          // Fill the device parameter table...
331          DeviceParamTable->refresh(device);          DeviceParamTable->refresh(device);
   
332          // Done.          // Done.
333            m_iDirtySetup--;
334          stabilizeForm();          stabilizeForm();
335  }  }
336    
# Line 313  void qsamplerDeviceForm::selectDevice (v Line 338  void qsamplerDeviceForm::selectDevice (v
338  // parameter value change slot.  // parameter value change slot.
339  void qsamplerDeviceForm::changeValue ( int iRow, int iCol )  void qsamplerDeviceForm::changeValue ( int iRow, int iCol )
340  {  {
341            if (m_iDirtySetup > 0)
342                return;
343            if (iRow < 0 || iCol < 0)
344                return;
345                
346          //          //
347          //  TODO: Device parameter change...          //  Device parameter change...
348          //          //
349          m_pMainForm->appendMessages("qsamplerDeviceForm::changeValue()");  
           
350          QListViewItem *pItem = DeviceListView->selectedItem();          QListViewItem *pItem = DeviceListView->selectedItem();
351          if (pItem == NULL || pItem->rtti() != QSAMPLER_DEVICE_ITEM)          if (pItem == NULL || pItem->rtti() != QSAMPLER_DEVICE_ITEM)
352                  return;                  return;
353    
354            m_iDirtySetup++;
355          qsamplerDevice& device = ((qsamplerDeviceItem *) pItem)->device();          qsamplerDevice& device = ((qsamplerDeviceItem *) pItem)->device();
356    
357          // Table 3rd column has the parameter name;          // Table 1st column has the parameter name;
358          qsamplerDeviceParamMap& params = device.params();          qsamplerDeviceParamMap& params = device.params();
359          const QString sParam = DeviceParamTable->text(iRow, 2);          const QString sParam = DeviceParamTable->text(iRow, 0);
360          const QString sValue = DeviceParamTable->text(iRow, iCol);          const QString sValue = DeviceParamTable->text(iRow, iCol);
361          params[sParam].value = sValue;          params[sParam].value = sValue;
362    
# Line 340  void qsamplerDeviceForm::changeValue ( i Line 370  void qsamplerDeviceForm::changeValue ( i
370                  lscp_status_t ret = LSCP_FAILED;                  lscp_status_t ret = LSCP_FAILED;
371                  switch (device.deviceType()) {                  switch (device.deviceType()) {
372                  case qsamplerDevice::Audio:                  case qsamplerDevice::Audio:
373                      if ((ret = ::lscp_set_audio_device_param(m_pClient,                          if ((ret = ::lscp_set_audio_device_param(m_pClient,
374                                          device.deviceID(), &param)) != LSCP_OK)                                          device.deviceID(), &param)) != LSCP_OK)
375                                  m_pMainForm->appendMessagesClient("lscp_set_audio_device_param");                                  m_pMainForm->appendMessagesClient("lscp_set_audio_device_param");
376                          break;                          break;
377                  case qsamplerDevice::Midi:                  case qsamplerDevice::Midi:
378                      if ((ret = ::lscp_set_midi_device_param(m_pClient,                          if ((ret = ::lscp_set_midi_device_param(m_pClient,
379                                          device.deviceID(), &param)) != LSCP_OK)                                          device.deviceID(), &param)) != LSCP_OK)
380                                  m_pMainForm->appendMessagesClient("lscp_set_midi_device_param");                                  m_pMainForm->appendMessagesClient("lscp_set_midi_device_param");
381                          break;                          break;
382                    case qsamplerDevice::None:
383                            break;
384                  }                  }
385                  // Show result.                  // Show result.
386                  if (ret == LSCP_OK) {                  if (ret == LSCP_OK) {
387                          m_pMainForm->appendMessages(device.deviceName() + ' ' +                          m_pMainForm->appendMessages(device.deviceName() + ' '
388                                  QString("%1: %2.").arg(sParam).arg(sValue));                                  + QString("%1: %2.").arg(sParam).arg(sValue));
389                  }                  }
390          }          }
391            
392          // Done.          // Done.
393          m_iDirtyCount++;          m_iDirtySetup--;
394          stabilizeForm();          stabilizeForm();
395          // Main session should be dirtier...          // Main session should be dirtier...
396          m_pMainForm->sessionDirty();          m_pMainForm->sessionDirty();
# Line 380  void qsamplerDeviceForm::stabilizeForm ( Line 412  void qsamplerDeviceForm::stabilizeForm (
412    
413    
414  // end of qsamplerDeviceForm.ui.h  // end of qsamplerDeviceForm.ui.h
   

Legend:
Removed from v.433  
changed lines
  Added in v.442

  ViewVC Help
Powered by ViewVC