--- qsampler/trunk/src/qsamplerChannelForm.ui.h 2005/03/15 11:39:12 462 +++ qsampler/trunk/src/qsamplerChannelForm.ui.h 2005/03/31 14:17:19 487 @@ -26,6 +26,8 @@ #include #include +#include "qsamplerDeviceForm.h" + #include "config.h" @@ -41,6 +43,8 @@ m_midiDevices.setAutoDelete(true); m_audioDevices.setAutoDelete(true); + m_pDeviceForm = NULL; + // Try to restore normal window positioning. adjustSize(); } @@ -49,6 +53,9 @@ // Kind of destructor. void qsamplerChannelForm::destroy (void) { + if (m_pDeviceForm) + delete m_pDeviceForm; + m_pDeviceForm = NULL; } @@ -124,7 +131,7 @@ InstrumentNrComboBox->setCurrentItem(pChannel->instrumentNr()); // MIDI input device... - qsamplerDevice midiDevice(m_pChannel->client(), + qsamplerDevice midiDevice(m_pChannel->mainForm(), qsamplerDevice::Midi, m_pChannel->midiDevice()); // MIDI input driver... QString sMidiDriver = midiDevice.driverName(); @@ -149,7 +156,7 @@ MidiChannelComboBox->setCurrentItem(iMidiChannel); // Audio output device... - qsamplerDevice audioDevice(m_pChannel->client(), + qsamplerDevice audioDevice(m_pChannel->mainForm(), qsamplerDevice::Audio, m_pChannel->audioDevice()); // Audio output driver... QString sAudioDriver = audioDevice.driverName(); @@ -170,9 +177,6 @@ if (sEngineName != qsamplerChannel::noEngineName() && sInstrumentFile != qsamplerChannel::noInstrumentName()) m_iDirtyCount++; - // FIXME: These are better leave disabled... - MidiPortTextLabel->setEnabled(false); - MidiPortSpinBox->setEnabled(false); // Done. m_iDirtySetup--; stabilizeForm(); @@ -314,6 +318,29 @@ optionsChanged(); } +// Show device options dialog. +void qsamplerChannelForm::setupDevice ( qsamplerDevice *pDevice ) +{ + if (pDevice == NULL) + return; + + // Create the device form if not already... + if (m_pDeviceForm == NULL) { + m_pDeviceForm = new qsamplerDeviceForm(this, 0, + WType_Dialog | WShowModal); + m_pDeviceForm->setMainForm(m_pChannel->mainForm()); + m_pDeviceForm->move(QDialog::pos() + QPoint(32, 32)); + } + + // Refresh the device form with selected data. + if (m_pDeviceForm) { + m_pDeviceForm->setClient(m_pChannel->client()); // <-- refreshDevices(). + m_pDeviceForm->setDevice(pDevice->deviceType(), + pDevice->deviceID()); + m_pDeviceForm->show(); + } +} + // Refresh MIDI device options. void qsamplerChannelForm::selectMidiDriver ( const QString& sMidiDriver ) @@ -327,7 +354,7 @@ int *piDeviceIDs = qsamplerDevice::getDevices(m_pChannel->client(), qsamplerDevice::Midi); for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; i++) { - qsamplerDevice *pDevice = new qsamplerDevice(m_pChannel->client(), + qsamplerDevice *pDevice = new qsamplerDevice(m_pChannel->mainForm(), qsamplerDevice::Midi, piDeviceIDs[i]); if (pDevice->driverName().upper() == sDriverName) { MidiDeviceComboBox->insertItem(midiPixmap, pDevice->deviceName()); @@ -342,6 +369,7 @@ MidiDeviceComboBox->insertItem(tr("(New MIDI device)")); MidiDeviceTextLabel->setEnabled(bEnabled); MidiDeviceComboBox->setEnabled(bEnabled); + MidiDevicePushButton->setEnabled(bEnabled); optionsChanged(); } @@ -362,6 +390,13 @@ } +// MIDI device options. +void qsamplerChannelForm::setupMidiDevice (void) +{ + setupDevice(m_midiDevices.at(MidiDeviceComboBox->currentItem())); +} + + // Refresh Audio device options. void qsamplerChannelForm::selectAudioDriver ( const QString& sAudioDriver ) { @@ -374,7 +409,7 @@ int *piDeviceIDs = qsamplerDevice::getDevices(m_pChannel->client(), qsamplerDevice::Audio); for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; i++) { - qsamplerDevice *pDevice = new qsamplerDevice(m_pChannel->client(), + qsamplerDevice *pDevice = new qsamplerDevice(m_pChannel->mainForm(), qsamplerDevice::Audio, piDeviceIDs[i]); if (pDevice->driverName().upper() == sDriverName) { AudioDeviceComboBox->insertItem(audioPixmap, pDevice->deviceName()); @@ -389,6 +424,7 @@ AudioDeviceComboBox->insertItem(tr("(New Audio device)")); AudioDeviceTextLabel->setEnabled(bEnabled); AudioDeviceComboBox->setEnabled(bEnabled); + AudioDevicePushButton->setEnabled(bEnabled); optionsChanged(); } @@ -404,6 +440,13 @@ } +// Audio device options. +void qsamplerChannelForm::setupAudioDevice (void) +{ + setupDevice(m_audioDevices.at(AudioDeviceComboBox->currentItem())); +} + + // Dirty up settings. void qsamplerChannelForm::optionsChanged (void) {