/[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 430 by capela, Tue Mar 8 17:23:29 2005 UTC revision 467 by capela, Tue Mar 15 23:54:14 2005 UTC
# Line 34  Line 34 
34  // Special QListViewItem::rtti() unique return value.  // Special QListViewItem::rtti() unique return value.
35  #define QSAMPLER_DEVICE_ITEM    1001  #define QSAMPLER_DEVICE_ITEM    1001
36    
37    // Early forward declaration.
38    class qsamplerDevicePort;
39    
40    
41  //-------------------------------------------------------------------------  //-------------------------------------------------------------------------
42  // qsamplerDeviceParam - MIDI/Audio Device parameter structure.  // qsamplerDeviceParam - MIDI/Audio Device parameter structure.
# Line 42  class qsamplerDeviceParam Line 45  class qsamplerDeviceParam
45  {  {
46  public:  public:
47    
48      // Constructor.          // Constructor.
49      qsamplerDeviceParam(lscp_param_info_t *pParamInfo = NULL,          qsamplerDeviceParam(lscp_param_info_t *pParamInfo = NULL,
50                  const char *pszValue = NULL);                  const char *pszValue = NULL);
51      // Default destructor.          // Default destructor.
52      ~qsamplerDeviceParam();          ~qsamplerDeviceParam();
53    
54          // Initializer.          // Initializer.
55          void setParam(lscp_param_info_t *pParamInfo,          void setParam(lscp_param_info_t *pParamInfo,
56                  const char *pszValue = NULL);                  const char *pszValue = NULL);
57    
58      // Info structure field members.          // Info structure field members.
59      lscp_type_t type;          lscp_type_t     type;
60      QString     description;          QString         description;
61      bool        mandatory;          bool            mandatory;
62      bool        fix;          bool            fix;
63      bool        multiplicity;          bool            multiplicity;
64      QStringList depends;          QStringList depends;
65      QString     defaultv;          QString         defaultv;
66      QString     range_min;          QString         range_min;
67      QString     range_max;          QString         range_max;
68      QStringList possibilities;          QStringList possibilities;
69      // The current parameter value.          // The current parameter value.
70      QString     value;          QString         value;
71  };  };
72    
73  // A typedef'd parameter QMap.  // Typedef'd parameter QMap.
74  typedef QMap<QString, qsamplerDeviceParam> qsamplerDeviceParamMap;  typedef QMap<QString, qsamplerDeviceParam> qsamplerDeviceParamMap;
75    
76    // Typedef'd device port/channels QptrList.
77    typedef QPtrList<qsamplerDevicePort> qsamplerDevicePortList;
78    
79    
80  //-------------------------------------------------------------------------  //-------------------------------------------------------------------------
81  // qsamplerDevice - MIDI/Audio Device structure.  // qsamplerDevice - MIDI/Audio Device structure.
# Line 79  class qsamplerDevice Line 85  class qsamplerDevice
85  {  {
86  public:  public:
87    
88      // We use the same class for MIDI and audio device management          // We use the same class for MIDI and audio device management
89      enum qsamplerDeviceType { Midi, Audio };          enum qsamplerDeviceType { None, Midi, Audio };
90    
91      // Constructor.          // Constructor.
92      qsamplerDevice(lscp_client_t *pClient,          qsamplerDevice(lscp_client_t *pClient,
93                  qsamplerDeviceType deviceType, int iDeviceID = -1);                  qsamplerDeviceType deviceType, int iDeviceID = -1);
94      // Default destructor.          // Default destructor.
95      ~qsamplerDevice();          ~qsamplerDevice();
96    
97          // Initializer.          // Initializer.
98          void setDevice(lscp_client_t *pClient,          void setDevice(lscp_client_t *pClient,
99                  qsamplerDeviceType deviceType, int iDeviceID = -1);                  qsamplerDeviceType deviceType, int iDeviceID = -1);
100                    
101            // Driver name initializer.
102            void setDriver(lscp_client_t *pClient,
103                    const QString& sDriverName);
104    
105          // Device property accessors.          // Device property accessors.
106      int                 deviceID()   const;          int                 deviceID()   const;
107      qsamplerDeviceType  deviceType() const;          qsamplerDeviceType  deviceType() const;
108      const QString&      driverName() const;          const QString&      deviceTypeName() const;
109      const QString&      deviceName() const;          const QString&      driverName() const;
110            const QString&      deviceName() const;
111    
112            // Set the proper device parameter value.
113            void setParam (const QString& sParam, const QString& sValue);
114    
115          // Device parameters accessor.          // Device parameters accessor.
116          qsamplerDeviceParamMap& params();          const qsamplerDeviceParamMap& params() const;
117    
118            // Device port/channel list accessor.
119            qsamplerDevicePortList& ports();
120    
121          // Update/refresh device/driver data.          // Device parameter dependency list refreshner.
122          void refresh();          int refreshParams(lscp_client_t *pClient);
123            // Device port/channel list refreshner.
124            int refreshPorts(lscp_client_t *pClient);
125            // Refresh/set dependencies given that some parameter has changed.
126            int refreshDepends(lscp_client_t *pClient, const QString& sParam);
127    
128          // Device ids enumerator.          // Device ids enumerator.
129      static int *getDevices(lscp_client_t *pClient,          static int *getDevices(lscp_client_t *pClient,
130                  qsamplerDeviceType deviceType);                  qsamplerDeviceType deviceType);
131    
132          // Driver names enumerator.          // Driver names enumerator.
133      static QStringList getDrivers(lscp_client_t *pClient,          static QStringList getDrivers(lscp_client_t *pClient,
134                  qsamplerDeviceType deviceType);                  qsamplerDeviceType deviceType);
135    
136  private:  private:
137    
138            // Refresh/set given parameter based on driver supplied dependencies.
139            int refreshParam(lscp_client_t *pClient, const QString& sParam);
140    
141          // Instance variables.          // Instance variables.
142      int                m_iDeviceID;          int                m_iDeviceID;
143      qsamplerDeviceType m_deviceType;          qsamplerDeviceType m_deviceType;
144      QString            m_sDriverName;          QString            m_sDeviceType;
145      QString            m_sDeviceName;          QString            m_sDriverName;
146            QString            m_sDeviceName;
147    
148          // Device parameter list.          // Device parameter list.
149          qsamplerDeviceParamMap m_params;          qsamplerDeviceParamMap m_params;
150            
151            // Device port/channel list.
152            qsamplerDevicePortList m_ports;
153    };
154    
155    
156    //-------------------------------------------------------------------------
157    // qsamplerDevicePort - MIDI/Audio Device port/channel structure.
158    //
159    
160    class qsamplerDevicePort
161    {
162    public:
163    
164            // Constructor.
165            qsamplerDevicePort(lscp_client_t *pClient,
166                    const qsamplerDevice& device, int iPortID);
167            // Default destructor.
168            ~qsamplerDevicePort();
169    
170            // Initializer.
171            void setDevicePort(lscp_client_t *pClient,
172                    const qsamplerDevice& device, int iPortID);
173    
174            // Device port property accessors.
175            int            portID()   const;
176            const QString& portName() const;
177    
178            // Device port parameters accessor.
179            const qsamplerDeviceParamMap& params() const;
180    
181            // Set the proper device port/channel parameter value.
182            void setParam (const QString& sParam, const QString& sValue);
183    
184    private:
185    
186            // Instance variables.
187            int     m_iPortID;
188            QString m_sPortName;
189    
190            // Device port parameter list.
191            qsamplerDeviceParamMap m_params;
192  };  };
193    
194    
# Line 133  class qsamplerDeviceItem : public QListV Line 200  class qsamplerDeviceItem : public QListV
200  {  {
201  public:  public:
202    
203      // Constructors.          // Constructors.
204      qsamplerDeviceItem(QListView *pListView, lscp_client_t *pClient,          qsamplerDeviceItem(QListView *pListView, lscp_client_t *pClient,
205                  qsamplerDevice::qsamplerDeviceType deviceType);                  qsamplerDevice::qsamplerDeviceType deviceType);
206      qsamplerDeviceItem(QListViewItem *pItem, lscp_client_t *pClient,          qsamplerDeviceItem(QListViewItem *pItem, lscp_client_t *pClient,
207                  qsamplerDevice::qsamplerDeviceType deviceType, int iDeviceID);                  qsamplerDevice::qsamplerDeviceType deviceType, int iDeviceID);
208      // Default destructor.          // Default destructor.
209      ~qsamplerDeviceItem();          ~qsamplerDeviceItem();
210    
211      // Instance accessors.          // Instance accessors.
212      const qsamplerDevice& device();          qsamplerDevice& device();
213    
214      // To virtually distinguish between list view items.          // To virtually distinguish between list view items.
215      virtual int rtti() const;          virtual int rtti() const;
216    
217  private:  private:
218    
219      // Instance variables.          // Instance variables.
220      qsamplerDevice m_device;          qsamplerDevice m_device;
221  };  };
222    
223    
# Line 160  private: Line 227  private:
227    
228  class qsamplerDeviceParamTable : public QTable  class qsamplerDeviceParamTable : public QTable
229  {  {
230      Q_OBJECT          Q_OBJECT
231    
232  public:  public:
233    
234      // Constructor.          // Constructor.
235      qsamplerDeviceParamTable(QWidget *pParent = 0, const char *pszName = 0);          qsamplerDeviceParamTable(QWidget *pParent = 0, const char *pszName = 0);
236      // Default destructor.          // Default destructor.
237      ~qsamplerDeviceParamTable();          ~qsamplerDeviceParamTable();
238    
239      // Client/device descriptor selector.          // Common parameter table renderer.
240          void setDevice(lscp_client_t *pClient,          void refresh(const qsamplerDeviceParamMap& params, bool bEditable);
241                  qsamplerDevice::qsamplerDeviceType deviceType, int iDeviceID = -1);  };
242    
     // Client/device descriptor accessors.  
         lscp_client_t *client();  
         int deviceID();  
243    
244          // The main table refresher.  //-------------------------------------------------------------------------
245          void refresh();  // qsamplerDeviceParamTableSpinBox - Custom spin box for parameter table.
246            //
247    
248    class qsamplerDeviceParamTableSpinBox : public QTableItem
249    {
250    public:
251    
252            // Constructor.
253            qsamplerDeviceParamTableSpinBox (QTable *pTable, EditType editType,
254                    const QString& sText);
255    
256            // Public accessors.
257            void setMinValue(int iMinValue);
258            void setMaxValue(int iMaxValue);
259            void setValue(int iValue);
260    
261    protected:
262    
263            // Virtual implemetations.
264            QWidget *createEditor() const;
265            void setContentFromEditor(QWidget *pWidget);
266    
267  private:  private:
268    
269      // LSCP client/device references.          // Initial value holders.
270      lscp_client_t *m_pClient;          int m_iValue;
271      qsamplerDevice::qsamplerDeviceType m_deviceType;          int m_iMinValue;
272      int m_iDeviceID;          int m_iMaxValue;
273    };
274    
275    
276    //-------------------------------------------------------------------------
277    // qsamplerDeviceParamTableEditBox - Custom edit box for parameter table.
278    //
279    
280    class qsamplerDeviceParamTableEditBox : public QTableItem
281    {
282    public:
283    
284            // Constructor.
285            qsamplerDeviceParamTableEditBox (QTable *pTable, EditType editType,
286                    const QString& sText);
287    
288    protected:
289    
290            // Virtual implemetations.
291            QWidget *createEditor() const;
292            void setContentFromEditor(QWidget *pWidget);
293  };  };
294    
295    

Legend:
Removed from v.430  
changed lines
  Added in v.467

  ViewVC Help
Powered by ViewVC