~ubuntu-branches/ubuntu/wily/sflphone/wily

« back to all changes in this revision

Viewing changes to daemon/libs/pjproject-2.0.1/pjsip-apps/src/pocketpj/SettingsDlg.cpp

  • Committer: Package Import Robot
  • Author(s): Mark Purcell
  • Date: 2014-01-28 18:23:36 UTC
  • mfrom: (1.1.11)
  • mto: This revision was merged to the branch mainline in revision 24.
  • Revision ID: package-import@ubuntu.com-20140128182336-3xenud1kbnwmf3mz
* New upstream release 
  - Fixes "New Upstream Release" (Closes: #735846)
  - Fixes "Ringtone does not stop" (Closes: #727164)
  - Fixes "[sflphone-kde] crash on startup" (Closes: #718178)
  - Fixes "sflphone GUI crashes when call is hung up" (Closes: #736583)
* Build-Depends: ensure GnuTLS 2.6
  - libucommon-dev (>= 6.0.7-1.1), libccrtp-dev (>= 2.0.6-3)
  - Fixes "FTBFS Build-Depends libgnutls{26,28}-dev" (Closes: #722040)
* Fix "boost 1.49 is going away" unversioned Build-Depends: (Closes: #736746)
* Add Build-Depends: libsndfile-dev, nepomuk-core-dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
// SettingsDlg.cpp : implementation file
2
 
//
3
 
 
4
 
#include "stdafx.h"
5
 
#include "PocketPJ.h"
6
 
#include "SettingsDlg.h"
7
 
#include <pjsua-lib/pjsua.h>
8
 
#include <atlbase.h>
9
 
 
10
 
#ifdef _DEBUG
11
 
#define new DEBUG_NEW
12
 
#undef THIS_FILE
13
 
static char THIS_FILE[] = __FILE__;
14
 
#endif
15
 
 
16
 
#define REG_PATH        _T("pjsip.org\\PocketPC")
17
 
#define REG_DOMAIN      _T("Domain")
18
 
#define REG_USER        _T("User")
19
 
#define REG_PASSWD      _T("Data")
20
 
#define REG_USE_STUN    _T("UseSTUN")
21
 
#define REG_STUN_SRV    _T("STUNSrv")
22
 
#define REG_DNS         _T("DNS")
23
 
#define REG_USE_ICE     _T("UseICE")
24
 
#define REG_USE_SRTP    _T("UseSRTP")
25
 
#define REG_USE_PUBLISH _T("UsePUBLISH")
26
 
#define REG_BUDDY_CNT   _T("BuddyCnt")
27
 
#define REG_BUDDY_X     _T("Buddy%u")
28
 
#define REG_ENABLE_EC   _T("EnableEC")
29
 
#define REG_EC_TAIL     _T("ECTail")
30
 
#define REG_ENABLE_VAD  _T("EnableVAD")
31
 
#define REG_ENABLE_TCP  _T("EnableTCP")
32
 
#define REG_CODEC_CNT   _T("CodecCnt")
33
 
#define REG_CODEC_X     _T("Codec%u")
34
 
#define REG_AUTO_ANSWER _T("AutoAnswer")
35
 
 
36
 
 
37
 
/////////////////////////////////////////////////////////////////////////////
38
 
// Settings
39
 
CPocketPJSettings::CPocketPJSettings()
40
 
: m_UseStun(FALSE), m_UseIce(FALSE), m_UseSrtp(FALSE), m_UsePublish(FALSE),
41
 
  m_EchoSuppress(TRUE), m_EcTail(200), m_TCP(FALSE), m_VAD(FALSE),
42
 
  m_AutoAnswer(FALSE)
43
 
{
44
 
    /* Init codec list */
45
 
#if defined(PJMEDIA_HAS_GSM_CODEC) && PJMEDIA_HAS_GSM_CODEC
46
 
    m_Codecs.Add(_T("GSM"));
47
 
#endif
48
 
#if defined(PJMEDIA_HAS_G711_CODEC) && PJMEDIA_HAS_G711_CODEC
49
 
    m_Codecs.Add(_T("PCMU"));
50
 
    m_Codecs.Add(_T("PCMA"));
51
 
#endif
52
 
#if defined(PJMEDIA_HAS_SPEEX_CODEC) && PJMEDIA_HAS_SPEEX_CODEC
53
 
    m_Codecs.Add(_T("Speex"));
54
 
#endif
55
 
}
56
 
 
57
 
// Load from registry
58
 
void CPocketPJSettings::LoadRegistry()
59
 
{
60
 
    CRegKey key;
61
 
    wchar_t textVal[256];
62
 
    DWORD dwordVal;
63
 
    DWORD cbData;
64
 
 
65
 
 
66
 
    if (key.Open(HKEY_CURRENT_USER, REG_PATH) != ERROR_SUCCESS)
67
 
        return;
68
 
 
69
 
    cbData = sizeof(textVal);
70
 
    if (key.QueryValue(textVal, REG_DOMAIN, &cbData) == ERROR_SUCCESS) {
71
 
        m_Domain = textVal;
72
 
    }
73
 
 
74
 
    cbData = sizeof(textVal);
75
 
    if (key.QueryValue(textVal, REG_USER, &cbData) == ERROR_SUCCESS) {
76
 
        m_User = textVal;
77
 
    }
78
 
 
79
 
    cbData = sizeof(textVal);
80
 
    if (key.QueryValue(textVal, REG_PASSWD, &cbData) == ERROR_SUCCESS) {
81
 
        m_Password = textVal;
82
 
    }
83
 
 
84
 
    cbData = sizeof(textVal);
85
 
    if (key.QueryValue(textVal, REG_STUN_SRV, &cbData) == ERROR_SUCCESS) {
86
 
        m_StunSrv = textVal;
87
 
    }
88
 
 
89
 
    cbData = sizeof(textVal);
90
 
    if (key.QueryValue(textVal, REG_DNS, &cbData) == ERROR_SUCCESS) {
91
 
        m_DNS = textVal;
92
 
    }
93
 
 
94
 
    dwordVal = 0;
95
 
    if (key.QueryValue(dwordVal, REG_USE_STUN) == ERROR_SUCCESS) {
96
 
        m_UseStun = dwordVal != 0;
97
 
    }
98
 
 
99
 
    if (key.QueryValue(dwordVal, REG_USE_ICE) == ERROR_SUCCESS) {
100
 
        m_UseIce = dwordVal != 0;
101
 
    }
102
 
 
103
 
 
104
 
    if (key.QueryValue(dwordVal, REG_USE_SRTP) == ERROR_SUCCESS) {
105
 
        m_UseSrtp = dwordVal != 0;
106
 
    }
107
 
 
108
 
 
109
 
    cbData = sizeof(dwordVal);
110
 
    if (key.QueryValue(dwordVal, REG_USE_PUBLISH) == ERROR_SUCCESS) {
111
 
        m_UsePublish = dwordVal != 0;
112
 
    }
113
 
 
114
 
    cbData = sizeof(dwordVal);
115
 
    if (key.QueryValue(dwordVal, REG_ENABLE_EC) == ERROR_SUCCESS) {
116
 
        m_EchoSuppress = dwordVal != 0;
117
 
    }
118
 
 
119
 
    cbData = sizeof(dwordVal);
120
 
    if (key.QueryValue(dwordVal, REG_EC_TAIL) == ERROR_SUCCESS) {
121
 
        m_EcTail = dwordVal;
122
 
    }
123
 
 
124
 
    cbData = sizeof(dwordVal);
125
 
    if (key.QueryValue(dwordVal, REG_ENABLE_TCP) == ERROR_SUCCESS) {
126
 
        m_TCP = dwordVal != 0;
127
 
    }
128
 
 
129
 
    cbData = sizeof(dwordVal);
130
 
    if (key.QueryValue(dwordVal, REG_ENABLE_VAD) == ERROR_SUCCESS) {
131
 
        m_VAD = dwordVal != 0;
132
 
    }
133
 
 
134
 
    cbData = sizeof(dwordVal);
135
 
    if (key.QueryValue(dwordVal, REG_AUTO_ANSWER) == ERROR_SUCCESS) {
136
 
        m_AutoAnswer = dwordVal != 0;
137
 
    }
138
 
 
139
 
    m_BuddyList.RemoveAll();
140
 
 
141
 
    DWORD buddyCount = 0;
142
 
    cbData = sizeof(dwordVal);
143
 
    if (key.QueryValue(dwordVal, REG_BUDDY_CNT) == ERROR_SUCCESS) {
144
 
        buddyCount = dwordVal;
145
 
    }
146
 
 
147
 
    unsigned i;
148
 
    for (i=0; i<buddyCount; ++i) {
149
 
        CString entry;
150
 
        entry.Format(REG_BUDDY_X, i);
151
 
 
152
 
        cbData = sizeof(textVal);
153
 
        if (key.QueryValue(textVal, entry, &cbData) == ERROR_SUCCESS) {
154
 
            m_BuddyList.Add(textVal);
155
 
        }
156
 
    }
157
 
 
158
 
    DWORD codecCount = 0;
159
 
    cbData = sizeof(dwordVal);
160
 
    if (key.QueryValue(codecCount, REG_CODEC_CNT) == ERROR_SUCCESS) {
161
 
 
162
 
        m_Codecs.RemoveAll();
163
 
 
164
 
        for (i=0; i<codecCount; ++i) {
165
 
            CString entry;
166
 
            entry.Format(REG_CODEC_X, i);
167
 
 
168
 
            cbData = sizeof(textVal);
169
 
            if (key.QueryValue(textVal, entry, &cbData) == ERROR_SUCCESS) {
170
 
                m_Codecs.Add(textVal);
171
 
            }
172
 
        }
173
 
    }
174
 
 
175
 
    key.Close();
176
 
}
177
 
 
178
 
// Save to registry
179
 
void CPocketPJSettings::SaveRegistry()
180
 
{
181
 
    CRegKey key;
182
 
 
183
 
    if (key.Create(HKEY_CURRENT_USER, REG_PATH) != ERROR_SUCCESS)
184
 
        return;
185
 
 
186
 
    key.SetValue(m_Domain, REG_DOMAIN);
187
 
    key.SetValue(m_User, REG_USER);
188
 
    key.SetValue(m_Password, REG_PASSWD);
189
 
    key.SetValue(m_StunSrv, REG_STUN_SRV);
190
 
    key.SetValue(m_DNS, REG_DNS);
191
 
 
192
 
    key.SetValue(m_UseStun, REG_USE_STUN);
193
 
    key.SetValue(m_UseIce, REG_USE_ICE);
194
 
    key.SetValue(m_UseSrtp, REG_USE_SRTP);
195
 
    key.SetValue(m_UsePublish, REG_USE_PUBLISH);
196
 
 
197
 
    key.SetValue(m_EchoSuppress, REG_ENABLE_EC);
198
 
    key.SetValue(m_EcTail, REG_EC_TAIL);
199
 
 
200
 
    key.SetValue(m_TCP, REG_ENABLE_TCP);
201
 
    key.SetValue(m_VAD, REG_ENABLE_VAD);
202
 
    key.SetValue(m_AutoAnswer, REG_AUTO_ANSWER);
203
 
 
204
 
    key.SetValue(m_BuddyList.GetSize(), REG_BUDDY_CNT);
205
 
 
206
 
    int i;
207
 
    for (i=0; i<m_BuddyList.GetSize(); ++i) {
208
 
        CString entry;
209
 
        entry.Format(REG_BUDDY_X, i);
210
 
        key.SetValue(m_BuddyList.GetAt(i), entry);
211
 
    }
212
 
 
213
 
    DWORD N = m_Codecs.GetSize();
214
 
    key.SetValue(N, REG_CODEC_CNT);
215
 
    for (i=0; i<m_Codecs.GetSize(); ++i) {
216
 
        CString entry;
217
 
        entry.Format(REG_CODEC_X, i);
218
 
        key.SetValue(m_Codecs.GetAt(i), entry);
219
 
    }
220
 
 
221
 
    key.Close();
222
 
}
223
 
 
224
 
 
225
 
/////////////////////////////////////////////////////////////////////////////
226
 
// CSettingsDlg dialog
227
 
 
228
 
 
229
 
CSettingsDlg::CSettingsDlg(CPocketPJSettings &cfg, CWnd* pParent)
230
 
        : CDialog(CSettingsDlg::IDD, pParent), m_Cfg(cfg)
231
 
{
232
 
        //{{AFX_DATA_INIT(CSettingsDlg)
233
 
        m_Domain = _T("");
234
 
        m_ICE = FALSE;
235
 
        m_Passwd = _T("");
236
 
        m_PUBLISH = FALSE;
237
 
        m_SRTP = FALSE;
238
 
        m_STUN = FALSE;
239
 
        m_StunSrv = _T("");
240
 
        m_User = _T("");
241
 
        m_Dns = _T("");
242
 
        m_EchoSuppress = FALSE;
243
 
        m_EcTail = _T("");
244
 
        m_TCP = FALSE;
245
 
        m_VAD = FALSE;
246
 
        m_AutoAnswer = FALSE;
247
 
        //}}AFX_DATA_INIT
248
 
 
249
 
        m_Domain    = m_Cfg.m_Domain;
250
 
        m_ICE       = m_Cfg.m_UseIce;
251
 
        m_Passwd    = m_Cfg.m_Password;
252
 
        m_PUBLISH   = m_Cfg.m_UsePublish;
253
 
        m_SRTP      = m_Cfg.m_UseSrtp;
254
 
        m_STUN      = m_Cfg.m_UseStun;
255
 
        m_StunSrv   = m_Cfg.m_StunSrv;
256
 
        m_User      = m_Cfg.m_User;
257
 
        m_Dns       = m_Cfg.m_DNS;
258
 
        m_EchoSuppress = m_Cfg.m_EchoSuppress;
259
 
        m_TCP       = m_Cfg.m_TCP;
260
 
        m_VAD       = m_Cfg.m_VAD;
261
 
        m_AutoAnswer= m_Cfg.m_AutoAnswer;
262
 
 
263
 
        CString s;
264
 
        s.Format(_T("%d"), m_Cfg.m_EcTail);
265
 
        m_EcTail    = s;
266
 
 
267
 
}
268
 
 
269
 
 
270
 
void CSettingsDlg::DoDataExchange(CDataExchange* pDX)
271
 
{
272
 
        CDialog::DoDataExchange(pDX);
273
 
        //{{AFX_DATA_MAP(CSettingsDlg)
274
 
        DDX_Control(pDX, IDC_CODECS, m_Codecs);
275
 
        DDX_Text(pDX, IDC_DOMAIN, m_Domain);
276
 
        DDX_Check(pDX, IDC_ICE, m_ICE);
277
 
        DDX_Text(pDX, IDC_PASSWD, m_Passwd);
278
 
        DDX_Check(pDX, IDC_PUBLISH, m_PUBLISH);
279
 
        DDX_Check(pDX, IDC_SRTP, m_SRTP);
280
 
        DDX_Check(pDX, IDC_STUN, m_STUN);
281
 
        DDX_Text(pDX, IDC_STUN_SRV, m_StunSrv);
282
 
        DDX_Text(pDX, IDC_USER, m_User);
283
 
        DDX_Text(pDX, IDC_DNS, m_Dns);
284
 
        DDX_Check(pDX, IDC_ECHO_SUPPRESS, m_EchoSuppress);
285
 
        DDX_Text(pDX, IDC_EC_TAIL, m_EcTail);
286
 
        DDX_Check(pDX, IDC_TCP, m_TCP);
287
 
        DDX_Check(pDX, IDC_VAD, m_VAD);
288
 
        DDX_Check(pDX, IDC_AA, m_AutoAnswer);
289
 
        //}}AFX_DATA_MAP
290
 
 
291
 
 
292
 
        if (m_Codecs.GetCount() == 0) {
293
 
            int i;
294
 
            for (i=0; i<m_Cfg.m_Codecs.GetSize(); ++i) {
295
 
                m_Codecs.AddString(m_Cfg.m_Codecs.GetAt(i));
296
 
            }
297
 
            m_Codecs.SetCurSel(0);
298
 
        }
299
 
}
300
 
 
301
 
 
302
 
BEGIN_MESSAGE_MAP(CSettingsDlg, CDialog)
303
 
        //{{AFX_MSG_MAP(CSettingsDlg)
304
 
        ON_BN_CLICKED(IDC_STUN, OnStun)
305
 
        ON_BN_CLICKED(IDC_ECHO_SUPPRESS, OnEchoSuppress)
306
 
        ON_CBN_SELCHANGE(IDC_CODECS, OnSelchangeCodecs)
307
 
        //}}AFX_MSG_MAP
308
 
END_MESSAGE_MAP()
309
 
 
310
 
/////////////////////////////////////////////////////////////////////////////
311
 
// CSettingsDlg message handlers
312
 
 
313
 
int CSettingsDlg::DoModal()
314
 
{
315
 
    int rc = CDialog::DoModal();
316
 
 
317
 
    return rc;
318
 
}
319
 
 
320
 
void CSettingsDlg::OnStun()
321
 
{
322
 
}
323
 
 
324
 
void CSettingsDlg::OnEchoSuppress()
325
 
{
326
 
}
327
 
 
328
 
void CSettingsDlg::OnSelchangeCodecs()
329
 
{
330
 
    int cur = m_Codecs.GetCurSel();
331
 
    if (cur < 1)
332
 
        return;
333
 
 
334
 
    CString codec;
335
 
    DWORD N;
336
 
 
337
 
    m_Codecs.GetLBText(cur, codec);
338
 
    N = m_Codecs.GetCount();
339
 
    m_Codecs.DeleteString(cur);
340
 
    N = m_Codecs.GetCount();
341
 
    m_Codecs.InsertString(0, codec);
342
 
    N = m_Codecs.GetCount();
343
 
    m_Codecs.SetCurSel(0);
344
 
}
345
 
 
346
 
 
347
 
void CSettingsDlg::OnOK()
348
 
{
349
 
    UpdateData(TRUE);
350
 
 
351
 
    m_Cfg.m_Domain      = m_Domain;
352
 
    m_Cfg.m_UseIce      = m_ICE != 0;
353
 
    m_Cfg.m_Password    = m_Passwd;
354
 
    m_Cfg.m_UsePublish  = m_PUBLISH != 0;
355
 
    m_Cfg.m_UseSrtp     = m_SRTP != 0;
356
 
    m_Cfg.m_UseStun     = m_STUN != 0;
357
 
    m_Cfg.m_StunSrv     = m_StunSrv;
358
 
    m_Cfg.m_User        = m_User;
359
 
    m_Cfg.m_DNS         = m_Dns;
360
 
    m_Cfg.m_EchoSuppress= m_EchoSuppress != 0;
361
 
    m_Cfg.m_EcTail      = _ttoi(m_EcTail);
362
 
    m_Cfg.m_TCP         = m_TCP != 0;
363
 
    m_Cfg.m_VAD         = m_VAD != 0;
364
 
    m_Cfg.m_AutoAnswer  = m_AutoAnswer != 0;
365
 
 
366
 
    unsigned i;
367
 
    m_Cfg.m_Codecs.RemoveAll();
368
 
    DWORD N = m_Codecs.GetCount();
369
 
    for (i=0; i<N; ++i) {
370
 
        CString codec;
371
 
        m_Codecs.GetLBText(i, codec);
372
 
        m_Cfg.m_Codecs.Add(codec);
373
 
    }
374
 
 
375
 
    CDialog::OnOK();
376
 
}