diff options
Diffstat (limited to 'examples/multimedia/spectrum/mainwidget.cpp')
-rw-r--r-- | examples/multimedia/spectrum/mainwidget.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/examples/multimedia/spectrum/mainwidget.cpp b/examples/multimedia/spectrum/mainwidget.cpp index 2dbfda9ab..b72b01bac 100644 --- a/examples/multimedia/spectrum/mainwidget.cpp +++ b/examples/multimedia/spectrum/mainwidget.cpp @@ -96,6 +96,7 @@ MainWidget::MainWidget(QWidget *parent) , m_loadFileAction(nullptr) , m_generateToneAction(nullptr) , m_recordAction(nullptr) + , m_errorOccurred(false) { m_spectrograph->setParams(SpectrumNumBands, SpectrumLowFreq, SpectrumHighFreq); @@ -158,6 +159,8 @@ void MainWidget::infoMessage(const QString &message, int timeoutMs) void MainWidget::errorMessage(const QString &heading, const QString &detail) { QMessageBox::warning(this, heading, detail, QMessageBox::Close); + m_errorOccurred = true; + reset(); } void MainWidget::timerEvent(QTimerEvent *event) @@ -190,6 +193,7 @@ void MainWidget::bufferLengthChanged(qint64 length) void MainWidget::showFileDialog() { + m_errorOccurred = false; const QString dir; const QStringList fileNames = QFileDialog::getOpenFileNames(this, tr("Open WAV file"), dir, "*.wav"); if (fileNames.count()) { @@ -214,6 +218,7 @@ void MainWidget::showSettingsDialog() void MainWidget::showToneGeneratorDialog() { + m_errorOccurred = false; m_toneGeneratorDialog->exec(); if (m_toneGeneratorDialog->result() == QDialog::Accepted) { reset(); @@ -228,12 +233,14 @@ void MainWidget::showToneGeneratorDialog() updateButtonStates(); } } else { + setMode(NoMode); updateModeMenu(); } } void MainWidget::initializeRecord() { + m_errorOccurred = false; reset(); setMode(RecordMode); if (m_engine->initializeRecord()) @@ -413,17 +420,18 @@ void MainWidget::updateButtonStates() (QAudio::ActiveState != m_engine->state() && QAudio::IdleState != m_engine->state())) && RecordMode == m_mode); - m_recordButton->setEnabled(recordEnabled); + m_recordButton->setEnabled(m_errorOccurred ? false : recordEnabled); const bool pauseEnabled = (QAudio::ActiveState == m_engine->state() || QAudio::IdleState == m_engine->state()); - m_pauseButton->setEnabled(pauseEnabled); + m_pauseButton->setEnabled(m_errorOccurred ? false : pauseEnabled); const bool playEnabled = (/*m_engine->dataLength() &&*/ (QAudioDevice::Output != m_engine->mode() || (QAudio::ActiveState != m_engine->state() && QAudio::IdleState != m_engine->state()))); - m_playButton->setEnabled(playEnabled); + + m_playButton->setEnabled(m_errorOccurred ? false : playEnabled); } void MainWidget::reset() @@ -435,6 +443,10 @@ void MainWidget::reset() m_levelMeter->reset(); m_spectrograph->reset(); m_progressBar->reset(); + if (m_errorOccurred) { + setMode(Mode::NoMode); + updateButtonStates(); + } } void MainWidget::setMode(Mode mode) |