blob: af49a1ebeecec627fecbee68ed62d6d35a1c0945 [file] [log] [blame]
Benny Prijono5d9c16f2008-02-22 23:38:47 +00001// SettingsDlg.cpp : implementation file
2//
3
4#include "stdafx.h"
5#include "PocketPJ.h"
6#include "SettingsDlg.h"
7#include <atlbase.h>
8
9#ifdef _DEBUG
10#define new DEBUG_NEW
11#undef THIS_FILE
12static char THIS_FILE[] = __FILE__;
13#endif
14
15#define REG_PATH _T("pjsip.org\\PocketPC")
16#define REG_DOMAIN _T("Domain")
17#define REG_USER _T("User")
18#define REG_PASSWD _T("Data")
19#define REG_USE_STUN _T("UseSTUN")
20#define REG_STUN_SRV _T("STUNSrv")
21#define REG_DNS _T("DNS")
22#define REG_USE_ICE _T("UseICE")
23#define REG_USE_SRTP _T("UseSRTP")
24#define REG_USE_PUBLISH _T("UsePUBLISH")
25#define REG_BUDDY_CNT _T("BuddyCnt")
26#define REG_BUDDY_X _T("Buddy%u")
Benny Prijono4d3eed12008-03-11 13:18:48 +000027#define REG_ENABLE_EC _T("EnableEC")
28#define REG_EC_TAIL _T("ECTail")
Benny Prijono5d9c16f2008-02-22 23:38:47 +000029
30
31/////////////////////////////////////////////////////////////////////////////
32// Settings
Benny Prijono4e57a542008-08-10 22:10:41 +000033CPocketPJSettings::CPocketPJSettings()
34: m_UseStun(FALSE), m_UseIce(FALSE), m_UseSrtp(FALSE), m_UsePublish(FALSE),
35 m_EchoSuppress(TRUE), m_EcTail(200)
36{
37}
Benny Prijono5d9c16f2008-02-22 23:38:47 +000038
39// Load from registry
40void CPocketPJSettings::LoadRegistry()
41{
42 CRegKey key;
43 wchar_t textVal[256];
44 DWORD dwordVal;
45 DWORD cbData;
46
47
48 if (key.Open(HKEY_CURRENT_USER, REG_PATH) != ERROR_SUCCESS)
49 return;
50
51 cbData = sizeof(textVal);
52 if (key.QueryValue(textVal, REG_DOMAIN, &cbData) == ERROR_SUCCESS) {
53 m_Domain = textVal;
54 }
55
56 cbData = sizeof(textVal);
57 if (key.QueryValue(textVal, REG_USER, &cbData) == ERROR_SUCCESS) {
58 m_User = textVal;
59 }
60
61 cbData = sizeof(textVal);
62 if (key.QueryValue(textVal, REG_PASSWD, &cbData) == ERROR_SUCCESS) {
63 m_Password = textVal;
64 }
65
66 cbData = sizeof(textVal);
67 if (key.QueryValue(textVal, REG_STUN_SRV, &cbData) == ERROR_SUCCESS) {
68 m_StunSrv = textVal;
69 }
70
71 cbData = sizeof(textVal);
72 if (key.QueryValue(textVal, REG_DNS, &cbData) == ERROR_SUCCESS) {
73 m_DNS = textVal;
74 }
75
76 dwordVal = 0;
77 if (key.QueryValue(dwordVal, REG_USE_STUN) == ERROR_SUCCESS) {
78 m_UseStun = dwordVal != 0;
Benny Prijono4d3eed12008-03-11 13:18:48 +000079 } else {
80 m_UseStun = 0;
Benny Prijono5d9c16f2008-02-22 23:38:47 +000081 }
82
83 if (key.QueryValue(dwordVal, REG_USE_ICE) == ERROR_SUCCESS) {
84 m_UseIce = dwordVal != 0;
Benny Prijono4d3eed12008-03-11 13:18:48 +000085 } else {
86 m_UseIce = 0;
Benny Prijono5d9c16f2008-02-22 23:38:47 +000087 }
88
89
90 if (key.QueryValue(dwordVal, REG_USE_SRTP) == ERROR_SUCCESS) {
91 m_UseSrtp = dwordVal != 0;
Benny Prijono4d3eed12008-03-11 13:18:48 +000092 } else {
93 m_UseSrtp = 0;
Benny Prijono5d9c16f2008-02-22 23:38:47 +000094 }
95
96
97 cbData = sizeof(dwordVal);
98 if (key.QueryValue(dwordVal, REG_USE_PUBLISH) == ERROR_SUCCESS) {
99 m_UsePublish = dwordVal != 0;
100 }
101
Benny Prijono4d3eed12008-03-11 13:18:48 +0000102 cbData = sizeof(dwordVal);
103 if (key.QueryValue(dwordVal, REG_ENABLE_EC) == ERROR_SUCCESS) {
104 m_EchoSuppress = dwordVal != 0;
105 } else {
Benny Prijono4e57a542008-08-10 22:10:41 +0000106 m_EchoSuppress = 1;
Benny Prijono4d3eed12008-03-11 13:18:48 +0000107 }
108
109 cbData = sizeof(dwordVal);
110 if (key.QueryValue(dwordVal, REG_EC_TAIL) == ERROR_SUCCESS) {
111 m_EcTail = dwordVal;
112 } else {
Benny Prijono4e57a542008-08-10 22:10:41 +0000113 m_EcTail = 200;
Benny Prijono4d3eed12008-03-11 13:18:48 +0000114 }
115
Benny Prijono5d9c16f2008-02-22 23:38:47 +0000116 m_BuddyList.RemoveAll();
117
118 DWORD buddyCount = 0;
119 cbData = sizeof(dwordVal);
120 if (key.QueryValue(dwordVal, REG_BUDDY_CNT) == ERROR_SUCCESS) {
121 buddyCount = dwordVal;
122 }
123
124 unsigned i;
125 for (i=0; i<buddyCount; ++i) {
126 CString entry;
127 entry.Format(REG_BUDDY_X, i);
128
129 cbData = sizeof(textVal);
130 if (key.QueryValue(textVal, entry, &cbData) == ERROR_SUCCESS) {
131 m_BuddyList.Add(textVal);
132 }
133 }
134
135 key.Close();
136}
137
138// Save to registry
139void CPocketPJSettings::SaveRegistry()
140{
141 CRegKey key;
142
143 if (key.Create(HKEY_CURRENT_USER, REG_PATH) != ERROR_SUCCESS)
144 return;
145
146 key.SetValue(m_Domain, REG_DOMAIN);
147 key.SetValue(m_User, REG_USER);
148 key.SetValue(m_Password, REG_PASSWD);
149 key.SetValue(m_StunSrv, REG_STUN_SRV);
150 key.SetValue(m_DNS, REG_DNS);
151
152 key.SetValue(m_UseStun, REG_USE_STUN);
153 key.SetValue(m_UseIce, REG_USE_ICE);
154 key.SetValue(m_UseSrtp, REG_USE_SRTP);
155 key.SetValue(m_UsePublish, REG_USE_PUBLISH);
156
Benny Prijono4d3eed12008-03-11 13:18:48 +0000157 key.SetValue(m_EchoSuppress, REG_ENABLE_EC);
158 key.SetValue(m_EcTail, REG_EC_TAIL);
159
Benny Prijono5d9c16f2008-02-22 23:38:47 +0000160 key.SetValue(m_BuddyList.GetSize(), REG_BUDDY_CNT);
161
Benny Prijono4d3eed12008-03-11 13:18:48 +0000162 int i;
Benny Prijono5d9c16f2008-02-22 23:38:47 +0000163 for (i=0; i<m_BuddyList.GetSize(); ++i) {
164 CString entry;
165 entry.Format(REG_BUDDY_X, i);
166 key.SetValue(m_BuddyList.GetAt(i), entry);
167 }
168
169 key.Close();
170}
171
172
173/////////////////////////////////////////////////////////////////////////////
174// CSettingsDlg dialog
175
176
177CSettingsDlg::CSettingsDlg(CPocketPJSettings &cfg, CWnd* pParent)
178 : CDialog(CSettingsDlg::IDD, pParent), m_Cfg(cfg)
179{
180 //{{AFX_DATA_INIT(CSettingsDlg)
181 m_Domain = _T("");
182 m_ICE = FALSE;
183 m_Passwd = _T("");
184 m_PUBLISH = FALSE;
185 m_SRTP = FALSE;
186 m_STUN = FALSE;
187 m_StunSrv = _T("");
188 m_User = _T("");
189 m_Dns = _T("");
Benny Prijono4d3eed12008-03-11 13:18:48 +0000190 m_EchoSuppress = FALSE;
191 m_EcTail = _T("");
Benny Prijono5d9c16f2008-02-22 23:38:47 +0000192 //}}AFX_DATA_INIT
193
194 m_Domain = m_Cfg.m_Domain;
195 m_ICE = m_Cfg.m_UseIce;
196 m_Passwd = m_Cfg.m_Password;
197 m_PUBLISH = m_Cfg.m_UsePublish;
198 m_SRTP = m_Cfg.m_UseSrtp;
199 m_STUN = m_Cfg.m_UseStun;
200 m_StunSrv = m_Cfg.m_StunSrv;
201 m_User = m_Cfg.m_User;
202 m_Dns = m_Cfg.m_DNS;
Benny Prijono4d3eed12008-03-11 13:18:48 +0000203 m_EchoSuppress = m_Cfg.m_EchoSuppress;
204
205 CString s;
206 s.Format(_T("%d"), m_Cfg.m_EcTail);
207 m_EcTail = s;
Benny Prijono5d9c16f2008-02-22 23:38:47 +0000208}
209
210
211void CSettingsDlg::DoDataExchange(CDataExchange* pDX)
212{
213 CDialog::DoDataExchange(pDX);
214 //{{AFX_DATA_MAP(CSettingsDlg)
215 DDX_Text(pDX, IDC_DOMAIN, m_Domain);
216 DDX_Check(pDX, IDC_ICE, m_ICE);
217 DDX_Text(pDX, IDC_PASSWD, m_Passwd);
218 DDX_Check(pDX, IDC_PUBLISH, m_PUBLISH);
219 DDX_Check(pDX, IDC_SRTP, m_SRTP);
220 DDX_Check(pDX, IDC_STUN, m_STUN);
221 DDX_Text(pDX, IDC_STUN_SRV, m_StunSrv);
222 DDX_Text(pDX, IDC_USER, m_User);
223 DDX_Text(pDX, IDC_DNS, m_Dns);
Benny Prijono4d3eed12008-03-11 13:18:48 +0000224 DDX_Check(pDX, IDC_ECHO_SUPPRESS, m_EchoSuppress);
225 DDX_Text(pDX, IDC_EC_TAIL, m_EcTail);
Benny Prijono5d9c16f2008-02-22 23:38:47 +0000226 //}}AFX_DATA_MAP
227}
228
229
230BEGIN_MESSAGE_MAP(CSettingsDlg, CDialog)
231 //{{AFX_MSG_MAP(CSettingsDlg)
Benny Prijono4d3eed12008-03-11 13:18:48 +0000232 ON_BN_CLICKED(IDC_STUN, OnStun)
233 ON_BN_CLICKED(IDC_ECHO_SUPPRESS, OnEchoSuppress)
Benny Prijono5d9c16f2008-02-22 23:38:47 +0000234 //}}AFX_MSG_MAP
235END_MESSAGE_MAP()
236
237/////////////////////////////////////////////////////////////////////////////
238// CSettingsDlg message handlers
239
240int CSettingsDlg::DoModal()
241{
242 int rc = CDialog::DoModal();
243
244 if (rc == IDOK) {
245 m_Cfg.m_Domain = m_Domain;
Benny Prijono4d3eed12008-03-11 13:18:48 +0000246 m_Cfg.m_UseIce = m_ICE != 0;
Benny Prijono5d9c16f2008-02-22 23:38:47 +0000247 m_Cfg.m_Password = m_Passwd;
Benny Prijono4d3eed12008-03-11 13:18:48 +0000248 m_Cfg.m_UsePublish = m_PUBLISH != 0;
249 m_Cfg.m_UseSrtp = m_SRTP != 0;
250 m_Cfg.m_UseStun = m_STUN != 0;
Benny Prijono5d9c16f2008-02-22 23:38:47 +0000251 m_Cfg.m_StunSrv = m_StunSrv;
252 m_Cfg.m_User = m_User;
253 m_Cfg.m_DNS = m_Dns;
Benny Prijono4d3eed12008-03-11 13:18:48 +0000254 m_Cfg.m_EchoSuppress= m_EchoSuppress != 0;
255 m_Cfg.m_EcTail = _ttoi(m_EcTail);
Benny Prijono5d9c16f2008-02-22 23:38:47 +0000256 }
257
258 return rc;
259}
Benny Prijono4d3eed12008-03-11 13:18:48 +0000260
261void CSettingsDlg::OnStun()
262{
263}
264
265void CSettingsDlg::OnEchoSuppress()
266{
267}