// SettingsDlg.cpp : implementation file // #include "stdafx.h" #include "PocketPJ.h" #include "SettingsDlg.h" #include #include #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") #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_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 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; } cbData = sizeof(dwordVal); if (key.QueryValue(dwordVal, REG_ENABLE_EC) == ERROR_SUCCESS) { m_EchoSuppress = dwordVal != 0; } cbData = sizeof(dwordVal); if (key.QueryValue(dwordVal, REG_EC_TAIL) == ERROR_SUCCESS) { m_EcTail = dwordVal; } 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(); DWORD buddyCount = 0; cbData = sizeof(dwordVal); if (key.QueryValue(dwordVal, REG_BUDDY_CNT) == ERROR_SUCCESS) { buddyCount = dwordVal; } unsigned i; for (i=0; i