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

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

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

revision 3385 by capela, Fri Dec 1 19:23:47 2017 UTC revision 3520 by capela, Mon Jul 1 10:53:41 2019 UTC
# Line 1  Line 1 
1  // qsamplerChannelForm.cpp  // qsamplerChannelForm.cpp
2  //  //
3  /****************************************************************************  /****************************************************************************
4     Copyright (C) 2004-2016, rncbc aka Rui Nuno Capela. All rights reserved.     Copyright (C) 2004-2018, rncbc aka Rui Nuno Capela. All rights reserved.
5     Copyright (C) 2007, 2008 Christian Schoenebeck     Copyright (C) 2007, 2008 Christian Schoenebeck
6    
7     This program is free software; you can redistribute it and/or     This program is free software; you can redistribute it and/or
# Line 64  ChannelForm::ChannelForm ( QWidget* pPar Line 64  ChannelForm::ChannelForm ( QWidget* pPar
64    
65          m_ui.AudioRoutingTable->setModel(&m_routingModel);          m_ui.AudioRoutingTable->setModel(&m_routingModel);
66          m_ui.AudioRoutingTable->setItemDelegate(&m_routingDelegate);          m_ui.AudioRoutingTable->setItemDelegate(&m_routingDelegate);
67  #if QT_VERSION >= 0x050000  #if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
68          m_ui.AudioRoutingTable->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);          m_ui.AudioRoutingTable->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
69  #else  #else
70          m_ui.AudioRoutingTable->horizontalHeader()->setResizeMode(0, QHeaderView::Stretch);          m_ui.AudioRoutingTable->horizontalHeader()->setResizeMode(0, QHeaderView::Stretch);
# Line 267  void ChannelForm::setup ( Channel *pChan Line 267  void ChannelForm::setup ( Channel *pChan
267          }          }
268          selectMidiDriverItem(sMidiDriver);          selectMidiDriverItem(sMidiDriver);
269          if (!bNew) {          if (!bNew) {
270                  m_ui.MidiDeviceComboBox->setItemText(                  m_ui.MidiDeviceComboBox->setCurrentIndex(
271                          m_ui.MidiDeviceComboBox->currentIndex(),                          m_ui.MidiDeviceComboBox->findData(midiDevice.deviceID()));
                         midiDevice.deviceName());  
272          }          }
273          selectMidiDeviceItem(m_ui.MidiDeviceComboBox->currentIndex());          selectMidiDeviceItem(m_ui.MidiDeviceComboBox->currentIndex());
274          // MIDI input port...          // MIDI input port...
# Line 314  void ChannelForm::setup ( Channel *pChan Line 313  void ChannelForm::setup ( Channel *pChan
313          }          }
314          selectAudioDriverItem(sAudioDriver);          selectAudioDriverItem(sAudioDriver);
315          if (!bNew) {          if (!bNew) {
316                  m_ui.AudioDeviceComboBox->setItemText(                  m_ui.AudioDeviceComboBox->setCurrentIndex(
317                          m_ui.AudioDeviceComboBox->currentIndex(),                          m_ui.AudioDeviceComboBox->findData(audioDevice.deviceID()));
                         audioDevice.deviceName());  
318          }          }
319          selectAudioDeviceItem(m_ui.AudioDeviceComboBox->currentIndex());          selectAudioDeviceItem(m_ui.AudioDeviceComboBox->currentIndex());
320    
# Line 379  void ChannelForm::accept (void) Line 377  void ChannelForm::accept (void)
377                  } else {                  } else {
378                          Device *pDevice = NULL;                          Device *pDevice = NULL;
379                          const int iAudioItem = m_ui.AudioDeviceComboBox->currentIndex();                          const int iAudioItem = m_ui.AudioDeviceComboBox->currentIndex();
380                          if (iAudioItem >= 0 && iAudioItem < m_audioDevices.count())                          if (iAudioItem >= 0) {
381                                  pDevice = m_audioDevices.at(iAudioItem);                                  const int iAudioDevice
382                                            = m_ui.AudioDeviceComboBox->itemData(iAudioItem).toInt();
383                                    pDevice = m_audioDevices.value(iAudioDevice, NULL);
384                            }
385                          ChannelRoutingMap routingMap = m_routingModel.routingMap();                          ChannelRoutingMap routingMap = m_routingModel.routingMap();
386                          if (pDevice == NULL)                          if (pDevice == NULL)
387                                  iErrors++;                                  iErrors++;
# Line 403  void ChannelForm::accept (void) Line 404  void ChannelForm::accept (void)
404                  } else {                  } else {
405                          Device *pDevice = NULL;                          Device *pDevice = NULL;
406                          const int iMidiItem = m_ui.MidiDeviceComboBox->currentIndex();                          const int iMidiItem = m_ui.MidiDeviceComboBox->currentIndex();
407                          if (iMidiItem >= 0 && iMidiItem < m_midiDevices.count())                          if (iMidiItem >= 0) {
408                                  pDevice = m_midiDevices.at(iMidiItem);                                  const int iMidiDevice
409                                            = m_ui.MidiDeviceComboBox->itemData(iMidiItem).toInt();
410                                    pDevice = m_midiDevices.value(iMidiDevice, NULL);
411                            }
412                          if (pDevice == NULL)                          if (pDevice == NULL)
413                                  iErrors++;                                  iErrors++;
414                          else if (!m_pChannel->setMidiDevice(pDevice->deviceID()))                          else if (!m_pChannel->setMidiDevice(pDevice->deviceID()))
# Line 588  void ChannelForm::selectMidiDriverItem ( Line 592  void ChannelForm::selectMidiDriverItem (
592    
593          // Save current device id.          // Save current device id.
594          int iDeviceID = 0;          int iDeviceID = 0;
         Device *pDevice = NULL;  
595          int iMidiItem = m_ui.MidiDeviceComboBox->currentIndex();          int iMidiItem = m_ui.MidiDeviceComboBox->currentIndex();
596          if (iMidiItem >= 0 && iMidiItem < m_midiDevices.count())          if (iMidiItem >= 0)
597                  pDevice = m_midiDevices.at(iMidiItem);                  iDeviceID = m_ui.MidiDeviceComboBox->itemData(iMidiItem).toInt();
         if (pDevice)  
                 iDeviceID = pDevice->deviceID();  
598    
599          // Clean maplist.          // Clean maplist.
600          m_ui.MidiDeviceComboBox->clear();          m_ui.MidiDeviceComboBox->clear();
# Line 601  void ChannelForm::selectMidiDriverItem ( Line 602  void ChannelForm::selectMidiDriverItem (
602          m_midiDevices.clear();          m_midiDevices.clear();
603    
604          // Populate with the current ones...          // Populate with the current ones...
605            Device *pDevice = NULL;
606          const QPixmap midiPixmap(":/images/midi2.png");          const QPixmap midiPixmap(":/images/midi2.png");
607          int *piDeviceIDs = Device::getDevices(pMainForm->client(), Device::Midi);          int *piDeviceIDs = Device::getDevices(pMainForm->client(), Device::Midi);
608          for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; i++) {          for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; ++i) {
609                  pDevice = new Device(Device::Midi, piDeviceIDs[i]);                  pDevice = new Device(Device::Midi, piDeviceIDs[i]);
610                  if (pDevice->driverName().toUpper() == sDriverName) {                  if (pDevice->driverName().toUpper() == sDriverName) {
611                          m_ui.MidiDeviceComboBox->insertItem(0,                          const int iMidiDevice = pDevice->deviceID();
612                            m_ui.MidiDeviceComboBox->addItem(
613                                  midiPixmap, pDevice->deviceName());                                  midiPixmap, pDevice->deviceName());
614                          m_midiDevices.append(pDevice);                          m_ui.MidiDeviceComboBox->setItemData(i, iMidiDevice);
615                            m_midiDevices.insert(iMidiDevice, pDevice);
616                            if (iMidiDevice == iDeviceID)
617                                    iMidiItem = i;
618                  } else {                  } else {
619                          delete pDevice;                          delete pDevice;
620                  }                  }
# Line 618  void ChannelForm::selectMidiDriverItem ( Line 624  void ChannelForm::selectMidiDriverItem (
624          const bool bEnabled = !m_midiDevices.isEmpty();          const bool bEnabled = !m_midiDevices.isEmpty();
625          if (bEnabled) {          if (bEnabled) {
626                  // Select the previous current device...                  // Select the previous current device...
627                  iMidiItem = 0;                  m_ui.MidiDeviceComboBox->setCurrentIndex(iMidiItem);
628                  QListIterator<Device *> iter(m_midiDevices);                  selectMidiDeviceItem(iMidiItem);
                 while (iter.hasNext()) {  
                         pDevice = iter.next();  
                         if (pDevice->deviceID() == iDeviceID) {  
                                 m_ui.MidiDeviceComboBox->setCurrentIndex(iMidiItem);  
                                 selectMidiDeviceItem(iMidiItem);  
                                 break;  
                         }  
                         iMidiItem++;  
                 }  
629          } else {          } else {
630                  m_ui.MidiDeviceComboBox->insertItem(0,                  m_ui.MidiDeviceComboBox->insertItem(0,
631                          tr("(New MIDI %1 device)").arg(sMidiDriver));                          tr("(New MIDI %1 device)").arg(sMidiDriver));
632                    m_ui.MidiDeviceComboBox->setItemData(0, -1);
633          }          }
634          m_ui.MidiDeviceTextLabel->setEnabled(bEnabled);  //      m_ui.MidiDeviceTextLabel->setEnabled(bEnabled);
635          m_ui.MidiDeviceComboBox->setEnabled(bEnabled);  //      m_ui.MidiDeviceComboBox->setEnabled(bEnabled);
636  }  }
637    
638    
# Line 653  void ChannelForm::selectMidiDriver ( con Line 651  void ChannelForm::selectMidiDriver ( con
651  void ChannelForm::selectMidiDeviceItem ( int iMidiItem )  void ChannelForm::selectMidiDeviceItem ( int iMidiItem )
652  {  {
653          Device *pDevice = NULL;          Device *pDevice = NULL;
654          if (iMidiItem >= 0 && iMidiItem < m_midiDevices.count())          if (iMidiItem >= 0) {
655                  pDevice = m_midiDevices.at(iMidiItem);                  const int iMidiDevice
656                            = m_ui.MidiDeviceComboBox->itemData(iMidiItem).toInt();
657                    pDevice = m_midiDevices.value(iMidiDevice, NULL);
658            }
659          if (pDevice) {          if (pDevice) {
660                  const DeviceParamMap& params = pDevice->params();                  const DeviceParamMap& params = pDevice->params();
661                  const int iPorts = params["PORTS"].value.toInt();                  const int iPorts = params["PORTS"].value.toInt();
# Line 682  void ChannelForm::setupMidiDevice (void) Line 683  void ChannelForm::setupMidiDevice (void)
683  {  {
684          Device *pDevice = NULL;          Device *pDevice = NULL;
685          const int iMidiItem = m_ui.MidiDeviceComboBox->currentIndex();          const int iMidiItem = m_ui.MidiDeviceComboBox->currentIndex();
686          if (iMidiItem >= 0 && iMidiItem < m_midiDevices.count())          if (iMidiItem >= 0) {
687                  pDevice = m_midiDevices.at(iMidiItem);                  const int iMidiDevice
688                            = m_ui.MidiDeviceComboBox->itemData(iMidiItem).toInt();
689                    pDevice = m_midiDevices.value(iMidiDevice, NULL);
690            }
691          setupDevice(pDevice,          setupDevice(pDevice,
692                  Device::Midi, m_ui.MidiDriverComboBox->currentText());                  Device::Midi, m_ui.MidiDriverComboBox->currentText());
693  }  }
# Line 702  void ChannelForm::selectAudioDriverItem Line 706  void ChannelForm::selectAudioDriverItem
706    
707          // Save current device id.          // Save current device id.
708          int iDeviceID = 0;          int iDeviceID = 0;
         Device *pDevice = NULL;  
709          int iAudioItem = m_ui.AudioDeviceComboBox->currentIndex();          int iAudioItem = m_ui.AudioDeviceComboBox->currentIndex();
710          if (iAudioItem >= 0 && iAudioItem < m_audioDevices.count())          if (iAudioItem >= 0)
711                  pDevice = m_audioDevices.at(iAudioItem);                  iDeviceID = m_ui.AudioDeviceComboBox->itemData(iAudioItem).toInt();
         if (pDevice)  
                 iDeviceID = pDevice->deviceID();  
712    
713          // Clean maplist.          // Clean maplist.
714          m_ui.AudioDeviceComboBox->clear();          m_ui.AudioDeviceComboBox->clear();
# Line 715  void ChannelForm::selectAudioDriverItem Line 716  void ChannelForm::selectAudioDriverItem
716          m_audioDevices.clear();          m_audioDevices.clear();
717    
718          // Populate with the current ones...          // Populate with the current ones...
719            Device *pDevice = NULL;
720          const QPixmap audioPixmap(":/images/audio2.png");          const QPixmap audioPixmap(":/images/audio2.png");
721          int *piDeviceIDs = Device::getDevices(pMainForm->client(),          int *piDeviceIDs = Device::getDevices(pMainForm->client(), Device::Audio);
722                  Device::Audio);          for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; ++i) {
         for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; i++) {  
723                  pDevice = new Device(Device::Audio, piDeviceIDs[i]);                  pDevice = new Device(Device::Audio, piDeviceIDs[i]);
724                  if (pDevice->driverName().toUpper() == sDriverName) {                  if (pDevice->driverName().toUpper() == sDriverName) {
725                          m_ui.AudioDeviceComboBox->insertItem(0,                          const int iAudioDevice = pDevice->deviceID();
726                            m_ui.AudioDeviceComboBox->addItem(
727                                  audioPixmap, pDevice->deviceName());                                  audioPixmap, pDevice->deviceName());
728                          m_audioDevices.append(pDevice);                          m_ui.AudioDeviceComboBox->setItemData(i, iAudioDevice);
729                            m_audioDevices.insert(iAudioDevice, pDevice);
730                            if (iAudioDevice == iDeviceID)
731                                    iAudioItem = i;
732                  } else {                  } else {
733                          delete pDevice;                          delete pDevice;
734                  }                  }
# Line 733  void ChannelForm::selectAudioDriverItem Line 738  void ChannelForm::selectAudioDriverItem
738          const bool bEnabled = !m_audioDevices.isEmpty();          const bool bEnabled = !m_audioDevices.isEmpty();
739          if (bEnabled) {          if (bEnabled) {
740                  // Select the previous current device...                  // Select the previous current device...
741                  iAudioItem = 0;                  m_ui.AudioDeviceComboBox->setCurrentIndex(iAudioItem);
742                  QListIterator<Device *> iter(m_audioDevices);                  selectAudioDeviceItem(iAudioItem);
                 while (iter.hasNext()) {  
                         pDevice = iter.next();  
                         if (pDevice->deviceID() == iDeviceID) {  
                                 m_ui.AudioDeviceComboBox->setCurrentIndex(iAudioItem);  
                                 selectAudioDeviceItem(iAudioItem);  
                                 break;  
                         }  
                         iAudioItem++;  
                 }  
743          } else {          } else {
744                  m_ui.AudioDeviceComboBox->insertItem(0,                  m_ui.AudioDeviceComboBox->insertItem(0,
745                          tr("(New Audio %1 device)").arg(sAudioDriver));                          tr("(New Audio %1 device)").arg(sAudioDriver));
746                  //m_ui.AudioRoutingTable->setNumRows(0);                  m_ui.AudioDeviceComboBox->setItemData(0, -1);
747          }          }
748          m_ui.AudioDeviceTextLabel->setEnabled(bEnabled);  //      m_ui.AudioDeviceTextLabel->setEnabled(bEnabled);
749          m_ui.AudioDeviceComboBox->setEnabled(bEnabled);  //      m_ui.AudioDeviceComboBox->setEnabled(bEnabled);
750          m_ui.AudioRoutingTable->setEnabled(bEnabled);          m_ui.AudioRoutingTable->setEnabled(bEnabled);
751  }  }
752    
# Line 770  void ChannelForm::selectAudioDriver ( co Line 766  void ChannelForm::selectAudioDriver ( co
766  void ChannelForm::selectAudioDeviceItem ( int iAudioItem )  void ChannelForm::selectAudioDeviceItem ( int iAudioItem )
767  {  {
768          Device *pDevice = NULL;          Device *pDevice = NULL;
769          if (iAudioItem >= 0 && iAudioItem < m_audioDevices.count())          if (iAudioItem >= 0) {
770                  pDevice = m_audioDevices.at(iAudioItem);                  const int iAudioDevice
771                            = m_ui.AudioDeviceComboBox->itemData(iAudioItem).toInt();
772                    pDevice = m_audioDevices.value(iAudioDevice, NULL);
773            }
774          if (pDevice) {          if (pDevice) {
775                  // Refresh the audio routing table.                  // Refresh the audio routing table.
776                  m_routingModel.refresh(pDevice, m_pChannel->audioRouting());                  m_routingModel.refresh(pDevice, m_pChannel->audioRouting());
# Line 797  void ChannelForm::setupAudioDevice (void Line 796  void ChannelForm::setupAudioDevice (void
796  {  {
797          Device *pDevice = NULL;          Device *pDevice = NULL;
798          const int iAudioItem = m_ui.AudioDeviceComboBox->currentIndex();          const int iAudioItem = m_ui.AudioDeviceComboBox->currentIndex();
799          if (iAudioItem >= 0 && iAudioItem < m_audioDevices.count())          if (iAudioItem >= 0) {
800                  pDevice = m_audioDevices.at(iAudioItem);                  const int iAudioDevice
801                            = m_ui.AudioDeviceComboBox->itemData(iAudioItem).toInt();
802                    pDevice = m_audioDevices.value(iAudioDevice, NULL);
803            }
804          setupDevice(pDevice,          setupDevice(pDevice,
805                  Device::Audio, m_ui.AudioDriverComboBox->currentText());                  Device::Audio, m_ui.AudioDriverComboBox->currentText());
806  }  }

Legend:
Removed from v.3385  
changed lines
  Added in v.3520

  ViewVC Help
Powered by ViewVC