提交 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) ...@@ -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())
......
...@@ -4,7 +4,7 @@ ...@@ -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() ...@@ -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() ...@@ -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() ...@@ -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);
......
...@@ -12,8 +12,10 @@ class QSettings; ...@@ -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: ...@@ -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;
}; };
......
...@@ -20,7 +20,7 @@ ...@@ -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">
......
#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) : ...@@ -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() ...@@ -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);
......
...@@ -18,6 +18,8 @@ public slots: ...@@ -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;
......
...@@ -96,7 +96,7 @@ ...@@ -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 @@ ...@@ -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>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论