diff options
Diffstat (limited to 'examples/multimedia/spectrum/app')
-rw-r--r-- | examples/multimedia/spectrum/app/engine.cpp | 47 | ||||
-rw-r--r-- | examples/multimedia/spectrum/app/engine.h | 1 | ||||
-rw-r--r-- | examples/multimedia/spectrum/app/levelmeter.cpp | 3 | ||||
-rw-r--r-- | examples/multimedia/spectrum/app/mainwidget.cpp | 85 | ||||
-rw-r--r-- | examples/multimedia/spectrum/app/settingsdialog.cpp | 20 | ||||
-rw-r--r-- | examples/multimedia/spectrum/app/spectrum.h | 16 | ||||
-rw-r--r-- | examples/multimedia/spectrum/app/spectrumanalyser.cpp | 4 | ||||
-rw-r--r-- | examples/multimedia/spectrum/app/tonegeneratordialog.cpp | 20 |
8 files changed, 102 insertions, 94 deletions
diff --git a/examples/multimedia/spectrum/app/engine.cpp b/examples/multimedia/spectrum/app/engine.cpp index 07e82bb4a..7e11d012b 100644 --- a/examples/multimedia/spectrum/app/engine.cpp +++ b/examples/multimedia/spectrum/app/engine.cpp @@ -108,10 +108,25 @@ Engine::Engine(QObject *parent) { qRegisterMetaType<FrequencySpectrum>("FrequencySpectrum"); qRegisterMetaType<WindowFunction>("WindowFunction"); - CHECKED_CONNECT(&m_spectrumAnalyser, - SIGNAL(spectrumChanged(FrequencySpectrum)), - this, - SLOT(spectrumChanged(FrequencySpectrum))); + connect(&m_spectrumAnalyser, QOverload<const FrequencySpectrum&>::of(&SpectrumAnalyser::spectrumChanged), + this, QOverload<const FrequencySpectrum&>::of(&Engine::spectrumChanged)); + + // This code might misinterpret things like "-something -category". But + // it's unlikely that that needs to be supported so we'll let it go. + QStringList arguments = QCoreApplication::instance()->arguments(); + for (int i = 0; i < arguments.count(); ++i) { + if (arguments.at(i) == QStringLiteral("--")) + break; + + if (arguments.at(i) == QStringLiteral("-category") + || arguments.at(i) == QStringLiteral("--category")) { + ++i; + if (i < arguments.count()) + m_audioOutputCategory = arguments.at(i); + else + --i; + } + } initialize(); @@ -226,16 +241,17 @@ void Engine::startRecording() setRecordPosition(0, true); stopPlayback(); m_mode = QAudio::AudioInput; - CHECKED_CONNECT(m_audioInput, SIGNAL(stateChanged(QAudio::State)), - this, SLOT(audioStateChanged(QAudio::State))); - CHECKED_CONNECT(m_audioInput, SIGNAL(notify()), - this, SLOT(audioNotify())); + connect(m_audioInput, &QAudioInput::stateChanged, + this, &Engine::audioStateChanged); + connect(m_audioInput, &QAudioInput::notify, + this, &Engine::audioNotify); + m_count = 0; m_dataLength = 0; emit dataLengthChanged(0); m_audioInputIODevice = m_audioInput->start(); - CHECKED_CONNECT(m_audioInputIODevice, SIGNAL(readyRead()), - this, SLOT(audioDataReady())); + connect(m_audioInputIODevice, &QIODevice::readyRead, + this, &Engine::audioDataReady); } } } @@ -258,10 +274,11 @@ void Engine::startPlayback() setPlayPosition(0, true); stopRecording(); m_mode = QAudio::AudioOutput; - CHECKED_CONNECT(m_audioOutput, SIGNAL(stateChanged(QAudio::State)), - this, SLOT(audioStateChanged(QAudio::State))); - CHECKED_CONNECT(m_audioOutput, SIGNAL(notify()), - this, SLOT(audioNotify())); + connect(m_audioOutput, &QAudioOutput::stateChanged, + this, &Engine::audioStateChanged); + connect(m_audioOutput, &QAudioOutput::notify, + this, &Engine::audioNotify); + m_count = 0; if (m_file) { m_file->seek(0); @@ -504,6 +521,7 @@ bool Engine::initialize() } m_audioOutput = new QAudioOutput(m_audioOutputDevice, m_format, this); m_audioOutput->setNotifyInterval(NotifyIntervalMs); + m_audioOutput->setCategory(m_audioOutputCategory); } } else { if (m_file) @@ -518,6 +536,7 @@ bool Engine::initialize() ENGINE_DEBUG << "Engine::initialize" << "m_bufferLength" << m_bufferLength; ENGINE_DEBUG << "Engine::initialize" << "m_dataLength" << m_dataLength; ENGINE_DEBUG << "Engine::initialize" << "format" << m_format; + ENGINE_DEBUG << "Engine::initialize" << "m_audioOutputCategory" << m_audioOutputCategory; return result; } diff --git a/examples/multimedia/spectrum/app/engine.h b/examples/multimedia/spectrum/app/engine.h index 3fc1afe68..ff56d7c8b 100644 --- a/examples/multimedia/spectrum/app/engine.h +++ b/examples/multimedia/spectrum/app/engine.h @@ -297,6 +297,7 @@ private: const QList<QAudioDeviceInfo> m_availableAudioOutputDevices; QAudioDeviceInfo m_audioOutputDevice; QAudioOutput* m_audioOutput; + QString m_audioOutputCategory; qint64 m_playPosition; QBuffer m_audioOutputIODevice; diff --git a/examples/multimedia/spectrum/app/levelmeter.cpp b/examples/multimedia/spectrum/app/levelmeter.cpp index a2741d23f..1c720905c 100644 --- a/examples/multimedia/spectrum/app/levelmeter.cpp +++ b/examples/multimedia/spectrum/app/levelmeter.cpp @@ -77,7 +77,8 @@ LevelMeter::LevelMeter(QWidget *parent) setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred); setMinimumWidth(30); - connect(m_redrawTimer, SIGNAL(timeout()), this, SLOT(redrawTimerExpired())); + connect(m_redrawTimer, &QTimer::timeout, + this, &LevelMeter::redrawTimerExpired); m_redrawTimer->start(RedrawInterval); } diff --git a/examples/multimedia/spectrum/app/mainwidget.cpp b/examples/multimedia/spectrum/app/mainwidget.cpp index 9186320cd..945313f32 100644 --- a/examples/multimedia/spectrum/app/mainwidget.cpp +++ b/examples/multimedia/spectrum/app/mainwidget.cpp @@ -119,7 +119,9 @@ void MainWidget::stateChanged(QAudio::Mode mode, QAudio::State state) updateButtonStates(); - if (QAudio::ActiveState != state && QAudio::SuspendedState != state) { + if (QAudio::ActiveState != state && + QAudio::SuspendedState != state && + QAudio::InterruptedState != state) { m_levelMeter->reset(); m_spectrograph->reset(); } @@ -337,62 +339,62 @@ void MainWidget::createUi() void MainWidget::connectUi() { - CHECKED_CONNECT(m_recordButton, SIGNAL(clicked()), - m_engine, SLOT(startRecording())); + connect(m_recordButton, &QPushButton::clicked, + m_engine, &Engine::startRecording); - CHECKED_CONNECT(m_pauseButton, SIGNAL(clicked()), - m_engine, SLOT(suspend())); + connect(m_pauseButton, &QPushButton::clicked, + m_engine, &Engine::suspend); - CHECKED_CONNECT(m_playButton, SIGNAL(clicked()), - m_engine, SLOT(startPlayback())); + connect(m_playButton, &QPushButton::clicked, + m_engine, &Engine::startPlayback); - CHECKED_CONNECT(m_settingsButton, SIGNAL(clicked()), - this, SLOT(showSettingsDialog())); + connect(m_settingsButton, &QPushButton::clicked, + this, &MainWidget::showSettingsDialog); - CHECKED_CONNECT(m_engine, SIGNAL(stateChanged(QAudio::Mode,QAudio::State)), - this, SLOT(stateChanged(QAudio::Mode,QAudio::State))); + connect(m_engine, &Engine::stateChanged, + this, &MainWidget::stateChanged); - CHECKED_CONNECT(m_engine, SIGNAL(formatChanged(const QAudioFormat &)), - this, SLOT(formatChanged(const QAudioFormat &))); + connect(m_engine, &Engine::formatChanged, + this, &MainWidget::formatChanged); m_progressBar->bufferLengthChanged(m_engine->bufferLength()); - CHECKED_CONNECT(m_engine, SIGNAL(bufferLengthChanged(qint64)), - this, SLOT(bufferLengthChanged(qint64))); + connect(m_engine, &Engine::bufferLengthChanged, + this, &MainWidget::bufferLengthChanged); - CHECKED_CONNECT(m_engine, SIGNAL(dataLengthChanged(qint64)), - this, SLOT(updateButtonStates())); + connect(m_engine, &Engine::dataLengthChanged, + this, &MainWidget::updateButtonStates); - CHECKED_CONNECT(m_engine, SIGNAL(recordPositionChanged(qint64)), - m_progressBar, SLOT(recordPositionChanged(qint64))); + connect(m_engine, &Engine::recordPositionChanged, + m_progressBar, &ProgressBar::recordPositionChanged); - CHECKED_CONNECT(m_engine, SIGNAL(playPositionChanged(qint64)), - m_progressBar, SLOT(playPositionChanged(qint64))); + connect(m_engine, &Engine::playPositionChanged, + m_progressBar, &ProgressBar::playPositionChanged); - CHECKED_CONNECT(m_engine, SIGNAL(recordPositionChanged(qint64)), - this, SLOT(audioPositionChanged(qint64))); + connect(m_engine, &Engine::recordPositionChanged, + this, &MainWidget::audioPositionChanged); - CHECKED_CONNECT(m_engine, SIGNAL(playPositionChanged(qint64)), - this, SLOT(audioPositionChanged(qint64))); + connect(m_engine, &Engine::playPositionChanged, + this, &MainWidget::audioPositionChanged); - CHECKED_CONNECT(m_engine, SIGNAL(levelChanged(qreal, qreal, int)), - m_levelMeter, SLOT(levelChanged(qreal, qreal, int))); + connect(m_engine, &Engine::levelChanged, + m_levelMeter, &LevelMeter::levelChanged); - CHECKED_CONNECT(m_engine, SIGNAL(spectrumChanged(qint64, qint64, const FrequencySpectrum &)), - this, SLOT(spectrumChanged(qint64, qint64, const FrequencySpectrum &))); + connect(m_engine, QOverload<qint64, qint64, const FrequencySpectrum&>::of(&Engine::spectrumChanged), + this, QOverload<qint64, qint64, const FrequencySpectrum&>::of(&MainWidget::spectrumChanged)); - CHECKED_CONNECT(m_engine, SIGNAL(infoMessage(QString, int)), - this, SLOT(infoMessage(QString, int))); + connect(m_engine, &Engine::infoMessage, + this, &MainWidget::infoMessage); - CHECKED_CONNECT(m_engine, SIGNAL(errorMessage(QString, QString)), - this, SLOT(errorMessage(QString, QString))); + connect(m_engine, &Engine::errorMessage, + this, &MainWidget::errorMessage); - CHECKED_CONNECT(m_spectrograph, SIGNAL(infoMessage(QString, int)), - this, SLOT(infoMessage(QString, int))); + connect(m_spectrograph, &Spectrograph::infoMessage, + this, &MainWidget::infoMessage); #ifndef DISABLE_WAVEFORM - CHECKED_CONNECT(m_engine, SIGNAL(bufferChanged(qint64, qint64, const QByteArray &)), - m_waveform, SLOT(bufferChanged(qint64, qint64, const QByteArray &))); + connect(m_engine, &Engine::bufferChanged, + m_waveform, &Waveform::bufferChanged); #endif } @@ -408,9 +410,9 @@ void MainWidget::createMenus() m_generateToneAction->setCheckable(true); m_recordAction->setCheckable(true); - connect(m_loadFileAction, SIGNAL(triggered(bool)), this, SLOT(showFileDialog())); - connect(m_generateToneAction, SIGNAL(triggered(bool)), this, SLOT(showToneGeneratorDialog())); - connect(m_recordAction, SIGNAL(triggered(bool)), this, SLOT(initializeRecord())); + connect(m_loadFileAction, &QAction::triggered, this, &MainWidget::showFileDialog); + connect(m_generateToneAction, &QAction::triggered, this, &MainWidget::showToneGeneratorDialog); + connect(m_recordAction, &QAction::triggered, this, &MainWidget::initializeRecord); } void MainWidget::updateButtonStates() @@ -428,7 +430,8 @@ void MainWidget::updateButtonStates() const bool playEnabled = (/*m_engine->dataLength() &&*/ (QAudio::AudioOutput != m_engine->mode() || (QAudio::ActiveState != m_engine->state() && - QAudio::IdleState != m_engine->state()))); + QAudio::IdleState != m_engine->state() && + QAudio::InterruptedState != m_engine->state()))); m_playButton->setEnabled(playEnabled); } diff --git a/examples/multimedia/spectrum/app/settingsdialog.cpp b/examples/multimedia/spectrum/app/settingsdialog.cpp index 109817cd2..f1723077e 100644 --- a/examples/multimedia/spectrum/app/settingsdialog.cpp +++ b/examples/multimedia/spectrum/app/settingsdialog.cpp @@ -114,12 +114,12 @@ SettingsDialog::SettingsDialog( windowFunctionLayout.take(); // ownership transferred to dialogLayout // Connect - CHECKED_CONNECT(m_inputDeviceComboBox, SIGNAL(activated(int)), - this, SLOT(inputDeviceChanged(int))); - CHECKED_CONNECT(m_outputDeviceComboBox, SIGNAL(activated(int)), - this, SLOT(outputDeviceChanged(int))); - CHECKED_CONNECT(m_windowFunctionComboBox, SIGNAL(activated(int)), - this, SLOT(windowFunctionChanged(int))); + connect(m_inputDeviceComboBox, QOverload<int>::of(&QComboBox::activated), + this, &SettingsDialog::inputDeviceChanged); + connect(m_outputDeviceComboBox, QOverload<int>::of(&QComboBox::activated), + this, &SettingsDialog::outputDeviceChanged); + connect(m_windowFunctionComboBox, QOverload<int>::of(&QComboBox::activated), + this, &SettingsDialog::windowFunctionChanged); // Add standard buttons to layout QDialogButtonBox *buttonBox = new QDialogButtonBox(this); @@ -127,10 +127,10 @@ SettingsDialog::SettingsDialog( dialogLayout->addWidget(buttonBox); // Connect standard buttons - CHECKED_CONNECT(buttonBox->button(QDialogButtonBox::Ok), SIGNAL(clicked()), - this, SLOT(accept())); - CHECKED_CONNECT(buttonBox->button(QDialogButtonBox::Cancel), SIGNAL(clicked()), - this, SLOT(reject())); + connect(buttonBox->button(QDialogButtonBox::Ok), &QPushButton::clicked, + this, &SettingsDialog::accept); + connect(buttonBox->button(QDialogButtonBox::Cancel), &QPushButton::clicked, + this, &SettingsDialog::reject); setLayout(dialogLayout); } diff --git a/examples/multimedia/spectrum/app/spectrum.h b/examples/multimedia/spectrum/app/spectrum.h index 1d0eedeff..aea9ce7c5 100644 --- a/examples/multimedia/spectrum/app/spectrum.h +++ b/examples/multimedia/spectrum/app/spectrum.h @@ -130,22 +130,6 @@ struct SweptTone qreal amplitude; }; - -//----------------------------------------------------------------------------- -// Macros -//----------------------------------------------------------------------------- - -// Macro which connects a signal to a slot, and which causes application to -// abort if the connection fails. This is intended to catch programming errors -// such as mis-typing a signal or slot name. It is necessary to write our own -// macro to do this - the following idiom -// Q_ASSERT(connect(source, signal, receiver, slot)); -// will not work because Q_ASSERT compiles to a no-op in release builds. - -#define CHECKED_CONNECT(source, signal, receiver, slot) \ - if (!connect(source, signal, receiver, slot)) \ - qt_assert_x(Q_FUNC_INFO, "CHECKED_CONNECT failed", __FILE__, __LINE__); - // Handle some dependencies between macros defined in the .pro file #ifdef DISABLE_WAVEFORM diff --git a/examples/multimedia/spectrum/app/spectrumanalyser.cpp b/examples/multimedia/spectrum/app/spectrumanalyser.cpp index 466c67188..ee024147f 100644 --- a/examples/multimedia/spectrum/app/spectrumanalyser.cpp +++ b/examples/multimedia/spectrum/app/spectrumanalyser.cpp @@ -172,8 +172,8 @@ SpectrumAnalyser::SpectrumAnalyser(QObject *parent) , m_count(0) #endif { - CHECKED_CONNECT(m_thread, SIGNAL(calculationComplete(FrequencySpectrum)), - this, SLOT(calculationComplete(FrequencySpectrum))); + connect(m_thread, &SpectrumAnalyserThread::calculationComplete, + this, &SpectrumAnalyser::calculationComplete); } SpectrumAnalyser::~SpectrumAnalyser() diff --git a/examples/multimedia/spectrum/app/tonegeneratordialog.cpp b/examples/multimedia/spectrum/app/tonegeneratordialog.cpp index 55f998417..76fe5d2e3 100644 --- a/examples/multimedia/spectrum/app/tonegeneratordialog.cpp +++ b/examples/multimedia/spectrum/app/tonegeneratordialog.cpp @@ -106,12 +106,12 @@ ToneGeneratorDialog::ToneGeneratorDialog(QWidget *parent) dialogLayout->addWidget(m_toneGeneratorControl); // Connect - CHECKED_CONNECT(m_toneGeneratorSweepCheckBox, SIGNAL(toggled(bool)), - this, SLOT(frequencySweepEnabled(bool))); - CHECKED_CONNECT(m_frequencySlider, SIGNAL(valueChanged(int)), - m_frequencySpinBox, SLOT(setValue(int))); - CHECKED_CONNECT(m_frequencySpinBox, SIGNAL(valueChanged(int)), - m_frequencySlider, SLOT(setValue(int))); + connect(m_toneGeneratorSweepCheckBox, &QCheckBox::toggled, + this, &ToneGeneratorDialog::frequencySweepEnabled); + connect(m_frequencySlider, &QSlider::valueChanged, + m_frequencySpinBox, &QSpinBox::setValue); + connect(m_frequencySpinBox, QOverload<int>::of(&QSpinBox::valueChanged), + m_frequencySlider, &QSlider::setValue); // Add standard buttons to layout QDialogButtonBox *buttonBox = new QDialogButtonBox(this); @@ -119,10 +119,10 @@ ToneGeneratorDialog::ToneGeneratorDialog(QWidget *parent) dialogLayout->addWidget(buttonBox); // Connect standard buttons - CHECKED_CONNECT(buttonBox->button(QDialogButtonBox::Ok), SIGNAL(clicked()), - this, SLOT(accept())); - CHECKED_CONNECT(buttonBox->button(QDialogButtonBox::Cancel), SIGNAL(clicked()), - this, SLOT(reject())); + connect(buttonBox->button(QDialogButtonBox::Ok), &QPushButton::clicked, + this, &ToneGeneratorDialog::accept); + connect(buttonBox->button(QDialogButtonBox::Cancel), &QPushButton::clicked, + this, &ToneGeneratorDialog::reject); setLayout(dialogLayout); } |