提交 18d33240 authored 作者: João Mesquita's avatar João Mesquita

Configuration is more mature now. We can add and remove several accounts. Still…

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
上级 0b4a7b63
......@@ -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())
......
......@@ -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);
......
......@@ -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;
};
......
......@@ -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">
......
#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);
......
......@@ -18,6 +18,8 @@ public slots:
private slots:
void addAccountBtnClicked();
void editAccountBtnClicked();
void remAccountBtnClicked();
private:
Ui::PrefDialog *_ui;
......
......@@ -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>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论