/[svn]/qsampler/trunk/src/qsamplerDevice.h
ViewVC logotype

Diff of /qsampler/trunk/src/qsamplerDevice.h

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

revision 1508 by schoenebeck, Thu Nov 22 02:48:41 2007 UTC revision 1509 by capela, Thu Nov 22 11:10:44 2007 UTC
# Line 97  class qsamplerDevice Line 97  class qsamplerDevice
97  public:  public:
98    
99          // We use the same class for MIDI and audio device management          // We use the same class for MIDI and audio device management
100          enum qsamplerDeviceType { None, Midi, Audio };          enum DeviceType { None, Midi, Audio };
101    
102          // Constructor.          // Constructor.
103          qsamplerDevice(qsamplerDeviceType deviceType, int iDeviceID = -1);          qsamplerDevice(DeviceType deviceType, int iDeviceID = -1);
104          // Copy constructor.          // Copy constructor.
105      qsamplerDevice(const qsamplerDevice& device);          qsamplerDevice(const qsamplerDevice& device);
106          // Default destructor.          // Default destructor.
107          ~qsamplerDevice();          ~qsamplerDevice();
108    
109          // Initializer.          // Initializer.
110          void setDevice(qsamplerDeviceType deviceType, int iDeviceID = -1);          void setDevice(DeviceType deviceType, int iDeviceID = -1);
111    
112          // Driver name initializer.          // Driver name initializer.
113          void setDriver(const QString& sDriverName);          void setDriver(const QString& sDriverName);
114    
115          // Device property accessors.          // Device property accessors.
116          int                 deviceID()   const;          int            deviceID() const;
117          qsamplerDeviceType  deviceType() const;          DeviceType     deviceType() const;
118          const QString&      deviceTypeName() const;          const QString& deviceTypeName() const;
119          const QString&      driverName() const;          const QString& driverName() const;
120    
121          // Special device name formatter.          // Special device name formatter.
122          QString deviceName() const;          QString deviceName() const;
123    
# Line 149  public: Line 150  public:
150    
151          // Device ids enumerator.          // Device ids enumerator.
152          static int *getDevices(lscp_client_t *pClient,          static int *getDevices(lscp_client_t *pClient,
153                  qsamplerDeviceType deviceType);                  DeviceType deviceType);
154    
155          // Driver names enumerator.          // Driver names enumerator.
156          static QStringList getDrivers(lscp_client_t *pClient,          static QStringList getDrivers(lscp_client_t *pClient,
157                  qsamplerDeviceType deviceType);                  DeviceType deviceType);
158    
159  private:  private:
160    
161          // Refresh/set given parameter based on driver supplied dependencies.          // Refresh/set given parameter based on driver supplied dependencies.
162          int refreshParam(const QString& sParam);          int refreshParam(const QString& sParam);
163    
         // Main application form reference.  
         qsamplerMainForm  *m_pMainForm;  
   
164          // Instance variables.          // Instance variables.
165          int                m_iDeviceID;          int        m_iDeviceID;
166          qsamplerDeviceType m_deviceType;          DeviceType m_deviceType;
167          QString            m_sDeviceType;          QString    m_sDeviceType;
168          QString            m_sDriverName;          QString    m_sDriverName;
169          QString            m_sDeviceName;          QString    m_sDeviceName;
170    
171          // Device parameter list.          // Device parameter list.
172          qsamplerDeviceParamMap m_params;          qsamplerDeviceParamMap m_params;
# Line 227  class qsamplerDeviceItem : public QTreeW Line 225  class qsamplerDeviceItem : public QTreeW
225  public:  public:
226    
227          // Constructors.          // Constructors.
228          qsamplerDeviceItem(QTreeWidget* pTreeWidget,          qsamplerDeviceItem(QTreeWidget *pTreeWidget,
229                  qsamplerDevice::qsamplerDeviceType deviceType);                  qsamplerDevice::DeviceType deviceType);
230          qsamplerDeviceItem(QTreeWidgetItem* pItem,          qsamplerDeviceItem(QTreeWidgetItem *pItem,
231                  qsamplerDevice::qsamplerDeviceType deviceType, int iDeviceID);                  qsamplerDevice::DeviceType deviceType, int iDeviceID);
232          // Default destructor.          // Default destructor.
233          ~qsamplerDeviceItem();          ~qsamplerDeviceItem();
234    
# Line 244  private: Line 242  private:
242  };  };
243    
244  struct DeviceParameterRow {  struct DeviceParameterRow {
245      QString             name;          QString             name;
246      qsamplerDeviceParam param;          qsamplerDeviceParam param;
247      bool                alive; // whether these params refer to an existing device or for a device that is yet to be created          bool                alive; // whether these params refer to an existing device or for a device that is yet to be created
248  };  };
249    
250  // so we can use it i.e. through QVariant  // so we can use it i.e. through QVariant
251  Q_DECLARE_METATYPE(DeviceParameterRow)  Q_DECLARE_METATYPE(DeviceParameterRow)
252    
253    
254  //-------------------------------------------------------------------------  //-------------------------------------------------------------------------
255  // AbstractDeviceParamModel - data model base class for device parameters  // AbstractDeviceParamModel - data model base class for device parameters
256  //  //
257  class AbstractDeviceParamModel : public QAbstractTableModel {  class AbstractDeviceParamModel : public QAbstractTableModel
258          Q_OBJECT  {
259      public:          Q_OBJECT
260          AbstractDeviceParamModel(QObject* parent = 0);  
261    public:
262          // overridden methods from subclass(es)  
263          int rowCount(const QModelIndex& parent = QModelIndex()) const;          AbstractDeviceParamModel(QObject *pParent = NULL);
264          int columnCount(const QModelIndex& parent = QModelIndex() ) const;  
265          QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;          // Overridden methods from subclass(es)
266          Qt::ItemFlags flags(const QModelIndex& index) const;          int rowCount(const QModelIndex& parent = QModelIndex()) const;
267            int columnCount(const QModelIndex& parent = QModelIndex() ) const;
268          virtual void clear();          QVariant headerData(int section,
269                    Qt::Orientation orientation, int role = Qt::DisplayRole) const;
270          void refresh(const qsamplerDeviceParamMap* params, bool bEditable);          Qt::ItemFlags flags(const QModelIndex& index) const;
271    
272      protected:          virtual void clear();
273          const qsamplerDeviceParamMap* params;  
274          bool bEditable;          void refresh(const qsamplerDeviceParamMap* params, bool bEditable);
275    
276    protected:
277    
278            const qsamplerDeviceParamMap *m_params;
279            bool m_bEditable;
280  };  };
281    
282    
283  //-------------------------------------------------------------------------  //-------------------------------------------------------------------------
284  // DeviceParamModel - data model for device parameters (used for QTableView)  // DeviceParamModel - data model for device parameters (used for QTableView)
285  //  //
 class DeviceParamModel : public AbstractDeviceParamModel {  
         Q_OBJECT  
     public:  
         DeviceParamModel(QObject* parent = 0);  
   
         // overridden methods from subclass(es)  
         QVariant data(const QModelIndex &index, int role) const;  
         bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole);  
         void clear();  
