diff --git a/fscomm/FSComm.pro b/fscomm/FSComm.pro index 0934c124db..47a3629ecd 100644 --- a/fscomm/FSComm.pro +++ b/fscomm/FSComm.pro @@ -28,18 +28,22 @@ SOURCES += main.cpp \ mod_qsettings/mod_qsettings.cpp \ preferences/prefdialog.cpp \ preferences/prefportaudio.cpp \ - preferences/prefsofia.cpp + preferences/prefsofia.cpp \ + preferences/accountdialog.cpp HEADERS += mainwindow.h \ fshost.h \ call.h \ mod_qsettings/mod_qsettings.h \ preferences/prefdialog.h \ preferences/prefportaudio.h \ - preferences/prefsofia.h + preferences/prefsofia.h \ + preferences/accountdialog.h FORMS += mainwindow.ui \ - preferences/prefdialog.ui + preferences/prefdialog.ui \ + preferences/accountdialog.ui RESOURCES += resources.qrc OTHER_FILES += conf/portaudio.conf.xml \ conf/event_socket.conf.xml \ conf/freeswitch.xml \ - conf/sofia.conf.xml + conf/sofia.conf.xml \ + conf/account.conf.xml diff --git a/fscomm/conf/account.conf.xml b/fscomm/conf/account.conf.xml new file mode 100644 index 0000000000..4d65e8e318 --- /dev/null +++ b/fscomm/conf/account.conf.xml @@ -0,0 +1,17 @@ +<gateway name="${name}"> + <param name="username" value="${username}"/> + <param name="realm" value="${realm}"/> + <param name="from-user" value="${from-user}"/> + <param name="from-domain" value="${from-domain}"/> + <param name="password" value="${password}"/> + <param name="extension" value="${extension}"/> + <param name="proxy" value="${proxy}"/> + <param name="register-proxy" value="${register-proxy}"/> + <param name="expire-seconds" value="${expire-seconds}"/> + <param name="register" value="${register}"/> + <param name="register-transport" value="${register-transport}"/> + <param name="retry-seconds" value="${retry-seconds}"/> + <param name="caller-id-in-from" value="${caller-id-in-from}"/> + <param name="contact-params" value="${contact-params}"/> + <param name="ping" value="${ping}"/> +</gateway> diff --git a/fscomm/preferences/accountdialog.cpp b/fscomm/preferences/accountdialog.cpp new file mode 100644 index 0000000000..f690a7d367 --- /dev/null +++ b/fscomm/preferences/accountdialog.cpp @@ -0,0 +1,26 @@ +#include "accountdialog.h" +#include "ui_accountdialog.h" + +AccountDialog::AccountDialog(QWidget *parent) : + QDialog(parent), + ui(new Ui::AccountDialog) +{ + ui->setupUi(this); +} + +AccountDialog::~AccountDialog() +{ + delete ui; +} + +void AccountDialog::changeEvent(QEvent *e) +{ + QDialog::changeEvent(e); + switch (e->type()) { + case QEvent::LanguageChange: + ui->retranslateUi(this); + break; + default: + break; + } +} diff --git a/fscomm/preferences/accountdialog.h b/fscomm/preferences/accountdialog.h new file mode 100644 index 0000000000..7cb5673a3f --- /dev/null +++ b/fscomm/preferences/accountdialog.h @@ -0,0 +1,23 @@ +#ifndef ACCOUNTDIALOG_H +#define ACCOUNTDIALOG_H + +#include <QDialog> + +namespace Ui { + class AccountDialog; +} + +class AccountDialog : public QDialog { + Q_OBJECT +public: + AccountDialog(QWidget *parent = 0); + ~AccountDialog(); + +protected: + void changeEvent(QEvent *e); + +private: + Ui::AccountDialog *ui; +}; + +#endif // ACCOUNTDIALOG_H diff --git a/fscomm/preferences/accountdialog.ui b/fscomm/preferences/accountdialog.ui new file mode 100644 index 0000000000..acddb9eb05 --- /dev/null +++ b/fscomm/preferences/accountdialog.ui @@ -0,0 +1,272 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>AccountDialog</class> + <widget class="QDialog" name="AccountDialog"> + <property name="windowModality"> + <enum>Qt::WindowModal</enum> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>495</width> + <height>573</height> + </rect> + </property> + <property name="windowTitle"> + <string>Account</string> + </property> + <layout class="QFormLayout" name="formLayout"> + <item row="0" column="0"> + <widget class="QLabel" name="label"> + <property name="text"> + <string>name</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QLineEdit" name="sofiaGwNameEdit"/> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>username</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QLineEdit" name="sofiaGwUsernameEdit"/> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="label_3"> + <property name="text"> + <string>realm</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QLineEdit" name="sofiaGwRealmEdit"/> + </item> + <item row="3" column="0"> + <widget class="QLabel" name="label_4"> + <property name="text"> + <string>from-user</string> + </property> + </widget> + </item> + <item row="3" column="1"> + <widget class="QLineEdit" name="sofiaGwFromUserEdit"/> + </item> + <item row="4" column="0"> + <widget class="QLabel" name="label_5"> + <property name="text"> + <string>from-domain</string> + </property> + </widget> + </item> + <item row="4" column="1"> + <widget class="QLineEdit" name="sofiaGwFromDomainEdit"/> + </item> + <item row="5" column="0"> + <widget class="QLabel" name="label_6"> + <property name="text"> + <string>password</string> + </property> + </widget> + </item> + <item row="5" column="1"> + <widget class="QLineEdit" name="sofiaGwPasswordEdit"/> + </item> + <item row="6" column="0"> + <widget class="QLabel" name="label_7"> + <property name="text"> + <string>extension</string> + </property> + </widget> + </item> + <item row="6" column="1"> + <widget class="QLineEdit" name="sofiaGwExtensionEdit"/> + </item> + <item row="7" column="0"> + <widget class="QLabel" name="label_8"> + <property name="text"> + <string>proxy</string> + </property> + </widget> + </item> + <item row="7" column="1"> + <widget class="QLineEdit" name="sofiaGwProxyEdit"/> + </item> + <item row="8" column="0"> + <widget class="QLabel" name="label_9"> + <property name="text"> + <string>register-proxy</string> + </property> + </widget> + </item> + <item row="8" column="1"> + <widget class="QLineEdit" name="sofiaGwRegisterProxyEdit"/> + </item> + <item row="9" column="0"> + <widget class="QLabel" name="label_10"> + <property name="text"> + <string>expire-seconds</string> + </property> + </widget> + </item> + <item row="9" column="1"> + <widget class="QSpinBox" name="sofiaGwExpireSecondsSpin"> + <property name="value"> + <number>60</number> + </property> + </widget> + </item> + <item row="10" column="0"> + <widget class="QLabel" name="label_11"> + <property name="text"> + <string>register</string> + </property> + </widget> + </item> + <item row="10" column="1"> + <widget class="QComboBox" name="sofiaGwRegisterCombo"> + <item> + <property name="text"> + <string>true</string> + </property> + </item> + <item> + <property name="text"> + <string>false</string> + </property> + </item> + </widget> + </item> + <item row="11" column="0"> + <widget class="QLabel" name="label_12"> + <property name="text"> + <string>register-transport</string> + </property> + </widget> + </item> + <item row="11" column="1"> + <widget class="QComboBox" name="sofiaGwRegisterTransportCombo"> + <item> + <property name="text"> + <string>udp</string> + </property> + </item> + <item> + <property name="text"> + <string>tcp</string> + </property> + </item> + </widget> + </item> + <item row="12" column="0"> + <widget class="QLabel" name="label_13"> + <property name="text"> + <string>retry-seconds</string> + </property> + </widget> + </item> + <item row="12" column="1"> + <widget class="QSpinBox" name="sofiaGwRetrySecondsSpin"> + <property name="value"> + <number>30</number> + </property> + </widget> + </item> + <item row="13" column="0"> + <widget class="QLabel" name="label_15"> + <property name="text"> + <string>contact-params</string> + </property> + </widget> + </item> + <item row="13" column="1"> + <widget class="QLineEdit" name="sofiaGwContactParamsEdit"/> + </item> + <item row="14" column="0"> + <widget class="QLabel" name="label_14"> + <property name="text"> + <string>caller-id-in-from</string> + </property> + </widget> + </item> + <item row="15" column="0"> + <widget class="QLabel" name="label_16"> + <property name="text"> + <string>ping</string> + </property> + </widget> + </item> + <item row="15" column="1"> + <widget class="QSpinBox" name="sofiaGwPingSpin"> + <property name="value"> + <number>25</number> + </property> + </widget> + </item> + <item row="16" column="1"> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + <item row="14" column="1"> + <widget class="QComboBox" name="sofiaGwCallerIdInFromCombo"> + <item> + <property name="text"> + <string>false</string> + </property> + </item> + <item> + <property name="text"> + <string>true</string> + </property> + </item> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>AccountDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel"> + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel"> + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>AccountDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel"> + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel"> + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/fscomm/preferences/prefdialog.cpp b/fscomm/preferences/prefdialog.cpp index 8a53fc2120..05242f3f1f 100644 --- a/fscomm/preferences/prefdialog.cpp +++ b/fscomm/preferences/prefdialog.cpp @@ -3,6 +3,7 @@ #include "ui_prefdialog.h" #include "prefportaudio.h" #include "prefsofia.h" +#include "accountdialog.h" PrefDialog::PrefDialog(QWidget *parent) : QDialog(parent), @@ -11,7 +12,9 @@ PrefDialog::PrefDialog(QWidget *parent) : ui->setupUi(this); _settings = new QSettings(); connect(this, SIGNAL(accepted()), this, SLOT(writeConfig())); + connect(ui->sofiaGwAddBtn, SIGNAL(clicked()), this, SLOT(addAccountBtnClicked())); + _accDlg = NULL; _mod_portaudio = new PrefPortaudio(ui, this); _mod_sofia = new PrefSofia(ui, this); readConfig(); @@ -22,6 +25,16 @@ PrefDialog::~PrefDialog() delete ui; } +void PrefDialog::addAccountBtnClicked() +{ + if (!_accDlg) + _accDlg = new AccountDialog(); + + _accDlg->show(); + _accDlg->raise(); + _accDlg->activateWindow(); +} + void PrefDialog::writeConfig() { _mod_portaudio->writeConfig(); diff --git a/fscomm/preferences/prefdialog.h b/fscomm/preferences/prefdialog.h index 5ad01c852e..1c1ee66b04 100644 --- a/fscomm/preferences/prefdialog.h +++ b/fscomm/preferences/prefdialog.h @@ -8,6 +8,7 @@ class PrefPortaudio; class PrefSofia; +class AccountDialog; namespace Ui { class PrefDialog; @@ -23,11 +24,13 @@ protected: void changeEvent(QEvent *e); private slots: + void addAccountBtnClicked(); void writeConfig(); private: void readConfig(); QSettings *_settings; + AccountDialog *_accDlg; Ui::PrefDialog *ui; PrefPortaudio *_mod_portaudio; PrefSofia *_mod_sofia; diff --git a/fscomm/preferences/prefdialog.ui b/fscomm/preferences/prefdialog.ui index 276c89ed4c..2d8c7c7a26 100644 --- a/fscomm/preferences/prefdialog.ui +++ b/fscomm/preferences/prefdialog.ui @@ -64,6 +64,15 @@ <normaloff>:/images/pref_general.jpg</normaloff>:/images/pref_general.jpg</iconset> </property> </item> + <item> + <property name="text"> + <string>Accounts</string> + </property> + <property name="icon"> + <iconset resource="../resources.qrc"> + <normaloff>:/images/pref_accounts.jpg</normaloff>:/images/pref_accounts.jpg</iconset> + </property> + </item> <item> <property name="text"> <string>Sofia</string> @@ -87,9 +96,9 @@ <item row="0" column="1"> <widget class="QStackedWidget" name="stackedWidget"> <property name="currentIndex"> - <number>0</number> + <number>1</number> </property> - <widget class="QWidget" name="page_3"> + <widget class="QWidget" name="generalPage"> <layout class="QVBoxLayout" name="verticalLayout_3"> <item> <widget class="QGroupBox" name="groupBox_5"> @@ -122,7 +131,71 @@ </item> </layout> </widget> - <widget class="QWidget" name="page"> + <widget class="QWidget" name="accountsPage"> + <layout class="QHBoxLayout" name="horizontalLayout_5"> + <item> + <widget class="QTableWidget" name="sofiaGwListWidget"> + <property name="editTriggers"> + <set>QAbstractItemView::NoEditTriggers</set> + </property> + <column> + <property name="text"> + <string>Enabled</string> + </property> + </column> + <column> + <property name="text"> + <string>Name</string> + </property> + </column> + <column> + <property name="text"> + <string>Username</string> + </property> + </column> + </widget> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout_7"> + <item> + <widget class="QPushButton" name="sofiaGwAddBtn"> + <property name="text"> + <string>Add</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="sofiaGwRemBtn"> + <property name="text"> + <string>Remove</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="sofiaGwEditBtn"> + <property name="text"> + <string>Edit</string> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> + <widget class="QWidget" name="sofiaPage"> <layout class="QVBoxLayout" name="verticalLayout_2"> <item> <widget class="QTabWidget" name="tabWidget"> @@ -716,7 +789,7 @@ </item> </layout> </widget> - <widget class="QWidget" name="page_2"> + <widget class="QWidget" name="portaudioPage"> <layout class="QVBoxLayout" name="verticalLayout"> <item> <widget class="QGroupBox" name="groupBox_3"> diff --git a/fscomm/resources.qrc b/fscomm/resources.qrc index aedbf6a89f..bd71ace462 100644 --- a/fscomm/resources.qrc +++ b/fscomm/resources.qrc @@ -4,6 +4,7 @@ <file alias="pref_sip.png">resources/pref_sip.png</file> <file alias="pref_audio.gif">resources/pref_audio.gif</file> <file alias="pref_general.jpg">resources/pref_general.jpg</file> + <file alias="pref_accounts.jpg">resources/pref_accounts.jpg</file> </qresource> <qresource prefix="/confs"> <file alias="freeswitch.xml">conf/freeswitch.xml</file> @@ -11,6 +12,7 @@ <file alias="event_socket.conf.xml">conf/event_socket.conf.xml</file> <file alias="portaudio.conf.xml">conf/portaudio.conf.xml</file> <file alias="sofia.conf.xml">conf/sofia.conf.xml</file> + <file alias="account.conf.xml">conf/account.conf.xml</file> </qresource> <qresource prefix="/sounds"> <file alias="test.wav">resources/test.wav</file> diff --git a/fscomm/resources/pref_accounts.jpg b/fscomm/resources/pref_accounts.jpg new file mode 100644 index 0000000000..95292c82b6 Binary files /dev/null and b/fscomm/resources/pref_accounts.jpg differ