summaryrefslogtreecommitdiff
path: root/pjsip-apps/src/pocketpj/SettingsDlg.cpp
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2008-02-22 23:38:47 +0000
committerBenny Prijono <bennylp@teluu.com>2008-02-22 23:38:47 +0000
commit05d51710084a1af289b44c33efbf1c61d9af3e80 (patch)
tree2e5103b13d0529fee0d6dd14745444d47f559a06 /pjsip-apps/src/pocketpj/SettingsDlg.cpp
parent5e9005a6ed8321e2a3d6cd307bafe5c6ca79eee3 (diff)
Ticket #493: PocketPC, a new and better sample application for PocketPC
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1819 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip-apps/src/pocketpj/SettingsDlg.cpp')
-rw-r--r--pjsip-apps/src/pocketpj/SettingsDlg.cpp217
1 files changed, 217 insertions, 0 deletions
diff --git a/pjsip-apps/src/pocketpj/SettingsDlg.cpp b/pjsip-apps/src/pocketpj/SettingsDlg.cpp
new file mode 100644
index 00000000..1d45683b
--- /dev/null
+++ b/pjsip-apps/src/pocketpj/SettingsDlg.cpp
@@ -0,0 +1,217 @@
+// SettingsDlg.cpp : implementation file
+//
+
+#include "stdafx.h"
+#include "PocketPJ.h"
+#include "SettingsDlg.h"
+#include <atlbase.h>
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+#define REG_PATH _T("pjsip.org\\PocketPC")
+#define REG_DOMAIN _T("Domain")
+#define REG_USER _T("User")
+#define REG_PASSWD _T("Data")
+#define REG_USE_STUN _T("UseSTUN")
+#define REG_STUN_SRV _T("STUNSrv")
+#define REG_DNS _T("DNS")
+#define REG_USE_ICE _T("UseICE")
+#define REG_USE_SRTP _T("UseSRTP")
+#define REG_USE_PUBLISH _T("UsePUBLISH")
+#define REG_BUDDY_CNT _T("BuddyCnt")
+#define REG_BUDDY_X _T("Buddy%u")
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Settings
+
+// Load from registry
+void CPocketPJSettings::LoadRegistry()
+{
+ CRegKey key;
+ wchar_t textVal[256];
+ DWORD dwordVal;
+ DWORD cbData;
+
+
+ if (key.Open(HKEY_CURRENT_USER, REG_PATH) != ERROR_SUCCESS)
+ return;
+
+ cbData = sizeof(textVal);
+ if (key.QueryValue(textVal, REG_DOMAIN, &cbData) == ERROR_SUCCESS) {
+ m_Domain = textVal;
+ }
+
+ cbData = sizeof(textVal);
+ if (key.QueryValue(textVal, REG_USER, &cbData) == ERROR_SUCCESS) {
+ m_User = textVal;
+ }
+
+ cbData = sizeof(textVal);
+ if (key.QueryValue(textVal, REG_PASSWD, &cbData) == ERROR_SUCCESS) {
+ m_Password = textVal;
+ }
+
+ cbData = sizeof(textVal);
+ if (key.QueryValue(textVal, REG_STUN_SRV, &cbData) == ERROR_SUCCESS) {
+ m_StunSrv = textVal;
+ }
+
+ cbData = sizeof(textVal);
+ if (key.QueryValue(textVal, REG_DNS, &cbData) == ERROR_SUCCESS) {
+ m_DNS = textVal;
+ }
+
+ dwordVal = 0;
+ if (key.QueryValue(dwordVal, REG_USE_STUN) == ERROR_SUCCESS) {
+ m_UseStun = dwordVal != 0;
+ }
+
+ if (key.QueryValue(dwordVal, REG_USE_ICE) == ERROR_SUCCESS) {
+ m_UseIce = dwordVal != 0;
+ }
+
+
+ if (key.QueryValue(dwordVal, REG_USE_SRTP) == ERROR_SUCCESS) {
+ m_UseSrtp = dwordVal != 0;
+ }
+
+
+ cbData = sizeof(dwordVal);
+ if (key.QueryValue(dwordVal, REG_USE_PUBLISH) == ERROR_SUCCESS) {
+ m_UsePublish = dwordVal != 0;
+ }
+
+ m_BuddyList.RemoveAll();
+
+ DWORD buddyCount = 0;
+ cbData = sizeof(dwordVal);
+ if (key.QueryValue(dwordVal, REG_BUDDY_CNT) == ERROR_SUCCESS) {
+ buddyCount = dwordVal;
+ }
+
+ unsigned i;
+ for (i=0; i<buddyCount; ++i) {
+ CString entry;
+ entry.Format(REG_BUDDY_X, i);
+
+ cbData = sizeof(textVal);
+ if (key.QueryValue(textVal, entry, &cbData) == ERROR_SUCCESS) {
+ m_BuddyList.Add(textVal);
+ }
+ }
+
+ key.Close();
+}
+
+// Save to registry
+void CPocketPJSettings::SaveRegistry()
+{
+ CRegKey key;
+
+ if (key.Create(HKEY_CURRENT_USER, REG_PATH) != ERROR_SUCCESS)
+ return;
+
+ key.SetValue(m_Domain, REG_DOMAIN);
+ key.SetValue(m_User, REG_USER);
+ key.SetValue(m_Password, REG_PASSWD);
+ key.SetValue(m_StunSrv, REG_STUN_SRV);
+ key.SetValue(m_DNS, REG_DNS);
+
+ key.SetValue(m_UseStun, REG_USE_STUN);
+ key.SetValue(m_UseIce, REG_USE_ICE);
+ key.SetValue(m_UseSrtp, REG_USE_SRTP);
+ key.SetValue(m_UsePublish, REG_USE_PUBLISH);
+
+ key.SetValue(m_BuddyList.GetSize(), REG_BUDDY_CNT);
+
+ unsigned i;
+ for (i=0; i<m_BuddyList.GetSize(); ++i) {
+ CString entry;
+ entry.Format(REG_BUDDY_X, i);
+ key.SetValue(m_BuddyList.GetAt(i), entry);
+ }
+
+ key.Close();
+}
+
+
+/////////////////////////////////////////////////////////////////////////////
+// CSettingsDlg dialog
+
+
+CSettingsDlg::CSettingsDlg(CPocketPJSettings &cfg, CWnd* pParent)
+ : CDialog(CSettingsDlg::IDD, pParent), m_Cfg(cfg)
+{
+ //{{AFX_DATA_INIT(CSettingsDlg)
+ m_Domain = _T("");
+ m_ICE = FALSE;
+ m_Passwd = _T("");
+ m_PUBLISH = FALSE;
+ m_SRTP = FALSE;
+ m_STUN = FALSE;
+ m_StunSrv = _T("");
+ m_User = _T("");
+ m_Dns = _T("");
+ //}}AFX_DATA_INIT
+
+ m_Domain = m_Cfg.m_Domain;
+ m_ICE = m_Cfg.m_UseIce;
+ m_Passwd = m_Cfg.m_Password;
+ m_PUBLISH = m_Cfg.m_UsePublish;
+ m_SRTP = m_Cfg.m_UseSrtp;
+ m_STUN = m_Cfg.m_UseStun;
+ m_StunSrv = m_Cfg.m_StunSrv;
+ m_User = m_Cfg.m_User;
+ m_Dns = m_Cfg.m_DNS;
+}
+
+
+void CSettingsDlg::DoDataExchange(CDataExchange* pDX)
+{
+ CDialog::DoDataExchange(pDX);
+ //{{AFX_DATA_MAP(CSettingsDlg)
+ DDX_Text(pDX, IDC_DOMAIN, m_Domain);
+ DDX_Check(pDX, IDC_ICE, m_ICE);
+ DDX_Text(pDX, IDC_PASSWD, m_Passwd);
+ DDX_Check(pDX, IDC_PUBLISH, m_PUBLISH);
+ DDX_Check(pDX, IDC_SRTP, m_SRTP);
+ DDX_Check(pDX, IDC_STUN, m_STUN);
+ DDX_Text(pDX, IDC_STUN_SRV, m_StunSrv);
+ DDX_Text(pDX, IDC_USER, m_User);
+ DDX_Text(pDX, IDC_DNS, m_Dns);
+ //}}AFX_DATA_MAP
+}
+
+
+BEGIN_MESSAGE_MAP(CSettingsDlg, CDialog)
+ //{{AFX_MSG_MAP(CSettingsDlg)
+ // NOTE: the ClassWizard will add message map macros here
+ //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// CSettingsDlg message handlers
+
+int CSettingsDlg::DoModal()
+{
+ int rc = CDialog::DoModal();
+
+ if (rc == IDOK) {
+ m_Cfg.m_Domain = m_Domain;
+ m_Cfg.m_UseIce = m_ICE;
+ m_Cfg.m_Password = m_Passwd;
+ m_Cfg.m_UsePublish = m_PUBLISH;
+ m_Cfg.m_UseSrtp = m_SRTP;
+ m_Cfg.m_UseStun = m_STUN;
+ m_Cfg.m_StunSrv = m_StunSrv;
+ m_Cfg.m_User = m_User;
+ m_Cfg.m_DNS = m_Dns;
+ }
+
+ return rc;
+}