/[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 1499 by capela, Tue Nov 20 16:48:04 2007 UTC revision 1528 by capela, Mon Nov 26 18:24:38 2007 UTC
# Line 62  qsamplerChannel::qsamplerChannel ( int i Line 62  qsamplerChannel::qsamplerChannel ( int i
62          m_iMidiMap          = -1;          m_iMidiMap          = -1;
63          m_sAudioDriver      = "ALSA";          m_sAudioDriver      = "ALSA";
64          m_iAudioDevice      = -1;          m_iAudioDevice      = -1;
65          m_fVolume           = 0.0;          m_fVolume           = 0.0f;
66          m_bMute             = false;          m_bMute             = false;
67          m_bSolo             = false;          m_bSolo             = false;
68  }  }
# Line 707  bool qsamplerChannel::editChannel (void) Line 707  bool qsamplerChannel::editChannel (void)
707                  appendMessagesClient("lscp_edit_channel_instrument");                  appendMessagesClient("lscp_edit_channel_instrument");
708                  appendMessagesError(QObject::tr(                  appendMessagesError(QObject::tr(
709                          "Could not launch an appropriate instrument editor "                          "Could not launch an appropriate instrument editor "
710                          "for the given instrument!\n"                          "for the given instrument!\n\n"
711                          "Make sure you have an appropriate "                          "Make sure you have an appropriate "
712                          "instrument editor like 'gigedit' installed\n"                          "instrument editor like 'gigedit' installed "
713                          "and that it placed its mandatory DLL file "                          "and that it placed its mandatory DLL file "
714                          "into the sampler's plugin directory.")                          "into the sampler's plugin directory.")
715                  );                  );
# Line 724  bool qsamplerChannel::editChannel (void) Line 724  bool qsamplerChannel::editChannel (void)
724    
725          appendMessagesError(QObject::tr(          appendMessagesError(QObject::tr(
726                  "Sorry, QSampler was compiled for a version of liblscp "                  "Sorry, QSampler was compiled for a version of liblscp "
727                  "which lacks this feature.\n"                  "which lacks this feature.\n\n"
728                  "You may want to update liblscp and recompile QSampler afterwards.")                  "You may want to update liblscp and recompile QSampler afterwards.")
729          );          );
730    
# Line 835  QStringList qsamplerChannel::getInstrume Line 835  QStringList qsamplerChannel::getInstrume
835                          RIFF::File *pRiff                          RIFF::File *pRiff
836                                  = new RIFF::File(sInstrumentFile.toUtf8().constData());                                  = new RIFF::File(sInstrumentFile.toUtf8().constData());
837                          gig::File  *pGig  = new gig::File(pRiff);                          gig::File  *pGig  = new gig::File(pRiff);
838    #if HAVE_LIBGIG_SETAUTOLOAD
839                            // prevent sleepy response time on large .gig files
840                            pGig->SetAutoLoad(false);
841    #endif
842                          gig::Instrument *pInstrument = pGig->GetFirstInstrument();                          gig::Instrument *pInstrument = pGig->GetFirstInstrument();
843                          while (pInstrument) {                          while (pInstrument) {
844                                  instlist.append((pInstrument->pInfo)->Name.c_str());                                  instlist.append((pInstrument->pInfo)->Name.c_str());
# Line 867  QString qsamplerChannel::getInstrumentNa Line 871  QString qsamplerChannel::getInstrumentNa
871                          RIFF::File *pRiff                          RIFF::File *pRiff
872                                  = new RIFF::File(sInstrumentFile.toUtf8().constData());                                  = new RIFF::File(sInstrumentFile.toUtf8().constData());
873                          gig::File *pGig = new gig::File(pRiff);                          gig::File *pGig = new gig::File(pRiff);
874    #if HAVE_LIBGIG_SETAUTOLOAD
875                            // prevent sleepy response time on large .gig files
876                            pGig->SetAutoLoad(false);
877    #endif
878                          int iIndex = 0;                          int iIndex = 0;
879                          gig::Instrument *pInstrument = pGig->GetFirstInstrument();                          gig::Instrument *pInstrument = pGig->GetFirstInstrument();
880                          while (pInstrument) {                          while (pInstrument) {
# Line 910  QString qsamplerChannel::loadingInstrume Line 918  QString qsamplerChannel::loadingInstrume
918  // ChannelRoutingModel - data model for audio routing (used for QTableView)  // ChannelRoutingModel - data model for audio routing (used for QTableView)
919  //  //
920    
921  ChannelRoutingModel::ChannelRoutingModel(QObject* parent) : QAbstractTableModel(parent), pDevice(NULL) {  ChannelRoutingModel::ChannelRoutingModel ( QObject *pParent )
922            : QAbstractTableModel(pParent), m_pDevice(NULL)
923    {
924  }  }
925    
926  int ChannelRoutingModel::rowCount(const QModelIndex& /*parent*/) const {  
927      return routing.size();  int ChannelRoutingModel::rowCount ( const QModelIndex& /*parent*/) const
928    {
929            return m_routing.size();
930  }  }
931    
932  int ChannelRoutingModel::columnCount(const QModelIndex& /*parent*/) const {  
933      return 1;  int ChannelRoutingModel::columnCount ( const QModelIndex& /*parent*/) const
934    {
935            return 1;
936  }  }
937    
938  Qt::ItemFlags ChannelRoutingModel::flags(const QModelIndex& /*index*/) const {  
939      return Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled;  Qt::ItemFlags ChannelRoutingModel::flags ( const QModelIndex& /*index*/) const
940    {
941            return Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled;
942  }  }
943    
 bool ChannelRoutingModel::setData(const QModelIndex& index, const QVariant& value, int /*role*/) {  
     if (!index.isValid()) {  
         return false;  
     }  
944    
945      routing[index.row()] = value.toInt();  bool ChannelRoutingModel::setData ( const QModelIndex& index,
946            const QVariant& value, int /*role*/)
947    {
948            if (!index.isValid())
949                    return false;
950    
951      emit dataChanged(index, index);          m_routing[index.row()] = value.toInt();
952      return true;  
953            emit dataChanged(index, index);
954            return true;
955  }  }
956    
 QVariant ChannelRoutingModel::data(const QModelIndex &index, int role) const {  
     if (!index.isValid())  
         return QVariant();  
     if (role != Qt::DisplayRole)  
         return QVariant();  
     if (index.column() != 0)  
         return QVariant();  
957    
958      ChannelRoutingItem item;  QVariant ChannelRoutingModel::data ( const QModelIndex &index, int role ) const
959    {
960            if (!index.isValid())
961                    return QVariant();
962            if (role != Qt::DisplayRole)
963                    return QVariant();
964            if (index.column() != 0)
965                    return QVariant();
966    
967            ChannelRoutingItem item;
968    
969      // The common device port item list.          // The common device port item list.
970      qsamplerDevicePortList& ports = pDevice->ports();          qsamplerDevicePortList& ports = m_pDevice->ports();
971          QListIterator<qsamplerDevicePort *> iter(ports);          QListIterator<qsamplerDevicePort *> iter(ports);
972          while (iter.hasNext()) {          while (iter.hasNext()) {
973                  qsamplerDevicePort *pPort = iter.next();                  qsamplerDevicePort *pPort = iter.next();
974          item.options.append(                  item.options.append(
975              pDevice->deviceTypeName()                          m_pDevice->deviceTypeName()
976              + ' ' + pDevice->driverName()                          + ' ' + m_pDevice->driverName()
977              + ' ' + pPort->portName()                          + ' ' + pPort->portName()
978          );                  );
979      }          }
980    
981      item.selection = routing[index.row()];          item.selection = m_routing[index.row()];
982    
983      return QVariant::fromValue(item);          return QVariant::fromValue(item);
 }  
   
 QVariant ChannelRoutingModel::headerData(int section, Qt::Orientation orientation, int role) const {  
     if (role != Qt::DisplayRole) return QVariant();  
   
     switch (orientation) {  
         case Qt::Horizontal:  
             return UNICODE_RIGHT_ARROW + QObject::tr(" Device Channel");  
         case Qt::Vertical:  
             return QObject::tr("Sampler Channel ") +  
                    QString::number(section) + " " + UNICODE_RIGHT_ARROW;  
         default:  
             return QVariant();  
     }  
984  }  }
985    
986    
987    QVariant ChannelRoutingModel::headerData ( int section,
988            Qt::Orientation orientation, int role) const
989    {
990            if (role != Qt::DisplayRole)
991                    return QVariant();
992    
993            switch (orientation) {
994                    case Qt::Horizontal:
995                            return UNICODE_RIGHT_ARROW + QObject::tr(" Device Channel");
996                    case Qt::Vertical:
997                            return QObject::tr("Sampler Channel ") +
998                                    QString::number(section) + " " + UNICODE_RIGHT_ARROW;
999                    default:
1000                            return QVariant();
1001            }
1002    }
1003    
1004    
1005  void ChannelRoutingModel::refresh ( qsamplerDevice *pDevice,  void ChannelRoutingModel::refresh ( qsamplerDevice *pDevice,
1006          const qsamplerChannelRoutingMap& routing )          const qsamplerChannelRoutingMap& routing )
1007  {  {
1008      this->pDevice = pDevice;          m_pDevice = pDevice;
1009      this->routing = routing;          m_routing = routing;
1010      // inform the outer world (QTableView) that our data changed          // inform the outer world (QTableView) that our data changed
1011      QAbstractTableModel::reset();          QAbstractTableModel::reset();
1012  }  }
1013    
1014    
# Line 991  void ChannelRoutingModel::refresh ( qsam Line 1016  void ChannelRoutingModel::refresh ( qsam
1016  // ChannelRoutingDelegate - table cell renderer for audio routing  // ChannelRoutingDelegate - table cell renderer for audio routing
1017  //  //
1018    
1019  ChannelRoutingDelegate::ChannelRoutingDelegate(QObject *parent) : QItemDelegate(parent) {  ChannelRoutingDelegate::ChannelRoutingDelegate ( QObject *pParent )
1020            : QItemDelegate(pParent)
1021    {
1022  }  }
1023    
1024  QWidget* ChannelRoutingDelegate::createEditor(QWidget *parent,  
1025          const QStyleOptionViewItem & option ,  QWidget* ChannelRoutingDelegate::createEditor ( QWidget *pParent,
1026          const QModelIndex& index) const          const QStyleOptionViewItem & option, const QModelIndex& index ) const
1027  {  {
1028      if (!index.isValid()) {          if (!index.isValid())
1029          return NULL;                  return NULL;
     }  
1030    
1031      if (index.column() != 0) {          if (index.column() != 0)
1032          return NULL;                  return NULL;
     }  
1033    
1034      ChannelRoutingItem item = index.model()->data(index, Qt::DisplayRole).value<ChannelRoutingItem>();          ChannelRoutingItem item = index.model()->data(index, Qt::DisplayRole).value<ChannelRoutingItem>();
1035    
1036      QComboBox* pComboBox = new QComboBox(parent);          QComboBox* pComboBox = new QComboBox(pParent);
1037      pComboBox->addItems(item.options);          pComboBox->addItems(item.options);
1038      pComboBox->setCurrentIndex(item.selection);          pComboBox->setCurrentIndex(item.selection);
1039      pComboBox->setEnabled(true);          pComboBox->setEnabled(true);
1040      pComboBox->setGeometry(option.rect);          pComboBox->setGeometry(option.rect);
1041      return pComboBox;          return pComboBox;
1042  }  }
1043    
1044  void ChannelRoutingDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const {  
1045      ChannelRoutingItem item = index.model()->data(index, Qt::DisplayRole).value<ChannelRoutingItem>();  void ChannelRoutingDelegate::setEditorData ( QWidget *pEditor,
1046      QComboBox* comboBox = static_cast<QComboBox*>(editor);          const QModelIndex &index) const
1047      comboBox->setCurrentIndex(item.selection);  {
1048            ChannelRoutingItem item = index.model()->data(index,
1049                    Qt::DisplayRole).value<ChannelRoutingItem> ();
1050            QComboBox* pComboBox = static_cast<QComboBox*> (pEditor);
1051            pComboBox->setCurrentIndex(item.selection);
1052  }  }
1053    
1054  void ChannelRoutingDelegate::setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const {  
1055      QComboBox* comboBox = static_cast<QComboBox*>(editor);  void ChannelRoutingDelegate::setModelData ( QWidget* pEditor,
1056      model->setData(index, comboBox->currentIndex());          QAbstractItemModel *pModel, const QModelIndex& index ) const
1057    {
1058            QComboBox *pComboBox = static_cast<QComboBox*> (pEditor);
1059            pModel->setData(index, pComboBox->currentIndex());
1060  }  }
1061    
1062  void ChannelRoutingDelegate::updateEditorGeometry(QWidget *editor,  
1063          const QStyleOptionViewItem &option, const QModelIndex &/* index */) const  void ChannelRoutingDelegate::updateEditorGeometry ( QWidget *pEditor,
1064            const QStyleOptionViewItem& option, const QModelIndex &/* index */) const
1065  {  {
1066      editor->setGeometry(option.rect);          pEditor->setGeometry(option.rect);
1067  }  }
1068    
1069    
1070  // end of qsamplerChannel.cpp  // end of qsamplerChannel.cpp

Legend:
Removed from v.1499  
changed lines
  Added in v.1528

  ViewVC Help
Powered by ViewVC