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

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

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

revision 487 by capela, Thu Mar 31 14:17:19 2005 UTC revision 490 by capela, Fri Apr 1 00:34:58 2005 UTC
# Line 34  Line 34 
34  // Kind of constructor.  // Kind of constructor.
35  void qsamplerChannelForm::init (void)  void qsamplerChannelForm::init (void)
36  {  {
37      // Initialize locals.          // Initialize locals.
38      m_pChannel = NULL;          m_pChannel = NULL;
39    
40      m_iDirtySetup = 0;          m_iDirtySetup = 0;
41      m_iDirtyCount = 0;          m_iDirtyCount = 0;
42    
43          m_midiDevices.setAutoDelete(true);          m_midiDevices.setAutoDelete(true);
44          m_audioDevices.setAutoDelete(true);          m_audioDevices.setAutoDelete(true);
45    
46          m_pDeviceForm = NULL;          m_pDeviceForm = NULL;
47            
48      // Try to restore normal window positioning.          // Try to restore normal window positioning.
49      adjustSize();          adjustSize();
50  }  }
51    
52    
# Line 54  void qsamplerChannelForm::init (void) Line 54  void qsamplerChannelForm::init (void)
54  void qsamplerChannelForm::destroy (void)  void qsamplerChannelForm::destroy (void)
55  {  {
56          if (m_pDeviceForm)          if (m_pDeviceForm)
57              delete m_pDeviceForm;                  delete m_pDeviceForm;
58          m_pDeviceForm = NULL;          m_pDeviceForm = NULL;
59  }  }
60    
# Line 62  void qsamplerChannelForm::destroy (void) Line 62  void qsamplerChannelForm::destroy (void)
62  // Channel dialog setup formal initializer.  // Channel dialog setup formal initializer.
63  void qsamplerChannelForm::setup ( qsamplerChannel *pChannel )  void qsamplerChannelForm::setup ( qsamplerChannel *pChannel )
64  {  {
65      m_pChannel = pChannel;          m_pChannel = pChannel;
66    
67            m_iDirtySetup = 0;
68            m_iDirtyCount = 0;
69    
70      m_iDirtySetup = 0;          if (m_pChannel == NULL)
71      m_iDirtyCount = 0;                  return;
72    
73      if (m_pChannel == NULL)          // It can be a brand new channel, remember?
74          return;          bool bNew = (m_pChannel->channelID() < 0);
75            setCaption(m_pChannel->channelName());
76    
77            // Check if we're up and connected.
78            if (m_pChannel->client() == NULL)
79                    return;
80    
81            qsamplerOptions *pOptions = m_pChannel->options();
82            if (pOptions == NULL)
83                    return;
84    
85            // Avoid nested changes.
86            m_iDirtySetup++;
87    
88            // Load combo box history...
89            pOptions->loadComboBoxHistory(InstrumentFileComboBox);
90    
91            // Populate Engines list.
92            const char **ppszEngines = ::lscp_get_available_engines(m_pChannel->client());
93            if (ppszEngines) {
94                    EngineNameComboBox->clear();
95                    for (int iEngine = 0; ppszEngines[iEngine]; iEngine++)
96                            EngineNameComboBox->insertItem(ppszEngines[iEngine]);
97            }
98            else m_pChannel->appendMessagesClient("lscp_get_available_engines");
99    
100      // It can be a brand new channel, remember?          // Populate Audio output type list.
101      bool bNew = (m_pChannel->channelID() < 0);          AudioDriverComboBox->clear();
102      setCaption(m_pChannel->channelName());          AudioDriverComboBox->insertStringList(
   
     // Check if we're up and connected.  
     if (m_pChannel->client() == NULL)  
         return;  
   
     qsamplerOptions *pOptions = m_pChannel->options();  
     if (pOptions == NULL)  
         return;  
   
     // Avoid nested changes.  
     m_iDirtySetup++;  
   
     // Load combo box history...  
     pOptions->loadComboBoxHistory(InstrumentFileComboBox);  
   
     // Populate Engines list.  
     const char **ppszEngines = ::lscp_get_available_engines(m_pChannel->client());  
     if (ppszEngines) {  
         EngineNameComboBox->clear();  
         for (int iEngine = 0; ppszEngines[iEngine]; iEngine++)  
             EngineNameComboBox->insertItem(ppszEngines[iEngine]);  
     }  
     else m_pChannel->appendMessagesClient("lscp_get_available_engines");  
   
     // Populate Audio output type list.  
     AudioDriverComboBox->clear();  
     AudioDriverComboBox->insertStringList(  
103                  qsamplerDevice::getDrivers(m_pChannel->client(), qsamplerDevice::Audio));                  qsamplerDevice::getDrivers(m_pChannel->client(), qsamplerDevice::Audio));
104    
105      // Populate MIDI input type list.          // Populate MIDI input type list.
106      MidiDriverComboBox->clear();          MidiDriverComboBox->clear();
107      MidiDriverComboBox->insertStringList(          MidiDriverComboBox->insertStringList(
108                  qsamplerDevice::getDrivers(m_pChannel->client(), qsamplerDevice::Midi));                  qsamplerDevice::getDrivers(m_pChannel->client(), qsamplerDevice::Midi));
109    
110      // Read proper channel information,          // Read proper channel information,
111      // and populate the channel form fields.          // and populate the channel form fields.
112    
113      // Engine name...          // Engine name...
114      QString sEngineName = pChannel->engineName();          QString sEngineName = pChannel->engineName();
115      if (sEngineName.isEmpty() || bNew)          if (sEngineName.isEmpty() || bNew)
116          sEngineName = pOptions->sEngineName;                  sEngineName = pOptions->sEngineName;
117      if (sEngineName.isEmpty())          if (sEngineName.isEmpty())
118          sEngineName = qsamplerChannel::noEngineName();                  sEngineName = qsamplerChannel::noEngineName();
119      if (EngineNameComboBox->listBox()->findItem(sEngineName, Qt::ExactMatch) == NULL)          if (EngineNameComboBox->listBox()->findItem(sEngineName,
120          EngineNameComboBox->insertItem(sEngineName);                          Qt::ExactMatch | Qt::CaseSensitive) == NULL) {
121      EngineNameComboBox->setCurrentText(sEngineName);                  EngineNameComboBox->insertItem(sEngineName);
122      // Instrument filename and index...          }
123      QString sInstrumentFile = pChannel->instrumentFile();          EngineNameComboBox->setCurrentText(sEngineName);
124      if (sInstrumentFile.isEmpty())          // Instrument filename and index...
125          sInstrumentFile = qsamplerChannel::noInstrumentName();          QString sInstrumentFile = pChannel->instrumentFile();
126      InstrumentFileComboBox->setCurrentText(sInstrumentFile);          if (sInstrumentFile.isEmpty())
127      InstrumentNrComboBox->clear();                  sInstrumentFile = qsamplerChannel::noInstrumentName();
128      InstrumentNrComboBox->insertStringList(          InstrumentFileComboBox->setCurrentText(sInstrumentFile);
129            InstrumentNrComboBox->clear();
130            InstrumentNrComboBox->insertStringList(
131                  qsamplerChannel::getInstrumentList(sInstrumentFile,                  qsamplerChannel::getInstrumentList(sInstrumentFile,
132                  pOptions->bInstrumentNames));                  pOptions->bInstrumentNames));
133      InstrumentNrComboBox->setCurrentItem(pChannel->instrumentNr());          InstrumentNrComboBox->setCurrentItem(pChannel->instrumentNr());
134        
135          // MIDI input device...          // MIDI input device...
136          qsamplerDevice midiDevice(m_pChannel->mainForm(),          qsamplerDevice midiDevice(m_pChannel->mainForm(),
137                  qsamplerDevice::Midi, m_pChannel->midiDevice());                  qsamplerDevice::Midi, m_pChannel->midiDevice());
138      // MIDI input driver...          // MIDI input driver...
139          QString sMidiDriver = midiDevice.driverName();          QString sMidiDriver = midiDevice.driverName();
140          if (sMidiDriver.isEmpty() || bNew)          if (sMidiDriver.isEmpty() || bNew)
141                  sMidiDriver = pOptions->sMidiDriver;                  sMidiDriver = pOptions->sMidiDriver.upper();
142          if (!sMidiDriver.isEmpty()) {          if (!sMidiDriver.isEmpty()) {
143                  if (MidiDriverComboBox->listBox()->findItem(sMidiDriver, Qt::ExactMatch) == NULL)                  if (MidiDriverComboBox->listBox()->findItem(sMidiDriver,
144                                    Qt::ExactMatch | Qt::CaseSensitive) == NULL) {
145                          MidiDriverComboBox->insertItem(sMidiDriver);                          MidiDriverComboBox->insertItem(sMidiDriver);
146                    }
147                  MidiDriverComboBox->setCurrentText(sMidiDriver);                  MidiDriverComboBox->setCurrentText(sMidiDriver);
148          }          }
149          selectMidiDriver(sMidiDriver);          selectMidiDriverItem(sMidiDriver);
150          if (!bNew)          if (!bNew)
151                  MidiDeviceComboBox->setCurrentText(midiDevice.deviceName());                  MidiDeviceComboBox->setCurrentText(midiDevice.deviceName());
152          selectMidiDevice(MidiDeviceComboBox->currentItem());          selectMidiDeviceItem(MidiDeviceComboBox->currentItem());
153      // MIDI input port...          // MIDI input port...
154      MidiPortSpinBox->setValue(pChannel->midiPort());          MidiPortSpinBox->setValue(pChannel->midiPort());
155      // MIDI input channel...          // MIDI input channel...
156      int iMidiChannel = pChannel->midiChannel();          int iMidiChannel = pChannel->midiChannel();
157      // When new, try to suggest a sensible MIDI channel...          // When new, try to suggest a sensible MIDI channel...
158      if (iMidiChannel < 0)          if (iMidiChannel < 0)
159          iMidiChannel = (::lscp_get_channels(m_pChannel->client()) % 16);                  iMidiChannel = (::lscp_get_channels(m_pChannel->client()) % 16);
160      MidiChannelComboBox->setCurrentItem(iMidiChannel);          MidiChannelComboBox->setCurrentItem(iMidiChannel);
161    
162          // Audio output device...          // Audio output device...
163          qsamplerDevice audioDevice(m_pChannel->mainForm(),          qsamplerDevice audioDevice(m_pChannel->mainForm(),
# Line 161  void qsamplerChannelForm::setup ( qsampl Line 165  void qsamplerChannelForm::setup ( qsampl
165          // Audio output driver...          // Audio output driver...
166          QString sAudioDriver = audioDevice.driverName();          QString sAudioDriver = audioDevice.driverName();
167          if (sAudioDriver.isEmpty() || bNew)          if (sAudioDriver.isEmpty() || bNew)
168                  sAudioDriver = pOptions->sAudioDriver;                  sAudioDriver = pOptions->sAudioDriver.upper();
169          if (!sAudioDriver.isEmpty()) {          if (!sAudioDriver.isEmpty()) {
170                  if (AudioDriverComboBox->listBox()->findItem(sAudioDriver, Qt::ExactMatch) == NULL)                  if (AudioDriverComboBox->listBox()->findItem(sAudioDriver,
171                                    Qt::ExactMatch | Qt::CaseSensitive) == NULL) {
172                          AudioDriverComboBox->insertItem(sAudioDriver);                          AudioDriverComboBox->insertItem(sAudioDriver);
173                    }
174                  AudioDriverComboBox->setCurrentText(sAudioDriver);                  AudioDriverComboBox->setCurrentText(sAudioDriver);
175          }          }
176          selectAudioDriver(sAudioDriver);          selectAudioDriverItem(sAudioDriver);
177          if (!bNew)          if (!bNew)
178                  AudioDeviceComboBox->setCurrentText(audioDevice.deviceName());                  AudioDeviceComboBox->setCurrentText(audioDevice.deviceName());
179          selectAudioDevice(AudioDeviceComboBox->currentItem());          selectAudioDeviceItem(AudioDeviceComboBox->currentItem());
180    
181          // As convenient, make it ready on stabilizeForm() for          // As convenient, make it ready on stabilizeForm() for
182          // prompt acceptance, if we got the minimum required...          // prompt acceptance, if we got the minimum required...
183          if (sEngineName != qsamplerChannel::noEngineName() &&          if (sEngineName != qsamplerChannel::noEngineName() &&
184                  sInstrumentFile != qsamplerChannel::noInstrumentName())                  sInstrumentFile != qsamplerChannel::noInstrumentName())
185                  m_iDirtyCount++;                  m_iDirtyCount++;
186      // Done.          // Done.
187      m_iDirtySetup--;          m_iDirtySetup--;
188      stabilizeForm();          stabilizeForm();
189  }  }
190    
191    
192  // Accept settings (OK button slot).  // Accept settings (OK button slot).
193  void qsamplerChannelForm::accept (void)  void qsamplerChannelForm::accept (void)
194  {  {
195      if (m_pChannel == NULL)          if (m_pChannel == NULL)
196          return;                  return;
197    
198      qsamplerOptions *pOptions = m_pChannel->options();          qsamplerOptions *pOptions = m_pChannel->options();
199      if (pOptions == NULL)          if (pOptions == NULL)
200          return;                  return;
201    
202      // We'll go for it!          // We'll go for it!
203      if (m_iDirtyCount > 0) {          if (m_iDirtyCount > 0) {
204          int iErrors = 0;                  int iErrors = 0;
205          // Are we a new channel?                  // Are we a new channel?
206          if (!m_pChannel->addChannel())                  if (!m_pChannel->addChannel())
207              iErrors++;                          iErrors++;
208                  // Accept Audio driver or device selection...                  // Accept Audio driver or device selection...
209                  if (m_audioDevices.isEmpty()) {                  if (m_audioDevices.isEmpty()) {
210                          if (!m_pChannel->setAudioDriver(AudioDriverComboBox->currentText()))                          if (!m_pChannel->setAudioDriver(AudioDriverComboBox->currentText()))
# Line 221  void qsamplerChannelForm::accept (void) Line 227  void qsamplerChannelForm::accept (void)
227                          else if (!m_pChannel->setMidiDevice(pDevice->deviceID()))                          else if (!m_pChannel->setMidiDevice(pDevice->deviceID()))
228                                  iErrors++;                                  iErrors++;
229                  }                  }
230          // MIDI input port number...                  // MIDI input port number...
231          if (!m_pChannel->setMidiPort(MidiPortSpinBox->value()))                  if (!m_pChannel->setMidiPort(MidiPortSpinBox->value()))
232              iErrors++;                          iErrors++;
233          // MIDI input channel...                  // MIDI input channel...
234          if (!m_pChannel->setMidiChannel(MidiChannelComboBox->currentItem()))                  if (!m_pChannel->setMidiChannel(MidiChannelComboBox->currentItem()))
235              iErrors++;                          iErrors++;
236          // Engine name...                  // Engine name...
237          if (!m_pChannel->loadEngine(EngineNameComboBox->currentText()))                  if (!m_pChannel->loadEngine(EngineNameComboBox->currentText()))
238              iErrors++;                          iErrors++;
239          // Instrument file and index...                  // Instrument file and index...
240          if (!m_pChannel->loadInstrument(InstrumentFileComboBox->currentText(), InstrumentNrComboBox->currentItem()))                  if (!m_pChannel->loadInstrument(InstrumentFileComboBox->currentText(), InstrumentNrComboBox->currentItem()))
241              iErrors++;                          iErrors++;
242          // Show error messages?                  // Show error messages?
243          if (iErrors > 0)                  if (iErrors > 0)
244              m_pChannel->appendMessagesError(tr("Some channel settings could not be set.\n\nSorry."));                          m_pChannel->appendMessagesError(tr("Some channel settings could not be set.\n\nSorry."));
245      }          }
246    
247      // Save default engine name, instrument directory and history...          // Save default engine name, instrument directory and history...
248      pOptions->sInstrumentDir = QFileInfo(InstrumentFileComboBox->currentText()).dirPath(true);          pOptions->sInstrumentDir = QFileInfo(InstrumentFileComboBox->currentText()).dirPath(true);
249      pOptions->sEngineName  = EngineNameComboBox->currentText();          pOptions->sEngineName  = EngineNameComboBox->currentText();
250      pOptions->sAudioDriver = AudioDriverComboBox->currentText();          pOptions->sAudioDriver = AudioDriverComboBox->currentText();
251      pOptions->sMidiDriver  = MidiDriverComboBox->currentText();          pOptions->sMidiDriver  = MidiDriverComboBox->currentText();
252      pOptions->saveComboBoxHistory(InstrumentFileComboBox);          pOptions->saveComboBoxHistory(InstrumentFileComboBox);
253    
254      // Just go with dialog acceptance.          // Just go with dialog acceptance.
255      QDialog::accept();          QDialog::accept();
256  }  }
257    
258    
259  // Reject settings (Cancel button slot).  // Reject settings (Cancel button slot).
260  void qsamplerChannelForm::reject (void)  void qsamplerChannelForm::reject (void)
261  {  {
262      bool bReject = true;          bool bReject = true;
263    
264      // Check if there's any pending changes...          // Check if there's any pending changes...
265      if (m_iDirtyCount > 0 && OkPushButton->isEnabled()) {          if (m_iDirtyCount > 0 && OkPushButton->isEnabled()) {
266          switch (QMessageBox::warning(this, tr("Warning"),                  switch (QMessageBox::warning(this, tr("Warning"),
267              tr("Some channel settings have been changed.\n\n"                          tr("Some channel settings have been changed.\n\n"
268                 "Do you want to apply the changes?"),                          "Do you want to apply the changes?"),
269              tr("Apply"), tr("Discard"), tr("Cancel"))) {                          tr("Apply"), tr("Discard"), tr("Cancel"))) {
270          case 0:     // Apply...                  case 0:     // Apply...
271              accept();                          accept();
272              return;                          return;
273          case 1:     // Discard                  case 1:     // Discard
274              break;                          break;
275          default:    // Cancel.                  default:    // Cancel.
276              bReject = false;                          bReject = false;
277          }                  }
278      }          }
279    
280      if (bReject)          if (bReject)
281          QDialog::reject();                  QDialog::reject();
282  }  }
283    
284    
285  // Browse and open an instrument file.  // Browse and open an instrument file.
286  void qsamplerChannelForm::openInstrumentFile (void)  void qsamplerChannelForm::openInstrumentFile (void)
287  {  {
288      qsamplerOptions *pOptions = m_pChannel->options();          qsamplerOptions *pOptions = m_pChannel->options();
289      if (pOptions == NULL)          if (pOptions == NULL)
290          return;                  return;
291    
292      // FIXME: the instrument file filters should be restricted,          // FIXME: the instrument file filters should be restricted,
293      // depending on the current engine.          // depending on the current engine.
294      QString sInstrumentFile = QFileDialog::getOpenFileName(          QString sInstrumentFile = QFileDialog::getOpenFileName(
295              pOptions->sInstrumentDir,                   // Start here.                          pOptions->sInstrumentDir,                   // Start here.
296              tr("Instrument files") + " (*.gig *.dls)",  // Filter (GIG and DLS files)                          tr("Instrument files") + " (*.gig *.dls)",  // Filter (GIG and DLS files)
297              this, 0,                                    // Parent and name (none)                          this, 0,                                    // Parent and name (none)
298              tr("Instrument files")                      // Caption.                          tr("Instrument files")                      // Caption.
299      );          );
300    
301      if (sInstrumentFile.isEmpty())          if (sInstrumentFile.isEmpty())
302          return;                  return;
303    
304      InstrumentFileComboBox->setCurrentText(sInstrumentFile);          InstrumentFileComboBox->setCurrentText(sInstrumentFile);
305  }  }
306    
307    
308  // Refresh the actual instrument name.  // Refresh the actual instrument name.
309  void qsamplerChannelForm::updateInstrumentName (void)  void qsamplerChannelForm::updateInstrumentName (void)
310  {  {
311      qsamplerOptions *pOptions = m_pChannel->options();          qsamplerOptions *pOptions = m_pChannel->options();
312      if (pOptions == NULL)          if (pOptions == NULL)
313          return;                  return;
314    
315      // Finally this better idea would be to use libgig          // Finally this better idea would be to use libgig
316      // to retrieve the REAL instrument names.          // to retrieve the REAL instrument names.
317      InstrumentNrComboBox->clear();          InstrumentNrComboBox->clear();
318      InstrumentNrComboBox->insertStringList(          InstrumentNrComboBox->insertStringList(
319          qsamplerChannel::getInstrumentList(                  qsamplerChannel::getInstrumentList(
320                          InstrumentFileComboBox->currentText(),                          InstrumentFileComboBox->currentText(),
321                          pOptions->bInstrumentNames)                          pOptions->bInstrumentNames)
322      );          );
323    
324      optionsChanged();          optionsChanged();
325  }  }
326    
327  // Show device options dialog.  // Show device options dialog.
328  void qsamplerChannelForm::setupDevice ( qsamplerDevice *pDevice )  void qsamplerChannelForm::setupDevice ( qsamplerDevice *pDevice,
329            qsamplerDevice::qsamplerDeviceType deviceTypeMode,
330            const QString& sDriverName )
331  {  {
         if (pDevice == NULL)  
             return;  
   
332          // Create the device form if not already...          // Create the device form if not already...
333          if (m_pDeviceForm == NULL) {          if (m_pDeviceForm == NULL) {
334                  m_pDeviceForm = new qsamplerDeviceForm(this, 0,                  m_pDeviceForm = new qsamplerDeviceForm(this, 0,
335                          WType_Dialog | WShowModal);                          WType_Dialog | WShowModal);
336                  m_pDeviceForm->setMainForm(m_pChannel->mainForm());                  m_pDeviceForm->setMainForm(m_pChannel->mainForm());
337                  m_pDeviceForm->move(QDialog::pos() + QPoint(32, 32));                  QObject::connect(m_pDeviceForm, SIGNAL(devicesChanged()),
338                            this, SLOT(updateDevices()));
339          }          }
340    
341          // Refresh the device form with selected data.          // Refresh the device form with selected data.
342          if (m_pDeviceForm) {          if (m_pDeviceForm) {
343                  m_pDeviceForm->setClient(m_pChannel->client()); // <-- refreshDevices().                  m_pDeviceForm->setDeviceTypeMode(deviceTypeMode);
344                  m_pDeviceForm->setDevice(pDevice->deviceType(),                  m_pDeviceForm->setClient(m_pChannel->client()); // -> refreshDevices();
345                          pDevice->deviceID());                  m_pDeviceForm->setDevice(pDevice);
346                    m_pDeviceForm->setDriverName(sDriverName);
347                  m_pDeviceForm->show();                  m_pDeviceForm->show();
348          }          }
349  }  }
350    
351    
352  // Refresh MIDI device options.  // Refresh MIDI driver item devices.
353  void qsamplerChannelForm::selectMidiDriver ( const QString& sMidiDriver )  void qsamplerChannelForm::selectMidiDriverItem ( const QString& sMidiDriver )
354  {  {
355          const QString sDriverName = sMidiDriver.upper();          const QString sDriverName = sMidiDriver.upper();
356            
357            // Save current device id.
358            int iDeviceID = -1;
359            qsamplerDevice *pDevice = m_midiDevices.at(MidiDeviceComboBox->currentItem());
360            if (pDevice)
361                    iDeviceID = pDevice->deviceID();
362    
363            // Clean maplist.
364          MidiDeviceComboBox->clear();          MidiDeviceComboBox->clear();
365          m_audioDevices.clear();          m_midiDevices.clear();
366    
367            // Populate with the current ones...
368          const QPixmap& midiPixmap = QPixmap::fromMimeSource("midi2.png");          const QPixmap& midiPixmap = QPixmap::fromMimeSource("midi2.png");
369          int *piDeviceIDs = qsamplerDevice::getDevices(m_pChannel->client(),          int *piDeviceIDs = qsamplerDevice::getDevices(m_pChannel->client(),
370                  qsamplerDevice::Midi);                  qsamplerDevice::Midi);
371          for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; i++) {          for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; i++) {
372                  qsamplerDevice *pDevice = new qsamplerDevice(m_pChannel->mainForm(),                  pDevice = new qsamplerDevice(m_pChannel->mainForm(),
373                          qsamplerDevice::Midi, piDeviceIDs[i]);                          qsamplerDevice::Midi, piDeviceIDs[i]);
374                  if (pDevice->driverName().upper() == sDriverName) {                  if (pDevice->driverName().upper() == sDriverName) {
375                          MidiDeviceComboBox->insertItem(midiPixmap, pDevice->deviceName());                          MidiDeviceComboBox->insertItem(midiPixmap, pDevice->deviceName());
# Line 364  void qsamplerChannelForm::selectMidiDriv Line 379  void qsamplerChannelForm::selectMidiDriv
379                  }                  }
380          }          }
381    
382            // Do proper enabling...
383          bool bEnabled = !m_midiDevices.isEmpty();          bool bEnabled = !m_midiDevices.isEmpty();
384          if (!bEnabled)          if (!bEnabled) {
385                  MidiDeviceComboBox->insertItem(tr("(New MIDI device)"));                  MidiDeviceComboBox->insertItem(
386                            tr("(New MIDI %1 device)").arg(sMidiDriver));
387            } else if (iDeviceID >= 0) {
388                    // Select the previous current device...
389                    int iMidiItem = 0;
390                    for (pDevice = m_midiDevices.first();
391                                    pDevice;
392                                            pDevice = m_midiDevices.next()) {
393                            if (pDevice->deviceID() == iDeviceID) {
394                                    MidiDeviceComboBox->setCurrentItem(iMidiItem);
395                            //      selectMidiDeviceItem(iMidiItem);
396                                    break;
397                            }
398                            iMidiItem++;
399                    }
400            }
401          MidiDeviceTextLabel->setEnabled(bEnabled);          MidiDeviceTextLabel->setEnabled(bEnabled);
402          MidiDeviceComboBox->setEnabled(bEnabled);          MidiDeviceComboBox->setEnabled(bEnabled);
403          MidiDevicePushButton->setEnabled(bEnabled);  }
404    
405    
406    // Refresh MIDI device options slot.
407    void qsamplerChannelForm::selectMidiDriver ( const QString& sMidiDriver )
408    {
409            if (m_iDirtySetup > 0)
410                    return;
411    
412            selectMidiDriverItem(sMidiDriver);
413          optionsChanged();          optionsChanged();
414  }  }
415    
416    
417  // Select MIDI device options.  // Select MIDI device item.
418  void qsamplerChannelForm::selectMidiDevice ( int iMidiItem )  void qsamplerChannelForm::selectMidiDeviceItem ( int iMidiItem )
419  {  {
420          qsamplerDevice *pDevice = m_midiDevices.at(iMidiItem);          qsamplerDevice *pDevice = m_midiDevices.at(iMidiItem);
421          if (pDevice) {          if (pDevice) {
# Line 386  void qsamplerChannelForm::selectMidiDevi Line 426  void qsamplerChannelForm::selectMidiDevi
426                  if (iPorts > 0)                  if (iPorts > 0)
427                          MidiPortSpinBox->setMaxValue(iPorts - 1);                          MidiPortSpinBox->setMaxValue(iPorts - 1);
428          }          }
429    }
430    
431    
432    // Select MIDI device options slot.
433    void qsamplerChannelForm::selectMidiDevice ( int iMidiItem )
434    {
435            if (m_iDirtySetup > 0)
436                    return;
437    
438            selectMidiDeviceItem(iMidiItem);
439          optionsChanged();          optionsChanged();
440  }  }
441    
# Line 393  void qsamplerChannelForm::selectMidiDevi Line 443  void qsamplerChannelForm::selectMidiDevi
443  // MIDI device options.  // MIDI device options.
444  void qsamplerChannelForm::setupMidiDevice (void)  void qsamplerChannelForm::setupMidiDevice (void)
445  {  {
446          setupDevice(m_midiDevices.at(MidiDeviceComboBox->currentItem()));          setupDevice(m_midiDevices.at(MidiDeviceComboBox->currentItem()),
447                    qsamplerDevice::Midi, MidiDriverComboBox->currentText());
448  }  }
449    
450    
451  // Refresh Audio device options.  // Refresh Audio driver item devices.
452  void qsamplerChannelForm::selectAudioDriver ( const QString& sAudioDriver )  void qsamplerChannelForm::selectAudioDriverItem ( const QString& sAudioDriver )
453  {  {
454          const QString sDriverName = sAudioDriver.upper();          const QString sDriverName = sAudioDriver.upper();
455    
456            // Save current device id.
457            int iDeviceID = -1;
458            qsamplerDevice *pDevice = m_audioDevices.at(AudioDeviceComboBox->currentItem());
459            if (pDevice)
460                    iDeviceID = pDevice->deviceID();
461    
462            // Clean maplist.
463          AudioDeviceComboBox->clear();          AudioDeviceComboBox->clear();
464          m_audioDevices.clear();          m_audioDevices.clear();
465    
466            // Populate with the current ones...
467          const QPixmap& audioPixmap = QPixmap::fromMimeSource("audio2.png");          const QPixmap& audioPixmap = QPixmap::fromMimeSource("audio2.png");
468          int *piDeviceIDs = qsamplerDevice::getDevices(m_pChannel->client(),          int *piDeviceIDs = qsamplerDevice::getDevices(m_pChannel->client(),
469                  qsamplerDevice::Audio);                  qsamplerDevice::Audio);
470          for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; i++) {          for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; i++) {
471                  qsamplerDevice *pDevice = new qsamplerDevice(m_pChannel->mainForm(),                  pDevice = new qsamplerDevice(m_pChannel->mainForm(),
472                          qsamplerDevice::Audio, piDeviceIDs[i]);                          qsamplerDevice::Audio, piDeviceIDs[i]);
473                  if (pDevice->driverName().upper() == sDriverName) {                  if (pDevice->driverName().upper() == sDriverName) {
474                          AudioDeviceComboBox->insertItem(audioPixmap, pDevice->deviceName());                          AudioDeviceComboBox->insertItem(audioPixmap, pDevice->deviceName());
# Line 419  void qsamplerChannelForm::selectAudioDri Line 478  void qsamplerChannelForm::selectAudioDri
478                  }                  }
479          }          }
480    
481            // Do proper enabling...
482          bool bEnabled = !m_audioDevices.isEmpty();          bool bEnabled = !m_audioDevices.isEmpty();
483          if (!bEnabled)          if (!bEnabled) {
484                  AudioDeviceComboBox->insertItem(tr("(New Audio device)"));                  AudioDeviceComboBox->insertItem(
485                            tr("(New Audio %1 device)").arg(sAudioDriver));
486            } else if (iDeviceID >= 0) {
487                    // Select the previous current device...
488                    int iAudioItem = 0;
489                    for (pDevice = m_audioDevices.first();
490                                    pDevice;
491                                            pDevice = m_audioDevices.next()) {
492                            if (pDevice->deviceID() == iDeviceID) {
493                                    AudioDeviceComboBox->setCurrentItem(iAudioItem);
494                            //      selectAudioDeviceItem(iAudioItem);
495                                    break;
496                            }
497                            iAudioItem++;
498                    }
499            }
500          AudioDeviceTextLabel->setEnabled(bEnabled);          AudioDeviceTextLabel->setEnabled(bEnabled);
501          AudioDeviceComboBox->setEnabled(bEnabled);          AudioDeviceComboBox->setEnabled(bEnabled);
502          AudioDevicePushButton->setEnabled(bEnabled);  }
503    
504    
505    // Refresh Audio device options slot.
506    void qsamplerChannelForm::selectAudioDriver ( const QString& sAudioDriver )
507    {
508            if (m_iDirtySetup > 0)
509                    return;
510    
511            selectAudioDriverItem(sAudioDriver);
512          optionsChanged();          optionsChanged();
513  }  }
514    
515    
516  // Select Audio device options.  // Select Audio device item.
517  void qsamplerChannelForm::selectAudioDevice ( int iAudioItem )  void qsamplerChannelForm::selectAudioDeviceItem ( int iAudioItem )
518  {  {
519          qsamplerDevice *pDevice = m_audioDevices.at(iAudioItem);          qsamplerDevice *pDevice = m_audioDevices.at(iAudioItem);
520          if (pDevice) {          if (pDevice) {
521                  // Is there anything to do here?                  // Is there anything to do here?
522          }          }
523    }
524    
525    
526    // Select Audio device options slot.
527    void qsamplerChannelForm::selectAudioDevice ( int iAudioItem )
528    {
529            if (m_iDirtySetup > 0)
530                    return;
531    
532            selectAudioDeviceItem(iAudioItem);
533          optionsChanged();          optionsChanged();
534  }  }
535    
# Line 443  void qsamplerChannelForm::selectAudioDev Line 537  void qsamplerChannelForm::selectAudioDev
537  // Audio device options.  // Audio device options.
538  void qsamplerChannelForm::setupAudioDevice (void)  void qsamplerChannelForm::setupAudioDevice (void)
539  {  {
540          setupDevice(m_audioDevices.at(AudioDeviceComboBox->currentItem()));          setupDevice(m_audioDevices.at(AudioDeviceComboBox->currentItem()),
541                    qsamplerDevice::Audio, AudioDriverComboBox->currentText());
542    }
543    
544    
545    // UPdate all device lists slot.
546    void qsamplerChannelForm::updateDevices (void)
547    {
548            if (m_iDirtySetup > 0)
549                    return;
550    
551            selectMidiDriverItem(MidiDriverComboBox->currentText());
552            selectAudioDriverItem(AudioDriverComboBox->currentText());
553            optionsChanged();
554  }  }
555    
556    
557  // Dirty up settings.  // Dirty up settings.
558  void qsamplerChannelForm::optionsChanged (void)  void qsamplerChannelForm::optionsChanged (void)
559  {  {
560      if (m_iDirtySetup > 0)          if (m_iDirtySetup > 0)
561          return;                  return;
562    
563      m_iDirtyCount++;          m_iDirtyCount++;
564      stabilizeForm();          stabilizeForm();
565  }  }
566    
567    
568  // Stabilize current form state.  // Stabilize current form state.
569  void qsamplerChannelForm::stabilizeForm (void)  void qsamplerChannelForm::stabilizeForm (void)
570  {  {
571      const QString& sFilename = InstrumentFileComboBox->currentText();          const QString& sFilename = InstrumentFileComboBox->currentText();
572      OkPushButton->setEnabled(m_iDirtyCount > 0 && !sFilename.isEmpty() && QFileInfo(sFilename).exists());          OkPushButton->setEnabled(m_iDirtyCount > 0 && !sFilename.isEmpty() && QFileInfo(sFilename).exists());
573  }  }
574    
575    
576  // end of qsamplerChannelForm.ui.h  // end of qsamplerChannelForm.ui.h
   

Legend:
Removed from v.487  
changed lines
  Added in v.490

  ViewVC Help
Powered by ViewVC