123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268 |
- #include <QtGui>
- #include "accountdialog.h"
- #include "ui_accountdialog.h"
- AccountDialog::AccountDialog(QWidget *parent) :
- QDialog(parent),
- ui(new Ui::AccountDialog)
- {
- ui->setupUi(this);
- connect(this, SIGNAL(accepted()), this, SLOT(writeConfig()));
- connect(ui->sofiaExtraParamAddBtn, SIGNAL(clicked()), this, SLOT(addExtraParam()));
- connect(ui->sofiaExtraParamRemBtn, SIGNAL(clicked()), this, SLOT(remExtraParam()));
- connect(ui->clidSettingsCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(clidSettingsComboChanged(int)));
- connect(ui->codecSettingsCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(codecSettingsComboChanged(int)));
- ui->sofiaExtraParamTable->horizontalHeader()->setStretchLastSection(true);
- ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->codecPage));
- ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->clidPage));
- }
- AccountDialog::~AccountDialog()
- {
- delete ui;
- }
- void AccountDialog::codecSettingsComboChanged(int index)
- {
- if (index == 0)
- ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->codecPage));
- else
- ui->tabWidget->insertTab(1,ui->codecPage,tr("Codecs"));
- }
- void AccountDialog::clidSettingsComboChanged(int index)
- {
- if (index == 0)
- ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->clidPage));
- else
- ui->tabWidget->insertTab(1,ui->clidPage,tr("Caller ID"));
- }
- void AccountDialog::remExtraParam()
- {
- QList<QTableWidgetSelectionRange> sel = ui->sofiaExtraParamTable->selectedRanges();
- foreach(QTableWidgetSelectionRange range, sel)
- {
- int offset =0;
- for(int row = range.topRow(); row<=range.bottomRow(); row++)
- {
- ui->sofiaExtraParamTable->removeRow(row-offset);
- offset++;
- }
- }
- }
- void AccountDialog::addExtraParam()
- {
- bool ok;
- QString paramName = QInputDialog::getText(this, tr("Add parameter."),
- tr("New parameter name:"), QLineEdit::Normal,
- NULL, &ok);
- if (!ok)
- return;
- QString paramVal = QInputDialog::getText(this, tr("Add parameter."),
- tr("New parameter value:"), QLineEdit::Normal,
- NULL, &ok);
- if (!ok)
- return;
- QTableWidgetItem* paramNameItem = new QTableWidgetItem(paramName);
- QTableWidgetItem* paramValItem = new QTableWidgetItem(paramVal);
- ui->sofiaExtraParamTable->setRowCount(ui->sofiaExtraParamTable->rowCount()+1);
- ui->sofiaExtraParamTable->setItem(ui->sofiaExtraParamTable->rowCount()-1,0,paramNameItem);
- ui->sofiaExtraParamTable->setItem(ui->sofiaExtraParamTable->rowCount()-1,1,paramValItem);
- ui->sofiaExtraParamTable->resizeColumnsToContents();
- ui->sofiaExtraParamTable->resizeRowsToContents();
- ui->sofiaExtraParamTable->horizontalHeader()->setStretchLastSection(true);
- }
- /* TODO: We need to figure out the callerID thing... */
- void AccountDialog::readConfig()
- {
- /* We already know the name of the gateway, so... */
- ui->sofiaGwNameEdit->setText(_name);
- ISettings settings(this);
- QDomElement cfg = settings.getConfigNode("sofia.conf");
- QDomNodeList nl = cfg.elementsByTagName("gateway");
- for (int i = 0; i < nl.count(); i++) {
- QDomElement gw = nl.at(i).toElement();
- if (gw.attributeNode("name").value() == _name) {
- /* Iterate the params and set the values */
- QDomNodeList params = gw.elementsByTagName("param");
- int row = 0; /* Used for extra params */
- ui->sofiaExtraParamTable->clearContents();
- for (int j = 0; j < params.count(); j++) {
- QDomElement param = params.at(j).toElement();
- QString var = param.attributeNode("name").value();
- QString val = param.attributeNode("value").value();
- if ( var == "username" ) {
- ui->sofiaGwUsernameEdit->setText(val);
- } else if ( var == "realm" ) {
- ui->sofiaGwRealmEdit->setText(val);
- } else if ( var == "password" ) {
- ui->sofiaGwPasswordEdit->setText(val);
- } else if ( var == "expire-seconds" ) {
- ui->sofiaGwExpireSecondsSpin->setValue(val.toInt());
- } else if ( var == "register" ) {
- ui->sofiaGwRegisterCombo->setCurrentIndex(ui->sofiaGwRegisterCombo->findText(val, Qt::MatchExactly));
- } else if ( var == "register-transport" ) {
- ui->sofiaGwRegisterTransportCombo->setCurrentIndex(ui->sofiaGwRegisterTransportCombo->findText(val, Qt::MatchExactly));
- } else if ( var == "retry-seconds" ) {
- ui->sofiaGwRetrySecondsSpin->setValue(val.toInt());
- } else {
- /* Set custom parameters */
- row++;
- ui->sofiaExtraParamTable->setRowCount(row);
- QTableWidgetItem *varName = new QTableWidgetItem(var);
- QTableWidgetItem *varVal = new QTableWidgetItem(val);
- ui->sofiaExtraParamTable->setItem(row-1, 0,varName);
- ui->sofiaExtraParamTable->setItem(row-1, 1,varVal);
- }
- }
- /* Stop processing the gateway list */
- break;
- }
- }
- ui->sofiaExtraParamTable->resizeColumnsToContents();
- ui->sofiaExtraParamTable->resizeRowsToContents();
- ui->sofiaExtraParamTable->horizontalHeader()->setStretchLastSection(true);
- }
- /* TODO: Figure out the callerID thing... */
- void AccountDialog::writeConfig()
- {
- /* TODO: This is where we need to figure out the caller ID
- if (ui->clidSettingsCombo->currentIndex() == 0)
- {
- settings->remove("caller_id_name");
- settings->remove("caller_id_num");
- } else {
- settings->setValue("caller_id_name", ui->sofiaCallerIDName->text());
- settings->setValue("caller_id_num", ui->sofiaCallerIDNum->text());
- }
- */
- ISettings settings(this);
- QDomElement cfg = settings.getConfigNode("sofia.conf");
- /* First check to see if we are editing */
- if (!_name.isEmpty()) {
- /* Find our gateway */
- QDomElement gw;
- QDomNodeList gws = cfg.elementsByTagName("gateway");
- for (int i = 0; i < gws.count(); i++) {
- if ( gws.at(i).toElement().attributeNode("name").value() == _name) {
- gw = gws.at(i).toElement();
- /* Set the new gateway name */
- if ( _name != ui->sofiaGwNameEdit->text() ) {
- _name = ui->sofiaGwNameEdit->text();
- gws.at(i).toElement().attributeNode("name").setValue(ui->sofiaGwNameEdit->text());
- }
- break;
- }
- }
- if ( gw.isNull() ) {
- qDebug() << "Hey, there is no gateway!";
- return;
- }
- /* Found the gateway, now iterate the parameters */
- QDomNodeList params = gw.elementsByTagName("param");
- for (int i = 0; i < params.count(); i++) {
- QDomElement param = params.at(i).toElement();
- QString var = param.attributeNode("name").value();
- QDomAttr val = param.attributeNode("value");
- if ( var == "username" ) {
- val.setValue(ui->sofiaGwUsernameEdit->text());
- } else if ( var == "realm" ) {
- val.setValue(ui->sofiaGwRealmEdit->text());
- } else if ( var == "password" ) {
- val.setValue(ui->sofiaGwPasswordEdit->text());
- } else if ( var == "expire-seconds" ) {
- val.setValue(QString::number(ui->sofiaGwExpireSecondsSpin->value()));
- } else if ( var == "register" ) {
- val.setValue(ui->sofiaGwRegisterCombo->currentText());
- } else if ( var == "register-transport" ) {
- val.setValue(ui->sofiaGwRegisterTransportCombo->currentText());
- } else if ( var == "retry-seconds" ) {
- val.setValue(QString::number(ui->sofiaGwRetrySecondsSpin->value()));
- }
- }
- /* Set extra parameters */
- QDomDocument d = gw.toDocument();
- for (int i = 0; i< ui->sofiaExtraParamTable->rowCount(); i++)
- {
- QDomElement ePar = d.createElement("param");
- QDomAttr var = d.createAttribute(ui->sofiaExtraParamTable->item(i, 0)->text());
- ePar.appendChild(var);
- QDomAttr val = d.createAttribute(ui->sofiaExtraParamTable->item(i, 1)->text());
- ePar.appendChild(val);
- gw.appendChild(ePar);
- }
- } else {
- QDomElement gws = cfg.elementsByTagName("gateways").at(0).toElement();
- QDomDocument d = gws.toDocument();
- QDomElement nGw = d.createElement("gateway");
- gws.insertAfter(nGw, QDomNode());
- nGw.setAttribute("name",ui->sofiaGwNameEdit->text());
- /* Set each one of the parameters */
- setParam(nGw, "username", ui->sofiaGwUsernameEdit->text());
- setParam(nGw, "password", ui->sofiaGwPasswordEdit->text());
- setParam(nGw, "register", ui->sofiaGwRegisterCombo->currentText());
- setParam(nGw, "realm", ui->sofiaGwRealmEdit->text());
- setParam(nGw, "expire-seconds", QString::number(ui->sofiaGwExpireSecondsSpin->value()));
- setParam(nGw, "register-transport", ui->sofiaGwRegisterTransportCombo->currentText());
- setParam(nGw, "retry-seconds", QString::number(ui->sofiaGwRetrySecondsSpin->value()));
- for (int i = 0; i< ui->sofiaExtraParamTable->rowCount(); i++)
- {
- setParam(nGw, ui->sofiaExtraParamTable->item(i, 0)->text(), ui->sofiaExtraParamTable->item(i, 1)->text());
- }
- }
- settings.setConfigNode(cfg, "sofia.conf");
- emit gwAdded(_name);
- }
- void AccountDialog::setParam(QDomElement &parent, QString name, QString value) {
- QDomDocument d = parent.toDocument();
- QDomElement e = d.createElement("param");
- e.setAttribute("name", name);
- e.setAttribute("value", value);
- parent.appendChild(e);
- }
- void AccountDialog::clear()
- {
- ui->sofiaExtraParamTable->clearContents();
- ui->sofiaExtraParamTable->setRowCount(0);
- ui->sofiaGwNameEdit->clear();
- ui->sofiaGwUsernameEdit->clear();
- ui->sofiaGwRealmEdit->clear();
- ui->sofiaGwPasswordEdit->clear();
- ui->sofiaGwExpireSecondsSpin->setValue(60);
- ui->sofiaGwRegisterCombo->setCurrentIndex(0);
- ui->sofiaGwRegisterTransportCombo->setCurrentIndex(0);
- ui->sofiaGwRetrySecondsSpin->setValue(30);
- }
- void AccountDialog::changeEvent(QEvent *e)
- {
- QDialog::changeEvent(e);
- switch (e->type()) {
- case QEvent::LanguageChange:
- ui->retranslateUi(this);
- break;
- default:
- break;
- }
- }
|