From bc835175bade0a17334ce119779f06b7cd5da5ec Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jo=C3=A3o=20Mesquita?= <jmesquita@freeswitch.org>
Date: Thu, 14 Jan 2010 04:54:03 +0000
Subject: [PATCH] Edit gateway works too. Now we need to start parsing events
 right.

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@16301 d0543943-73ff-0310-b7d9-9358b9ac24b2
---
 fscomm/conf/freeswitch.xml           |  3 --
 fscomm/preferences/accountdialog.cpp | 41 ++++++++++++++++++++++++++--
 fscomm/preferences/accountdialog.h   |  1 +
 fscomm/preferences/prefaccounts.cpp  | 28 +++++++++++++++++++
 fscomm/preferences/prefdialog.ui     |  2 +-
 5 files changed, 69 insertions(+), 6 deletions(-)

diff --git a/fscomm/conf/freeswitch.xml b/fscomm/conf/freeswitch.xml
index c11c8a5365..60d3190b78 100644
--- a/fscomm/conf/freeswitch.xml
+++ b/fscomm/conf/freeswitch.xml
@@ -139,9 +139,6 @@
 			</global_settings>
 			<profiles>
 				<profile name="softphone">
-					<gateways>
-						<X-PRE-PROCESS cmd="include" data="accounts/*.xml"/>
-					</gateways>
 					<settings>
 						<!--<param name="media-option" value="bypass-media-after-att-xfer"/>-->
 						<param name="user-agent-string" value="FreeSWITCH/FSComm"/>
diff --git a/fscomm/preferences/accountdialog.cpp b/fscomm/preferences/accountdialog.cpp
index 9e35d1ea6c..819514ac96 100644
--- a/fscomm/preferences/accountdialog.cpp
+++ b/fscomm/preferences/accountdialog.cpp
@@ -57,6 +57,45 @@ void AccountDialog::addExtraParam()
     ui->sofiaExtraParamTable->setItem(ui->sofiaExtraParamTable->rowCount()-1,1,paramValItem);
 }
 
+void AccountDialog::readConfig()
+{
+    _settings->beginGroup("FreeSWITCH/conf/sofia.conf/profiles/profile/gateways");
+    _settings->beginGroup(_accId);
+
+    _settings->beginGroup("gateway/attrs");
+    ui->sofiaGwNameEdit->setText(_settings->value("name").toString());
+    _settings->endGroup();
+
+    _settings->beginGroup("gateway/params");
+    ui->sofiaGwUsernameEdit->setText(_settings->value("username").toString());
+    ui->sofiaGwRealmEdit->setText(_settings->value("realm").toString());
+    ui->sofiaGwPasswordEdit->setText(_settings->value("password").toString());
+    ui->sofiaGwExtensionEdit->setText(_settings->value("extension").toString());
+    ui->sofiaGwExpireSecondsSpin->setValue(_settings->value("expire-seconds").toInt());
+    ui->sofiaGwRegisterCombo->setCurrentIndex(ui->sofiaGwRegisterCombo->findText(_settings->value("register").toString(),
+                                                                                 Qt::MatchExactly));
+    ui->sofiaGwRegisterTransportCombo->setCurrentIndex(ui->sofiaGwRegisterTransportCombo->findText(_settings->value("register-transport").toString(),
+                                                                                                   Qt::MatchExactly));
+    ui->sofiaGwRetrySecondsSpin->setValue(_settings->value("retry-seconds").toInt());
+    _settings->endGroup();
+
+    _settings->beginGroup("gateway/customParams");
+    int row = 0;
+    foreach(QString k, _settings->childKeys())
+    {
+        row++;
+        ui->sofiaExtraParamTable->setRowCount(row);
+        QTableWidgetItem *varName = new QTableWidgetItem(k);
+        QTableWidgetItem *varVal = new QTableWidgetItem(_settings->value(k).toString());
+        ui->sofiaExtraParamTable->setItem(row-1, 0,varName);
+        ui->sofiaExtraParamTable->setItem(row-1, 1,varVal);
+    }
+    _settings->endGroup();
+
+    _settings->endGroup();
+    _settings->endGroup();
+}
+
 void AccountDialog::writeConfig()
 {
     _settings->beginGroup("FreeSWITCH/conf/sofia.conf/profiles/profile/gateways");
@@ -91,8 +130,6 @@ void AccountDialog::writeConfig()
 
     _settings->endGroup();
 
-    _settings->endGroup();
-
     QString res;
     if (g_FSHost.sendCmd("sofia", "profile softphone rescan", &res) != SWITCH_STATUS_SUCCESS)
     {
diff --git a/fscomm/preferences/accountdialog.h b/fscomm/preferences/accountdialog.h
index 413f0c0a99..1a9504180c 100644
--- a/fscomm/preferences/accountdialog.h
+++ b/fscomm/preferences/accountdialog.h
@@ -16,6 +16,7 @@ public:
     ~AccountDialog();
     void clear();
     void setAccId(QString);
+    void readConfig();
 
 signals:
     void gwAdded();
diff --git a/fscomm/preferences/prefaccounts.cpp b/fscomm/preferences/prefaccounts.cpp
index f14f8b51eb..3694963234 100644
--- a/fscomm/preferences/prefaccounts.cpp
+++ b/fscomm/preferences/prefaccounts.cpp
@@ -10,6 +10,7 @@ PrefAccounts::PrefAccounts(Ui::PrefDialog *ui) :
     _accDlg = NULL;
     connect(_ui->sofiaGwAddBtn, SIGNAL(clicked()), this, SLOT(addAccountBtnClicked()));
     connect(_ui->sofiaGwRemBtn, SIGNAL(clicked()), this, SLOT(remAccountBtnClicked()));
+    connect(_ui->sofiaGwEditBtn, SIGNAL(clicked()), this, SLOT(editAccountBtnClicked()));
 }
 
 void PrefAccounts::addAccountBtnClicked()
@@ -42,6 +43,33 @@ void PrefAccounts::addAccountBtnClicked()
     _accDlg->activateWindow();
 }
 
+void PrefAccounts::editAccountBtnClicked()
+{
+    QList<QTableWidgetSelectionRange> selList = _ui->accountsTable->selectedRanges();
+
+    if (selList.isEmpty())
+        return;
+    QTableWidgetSelectionRange range = selList[0];
+
+    QString uuid = _ui->accountsTable->item(range.topRow(),0)->data(Qt::UserRole).toString();
+
+    if (!_accDlg)
+    {
+        _accDlg = new AccountDialog(uuid);
+        connect(_accDlg, SIGNAL(gwAdded()), this, SLOT(readConfig()));
+    }
+    else
+    {
+        _accDlg->setAccId(uuid);
+    }
+
+    _accDlg->readConfig();
+
+    _accDlg->show();
+    _accDlg->raise();
+    _accDlg->activateWindow();
+}
+
 void PrefAccounts::remAccountBtnClicked()
 {
     QList<QTableWidgetSelectionRange> sel = _ui->accountsTable->selectedRanges();
diff --git a/fscomm/preferences/prefdialog.ui b/fscomm/preferences/prefdialog.ui
index 1ed428f5ef..2ec999747b 100644
--- a/fscomm/preferences/prefdialog.ui
+++ b/fscomm/preferences/prefdialog.ui
@@ -169,7 +169,7 @@
          <item>
           <widget class="QPushButton" name="sofiaGwEditBtn">
            <property name="enabled">
-            <bool>false</bool>
+            <bool>true</bool>
            </property>
            <property name="text">
             <string>Edit</string>