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

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

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

revision 2563 by capela, Tue May 20 10:59:37 2014 UTC revision 3520 by capela, Mon Jul 1 10:53:41 2019 UTC
# Line 1  Line 1 
1  // qsamplerChannel.cpp  // qsamplerChannel.cpp
2  //  //
3  /****************************************************************************  /****************************************************************************
4     Copyright (C) 2004-2014, rncbc aka Rui Nuno Capela. All rights reserved.     Copyright (C) 2004-2019, 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 32  Line 32 
32    
33  #ifdef CONFIG_LIBGIG  #ifdef CONFIG_LIBGIG
34  #include "gig.h"  #include "gig.h"
35    #ifdef CONFIG_LIBGIG_SF2
36  #include "SF.h"  #include "SF.h"
37  #endif  #endif
38    #endif
39    
40  namespace QSampler {  namespace QSampler {
41    
# Line 235  bool Channel::setInstrument ( const QStr Line 237  bool Channel::setInstrument ( const QStr
237          m_sInstrumentFile = sInstrumentFile;          m_sInstrumentFile = sInstrumentFile;
238          m_iInstrumentNr = iInstrumentNr;          m_iInstrumentNr = iInstrumentNr;
239  #ifdef CONFIG_INSTRUMENT_NAME  #ifdef CONFIG_INSTRUMENT_NAME
240          m_sInstrumentName = QString::null;  // We'll get it, maybe later, on channel_info...          m_sInstrumentName.clear();  // We'll get it, maybe later, on channel_info...
241  #else  #else
242          m_sInstrumentName = getInstrumentName(sInstrumentFile, iInstrumentNr, true);          m_sInstrumentName = getInstrumentName(sInstrumentFile, iInstrumentNr, true);
243  #endif  #endif
# Line 630  bool Channel::updateChannelInfo (void) Line 632  bool Channel::updateChannelInfo (void)
632  #endif  #endif
633          // Some sanity checks.          // Some sanity checks.
634          if (m_sEngineName == "NONE" || m_sEngineName.isEmpty())          if (m_sEngineName == "NONE" || m_sEngineName.isEmpty())
635                  m_sEngineName = QString::null;                  m_sEngineName.clear();
636          if (m_sInstrumentFile == "NONE" || m_sInstrumentFile.isEmpty()) {          if (m_sInstrumentFile == "NONE" || m_sInstrumentFile.isEmpty()) {
637                  m_sInstrumentFile = QString::null;                  m_sInstrumentFile.clear();
638                  m_sInstrumentName = QString::null;                  m_sInstrumentName.clear();
639          }          }
640    
641          // Time for device info grabbing...          // Time for device info grabbing...
# Line 758  bool Channel::channelSetup ( QWidget *pP Line 760  bool Channel::channelSetup ( QWidget *pP
760    
761    
762  // Redirected messages output methods.  // Redirected messages output methods.
763  void Channel::appendMessages( const QString& s ) const  void Channel::appendMessages ( const QString& sText ) const
764  {  {
765          MainForm *pMainForm = MainForm::getInstance();          MainForm *pMainForm = MainForm::getInstance();
766          if (pMainForm)          if (pMainForm)
767                  pMainForm->appendMessages(channelName() + ' ' + s);                  pMainForm->appendMessages(channelName() + ' ' + sText);
768  }  }
769    
770  void Channel::appendMessagesColor( const QString& s,  void Channel::appendMessagesColor (
771          const QString& c ) const          const QString& sText, const QString& sColor ) const
772  {  {
773          MainForm *pMainForm = MainForm::getInstance();          MainForm *pMainForm = MainForm::getInstance();
774          if (pMainForm)          if (pMainForm)
775                  pMainForm->appendMessagesColor(channelName() + ' ' + s, c);                  pMainForm->appendMessagesColor(channelName() + ' ' + sText, sColor);
776  }  }
777    
778  void Channel::appendMessagesText( const QString& s ) const  void Channel::appendMessagesText ( const QString& sText ) const
779  {  {
780          MainForm *pMainForm = MainForm::getInstance();          MainForm *pMainForm = MainForm::getInstance();
781          if (pMainForm)          if (pMainForm)
782                  pMainForm->appendMessagesText(channelName() + ' ' + s);                  pMainForm->appendMessagesText(channelName() + ' ' + sText);
783  }  }
784    
785  void Channel::appendMessagesError( const QString& s ) const  void Channel::appendMessagesError ( const QString& sText ) const
786  {  {
787          MainForm *pMainForm = MainForm::getInstance();          MainForm *pMainForm = MainForm::getInstance();
788          if (pMainForm)          if (pMainForm)
789                  pMainForm->appendMessagesError(channelName() + "\n\n" + s);                  pMainForm->appendMessagesError(channelName() + "\n\n" + sText);
790  }  }
791    
792  void Channel::appendMessagesClient( const QString& s ) const  void Channel::appendMessagesClient ( const QString& sText ) const
793  {  {
794          MainForm *pMainForm = MainForm::getInstance();          MainForm *pMainForm = MainForm::getInstance();
795          if (pMainForm)          if (pMainForm)
796                  pMainForm->appendMessagesClient(channelName() + ' ' + s);                  pMainForm->appendMessagesClient(channelName() + ' ' + sText);
797  }  }
798    
799    
800  // Context menu event handler.  // Context menu event handler.
801  void Channel::contextMenuEvent( QContextMenuEvent *pEvent )  void Channel::contextMenuEvent ( QContextMenuEvent *pEvent )
802  {  {
803          MainForm *pMainForm = MainForm::getInstance();          MainForm *pMainForm = MainForm::getInstance();
804          if (pMainForm)          if (pMainForm)
# Line 830  bool Channel::isSf2InstrumentFile ( cons Line 832  bool Channel::isSf2InstrumentFile ( cons
832    
833          QFile file(sInstrumentFile);          QFile file(sInstrumentFile);
834          if (file.open(QIODevice::ReadOnly)) {          if (file.open(QIODevice::ReadOnly)) {
835                  char achHeader[8];                  char achHeader[12];
836                  if (file.read(achHeader, 8) > 0) {                  if (file.read(achHeader, 12) > 0) {
837                          bResult = (::memcmp(&achHeader[0], "RIFF", 4) == 0                          bResult = (::memcmp(&achHeader[0], "RIFF", 4) == 0
838                                          && ::memcmp(&achHeader[4], "sfbk", 4) == 0);                                          && ::memcmp(&achHeader[8], "sfbk", 4) == 0);
839                  }                  }
840                  file.close();                  file.close();
841          }          }
# Line 843  bool Channel::isSf2InstrumentFile ( cons Line 845  bool Channel::isSf2InstrumentFile ( cons
845    
846    
847  // Retrieve the instrument list of a instrument file (.gig).  // Retrieve the instrument list of a instrument file (.gig).
848  QStringList Channel::getInstrumentList(  QStringList Channel::getInstrumentList (
849          const QString& sInstrumentFile, bool bInstrumentNames )          const QString& sInstrumentFile, bool bInstrumentNames )
850  {  {
851          QStringList instlist;          QStringList instlist;
# Line 859  QStringList Channel::getInstrumentList( Line 861  QStringList Channel::getInstrumentList(
861                  if (isDlsInstrumentFile(sInstrumentFile)) {                  if (isDlsInstrumentFile(sInstrumentFile)) {
862                          RIFF::File *pRiff                          RIFF::File *pRiff
863                                  = new RIFF::File(sInstrumentFile.toUtf8().constData());                                  = new RIFF::File(sInstrumentFile.toUtf8().constData());
864                          gig::File  *pGig  = new gig::File(pRiff);                          gig::File *pGig = new gig::File(pRiff);
865                  #if HAVE_LIBGIG_SETAUTOLOAD                  #ifdef CONFIG_LIBGIG_SETAUTOLOAD
866                          // prevent sleepy response time on large .gig files                          // prevent sleepy response time on large .gig files
867                          pGig->SetAutoLoad(false);                          pGig->SetAutoLoad(false);
868                  #endif                  #endif
# Line 872  QStringList Channel::getInstrumentList( Line 874  QStringList Channel::getInstrumentList(
874                          delete pGig;                          delete pGig;
875                          delete pRiff;                          delete pRiff;
876                  }                  }
877            #ifdef CONFIG_LIBGIG_SF2
878                  else                  else
879                  if (isSf2InstrumentFile(sInstrumentFile)) {                  if (isSf2InstrumentFile(sInstrumentFile)) {
880                          RIFF::File *pRiff                          RIFF::File *pRiff
# Line 890  QStringList Channel::getInstrumentList( Line 893  QStringList Channel::getInstrumentList(
893                          delete pSf2;                          delete pSf2;
894                          delete pRiff;                          delete pRiff;
895                  }                  }
896            #endif
897          }          }
898  #endif  #endif
899    
# Line 920  QString Channel::getInstrumentName ( Line 924  QString Channel::getInstrumentName (
924                          RIFF::File *pRiff                          RIFF::File *pRiff
925                                  = new RIFF::File(sInstrumentFile.toUtf8().constData());                                  = new RIFF::File(sInstrumentFile.toUtf8().constData());
926                          gig::File *pGig = new gig::File(pRiff);                          gig::File *pGig = new gig::File(pRiff);
927                  #if HAVE_LIBGIG_SETAUTOLOAD                  #ifdef CONFIG_LIBGIG_SETAUTOLOAD
928                          // prevent sleepy response time on large .gig files                          // prevent sleepy response time on large .gig files
929                          pGig->SetAutoLoad(false);                          pGig->SetAutoLoad(false);
930                  #endif                  #endif
# Line 937  QString Channel::getInstrumentName ( Line 941  QString Channel::getInstrumentName (
941                          delete pGig;                          delete pGig;
942                          delete pRiff;                          delete pRiff;
943                  }                  }
944            #ifdef CONFIG_LIBGIG_SF2
945                  else                  else
946                  if (isSf2InstrumentFile(sInstrumentFile)) {                  if (isSf2InstrumentFile(sInstrumentFile)) {
947                          RIFF::File *pRiff                          RIFF::File *pRiff
# Line 948  QString Channel::getInstrumentName ( Line 953  QString Channel::getInstrumentName (
953                          delete pSf2;                          delete pSf2;
954                          delete pRiff;                          delete pRiff;
955                  }                  }
956            #endif
957          }          }
958  #endif  #endif
959    
# Line 1070  void ChannelRoutingModel::refresh ( Devi Line 1076  void ChannelRoutingModel::refresh ( Devi
1076          m_pDevice = pDevice;          m_pDevice = pDevice;
1077          m_routing = routing;          m_routing = routing;
1078          // inform the outer world (QTableView) that our data changed          // inform the outer world (QTableView) that our data changed
1079  #if QT_VERSION < 0x050000  #if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
1080          QAbstractTableModel::reset();          QAbstractTableModel::reset();
1081  #else  #else
1082          QAbstractTableModel::beginResetModel();          QAbstractTableModel::beginResetModel();
# Line 1104  QWidget* ChannelRoutingDelegate::createE Line 1110  QWidget* ChannelRoutingDelegate::createE
1110          pComboBox->addItems(item.options);          pComboBox->addItems(item.options);
1111          pComboBox->setCurrentIndex(item.selection);          pComboBox->setCurrentIndex(item.selection);
1112          pComboBox->setEnabled(true);          pComboBox->setEnabled(true);
1113            pComboBox->setEditable(true);
1114          pComboBox->setGeometry(option.rect);          pComboBox->setGeometry(option.rect);
1115          return pComboBox;          return pComboBox;
1116  }  }

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

  ViewVC Help
Powered by ViewVC