/[svn]/qsampler/trunk/src/qsamplerDeviceForm.ui.h
ViewVC logotype

Annotation of /qsampler/trunk/src/qsamplerDeviceForm.ui.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 432 - (hide annotations) (download) (as text)
Wed Mar 9 11:33:27 2005 UTC (19 years, 1 month ago) by capela
File MIME type: text/x-c++hdr
File size: 10966 byte(s)
Device configuration table is now editable, but non-applicable yet.

1 capela 426 // qsamplerDeviceForm.ui.h
2     //
3     // ui.h extension file, included from the uic-generated form implementation.
4     /****************************************************************************
5 capela 430 Copyright (C) 2005, rncbc aka Rui Nuno Capela. All rights reserved.
6 capela 426
7     This program is free software; you can redistribute it and/or
8     modify it under the terms of the GNU General Public License
9     as published by the Free Software Foundation; either version 2
10     of the License, or (at your option) any later version.
11    
12     This program is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15     GNU General Public License for more details.
16    
17     You should have received a copy of the GNU General Public License
18     along with this program; if not, write to the Free Software
19     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20    
21     *****************************************************************************/
22    
23     #include <qmessagebox.h>
24 capela 428 #include <qfiledialog.h>
25     #include <qfileinfo.h>
26 capela 430 #include <qlistbox.h>
27 capela 426
28     #include "qsamplerMainForm.h"
29    
30     #include "config.h"
31    
32    
33     // Kind of constructor.
34     void qsamplerDeviceForm::init (void)
35     {
36 capela 431 // Initialize locals.
37     m_pMainForm = (qsamplerMainForm *) QWidget::parentWidget();
38     m_pClient = NULL;
39 capela 426 m_iDirtySetup = 0;
40 capela 431 m_iDirtyCount = 0;
41     m_iUntitled = 1;
42     m_bNewDevice = false;
43 capela 426
44 capela 431 // Try to restore normal window positioning.
45     adjustSize();
46 capela 426 }
47    
48    
49     // Kind of destructor.
50     void qsamplerDeviceForm::destroy (void)
51     {
52     }
53    
54    
55 capela 428 // Notify our parent that we're emerging.
56     void qsamplerDeviceForm::showEvent ( QShowEvent *pShowEvent )
57     {
58 capela 431 if (m_pMainForm)
59     m_pMainForm->stabilizeForm();
60 capela 428
61 capela 431 stabilizeForm();
62 capela 428
63 capela 431 QWidget::showEvent(pShowEvent);
64 capela 428 }
65    
66    
67     // Notify our parent that we're closing.
68     void qsamplerDeviceForm::hideEvent ( QHideEvent *pHideEvent )
69     {
70 capela 431 QWidget::hideEvent(pHideEvent);
71 capela 428
72 capela 431 if (m_pMainForm)
73     m_pMainForm->stabilizeForm();
74 capela 428 }
75    
76    
77 capela 426 // Device configuration dialog setup formal initializer.
78 capela 428 void qsamplerDeviceForm::setClient ( lscp_client_t *pClient )
79 capela 426 {
80 capela 428 // If it has not changed, do nothing.
81     if (m_pClient && m_pClient == pClient)
82 capela 431 return;
83 capela 426
84 capela 428 // Set new reference.
85     m_pClient = pClient;
86    
87     // OK. Do a whole refresh around.
88     refreshDevices();
89     }
90    
91    
92     // Format the displayable device configuration filename.
93     QString qsamplerDeviceForm::devicesName ( const QString& sFilename )
94     {
95 capela 431 QString sDevicesName = sFilename;
96     qsamplerOptions *pOptions = m_pMainForm->options();
97     if (pOptions) {
98     bool bCompletePath = (pOptions && pOptions->bCompletePath);
99     if (sDevicesName.isEmpty())
100     sDevicesName = tr("Untitled") + QString::number(m_iUntitled);
101     else if (!bCompletePath)
102     sDevicesName = QFileInfo(sDevicesName).fileName();
103 capela 428 }
104 capela 431 return sDevicesName;
105 capela 428 }
106 capela 426
107    
108 capela 428 // Window close event handlers.
109     bool qsamplerDeviceForm::queryClose (void)
110     {
111 capela 431 bool bQueryClose = true;
112 capela 426
113 capela 431 if (m_iDirtyCount > 0) {
114     switch (QMessageBox::warning(this, tr("Warning"),
115     tr("The device configuration has been changed.\n\n"
116     "\"%1\"\n\n"
117     "Do you want to save the changes?")
118     .arg(devicesName(m_sFilename)),
119     tr("Save"), tr("Discard"), tr("Cancel"))) {
120     case 0: // Save...
121     saveDevices();
122     // Fall thru....
123     case 1: // Discard
124     break;
125     default: // Cancel.
126     bQueryClose = false;
127     }
128     }
129 capela 426
130 capela 431 return bQueryClose;
131 capela 426 }
132    
133    
134 capela 428
135 capela 426 // Dirty up settings.
136     void qsamplerDeviceForm::contentsChanged (void)
137     {
138 capela 431 if (m_iDirtySetup > 0)
139     return;
140 capela 426
141 capela 431 m_iDirtyCount++;
142     stabilizeForm();
143 capela 426 }
144    
145    
146 capela 428 // Load device configuration slot.
147     void qsamplerDeviceForm::loadDevices (void)
148     {
149 capela 431 QString sFilename = QFileDialog::getOpenFileName(
150     m_sFilename, // Start here.
151     tr("Device Configuration files") + " (*.lscp)", // Filter (XML files)
152     this, 0, // Parent and name (none)
153     tr("Load Device Configuration") // Caption.
154     );
155 capela 428
156 capela 431 if (sFilename.isEmpty())
157     return;
158 capela 428
159 capela 431 // Check if we're going to discard safely the current one...
160     if (!queryClose())
161     return;
162 capela 428
163 capela 431 // Load it right away...
164     loadDevicesFile(sFilename);
165 capela 428 }
166    
167    
168     // Save device configuration slot.
169     void qsamplerDeviceForm::saveDevices (void)
170     {
171 capela 431 QString sFilename = QFileDialog::getSaveFileName(
172     m_sFilename, // Start here.
173     tr("Device Configuration files") + " (*.lscp)", // Filter (XML files)
174     this, 0, // Parent and name (none)
175     tr("Save Device Configuration") // Caption.
176     );
177 capela 428
178 capela 431 if (sFilename.isEmpty())
179     return;
180 capela 428
181 capela 431 // Enforce .xml extension...
182     if (QFileInfo(sFilename).extension().isEmpty())
183     sFilename += ".lscp";
184 capela 428
185 capela 431 // Save it right away...
186     saveDevicesFile(sFilename);
187 capela 428 }
188    
189    
190     // Load device configuration from file.
191     void qsamplerDeviceForm::loadDevicesFile ( const QString& sFilename )
192     {
193     //
194 capela 431 // TODO: Load device configuration from file...
195 capela 428 //
196     m_pMainForm->appendMessages("qsamplerDeviceForm::loadDevicesFile(\"" + sFilename + "\")...");
197    
198     m_sFilename = sFilename;
199     m_iDirtyCount = 0;
200    
201     refreshDevices();
202     }
203    
204    
205     // Save device configuration into file.
206     void qsamplerDeviceForm::saveDevicesFile ( const QString& sFilename )
207     {
208     //
209 capela 431 // TODO: Save device configuration into file...
210     //
211 capela 428 m_pMainForm->appendMessages("qsamplerDeviceForm::saveDevicesFile(\"" + sFilename + "\")...");
212    
213     m_sFilename = sFilename;
214     m_iDirtyCount = 0;
215     stabilizeForm();
216     }
217    
218    
219     // Create a new device from current table view.
220     void qsamplerDeviceForm::createDevice (void)
221     {
222     //
223 capela 431 // TODO: Create a new device from current table view...
224     //
225 capela 428 m_pMainForm->appendMessages("qsamplerDeviceForm::createDevice()...");
226 capela 430
227     m_iDirtyCount++;
228     stabilizeForm();
229 capela 428 }
230    
231    
232     // Update current device in table view.
233     void qsamplerDeviceForm::updateDevice (void)
234     {
235     //
236 capela 431 // TODO: Update current device in table view...
237     //
238 capela 428 m_pMainForm->appendMessages("qsamplerDeviceForm::updateDevice()...");
239 capela 430
240     m_iDirtyCount++;
241     stabilizeForm();
242 capela 428 }
243    
244    
245     // Delete current device in table view.
246     void qsamplerDeviceForm::deleteDevice (void)
247     {
248     //
249 capela 431 // TODO: Delete current device in table view...
250     //
251 capela 428 m_pMainForm->appendMessages("qsamplerDeviceForm::deleteDevice()...");
252 capela 430
253     m_iDirtyCount++;
254     stabilizeForm();
255 capela 428 }
256    
257    
258     // Refresh all device list and views.
259     void qsamplerDeviceForm::refreshDevices (void)
260     {
261 capela 431 // Avoid nested changes.
262     m_iDirtySetup++;
263 capela 428
264     //
265 capela 431 // TODO: Load device configuration data ...
266     //
267 capela 428 m_pMainForm->appendMessages("qsamplerDeviceForm::refreshDevices()");
268    
269 capela 431 DeviceListView->clear();
270     if (m_pClient) {
271 capela 429 qsamplerDeviceItem *pItem;
272     int *piDeviceIDs;
273 capela 430 // Grab and pop Audio devices...
274 capela 431 pItem = new qsamplerDeviceItem(DeviceListView, m_pClient,
275 capela 429 qsamplerDevice::Audio);
276 capela 431 if (pItem) {
277 capela 429 pItem->setText(0, tr("Audio"));
278     piDeviceIDs = qsamplerDevice::getDevices(m_pClient, qsamplerDevice::Audio);
279     for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; i++) {
280 capela 431 new qsamplerDeviceItem(pItem, m_pClient,
281 capela 429 qsamplerDevice::Audio, piDeviceIDs[i]);
282     }
283 capela 430 pItem->setOpen(true);
284 capela 428 }
285 capela 430 // Grab and pop MIDI devices...
286 capela 431 pItem = new qsamplerDeviceItem(DeviceListView, m_pClient,
287 capela 429 qsamplerDevice::Midi);
288 capela 431 if (pItem) {
289 capela 429 pItem->setText(0, tr("MIDI"));
290     piDeviceIDs = qsamplerDevice::getDevices(m_pClient, qsamplerDevice::Midi);
291     for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; i++) {
292 capela 431 new qsamplerDeviceItem(pItem, m_pClient,
293 capela 429 qsamplerDevice::Midi, piDeviceIDs[i]);
294     }
295 capela 430 pItem->setOpen(true);
296 capela 429 }
297 capela 428 }
298    
299 capela 431 // Done.
300     selectDevice();
301     m_iDirtySetup--;
302 capela 428 }
303    
304 capela 430
305     // Driver selection slot.
306     void qsamplerDeviceForm::selectDriver ( const QString& sDriverName )
307     {
308     //
309     // TODO: Driver name has changed for a new device...
310     //
311     m_pMainForm->appendMessages("qsamplerDeviceForm::selectDriver(\"" + sDriverName + "\")");
312    
313 capela 431 QListViewItem *pItem = DeviceListView->selectedItem();
314     if (pItem == NULL || pItem->rtti() != QSAMPLER_DEVICE_ITEM)
315     return;
316    
317     qsamplerDevice& device = ((qsamplerDeviceItem *) pItem)->device();
318     if (m_bNewDevice) {
319     device.setDriver(m_pClient, sDriverName);
320     m_iDirtyCount++;
321     }
322    
323     // Done.
324 capela 430 stabilizeForm();
325     }
326    
327    
328 capela 429 // Device selection slot.
329 capela 430 void qsamplerDeviceForm::selectDevice (void)
330 capela 429 {
331 capela 430 //
332     // TODO: Device selection has changed...
333     //
334     m_pMainForm->appendMessages("qsamplerDeviceForm::selectDevice()");
335 capela 428
336 capela 431 QListViewItem *pItem = DeviceListView->selectedItem();
337 capela 430 if (pItem == NULL || pItem->rtti() != QSAMPLER_DEVICE_ITEM) {
338     stabilizeForm();
339     return;
340     }
341 capela 429
342 capela 431 qsamplerDevice& device = ((qsamplerDeviceItem *) pItem)->device();
343 capela 430 m_bNewDevice = (device.deviceID() < 0);
344    
345     // Fill the device heading...
346     DeviceNameTextLabel->setText(' ' + device.deviceName());
347     DriverNameComboBox->clear();
348     DriverNameComboBox->insertStringList(
349     qsamplerDevice::getDrivers(m_pClient, device.deviceType()));
350     const QString& sDriverName = device.driverName();
351 capela 431 if (m_bNewDevice || sDriverName.isEmpty()) {
352     device.setDriver(m_pClient, DriverNameComboBox->currentText());
353     } else {
354     if (DriverNameComboBox->listBox()->findItem(sDriverName, Qt::ExactMatch) == NULL)
355     DriverNameComboBox->insertItem(sDriverName);
356     DriverNameComboBox->setCurrentText(sDriverName);
357     }
358 capela 430 DriverNameTextLabel->setEnabled(m_bNewDevice);
359     DriverNameComboBox->setEnabled(m_bNewDevice);
360    
361     // Fill the device parameter table...
362 capela 431 DeviceParamTable->refresh(device);
363 capela 430
364     // Done.
365     stabilizeForm();
366 capela 429 }
367    
368    
369 capela 432 // parameter value change slot.
370     void qsamplerDeviceForm::changeValue ( int iRow, int iCol )
371     {
372     //
373     // TODO: Device parameter change...
374     //
375     m_pMainForm->appendMessages("qsamplerDeviceForm::changeValue()");
376    
377     QListViewItem *pItem = DeviceListView->selectedItem();
378     if (pItem == NULL || pItem->rtti() != QSAMPLER_DEVICE_ITEM)
379     return;
380    
381     qsamplerDevice& device = ((qsamplerDeviceItem *) pItem)->device();
382    
383     // Table 3rd column has the parameter name;
384     qsamplerDeviceParamMap& params = device.params();
385     QString sParam = DeviceParamTable->text(iRow, 2);
386     params[sParam].value = DeviceParamTable->text(iRow, iCol);
387    
388     m_iDirtyCount++;
389     stabilizeForm();
390     }
391    
392    
393 capela 426 // Stabilize current form state.
394     void qsamplerDeviceForm::stabilizeForm (void)
395     {
396 capela 431 // Update the main caption...
397     QString sDevicesName = devicesName(m_sFilename);
398     if (m_iDirtyCount > 0)
399     sDevicesName += '*';
400     setCaption(tr("Devices - [%1]").arg(sDevicesName));
401 capela 428
402     //
403 capela 426 // TODO: Enable/disable available command buttons.
404 capela 428 //
405     m_pMainForm->appendMessages("qsamplerDeviceForm::stabilizeForm()");
406    
407 capela 431 SaveDevicesPushButton->setEnabled(m_iDirtyCount > 0);
408 capela 430
409 capela 431 QListViewItem *pItem = DeviceListView->selectedItem();
410     bool bEnabled = (pItem != NULL);
411 capela 430 DeviceNameTextLabel->setEnabled(bEnabled);
412     DriverNameTextLabel->setEnabled(bEnabled && m_bNewDevice);
413     DriverNameComboBox->setEnabled(bEnabled && m_bNewDevice);
414     DeviceParamTable->setEnabled(bEnabled);
415 capela 431 CreateDevicePushButton->setEnabled(bEnabled && (m_iDirtyCount > 0 || m_bNewDevice));
416     UpdateDevicePushButton->setEnabled(bEnabled && (m_iDirtyCount > 0 && !m_bNewDevice));
417     DeleteDevicePushButton->setEnabled(bEnabled && (m_iDirtyCount > 0 && !m_bNewDevice));
418 capela 426 }
419    
420    
421     // end of qsamplerDeviceForm.ui.h
422    

  ViewVC Help
Powered by ViewVC