return;
}
- if (group == "params")
+ if (group == "params" || group == "customParams")
{
_settings->beginGroup(group);
foreach(QString param, _settings->childKeys())
#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)
{
_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());
_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(),
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);
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();
void changeEvent(QEvent *e);
private:
- int _accId;
+ QString _accId;
Ui::AccountDialog *ui;
QSettings *_settings;
};
<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)
_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;
_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);
private slots:
void addAccountBtnClicked();
+ void editAccountBtnClicked();
+ void remAccountBtnClicked();
private:
Ui::PrefDialog *_ui;
<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">
</item>
<item>
<widget class="QPushButton" name="sofiaGwEditBtn">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
<property name="text">
<string>Edit</string>
</property>