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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 462 - (hide annotations) (download) (as text)
Tue Mar 15 11:39:12 2005 UTC (19 years, 1 month ago) by capela
File MIME type: text/x-c++hdr
File size: 6897 byte(s)
Device port/channel configuration preparations.

1 capela 426 // qsamplerDevice.h
2     //
3     /****************************************************************************
4 capela 430 Copyright (C) 2005, rncbc aka Rui Nuno Capela. All rights reserved.
5 capela 426
6     This program is free software; you can redistribute it and/or
7     modify it under the terms of the GNU General Public License
8     as published by the Free Software Foundation; either version 2
9     of the License, or (at your option) any later version.
10    
11     This program is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14     GNU General Public License for more details.
15    
16     You should have received a copy of the GNU General Public License
17     along with this program; if not, write to the Free Software
18     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19    
20     *****************************************************************************/
21    
22     #ifndef __qsamplerDevice_h
23     #define __qsamplerDevice_h
24    
25 capela 429 #include <qlistview.h>
26 capela 426 #include <qtable.h>
27    
28     #include <lscp/client.h>
29     #include <lscp/device.h>
30    
31     #include "qsamplerOptions.h"
32    
33    
34 capela 430 // Special QListViewItem::rtti() unique return value.
35 capela 429 #define QSAMPLER_DEVICE_ITEM 1001
36    
37    
38 capela 426 //-------------------------------------------------------------------------
39 capela 429 // qsamplerDeviceParam - MIDI/Audio Device parameter structure.
40 capela 426 //
41 capela 429 class qsamplerDeviceParam
42     {
43     public:
44 capela 426
45 capela 431 // Constructor.
46     qsamplerDeviceParam(lscp_param_info_t *pParamInfo = NULL,
47 capela 429 const char *pszValue = NULL);
48 capela 431 // Default destructor.
49     ~qsamplerDeviceParam();
50 capela 429
51     // Initializer.
52     void setParam(lscp_param_info_t *pParamInfo,
53     const char *pszValue = NULL);
54    
55 capela 431 // Info structure field members.
56     lscp_type_t type;
57     QString description;
58     bool mandatory;
59     bool fix;
60     bool multiplicity;
61     QStringList depends;
62     QString defaultv;
63     QString range_min;
64     QString range_max;
65     QStringList possibilities;
66     // The current parameter value.
67     QString value;
68 capela 429 };
69    
70     // A typedef'd parameter QMap.
71     typedef QMap<QString, qsamplerDeviceParam> qsamplerDeviceParamMap;
72    
73    
74     //-------------------------------------------------------------------------
75     // qsamplerDevice - MIDI/Audio Device structure.
76     //
77    
78     class qsamplerDevice
79 capela 426 {
80 capela 429 public:
81    
82 capela 431 // We use the same class for MIDI and audio device management
83 capela 436 enum qsamplerDeviceType { None, Midi, Audio };
84 capela 429
85 capela 431 // Constructor.
86     qsamplerDevice(lscp_client_t *pClient,
87 capela 429 qsamplerDeviceType deviceType, int iDeviceID = -1);
88 capela 431 // Default destructor.
89     ~qsamplerDevice();
90 capela 429
91     // Initializer.
92     void setDevice(lscp_client_t *pClient,
93     qsamplerDeviceType deviceType, int iDeviceID = -1);
94 capela 431
95     // Driver name initializer.
96     void setDriver(lscp_client_t *pClient,
97     const QString& sDriverName);
98    
99 capela 429 // Device property accessors.
100 capela 431 int deviceID() const;
101     qsamplerDeviceType deviceType() const;
102 capela 433 const QString& deviceTypeName() const;
103 capela 431 const QString& driverName() const;
104     const QString& deviceName() const;
105 capela 429
106     // Device parameters accessor.
107 capela 462 const qsamplerDeviceParamMap& params() const;
108 capela 429
109 capela 462 // Set the proper device parameter value.
110     void setParam (const QString& sParam, const QString& sValue);
111 capela 429
112 capela 430 // Device ids enumerator.
113 capela 431 static int *getDevices(lscp_client_t *pClient,
114 capela 429 qsamplerDeviceType deviceType);
115    
116 capela 430 // Driver names enumerator.
117 capela 431 static QStringList getDrivers(lscp_client_t *pClient,
118 capela 430 qsamplerDeviceType deviceType);
119    
120 capela 429 private:
121    
122     // Instance variables.
123 capela 431 int m_iDeviceID;
124     qsamplerDeviceType m_deviceType;
125 capela 433 QString m_sDeviceType;
126 capela 431 QString m_sDriverName;
127     QString m_sDeviceName;
128 capela 429
129     // Device parameter list.
130     qsamplerDeviceParamMap m_params;
131     };
132    
133    
134     //-------------------------------------------------------------------------
135 capela 462 // qsamplerDevicePort - MIDI/Audio Device port/channel structure.
136     //
137    
138     class qsamplerDevicePort
139     {
140     public:
141    
142     // Constructor.
143     qsamplerDevicePort(lscp_client_t *pClient,
144     const qsamplerDevice& device, int iPortID);
145     // Default destructor.
146     ~qsamplerDevicePort();
147    
148     // Initializer.
149     void setDevicePort(lscp_client_t *pClient,
150     const qsamplerDevice& device, int iPortID);
151    
152     // Device port property accessors.
153     int portID() const;
154     const QString& portName() const;
155    
156     // Device port parameters accessor.
157     const qsamplerDeviceParamMap& params() const;
158    
159     // Set the proper device port/channel parameter value.
160     void setParam (const QString& sParam, const QString& sValue);
161    
162     private:
163    
164     // Instance variables.
165     int m_iPortID;
166     QString m_sPortName;
167    
168     // Device port parameter list.
169     qsamplerDeviceParamMap m_params;
170     };
171    
172    
173     //-------------------------------------------------------------------------
174 capela 429 // qsamplerDeviceItem - QListView device item.
175     //
176    
177     class qsamplerDeviceItem : public QListViewItem
178     {
179     public:
180    
181 capela 431 // Constructors.
182     qsamplerDeviceItem(QListView *pListView, lscp_client_t *pClient,
183 capela 429 qsamplerDevice::qsamplerDeviceType deviceType);
184 capela 431 qsamplerDeviceItem(QListViewItem *pItem, lscp_client_t *pClient,
185 capela 429 qsamplerDevice::qsamplerDeviceType deviceType, int iDeviceID);
186 capela 431 // Default destructor.
187     ~qsamplerDeviceItem();
188 capela 429
189 capela 431 // Instance accessors.
190     qsamplerDevice& device();
191 capela 429
192 capela 431 // To virtually distinguish between list view items.
193     virtual int rtti() const;
194 capela 429
195     private:
196    
197 capela 431 // Instance variables.
198     qsamplerDevice m_device;
199 capela 429 };
200    
201    
202     //-------------------------------------------------------------------------
203     // qsamplerDeviceParamTable - Device parameter view table.
204     //
205    
206     class qsamplerDeviceParamTable : public QTable
207     {
208 capela 431 Q_OBJECT
209 capela 426
210     public:
211    
212 capela 431 // Constructor.
213     qsamplerDeviceParamTable(QWidget *pParent = 0, const char *pszName = 0);
214     // Default destructor.
215     ~qsamplerDeviceParamTable();
216 capela 426
217 capela 462 // Common parameter table renderer.
218     void refresh(const qsamplerDeviceParamMap& params, bool bEditable);
219 capela 426 };
220    
221    
222 capela 442 //-------------------------------------------------------------------------
223     // qsamplerDeviceParamTableSpinBox - Custom spin box for parameter table.
224     //
225    
226     class qsamplerDeviceParamTableSpinBox : public QTableItem
227     {
228     public:
229    
230     // Constructor.
231 capela 447 qsamplerDeviceParamTableSpinBox (QTable *pTable, EditType editType,
232     const QString& sText);
233 capela 442
234     // Public accessors.
235     void setMinValue(int iMinValue);
236     void setMaxValue(int iMaxValue);
237     void setValue(int iValue);
238    
239     protected:
240    
241     // Virtual implemetations.
242     QWidget *createEditor() const;
243     void setContentFromEditor(QWidget *pWidget);
244    
245     private:
246    
247     // Initial value holders.
248 capela 447 int m_iValue;
249 capela 442 int m_iMinValue;
250     int m_iMaxValue;
251     };
252    
253    
254     //-------------------------------------------------------------------------
255     // qsamplerDeviceParamTableEditBox - Custom edit box for parameter table.
256     //
257    
258     class qsamplerDeviceParamTableEditBox : public QTableItem
259     {
260     public:
261    
262     // Constructor.
263     qsamplerDeviceParamTableEditBox (QTable *pTable, EditType editType,
264     const QString& sText);
265    
266     protected:
267    
268     // Virtual implemetations.
269     QWidget *createEditor() const;
270     void setContentFromEditor(QWidget *pWidget);
271     };
272    
273    
274 capela 426 #endif // __qsamplerDevice_h
275    
276    
277     // end of qsamplerDevice.h

  ViewVC Help
Powered by ViewVC