summaryrefslogtreecommitdiff
path: root/pjsip-apps/src/pocketpj/SettingsDlg.cpp
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2008-08-13 13:56:24 +0000
committerBenny Prijono <bennylp@teluu.com>2008-08-13 13:56:24 +0000
commit34355a3f57bbc1f421fc200d34fb0e2599621918 (patch)
tree33e31be9c4e31d42aee837dcb3a9cc8e1b3e992b /pjsip-apps/src/pocketpj/SettingsDlg.cpp
parent73f0b593fb6854a35c8b0bf8bfe851aeb889da81 (diff)
Ticket #594: Improvements in PocketPJ Windows Mobile application: added TCP option, VAD option, option to select codec priority order, and auto-answer option
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2211 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip-apps/src/pocketpj/SettingsDlg.cpp')
-rw-r--r--pjsip-apps/src/pocketpj/SettingsDlg.cpp159
1 files changed, 134 insertions, 25 deletions
diff --git a/pjsip-apps/src/pocketpj/SettingsDlg.cpp b/pjsip-apps/src/pocketpj/SettingsDlg.cpp
index af49a1eb..1357044a 100644
--- a/pjsip-apps/src/pocketpj/SettingsDlg.cpp
+++ b/pjsip-apps/src/pocketpj/SettingsDlg.cpp
@@ -4,6 +4,7 @@
#include "stdafx.h"
#include "PocketPJ.h"
#include "SettingsDlg.h"
+#include <pjsua-lib/pjsua.h>
#include <atlbase.h>
#ifdef _DEBUG
@@ -26,14 +27,31 @@ static char THIS_FILE[] = __FILE__;
#define REG_BUDDY_X _T("Buddy%u")
#define REG_ENABLE_EC _T("EnableEC")
#define REG_EC_TAIL _T("ECTail")
+#define REG_ENABLE_VAD _T("EnableVAD")
+#define REG_ENABLE_TCP _T("EnableTCP")
+#define REG_CODEC_CNT _T("CodecCnt")
+#define REG_CODEC_X _T("Codec%u")
+#define REG_AUTO_ANSWER _T("AutoAnswer")
/////////////////////////////////////////////////////////////////////////////
// Settings
CPocketPJSettings::CPocketPJSettings()
: m_UseStun(FALSE), m_UseIce(FALSE), m_UseSrtp(FALSE), m_UsePublish(FALSE),
- m_EchoSuppress(TRUE), m_EcTail(200)
+ m_EchoSuppress(TRUE), m_EcTail(200), m_TCP(FALSE), m_VAD(FALSE),
+ m_AutoAnswer(FALSE)
{
+ /* Init codec list */
+#if defined(PJMEDIA_HAS_GSM_CODEC) && PJMEDIA_HAS_GSM_CODEC
+ m_Codecs.Add(_T("GSM"));
+#endif
+#if defined(PJMEDIA_HAS_G711_CODEC) && PJMEDIA_HAS_G711_CODEC
+ m_Codecs.Add(_T("PCMU"));
+ m_Codecs.Add(_T("PCMA"));
+#endif
+#if defined(PJMEDIA_HAS_SPEEX_CODEC) && PJMEDIA_HAS_SPEEX_CODEC
+ m_Codecs.Add(_T("Speex"));
+#endif
}
// Load from registry
@@ -76,21 +94,15 @@ void CPocketPJSettings::LoadRegistry()
dwordVal = 0;
if (key.QueryValue(dwordVal, REG_USE_STUN) == ERROR_SUCCESS) {
m_UseStun = dwordVal != 0;
- } else {
- m_UseStun = 0;
}
if (key.QueryValue(dwordVal, REG_USE_ICE) == ERROR_SUCCESS) {
m_UseIce = dwordVal != 0;
- } else {
- m_UseIce = 0;
}
if (key.QueryValue(dwordVal, REG_USE_SRTP) == ERROR_SUCCESS) {
m_UseSrtp = dwordVal != 0;
- } else {
- m_UseSrtp = 0;
}
@@ -102,15 +114,26 @@ void CPocketPJSettings::LoadRegistry()
cbData = sizeof(dwordVal);
if (key.QueryValue(dwordVal, REG_ENABLE_EC) == ERROR_SUCCESS) {
m_EchoSuppress = dwordVal != 0;
- } else {
- m_EchoSuppress = 1;
}
cbData = sizeof(dwordVal);
if (key.QueryValue(dwordVal, REG_EC_TAIL) == ERROR_SUCCESS) {
m_EcTail = dwordVal;
- } else {
- m_EcTail = 200;
+ }
+
+ cbData = sizeof(dwordVal);
+ if (key.QueryValue(dwordVal, REG_ENABLE_TCP) == ERROR_SUCCESS) {
+ m_TCP = dwordVal != 0;
+ }
+
+ cbData = sizeof(dwordVal);
+ if (key.QueryValue(dwordVal, REG_ENABLE_VAD) == ERROR_SUCCESS) {
+ m_VAD = dwordVal != 0;
+ }
+
+ cbData = sizeof(dwordVal);
+ if (key.QueryValue(dwordVal, REG_AUTO_ANSWER) == ERROR_SUCCESS) {
+ m_AutoAnswer = dwordVal != 0;
}
m_BuddyList.RemoveAll();
@@ -132,6 +155,23 @@ void CPocketPJSettings::LoadRegistry()
}
}
+ DWORD codecCount = 0;
+ cbData = sizeof(dwordVal);
+ if (key.QueryValue(codecCount, REG_CODEC_CNT) == ERROR_SUCCESS) {
+
+ m_Codecs.RemoveAll();
+
+ for (i=0; i<codecCount; ++i) {
+ CString entry;
+ entry.Format(REG_CODEC_X, i);
+
+ cbData = sizeof(textVal);
+ if (key.QueryValue(textVal, entry, &cbData) == ERROR_SUCCESS) {
+ m_Codecs.Add(textVal);
+ }
+ }
+ }
+
key.Close();
}
@@ -157,6 +197,10 @@ void CPocketPJSettings::SaveRegistry()
key.SetValue(m_EchoSuppress, REG_ENABLE_EC);
key.SetValue(m_EcTail, REG_EC_TAIL);
+ key.SetValue(m_TCP, REG_ENABLE_TCP);
+ key.SetValue(m_VAD, REG_ENABLE_VAD);
+ key.SetValue(m_AutoAnswer, REG_AUTO_ANSWER);
+
key.SetValue(m_BuddyList.GetSize(), REG_BUDDY_CNT);
int i;
@@ -166,6 +210,14 @@ void CPocketPJSettings::SaveRegistry()
key.SetValue(m_BuddyList.GetAt(i), entry);
}
+ DWORD N = m_Codecs.GetSize();
+ key.SetValue(N, REG_CODEC_CNT);
+ for (i=0; i<m_Codecs.GetSize(); ++i) {
+ CString entry;
+ entry.Format(REG_CODEC_X, i);
+ key.SetValue(m_Codecs.GetAt(i), entry);
+ }
+
key.Close();
}
@@ -189,6 +241,9 @@ CSettingsDlg::CSettingsDlg(CPocketPJSettings &cfg, CWnd* pParent)
m_Dns = _T("");
m_EchoSuppress = FALSE;
m_EcTail = _T("");
+ m_TCP = FALSE;
+ m_VAD = FALSE;
+ m_AutoAnswer = FALSE;
//}}AFX_DATA_INIT
m_Domain = m_Cfg.m_Domain;
@@ -201,10 +256,14 @@ CSettingsDlg::CSettingsDlg(CPocketPJSettings &cfg, CWnd* pParent)
m_User = m_Cfg.m_User;
m_Dns = m_Cfg.m_DNS;
m_EchoSuppress = m_Cfg.m_EchoSuppress;
+ m_TCP = m_Cfg.m_TCP;
+ m_VAD = m_Cfg.m_VAD;
+ m_AutoAnswer= m_Cfg.m_AutoAnswer;
CString s;
s.Format(_T("%d"), m_Cfg.m_EcTail);
m_EcTail = s;
+
}
@@ -212,6 +271,7 @@ void CSettingsDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSettingsDlg)
+ DDX_Control(pDX, IDC_CODECS, m_Codecs);
DDX_Text(pDX, IDC_DOMAIN, m_Domain);
DDX_Check(pDX, IDC_ICE, m_ICE);
DDX_Text(pDX, IDC_PASSWD, m_Passwd);
@@ -223,7 +283,19 @@ void CSettingsDlg::DoDataExchange(CDataExchange* pDX)
DDX_Text(pDX, IDC_DNS, m_Dns);
DDX_Check(pDX, IDC_ECHO_SUPPRESS, m_EchoSuppress);
DDX_Text(pDX, IDC_EC_TAIL, m_EcTail);
+ DDX_Check(pDX, IDC_TCP, m_TCP);
+ DDX_Check(pDX, IDC_VAD, m_VAD);
+ DDX_Check(pDX, IDC_AA, m_AutoAnswer);
//}}AFX_DATA_MAP
+
+
+ if (m_Codecs.GetCount() == 0) {
+ int i;
+ for (i=0; i<m_Cfg.m_Codecs.GetSize(); ++i) {
+ m_Codecs.AddString(m_Cfg.m_Codecs.GetAt(i));
+ }
+ m_Codecs.SetCurSel(0);
+ }
}
@@ -231,6 +303,7 @@ BEGIN_MESSAGE_MAP(CSettingsDlg, CDialog)
//{{AFX_MSG_MAP(CSettingsDlg)
ON_BN_CLICKED(IDC_STUN, OnStun)
ON_BN_CLICKED(IDC_ECHO_SUPPRESS, OnEchoSuppress)
+ ON_CBN_SELCHANGE(IDC_CODECS, OnSelchangeCodecs)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
@@ -241,20 +314,6 @@ int CSettingsDlg::DoModal()
{
int rc = CDialog::DoModal();
- if (rc == IDOK) {
- m_Cfg.m_Domain = m_Domain;
- m_Cfg.m_UseIce = m_ICE != 0;
- m_Cfg.m_Password = m_Passwd;
- m_Cfg.m_UsePublish = m_PUBLISH != 0;
- m_Cfg.m_UseSrtp = m_SRTP != 0;
- m_Cfg.m_UseStun = m_STUN != 0;
- m_Cfg.m_StunSrv = m_StunSrv;
- m_Cfg.m_User = m_User;
- m_Cfg.m_DNS = m_Dns;
- m_Cfg.m_EchoSuppress= m_EchoSuppress != 0;
- m_Cfg.m_EcTail = _ttoi(m_EcTail);
- }
-
return rc;
}
@@ -265,3 +324,53 @@ void CSettingsDlg::OnStun()
void CSettingsDlg::OnEchoSuppress()
{
}
+
+void CSettingsDlg::OnSelchangeCodecs()
+{
+ int cur = m_Codecs.GetCurSel();
+ if (cur < 1)
+ return;
+
+ CString codec;
+ DWORD N;
+
+ m_Codecs.GetLBText(cur, codec);
+ N = m_Codecs.GetCount();
+ m_Codecs.DeleteString(cur);
+ N = m_Codecs.GetCount();
+ m_Codecs.InsertString(0, codec);
+ N = m_Codecs.GetCount();
+ m_Codecs.SetCurSel(0);
+}
+
+
+void CSettingsDlg::OnOK()
+{
+ UpdateData(TRUE);
+
+ m_Cfg.m_Domain = m_Domain;
+ m_Cfg.m_UseIce = m_ICE != 0;
+ m_Cfg.m_Password = m_Passwd;
+ m_Cfg.m_UsePublish = m_PUBLISH != 0;
+ m_Cfg.m_UseSrtp = m_SRTP != 0;
+ m_Cfg.m_UseStun = m_STUN != 0;
+ m_Cfg.m_StunSrv = m_StunSrv;
+ m_Cfg.m_User = m_User;
+ m_Cfg.m_DNS = m_Dns;
+ m_Cfg.m_EchoSuppress= m_EchoSuppress != 0;
+ m_Cfg.m_EcTail = _ttoi(m_EcTail);
+ m_Cfg.m_TCP = m_TCP != 0;
+ m_Cfg.m_VAD = m_VAD != 0;
+ m_Cfg.m_AutoAnswer = m_AutoAnswer != 0;
+
+ unsigned i;
+ m_Cfg.m_Codecs.RemoveAll();
+ DWORD N = m_Codecs.GetCount();
+ for (i=0; i<N; ++i) {
+ CString codec;
+ m_Codecs.GetLBText(i, codec);
+ m_Cfg.m_Codecs.Add(codec);
+ }
+
+ CDialog::OnOK();
+}