blob: e5506ce899567a59dc688c7c7c65361f819be04c [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
33
34// Load from registry
35void CPocketPJSettings::LoadRegistry()
36{
37 CRegKey key;
38 wchar_t textVal[256];
39 DWORD dwordVal;
40 DWORD cbData;
41
42
43 if (key.Open(HKEY_CURRENT_USER, REG_PATH) != ERROR_SUCCESS)
44 return;
45
46 cbData = sizeof(textVal);
47 if (key.QueryValue(textVal, REG_DOMAIN, &cbData) == ERROR_SUCCESS) {
48 m_Domain = textVal;
49 }
50
51 cbData = sizeof(textVal);
52 if (key.QueryValue(textVal, REG_USER, &cbData) == ERROR_SUCCESS) {
53 m_User = textVal;
54 }
55
56 cbData = sizeof(textVal);
57 if (key.QueryValue(textVal, REG_PASSWD, &cbData) == ERROR_SUCCESS) {
58 m_Password = textVal;
59 }
60
61 cbData = sizeof(textVal);
62 if (key.QueryValue(textVal, REG_STUN_SRV, &cbData) == ERROR_SUCCESS) {
63 m_StunSrv = textVal;
64 }
65
66 cbData = sizeof(textVal);
67 if (key.QueryValue(textVal, REG_DNS, &cbData) == ERROR_SUCCESS) {
68 m_DNS = textVal;
69 }
70
71 dwordVal = 0;
72 if (key.QueryValue(dwordVal, REG_USE_STUN) == ERROR_SUCCESS) {
73 m_UseStun = dwordVal != 0;
Benny Prijono4d3eed12008-03-11 13:18:48 +000074 } else {
75 m_UseStun = 0;
Benny Prijono5d9c16f2008-02-22 23:38:47 +000076 }
77
78 if (key.QueryValue(dwordVal, REG_USE_ICE) == ERROR_SUCCESS) {
79 m_UseIce = dwordVal != 0;
Benny Prijono4d3eed12008-03-11 13:18:48 +000080 } else {
81 m_UseIce = 0;
Benny Prijono5d9c16f2008-02-22 23:38:47 +000082 }
83
84
85 if (key.QueryValue(dwordVal, REG_USE_SRTP) == ERROR_SUCCESS) {
86 m_UseSrtp = dwordVal != 0;
Benny Prijono4d3eed12008-03-11 13:18:48 +000087 } else {
88 m_UseSrtp = 0;
Benny Prijono5d9c16f2008-02-22 23:38:47 +000089 }
90
91
92 cbData = sizeof(dwordVal);
93 if (key.QueryValue(dwordVal, REG_USE_PUBLISH) == ERROR_SUCCESS) {
94 m_UsePublish = dwordVal != 0;
95 }
96
Benny Prijono4d3eed12008-03-11 13:18:48 +000097 cbData = sizeof(dwordVal);
98 if (key.QueryValue(dwordVal, REG_ENABLE_EC) == ERROR_SUCCESS) {
99 m_EchoSuppress = dwordVal != 0;
100 } else {
101 m_EchoSuppress = 0;
102 }
103
104 cbData = sizeof(dwordVal);
105 if (key.QueryValue(dwordVal, REG_EC_TAIL) == ERROR_SUCCESS) {
106 m_EcTail = dwordVal;
107 } else {
108 m_EcTail = 2;
109 }
110
Benny Prijono5d9c16f2008-02-22 23:38:47 +0000111 m_BuddyList.RemoveAll();
112
113 DWORD buddyCount = 0;
114 cbData = sizeof(dwordVal);
115 if (key.QueryValue(dwordVal, REG_BUDDY_CNT) == ERROR_SUCCESS) {
116 buddyCount = dwordVal;
117 }
118
119 unsigned i;
120 for (i=0; i<buddyCount; ++i) {
121 CString entry;
122 entry.Format(REG_BUDDY_X, i);
123
124 cbData = sizeof(textVal);
125 if (key.QueryValue(textVal, entry, &cbData) == ERROR_SUCCESS) {
126 m_BuddyList.Add(textVal);
127 }
128 }
129
130 key.Close();
131}
132
133// Save to registry
134void CPocketPJSettings::SaveRegistry()
135{
136 CRegKey key;
137
138 if (key.Create(HKEY_CURRENT_USER, REG_PATH) != ERROR_SUCCESS)
139 return;
140
141 key.SetValue(m_Domain, REG_DOMAIN);
142 key.SetValue(m_User, REG_USER);
143 key.SetValue(m_Password, REG_PASSWD);
144 key.SetValue(m_StunSrv, REG_STUN_SRV);
145 key.SetValue(m_DNS, REG_DNS);
146
147 key.SetValue(m_UseStun, REG_USE_STUN);
148 key.SetValue(m_UseIce, REG_USE_ICE);
149 key.SetValue(m_UseSrtp, REG_USE_SRTP);
150 key.SetValue(m_UsePublish, REG_USE_PUBLISH);
151
Benny Prijono4d3eed12008-03-11 13:18:48 +0000152 key.SetValue(m_EchoSuppress, REG_ENABLE_EC);
153 key.SetValue(m_EcTail, REG_EC_TAIL);
154
Benny Prijono5d9c16f2008-02-22 23:38:47 +0000155 key.SetValue(m_BuddyList.GetSize(), REG_BUDDY_CNT);
156
Benny Prijono4d3eed12008-03-11 13:18:48 +0000157 int i;
Benny Prijono5d9c16f2008-02-22 23:38:47 +0000158 for (i=0; i<m_BuddyList.GetSize(); ++i) {
159 CString entry;
160 entry.Format(REG_BUDDY_X, i);
161 key.SetValue(m_BuddyList.GetAt(i), entry);
162 }
163
164 key.Close();
165}
166
167
168/////////////////////////////////////////////////////////////////////////////
169// CSettingsDlg dialog
170
171
172CSettingsDlg::CSettingsDlg(CPocketPJSettings &cfg, CWnd* pParent)
173 : CDialog(CSettingsDlg::IDD, pParent), m_Cfg(cfg)
174{
175 //{{AFX_DATA_INIT(CSettingsDlg)
176 m_Domain = _T("");
177 m_ICE = FALSE;
178 m_Passwd = _T("");
179 m_PUBLISH = FALSE;
180 m_SRTP = FALSE;
181 m_STUN = FALSE;
182 m_StunSrv = _T("");
183 m_User = _T("");
184 m_Dns = _T("");
Benny Prijono4d3eed12008-03-11 13:18:48 +0000185 m_EchoSuppress = FALSE;
186 m_EcTail = _T("");
Benny Prijono5d9c16f2008-02-22 23:38:47 +0000187 //}}AFX_DATA_INIT
188
189 m_Domain = m_Cfg.m_Domain;
190 m_ICE = m_Cfg.m_UseIce;
191 m_Passwd = m_Cfg.m_Password;
192 m_PUBLISH = m_Cfg.m_UsePublish;
193 m_SRTP = m_Cfg.m_UseSrtp;
194 m_STUN = m_Cfg.m_UseStun;
195 m_StunSrv = m_Cfg.m_StunSrv;
196 m_User = m_Cfg.m_User;
197 m_Dns = m_Cfg.m_DNS;
Benny Prijono4d3eed12008-03-11 13:18:48 +0000198 m_EchoSuppress = m_Cfg.m_EchoSuppress;
199
200 CString s;
201 s.Format(_T("%d"), m_Cfg.m_EcTail);
202 m_EcTail = s;
Benny Prijono5d9c16f2008-02-22 23:38:47 +0000203}
204
205
206void CSettingsDlg::DoDataExchange(CDataExchange* pDX)
207{
208 CDialog::DoDataExchange(pDX);
209 //{{AFX_DATA_MAP(CSettingsDlg)
210 DDX_Text(pDX, IDC_DOMAIN, m_Domain);
211 DDX_Check(pDX, IDC_ICE, m_ICE);
212 DDX_Text(pDX, IDC_PASSWD, m_Passwd);
213 DDX_Check(pDX, IDC_PUBLISH, m_PUBLISH);
214 DDX_Check(pDX, IDC_SRTP, m_SRTP);
215 DDX_Check(pDX, IDC_STUN, m_STUN);
216 DDX_Text(pDX, IDC_STUN_SRV, m_StunSrv);
217 DDX_Text(pDX, IDC_USER, m_User);
218 DDX_Text(pDX, IDC_DNS, m_Dns);
Benny Prijono4d3eed12008-03-11 13:18:48 +0000219 DDX_Check(pDX, IDC_ECHO_SUPPRESS, m_EchoSuppress);
220 DDX_Text(pDX, IDC_EC_TAIL, m_EcTail);
Benny Prijono5d9c16f2008-02-22 23:38:47 +0000221 //}}AFX_DATA_MAP
222}
223
224
225BEGIN_MESSAGE_MAP(CSettingsDlg, CDialog)
226 //{{AFX_MSG_MAP(CSettingsDlg)
Benny Prijono4d3eed12008-03-11 13:18:48 +0000227 ON_BN_CLICKED(IDC_STUN, OnStun)
228 ON_BN_CLICKED(IDC_ECHO_SUPPRESS, OnEchoSuppress)
Benny Prijono5d9c16f2008-02-22 23:38:47 +0000229 //}}AFX_MSG_MAP
230END_MESSAGE_MAP()
231
232/////////////////////////////////////////////////////////////////////////////
233// CSettingsDlg message handlers
234
235int CSettingsDlg::DoModal()
236{
237 int rc = CDialog::DoModal();
238
239 if (rc == IDOK) {
240 m_Cfg.m_Domain = m_Domain;
Benny Prijono4d3eed12008-03-11 13:18:48 +0000241 m_Cfg.m_UseIce = m_ICE != 0;
Benny Prijono5d9c16f2008-02-22 23:38:47 +0000242 m_Cfg.m_Password = m_Passwd;
Benny Prijono4d3eed12008-03-11 13:18:48 +0000243 m_Cfg.m_UsePublish = m_PUBLISH != 0;
244 m_Cfg.m_UseSrtp = m_SRTP != 0;
245 m_Cfg.m_UseStun = m_STUN != 0;
Benny Prijono5d9c16f2008-02-22 23:38:47 +0000246 m_Cfg.m_StunSrv = m_StunSrv;
247 m_Cfg.m_User = m_User;
248 m_Cfg.m_DNS = m_Dns;
Benny Prijono4d3eed12008-03-11 13:18:48 +0000249 m_Cfg.m_EchoSuppress= m_EchoSuppress != 0;
250 m_Cfg.m_EcTail = _ttoi(m_EcTail);
Benny Prijono5d9c16f2008-02-22 23:38:47 +0000251 }
252
253 return rc;
254}
Benny Prijono4d3eed12008-03-11 13:18:48 +0000255
256void CSettingsDlg::OnStun()
257{
258}
259
260void CSettingsDlg::OnEchoSuppress()
261{
262}