From: João Mesquita Date: Thu, 14 Jan 2010 03:25:27 +0000 (+0000) Subject: Configuration is more mature now. We can add and remove several accounts. Still have... X-Git-Tag: v1.0.6~756 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=18d33240b8b54cdd24efb47816d6b836056f30ab;p=thirdparty%2Ffreeswitch.git Configuration is more mature now. We can add and remove several accounts. Still have to edit account and start doing some work on the events to treat them right. git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@16298 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- diff --git a/fscomm/mod_qsettings/mod_qsettings.cpp b/fscomm/mod_qsettings/mod_qsettings.cpp index 84d577f2b8..73d22df62f 100644 --- a/fscomm/mod_qsettings/mod_qsettings.cpp +++ b/fscomm/mod_qsettings/mod_qsettings.cpp @@ -91,7 +91,7 @@ void XMLBinding::parseGroup(QXmlStreamWriter *streamWriter, QString group) return; } - if (group == "params") + if (group == "params" || group == "customParams") { _settings->beginGroup(group); foreach(QString param, _settings->childKeys()) diff --git a/fscomm/preferences/accountdialog.cpp b/fscomm/preferences/accountdialog.cpp index 3acb284d7e..ab05393093 100644 --- a/fscomm/preferences/accountdialog.cpp +++ b/fscomm/preferences/accountdialog.cpp @@ -4,7 +4,7 @@ #include "ui_accountdialog.h" #include "fshost.h" -AccountDialog::AccountDialog(int accId, QWidget *parent) : +AccountDialog::AccountDialog(QString accId, QWidget *parent) : QDialog(parent), _accId(accId), ui(new Ui::AccountDialog) @@ -61,7 +61,7 @@ void AccountDialog::writeConfig() { _settings->beginGroup("FreeSWITCH/conf/sofia.conf/profiles/profile/gateways"); - _settings->beginGroup(QString::number(_accId)); + _settings->beginGroup(_accId); _settings->beginGroup("gateway/attrs"); _settings->setValue("name", ui->sofiaGwNameEdit->text()); @@ -77,6 +77,9 @@ void AccountDialog::writeConfig() _settings->setValue("register", ui->sofiaGwRegisterCombo->currentText()); _settings->setValue("register-transport", ui->sofiaGwRegisterTransportCombo->currentText()); _settings->setValue("retry-seconds", ui->sofiaGwRetrySecondsSpin->value()); + _settings->endGroup(); + + _settings->beginGroup("gateway/customParams"); for (int i = 0; i< ui->sofiaExtraParamTable->rowCount(); i++) { _settings->setValue(ui->sofiaExtraParamTable->item(i, 0)->text(), @@ -97,6 +100,27 @@ void AccountDialog::writeConfig() emit gwAdded(); } +void AccountDialog::clear() +{ + ui->sofiaExtraParamTable->clearContents(); + ui->sofiaExtraParamTable->setRowCount(0); + + ui->sofiaGwNameEdit->clear(); + ui->sofiaGwUsernameEdit->clear(); + ui->sofiaGwRealmEdit->clear(); + ui->sofiaGwPasswordEdit->clear(); + ui->sofiaGwExtensionEdit->clear(); + ui->sofiaGwExpireSecondsSpin->setValue(60); + ui->sofiaGwRegisterCombo->setCurrentIndex(0); + ui->sofiaGwRegisterTransportCombo->setCurrentIndex(0); + ui->sofiaGwRetrySecondsSpin->setValue(30); +} + +void AccountDialog::setAccId(QString accId) +{ + _accId = accId; +} + void AccountDialog::changeEvent(QEvent *e) { QDialog::changeEvent(e); diff --git a/fscomm/preferences/accountdialog.h b/fscomm/preferences/accountdialog.h index 21ca7cffe0..413f0c0a99 100644 --- a/fscomm/preferences/accountdialog.h +++ b/fscomm/preferences/accountdialog.h @@ -12,8 +12,10 @@ class QSettings; class AccountDialog : public QDialog { Q_OBJECT public: - AccountDialog(int accId, QWidget *parent = 0); + AccountDialog(QString accId, QWidget *parent = 0); ~AccountDialog(); + void clear(); + void setAccId(QString); signals: void gwAdded(); @@ -27,7 +29,7 @@ protected: void changeEvent(QEvent *e); private: - int _accId; + QString _accId; Ui::AccountDialog *ui; QSettings *_settings; }; diff --git a/fscomm/preferences/accountdialog.ui b/fscomm/preferences/accountdialog.ui index bf29856d94..1db7978308 100644 --- a/fscomm/preferences/accountdialog.ui +++ b/fscomm/preferences/accountdialog.ui @@ -20,7 +20,7 @@ - 1 + 0 diff --git a/fscomm/preferences/prefaccounts.cpp b/fscomm/preferences/prefaccounts.cpp index 0f7da804ff..f14f8b51eb 100644 --- a/fscomm/preferences/prefaccounts.cpp +++ b/fscomm/preferences/prefaccounts.cpp @@ -1,6 +1,7 @@ #include #include "prefaccounts.h" #include "accountdialog.h" +#include "fshost.h" PrefAccounts::PrefAccounts(Ui::PrefDialog *ui) : _ui(ui) @@ -8,21 +9,70 @@ PrefAccounts::PrefAccounts(Ui::PrefDialog *ui) : _settings = new QSettings(); _accDlg = NULL; connect(_ui->sofiaGwAddBtn, SIGNAL(clicked()), this, SLOT(addAccountBtnClicked())); + connect(_ui->sofiaGwRemBtn, SIGNAL(clicked()), this, SLOT(remAccountBtnClicked())); } void PrefAccounts::addAccountBtnClicked() { if (!_accDlg) { - _accDlg = new AccountDialog(_ui->accountsTable->rowCount()); + QString uuid; + if (g_FSHost.sendCmd("create_uuid", "", &uuid) != SWITCH_STATUS_SUCCESS) + { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Could not create UUID for account. Reason: %s\n", uuid.toAscii().constData()); + return; + } + _accDlg = new AccountDialog(uuid); connect(_accDlg, SIGNAL(gwAdded()), this, SLOT(readConfig())); } + else + { + QString uuid; + if (g_FSHost.sendCmd("create_uuid", "", &uuid) != SWITCH_STATUS_SUCCESS) + { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Could not create UUID for account. Reason: %s\n", uuid.toAscii().constData()); + return; + } + _accDlg->setAccId(uuid); + _accDlg->clear(); + } _accDlg->show(); _accDlg->raise(); _accDlg->activateWindow(); } +void PrefAccounts::remAccountBtnClicked() +{ + QList sel = _ui->accountsTable->selectedRanges(); + int offset =0; + + foreach(QTableWidgetSelectionRange range, sel) + { + for(int row = range.topRow(); row<=range.bottomRow(); row++) + { + QTableWidgetItem *item = _ui->accountsTable->item(row-offset,0); + + _settings->beginGroup("FreeSWITCH/conf/sofia.conf/profiles/profile/gateways"); + _settings->remove(item->data(Qt::UserRole).toString()); + _settings->endGroup(); + _ui->accountsTable->removeRow(row-offset); + offset++; + } + } + + if (offset > 0) + { + QString res; + if (g_FSHost.sendCmd("sofia", "profile softphone rescan", &res) != SWITCH_STATUS_SUCCESS) + { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Could not rescan the softphone profile.\n"); + return; + } + readConfig(); + } +} + void PrefAccounts::writeConfig() { return; @@ -41,9 +91,11 @@ void PrefAccounts::readConfig() _settings->beginGroup(accId); _settings->beginGroup("gateway/attrs"); QTableWidgetItem *item0 = new QTableWidgetItem(_settings->value("name").toString()); + item0->setData(Qt::UserRole, accId); _settings->endGroup(); _settings->beginGroup("gateway/params"); QTableWidgetItem *item1 = new QTableWidgetItem(_settings->value("username").toString()); + item1->setData(Qt::UserRole, accId); _settings->endGroup(); _settings->endGroup(); _ui->accountsTable->setRowCount(_ui->accountsTable->rowCount()+1); diff --git a/fscomm/preferences/prefaccounts.h b/fscomm/preferences/prefaccounts.h index 2fbd6aa4ef..08ec5c18da 100644 --- a/fscomm/preferences/prefaccounts.h +++ b/fscomm/preferences/prefaccounts.h @@ -18,6 +18,8 @@ public slots: private slots: void addAccountBtnClicked(); + void editAccountBtnClicked(); + void remAccountBtnClicked(); private: Ui::PrefDialog *_ui; diff --git a/fscomm/preferences/prefdialog.ui b/fscomm/preferences/prefdialog.ui index e3aec50a93..1ed428f5ef 100644 --- a/fscomm/preferences/prefdialog.ui +++ b/fscomm/preferences/prefdialog.ui @@ -96,7 +96,7 @@ - 1 + 0 @@ -168,6 +168,9 @@ + + false + Edit