19 #include <QDialogButtonBox>
20 #include <QPushButton>
21 #include <QMessageBox>
24 #include "ui_sonivoxsettingsdialog.h"
35 const QString SonivoxSettingsDialog::QSTR_PREFERENCES = QStringLiteral(
"SonivoxEAS");
36 const QString SonivoxSettingsDialog::QSTR_BUFFERTIME = QStringLiteral(
"BufferTime");
37 const QString SonivoxSettingsDialog::QSTR_REVERBTYPE = QStringLiteral(
"ReverbType");
38 const QString SonivoxSettingsDialog::QSTR_REVERBAMT = QStringLiteral(
"ReverbAmt");
39 const QString SonivoxSettingsDialog::QSTR_CHORUSTYPE = QStringLiteral(
"ChorusType");
40 const QString SonivoxSettingsDialog::QSTR_CHORUSAMT = QStringLiteral(
"ChorusAmt");
42 SonivoxSettingsDialog::SonivoxSettingsDialog(QWidget *parent) :
44 ui(new Ui::SonivoxSettingsDialog)
47 ui->combo_Reverb->addItem(QStringLiteral(
"Large Hall"), 0);
48 ui->combo_Reverb->addItem(QStringLiteral(
"Hall"), 1);
49 ui->combo_Reverb->addItem(QStringLiteral(
"Chamber"), 2);
50 ui->combo_Reverb->addItem(QStringLiteral(
"Room"), 3);
51 ui->combo_Reverb->addItem(QStringLiteral(
"None"), -1);
52 ui->combo_Reverb->setCurrentIndex(4);
54 ui->combo_Chorus->addItem(QStringLiteral(
"Preset 1"), 0);
55 ui->combo_Chorus->addItem(QStringLiteral(
"Preset 2"), 1);
56 ui->combo_Chorus->addItem(QStringLiteral(
"Preset 3"), 2);
57 ui->combo_Chorus->addItem(QStringLiteral(
"Preset 4"), 3);
58 ui->combo_Chorus->addItem(QStringLiteral(
"None"), -1);
59 ui->combo_Chorus->setCurrentIndex(4);
60 connect(ui->buttonBox->button(QDialogButtonBox::RestoreDefaults), &QPushButton::pressed,
61 this, &SonivoxSettingsDialog::restoreDefaults);
68 SonivoxSettingsDialog::~SonivoxSettingsDialog()
71 if (m_driver !=
nullptr) {
77 void SonivoxSettingsDialog::accept()
81 if (m_driver !=
nullptr) {
83 QVariant varStatus = m_driver->property(
"status");
84 if (varStatus.isValid()) {
85 title = varStatus.toBool() ? tr(
"Sonivox Initialized") : tr(
"Sonivox Initialization Failed");
86 QVariant varDiag = m_driver->property(
"diagnostics");
87 if (varDiag.isValid()) {
88 QString text = varDiag.toStringList().join(QChar::LineFeed).trimmed();
89 if (varStatus.toBool()) {
90 if (!text.isEmpty()) {
91 QMessageBox::information(
this, title, text);
94 QMessageBox::critical(
this, title, text);
103 void SonivoxSettingsDialog::showEvent(QShowEvent *event)
110 void SonivoxSettingsDialog::readSettings()
113 SettingsFactory settings;
114 settings->beginGroup(QSTR_PREFERENCES);
115 int bufferTime = settings->value(QSTR_BUFFERTIME, 60).toInt();
116 int reverbType = settings->value(QSTR_REVERBTYPE, 1).toInt();
117 int reverbAmt = settings->value(QSTR_REVERBAMT, 25800).toInt();
118 int chorusType = settings->value(QSTR_CHORUSTYPE, -1).toInt();
119 int chorusAmt = settings->value(QSTR_CHORUSAMT, 0).toInt();
120 settings->endGroup();
122 ui->spnTime->setValue(bufferTime);
123 ui->dial_Reverb->setValue(reverbAmt);
124 ui->dial_Chorus->setValue(chorusAmt);
125 int reverbIndex = ui->combo_Reverb->findData(reverbType);
126 int chorusIndex = ui->combo_Chorus->findData(chorusType);
127 ui->combo_Reverb->setCurrentIndex(reverbIndex);
128 ui->combo_Chorus->setCurrentIndex(chorusIndex);
129 chkDriverProperties(settings.getQSettings());
132 void SonivoxSettingsDialog::writeSettings()
135 SettingsFactory settings;
136 settings->beginGroup(QSTR_PREFERENCES);
137 settings->setValue(QSTR_BUFFERTIME, ui->spnTime->value());
138 settings->setValue(QSTR_REVERBTYPE, ui->combo_Reverb->currentData());
139 settings->setValue(QSTR_CHORUSTYPE, ui->combo_Chorus->currentData());
140 settings->setValue(QSTR_REVERBAMT, ui->dial_Reverb->value());
141 settings->setValue(QSTR_CHORUSAMT, ui->dial_Chorus->value());
142 settings->endGroup();
144 chkDriverProperties(settings.getQSettings());
147 void SonivoxSettingsDialog::chkDriverProperties(
QSettings *settings)
150 if (m_driver !=
nullptr) {
153 m_driver->initialize(settings);
156 QVariant varStatus = m_driver->property(
"status");
157 if (varStatus.isValid()) {
158 ui->lblStatusText->clear();
159 ui->lblStatusText->setText(varStatus.toBool() ? tr(
"Ready") : tr(
"Failed") );
160 ui->lblStatusIcon->setPixmap(varStatus.toBool() ? QPixmap(
":/checked.png") : QPixmap(
":/error.png") );
164 void SonivoxSettingsDialog::restoreDefaults()
166 ui->spnTime->setValue(60);
167 ui->combo_Reverb->setCurrentIndex(1);
168 ui->dial_Reverb->setValue(25800);
169 ui->combo_Chorus->setCurrentIndex(4);
170 ui->dial_Chorus->setValue(0);
BackendManager class declaration.
The QSettings class provides persistent platform-independent application settings.
The BackendManager class manages lists of dynamic and static backends for applications based on drums...
MIDIOutput * outputBackendByName(const QString name)
outputBackendByName
virtual void close()=0
close the MIDI port
SettingsFactory class declaration.
Definition of the Sonivox Synth configuration dialog.