#include #include "prefdialog.h" #include "ui_prefdialog.h" #include "prefportaudio.h" #include "prefsofia.h" #include "prefaccounts.h" PrefDialog::PrefDialog(QWidget *parent) : QDialog(parent), ui(new Ui::PrefDialog) { ui->setupUi(this); connect(this, SIGNAL(accepted()), this, SLOT(writeConfig())); connect(ui->buttonBox, SIGNAL(clicked(QAbstractButton*)), this, SLOT(clicked(QAbstractButton*))); _pref_accounts = new PrefAccounts(ui); _mod_portaudio = new PrefPortaudio(ui, this); connect(_mod_portaudio, SIGNAL(preprocessorsApplied(QStringList)), this, SIGNAL(preprocessorsApplied(QStringList))); _mod_sofia = new PrefSofia(ui, this); readConfig(); } PrefDialog::~PrefDialog() { delete ui; } void PrefDialog::clicked(QAbstractButton *b) { if (ui->buttonBox->buttonRole(b) == QDialogButtonBox::ApplyRole) { writeConfig(); readConfig(); } if ( ui->buttonBox->buttonRole(b) == QDialogButtonBox::RejectRole) { /* This doesn't really work because we need to reset the DOM as well to discard changes... */ readConfig(); } } void PrefDialog::writeConfig() { /* Ask modules to write their configs. */ _mod_portaudio->writeConfig(); _mod_sofia->writeConfig(); _pref_accounts->writeConfig(); /* Write it to file */ ISettings settings(this); settings.saveToFile(); /* Re-read the configuration to memory */ const char *err; switch_xml_t xml_root; if ((xml_root = switch_xml_open_root(1, &err))) { switch_xml_free(xml_root); } else { QMessageBox::critical(0, tr("Unable to save settings"), tr("There was an error saving your settings.\nPlease report this bug.\n%1").arg(err), QMessageBox::Ok); return; } /* Tell modules new config is in memory so they get a chance */ _mod_portaudio->postWriteConfig(); _pref_accounts->postWriteConfig(); } void PrefDialog::changeEvent(QEvent *e) { QDialog::changeEvent(e); switch (e->type()) { case QEvent::LanguageChange: ui->retranslateUi(this); break; default: break; } } void PrefDialog::readConfig() { _pref_accounts->readConfig(); _mod_portaudio->readConfig(); _mod_sofia->readConfig(); }