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;
}
if (group == "params")
if (group == "params" || group == "customParams")
{
_settings->beginGroup(group);
foreach(QString param, _settings->childKeys())

View File

@ -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);

View File

@ -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;
};

View File

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

View File

@ -1,6 +1,7 @@
#include <QtGui>
#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<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()
{
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);

View File

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

View File

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