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

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

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

revision 428 by capela, Mon Mar 7 17:05:55 2005 UTC revision 431 by capela, Tue Mar 8 20:12:08 2005 UTC
# Line 2  Line 2 
2  //  //
3  // ui.h extension file, included from the uic-generated form implementation.  // 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.     Copyright (C) 2005, rncbc aka Rui Nuno Capela. All rights reserved.
6    
7     This program is free software; you can redistribute it and/or     This program is free software; you can redistribute it and/or
8     modify it under the terms of the GNU General Public License     modify it under the terms of the GNU General Public License
# Line 23  Line 23 
23  #include <qmessagebox.h>  #include <qmessagebox.h>
24  #include <qfiledialog.h>  #include <qfiledialog.h>
25  #include <qfileinfo.h>  #include <qfileinfo.h>
26    #include <qlistbox.h>
27    
28  #include "qsamplerMainForm.h"  #include "qsamplerMainForm.h"
29    
# Line 32  Line 33 
33  // Kind of constructor.  // Kind of constructor.
34  void qsamplerDeviceForm::init (void)  void qsamplerDeviceForm::init (void)
35  {  {
36      // Initialize locals.          // Initialize locals.
37      m_pMainForm   = (qsamplerMainForm *) QWidget::parentWidget();          m_pMainForm   = (qsamplerMainForm *) QWidget::parentWidget();
38      m_pClient     = NULL;          m_pClient     = NULL;
39          m_iDirtySetup = 0;          m_iDirtySetup = 0;
40      m_iDirtyCount = 0;          m_iDirtyCount = 0;
41      m_iUntitled   = 1;          m_iUntitled   = 1;
42            m_bNewDevice  = false;
43    
44      // Try to restore normal window positioning.          // Try to restore normal window positioning.
45      adjustSize();          adjustSize();
46  }  }
47    
48    
# Line 53  void qsamplerDeviceForm::destroy (void) Line 55  void qsamplerDeviceForm::destroy (void)
55  // Notify our parent that we're emerging.  // Notify our parent that we're emerging.
56  void qsamplerDeviceForm::showEvent ( QShowEvent *pShowEvent )  void qsamplerDeviceForm::showEvent ( QShowEvent *pShowEvent )
57  {  {
58      if (m_pMainForm)          if (m_pMainForm)
59          m_pMainForm->stabilizeForm();                  m_pMainForm->stabilizeForm();
60    
61      stabilizeForm();          stabilizeForm();
62    
63      QWidget::showEvent(pShowEvent);          QWidget::showEvent(pShowEvent);
64  }  }
65    
66    
67  // Notify our parent that we're closing.  // Notify our parent that we're closing.
68  void qsamplerDeviceForm::hideEvent ( QHideEvent *pHideEvent )  void qsamplerDeviceForm::hideEvent ( QHideEvent *pHideEvent )
69  {  {
70      QWidget::hideEvent(pHideEvent);          QWidget::hideEvent(pHideEvent);
71    
72      if (m_pMainForm)          if (m_pMainForm)
73          m_pMainForm->stabilizeForm();                  m_pMainForm->stabilizeForm();
74  }  }
75    
76    
# Line 77  void qsamplerDeviceForm::setClient ( lsc Line 79  void qsamplerDeviceForm::setClient ( lsc
79  {  {
80          // If it has not changed, do nothing.          // If it has not changed, do nothing.
81          if (m_pClient && m_pClient == pClient)          if (m_pClient && m_pClient == pClient)
82              return;                  return;
83    
84          // Set new reference.          // Set new reference.
85          m_pClient = pClient;          m_pClient = pClient;
86                    
         // Set our main client reference.  
     DeviceParameterTable->setClient(m_pClient);  
   
87          // OK. Do a whole refresh around.          // OK. Do a whole refresh around.
88          refreshDevices();          refreshDevices();
89  }  }
# Line 93  void qsamplerDeviceForm::setClient ( lsc Line 92  void qsamplerDeviceForm::setClient ( lsc
92  // Format the displayable device configuration filename.  // Format the displayable device configuration filename.
93  QString qsamplerDeviceForm::devicesName ( const QString& sFilename )  QString qsamplerDeviceForm::devicesName ( const QString& sFilename )
94  {  {
95      QString sDevicesName = sFilename;          QString sDevicesName = sFilename;
96      qsamplerOptions *pOptions = m_pMainForm->options();          qsamplerOptions *pOptions = m_pMainForm->options();
97      if (pOptions) {          if (pOptions) {
98          bool bCompletePath = (pOptions && pOptions->bCompletePath);                  bool bCompletePath = (pOptions && pOptions->bCompletePath);
99          if (sDevicesName.isEmpty())                  if (sDevicesName.isEmpty())
100                  sDevicesName = tr("Untitled") + QString::number(m_iUntitled);                          sDevicesName = tr("Untitled") + QString::number(m_iUntitled);
101          else if (!bCompletePath)                  else if (!bCompletePath)
102                  sDevicesName = QFileInfo(sDevicesName).fileName();                          sDevicesName = QFileInfo(sDevicesName).fileName();
103          }          }
104      return sDevicesName;          return sDevicesName;
105  }  }
106    
107    
108  // Window close event handlers.  // Window close event handlers.
109  bool qsamplerDeviceForm::queryClose (void)  bool qsamplerDeviceForm::queryClose (void)
110  {  {
111      bool bQueryClose = true;          bool bQueryClose = true;
112    
113      if (m_iDirtyCount > 0) {          if (m_iDirtyCount > 0) {
114          switch (QMessageBox::warning(this, tr("Warning"),                  switch (QMessageBox::warning(this, tr("Warning"),
115              tr("The device configuration has been changed.\n\n"                          tr("The device configuration has been changed.\n\n"
116                 "\"%1\"\n\n"                          "\"%1\"\n\n"
117                 "Do you want to save the changes?")                          "Do you want to save the changes?")
118                             .arg(devicesName(m_sFilename)),                          .arg(devicesName(m_sFilename)),
119              tr("Save"), tr("Discard"), tr("Cancel"))) {                          tr("Save"), tr("Discard"), tr("Cancel"))) {
120          case 0:     // Save...                  case 0:     // Save...
121              saveDevices();                          saveDevices();
122              // Fall thru....                          // Fall thru....
123          case 1:     // Discard                  case 1:     // Discard
124              break;                          break;
125          default:    // Cancel.                  default:    // Cancel.
126              bQueryClose = false;                          bQueryClose = false;
127          }                  }
128      }          }
129    
130      return bQueryClose;          return bQueryClose;
131  }  }
132    
133    
# Line 136  bool qsamplerDeviceForm::queryClose (voi Line 135  bool qsamplerDeviceForm::queryClose (voi
135  // Dirty up settings.  // Dirty up settings.
136  void qsamplerDeviceForm::contentsChanged (void)  void qsamplerDeviceForm::contentsChanged (void)
137  {  {
138      if (m_iDirtySetup > 0)          if (m_iDirtySetup > 0)
139          return;                  return;
140    
141      m_iDirtyCount++;          m_iDirtyCount++;
142      stabilizeForm();          stabilizeForm();
143  }  }
144    
145    
146  // Load device configuration slot.  // Load device configuration slot.
147  void qsamplerDeviceForm::loadDevices (void)  void qsamplerDeviceForm::loadDevices (void)
148  {  {
149      QString sFilename = QFileDialog::getOpenFileName(          QString sFilename = QFileDialog::getOpenFileName(
150              m_sFilename,                                    // Start here.                          m_sFilename,                                    // Start here.
151              tr("Device Configuration files") + " (*.lscp)", // Filter (XML files)                          tr("Device Configuration files") + " (*.lscp)", // Filter (XML files)
152              this, 0,                                        // Parent and name (none)                          this, 0,                                        // Parent and name (none)
153              tr("Load Device Configuration")                 // Caption.                          tr("Load Device Configuration")                 // Caption.
154      );          );
155    
156      if (sFilename.isEmpty())          if (sFilename.isEmpty())
157          return;                  return;
158    
159      // Check if we're going to discard safely the current one...          // Check if we're going to discard safely the current one...
160      if (!queryClose())          if (!queryClose())
161          return;                  return;
162    
163      // Load it right away...          // Load it right away...
164      loadDevicesFile(sFilename);          loadDevicesFile(sFilename);
165  }  }
166    
167    
168  // Save device configuration slot.  // Save device configuration slot.
169  void qsamplerDeviceForm::saveDevices (void)  void qsamplerDeviceForm::saveDevices (void)
170  {  {
171      QString sFilename = QFileDialog::getSaveFileName(          QString sFilename = QFileDialog::getSaveFileName(
172              m_sFilename,                                    // Start here.                          m_sFilename,                                    // Start here.
173              tr("Device Configuration files") + " (*.lscp)", // Filter (XML files)                          tr("Device Configuration files") + " (*.lscp)", // Filter (XML files)
174              this, 0,                                        // Parent and name (none)                          this, 0,                                        // Parent and name (none)
175              tr("Save Device Configuration")                 // Caption.                          tr("Save Device Configuration")                 // Caption.
176      );          );
177    
178      if (sFilename.isEmpty())          if (sFilename.isEmpty())
179          return;                  return;
180    
181      // Enforce .xml extension...          // Enforce .xml extension...
182      if (QFileInfo(sFilename).extension().isEmpty())          if (QFileInfo(sFilename).extension().isEmpty())
183          sFilename += ".lscp";                  sFilename += ".lscp";
184    
185      // Save it right away...          // Save it right away...
186      saveDevicesFile(sFilename);          saveDevicesFile(sFilename);
187  }  }
188    
189    
# Line 192  void qsamplerDeviceForm::saveDevices (vo Line 191  void qsamplerDeviceForm::saveDevices (vo
191  void qsamplerDeviceForm::loadDevicesFile ( const QString& sFilename )  void qsamplerDeviceForm::loadDevicesFile ( const QString& sFilename )
192  {  {
193          //          //
194      // TODO: Load device configuration from file...          // TODO: Load device configuration from file...
195          //          //
196          m_pMainForm->appendMessages("qsamplerDeviceForm::loadDevicesFile(\"" + sFilename + "\")...");          m_pMainForm->appendMessages("qsamplerDeviceForm::loadDevicesFile(\"" + sFilename + "\")...");
197    
# Line 207  void qsamplerDeviceForm::loadDevicesFile Line 206  void qsamplerDeviceForm::loadDevicesFile
206  void qsamplerDeviceForm::saveDevicesFile ( const QString& sFilename )  void qsamplerDeviceForm::saveDevicesFile ( const QString& sFilename )
207  {  {
208          //          //
209      // TODO: Save device configuration into file...          // TODO: Save device configuration into file...
210      //          //
211          m_pMainForm->appendMessages("qsamplerDeviceForm::saveDevicesFile(\"" + sFilename + "\")...");          m_pMainForm->appendMessages("qsamplerDeviceForm::saveDevicesFile(\"" + sFilename + "\")...");
212    
213          m_sFilename   = sFilename;          m_sFilename   = sFilename;
# Line 221  void qsamplerDeviceForm::saveDevicesFile Line 220  void qsamplerDeviceForm::saveDevicesFile
220  void qsamplerDeviceForm::createDevice (void)  void qsamplerDeviceForm::createDevice (void)
221  {  {
222          //          //
223      // TODO: Create a new device from current table view...          // TODO: Create a new device from current table view...
224      //          //
225          m_pMainForm->appendMessages("qsamplerDeviceForm::createDevice()...");          m_pMainForm->appendMessages("qsamplerDeviceForm::createDevice()...");
226            
227            m_iDirtyCount++;
228            stabilizeForm();
229  }  }
230    
231    
# Line 231  void qsamplerDeviceForm::createDevice (v Line 233  void qsamplerDeviceForm::createDevice (v
233  void qsamplerDeviceForm::updateDevice (void)  void qsamplerDeviceForm::updateDevice (void)
234  {  {
235          //          //
236      // TODO: Update current device in table view...          // TODO: Update current device in table view...
237      //          //
238          m_pMainForm->appendMessages("qsamplerDeviceForm::updateDevice()...");          m_pMainForm->appendMessages("qsamplerDeviceForm::updateDevice()...");
239    
240            m_iDirtyCount++;
241            stabilizeForm();
242  }  }
243    
244    
# Line 241  void qsamplerDeviceForm::updateDevice (v Line 246  void qsamplerDeviceForm::updateDevice (v
246  void qsamplerDeviceForm::deleteDevice (void)  void qsamplerDeviceForm::deleteDevice (void)
247  {  {
248          //          //
249      // TODO: Delete current device in table view...          // TODO: Delete current device in table view...
250      //          //
251          m_pMainForm->appendMessages("qsamplerDeviceForm::deleteDevice()...");          m_pMainForm->appendMessages("qsamplerDeviceForm::deleteDevice()...");
252    
253            m_iDirtyCount++;
254            stabilizeForm();
255  }  }
256    
257    
258  // Refresh all device list and views.  // Refresh all device list and views.
259  void qsamplerDeviceForm::refreshDevices (void)  void qsamplerDeviceForm::refreshDevices (void)
260  {  {
261      // Avoid nested changes.          // Avoid nested changes.
262      m_iDirtySetup++;          m_iDirtySetup++;
   
     DeviceListView->clear();  
     if (m_pClient)  
         new QListViewItem(DeviceListView, tr("<New device>"));  
263    
264          //          //
265      // TODO: Load device configuration data ...          // TODO: Load device configuration data ...
266      //          //
267          m_pMainForm->appendMessages("qsamplerDeviceForm::refreshDevices()");          m_pMainForm->appendMessages("qsamplerDeviceForm::refreshDevices()");
268    
269          DeviceParameterTable->setNumRows(0);          DeviceListView->clear();
270          if (m_pClient) {          if (m_pClient) {
271                  DeviceParameterTable->insertRows(0, 3);                  qsamplerDeviceItem *pItem;
272                  for (int c = 0; c < DeviceParameterTable->numCols(); c++) {                  int *piDeviceIDs;
273                          for (int r = 0; r < DeviceParameterTable->numRows(); r++)                  // Grab and pop Audio devices...
274                                  DeviceParameterTable->setText(r, c, QString("R%1C%1").arg(r).arg(c));                  pItem = new qsamplerDeviceItem(DeviceListView, m_pClient,
275                          DeviceParameterTable->adjustColumn(c);                          qsamplerDevice::Audio);
276                    if (pItem) {
277                            pItem->setText(0, tr("Audio"));
278                            piDeviceIDs = qsamplerDevice::getDevices(m_pClient, qsamplerDevice::Audio);
279                            for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; i++) {
280                                    new qsamplerDeviceItem(pItem, m_pClient,
281                                            qsamplerDevice::Audio, piDeviceIDs[i]);
282                            }
283                            pItem->setOpen(true);
284                    }
285                    // Grab and pop MIDI devices...
286                    pItem = new qsamplerDeviceItem(DeviceListView, m_pClient,
287                            qsamplerDevice::Midi);
288                    if (pItem) {
289                            pItem->setText(0, tr("MIDI"));
290                            piDeviceIDs = qsamplerDevice::getDevices(m_pClient, qsamplerDevice::Midi);
291                            for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; i++) {
292                                    new qsamplerDeviceItem(pItem, m_pClient,
293                                            qsamplerDevice::Midi, piDeviceIDs[i]);
294                            }
295                            pItem->setOpen(true);
296                  }                  }
297          }          }
298    
299      // Done.          // Done.
300      m_iDirtySetup--;          selectDevice();
301  //  stabilizeForm();          m_iDirtySetup--;
302    }
303    
304    
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            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            stabilizeForm();
325    }
326    
327    
328    // Device selection slot.
329    void qsamplerDeviceForm::selectDevice (void)
330    {
331            //
332            //  TODO: Device selection has changed...
333            //
334            m_pMainForm->appendMessages("qsamplerDeviceForm::selectDevice()");
335    
336            QListViewItem *pItem = DeviceListView->selectedItem();
337            if (pItem == NULL || pItem->rtti() != QSAMPLER_DEVICE_ITEM) {
338                    stabilizeForm();
339                    return;
340            }
341    
342            qsamplerDevice& device = ((qsamplerDeviceItem *) pItem)->device();
343            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            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            DriverNameTextLabel->setEnabled(m_bNewDevice);
359            DriverNameComboBox->setEnabled(m_bNewDevice);
360            
361            // Fill the device parameter table...
362            DeviceParamTable->refresh(device);
363    
364            // Done.
365            stabilizeForm();
366  }  }
367    
368    
369  // Stabilize current form state.  // Stabilize current form state.
370  void qsamplerDeviceForm::stabilizeForm (void)  void qsamplerDeviceForm::stabilizeForm (void)
371  {  {
372      // Update the main caption...          // Update the main caption...
373      QString sDevicesName = devicesName(m_sFilename);          QString sDevicesName = devicesName(m_sFilename);
374      if (m_iDirtyCount > 0)          if (m_iDirtyCount > 0)
375          sDevicesName += '*';                  sDevicesName += '*';
376      setCaption(tr("Devices - [%1]").arg(sDevicesName));          setCaption(tr("Devices - [%1]").arg(sDevicesName));
377    
378          //          //
379          // TODO: Enable/disable available command buttons.          // TODO: Enable/disable available command buttons.
380          //          //
381          m_pMainForm->appendMessages("qsamplerDeviceForm::stabilizeForm()");          m_pMainForm->appendMessages("qsamplerDeviceForm::stabilizeForm()");
382    
383      SaveDevicesPushButton->setEnabled(m_iDirtyCount > 0);          SaveDevicesPushButton->setEnabled(m_iDirtyCount > 0);
384        
385      CreateDevicePushButton->setEnabled(m_iDirtyCount > 0);          QListViewItem *pItem = DeviceListView->selectedItem();
386      UpdateDevicePushButton->setEnabled(m_iDirtyCount > 0);          bool bEnabled = (pItem != NULL);
387      DeleteDevicePushButton->setEnabled(m_iDirtyCount > 0);          DeviceNameTextLabel->setEnabled(bEnabled);
388            DriverNameTextLabel->setEnabled(bEnabled && m_bNewDevice);
389            DriverNameComboBox->setEnabled(bEnabled && m_bNewDevice);
390            DeviceParamTable->setEnabled(bEnabled);
391            CreateDevicePushButton->setEnabled(bEnabled && (m_iDirtyCount > 0 ||  m_bNewDevice));
392            UpdateDevicePushButton->setEnabled(bEnabled && (m_iDirtyCount > 0 && !m_bNewDevice));
393            DeleteDevicePushButton->setEnabled(bEnabled && (m_iDirtyCount > 0 && !m_bNewDevice));
394  }  }
395    
396    

Legend:
Removed from v.428  
changed lines
  Added in v.431

  ViewVC Help
Powered by ViewVC