286    
287      public slots:  class DeviceParamModel : public AbstractDeviceParamModel
288          void refresh(qsamplerDevice* pDevice, bool bEditable);  {
289            Q_OBJECT
290    
291    public:
292    
293            DeviceParamModel(QObject *pParent = NULL);
294    
295            // Overridden methods from subclass(es)
296            QVariant data(const QModelIndex &index, int role) const;
297            bool setData(const QModelIndex& index,
298                    const QVariant& value, int role = Qt::EditRole);
299    
300            void clear();
301    
302    public slots:
303    
304      private:          void refresh(qsamplerDevice* pDevice, bool bEditable);
305          qsamplerDevice* device;  
306    private:
307    
308            qsamplerDevice *m_device;
309  };  };
310    
311    
312  //-------------------------------------------------------------------------  //-------------------------------------------------------------------------
313  // PortParamModel - data model for port parameters (used for QTableView)  // PortParamModel - data model for port parameters (used for QTableView)
314  //  //
 class PortParamModel : public AbstractDeviceParamModel {  
         Q_OBJECT  
     public:  
         PortParamModel(QObject* parent = 0);  
   
         // overridden methods from subclass(es)  
         QVariant data(const QModelIndex &index, int role) const;  
         bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole);  
         void clear();  
315    
316      public slots:  class PortParamModel : public AbstractDeviceParamModel
317          void refresh(qsamplerDevicePort* pPort, bool bEditable);  {
318            Q_OBJECT
319    
320    public:
321    
322            PortParamModel(QObject *pParent = 0);
323    
324            // overridden methods from subclass(es)
325            QVariant data(const QModelIndex &index, int role) const;
326            bool setData(const QModelIndex& index,
327                    const QVariant& value, int role = Qt::EditRole);
328    
329            void clear();
330    
331      private:  public slots:
332          qsamplerDevicePort* port;  
333            void refresh(qsamplerDevicePort* pPort, bool bEditable);
334    
335    private:
336    
337            qsamplerDevicePort* m_port;
338  };  };
339    
340    
341  //-------------------------------------------------------------------------  //-------------------------------------------------------------------------
342  // DeviceParamDelegate - table cell renderer for device/port parameters  // DeviceParamDelegate - table cell renderer for device/port parameters
343  //  //
344  class DeviceParamDelegate : public QItemDelegate {  class DeviceParamDelegate : public QItemDelegate
345          Q_OBJECT  {
346      public:          Q_OBJECT
347          DeviceParamDelegate(QObject* parent = 0);  
348          QWidget* createEditor(QWidget* parent,  public:
349                                const QStyleOptionViewItem& option,  
350                                const QModelIndex& index) const;          DeviceParamDelegate(QObject *pParent = NULL);
351          void setEditorData(QWidget* editor, const QModelIndex& index) const;  
352          void setModelData(QWidget* editor, QAbstractItemModel* model,          QWidget* createEditor(QWidget *pParent,
353                            const QModelIndex& index) const;                  const QStyleOptionViewItem& option, const QModelIndex& index) const;
354          void updateEditorGeometry(QWidget* editor,          void setEditorData(QWidget *pEditor, const QModelIndex& index) const;
355                                    const QStyleOptionViewItem& option,          void setModelData(QWidget *pEditor, QAbstractItemModel* model,
356                                    const QModelIndex& index) const;                  const QModelIndex& index) const;
357            void updateEditorGeometry(QWidget* pEditor,
358                    const QStyleOptionViewItem& option, const QModelIndex& index) const;
359  };  };
360    
361  #endif  // __qsamplerDevice_h  #endif  // __qsamplerDevice_h

Legend:
Removed from v.1508  
changed lines
  Added in v.1509

  ViewVC Help
Powered by ViewVC