#include "prefportaudio.h"
PrefPortaudio::PrefPortaudio(Ui::PrefDialog *ui, QObject *parent) :
- QObject(parent),
- _ui(ui)
+ QObject(parent),
+ _ui(ui)
{
_settings = new QSettings();
}
{
_settings->beginGroup("FreeSWITCH/conf");
_settings->beginGroup("portaudio.conf");
- _settings->setValue("cid-name", _ui->PaCallerIdNameEdit->text());
- _settings->setValue("cid-num", _ui->PaCallerIdNumEdit->text());
- _settings->setValue("indev", _ui->PaIndevCombo->currentIndex());
- _settings->setValue("outdev", _ui->PaOutdevCombo->currentIndex());
- _settings->setValue("ringdev", _ui->PaRingdevCombo->currentIndex());
- _settings->setValue("ring-file", _ui->PaRingFileEdit->text());
- _settings->setValue("ring-interval", _ui->PaRingIntervalSpin->value());
- _settings->setValue("hold-file", _ui->PaHoldFileEdit->text());
+
+ QString cid_name = _settings->value("cid-name").toString();
+ QString ncid_name = _ui->PaCallerIdNameEdit->text();
+
+ QString cid_num = _settings->value("cid-num").toString();
+ QString ncid_num = _ui->PaCallerIdNumEdit->text();
+
+ QString hold_file = _settings->value("hold-file").toString();
+ QString nhold_file = _ui->PaHoldFileEdit->text();
+
+ QString ring_file = _settings->value("ring-file").toString();
+ QString nring_file = _ui->PaRingFileEdit->text();
+
+ int ring_interval = _settings->value("ring-interval").toInt();
+ int nring_interval = _ui->PaRingIntervalSpin->value();
+
+ QString result;
+
+ if (cid_name != ncid_name ||
+ cid_num != ncid_num ||
+ hold_file != nhold_file ||
+ ring_file != nring_file ||
+ ring_interval != nring_interval)
+ {
+ if (g_FSHost.sendCmd("reload", "mod_portaudio", &result) == SWITCH_STATUS_SUCCESS)
+ {
+ _settings->setValue("cid-name", ncid_name);
+ _settings->setValue("cid-num", ncid_num);
+ _settings->setValue("ring-file", nring_file);
+ _settings->setValue("ring-interval", nring_interval);
+ _settings->setValue("hold-file", nhold_file);
+ }
+ else
+ {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error while issuing reload command to mod_portaudio!\n");
+ QMessageBox::critical(0, tr("Unable to save settings"),
+ tr("There was an error saving your settings.\nPlease report this bug."),
+ QMessageBox::Ok);
+ }
+ }
+
+ int nindev = _ui->PaIndevCombo->currentIndex();
+ int indev = _settings->value("indev").toInt();
+ int noutdev = _ui->PaOutdevCombo->currentIndex();
+ int outdev = _settings->value("outdev").toInt();
+ int nringdev = _ui->PaRingdevCombo->currentIndex();
+ int ringdev = _settings->value("ringdev").toInt();
+
+ if (nindev != indev)
+ {
+ if (g_FSHost.sendCmd("pa", QString("indev #%1").arg(nindev).toAscii().constData(), &result) == SWITCH_STATUS_SUCCESS)
+ {
+ _settings->setValue("indev", nindev);
+ }
+ else
+ {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error setting indev from #%d to #%d on mod_portaudio!\n",
+ indev, nindev);
+ QMessageBox::critical(0, tr("Unable to save settings"),
+ tr("There was an error changing the indev.\nPlease report this bug."),
+ QMessageBox::Ok);
+ }
+ }
+
+ if (noutdev!= outdev)
+ {
+ if (g_FSHost.sendCmd("pa", QString("outdev #%1").arg(noutdev).toAscii().constData(), &result) == SWITCH_STATUS_SUCCESS)
+ {
+ _settings->setValue("outdev", noutdev);
+ }
+ else
+ {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error setting outdev from #%d to #%d on mod_portaudio!\n",
+ outdev, noutdev);
+ QMessageBox::critical(0, tr("Unable to save settings"),
+ tr("There was an error changing the outdev.\nPlease report this bug."),
+ QMessageBox::Ok);
+ }
+ }
+ if (nringdev != ringdev)
+ {
+ if (g_FSHost.sendCmd("pa", QString("ringdev #%1").arg(nringdev).toAscii().constData(), &result) == SWITCH_STATUS_SUCCESS)
+ {
+ _settings->setValue("ringdev", nringdev);
+ }
+ else
+ {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error setting ringdev from #%d to #%d on mod_portaudio!\n",
+ nringdev, nringdev);
+ QMessageBox::critical(0, tr("Unable to save settings"),
+ tr("There was an error changing the ringdev.\nPlease report this bug."),
+ QMessageBox::Ok);
+ }
+ }
+
_settings->endGroup();
_settings->endGroup();
}
if (g_FSHost.sendCmd("pa", "devlist xml", &result) != SWITCH_STATUS_SUCCESS)
{
QMessageBox::critical(0, tr("PortAudio error" ),
- tr("Error querying audio devices."),
- QMessageBox::Ok);
+ tr("Error querying audio devices."),
+ QMessageBox::Ok);
return;
}
tr("Error parsing output xml from pa devlist.\n%1 (Line:%2, Col:%3).").arg(errorMsg,
errorLine,
errorColumn),
- QMessageBox::Ok);
+ QMessageBox::Ok);
return;
}
QDomElement root = _xmlPaDevList.documentElement();
{
QMessageBox::critical(0, tr("PortAudio error" ),
tr("Error parsing output xml from pa devlist. Root tag is not <xml>."),
- QMessageBox::Ok);
+ QMessageBox::Ok);
return;
}
QDomElement devices = root.firstChildElement("devices");
{
QMessageBox::critical(0, tr("PortAudio error" ),
tr("Error parsing output xml from pa devlist. There is no <devices> tag."),
- QMessageBox::Ok);
+ QMessageBox::Ok);
return;
}
{
QMessageBox::critical(0, tr("PortAudio error" ),
tr("Error parsing output xml from pa devlist. There is no <device> tag."),
- QMessageBox::Ok);
+ QMessageBox::Ok);
return;
}
{
QMessageBox::critical(0, tr("PortAudio error" ),
tr("Error parsing output xml from pa devlist. There is no <bindings> tag."),
- QMessageBox::Ok);
+ QMessageBox::Ok);
return;
}
{
QMessageBox::critical(0, tr("PortAudio error" ),
tr("Error parsing output xml from pa devlist. There are no bindings."),
- QMessageBox::Ok);
+ QMessageBox::Ok);
return;
}