21 #include <QMessageBox>
22 #include "../../../core/core.h"
23 #include "../../../core/audio/player/audioplayeradapter.h"
25 #include "../../../core/audio/recorder/audiorecorderadapter.h"
26 #include "../../volumecontrollevel.h"
27 #include "../../mainwindow.h"
28 #include "../../settingsforqt.h"
33 : mOptionsDialog(optionsDialog),
37 if (mode == QAudio::AudioInput) {
43 QGridLayout *inputLayout =
new QGridLayout;
44 this->setLayout(inputLayout);
46 inputLayout->setColumnStretch(1, 1);
50 QList<QAudioDeviceInfo> deviceInfos(QAudioDeviceInfo::availableDevices(mode));
51 for (QAudioDeviceInfo info : deviceInfos) {
52 if (!info.isFormatSupported(info.preferredFormat())) {
56 mDeviceSelection->addItem(info.deviceName(), QVariant::fromValue<QAudioDeviceInfo>(info));
59 QPushButton *selectDefaultInputDeviceButton =
new QPushButton(tr(
"Default"));
61 inputLayout->addWidget(
new QLabel(tr(
"Input device")), 0, 0);
63 inputLayout->addWidget(selectDefaultInputDeviceButton, 0, 2);
66 QPushButton *selectDefaultSamplingRateButton =
new QPushButton(tr(
"Default"));
67 inputLayout->addWidget(
new QLabel(tr(
"Sampling rates")), 1, 0);
69 inputLayout->addWidget(selectDefaultSamplingRateButton, 1, 2);
87 QPushButton *openSystemSettingsButton =
new QPushButton(tr(
"Open system settings"));
88 inputLayout->addWidget(openSystemSettingsButton, 10, 0);
93 inputLayout->addItem(
new QSpacerItem(0, 0, QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding), 20, 0);
104 QObject::connect(selectDefaultInputDeviceButton, SIGNAL(clicked()),
this, SLOT(
onDefaultDevice()));
105 QObject::connect(selectDefaultSamplingRateButton, SIGNAL(clicked()),
this, SLOT(
onDefaultSamplingRate()));
108 QObject::connect(
mDeviceSelection, SIGNAL(currentIndexChanged(
int)), optionsDialog, SLOT(onChangesMade()));
109 QObject::connect(
mSamplingRates, SIGNAL(currentIndexChanged(
int)), optionsDialog, SLOT(onChangesMade()));
118 if (
mMode == QAudio::AudioOutput) {
132 QAudioDeviceInfo info(
mDeviceSelection->itemData(row).value<QAudioDeviceInfo>());
136 for (
int rate : info.supportedSampleRates()) {
148 if (
mMode == QAudio::AudioInput) {
149 mDeviceSelection->setCurrentText(QAudioDeviceInfo::defaultInputDevice().deviceName());
152 mDeviceSelection->setCurrentText(QAudioDeviceInfo::defaultOutputDevice().deviceName());
158 QAudioDeviceInfo info(
mDeviceSelection->currentData().value<QAudioDeviceInfo>());
159 if (info.deviceName().isEmpty()) {
168 if (
mMode == QAudio::AudioOutput && info.supportedSampleRates().contains(22050)) {
170 }
else if (
mMode == QAudio::AudioInput && info.supportedSampleRates().contains(44100)) {
174 mSamplingRates->setCurrentText(QString(
"%1").arg(info.preferredFormat().sampleRate()));
175 if (info.preferredFormat().sampleRate() < 9000) {
176 QMessageBox::warning(
this, tr(
"Warning"), tr(
"You need at least a sampling rate of %1 to record and play all keys.").arg(11025));
QComboBox * mSamplingRates
void onDefaultSamplingRate()
virtual void start()=0
Start/restart the audio device.
PageAudioInputOutput(OptionsDialog *optionsDialog, QAudio::Mode mode)
const std::string & getDeviceName() const
Get a readable string of the name of the audio device.
MainWindow * getMainWindow() const
AudioPlayerAdapter * getAudioPlayer()
void setOutputDeviceName(const QString &s)
Setter function for mOutputDeviceName.
virtual void stop()=0
Stop the audio device.
void setDeviceName(const std::string &n)
Set the device name.
void onDeviceSelectionChanged(int)
int getSamplingRate() const
Get the actual sampling rate.
void apply() overridefinal
bool isSoundControlSupported()
void setInputDeviceName(const QString &s)
Setter function for mInputDeviceName.
QComboBox * mDeviceSelection
virtual void exit()=0
Destroy the audio device.
OptionsDialog * mOptionsDialog
void setInputDeviceSamplingRate(int rate)
Setter function for mInputDeviceSamplingRate.
virtual void init()=0
Inizialize the audio device.
virtual void setSamplingRate(int rate)
Allow the implementation to change the sampling rate during operation.
void setOutputDeviceSamplingRate(int rate)
Setter function for mOutputDeviceSamplingRate.
static SettingsForQt & getSingleton()
Getter function for the singleton.
AudioRecorderAdapter * getAudioRecorder()