/[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 429 - (hide annotations) (download) (as text)
Tue Mar 8 14:56:05 2005 UTC (16 years, 10 months ago) by capela
File MIME type: text/x-c++hdr
File size: 8806 byte(s)
On-going with new device configuration interface.

1 capela 426 // qsamplerDeviceForm.ui.h
2     //
3     // ui.h extension file, included from the uic-generated form implementation.
4     /****************************************************************************
5     Copyright (C) 2004-2005, rncbc aka Rui Nuno Capela. All rights reserved.
6    
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 426
27     #include "qsamplerMainForm.h"
28    
29     #include "config.h"
30    
31    
32     // Kind of constructor.
33     void qsamplerDeviceForm::init (void)
34     {
35     // Initialize locals.
36 capela 428 m_pMainForm = (qsamplerMainForm *) QWidget::parentWidget();
37     m_pClient = NULL;
38 capela 426 m_iDirtySetup = 0;
39     m_iDirtyCount = 0;
40 capela 428 m_iUntitled = 1;
41 capela 426
42     // Try to restore normal window positioning.
43     adjustSize();
44     }
45    
46    
47     // Kind of destructor.
48     void qsamplerDeviceForm::destroy (void)
49     {
50     }
51    
52    
53 capela 428 // Notify our parent that we're emerging.
54     void qsamplerDeviceForm::showEvent ( QShowEvent *pShowEvent )
55     {
56     if (m_pMainForm)
57     m_pMainForm->stabilizeForm();
58    
59     stabilizeForm();
60    
61     QWidget::showEvent(pShowEvent);
62     }
63    
64    
65     // Notify our parent that we're closing.
66     void qsamplerDeviceForm::hideEvent ( QHideEvent *pHideEvent )
67     {
68     QWidget::hideEvent(pHideEvent);
69    
70     if (m_pMainForm)
71     m_pMainForm->stabilizeForm();
72     }
73    
74    
75 capela 426 // Device configuration dialog setup formal initializer.
76 capela 428 void qsamplerDeviceForm::setClient ( lscp_client_t *pClient )
77 capela 426 {
78 capela 428 // If it has not changed, do nothing.
79     if (m_pClient && m_pClient == pClient)
80     return;
81 capela 426
82 capela 428 // Set new reference.
83     m_pClient = pClient;
84    
85     // OK. Do a whole refresh around.
86     refreshDevices();
87     }
88    
89    
90     // Format the displayable device configuration filename.
91     QString qsamplerDeviceForm::devicesName ( const QString& sFilename )
92     {
93     QString sDevicesName = sFilename;
94 capela 426 qsamplerOptions *pOptions = m_pMainForm->options();
95 capela 428 if (pOptions) {
96     bool bCompletePath = (pOptions && pOptions->bCompletePath);
97     if (sDevicesName.isEmpty())
98     sDevicesName = tr("Untitled") + QString::number(m_iUntitled);
99     else if (!bCompletePath)
100     sDevicesName = QFileInfo(sDevicesName).fileName();
101     }
102     return sDevicesName;
103     }
104 capela 426
105    
106 capela 428 // Window close event handlers.
107     bool qsamplerDeviceForm::queryClose (void)
108     {
109     bool bQueryClose = true;
110 capela 426
111 capela 428 if (m_iDirtyCount > 0) {
112     switch (QMessageBox::warning(this, tr("Warning"),
113     tr("The device configuration has been changed.\n\n"
114     "\"%1\"\n\n"
115     "Do you want to save the changes?")
116     .arg(devicesName(m_sFilename)),
117     tr("Save"), tr("Discard"), tr("Cancel"))) {
118     case 0: // Save...
119     saveDevices();
120     // Fall thru....
121     case 1: // Discard
122     break;
123     default: // Cancel.
124     bQueryClose = false;
125     }
126     }
127 capela 426
128 capela 428 return bQueryClose;
129 capela 426 }
130    
131    
132 capela 428
133 capela 426 // Dirty up settings.
134     void qsamplerDeviceForm::contentsChanged (void)
135     {
136     if (m_iDirtySetup > 0)
137     return;
138    
139     m_iDirtyCount++;
140     stabilizeForm();
141     }
142    
143    
144 capela 428 // Load device configuration slot.
145     void qsamplerDeviceForm::loadDevices (void)
146     {
147     QString sFilename = QFileDialog::getOpenFileName(
148     m_sFilename, // Start here.
149     tr("Device Configuration files") + " (*.lscp)", // Filter (XML files)
150     this, 0, // Parent and name (none)
151     tr("Load Device Configuration") // Caption.
152     );
153    
154     if (sFilename.isEmpty())
155     return;
156    
157     // Check if we're going to discard safely the current one...
158     if (!queryClose())
159     return;
160    
161     // Load it right away...
162     loadDevicesFile(sFilename);
163     }
164    
165    
166     // Save device configuration slot.
167     void qsamplerDeviceForm::saveDevices (void)
168     {
169     QString sFilename = QFileDialog::getSaveFileName(
170     m_sFilename, // Start here.
171     tr("Device Configuration files") + " (*.lscp)", // Filter (XML files)
172     this, 0, // Parent and name (none)
173     tr("Save Device Configuration") // Caption.
174     );
175    
176     if (sFilename.isEmpty())
177     return;
178    
179     // Enforce .xml extension...
180     if (QFileInfo(sFilename).extension().isEmpty())
181     sFilename += ".lscp";
182    
183     // Save it right away...
184     saveDevicesFile(sFilename);
185     }
186    
187    
188     // Load device configuration from file.
189     void qsamplerDeviceForm::loadDevicesFile ( const QString& sFilename )
190     {
191     //
192     // TODO: Load device configuration from file...
193     //
194     m_pMainForm->appendMessages("qsamplerDeviceForm::loadDevicesFile(\"" + sFilename + "\")...");
195    
196     m_sFilename = sFilename;
197     m_iDirtyCount = 0;
198    
199     refreshDevices();
200     }
201    
202    
203     // Save device configuration into file.
204     void qsamplerDeviceForm::saveDevicesFile ( const QString& sFilename )
205     {
206     //
207     // TODO: Save device configuration into file...
208     //
209     m_pMainForm->appendMessages("qsamplerDeviceForm::saveDevicesFile(\"" + sFilename + "\")...");
210    
211     m_sFilename = sFilename;
212     m_iDirtyCount = 0;
213     stabilizeForm();
214     }
215    
216    
217     // Create a new device from current table view.
218     void qsamplerDeviceForm::createDevice (void)
219     {
220     //
221     // TODO: Create a new device from current table view...
222     //
223     m_pMainForm->appendMessages("qsamplerDeviceForm::createDevice()...");
224     }
225    
226    
227     // Update current device in table view.
228     void qsamplerDeviceForm::updateDevice (void)
229     {
230     //
231     // TODO: Update current device in table view...
232     //
233     m_pMainForm->appendMessages("qsamplerDeviceForm::updateDevice()...");
234     }
235    
236    
237     // Delete current device in table view.
238     void qsamplerDeviceForm::deleteDevice (void)
239     {
240     //
241     // TODO: Delete current device in table view...
242     //
243     m_pMainForm->appendMessages("qsamplerDeviceForm::deleteDevice()...");
244     }
245    
246    
247     // Refresh all device list and views.
248     void qsamplerDeviceForm::refreshDevices (void)
249     {
250     // Avoid nested changes.
251     m_iDirtySetup++;
252    
253     //
254     // TODO: Load device configuration data ...
255     //
256 capela 429
257 capela 428 m_pMainForm->appendMessages("qsamplerDeviceForm::refreshDevices()");
258    
259 capela 429 DeviceListView->clear();
260     if (m_pClient) {
261     qsamplerDeviceItem *pItem;
262     int *piDeviceIDs;
263     // Grab audio devices...
264     pItem = new qsamplerDeviceItem(DeviceListView, m_pClient,
265     qsamplerDevice::Audio);
266     if (pItem) {
267     pItem->setText(0, tr("Audio"));
268     piDeviceIDs = qsamplerDevice::getDevices(m_pClient, qsamplerDevice::Audio);
269     for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; i++) {
270     new qsamplerDeviceItem(pItem, m_pClient,
271     qsamplerDevice::Audio, piDeviceIDs[i]);
272     }
273 capela 428 }
274 capela 429 // Grab MIDI devices...
275     pItem = new qsamplerDeviceItem(DeviceListView, m_pClient,
276     qsamplerDevice::Midi);
277     if (pItem) {
278     pItem->setText(0, tr("MIDI"));
279     piDeviceIDs = qsamplerDevice::getDevices(m_pClient, qsamplerDevice::Midi);
280     for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; i++) {
281     new qsamplerDeviceItem(pItem, m_pClient,
282     qsamplerDevice::Midi, piDeviceIDs[i]);
283     }
284     }
285 capela 428 }
286    
287     // Done.
288     m_iDirtySetup--;
289     // stabilizeForm();
290     }
291    
292 capela 429 // Device selection slot.
293     void qsamplerDeviceForm::selectDevice ( QListViewItem *pItem )
294     {
295     if (pItem == NULL)
296     return;
297     if (pItem->rtti() != QSAMPLER_DEVICE_ITEM)
298     return;
299 capela 428
300 capela 429 m_pMainForm->appendMessages("qsamplerDeviceForm::selectDevice(" + pItem->text(0) + ")");
301    
302     const qsamplerDevice& device = ((qsamplerDeviceItem *) pItem)->device();
303     DeviceParamTable->setDevice(m_pClient,
304     device.deviceType(), device.deviceID());
305     }
306    
307    
308 capela 426 // Stabilize current form state.
309     void qsamplerDeviceForm::stabilizeForm (void)
310     {
311 capela 428 // Update the main caption...
312     QString sDevicesName = devicesName(m_sFilename);
313     if (m_iDirtyCount > 0)
314     sDevicesName += '*';
315     setCaption(tr("Devices - [%1]").arg(sDevicesName));
316    
317     //
318 capela 426 // TODO: Enable/disable available command buttons.
319 capela 428 //
320     m_pMainForm->appendMessages("qsamplerDeviceForm::stabilizeForm()");
321    
322     SaveDevicesPushButton->setEnabled(m_iDirtyCount > 0);
323    
324     CreateDevicePushButton->setEnabled(m_iDirtyCount > 0);
325     UpdateDevicePushButton->setEnabled(m_iDirtyCount > 0);
326     DeleteDevicePushButton->setEnabled(m_iDirtyCount > 0);
327 capela 426 }
328    
329    
330     // end of qsamplerDeviceForm.ui.h
331    

  ViewVC Help
Powered by ViewVC