Revision
16298
Author
jmesquita
Date
2010-01-13 21:25:27 -0600 (Wed, 13 Jan 2010)

Log Message

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.

Modified Paths

Diff

Modified: freeswitch/trunk/fscomm/mod_qsettings/mod_qsettings.cpp (16297 => 16298)


--- freeswitch/trunk/fscomm/mod_qsettings/mod_qsettings.cpp	2010-01-14 02:32:20 UTC (rev 16297)
+++ freeswitch/trunk/fscomm/mod_qsettings/mod_qsettings.cpp	2010-01-14 03:25:27 UTC (rev 16298)
@@ -91,7 +91,7 @@
         return;
     }
 
-    if (group == "params")
+    if (group == "params" || group == "customParams")
     {
         _settings->beginGroup(group);
         foreach(QString param, _settings->childKeys())

Modified: freeswitch/trunk/fscomm/preferences/accountdialog.cpp (16297 => 16298)


--- freeswitch/trunk/fscomm/preferences/accountdialog.cpp	2010-01-14 02:32:20 UTC (rev 16297)
+++ freeswitch/trunk/fscomm/preferences/accountdialog.cpp	2010-01-14 03:25:27 UTC (rev 16298)
@@ -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 @@
 {
     _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 @@
     _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 @@
     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);

Modified: freeswitch/trunk/fscomm/preferences/accountdialog.h (16297 => 16298)


--- freeswitch/trunk/fscomm/preferences/accountdialog.h	2010-01-14 02:32:20 UTC (rev 16297)
+++ freeswitch/trunk/fscomm/preferences/accountdialog.h	2010-01-14 03:25:27 UTC (rev 16298)
@@ -12,8 +12,10 @@
 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 @@
     void changeEvent(QEvent *e);
 
 private:
-    int _accId;
+    QString _accId;
     Ui::AccountDialog *ui;
     QSettings *_settings;
 };

Modified: freeswitch/trunk/fscomm/preferences/accountdialog.ui (16297 => 16298)


--- freeswitch/trunk/fscomm/preferences/accountdialog.ui	2010-01-14 02:32:20 UTC (rev 16297)
+++ freeswitch/trunk/fscomm/preferences/accountdialog.ui	2010-01-14 03:25:27 UTC (rev 16298)
@@ -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">

Modified: freeswitch/trunk/fscomm/preferences/prefaccounts.cpp (16297 => 16298)


--- freeswitch/trunk/fscomm/preferences/prefaccounts.cpp	2010-01-14 02:32:20 UTC (rev 16297)
+++ freeswitch/trunk/fscomm/preferences/prefaccounts.cpp	2010-01-14 03:25:27 UTC (rev 16298)
@@ -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 @@
     _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 @@
         _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);

Modified: freeswitch/trunk/fscomm/preferences/prefaccounts.h (16297 => 16298)


--- freeswitch/trunk/fscomm/preferences/prefaccounts.h	2010-01-14 02:32:20 UTC (rev 16297)
+++ freeswitch/trunk/fscomm/preferences/prefaccounts.h	2010-01-14 03:25:27 UTC (rev 16298)
@@ -18,6 +18,8 @@
 
 private slots:
     void addAccountBtnClicked();
+    void editAccountBtnClicked();
+    void remAccountBtnClicked();
 
 private:
     Ui::PrefDialog *_ui;

Modified: freeswitch/trunk/fscomm/preferences/prefdialog.ui (16297 => 16298)


--- freeswitch/trunk/fscomm/preferences/prefdialog.ui	2010-01-14 02:32:20 UTC (rev 16297)
+++ freeswitch/trunk/fscomm/preferences/prefdialog.ui	2010-01-14 03:25:27 UTC (rev 16298)
@@ -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>