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
This commit is contained in:
João Mesquita 2010-01-14 03:25:27 +00:00
parent 0b4a7b63a5
commit 18d33240b8
7 changed files with 91 additions and 8 deletions

View File

@ -91,7 +91,7 @@ void XMLBinding::parseGroup(QXmlStreamWriter *streamWriter, QString group)
return; return;
} }
if (group == "params") if (group == "params" || group == "customParams")
{ {
_settings->beginGroup(group); _settings->beginGroup(group);
foreach(QString param, _settings->childKeys()) foreach(QString param, _settings->childKeys())

View File

@ -4,7 +4,7 @@
#include "ui_accountdialog.h" #include "ui_accountdialog.h"
#include "fshost.h" #include "fshost.h"
AccountDialog::AccountDialog(int accId, QWidget *parent) : AccountDialog::AccountDialog(QString accId, QWidget *parent) :
QDialog(parent), QDialog(parent),
_accId(accId), _accId(accId),
ui(new Ui::AccountDialog) ui(new Ui::AccountDialog)
@ -61,7 +61,7 @@ void AccountDialog::writeConfig()
{ {
_settings->beginGroup("FreeSWITCH/conf/sofia.conf/profiles/profile/gateways"); _settings->beginGroup("FreeSWITCH/conf/sofia.conf/profiles/profile/gateways");
_settings->beginGroup(QString::number(_accId)); _settings->beginGroup(_accId);
_settings->beginGroup("gateway/attrs"); _settings->beginGroup("gateway/attrs");
_settings->setValue("name", ui->sofiaGwNameEdit->text()); _settings->setValue("name", ui->sofiaGwNameEdit->text());
@ -77,6 +77,9 @@ void AccountDialog::writeConfig()
_settings->setValue("register", ui->sofiaGwRegisterCombo->currentText()); _settings->setValue("register", ui->sofiaGwRegisterCombo->currentText());
_settings->setValue("register-transport", ui->sofiaGwRegisterTransportCombo->currentText()); _settings->setValue("register-transport", ui->sofiaGwRegisterTransportCombo->currentText());
_settings->setValue("retry-seconds", ui->sofiaGwRetrySecondsSpin->value()); _settings->setValue("retry-seconds", ui->sofiaGwRetrySecondsSpin->value());
_settings->endGroup();
_settings->beginGroup("gateway/customParams");
for (int i = 0; i< ui->sofiaExtraParamTable->rowCount(); i++) for (int i = 0; i< ui->sofiaExtraParamTable->rowCount(); i++)
{ {
_settings->setValue(ui->sofiaExtraParamTable->item(i, 0)->text(), _settings->setValue(ui->sofiaExtraParamTable->item(i, 0)->text(),
@ -97,6 +100,27 @@ void AccountDialog::writeConfig()
emit gwAdded(); 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) void AccountDialog::changeEvent(QEvent *e)
{ {
QDialog::changeEvent(e); QDialog::changeEvent(e);

View File

@ -12,8 +12,10 @@ class QSettings;
class AccountDialog : public QDialog { class AccountDialog : public QDialog {
Q_OBJECT Q_OBJECT
public: public:
AccountDialog(int accId, QWidget *parent = 0); AccountDialog(QString accId, QWidget *parent = 0);
~AccountDialog(); ~AccountDialog();
void clear();
void setAccId(QString);
signals: signals:
void gwAdded(); void gwAdded();
@ -27,7 +29,7 @@ protected:
void changeEvent(QEvent *e); void changeEvent(QEvent *e);
private: private:
int _accId; QString _accId;
Ui::AccountDialog *ui; Ui::AccountDialog *ui;
QSettings *_settings; QSettings *_settings;
}; };

View File

@ -20,7 +20,7 @@
<item> <item>
<widget class="QTabWidget" name="tabWidget"> <widget class="QTabWidget" name="tabWidget">
<property name="currentIndex"> <property name="currentIndex">
<number>1</number> <number>0</number>
</property> </property>
<widget class="QWidget" name="tab"> <widget class="QWidget" name="tab">
<attribute name="title"> <attribute name="title">

View File

@ -1,6 +1,7 @@
#include <QtGui> #include <QtGui>
#include "prefaccounts.h" #include "prefaccounts.h"
#include "accountdialog.h" #include "accountdialog.h"
#include "fshost.h"
PrefAccounts::PrefAccounts(Ui::PrefDialog *ui) : PrefAccounts::PrefAccounts(Ui::PrefDialog *ui) :
_ui(ui) _ui(ui)
@ -8,21 +9,70 @@ PrefAccounts::PrefAccounts(Ui::PrefDialog *ui) :
_settings = new QSettings(); _settings = new QSettings();
_accDlg = NULL; _accDlg = NULL;
connect(_ui->sofiaGwAddBtn, SIGNAL(clicked()), this, SLOT(addAccountBtnClicked())); connect(_ui->sofiaGwAddBtn, SIGNAL(clicked()), this, SLOT(addAccountBtnClicked()));
connect(_ui->sofiaGwRemBtn, SIGNAL(clicked()), this, SLOT(remAccountBtnClicked()));
} }
void PrefAccounts::addAccountBtnClicked() void PrefAccounts::addAccountBtnClicked()
{ {
if (!_accDlg) 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())); 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->show();
_accDlg->raise(); _accDlg->raise();
_accDlg->activateWindow(); _accDlg->activateWindow();
} }
void PrefAccounts::remAccountBtnClicked()
{
QList<QTableWidgetSelectionRange> 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() void PrefAccounts::writeConfig()
{ {
return; return;
@ -41,9 +91,11 @@ void PrefAccounts::readConfig()
_settings->beginGroup(accId); _settings->beginGroup(accId);
_settings->beginGroup("gateway/attrs"); _settings->beginGroup("gateway/attrs");
QTableWidgetItem *item0 = new QTableWidgetItem(_settings->value("name").toString()); QTableWidgetItem *item0 = new QTableWidgetItem(_settings->value("name").toString());
item0->setData(Qt::UserRole, accId);
_settings->endGroup(); _settings->endGroup();
_settings->beginGroup("gateway/params"); _settings->beginGroup("gateway/params");
QTableWidgetItem *item1 = new QTableWidgetItem(_settings->value("username").toString()); QTableWidgetItem *item1 = new QTableWidgetItem(_settings->value("username").toString());
item1->setData(Qt::UserRole, accId);
_settings->endGroup(); _settings->endGroup();
_settings->endGroup(); _settings->endGroup();
_ui->accountsTable->setRowCount(_ui->accountsTable->rowCount()+1); _ui->accountsTable->setRowCount(_ui->accountsTable->rowCount()+1);

View File

@ -18,6 +18,8 @@ public slots:
private slots: private slots:
void addAccountBtnClicked(); void addAccountBtnClicked();
void editAccountBtnClicked();
void remAccountBtnClicked();
private: private:
Ui::PrefDialog *_ui; Ui::PrefDialog *_ui;

View File

@ -96,7 +96,7 @@
<item row="0" column="1"> <item row="0" column="1">
<widget class="QStackedWidget" name="stackedWidget"> <widget class="QStackedWidget" name="stackedWidget">
<property name="currentIndex"> <property name="currentIndex">
<number>1</number> <number>0</number>
</property> </property>
<widget class="QWidget" name="generalPage"> <widget class="QWidget" name="generalPage">
<layout class="QVBoxLayout" name="verticalLayout_3"> <layout class="QVBoxLayout" name="verticalLayout_3">
@ -168,6 +168,9 @@
</item> </item>
<item> <item>
<widget class="QPushButton" name="sofiaGwEditBtn"> <widget class="QPushButton" name="sofiaGwEditBtn">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text"> <property name="text">
<string>Edit</string> <string>Edit</string>
</property> </property>