Re #1655: Removed pjsua_wince and PocketPj (replaced with pjsua CLI, which is integrated in the 'pjsua' project for Win desktop).
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@4493 74dad513-b988-da41-8d7b-12977e46ad98
|
@ -96,16 +96,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pjsip_test", "pjsip\build\p
|
||||||
{23D7679C-764C-4E02-8B29-BB882CEEEFE2} = {23D7679C-764C-4E02-8B29-BB882CEEEFE2}
|
{23D7679C-764C-4E02-8B29-BB882CEEEFE2} = {23D7679C-764C-4E02-8B29-BB882CEEEFE2}
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PocketPJ", "pjsip-apps\src\pocketpj\PocketPJ.vcproj", "{48450961-D0DF-4B59-BD8D-39455AA02DF8}"
|
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
|
||||||
{23D7679C-764C-4E02-8B29-BB882CEEEFE2} = {23D7679C-764C-4E02-8B29-BB882CEEEFE2}
|
|
||||||
EndProjectSection
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pjsua_wince", "pjsip-apps\src\pjsua_wince\pjsua_wince.vcproj", "{C014B29B-4A42-414B-B567-988469F032D8}"
|
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
|
||||||
{23D7679C-764C-4E02-8B29-BB882CEEEFE2} = {23D7679C-764C-4E02-8B29-BB882CEEEFE2}
|
|
||||||
EndProjectSection
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpjproject", "pjsip-apps\build\libpjproject.vcproj", "{23D7679C-764C-4E02-8B29-BB882CEEEFE2}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpjproject", "pjsip-apps\build\libpjproject.vcproj", "{23D7679C-764C-4E02-8B29-BB882CEEEFE2}"
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
{2BB84911-C1B4-4747-B93D-36AA82CC5031} = {2BB84911-C1B4-4747-B93D-36AA82CC5031}
|
{2BB84911-C1B4-4747-B93D-36AA82CC5031} = {2BB84911-C1B4-4747-B93D-36AA82CC5031}
|
||||||
|
@ -1038,11 +1028,8 @@ Global
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Smartphone 2003 (ARMV4).Deploy.0 = Debug|Smartphone 2003 (ARMV4)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Smartphone 2003 (ARMV4).Deploy.0 = Debug|Smartphone 2003 (ARMV4)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Win32.ActiveCfg = Debug|Win32
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Win32.Build.0 = Debug|Win32
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
|
@ -1057,10 +1044,8 @@ Global
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Smartphone 2003 (ARMV4).Deploy.0 = Debug-Dynamic|Smartphone 2003 (ARMV4)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Smartphone 2003 (ARMV4).Deploy.0 = Debug-Dynamic|Smartphone 2003 (ARMV4)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Win32.ActiveCfg = Debug-Dynamic|Win32
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Win32.ActiveCfg = Debug-Dynamic|Win32
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Win32.Build.0 = Debug-Dynamic|Win32
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Win32.Build.0 = Debug-Dynamic|Win32
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
|
@ -1075,10 +1060,8 @@ Global
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Smartphone 2003 (ARMV4).Deploy.0 = Debug-Static|Smartphone 2003 (ARMV4)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Smartphone 2003 (ARMV4).Deploy.0 = Debug-Static|Smartphone 2003 (ARMV4)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Win32.ActiveCfg = Debug-Static|Win32
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Win32.ActiveCfg = Debug-Static|Win32
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Win32.Build.0 = Debug-Static|Win32
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Win32.Build.0 = Debug-Static|Win32
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
|
@ -1093,10 +1076,8 @@ Global
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Smartphone 2003 (ARMV4).Deploy.0 = Release|Smartphone 2003 (ARMV4)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Smartphone 2003 (ARMV4).Deploy.0 = Release|Smartphone 2003 (ARMV4)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Win32.ActiveCfg = Release|Win32
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Win32.Build.0 = Release|Win32
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Win32.Build.0 = Release|Win32
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
|
@ -1111,10 +1092,8 @@ Global
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Smartphone 2003 (ARMV4).Deploy.0 = Release-Dynamic|Smartphone 2003 (ARMV4)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Smartphone 2003 (ARMV4).Deploy.0 = Release-Dynamic|Smartphone 2003 (ARMV4)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Win32.ActiveCfg = Release-Dynamic|Win32
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Win32.ActiveCfg = Release-Dynamic|Win32
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Win32.Build.0 = Release-Dynamic|Win32
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Win32.Build.0 = Release-Dynamic|Win32
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
|
@ -1129,10 +1108,8 @@ Global
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Smartphone 2003 (ARMV4).Deploy.0 = Release-Static|Smartphone 2003 (ARMV4)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Smartphone 2003 (ARMV4).Deploy.0 = Release-Static|Smartphone 2003 (ARMV4)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Win32.ActiveCfg = Release-Static|Win32
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Win32.ActiveCfg = Release-Static|Win32
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Win32.Build.0 = Release-Static|Win32
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Win32.Build.0 = Release-Static|Win32
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
||||||
|
@ -2534,198 +2511,6 @@ Global
|
||||||
{B3F7D4E9-702F-4EB4-ADA8-098D0A83D770}.Release-Static|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 6 Standard SDK (ARMV4I)
|
{B3F7D4E9-702F-4EB4-ADA8-098D0A83D770}.Release-Static|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 6 Standard SDK (ARMV4I)
|
||||||
{B3F7D4E9-702F-4EB4-ADA8-098D0A83D770}.Release-Static|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release-Static|Windows Mobile 6 Standard SDK (ARMV4I)
|
{B3F7D4E9-702F-4EB4-ADA8-098D0A83D770}.Release-Static|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release-Static|Windows Mobile 6 Standard SDK (ARMV4I)
|
||||||
{B3F7D4E9-702F-4EB4-ADA8-098D0A83D770}.Release-Static|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release-Static|Windows Mobile 6 Standard SDK (ARMV4I)
|
{B3F7D4E9-702F-4EB4-ADA8-098D0A83D770}.Release-Static|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release-Static|Windows Mobile 6 Standard SDK (ARMV4I)
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug|Pocket PC 2003 (ARMV4).ActiveCfg = Debug|Pocket PC 2003 (ARMV4)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug|Pocket PC 2003 (ARMV4).Build.0 = Debug|Pocket PC 2003 (ARMV4)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug|Pocket PC 2003 (ARMV4).Deploy.0 = Debug|Pocket PC 2003 (ARMV4)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug|Smartphone 2003 (ARMV4).ActiveCfg = Debug|Smartphone 2003 (ARMV4)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug|Win32.ActiveCfg = Debug|Win32
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Standard SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Dynamic|Pocket PC 2003 (ARMV4).ActiveCfg = Debug-Dynamic|Pocket PC 2003 (ARMV4)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Dynamic|Pocket PC 2003 (ARMV4).Build.0 = Debug-Dynamic|Pocket PC 2003 (ARMV4)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Dynamic|Pocket PC 2003 (ARMV4).Deploy.0 = Debug-Dynamic|Pocket PC 2003 (ARMV4)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Dynamic|Smartphone 2003 (ARMV4).ActiveCfg = Debug-Dynamic|Smartphone 2003 (ARMV4)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Dynamic|Win32.ActiveCfg = Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Static|Pocket PC 2003 (ARMV4).ActiveCfg = Debug-Static|Pocket PC 2003 (ARMV4)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Static|Pocket PC 2003 (ARMV4).Build.0 = Debug-Static|Pocket PC 2003 (ARMV4)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Static|Pocket PC 2003 (ARMV4).Deploy.0 = Debug-Static|Pocket PC 2003 (ARMV4)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Static|Smartphone 2003 (ARMV4).ActiveCfg = Debug-Static|Smartphone 2003 (ARMV4)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Static|Win32.ActiveCfg = Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Static|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug-Static|Windows Mobile 6 Standard SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release|Pocket PC 2003 (ARMV4).ActiveCfg = Release|Pocket PC 2003 (ARMV4)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release|Pocket PC 2003 (ARMV4).Build.0 = Release|Pocket PC 2003 (ARMV4)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release|Pocket PC 2003 (ARMV4).Deploy.0 = Release|Pocket PC 2003 (ARMV4)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release|Smartphone 2003 (ARMV4).ActiveCfg = Release|Smartphone 2003 (ARMV4)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release|Win32.ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Standard SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Dynamic|Pocket PC 2003 (ARMV4).ActiveCfg = Release-Dynamic|Pocket PC 2003 (ARMV4)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Dynamic|Pocket PC 2003 (ARMV4).Build.0 = Release-Dynamic|Pocket PC 2003 (ARMV4)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Dynamic|Pocket PC 2003 (ARMV4).Deploy.0 = Release-Dynamic|Pocket PC 2003 (ARMV4)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Dynamic|Smartphone 2003 (ARMV4).ActiveCfg = Release-Dynamic|Smartphone 2003 (ARMV4)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Dynamic|Win32.ActiveCfg = Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Static|Pocket PC 2003 (ARMV4).ActiveCfg = Release-Static|Pocket PC 2003 (ARMV4)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Static|Pocket PC 2003 (ARMV4).Build.0 = Release-Static|Pocket PC 2003 (ARMV4)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Static|Pocket PC 2003 (ARMV4).Deploy.0 = Release-Static|Pocket PC 2003 (ARMV4)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Static|Smartphone 2003 (ARMV4).ActiveCfg = Release-Static|Smartphone 2003 (ARMV4)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Static|Win32.ActiveCfg = Release-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Static|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Static|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Static|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Static|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 6 Standard SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Pocket PC 2003 (ARMV4).ActiveCfg = Debug|Pocket PC 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Pocket PC 2003 (ARMV4).Build.0 = Debug|Pocket PC 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Pocket PC 2003 (ARMV4).Deploy.0 = Debug|Pocket PC 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Smartphone 2003 (ARMV4).ActiveCfg = Debug|Smartphone 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Smartphone 2003 (ARMV4).Build.0 = Debug|Smartphone 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Smartphone 2003 (ARMV4).Deploy.0 = Debug|Smartphone 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Win32.ActiveCfg = Debug|Win32
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Standard SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Standard SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Standard SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Pocket PC 2003 (ARMV4).ActiveCfg = Debug-Dynamic|Pocket PC 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Pocket PC 2003 (ARMV4).Build.0 = Debug-Dynamic|Pocket PC 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Pocket PC 2003 (ARMV4).Deploy.0 = Debug-Dynamic|Pocket PC 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Smartphone 2003 (ARMV4).ActiveCfg = Debug-Dynamic|Smartphone 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Smartphone 2003 (ARMV4).Build.0 = Debug-Dynamic|Smartphone 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Smartphone 2003 (ARMV4).Deploy.0 = Debug-Dynamic|Smartphone 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Win32.ActiveCfg = Debug-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Debug-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Debug-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Debug-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Pocket PC 2003 (ARMV4).ActiveCfg = Debug-Static|Pocket PC 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Pocket PC 2003 (ARMV4).Build.0 = Debug-Static|Pocket PC 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Pocket PC 2003 (ARMV4).Deploy.0 = Debug-Static|Pocket PC 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Smartphone 2003 (ARMV4).ActiveCfg = Debug-Static|Smartphone 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Smartphone 2003 (ARMV4).Build.0 = Debug-Static|Smartphone 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Smartphone 2003 (ARMV4).Deploy.0 = Debug-Static|Smartphone 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Win32.ActiveCfg = Debug-Static|Windows Mobile 6 Standard SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Debug-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug-Static|Windows Mobile 6 Standard SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Debug-Static|Windows Mobile 6 Standard SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Debug-Static|Windows Mobile 6 Standard SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Pocket PC 2003 (ARMV4).ActiveCfg = Release|Pocket PC 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Pocket PC 2003 (ARMV4).Build.0 = Release|Pocket PC 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Pocket PC 2003 (ARMV4).Deploy.0 = Release|Pocket PC 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Smartphone 2003 (ARMV4).ActiveCfg = Release|Smartphone 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Smartphone 2003 (ARMV4).Build.0 = Release|Smartphone 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Smartphone 2003 (ARMV4).Deploy.0 = Release|Smartphone 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Win32.ActiveCfg = Release|Windows Mobile 6 Standard SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Standard SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Standard SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Standard SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Pocket PC 2003 (ARMV4).ActiveCfg = Release-Dynamic|Pocket PC 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Pocket PC 2003 (ARMV4).Build.0 = Release-Dynamic|Pocket PC 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Pocket PC 2003 (ARMV4).Deploy.0 = Release-Dynamic|Pocket PC 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Smartphone 2003 (ARMV4).ActiveCfg = Release-Dynamic|Smartphone 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Smartphone 2003 (ARMV4).Build.0 = Release-Dynamic|Smartphone 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Smartphone 2003 (ARMV4).Deploy.0 = Release-Dynamic|Smartphone 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Win32.ActiveCfg = Release-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Release-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Pocket PC 2003 (ARMV4).ActiveCfg = Release-Static|Pocket PC 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Pocket PC 2003 (ARMV4).Build.0 = Release-Static|Pocket PC 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Pocket PC 2003 (ARMV4).Deploy.0 = Release-Static|Pocket PC 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Smartphone 2003 (ARMV4).ActiveCfg = Release-Static|Smartphone 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Smartphone 2003 (ARMV4).Build.0 = Release-Static|Smartphone 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Smartphone 2003 (ARMV4).Deploy.0 = Release-Static|Smartphone 2003 (ARMV4)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Win32.ActiveCfg = Release-Static|Windows Mobile 6 Standard SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Release-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release-Static|Windows Mobile 6 Professional SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 6 Standard SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release-Static|Windows Mobile 6 Standard SDK (ARMV4I)
|
|
||||||
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release-Static|Windows Mobile 6 Standard SDK (ARMV4I)
|
|
||||||
{23D7679C-764C-4E02-8B29-BB882CEEEFE2}.Debug|Pocket PC 2003 (ARMV4).ActiveCfg = Debug|Pocket PC 2003 (ARMV4)
|
{23D7679C-764C-4E02-8B29-BB882CEEEFE2}.Debug|Pocket PC 2003 (ARMV4).ActiveCfg = Debug|Pocket PC 2003 (ARMV4)
|
||||||
{23D7679C-764C-4E02-8B29-BB882CEEEFE2}.Debug|Pocket PC 2003 (ARMV4).Build.0 = Debug|Pocket PC 2003 (ARMV4)
|
{23D7679C-764C-4E02-8B29-BB882CEEEFE2}.Debug|Pocket PC 2003 (ARMV4).Build.0 = Debug|Pocket PC 2003 (ARMV4)
|
||||||
{23D7679C-764C-4E02-8B29-BB882CEEEFE2}.Debug|Smartphone 2003 (ARMV4).ActiveCfg = Debug|Smartphone 2003 (ARMV4)
|
{23D7679C-764C-4E02-8B29-BB882CEEEFE2}.Debug|Smartphone 2003 (ARMV4).ActiveCfg = Debug|Smartphone 2003 (ARMV4)
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
// stdafx.cpp : source file that includes just the standard includes
|
|
||||||
// pjsua_wince.pch will be the pre-compiled header
|
|
||||||
// stdafx.obj will contain the pre-compiled type information
|
|
||||||
|
|
||||||
#include "stdafx.h"
|
|
||||||
|
|
||||||
// TODO: reference any additional headers you need in STDAFX.H
|
|
||||||
// and not in this file
|
|
|
@ -1,25 +0,0 @@
|
||||||
// stdafx.h : include file for standard system include files,
|
|
||||||
// or project specific include files that are used frequently, but
|
|
||||||
// are changed infrequently
|
|
||||||
//
|
|
||||||
|
|
||||||
#if !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
|
|
||||||
#define AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_
|
|
||||||
|
|
||||||
#if _MSC_VER > 1000
|
|
||||||
#pragma once
|
|
||||||
#endif // _MSC_VER > 1000
|
|
||||||
|
|
||||||
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
|
|
||||||
|
|
||||||
// Windows Header Files:
|
|
||||||
#include <windows.h>
|
|
||||||
|
|
||||||
// Local Header Files
|
|
||||||
|
|
||||||
// TODO: reference additional headers your program requires here
|
|
||||||
|
|
||||||
//{{AFX_INSERT_LOCATION}}
|
|
||||||
// Microsoft eMbedded Visual C++ will insert additional declarations immediately before the previous line.
|
|
||||||
|
|
||||||
#endif // !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
|
|
|
@ -1,39 +0,0 @@
|
||||||
#ifndef __NEWRES_H__
|
|
||||||
#define __NEWRES_H__
|
|
||||||
|
|
||||||
#if !defined(UNDER_CE)
|
|
||||||
#define UNDER_CE _WIN32_WCE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(_WIN32_WCE)
|
|
||||||
#if !defined(WCEOLE_ENABLE_DIALOGEX)
|
|
||||||
#define DIALOGEX DIALOG DISCARDABLE
|
|
||||||
#endif
|
|
||||||
#include <commctrl.h>
|
|
||||||
#define SHMENUBAR RCDATA
|
|
||||||
#if defined(WIN32_PLATFORM_PSPC) && (_WIN32_WCE >= 300)
|
|
||||||
#include <aygshell.h>
|
|
||||||
#else
|
|
||||||
#define I_IMAGENONE (-2)
|
|
||||||
#define NOMENU 0xFFFF
|
|
||||||
#define IDS_SHNEW 1
|
|
||||||
|
|
||||||
#define IDM_SHAREDNEW 10
|
|
||||||
#define IDM_SHAREDNEWDEFAULT 11
|
|
||||||
#endif
|
|
||||||
#endif // _WIN32_WCE
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef RC_INVOKED
|
|
||||||
#ifndef _INC_WINDOWS
|
|
||||||
#define _INC_WINDOWS
|
|
||||||
#include "winuser.h" // extract from windows header
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef IDC_STATIC
|
|
||||||
#undef IDC_STATIC
|
|
||||||
#endif
|
|
||||||
#define IDC_STATIC (-1)
|
|
||||||
|
|
||||||
#endif //__NEWRES_H__
|
|
|
@ -1,780 +0,0 @@
|
||||||
// pjsua_wince.cpp : Defines the entry point for the application.
|
|
||||||
//
|
|
||||||
|
|
||||||
#include "stdafx.h"
|
|
||||||
#include "pjsua_wince.h"
|
|
||||||
#include <commctrl.h>
|
|
||||||
#include <pjsua-lib/pjsua.h>
|
|
||||||
|
|
||||||
#define MAX_LOADSTRING 100
|
|
||||||
|
|
||||||
// Global Variables:
|
|
||||||
static HINSTANCE hInst;
|
|
||||||
static HWND hMainWnd;
|
|
||||||
static HWND hwndCB;
|
|
||||||
static HWND hwndGlobalStatus, hwndURI, hwndCallStatus;
|
|
||||||
static HWND hwndActionButton, hwndExitButton;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Basic config.
|
|
||||||
//
|
|
||||||
#define SIP_PORT 5060
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Destination URI (to make call, or to subscribe presence)
|
|
||||||
//
|
|
||||||
#define SIP_DST_URI "sip:192.168.0.7:5061"
|
|
||||||
|
|
||||||
//
|
|
||||||
// Account
|
|
||||||
//
|
|
||||||
#define HAS_SIP_ACCOUNT 0 // 0 to disable registration
|
|
||||||
#define SIP_DOMAIN "server"
|
|
||||||
#define SIP_REALM "server"
|
|
||||||
#define SIP_USER "user"
|
|
||||||
#define SIP_PASSWD "secret"
|
|
||||||
|
|
||||||
//
|
|
||||||
// Outbound proxy for all accounts
|
|
||||||
//
|
|
||||||
#define SIP_PROXY NULL
|
|
||||||
//#define SIP_PROXY "sip:192.168.0.2;lr"
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Configure nameserver if DNS SRV is to be used with both SIP
|
|
||||||
// or STUN (for STUN see other settings below)
|
|
||||||
//
|
|
||||||
#define NAMESERVER NULL
|
|
||||||
//#define NAMESERVER "62.241.163.201"
|
|
||||||
|
|
||||||
//
|
|
||||||
// STUN server
|
|
||||||
#if 0
|
|
||||||
// Use this to have the STUN server resolved normally
|
|
||||||
# define STUN_DOMAIN NULL
|
|
||||||
# define STUN_SERVER "stun.fwdnet.net"
|
|
||||||
#elif 0
|
|
||||||
// Use this to have the STUN server resolved with DNS SRV
|
|
||||||
# define STUN_DOMAIN "iptel.org"
|
|
||||||
# define STUN_SERVER NULL
|
|
||||||
#else
|
|
||||||
// Use this to disable STUN
|
|
||||||
# define STUN_DOMAIN NULL
|
|
||||||
# define STUN_SERVER NULL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//
|
|
||||||
// Use ICE?
|
|
||||||
//
|
|
||||||
#define USE_ICE 0
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Globals
|
|
||||||
//
|
|
||||||
static pj_pool_t *g_pool;
|
|
||||||
static pj_str_t g_local_uri;
|
|
||||||
static int g_current_acc;
|
|
||||||
static int g_current_call = PJSUA_INVALID_ID;
|
|
||||||
static int g_current_action;
|
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
ID_GLOBAL_STATUS = 21,
|
|
||||||
ID_URI,
|
|
||||||
ID_CALL_STATUS,
|
|
||||||
ID_POLL_TIMER,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
ID_MENU_NONE = 64,
|
|
||||||
ID_MENU_CALL,
|
|
||||||
ID_MENU_ANSWER,
|
|
||||||
ID_MENU_DISCONNECT,
|
|
||||||
ID_BTN_ACTION,
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// Forward declarations of functions included in this code module:
|
|
||||||
static ATOM MyRegisterClass (HINSTANCE, LPTSTR);
|
|
||||||
BOOL InitInstance (HINSTANCE, int);
|
|
||||||
static void OnCreate (HWND hWnd);
|
|
||||||
static LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
static void OnError(const wchar_t *title, pj_status_t status)
|
|
||||||
{
|
|
||||||
char errmsg[PJ_ERR_MSG_SIZE];
|
|
||||||
PJ_DECL_UNICODE_TEMP_BUF(werrmsg, PJ_ERR_MSG_SIZE);
|
|
||||||
|
|
||||||
pj_strerror(status, errmsg, sizeof(errmsg));
|
|
||||||
|
|
||||||
MessageBox(NULL, PJ_STRING_TO_NATIVE(errmsg, werrmsg, PJ_ERR_MSG_SIZE),
|
|
||||||
title, MB_OK);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void SetLocalURI(const char *uri, int len, bool enabled=true)
|
|
||||||
{
|
|
||||||
wchar_t tmp[128];
|
|
||||||
if (len==-1) len=pj_ansi_strlen(uri);
|
|
||||||
pj_ansi_to_unicode(uri, len, tmp, PJ_ARRAY_SIZE(tmp));
|
|
||||||
SetDlgItemText(hMainWnd, ID_GLOBAL_STATUS, tmp);
|
|
||||||
EnableWindow(hwndGlobalStatus, enabled?TRUE:FALSE);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void SetURI(const char *uri, int len, bool enabled=true)
|
|
||||||
{
|
|
||||||
wchar_t tmp[128];
|
|
||||||
if (len==-1) len=pj_ansi_strlen(uri);
|
|
||||||
pj_ansi_to_unicode(uri, len, tmp, PJ_ARRAY_SIZE(tmp));
|
|
||||||
SetDlgItemText(hMainWnd, ID_URI, tmp);
|
|
||||||
EnableWindow(hwndURI, enabled?TRUE:FALSE);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void SetCallStatus(const char *state, int len)
|
|
||||||
{
|
|
||||||
wchar_t tmp[128];
|
|
||||||
if (len==-1) len=pj_ansi_strlen(state);
|
|
||||||
pj_ansi_to_unicode(state, len, tmp, PJ_ARRAY_SIZE(tmp));
|
|
||||||
SetDlgItemText(hMainWnd, ID_CALL_STATUS, tmp);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void SetAction(int action, bool enable=true)
|
|
||||||
{
|
|
||||||
HMENU hMenu;
|
|
||||||
|
|
||||||
hMenu = CommandBar_GetMenu(hwndCB, 0);
|
|
||||||
|
|
||||||
RemoveMenu(hMenu, ID_MENU_NONE, MF_BYCOMMAND);
|
|
||||||
RemoveMenu(hMenu, ID_MENU_CALL, MF_BYCOMMAND);
|
|
||||||
RemoveMenu(hMenu, ID_MENU_ANSWER, MF_BYCOMMAND);
|
|
||||||
RemoveMenu(hMenu, ID_MENU_DISCONNECT, MF_BYCOMMAND);
|
|
||||||
|
|
||||||
switch (action) {
|
|
||||||
case ID_MENU_NONE:
|
|
||||||
InsertMenu(hMenu, ID_EXIT, MF_BYCOMMAND, action, TEXT("None"));
|
|
||||||
SetWindowText(hwndActionButton, TEXT("-"));
|
|
||||||
break;
|
|
||||||
case ID_MENU_CALL:
|
|
||||||
InsertMenu(hMenu, ID_EXIT, MF_BYCOMMAND, action, TEXT("Call"));
|
|
||||||
SetWindowText(hwndActionButton, TEXT("&Call"));
|
|
||||||
break;
|
|
||||||
case ID_MENU_ANSWER:
|
|
||||||
InsertMenu(hMenu, ID_EXIT, MF_BYCOMMAND, action, TEXT("Answer"));
|
|
||||||
SetWindowText(hwndActionButton, TEXT("&Answer"));
|
|
||||||
break;
|
|
||||||
case ID_MENU_DISCONNECT:
|
|
||||||
InsertMenu(hMenu, ID_EXIT, MF_BYCOMMAND, action, TEXT("Hangup"));
|
|
||||||
SetWindowText(hwndActionButton, TEXT("&Hangup"));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
EnableMenuItem(hMenu, action, MF_BYCOMMAND | (enable?MF_ENABLED:MF_GRAYED));
|
|
||||||
DrawMenuBar(hMainWnd);
|
|
||||||
|
|
||||||
g_current_action = action;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Handler when invite state has changed.
|
|
||||||
*/
|
|
||||||
static void on_call_state(pjsua_call_id call_id, pjsip_event *e)
|
|
||||||
{
|
|
||||||
pjsua_call_info call_info;
|
|
||||||
|
|
||||||
PJ_UNUSED_ARG(e);
|
|
||||||
|
|
||||||
pjsua_call_get_info(call_id, &call_info);
|
|
||||||
|
|
||||||
if (call_info.state == PJSIP_INV_STATE_DISCONNECTED) {
|
|
||||||
|
|
||||||
g_current_call = PJSUA_INVALID_ID;
|
|
||||||
SetURI(SIP_DST_URI, -1);
|
|
||||||
SetAction(ID_MENU_CALL);
|
|
||||||
//SetCallStatus(call_info.state_text.ptr, call_info.state_text.slen);
|
|
||||||
SetCallStatus(call_info.last_status_text.ptr, call_info.last_status_text.slen);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
//if (g_current_call == PJSUA_INVALID_ID)
|
|
||||||
// g_current_call = call_id;
|
|
||||||
|
|
||||||
if (call_info.remote_contact.slen)
|
|
||||||
SetURI(call_info.remote_contact.ptr, call_info.remote_contact.slen, false);
|
|
||||||
else
|
|
||||||
SetURI(call_info.remote_info.ptr, call_info.remote_info.slen, false);
|
|
||||||
|
|
||||||
if (call_info.state == PJSIP_INV_STATE_CONFIRMED)
|
|
||||||
SetAction(ID_MENU_DISCONNECT);
|
|
||||||
|
|
||||||
SetCallStatus(call_info.state_text.ptr, call_info.state_text.slen);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Callback on media state changed event.
|
|
||||||
* The action may connect the call to sound device, to file, or
|
|
||||||
* to loop the call.
|
|
||||||
*/
|
|
||||||
static void on_call_media_state(pjsua_call_id call_id)
|
|
||||||
{
|
|
||||||
pjsua_call_info call_info;
|
|
||||||
|
|
||||||
pjsua_call_get_info(call_id, &call_info);
|
|
||||||
|
|
||||||
if (call_info.media_status == PJSUA_CALL_MEDIA_ACTIVE) {
|
|
||||||
pjsua_conf_connect(call_info.conf_slot, 0);
|
|
||||||
pjsua_conf_connect(0, call_info.conf_slot);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handler when there is incoming call.
|
|
||||||
*/
|
|
||||||
static void on_incoming_call(pjsua_acc_id acc_id, pjsua_call_id call_id,
|
|
||||||
pjsip_rx_data *rdata)
|
|
||||||
{
|
|
||||||
pjsua_call_info call_info;
|
|
||||||
|
|
||||||
PJ_UNUSED_ARG(acc_id);
|
|
||||||
PJ_UNUSED_ARG(rdata);
|
|
||||||
|
|
||||||
if (g_current_call != PJSUA_INVALID_ID) {
|
|
||||||
pj_str_t reason;
|
|
||||||
reason = pj_str("Another call is in progress");
|
|
||||||
pjsua_call_answer(call_id, PJSIP_SC_BUSY_HERE, &reason, NULL);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
g_current_call = call_id;
|
|
||||||
|
|
||||||
pjsua_call_get_info(call_id, &call_info);
|
|
||||||
|
|
||||||
SetAction(ID_MENU_ANSWER);
|
|
||||||
SetURI(call_info.remote_info.ptr, call_info.remote_info.slen, false);
|
|
||||||
pjsua_call_answer(call_id, 200, NULL, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Handler registration status has changed.
|
|
||||||
*/
|
|
||||||
static void on_reg_state(pjsua_acc_id acc_id)
|
|
||||||
{
|
|
||||||
PJ_UNUSED_ARG(acc_id);
|
|
||||||
|
|
||||||
// Log already written.
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Handler on buddy state changed.
|
|
||||||
*/
|
|
||||||
static void on_buddy_state(pjsua_buddy_id buddy_id)
|
|
||||||
{
|
|
||||||
/* Currently this is not processed */
|
|
||||||
PJ_UNUSED_ARG(buddy_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Incoming IM message (i.e. MESSAGE request)!
|
|
||||||
*/
|
|
||||||
static void on_pager(pjsua_call_id call_id, const pj_str_t *from,
|
|
||||||
const pj_str_t *to, const pj_str_t *contact,
|
|
||||||
const pj_str_t *mime_type, const pj_str_t *text)
|
|
||||||
{
|
|
||||||
/* Currently this is not processed */
|
|
||||||
PJ_UNUSED_ARG(call_id);
|
|
||||||
PJ_UNUSED_ARG(from);
|
|
||||||
PJ_UNUSED_ARG(to);
|
|
||||||
PJ_UNUSED_ARG(contact);
|
|
||||||
PJ_UNUSED_ARG(mime_type);
|
|
||||||
PJ_UNUSED_ARG(text);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Received typing indication
|
|
||||||
*/
|
|
||||||
static void on_typing(pjsua_call_id call_id, const pj_str_t *from,
|
|
||||||
const pj_str_t *to, const pj_str_t *contact,
|
|
||||||
pj_bool_t is_typing)
|
|
||||||
{
|
|
||||||
/* Currently this is not processed */
|
|
||||||
PJ_UNUSED_ARG(call_id);
|
|
||||||
PJ_UNUSED_ARG(from);
|
|
||||||
PJ_UNUSED_ARG(to);
|
|
||||||
PJ_UNUSED_ARG(contact);
|
|
||||||
PJ_UNUSED_ARG(is_typing);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Callback upon NAT detection completion
|
|
||||||
*/
|
|
||||||
static void nat_detect_cb(const pj_stun_nat_detect_result *res)
|
|
||||||
{
|
|
||||||
if (res->status != PJ_SUCCESS) {
|
|
||||||
char msg[250];
|
|
||||||
pj_ansi_snprintf(msg, sizeof(msg), "NAT detection failed: %s",
|
|
||||||
res->status_text);
|
|
||||||
SetCallStatus(msg, pj_ansi_strlen(msg));
|
|
||||||
} else {
|
|
||||||
char msg[250];
|
|
||||||
pj_ansi_snprintf(msg, sizeof(msg), "NAT type is %s",
|
|
||||||
res->nat_type_name);
|
|
||||||
SetCallStatus(msg, pj_ansi_strlen(msg));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static BOOL OnInitStack(void)
|
|
||||||
{
|
|
||||||
pjsua_config cfg;
|
|
||||||
pjsua_logging_config log_cfg;
|
|
||||||
pjsua_media_config media_cfg;
|
|
||||||
pjsua_transport_config udp_cfg;
|
|
||||||
pjsua_transport_config rtp_cfg;
|
|
||||||
pjsua_transport_id transport_id;
|
|
||||||
pjsua_transport_info transport_info;
|
|
||||||
pj_str_t tmp;
|
|
||||||
pj_status_t status;
|
|
||||||
|
|
||||||
/* Create pjsua */
|
|
||||||
status = pjsua_create();
|
|
||||||
if (status != PJ_SUCCESS) {
|
|
||||||
OnError(TEXT("Error creating pjsua"), status);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Create global pool for application */
|
|
||||||
g_pool = pjsua_pool_create("pjsua", 4000, 4000);
|
|
||||||
|
|
||||||
/* Init configs */
|
|
||||||
pjsua_config_default(&cfg);
|
|
||||||
pjsua_media_config_default(&media_cfg);
|
|
||||||
pjsua_transport_config_default(&udp_cfg);
|
|
||||||
udp_cfg.port = SIP_PORT;
|
|
||||||
|
|
||||||
pjsua_transport_config_default(&rtp_cfg);
|
|
||||||
rtp_cfg.port = 40000;
|
|
||||||
|
|
||||||
pjsua_logging_config_default(&log_cfg);
|
|
||||||
log_cfg.level = 5;
|
|
||||||
log_cfg.log_filename = pj_str("\\pjsua.txt");
|
|
||||||
log_cfg.msg_logging = 1;
|
|
||||||
log_cfg.decor = pj_log_get_decor() | PJ_LOG_HAS_CR;
|
|
||||||
|
|
||||||
/* Setup media */
|
|
||||||
media_cfg.clock_rate = 8000;
|
|
||||||
media_cfg.ec_options = PJMEDIA_ECHO_SIMPLE;
|
|
||||||
media_cfg.ec_tail_len = 256;
|
|
||||||
// use default quality setting
|
|
||||||
//media_cfg.quality = 1;
|
|
||||||
media_cfg.ptime = 20;
|
|
||||||
media_cfg.enable_ice = USE_ICE;
|
|
||||||
|
|
||||||
/* Initialize application callbacks */
|
|
||||||
cfg.cb.on_call_state = &on_call_state;
|
|
||||||
cfg.cb.on_call_media_state = &on_call_media_state;
|
|
||||||
cfg.cb.on_incoming_call = &on_incoming_call;
|
|
||||||
cfg.cb.on_reg_state = &on_reg_state;
|
|
||||||
cfg.cb.on_buddy_state = &on_buddy_state;
|
|
||||||
cfg.cb.on_pager = &on_pager;
|
|
||||||
cfg.cb.on_typing = &on_typing;
|
|
||||||
cfg.cb.on_nat_detect = &nat_detect_cb;
|
|
||||||
|
|
||||||
if (SIP_PROXY) {
|
|
||||||
cfg.outbound_proxy_cnt = 1;
|
|
||||||
cfg.outbound_proxy[0] = pj_str(SIP_PROXY);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (NAMESERVER) {
|
|
||||||
cfg.nameserver_count = 1;
|
|
||||||
cfg.nameserver[0] = pj_str(NAMESERVER);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (NAMESERVER && STUN_DOMAIN) {
|
|
||||||
cfg.stun_domain = pj_str(STUN_DOMAIN);
|
|
||||||
} else if (STUN_SERVER) {
|
|
||||||
cfg.stun_host = pj_str(STUN_SERVER);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Initialize pjsua */
|
|
||||||
status = pjsua_init(&cfg, &log_cfg, &media_cfg);
|
|
||||||
if (status != PJ_SUCCESS) {
|
|
||||||
OnError(TEXT("Initialization error"), status);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set codec priority */
|
|
||||||
pjsua_codec_set_priority(pj_cstr(&tmp, "pcmu"), 240);
|
|
||||||
pjsua_codec_set_priority(pj_cstr(&tmp, "pcma"), 230);
|
|
||||||
pjsua_codec_set_priority(pj_cstr(&tmp, "speex/8000"), 190);
|
|
||||||
pjsua_codec_set_priority(pj_cstr(&tmp, "ilbc"), 189);
|
|
||||||
pjsua_codec_set_priority(pj_cstr(&tmp, "speex/16000"), 180);
|
|
||||||
pjsua_codec_set_priority(pj_cstr(&tmp, "speex/32000"), 0);
|
|
||||||
pjsua_codec_set_priority(pj_cstr(&tmp, "gsm"), 100);
|
|
||||||
|
|
||||||
|
|
||||||
/* Add UDP transport and the corresponding PJSUA account */
|
|
||||||
status = pjsua_transport_create(PJSIP_TRANSPORT_UDP,
|
|
||||||
&udp_cfg, &transport_id);
|
|
||||||
if (status != PJ_SUCCESS) {
|
|
||||||
OnError(TEXT("Error starting SIP transport"), status);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
pjsua_transport_get_info(transport_id, &transport_info);
|
|
||||||
|
|
||||||
g_local_uri.ptr = (char*)pj_pool_alloc(g_pool, 128);
|
|
||||||
g_local_uri.slen = pj_ansi_sprintf(g_local_uri.ptr,
|
|
||||||
"<sip:%.*s:%d>",
|
|
||||||
(int)transport_info.local_name.host.slen,
|
|
||||||
transport_info.local_name.host.ptr,
|
|
||||||
transport_info.local_name.port);
|
|
||||||
|
|
||||||
|
|
||||||
/* Add local account */
|
|
||||||
pjsua_acc_add_local(transport_id, PJ_TRUE, &g_current_acc);
|
|
||||||
pjsua_acc_set_online_status(g_current_acc, PJ_TRUE);
|
|
||||||
|
|
||||||
/* Add account */
|
|
||||||
if (HAS_SIP_ACCOUNT) {
|
|
||||||
pjsua_acc_config cfg;
|
|
||||||
|
|
||||||
pjsua_acc_config_default(&cfg);
|
|
||||||
cfg.id = pj_str("sip:" SIP_USER "@" SIP_DOMAIN);
|
|
||||||
cfg.reg_uri = pj_str("sip:" SIP_DOMAIN);
|
|
||||||
cfg.cred_count = 1;
|
|
||||||
cfg.cred_info[0].realm = pj_str(SIP_REALM);
|
|
||||||
cfg.cred_info[0].scheme = pj_str("digest");
|
|
||||||
cfg.cred_info[0].username = pj_str(SIP_USER);
|
|
||||||
cfg.cred_info[0].data_type = PJSIP_CRED_DATA_PLAIN_PASSWD;
|
|
||||||
cfg.cred_info[0].data = pj_str(SIP_PASSWD);
|
|
||||||
|
|
||||||
status = pjsua_acc_add(&cfg, PJ_TRUE, &g_current_acc);
|
|
||||||
if (status != PJ_SUCCESS) {
|
|
||||||
pjsua_destroy();
|
|
||||||
return PJ_FALSE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Add buddy */
|
|
||||||
if (SIP_DST_URI) {
|
|
||||||
pjsua_buddy_config bcfg;
|
|
||||||
|
|
||||||
pjsua_buddy_config_default(&bcfg);
|
|
||||||
bcfg.uri = pj_str(SIP_DST_URI);
|
|
||||||
bcfg.subscribe = PJ_FALSE;
|
|
||||||
|
|
||||||
pjsua_buddy_add(&bcfg, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Start pjsua */
|
|
||||||
status = pjsua_start();
|
|
||||||
if (status != PJ_SUCCESS) {
|
|
||||||
OnError(TEXT("Error starting pjsua"), status);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
int WINAPI WinMain(HINSTANCE hInstance,
|
|
||||||
HINSTANCE hPrevInstance,
|
|
||||||
LPTSTR lpCmdLine,
|
|
||||||
int nCmdShow)
|
|
||||||
{
|
|
||||||
MSG msg;
|
|
||||||
HACCEL hAccelTable;
|
|
||||||
|
|
||||||
PJ_UNUSED_ARG(lpCmdLine);
|
|
||||||
PJ_UNUSED_ARG(hPrevInstance);
|
|
||||||
|
|
||||||
// Perform application initialization:
|
|
||||||
if (!InitInstance (hInstance, nCmdShow))
|
|
||||||
{
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_PJSUA_WINCE);
|
|
||||||
|
|
||||||
|
|
||||||
// Main message loop:
|
|
||||||
while (GetMessage(&msg, NULL, 0, 0))
|
|
||||||
{
|
|
||||||
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
|
|
||||||
{
|
|
||||||
TranslateMessage(&msg);
|
|
||||||
DispatchMessage(&msg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return msg.wParam;
|
|
||||||
}
|
|
||||||
|
|
||||||
static ATOM MyRegisterClass(HINSTANCE hInstance, LPTSTR szWindowClass)
|
|
||||||
{
|
|
||||||
WNDCLASS wc;
|
|
||||||
|
|
||||||
wc.style = CS_HREDRAW | CS_VREDRAW;
|
|
||||||
wc.lpfnWndProc = (WNDPROC) WndProc;
|
|
||||||
wc.cbClsExtra = 0;
|
|
||||||
wc.cbWndExtra = 0;
|
|
||||||
wc.hInstance = hInstance;
|
|
||||||
wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_PJSUA_WINCE));
|
|
||||||
wc.hCursor = 0;
|
|
||||||
wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
|
|
||||||
wc.lpszMenuName = 0;
|
|
||||||
wc.lpszClassName = szWindowClass;
|
|
||||||
|
|
||||||
return RegisterClass(&wc);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
|
|
||||||
{
|
|
||||||
HWND hWnd;
|
|
||||||
TCHAR szTitle[MAX_LOADSTRING];
|
|
||||||
TCHAR szWindowClass[MAX_LOADSTRING];
|
|
||||||
|
|
||||||
hInst = hInstance;
|
|
||||||
|
|
||||||
/* Init stack */
|
|
||||||
if (OnInitStack() == FALSE)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
LoadString(hInstance, IDC_PJSUA_WINCE, szWindowClass, MAX_LOADSTRING);
|
|
||||||
MyRegisterClass(hInstance, szWindowClass);
|
|
||||||
|
|
||||||
LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
|
|
||||||
hWnd = CreateWindow(szWindowClass, szTitle, WS_VISIBLE,
|
|
||||||
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 200,
|
|
||||||
NULL, NULL, hInstance, NULL);
|
|
||||||
|
|
||||||
if (!hWnd)
|
|
||||||
{
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
hMainWnd = hWnd;
|
|
||||||
ShowWindow(hWnd, nCmdShow);
|
|
||||||
UpdateWindow(hWnd);
|
|
||||||
if (hwndCB)
|
|
||||||
CommandBar_Show(hwndCB, TRUE);
|
|
||||||
|
|
||||||
SetTimer(hMainWnd, ID_POLL_TIMER, 50, NULL);
|
|
||||||
|
|
||||||
pjsua_detect_nat_type();
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void OnCreate(HWND hWnd)
|
|
||||||
{
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
X = 10,
|
|
||||||
Y = 40,
|
|
||||||
W = 220,
|
|
||||||
H = 30,
|
|
||||||
};
|
|
||||||
|
|
||||||
DWORD dwStyle;
|
|
||||||
|
|
||||||
hMainWnd = hWnd;
|
|
||||||
|
|
||||||
hwndCB = CommandBar_Create(hInst, hWnd, 1);
|
|
||||||
CommandBar_InsertMenubar(hwndCB, hInst, IDM_MENU, 0);
|
|
||||||
CommandBar_AddAdornments(hwndCB, 0, 0);
|
|
||||||
|
|
||||||
// Create global status text
|
|
||||||
dwStyle = WS_CHILD | WS_VISIBLE | WS_DISABLED | ES_LEFT;
|
|
||||||
hwndGlobalStatus = CreateWindow(
|
|
||||||
TEXT("EDIT"), // Class name
|
|
||||||
NULL, // Window text
|
|
||||||
dwStyle, // Window style
|
|
||||||
X, // x-coordinate of the upper-left corner
|
|
||||||
Y+0, // y-coordinate of the upper-left corner
|
|
||||||
W, // Width of the window for the edit
|
|
||||||
// control
|
|
||||||
H-5, // Height of the window for the edit
|
|
||||||
// control
|
|
||||||
hWnd, // Window handle to the parent window
|
|
||||||
(HMENU) ID_GLOBAL_STATUS, // Control identifier
|
|
||||||
hInst, // Instance handle
|
|
||||||
NULL); // Specify NULL for this parameter when
|
|
||||||
// you create a control
|
|
||||||
SetLocalURI(g_local_uri.ptr, g_local_uri.slen, false);
|
|
||||||
|
|
||||||
|
|
||||||
// Create URI edit
|
|
||||||
dwStyle = WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER;
|
|
||||||
hwndURI = CreateWindow (
|
|
||||||
TEXT("EDIT"), // Class name
|
|
||||||
NULL, // Window text
|
|
||||||
dwStyle, // Window style
|
|
||||||
X, // x-coordinate of the upper-left corner
|
|
||||||
Y+H, // y-coordinate of the upper-left corner
|
|
||||||
W, // Width of the window for the edit
|
|
||||||
// control
|
|
||||||
H-5, // Height of the window for the edit
|
|
||||||
// control
|
|
||||||
hWnd, // Window handle to the parent window
|
|
||||||
(HMENU) ID_URI, // Control identifier
|
|
||||||
hInst, // Instance handle
|
|
||||||
NULL); // Specify NULL for this parameter when
|
|
||||||
// you create a control
|
|
||||||
|
|
||||||
// Create action Button
|
|
||||||
hwndActionButton = CreateWindow( L"button", L"Action",
|
|
||||||
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
|
|
||||||
X, Y+2*H,
|
|
||||||
60, H-5, hWnd,
|
|
||||||
(HMENU) ID_BTN_ACTION,
|
|
||||||
hInst, NULL );
|
|
||||||
|
|
||||||
// Create exit button
|
|
||||||
hwndExitButton = CreateWindow( L"button", L"E&xit",
|
|
||||||
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
|
|
||||||
X+70, Y+2*H,
|
|
||||||
60, H-5, hWnd,
|
|
||||||
(HMENU) ID_EXIT,
|
|
||||||
hInst, NULL );
|
|
||||||
|
|
||||||
|
|
||||||
// Create call status edit
|
|
||||||
dwStyle = WS_CHILD | WS_VISIBLE | WS_DISABLED;
|
|
||||||
hwndCallStatus = CreateWindow (
|
|
||||||
TEXT("EDIT"), // Class name
|
|
||||||
NULL, // Window text
|
|
||||||
dwStyle, // Window style
|
|
||||||
X, // x-coordinate of the upper-left corner
|
|
||||||
Y+3*H, // y-coordinate of the upper-left corner
|
|
||||||
W, // Width of the window for the edit
|
|
||||||
// control
|
|
||||||
H-5, // Height of the window for the edit
|
|
||||||
// control
|
|
||||||
hWnd, // Window handle to the parent window
|
|
||||||
(HMENU) ID_CALL_STATUS, // Control identifier
|
|
||||||
hInst, // Instance handle
|
|
||||||
NULL); // Specify NULL for this parameter when
|
|
||||||
// you create a control
|
|
||||||
SetCallStatus("Ready", 5);
|
|
||||||
SetAction(ID_MENU_CALL);
|
|
||||||
SetURI(SIP_DST_URI, -1);
|
|
||||||
SetFocus(hWnd);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void OnDestroy(void)
|
|
||||||
{
|
|
||||||
pjsua_destroy();
|
|
||||||
}
|
|
||||||
|
|
||||||
static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|
||||||
{
|
|
||||||
int wmId, wmEvent;
|
|
||||||
|
|
||||||
switch (message) {
|
|
||||||
case WM_KEYUP:
|
|
||||||
if (wParam==114) {
|
|
||||||
wParam = ID_MENU_CALL;
|
|
||||||
} else if (wParam==115) {
|
|
||||||
if (g_current_call == PJSUA_INVALID_ID)
|
|
||||||
wParam = ID_EXIT;
|
|
||||||
else
|
|
||||||
wParam = ID_MENU_DISCONNECT;
|
|
||||||
} else
|
|
||||||
break;
|
|
||||||
|
|
||||||
case WM_COMMAND:
|
|
||||||
wmId = LOWORD(wParam);
|
|
||||||
wmEvent = HIWORD(wParam);
|
|
||||||
if (wmId == ID_BTN_ACTION)
|
|
||||||
wmId = g_current_action;
|
|
||||||
switch (wmId)
|
|
||||||
{
|
|
||||||
case ID_MENU_CALL:
|
|
||||||
if (g_current_call != PJSUA_INVALID_ID) {
|
|
||||||
MessageBox(NULL, TEXT("Can not make call"),
|
|
||||||
TEXT("You already have one call active"), MB_OK);
|
|
||||||
}
|
|
||||||
pj_str_t dst_uri;
|
|
||||||
wchar_t text[256];
|
|
||||||
char tmp[256];
|
|
||||||
pj_status_t status;
|
|
||||||
|
|
||||||
GetWindowText(hwndURI, text, PJ_ARRAY_SIZE(text));
|
|
||||||
pj_unicode_to_ansi(text, pj_unicode_strlen(text),
|
|
||||||
tmp, sizeof(tmp));
|
|
||||||
dst_uri.ptr = tmp;
|
|
||||||
dst_uri.slen = pj_ansi_strlen(tmp);
|
|
||||||
status = pjsua_call_make_call(g_current_acc,
|
|
||||||
&dst_uri, 0, NULL,
|
|
||||||
NULL, &g_current_call);
|
|
||||||
if (status != PJ_SUCCESS)
|
|
||||||
OnError(TEXT("Unable to make call"), status);
|
|
||||||
break;
|
|
||||||
case ID_MENU_ANSWER:
|
|
||||||
if (g_current_call == PJSUA_INVALID_ID)
|
|
||||||
MessageBox(NULL, TEXT("Can not answer"),
|
|
||||||
TEXT("There is no call!"), MB_OK);
|
|
||||||
else
|
|
||||||
pjsua_call_answer(g_current_call, 200, NULL, NULL);
|
|
||||||
break;
|
|
||||||
case ID_MENU_DISCONNECT:
|
|
||||||
if (g_current_call == PJSUA_INVALID_ID)
|
|
||||||
MessageBox(NULL, TEXT("Can not disconnect"),
|
|
||||||
TEXT("There is no call!"), MB_OK);
|
|
||||||
else
|
|
||||||
pjsua_call_hangup(g_current_call, PJSIP_SC_DECLINE, NULL, NULL);
|
|
||||||
break;
|
|
||||||
case ID_EXIT:
|
|
||||||
DestroyWindow(hWnd);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return DefWindowProc(hWnd, message, wParam, lParam);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case WM_CREATE:
|
|
||||||
OnCreate(hWnd);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case WM_DESTROY:
|
|
||||||
OnDestroy();
|
|
||||||
CommandBar_Destroy(hwndCB);
|
|
||||||
PostQuitMessage(0);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case WM_TIMER:
|
|
||||||
pjsua_handle_events(1);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return DefWindowProc(hWnd, message, wParam, lParam);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
|
|
||||||
#if !defined(AFX_PJSUA_WINCE_H__F6793AE3_47AC_45D8_B00D_AB766E72C6BF__INCLUDED_)
|
|
||||||
#define AFX_PJSUA_WINCE_H__F6793AE3_47AC_45D8_B00D_AB766E72C6BF__INCLUDED_
|
|
||||||
|
|
||||||
#if _MSC_VER > 1000
|
|
||||||
#pragma once
|
|
||||||
#endif // _MSC_VER > 1000
|
|
||||||
|
|
||||||
#include "resource.h"
|
|
||||||
|
|
||||||
|
|
||||||
#endif // !defined(AFX_PJSUA_WINCE_H__F6793AE3_47AC_45D8_B00D_AB766E72C6BF__INCLUDED_)
|
|
Before Width: | Height: | Size: 1.1 KiB |
|
@ -1,108 +0,0 @@
|
||||||
//Microsoft eMbedded Visual C++ generated resource script.
|
|
||||||
//
|
|
||||||
#include "resource.h"
|
|
||||||
|
|
||||||
#define APSTUDIO_READONLY_SYMBOLS
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// Generated from the TEXTINCLUDE 2 resource.
|
|
||||||
//
|
|
||||||
#include "newres.h"
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
#undef APSTUDIO_READONLY_SYMBOLS
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
// English (U.S.) resources
|
|
||||||
|
|
||||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
|
||||||
#ifdef _WIN32
|
|
||||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
|
||||||
#pragma code_page(1252)
|
|
||||||
#endif //_WIN32
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// Icon
|
|
||||||
//
|
|
||||||
|
|
||||||
// Icon with lowest ID value placed first to ensure application icon
|
|
||||||
// remains consistent on all systems.
|
|
||||||
IDI_PJSUA_WINCE ICON DISCARDABLE "pjsua_wince.ICO"
|
|
||||||
|
|
||||||
#ifdef APSTUDIO_INVOKED
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// TEXTINCLUDE
|
|
||||||
//
|
|
||||||
|
|
||||||
1 TEXTINCLUDE DISCARDABLE
|
|
||||||
BEGIN
|
|
||||||
"resource.h\0"
|
|
||||||
END
|
|
||||||
|
|
||||||
2 TEXTINCLUDE DISCARDABLE
|
|
||||||
BEGIN
|
|
||||||
"#include ""newres.h""\r\n"
|
|
||||||
"\0"
|
|
||||||
END
|
|
||||||
|
|
||||||
3 TEXTINCLUDE DISCARDABLE
|
|
||||||
BEGIN
|
|
||||||
"\r\n"
|
|
||||||
"\0"
|
|
||||||
END
|
|
||||||
|
|
||||||
#endif // APSTUDIO_INVOKED
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// Menubar
|
|
||||||
//
|
|
||||||
|
|
||||||
IDM_MENU MENU DISCARDABLE
|
|
||||||
BEGIN
|
|
||||||
MENUITEM "E&xit", ID_EXIT
|
|
||||||
END
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// Accelerator
|
|
||||||
//
|
|
||||||
|
|
||||||
IDC_PJSUA_WINCE ACCELERATORS DISCARDABLE
|
|
||||||
BEGIN
|
|
||||||
"/", IDM_HELP_ABOUT, ASCII, ALT, NOINVERT
|
|
||||||
VK_F4, IDM_FILE_EXIT, VIRTKEY, ALT, NOINVERT
|
|
||||||
END
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// String Table
|
|
||||||
//
|
|
||||||
|
|
||||||
STRINGTABLE DISCARDABLE
|
|
||||||
BEGIN
|
|
||||||
IDS_APP_TITLE "pjsua_wince"
|
|
||||||
IDS_HELLO "Hello World!"
|
|
||||||
IDC_PJSUA_WINCE "PJSUA_WINCE"
|
|
||||||
END
|
|
||||||
|
|
||||||
#endif // English (U.S.) resources
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef APSTUDIO_INVOKED
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// Generated from the TEXTINCLUDE 3 resource.
|
|
||||||
//
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
#endif // not APSTUDIO_INVOKED
|
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
//{{NO_DEPENDENCIES}}
|
|
||||||
// Microsoft eMbedded Visual C++ generated include file.
|
|
||||||
// Used by pjsua_wince.rc
|
|
||||||
//
|
|
||||||
#define IDS_APP_TITLE 1
|
|
||||||
#define IDS_HELLO 2
|
|
||||||
#define IDC_PJSUA_WINCE 3
|
|
||||||
#define IDI_PJSUA_WINCE 101
|
|
||||||
#define IDM_MENU 102
|
|
||||||
#define IDD_ABOUTBOX 103
|
|
||||||
#define IDM_FILE_EXIT 40002
|
|
||||||
#define IDM_HELP_ABOUT 40003
|
|
||||||
#define ID_MAKECALL 40004
|
|
||||||
#define ID_ANSWER 40005
|
|
||||||
#define ID_DISCONNECT 40006
|
|
||||||
#define ID_ACTION 40007
|
|
||||||
#define ID_EXIT 65535
|
|
||||||
|
|
||||||
// Next default values for new objects
|
|
||||||
//
|
|
||||||
#ifdef APSTUDIO_INVOKED
|
|
||||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
|
||||||
#define _APS_NEXT_RESOURCE_VALUE 104
|
|
||||||
#define _APS_NEXT_COMMAND_VALUE 40008
|
|
||||||
#define _APS_NEXT_CONTROL_VALUE 1001
|
|
||||||
#define _APS_NEXT_SYMED_VALUE 101
|
|
||||||
#endif
|
|
||||||
#endif
|
|
|
@ -1,66 +0,0 @@
|
||||||
// PocketPJ.cpp : Defines the class behaviors for the application.
|
|
||||||
//
|
|
||||||
|
|
||||||
#include "stdafx.h"
|
|
||||||
#include "PocketPJ.h"
|
|
||||||
#include "PocketPJDlg.h"
|
|
||||||
|
|
||||||
#ifdef _DEBUG
|
|
||||||
#define new DEBUG_NEW
|
|
||||||
#undef THIS_FILE
|
|
||||||
static char THIS_FILE[] = __FILE__;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
// CPocketPJApp
|
|
||||||
|
|
||||||
BEGIN_MESSAGE_MAP(CPocketPJApp, CWinApp)
|
|
||||||
//{{AFX_MSG_MAP(CPocketPJApp)
|
|
||||||
// NOTE - the ClassWizard will add and remove mapping macros here.
|
|
||||||
// DO NOT EDIT what you see in these blocks of generated code!
|
|
||||||
//}}AFX_MSG_MAP
|
|
||||||
END_MESSAGE_MAP()
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
// CPocketPJApp construction
|
|
||||||
|
|
||||||
CPocketPJApp::CPocketPJApp()
|
|
||||||
: CWinApp()
|
|
||||||
{
|
|
||||||
// TODO: add construction code here,
|
|
||||||
// Place all significant initialization in InitInstance
|
|
||||||
}
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
// The one and only CPocketPJApp object
|
|
||||||
|
|
||||||
CPocketPJApp theApp;
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
// CPocketPJApp initialization
|
|
||||||
|
|
||||||
BOOL CPocketPJApp::InitInstance()
|
|
||||||
{
|
|
||||||
// Standard initialization
|
|
||||||
// If you are not using these features and wish to reduce the size
|
|
||||||
// of your final executable, you should remove from the following
|
|
||||||
// the specific initialization routines you do not need.
|
|
||||||
|
|
||||||
CPocketPJDlg dlg;
|
|
||||||
m_pMainWnd = &dlg;
|
|
||||||
int nResponse = dlg.DoModal();
|
|
||||||
if (nResponse == IDOK)
|
|
||||||
{
|
|
||||||
// TODO: Place code here to handle when the dialog is
|
|
||||||
// dismissed with OK
|
|
||||||
}
|
|
||||||
else if (nResponse == IDCANCEL)
|
|
||||||
{
|
|
||||||
// TODO: Place code here to handle when the dialog is
|
|
||||||
// dismissed with Cancel
|
|
||||||
}
|
|
||||||
|
|
||||||
// Since the dialog has been closed, return FALSE so that we exit the
|
|
||||||
// application, rather than start the application's message pump.
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
|
@ -1,49 +0,0 @@
|
||||||
// PocketPJ.h : main header file for the POCKETPJ application
|
|
||||||
//
|
|
||||||
|
|
||||||
#if !defined(AFX_POCKETPJ_H__D90320F8_01F9_4F5C_8655_13CF2FFDDF48__INCLUDED_)
|
|
||||||
#define AFX_POCKETPJ_H__D90320F8_01F9_4F5C_8655_13CF2FFDDF48__INCLUDED_
|
|
||||||
|
|
||||||
#if _MSC_VER >= 1000
|
|
||||||
#pragma once
|
|
||||||
#endif // _MSC_VER >= 1000
|
|
||||||
|
|
||||||
#ifndef __AFXWIN_H__
|
|
||||||
#error include 'stdafx.h' before including this file for PCH
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "resource.h" // main symbols
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
// CPocketPJApp:
|
|
||||||
// See PocketPJ.cpp for the implementation of this class
|
|
||||||
//
|
|
||||||
|
|
||||||
class CPocketPJApp : public CWinApp
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
CPocketPJApp();
|
|
||||||
|
|
||||||
// Overrides
|
|
||||||
// ClassWizard generated virtual function overrides
|
|
||||||
//{{AFX_VIRTUAL(CPocketPJApp)
|
|
||||||
public:
|
|
||||||
virtual BOOL InitInstance();
|
|
||||||
//}}AFX_VIRTUAL
|
|
||||||
|
|
||||||
// Implementation
|
|
||||||
|
|
||||||
//{{AFX_MSG(CPocketPJApp)
|
|
||||||
// NOTE - the ClassWizard will add and remove member functions here.
|
|
||||||
// DO NOT EDIT what you see in these blocks of generated code !
|
|
||||||
//}}AFX_MSG
|
|
||||||
DECLARE_MESSAGE_MAP()
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
//{{AFX_INSERT_LOCATION}}
|
|
||||||
// Microsoft eMbedded Visual C++ will insert additional declarations immediately before the previous line.
|
|
||||||
|
|
||||||
#endif // !defined(AFX_POCKETPJ_H__D90320F8_01F9_4F5C_8655_13CF2FFDDF48__INCLUDED_)
|
|
|
@ -1,316 +0,0 @@
|
||||||
//Microsoft eMbedded Visual C++ generated resource script.
|
|
||||||
//
|
|
||||||
#include "resource.h"
|
|
||||||
|
|
||||||
#define APSTUDIO_READONLY_SYMBOLS
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// Generated from the TEXTINCLUDE 2 resource.
|
|
||||||
//
|
|
||||||
#include "afxres.h"
|
|
||||||
#include "newres.h"
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
#undef APSTUDIO_READONLY_SYMBOLS
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
// English (U.S.) resources
|
|
||||||
|
|
||||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
|
||||||
#ifdef _WIN32
|
|
||||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
|
||||||
#pragma code_page(1252)
|
|
||||||
#endif //_WIN32
|
|
||||||
|
|
||||||
#ifdef APSTUDIO_INVOKED
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// TEXTINCLUDE
|
|
||||||
//
|
|
||||||
|
|
||||||
1 TEXTINCLUDE DISCARDABLE
|
|
||||||
BEGIN
|
|
||||||
"resource.h\0"
|
|
||||||
END
|
|
||||||
|
|
||||||
2 TEXTINCLUDE DISCARDABLE
|
|
||||||
BEGIN
|
|
||||||
"#include ""afxres.h""\r\n"
|
|
||||||
"#include ""newres.h""\r\n"
|
|
||||||
"\0"
|
|
||||||
END
|
|
||||||
|
|
||||||
3 TEXTINCLUDE DISCARDABLE
|
|
||||||
BEGIN
|
|
||||||
"#define _AFX_NO_SPLITTER_RESOURCES\r\n"
|
|
||||||
"#define _AFX_NO_OLE_RESOURCES\r\n"
|
|
||||||
"#define _AFX_NO_TRACKER_RESOURCES\r\n"
|
|
||||||
"#define _AFX_NO_PROPERTY_RESOURCES\r\n"
|
|
||||||
"\r\n"
|
|
||||||
"#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
|
|
||||||
"#ifdef _WIN32\r\n"
|
|
||||||
"LANGUAGE 9, 1\r\n"
|
|
||||||
"#pragma code_page(1252)\r\n"
|
|
||||||
"#endif //_WIN32\r\n"
|
|
||||||
"#include ""res\\PocketPJ.rc2"" // non-Microsoft eMbedded Visual C++ edited resources\r\n"
|
|
||||||
"#include ""afxres.rc"" // Standard components\r\n"
|
|
||||||
"#include ""wceres.rc"" // WCE-specific components\r\n"
|
|
||||||
"#endif\r\n"
|
|
||||||
"\0"
|
|
||||||
END
|
|
||||||
|
|
||||||
#endif // APSTUDIO_INVOKED
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// Icon
|
|
||||||
//
|
|
||||||
|
|
||||||
// Icon with lowest ID value placed first to ensure application icon
|
|
||||||
// remains consistent on all systems.
|
|
||||||
IDR_MAINFRAME ICON DISCARDABLE "res\\PocketPJ.ico"
|
|
||||||
IDI_ONLINE ICON DISCARDABLE "res\\online.ico"
|
|
||||||
IDI_OFFLINE ICON DISCARDABLE "res\\offline.ico"
|
|
||||||
IDI_INVISIBLE ICON DISCARDABLE "res\\invisibl.ico"
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// Dialog
|
|
||||||
//
|
|
||||||
|
|
||||||
IDD_POCKETPJ_DIALOG DIALOGEX 0, 0, 139, 151
|
|
||||||
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION
|
|
||||||
EXSTYLE WS_EX_APPWINDOW | 0x80000000L
|
|
||||||
CAPTION "PocketPJ"
|
|
||||||
FONT 8, "System"
|
|
||||||
BEGIN
|
|
||||||
LTEXT "sip:user@pjsip.lab",IDC_ACC_ID,22,5,115,8
|
|
||||||
CONTROL 135,IDC_BTN_ACC,"Static",SS_BITMAP | SS_NOTIFY |
|
|
||||||
WS_BORDER | WS_TABSTOP,7,3,12,11
|
|
||||||
CONTROL "List1",IDC_BUDDY_LIST,"SysListView32",LVS_SMALLICON |
|
|
||||||
LVS_SINGLESEL | LVS_SORTASCENDING | WS_BORDER |
|
|
||||||
WS_TABSTOP,7,35,127,109
|
|
||||||
LTEXT "URL:",IDC_STATIC,7,19,16,8
|
|
||||||
EDITTEXT IDC_URL,25,16,97,12,ES_AUTOHSCROLL
|
|
||||||
CONTROL 138,IDC_BTN_ACTION,"Static",SS_BITMAP | SS_NOTIFY |
|
|
||||||
WS_BORDER,125,16,12,11
|
|
||||||
END
|
|
||||||
|
|
||||||
IDD_SETTING DIALOG DISCARDABLE 0, 0, 140, 143
|
|
||||||
STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU
|
|
||||||
CAPTION "PocketPJ Settings.."
|
|
||||||
FONT 8, "System"
|
|
||||||
BEGIN
|
|
||||||
EDITTEXT IDC_DOMAIN,38,7,78,12,ES_AUTOHSCROLL
|
|
||||||
EDITTEXT IDC_USER,38,21,78,12,ES_AUTOHSCROLL
|
|
||||||
EDITTEXT IDC_PASSWD,38,35,78,12,ES_PASSWORD | ES_AUTOHSCROLL
|
|
||||||
EDITTEXT IDC_DNS,38,49,78,12,ES_AUTOHSCROLL
|
|
||||||
EDITTEXT IDC_STUN_SRV,56,64,77,12,ES_AUTOHSCROLL
|
|
||||||
CONTROL "ICE",IDC_ICE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,79,
|
|
||||||
24,10
|
|
||||||
CONTROL "TCP",IDC_TCP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,33,
|
|
||||||
79,24,10
|
|
||||||
CONTROL "SRTP",IDC_SRTP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,61,
|
|
||||||
79,29,10
|
|
||||||
CONTROL "PUBLISH",IDC_PUBLISH,"Button",BS_AUTOCHECKBOX |
|
|
||||||
WS_TABSTOP,93,79,40,10
|
|
||||||
CONTROL "EC, tail:",IDC_ECHO_SUPPRESS,"Button",BS_AUTOCHECKBOX |
|
|
||||||
WS_TABSTOP,7,92,37,10
|
|
||||||
EDITTEXT IDC_EC_TAIL,47,91,23,12,ES_AUTOHSCROLL
|
|
||||||
CONTROL "VAD",IDC_VAD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,93,
|
|
||||||
92,25,10
|
|
||||||
COMBOBOX IDC_CODECS,59,105,42,39,CBS_DROPDOWNLIST | WS_VSCROLL |
|
|
||||||
WS_TABSTOP
|
|
||||||
PUSHBUTTON "OK",IDOK,17,122,50,14
|
|
||||||
PUSHBUTTON "Cancel",IDCANCEL,73,122,50,14
|
|
||||||
LTEXT "Domain:",IDC_STATIC,7,8,30,9
|
|
||||||
LTEXT "User:",IDC_STATIC,7,22,30,9
|
|
||||||
LTEXT "Passwd:",IDC_STATIC,7,36,30,9
|
|
||||||
CONTROL "STUN Srv:",IDC_STUN,"Button",BS_AUTOCHECKBOX |
|
|
||||||
WS_TABSTOP,7,65,47,10
|
|
||||||
LTEXT "DNS:",IDC_STATIC,8,50,30,9
|
|
||||||
LTEXT "ms",IDC_STATIC,75,92,13,9
|
|
||||||
LTEXT "Codec priority:",IDC_STATIC,7,107,49,9
|
|
||||||
CONTROL "AA",IDC_AA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,107,
|
|
||||||
107,25,10
|
|
||||||
END
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _MAC
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// Version
|
|
||||||
//
|
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
|
||||||
FILEVERSION 1,0,0,1
|
|
||||||
PRODUCTVERSION 1,0,0,1
|
|
||||||
FILEFLAGSMASK 0x3fL
|
|
||||||
#ifdef _DEBUG
|
|
||||||
FILEFLAGS 0x1L
|
|
||||||
#else
|
|
||||||
FILEFLAGS 0x0L
|
|
||||||
#endif
|
|
||||||
FILEOS 0x4L
|
|
||||||
FILETYPE 0x1L
|
|
||||||
FILESUBTYPE 0x0L
|
|
||||||
BEGIN
|
|
||||||
BLOCK "StringFileInfo"
|
|
||||||
BEGIN
|
|
||||||
BLOCK "040904B0"
|
|
||||||
BEGIN
|
|
||||||
VALUE "CompanyName", "HP\0"
|
|
||||||
VALUE "FileDescription", "PocketPJ WCE MFC Application\0"
|
|
||||||
VALUE "FileVersion", "1, 0, 0, 1\0"
|
|
||||||
VALUE "InternalName", "PocketPJ\0"
|
|
||||||
VALUE "LegalCopyright", "Copyright © 2008\0"
|
|
||||||
VALUE "LegalTrademarks", "\0"
|
|
||||||
VALUE "OriginalFilename", "PocketPJ.exe\0"
|
|
||||||
VALUE "ProductName", "PocketPJ Application\0"
|
|
||||||
VALUE "ProductVersion", "1, 0, 0, 1\0"
|
|
||||||
END
|
|
||||||
END
|
|
||||||
BLOCK "VarFileInfo"
|
|
||||||
BEGIN
|
|
||||||
VALUE "Translation", 0x409, 1200
|
|
||||||
END
|
|
||||||
END
|
|
||||||
|
|
||||||
#endif // !_MAC
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// DESIGNINFO
|
|
||||||
//
|
|
||||||
|
|
||||||
#ifdef APSTUDIO_INVOKED
|
|
||||||
GUIDELINES DESIGNINFO DISCARDABLE
|
|
||||||
BEGIN
|
|
||||||
IDD_POCKETPJ_DIALOG, DIALOG
|
|
||||||
BEGIN
|
|
||||||
LEFTMARGIN, 7
|
|
||||||
RIGHTMARGIN, 137
|
|
||||||
TOPMARGIN, 7
|
|
||||||
BOTTOMMARGIN, 144
|
|
||||||
HORZGUIDE, 28
|
|
||||||
END
|
|
||||||
|
|
||||||
IDD_SETTING, DIALOG
|
|
||||||
BEGIN
|
|
||||||
LEFTMARGIN, 7
|
|
||||||
RIGHTMARGIN, 133
|
|
||||||
TOPMARGIN, 7
|
|
||||||
BOTTOMMARGIN, 136
|
|
||||||
END
|
|
||||||
END
|
|
||||||
#endif // APSTUDIO_INVOKED
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// Bitmap
|
|
||||||
//
|
|
||||||
|
|
||||||
IDB_ONLINE BITMAP DISCARDABLE "res\\online.bmp"
|
|
||||||
IDB_OFFLINE BITMAP DISCARDABLE "res\\offline.bmp"
|
|
||||||
IDB_INVISIBLE BITMAP DISCARDABLE "res\\invisibl.bmp"
|
|
||||||
IDB_ACTION BITMAP DISCARDABLE "res\\action.bmp"
|
|
||||||
IDB_BLANK BITMAP DISCARDABLE "res\\blank.bmp"
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// Menubar
|
|
||||||
//
|
|
||||||
|
|
||||||
IDR_ACC_MENU MENU DISCARDABLE
|
|
||||||
BEGIN
|
|
||||||
POPUP "Set Online Status:"
|
|
||||||
BEGIN
|
|
||||||
MENUITEM "&Online", IDC_ACC_ONLINE
|
|
||||||
MENUITEM "&Invisible", IDC_ACC_INVISIBLE
|
|
||||||
MENUITEM SEPARATOR
|
|
||||||
MENUITEM "&Settings...", IDC_ACC_SETTINGS
|
|
||||||
MENUITEM SEPARATOR
|
|
||||||
MENUITEM "E&xit", IDOK
|
|
||||||
END
|
|
||||||
END
|
|
||||||
|
|
||||||
IDR_URI_MENU MENU DISCARDABLE
|
|
||||||
BEGIN
|
|
||||||
POPUP "URI Action"
|
|
||||||
BEGIN
|
|
||||||
MENUITEM "&Call...", IDC_URI_CALL
|
|
||||||
MENUITEM "Add to Buddy List", IDC_URI_ADD_BUDDY
|
|
||||||
MENUITEM "&Del Buddy", IDC_URI_DEL_BUDDY
|
|
||||||
END
|
|
||||||
END
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// Data
|
|
||||||
//
|
|
||||||
|
|
||||||
IDR_ACC_MENU SHMENUBAR DISCARDABLE
|
|
||||||
BEGIN
|
|
||||||
IDR_ACC_MENU, 1,
|
|
||||||
I_IMAGENONE, IDC_MENU1, TBSTATE_ENABLED,
|
|
||||||
TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_CAP_MENUITEM32786, 0, 0,
|
|
||||||
END
|
|
||||||
|
|
||||||
IDR_URI_MENU SHMENUBAR DISCARDABLE
|
|
||||||
BEGIN
|
|
||||||
IDR_URI_MENU, 1,
|
|
||||||
I_IMAGENONE, IDC_MENU2, TBSTATE_ENABLED,
|
|
||||||
TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_CAP_MENUITEM32790, 0, 0,
|
|
||||||
END
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// String Table
|
|
||||||
//
|
|
||||||
|
|
||||||
STRINGTABLE DISCARDABLE
|
|
||||||
BEGIN
|
|
||||||
IDS_CAP_ONLINE "Online"
|
|
||||||
IDS_CAP_OFFLINE "Offline"
|
|
||||||
IDS_CAP_INVISIBLE "Invisible"
|
|
||||||
END
|
|
||||||
|
|
||||||
STRINGTABLE DISCARDABLE
|
|
||||||
BEGIN
|
|
||||||
IDS_CAP_MENUITEM32786 "Set Online Status:"
|
|
||||||
IDS_CAP_MENUITEM32790 "URI Action"
|
|
||||||
END
|
|
||||||
|
|
||||||
#endif // English (U.S.) resources
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef APSTUDIO_INVOKED
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// Generated from the TEXTINCLUDE 3 resource.
|
|
||||||
//
|
|
||||||
#define _AFX_NO_SPLITTER_RESOURCES
|
|
||||||
#define _AFX_NO_OLE_RESOURCES
|
|
||||||
#define _AFX_NO_TRACKER_RESOURCES
|
|
||||||
#define _AFX_NO_PROPERTY_RESOURCES
|
|
||||||
|
|
||||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
|
||||||
#ifdef _WIN32
|
|
||||||
LANGUAGE 9, 1
|
|
||||||
#pragma code_page(1252)
|
|
||||||
#endif //_WIN32
|
|
||||||
#include "res\PocketPJ.rc2" // non-Microsoft eMbedded Visual C++ edited resources
|
|
||||||
#include "afxres.rc" // Standard components
|
|
||||||
// #include "wceres.rc" // WCE-specific components
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
#endif // not APSTUDIO_INVOKED
|
|
||||||
|
|
|
@ -1,102 +0,0 @@
|
||||||
; CLW file contains information for the MFC ClassWizard
|
|
||||||
|
|
||||||
[General Info]
|
|
||||||
Version=1
|
|
||||||
LastClass=CSettingsDlg
|
|
||||||
LastTemplate=CDialog
|
|
||||||
NewFileInclude1=#include "stdafx.h"
|
|
||||||
NewFileInclude2=#include "PocketPJ.h"
|
|
||||||
|
|
||||||
ClassCount=3
|
|
||||||
Class1=CPocketPJApp
|
|
||||||
Class2=CPocketPJDlg
|
|
||||||
|
|
||||||
ResourceCount=5
|
|
||||||
Resource2=IDR_ACC_MENU
|
|
||||||
Resource3=IDD_POCKETPJ_DIALOG
|
|
||||||
Resource4=IDD_SETTING
|
|
||||||
Resource1=IDR_MAINFRAME
|
|
||||||
Class3=CSettingsDlg
|
|
||||||
Resource5=IDR_URI_MENU
|
|
||||||
|
|
||||||
[CLS:CPocketPJApp]
|
|
||||||
Type=0
|
|
||||||
HeaderFile=PocketPJ.h
|
|
||||||
ImplementationFile=PocketPJ.cpp
|
|
||||||
Filter=N
|
|
||||||
|
|
||||||
[CLS:CPocketPJDlg]
|
|
||||||
Type=0
|
|
||||||
HeaderFile=PocketPJDlg.h
|
|
||||||
ImplementationFile=PocketPJDlg.cpp
|
|
||||||
Filter=D
|
|
||||||
BaseClass=CDialog
|
|
||||||
VirtualFilter=dWC
|
|
||||||
LastObject=CPocketPJDlg
|
|
||||||
|
|
||||||
|
|
||||||
[DLG:IDD_POCKETPJ_DIALOG]
|
|
||||||
Type=1
|
|
||||||
Class=CPocketPJDlg
|
|
||||||
ControlCount=6
|
|
||||||
Control1=IDC_ACC_ID,static,1342308352
|
|
||||||
Control2=IDC_BTN_ACC,static,1350631694
|
|
||||||
Control3=IDC_BUDDY_LIST,SysListView32,1350631446
|
|
||||||
Control4=IDC_STATIC,static,1342308352
|
|
||||||
Control5=IDC_URL,edit,1350631552
|
|
||||||
Control6=IDC_BTN_ACTION,static,1350566158
|
|
||||||
|
|
||||||
[MNU:IDR_ACC_MENU]
|
|
||||||
Type=1
|
|
||||||
Class=CPocketPJDlg
|
|
||||||
Command1=IDC_ACC_ONLINE
|
|
||||||
Command2=IDC_ACC_INVISIBLE
|
|
||||||
Command3=IDC_ACC_SETTINGS
|
|
||||||
Command4=IDOK
|
|
||||||
CommandCount=4
|
|
||||||
|
|
||||||
[MNU:IDR_URI_MENU]
|
|
||||||
Type=1
|
|
||||||
Class=CPocketPJDlg
|
|
||||||
Command1=IDC_URI_CALL
|
|
||||||
Command2=IDC_URI_ADD_BUDDY
|
|
||||||
Command3=IDC_URI_DEL_BUDDY
|
|
||||||
CommandCount=3
|
|
||||||
|
|
||||||
[DLG:IDD_SETTING]
|
|
||||||
Type=1
|
|
||||||
Class=CSettingsDlg
|
|
||||||
ControlCount=23
|
|
||||||
Control1=IDC_DOMAIN,edit,1350631552
|
|
||||||
Control2=IDC_USER,edit,1350631552
|
|
||||||
Control3=IDC_PASSWD,edit,1350631584
|
|
||||||
Control4=IDC_DNS,edit,1350631552
|
|
||||||
Control5=IDC_STUN_SRV,edit,1350631552
|
|
||||||
Control6=IDC_ICE,button,1342242819
|
|
||||||
Control7=IDC_TCP,button,1342242819
|
|
||||||
Control8=IDC_SRTP,button,1342242819
|
|
||||||
Control9=IDC_PUBLISH,button,1342242819
|
|
||||||
Control10=IDC_ECHO_SUPPRESS,button,1342242819
|
|
||||||
Control11=IDC_EC_TAIL,edit,1350631552
|
|
||||||
Control12=IDC_VAD,button,1342242819
|
|
||||||
Control13=IDC_CODECS,combobox,1344339971
|
|
||||||
Control14=IDOK,button,1342242816
|
|
||||||
Control15=IDCANCEL,button,1342242816
|
|
||||||
Control16=IDC_STATIC,static,1342308352
|
|
||||||
Control17=IDC_STATIC,static,1342308352
|
|
||||||
Control18=IDC_STATIC,static,1342308352
|
|
||||||
Control19=IDC_STUN,button,1342242819
|
|
||||||
Control20=IDC_STATIC,static,1342308352
|
|
||||||
Control21=IDC_STATIC,static,1342308352
|
|
||||||
Control22=IDC_STATIC,static,1342308352
|
|
||||||
Control23=IDC_AA,button,1342242819
|
|
||||||
|
|
||||||
[CLS:CSettingsDlg]
|
|
||||||
Type=0
|
|
||||||
HeaderFile=SettingsDlg.h
|
|
||||||
ImplementationFile=SettingsDlg.cpp
|
|
||||||
BaseClass=CDialog
|
|
||||||
Filter=D
|
|
||||||
VirtualFilter=dWC
|
|
||||||
LastObject=CSettingsDlg
|
|
||||||
|
|
|
@ -1,269 +0,0 @@
|
||||||
Microsoft eMbedded Visual Tools Workspace File, Format Version 4.00
|
|
||||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
Project: "PocketPJ"=".\PocketPJ.vcp" - Package Owner=<4>
|
|
||||||
|
|
||||||
Package=<5>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
Package=<4>
|
|
||||||
{{{
|
|
||||||
Begin Project Dependency
|
|
||||||
Project_Dep_Name libgsmcodec
|
|
||||||
End Project Dependency
|
|
||||||
Begin Project Dependency
|
|
||||||
Project_Dep_Name libportaudio
|
|
||||||
End Project Dependency
|
|
||||||
Begin Project Dependency
|
|
||||||
Project_Dep_Name libresample
|
|
||||||
End Project Dependency
|
|
||||||
Begin Project Dependency
|
|
||||||
Project_Dep_Name libsrtp
|
|
||||||
End Project Dependency
|
|
||||||
Begin Project Dependency
|
|
||||||
Project_Dep_Name pjlib_util_wince
|
|
||||||
End Project Dependency
|
|
||||||
Begin Project Dependency
|
|
||||||
Project_Dep_Name pjlib_wince
|
|
||||||
End Project Dependency
|
|
||||||
Begin Project Dependency
|
|
||||||
Project_Dep_Name pjmedia_codec_wince
|
|
||||||
End Project Dependency
|
|
||||||
Begin Project Dependency
|
|
||||||
Project_Dep_Name pjmedia_wince
|
|
||||||
End Project Dependency
|
|
||||||
Begin Project Dependency
|
|
||||||
Project_Dep_Name pjnath_wince
|
|
||||||
End Project Dependency
|
|
||||||
Begin Project Dependency
|
|
||||||
Project_Dep_Name pjsip_core_wince
|
|
||||||
End Project Dependency
|
|
||||||
Begin Project Dependency
|
|
||||||
Project_Dep_Name pjsip_simple_wince
|
|
||||||
End Project Dependency
|
|
||||||
Begin Project Dependency
|
|
||||||
Project_Dep_Name pjsip_ua_wince
|
|
||||||
End Project Dependency
|
|
||||||
Begin Project Dependency
|
|
||||||
Project_Dep_Name pjsua_lib_wince
|
|
||||||
End Project Dependency
|
|
||||||
Begin Project Dependency
|
|
||||||
Project_Dep_Name libilbccodec
|
|
||||||
End Project Dependency
|
|
||||||
Begin Project Dependency
|
|
||||||
Project_Dep_Name libspeex
|
|
||||||
End Project Dependency
|
|
||||||
Begin Project Dependency
|
|
||||||
Project_Dep_Name pjmedia_auddev_wince
|
|
||||||
End Project Dependency
|
|
||||||
}}}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
Project: "libgsmcodec"="..\..\..\third_party\build\gsm\libgsmcodec.vcp" - Package Owner=<4>
|
|
||||||
|
|
||||||
Package=<5>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
Package=<4>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
Project: "libilbccodec"="..\..\..\third_party\build\ilbc\libilbccodec.vcp" - Package Owner=<4>
|
|
||||||
|
|
||||||
Package=<5>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
Package=<4>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
Project: "libportaudio"="..\..\..\third_party\build\portaudio\libportaudio.vcp" - Package Owner=<4>
|
|
||||||
|
|
||||||
Package=<5>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
Package=<4>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
Project: "libresample"="..\..\..\third_party\build\resample\libresample.vcp" - Package Owner=<4>
|
|
||||||
|
|
||||||
Package=<5>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
Package=<4>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
Project: "libspeex"="..\..\..\third_party\build\speex\libspeex.vcp" - Package Owner=<4>
|
|
||||||
|
|
||||||
Package=<5>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
Package=<4>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
Project: "libsrtp"="..\..\..\third_party\build\srtp\libsrtp.vcp" - Package Owner=<4>
|
|
||||||
|
|
||||||
Package=<5>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
Package=<4>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
Project: "pjlib_util_wince"="..\..\..\pjlib-util\build\wince-evc4\pjlib_util_wince.vcp" - Package Owner=<4>
|
|
||||||
|
|
||||||
Package=<5>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
Package=<4>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
Project: "pjlib_wince"="..\..\..\pjlib\build\wince-evc4\pjlib_wince.vcp" - Package Owner=<4>
|
|
||||||
|
|
||||||
Package=<5>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
Package=<4>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
Project: "pjmedia_auddev_wince"="..\..\..\pjmedia\build\wince-evc4\pjmedia_auddev_wince.vcp" - Package Owner=<4>
|
|
||||||
|
|
||||||
Package=<5>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
Package=<4>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
Project: "pjmedia_codec_wince"="..\..\..\pjmedia\build\wince-evc4\pjmedia_codec_wince.vcp" - Package Owner=<4>
|
|
||||||
|
|
||||||
Package=<5>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
Package=<4>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
Project: "pjmedia_wince"="..\..\..\pjmedia\build\wince-evc4\pjmedia_wince.vcp" - Package Owner=<4>
|
|
||||||
|
|
||||||
Package=<5>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
Package=<4>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
Project: "pjnath_wince"="..\..\..\pjnath\build\wince-evc4\pjnath_wince.vcp" - Package Owner=<4>
|
|
||||||
|
|
||||||
Package=<5>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
Package=<4>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
Project: "pjsip_core_wince"="..\..\..\pjsip\build\wince-evc4\pjsip_core_wince.vcp" - Package Owner=<4>
|
|
||||||
|
|
||||||
Package=<5>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
Package=<4>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
Project: "pjsip_simple_wince"="..\..\..\pjsip\build\wince-evc4\pjsip_simple_wince.vcp" - Package Owner=<4>
|
|
||||||
|
|
||||||
Package=<5>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
Package=<4>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
Project: "pjsip_ua_wince"="..\..\..\pjsip\build\wince-evc4\pjsip_ua_wince.vcp" - Package Owner=<4>
|
|
||||||
|
|
||||||
Package=<5>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
Package=<4>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
Project: "pjsua_lib_wince"="..\..\..\pjsip\build\wince-evc4\pjsua_lib_wince.vcp" - Package Owner=<4>
|
|
||||||
|
|
||||||
Package=<5>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
Package=<4>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
Global:
|
|
||||||
|
|
||||||
Package=<5>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
Package=<3>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
|
@ -1,792 +0,0 @@
|
||||||
// PocketPJDlg.cpp : implementation file
|
|
||||||
//
|
|
||||||
|
|
||||||
#include "stdafx.h"
|
|
||||||
#include "PocketPJ.h"
|
|
||||||
#include "PocketPJDlg.h"
|
|
||||||
#include <iphlpapi.h>
|
|
||||||
|
|
||||||
#ifdef _DEBUG
|
|
||||||
#define new DEBUG_NEW
|
|
||||||
#undef THIS_FILE
|
|
||||||
static char THIS_FILE[] = __FILE__;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define TIMER_ID 101
|
|
||||||
static CPocketPJDlg *theDlg;
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
// CPocketPJDlg dialog
|
|
||||||
|
|
||||||
CPocketPJDlg::CPocketPJDlg(CWnd* pParent /*=NULL*/)
|
|
||||||
: CDialog(CPocketPJDlg::IDD, pParent), m_PopUp(NULL)
|
|
||||||
{
|
|
||||||
//{{AFX_DATA_INIT(CPocketPJDlg)
|
|
||||||
// NOTE: the ClassWizard will add member initialization here
|
|
||||||
//}}AFX_DATA_INIT
|
|
||||||
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
|
|
||||||
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
|
|
||||||
|
|
||||||
theDlg = this;
|
|
||||||
|
|
||||||
m_PopUp = new CPopUpWnd(this);
|
|
||||||
m_PopUp->Hide();
|
|
||||||
|
|
||||||
unsigned i;
|
|
||||||
m_PopUpCount = 0;
|
|
||||||
for (i=0; i<POPUP_MAX_TYPE; ++i) {
|
|
||||||
m_PopUpState[i] = FALSE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPocketPJDlg::DoDataExchange(CDataExchange* pDX)
|
|
||||||
{
|
|
||||||
CDialog::DoDataExchange(pDX);
|
|
||||||
//{{AFX_DATA_MAP(CPocketPJDlg)
|
|
||||||
DDX_Control(pDX, IDC_URL, m_Url);
|
|
||||||
DDX_Control(pDX, IDC_BUDDY_LIST, m_BuddyList);
|
|
||||||
DDX_Control(pDX, IDC_BTN_ACTION, m_BtnUrlAction);
|
|
||||||
DDX_Control(pDX, IDC_BTN_ACC, m_BtnAcc);
|
|
||||||
DDX_Control(pDX, IDC_ACC_ID, m_AccId);
|
|
||||||
//}}AFX_DATA_MAP
|
|
||||||
}
|
|
||||||
|
|
||||||
BEGIN_MESSAGE_MAP(CPocketPJDlg, CDialog)
|
|
||||||
//{{AFX_MSG_MAP(CPocketPJDlg)
|
|
||||||
ON_BN_CLICKED(IDC_BTN_ACC, OnBtnAcc)
|
|
||||||
ON_BN_CLICKED(IDC_BTN_ACTION, OnBtnAction)
|
|
||||||
ON_COMMAND(IDC_ACC_SETTINGS, OnSettings)
|
|
||||||
ON_COMMAND(IDC_URI_CALL, OnUriCall)
|
|
||||||
ON_WM_TIMER()
|
|
||||||
ON_COMMAND(IDC_URI_ADD_BUDDY, OnUriAddBuddy)
|
|
||||||
ON_COMMAND(IDC_URI_DEL_BUDDY, OnUriDelBuddy)
|
|
||||||
ON_COMMAND(IDC_ACC_ONLINE, OnAccOnline)
|
|
||||||
ON_COMMAND(IDC_ACC_INVISIBLE, OnAccInvisible)
|
|
||||||
ON_NOTIFY(NM_CLICK, IDC_BUDDY_LIST, OnClickBuddyList)
|
|
||||||
//}}AFX_MSG_MAP
|
|
||||||
END_MESSAGE_MAP()
|
|
||||||
|
|
||||||
|
|
||||||
void CPocketPJDlg::Error(const CString &title, pj_status_t rc)
|
|
||||||
{
|
|
||||||
char errmsg[PJ_ERR_MSG_SIZE];
|
|
||||||
wchar_t werrmsg[PJ_ERR_MSG_SIZE];
|
|
||||||
|
|
||||||
pj_strerror(rc, errmsg, sizeof(errmsg));
|
|
||||||
pj_ansi_to_unicode(errmsg, strlen(errmsg), werrmsg, PJ_ARRAY_SIZE(werrmsg));
|
|
||||||
|
|
||||||
AfxMessageBox(title + _T(": ") + werrmsg);
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOL CPocketPJDlg::Restart()
|
|
||||||
{
|
|
||||||
unsigned i;
|
|
||||||
pj_status_t status;
|
|
||||||
|
|
||||||
char ver[80];
|
|
||||||
sprintf(ver, "PocketPJ/%s", pj_get_version());
|
|
||||||
|
|
||||||
ShowWindow(SW_SHOW);
|
|
||||||
PopUp_Show(POPUP_REGISTRATION, ver,
|
|
||||||
"Starting up....", "", "", "", 0);
|
|
||||||
|
|
||||||
KillTimer(TIMER_ID);
|
|
||||||
|
|
||||||
// Destroy first.
|
|
||||||
PopUp_Modify(POPUP_REGISTRATION, POPUP_EL_TITLE3, "Cleaning up..");
|
|
||||||
pjsua_destroy();
|
|
||||||
|
|
||||||
m_BtnAcc.SetBitmap(::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_OFFLINE)) );
|
|
||||||
UpdateWindow();
|
|
||||||
|
|
||||||
|
|
||||||
// Create
|
|
||||||
PopUp_Show(POPUP_REGISTRATION, ver,
|
|
||||||
"Starting up....", "Creating stack..", "", "", 0);
|
|
||||||
|
|
||||||
status = pjsua_create();
|
|
||||||
if (status != PJ_SUCCESS) {
|
|
||||||
Error(_T("Error in creating library"), status);
|
|
||||||
PopUp_Hide(POPUP_REGISTRATION);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
pjsua_config cfg;
|
|
||||||
pjsua_logging_config log_cfg;
|
|
||||||
pjsua_media_config media_cfg;
|
|
||||||
|
|
||||||
pjsua_config_default(&cfg);
|
|
||||||
cfg.max_calls = 1;
|
|
||||||
cfg.thread_cnt = 0;
|
|
||||||
cfg.user_agent = pj_str(ver);
|
|
||||||
|
|
||||||
cfg.cb.on_call_state = &on_call_state;
|
|
||||||
cfg.cb.on_call_media_state = &on_call_media_state;
|
|
||||||
cfg.cb.on_incoming_call = &on_incoming_call;
|
|
||||||
cfg.cb.on_reg_state = &on_reg_state;
|
|
||||||
cfg.cb.on_buddy_state = &on_buddy_state;
|
|
||||||
cfg.cb.on_pager = &on_pager;
|
|
||||||
|
|
||||||
/* Configure nameserver */
|
|
||||||
char nameserver[60];
|
|
||||||
{
|
|
||||||
FIXED_INFO fi;
|
|
||||||
PIP_ADDR_STRING pDNS = NULL;
|
|
||||||
ULONG len = sizeof(fi);
|
|
||||||
CString err;
|
|
||||||
|
|
||||||
PopUp_Modify(POPUP_REGISTRATION, POPUP_EL_TITLE3, "Retrieving network parameters..");
|
|
||||||
if (GetNetworkParams(&fi, &len) != ERROR_SUCCESS) {
|
|
||||||
err = _T("Info: Error querying network parameters. You must configure DNS server.");
|
|
||||||
} else if (fi.CurrentDnsServer) {
|
|
||||||
pDNS = fi.CurrentDnsServer;
|
|
||||||
} else if (fi.DnsServerList.IpAddress.String[0] != 0) {
|
|
||||||
pDNS = &fi.DnsServerList;
|
|
||||||
} else {
|
|
||||||
err = _T("Info: DNS server not configured. You must configure DNS server.");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (err.GetLength()) {
|
|
||||||
if (m_Cfg.m_DNS.GetLength()) {
|
|
||||||
pj_unicode_to_ansi((LPCTSTR)m_Cfg.m_DNS, m_Cfg.m_DNS.GetLength(),
|
|
||||||
nameserver, sizeof(nameserver));
|
|
||||||
cfg.nameserver_count = 1;
|
|
||||||
cfg.nameserver[0] = pj_str(nameserver);
|
|
||||||
} else {
|
|
||||||
AfxMessageBox(err);
|
|
||||||
pjsua_destroy();
|
|
||||||
PopUp_Hide(POPUP_REGISTRATION);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
strcpy(nameserver, pDNS->IpAddress.String);
|
|
||||||
cfg.nameserver_count = 1;
|
|
||||||
cfg.nameserver[0] = pj_str(nameserver);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
char tmp_stun[80];
|
|
||||||
if (m_Cfg.m_UseStun) {
|
|
||||||
pj_unicode_to_ansi((LPCTSTR)m_Cfg.m_StunSrv, m_Cfg.m_StunSrv.GetLength(),
|
|
||||||
tmp_stun, sizeof(tmp_stun));
|
|
||||||
cfg.stun_host = pj_str(tmp_stun);
|
|
||||||
}
|
|
||||||
|
|
||||||
pjsua_logging_config_default(&log_cfg);
|
|
||||||
log_cfg.msg_logging = PJ_TRUE;
|
|
||||||
log_cfg.log_filename = pj_str("\\PocketPJ.TXT");
|
|
||||||
|
|
||||||
pjsua_media_config_default(&media_cfg);
|
|
||||||
media_cfg.clock_rate = 8000;
|
|
||||||
media_cfg.audio_frame_ptime = 40;
|
|
||||||
media_cfg.ec_tail_len = 0;
|
|
||||||
media_cfg.ilbc_mode = 30;
|
|
||||||
media_cfg.max_media_ports = 8;
|
|
||||||
// use default quality setting
|
|
||||||
//media_cfg.quality = 5;
|
|
||||||
media_cfg.thread_cnt = 1;
|
|
||||||
media_cfg.enable_ice = m_Cfg.m_UseIce;
|
|
||||||
media_cfg.no_vad = !m_Cfg.m_VAD;
|
|
||||||
|
|
||||||
if (m_Cfg.m_EchoSuppress) {
|
|
||||||
media_cfg.ec_options = PJMEDIA_ECHO_SIMPLE;
|
|
||||||
media_cfg.ec_tail_len = m_Cfg.m_EcTail;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Init
|
|
||||||
PopUp_Modify(POPUP_REGISTRATION, POPUP_EL_TITLE3, "Initializing..");
|
|
||||||
status = pjsua_init(&cfg, &log_cfg, &media_cfg);
|
|
||||||
if (status != PJ_SUCCESS) {
|
|
||||||
Error(_T("Error initializing library"), status);
|
|
||||||
pjsua_destroy();
|
|
||||||
PopUp_Hide(POPUP_REGISTRATION);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create one UDP transport
|
|
||||||
PopUp_Modify(POPUP_REGISTRATION, POPUP_EL_TITLE3, "Adding UDP transport..");
|
|
||||||
pjsua_transport_id transport_id;
|
|
||||||
pjsua_transport_config udp_cfg;
|
|
||||||
|
|
||||||
pjsua_transport_config_default(&udp_cfg);
|
|
||||||
udp_cfg.port = 0;
|
|
||||||
status = pjsua_transport_create(PJSIP_TRANSPORT_UDP,
|
|
||||||
&udp_cfg, &transport_id);
|
|
||||||
if (status != PJ_SUCCESS) {
|
|
||||||
Error(_T("Error creating UDP transport"), status);
|
|
||||||
pjsua_destroy();
|
|
||||||
PopUp_Hide(POPUP_REGISTRATION);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Always instantiate TCP to support auto-switching to TCP when
|
|
||||||
// packet is larger than 1300 bytes. If TCP is disabled when
|
|
||||||
// no auto-switching will occur
|
|
||||||
if (1) {
|
|
||||||
// Create one TCP transport
|
|
||||||
PopUp_Modify(POPUP_REGISTRATION, POPUP_EL_TITLE3, "Adding TCP transport..");
|
|
||||||
pjsua_transport_id transport_id;
|
|
||||||
pjsua_transport_config tcp_cfg;
|
|
||||||
|
|
||||||
pjsua_transport_config_default(&tcp_cfg);
|
|
||||||
tcp_cfg.port = 0;
|
|
||||||
status = pjsua_transport_create(PJSIP_TRANSPORT_TCP,
|
|
||||||
&tcp_cfg, &transport_id);
|
|
||||||
if (status != PJ_SUCCESS) {
|
|
||||||
Error(_T("Error creating TCP transport"), status);
|
|
||||||
pjsua_destroy();
|
|
||||||
PopUp_Hide(POPUP_REGISTRATION);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Adjust codecs priority
|
|
||||||
pj_str_t tmp;
|
|
||||||
pjsua_codec_set_priority(pj_cstr(&tmp, "*"), 0);
|
|
||||||
for (i=0; i<(unsigned)m_Cfg.m_Codecs.GetSize(); ++i) {
|
|
||||||
CString codec = m_Cfg.m_Codecs.GetAt(i);
|
|
||||||
char tmp_nam[80];
|
|
||||||
|
|
||||||
pj_unicode_to_ansi((LPCTSTR)codec, codec.GetLength(),
|
|
||||||
tmp_nam, sizeof(tmp_nam));
|
|
||||||
pjsua_codec_set_priority(pj_cstr(&tmp, tmp_nam), (pj_uint8_t)(200-i));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Start!
|
|
||||||
PopUp_Modify(POPUP_REGISTRATION, POPUP_EL_TITLE3, "Starting..");
|
|
||||||
status = pjsua_start();
|
|
||||||
if (status != PJ_SUCCESS) {
|
|
||||||
Error(_T("Error starting library"), status);
|
|
||||||
pjsua_destroy();
|
|
||||||
PopUp_Hide(POPUP_REGISTRATION);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add account
|
|
||||||
PopUp_Modify(POPUP_REGISTRATION, POPUP_EL_TITLE3, "Adding account..");
|
|
||||||
char domain[80], username[80], passwd[80];
|
|
||||||
char id[80], reg_uri[80];
|
|
||||||
pjsua_acc_config acc_cfg;
|
|
||||||
|
|
||||||
pj_unicode_to_ansi((LPCTSTR)m_Cfg.m_Domain, m_Cfg.m_Domain.GetLength(),
|
|
||||||
domain, sizeof(domain));
|
|
||||||
pj_unicode_to_ansi((LPCTSTR)m_Cfg.m_User, m_Cfg.m_User.GetLength(),
|
|
||||||
username, sizeof(username));
|
|
||||||
pj_unicode_to_ansi((LPCTSTR)m_Cfg.m_Password, m_Cfg.m_Password.GetLength(),
|
|
||||||
passwd, sizeof(passwd));
|
|
||||||
|
|
||||||
snprintf(id, sizeof(id), "<sip:%s@%s>", username, domain);
|
|
||||||
snprintf(reg_uri, sizeof(reg_uri), "sip:%s", domain);
|
|
||||||
|
|
||||||
pjsua_acc_config_default(&acc_cfg);
|
|
||||||
acc_cfg.id = pj_str(id);
|
|
||||||
acc_cfg.reg_uri = pj_str(reg_uri);
|
|
||||||
acc_cfg.cred_count = 1;
|
|
||||||
acc_cfg.cred_info[0].scheme = pj_str("Digest");
|
|
||||||
acc_cfg.cred_info[0].realm = pj_str("*");
|
|
||||||
acc_cfg.cred_info[0].username = pj_str(username);
|
|
||||||
acc_cfg.cred_info[0].data_type = 0;
|
|
||||||
acc_cfg.cred_info[0].data = pj_str(passwd);
|
|
||||||
|
|
||||||
#if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0)
|
|
||||||
acc_cfg.use_srtp = (m_Cfg.m_UseSrtp ? PJMEDIA_SRTP_OPTIONAL : PJMEDIA_SRTP_DISABLED);
|
|
||||||
acc_cfg.srtp_secure_signaling = 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
acc_cfg.publish_enabled = m_Cfg.m_UsePublish;
|
|
||||||
|
|
||||||
char route[80];
|
|
||||||
if (m_Cfg.m_TCP) {
|
|
||||||
snprintf(route, sizeof(route), "<sip:%s;lr;transport=tcp>", domain);
|
|
||||||
acc_cfg.proxy[acc_cfg.proxy_cnt++] = pj_str(route);
|
|
||||||
} else {
|
|
||||||
snprintf(route, sizeof(route), "<sip:%s;lr>", domain);
|
|
||||||
acc_cfg.proxy[acc_cfg.proxy_cnt++] = pj_str(route);
|
|
||||||
}
|
|
||||||
|
|
||||||
status = pjsua_acc_add(&acc_cfg, PJ_TRUE, &m_PjsuaAccId);
|
|
||||||
if (status != PJ_SUCCESS) {
|
|
||||||
Error(_T("Invalid account settings"), status);
|
|
||||||
pjsua_destroy();
|
|
||||||
PopUp_Hide(POPUP_REGISTRATION);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
CString acc_text = m_Cfg.m_User + _T("@") + m_Cfg.m_Domain;
|
|
||||||
m_AccId.SetWindowText(acc_text);
|
|
||||||
|
|
||||||
PopUp_Modify(POPUP_REGISTRATION, POPUP_EL_TITLE1, acc_text);
|
|
||||||
PopUp_Modify(POPUP_REGISTRATION, POPUP_EL_TITLE2, "Registering..");
|
|
||||||
PopUp_Modify(POPUP_REGISTRATION, POPUP_EL_TITLE3, "");
|
|
||||||
|
|
||||||
SetTimer(TIMER_ID, 100, NULL);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void CPocketPJDlg::PopUp_Show( PopUpType type,
|
|
||||||
const CString& title1,
|
|
||||||
const CString& title2,
|
|
||||||
const CString& title3,
|
|
||||||
const CString& btn1,
|
|
||||||
const CString& btn2,
|
|
||||||
unsigned userData)
|
|
||||||
{
|
|
||||||
PJ_UNUSED_ARG(userData);
|
|
||||||
|
|
||||||
if (!m_PopUpState[type])
|
|
||||||
++m_PopUpCount;
|
|
||||||
|
|
||||||
m_PopUpState[type] = TRUE;
|
|
||||||
|
|
||||||
m_PopUpContent[type].m_Title1 = title1;
|
|
||||||
m_PopUpContent[type].m_Title2 = title2;
|
|
||||||
m_PopUpContent[type].m_Title3 = title3;
|
|
||||||
m_PopUpContent[type].m_Btn1 = btn1;
|
|
||||||
m_PopUpContent[type].m_Btn2 = btn2;
|
|
||||||
|
|
||||||
m_PopUp->SetContent(m_PopUpContent[type]);
|
|
||||||
m_PopUp->Show();
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPocketPJDlg::PopUp_Modify(PopUpType type,
|
|
||||||
PopUpElement el,
|
|
||||||
const CString& text)
|
|
||||||
{
|
|
||||||
switch (el) {
|
|
||||||
case POPUP_EL_TITLE1:
|
|
||||||
m_PopUpContent[type].m_Title1 = text;
|
|
||||||
break;
|
|
||||||
case POPUP_EL_TITLE2:
|
|
||||||
m_PopUpContent[type].m_Title2 = text;
|
|
||||||
break;
|
|
||||||
case POPUP_EL_TITLE3:
|
|
||||||
m_PopUpContent[type].m_Title3 = text;
|
|
||||||
break;
|
|
||||||
case POPUP_EL_BUTTON1:
|
|
||||||
m_PopUpContent[type].m_Btn1 = text;
|
|
||||||
break;
|
|
||||||
case POPUP_EL_BUTTON2:
|
|
||||||
m_PopUpContent[type].m_Btn1 = text;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_PopUp->SetContent(m_PopUpContent[type]);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPocketPJDlg::PopUp_Hide(PopUpType type)
|
|
||||||
{
|
|
||||||
if (m_PopUpState[type])
|
|
||||||
--m_PopUpCount;
|
|
||||||
|
|
||||||
m_PopUpState[type] = FALSE;
|
|
||||||
|
|
||||||
if (m_PopUpCount == 0) {
|
|
||||||
m_PopUp->Hide();
|
|
||||||
UpdateWindow();
|
|
||||||
} else {
|
|
||||||
for (int i=POPUP_MAX_TYPE-1; i>=0; --i) {
|
|
||||||
if (m_PopUpState[i]) {
|
|
||||||
m_PopUp->SetContent(m_PopUpContent[i]);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPocketPJDlg::OnIncomingCall()
|
|
||||||
{
|
|
||||||
pjsua_call_info ci;
|
|
||||||
|
|
||||||
pjsua_call_get_info(0, &ci);
|
|
||||||
|
|
||||||
PopUp_Show(POPUP_CALL, "Incoming call..", ci.remote_info.ptr, "",
|
|
||||||
"Answer", "Hangup", 0);
|
|
||||||
pjsua_call_answer(0, 180, NULL, NULL);
|
|
||||||
if (m_Cfg.m_AutoAnswer)
|
|
||||||
OnPopUpButton(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPocketPJDlg::OnCallState()
|
|
||||||
{
|
|
||||||
pjsua_call_info ci;
|
|
||||||
|
|
||||||
pjsua_call_get_info(0, &ci);
|
|
||||||
|
|
||||||
switch (ci.state) {
|
|
||||||
case PJSIP_INV_STATE_NULL: /**< Before INVITE is sent or received */
|
|
||||||
break;
|
|
||||||
case PJSIP_INV_STATE_CALLING: /**< After INVITE is sent */
|
|
||||||
PopUp_Show(POPUP_CALL, "Calling..", ci.remote_info.ptr, "",
|
|
||||||
"", "Hangup", 0);
|
|
||||||
break;
|
|
||||||
case PJSIP_INV_STATE_INCOMING: /**< After INVITE is received. */
|
|
||||||
OnIncomingCall();
|
|
||||||
break;
|
|
||||||
case PJSIP_INV_STATE_EARLY: /**< After response with To tag. */
|
|
||||||
case PJSIP_INV_STATE_CONNECTING:/**< After 2xx is sent/received. */
|
|
||||||
case PJSIP_INV_STATE_CONFIRMED: /**< After ACK is sent/received. */
|
|
||||||
{
|
|
||||||
CString stateText = ci.state_text.ptr;
|
|
||||||
PopUp_Modify(POPUP_CALL, POPUP_EL_TITLE3, stateText);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case PJSIP_INV_STATE_DISCONNECTED:/**< Session is terminated. */
|
|
||||||
PopUp_Modify(POPUP_CALL, POPUP_EL_TITLE3, "Disconnected");
|
|
||||||
PopUp_Hide(POPUP_CALL);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPocketPJDlg::on_call_state(pjsua_call_id call_id, pjsip_event *e)
|
|
||||||
{
|
|
||||||
PJ_UNUSED_ARG(e);
|
|
||||||
PJ_UNUSED_ARG(call_id);
|
|
||||||
|
|
||||||
theDlg->OnCallState();
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPocketPJDlg::on_call_media_state(pjsua_call_id call_id)
|
|
||||||
{
|
|
||||||
pjsua_call_info call_info;
|
|
||||||
|
|
||||||
pjsua_call_get_info(call_id, &call_info);
|
|
||||||
if (call_info.media_status == PJSUA_CALL_MEDIA_ACTIVE) {
|
|
||||||
pjsua_conf_connect(call_info.conf_slot, 0);
|
|
||||||
pjsua_conf_connect(0, call_info.conf_slot);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPocketPJDlg::on_incoming_call(pjsua_acc_id acc_id, pjsua_call_id call_id,
|
|
||||||
pjsip_rx_data *rdata)
|
|
||||||
{
|
|
||||||
PJ_UNUSED_ARG(acc_id);
|
|
||||||
PJ_UNUSED_ARG(call_id);
|
|
||||||
PJ_UNUSED_ARG(rdata);
|
|
||||||
|
|
||||||
theDlg->OnIncomingCall();
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPocketPJDlg::OnRegState()
|
|
||||||
{
|
|
||||||
pjsua_acc_info ai;
|
|
||||||
pjsua_acc_get_info(m_PjsuaAccId, &ai);
|
|
||||||
|
|
||||||
CString acc_text = m_Cfg.m_User + _T("@") + m_Cfg.m_Domain;
|
|
||||||
|
|
||||||
if (ai.expires>0 && ai.status/100==2) {
|
|
||||||
/* Registration success */
|
|
||||||
HBITMAP old = m_BtnAcc.SetBitmap(::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_ONLINE)) );
|
|
||||||
PJ_UNUSED_ARG(old);
|
|
||||||
acc_text += " (OK)";
|
|
||||||
m_AccId.SetWindowText(acc_text);
|
|
||||||
} else if (ai.status/100 != 2) {
|
|
||||||
acc_text += " (err)";
|
|
||||||
Error(_T("SIP registration error"), PJSIP_ERRNO_FROM_SIP_STATUS(ai.status));
|
|
||||||
m_AccId.SetWindowText(acc_text);
|
|
||||||
}
|
|
||||||
PopUp_Hide(POPUP_REGISTRATION);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPocketPJDlg::on_reg_state(pjsua_acc_id acc_id)
|
|
||||||
{
|
|
||||||
PJ_UNUSED_ARG(acc_id);
|
|
||||||
|
|
||||||
theDlg->OnRegState();
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPocketPJDlg::on_buddy_state(pjsua_buddy_id buddy_id)
|
|
||||||
{
|
|
||||||
PJ_UNUSED_ARG(buddy_id);
|
|
||||||
|
|
||||||
theDlg->RedrawBuddyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPocketPJDlg::on_pager(pjsua_call_id call_id, const pj_str_t *from,
|
|
||||||
const pj_str_t *to, const pj_str_t *contact,
|
|
||||||
const pj_str_t *mime_type, const pj_str_t *text)
|
|
||||||
{
|
|
||||||
PJ_UNUSED_ARG(call_id);
|
|
||||||
PJ_UNUSED_ARG(from);
|
|
||||||
PJ_UNUSED_ARG(to);
|
|
||||||
PJ_UNUSED_ARG(contact);
|
|
||||||
PJ_UNUSED_ARG(mime_type);
|
|
||||||
PJ_UNUSED_ARG(text);
|
|
||||||
}
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
// CPocketPJDlg message handlers
|
|
||||||
|
|
||||||
BOOL CPocketPJDlg::OnInitDialog()
|
|
||||||
{
|
|
||||||
CDialog::OnInitDialog();
|
|
||||||
|
|
||||||
// Set the icon for this dialog. The framework does this automatically
|
|
||||||
// when the application's main window is not a dialog
|
|
||||||
SetIcon(m_hIcon, TRUE); // Set big icon
|
|
||||||
SetIcon(m_hIcon, FALSE); // Set small icon
|
|
||||||
|
|
||||||
CenterWindow(GetDesktopWindow()); // center to the hpc screen
|
|
||||||
|
|
||||||
// TODO: Add extra initialization here
|
|
||||||
|
|
||||||
m_Cfg.LoadRegistry();
|
|
||||||
//ShowWindow(SW_SHOW);
|
|
||||||
m_AccId.SetWindowText(m_Cfg.m_User);
|
|
||||||
|
|
||||||
CImageList *il = new CImageList;
|
|
||||||
VERIFY(il->Create(16, 16, ILC_COLOR|ILC_MASK, 2, 4));
|
|
||||||
|
|
||||||
CBitmap *bmp = new CBitmap;
|
|
||||||
bmp->LoadBitmap(MAKEINTRESOURCE(IDB_BLANK));
|
|
||||||
il->Add(bmp, RGB(255,255,255));
|
|
||||||
bmp = new CBitmap;
|
|
||||||
bmp->LoadBitmap(MAKEINTRESOURCE(IDB_ONLINE));
|
|
||||||
il->Add(bmp, RGB(255,255,255));
|
|
||||||
|
|
||||||
m_BuddyList.SetImageList(il, LVSIL_SMALL);
|
|
||||||
|
|
||||||
if (m_Cfg.m_Domain.GetLength()==0 || Restart() == FALSE) {
|
|
||||||
for (;;) {
|
|
||||||
CSettingsDlg dlg(m_Cfg);
|
|
||||||
if (dlg.DoModal() != IDOK) {
|
|
||||||
EndDialog(IDOK);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_Cfg.SaveRegistry();
|
|
||||||
|
|
||||||
if (Restart())
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
RedrawBuddyList();
|
|
||||||
return TRUE; // return TRUE unless you set the focus to a control
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void CPocketPJDlg::OnBtnAcc()
|
|
||||||
{
|
|
||||||
CMenu menu;
|
|
||||||
VERIFY(menu.LoadMenu(IDR_ACC_MENU));
|
|
||||||
CMenu* pPopup = menu.GetSubMenu(0);
|
|
||||||
ASSERT(pPopup != NULL);
|
|
||||||
|
|
||||||
RECT r;
|
|
||||||
m_BtnAcc.GetWindowRect(&r);
|
|
||||||
pPopup->TrackPopupMenu(TPM_LEFTALIGN, r.left+4, r.top+4, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPocketPJDlg::OnBtnAction()
|
|
||||||
{
|
|
||||||
CMenu menu;
|
|
||||||
VERIFY(menu.LoadMenu(IDR_URI_MENU));
|
|
||||||
CMenu* pPopup = menu.GetSubMenu(0);
|
|
||||||
ASSERT(pPopup != NULL);
|
|
||||||
|
|
||||||
RECT r;
|
|
||||||
this->m_BtnUrlAction.GetWindowRect(&r);
|
|
||||||
pPopup->TrackPopupMenu(TPM_LEFTALIGN, r.left+4, r.top+4, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPocketPJDlg::OnSettings()
|
|
||||||
{
|
|
||||||
for (;;) {
|
|
||||||
CSettingsDlg dlg(m_Cfg);
|
|
||||||
if (dlg.DoModal() != IDOK) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_Cfg.SaveRegistry();
|
|
||||||
|
|
||||||
if (Restart())
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPocketPJDlg::OnOK()
|
|
||||||
{
|
|
||||||
if (AfxMessageBox(_T("Quit PocketPJ?"), MB_YESNO)==IDYES) {
|
|
||||||
KillTimer(TIMER_ID);
|
|
||||||
PopUp_Show(POPUP_REGISTRATION, "", "Shutting down..", "", "", "", 0);
|
|
||||||
pjsua_destroy();
|
|
||||||
CDialog::OnOK();
|
|
||||||
PopUp_Hide(POPUP_REGISTRATION);
|
|
||||||
m_Cfg.SaveRegistry();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPocketPJDlg::OnTimer(UINT nIDEvent)
|
|
||||||
{
|
|
||||||
pjsua_handle_events(10);
|
|
||||||
CDialog::OnTimer(nIDEvent);
|
|
||||||
}
|
|
||||||
|
|
||||||
int CPocketPJDlg::FindBuddyInPjsua(const CString &Uri)
|
|
||||||
{
|
|
||||||
char uri[80];
|
|
||||||
pjsua_buddy_id id[128];
|
|
||||||
unsigned i, count = PJ_ARRAY_SIZE(id);
|
|
||||||
|
|
||||||
if (pjsua_enum_buddies(id, &count) != PJ_SUCCESS)
|
|
||||||
return PJSUA_INVALID_ID;
|
|
||||||
if (count==0)
|
|
||||||
return PJSUA_INVALID_ID;
|
|
||||||
|
|
||||||
pj_unicode_to_ansi((LPCTSTR)Uri, Uri.GetLength(), uri, sizeof(uri));
|
|
||||||
|
|
||||||
for (i=0; i<count; ++i) {
|
|
||||||
pjsua_buddy_info bi;
|
|
||||||
pjsua_buddy_get_info(id[i], &bi);
|
|
||||||
if (pj_strcmp2(&bi.uri, uri)==0)
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
|
|
||||||
return PJSUA_INVALID_ID;
|
|
||||||
}
|
|
||||||
|
|
||||||
int CPocketPJDlg::FindBuddyInCfg(const CString &uri)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
for (i=0; i<m_Cfg.m_BuddyList.GetSize(); ++i) {
|
|
||||||
if (m_Cfg.m_BuddyList.GetAt(0) == uri) {
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPocketPJDlg::RedrawBuddyList()
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
m_BuddyList.DeleteAllItems();
|
|
||||||
|
|
||||||
for (i=0; i<m_Cfg.m_BuddyList.GetSize(); ++i) {
|
|
||||||
int isOnline;
|
|
||||||
int id;
|
|
||||||
|
|
||||||
id = FindBuddyInPjsua(m_Cfg.m_BuddyList.GetAt(i));
|
|
||||||
if (id != PJSUA_INVALID_ID) {
|
|
||||||
pjsua_buddy_info bi;
|
|
||||||
pjsua_buddy_get_info(id, &bi);
|
|
||||||
isOnline = (bi.status == PJSUA_BUDDY_STATUS_ONLINE);
|
|
||||||
} else {
|
|
||||||
isOnline = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
LVITEM lvi;
|
|
||||||
memset(&lvi, 0, sizeof(lvi));
|
|
||||||
lvi.mask = LVIF_TEXT | LVIF_IMAGE;
|
|
||||||
lvi.iItem = i;
|
|
||||||
lvi.iImage = isOnline;
|
|
||||||
lvi.pszText = (LPTSTR)(LPCTSTR)m_Cfg.m_BuddyList.GetAt(i);
|
|
||||||
|
|
||||||
m_BuddyList.InsertItem(&lvi);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPocketPJDlg::OnUriCall()
|
|
||||||
{
|
|
||||||
char tmp[120];
|
|
||||||
CString uri;
|
|
||||||
pj_status_t status;
|
|
||||||
|
|
||||||
m_Url.GetWindowText(uri);
|
|
||||||
pj_unicode_to_ansi((LPCTSTR)uri, uri.GetLength(), tmp, sizeof(tmp));
|
|
||||||
if ((status=pjsua_verify_sip_url(tmp)) != PJ_SUCCESS) {
|
|
||||||
Error("The URL is not valid SIP URL", status);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
pj_str_t dest_uri = pj_str(tmp);
|
|
||||||
pjsua_call_id call_id;
|
|
||||||
|
|
||||||
status = pjsua_call_make_call(m_PjsuaAccId, &dest_uri, 0, NULL, NULL, &call_id);
|
|
||||||
|
|
||||||
if (status != PJ_SUCCESS)
|
|
||||||
Error("Unable to make call", status);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPocketPJDlg::OnUriAddBuddy()
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
char tmp[120];
|
|
||||||
CString uri;
|
|
||||||
pj_status_t status;
|
|
||||||
|
|
||||||
m_Url.GetWindowText(uri);
|
|
||||||
pj_unicode_to_ansi((LPCTSTR)uri, uri.GetLength(), tmp, sizeof(tmp));
|
|
||||||
if ((status=pjsua_verify_sip_url(tmp)) != PJ_SUCCESS) {
|
|
||||||
Error("The URL is not valid SIP URL", status);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i=0; i<m_Cfg.m_BuddyList.GetSize(); ++i) {
|
|
||||||
if (m_Cfg.m_BuddyList.GetAt(0) == uri) {
|
|
||||||
AfxMessageBox(_T("The URI is already in the buddy list"));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
m_Cfg.m_BuddyList.Add(uri);
|
|
||||||
RedrawBuddyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPocketPJDlg::OnUriDelBuddy()
|
|
||||||
{
|
|
||||||
CString uri;
|
|
||||||
|
|
||||||
m_Url.GetWindowText(uri);
|
|
||||||
int i = FindBuddyInCfg(uri);
|
|
||||||
if (i<0) {
|
|
||||||
/* Buddy not found */
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_Cfg.m_BuddyList.RemoveAt(i);
|
|
||||||
RedrawBuddyList();
|
|
||||||
AfxMessageBox(_T("Buddy " + uri + " deleted"));
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPocketPJDlg::OnAccOnline()
|
|
||||||
{
|
|
||||||
pjsua_acc_set_online_status(m_PjsuaAccId, PJ_TRUE);
|
|
||||||
m_BtnAcc.SetBitmap(::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_ONLINE)) );
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPocketPJDlg::OnAccInvisible()
|
|
||||||
{
|
|
||||||
pjsua_acc_set_online_status(m_PjsuaAccId, PJ_FALSE);
|
|
||||||
m_BtnAcc.SetBitmap(::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_INVISIBLE)) );
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPocketPJDlg::OnPopUpButton(int btnNo)
|
|
||||||
{
|
|
||||||
if (btnNo == 1) {
|
|
||||||
pjsua_call_answer(0, 200, NULL, 0);
|
|
||||||
PopUp_Modify(POPUP_CALL, POPUP_EL_BUTTON1, "");
|
|
||||||
} else if (btnNo == 2) {
|
|
||||||
// Hangup button
|
|
||||||
PopUp_Modify(POPUP_CALL, POPUP_EL_TITLE2, "Hang up..");
|
|
||||||
PopUp_Modify(POPUP_CALL, POPUP_EL_TITLE3, "");
|
|
||||||
pjsua_call_hangup(0, PJSIP_SC_DECLINE, 0, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPocketPJDlg::OnClickBuddyList(NMHDR* pNMHDR, LRESULT* pResult)
|
|
||||||
{
|
|
||||||
POSITION pos = m_BuddyList.GetFirstSelectedItemPosition();
|
|
||||||
|
|
||||||
PJ_UNUSED_ARG(pNMHDR);
|
|
||||||
|
|
||||||
if (pos != NULL) {
|
|
||||||
int iItem = m_BuddyList.GetNextSelectedItem(pos);
|
|
||||||
CString uri = m_BuddyList.GetItemText(iItem, 0);
|
|
||||||
m_Url.SetWindowText(uri);
|
|
||||||
}
|
|
||||||
*pResult = 0;
|
|
||||||
}
|
|
|
@ -1,129 +0,0 @@
|
||||||
// PocketPJDlg.h : header file
|
|
||||||
//
|
|
||||||
|
|
||||||
#if !defined(AFX_POCKETPJDLG_H__DF5F90C9_E72B_4557_9126_AFE75A3ADE9D__INCLUDED_)
|
|
||||||
#define AFX_POCKETPJDLG_H__DF5F90C9_E72B_4557_9126_AFE75A3ADE9D__INCLUDED_
|
|
||||||
|
|
||||||
#if _MSC_VER >= 1000
|
|
||||||
#pragma once
|
|
||||||
#endif // _MSC_VER >= 1000
|
|
||||||
|
|
||||||
#include "SettingsDlg.h"
|
|
||||||
#include "PopUpWnd.h"
|
|
||||||
#include <pjsua-lib/pjsua.h>
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
// CPocketPJDlg dialog
|
|
||||||
|
|
||||||
class CPocketPJDlg : public CDialog
|
|
||||||
{
|
|
||||||
// Construction
|
|
||||||
public:
|
|
||||||
CPocketPJDlg(CWnd* pParent = NULL); // standard constructor
|
|
||||||
|
|
||||||
void OnPopUpButton(int btnNo);
|
|
||||||
void OnIncomingCall();
|
|
||||||
|
|
||||||
// Dialog Data
|
|
||||||
//{{AFX_DATA(CPocketPJDlg)
|
|
||||||
enum { IDD = IDD_POCKETPJ_DIALOG };
|
|
||||||
CEdit m_Url;
|
|
||||||
CListCtrl m_BuddyList;
|
|
||||||
CStatic m_BtnUrlAction;
|
|
||||||
CStatic m_BtnAcc;
|
|
||||||
CStatic m_AccId;
|
|
||||||
//}}AFX_DATA
|
|
||||||
|
|
||||||
// ClassWizard generated virtual function overrides
|
|
||||||
//{{AFX_VIRTUAL(CPocketPJDlg)
|
|
||||||
protected:
|
|
||||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
|
||||||
//}}AFX_VIRTUAL
|
|
||||||
|
|
||||||
|
|
||||||
// Implementation
|
|
||||||
protected:
|
|
||||||
HICON m_hIcon;
|
|
||||||
|
|
||||||
// Generated message map functions
|
|
||||||
//{{AFX_MSG(CPocketPJDlg)
|
|
||||||
virtual BOOL OnInitDialog();
|
|
||||||
afx_msg void OnBtnAcc();
|
|
||||||
afx_msg void OnBtnAction();
|
|
||||||
afx_msg void OnSettings();
|
|
||||||
afx_msg void OnUriCall();
|
|
||||||
afx_msg void OnTimer(UINT nIDEvent);
|
|
||||||
afx_msg void OnUriAddBuddy();
|
|
||||||
afx_msg void OnUriDelBuddy();
|
|
||||||
afx_msg void OnAccOnline();
|
|
||||||
afx_msg void OnAccInvisible();
|
|
||||||
afx_msg void OnClickBuddyList(NMHDR* pNMHDR, LRESULT* pResult);
|
|
||||||
//}}AFX_MSG
|
|
||||||
DECLARE_MESSAGE_MAP()
|
|
||||||
|
|
||||||
private:
|
|
||||||
enum PopUpType
|
|
||||||
{
|
|
||||||
POPUP_REGISTRATION,
|
|
||||||
POPUP_CALL,
|
|
||||||
|
|
||||||
POPUP_MAX_TYPE
|
|
||||||
};
|
|
||||||
enum PopUpElement
|
|
||||||
{
|
|
||||||
POPUP_EL_TITLE1,
|
|
||||||
POPUP_EL_TITLE2,
|
|
||||||
POPUP_EL_TITLE3,
|
|
||||||
POPUP_EL_BUTTON1,
|
|
||||||
POPUP_EL_BUTTON2,
|
|
||||||
};
|
|
||||||
CPopUpWnd *m_PopUp;
|
|
||||||
int m_PopUpCount;
|
|
||||||
BOOL m_PopUpState[POPUP_MAX_TYPE];
|
|
||||||
CPopUpContent m_PopUpContent[POPUP_MAX_TYPE];
|
|
||||||
|
|
||||||
void PopUp_Show(PopUpType type,
|
|
||||||
const CString& title1,
|
|
||||||
const CString& title2,
|
|
||||||
const CString& title3,
|
|
||||||
const CString& btn1,
|
|
||||||
const CString& btn2,
|
|
||||||
unsigned userData);
|
|
||||||
void PopUp_Modify(PopUpType type,
|
|
||||||
PopUpElement el,
|
|
||||||
const CString& text);
|
|
||||||
void PopUp_Hide(PopUpType type);
|
|
||||||
|
|
||||||
private:
|
|
||||||
CPocketPJSettings m_Cfg;
|
|
||||||
|
|
||||||
void Error(const CString &title, pj_status_t rc);
|
|
||||||
BOOL Restart();
|
|
||||||
void OnOK();
|
|
||||||
int FindBuddyInCfg(const CString &uri);
|
|
||||||
int FindBuddyInPjsua(const CString &uri);
|
|
||||||
void RedrawBuddyList();
|
|
||||||
|
|
||||||
private:
|
|
||||||
pjsua_acc_id m_PjsuaAccId;
|
|
||||||
|
|
||||||
void OnRegState();
|
|
||||||
void OnCallState();
|
|
||||||
|
|
||||||
// pjsua callbacks
|
|
||||||
static void on_call_state(pjsua_call_id call_id, pjsip_event *e);
|
|
||||||
static void on_call_media_state(pjsua_call_id call_id);
|
|
||||||
static void on_incoming_call(pjsua_acc_id acc_id, pjsua_call_id call_id,
|
|
||||||
pjsip_rx_data *rdata);
|
|
||||||
static void on_reg_state(pjsua_acc_id acc_id);
|
|
||||||
static void on_buddy_state(pjsua_buddy_id buddy_id);
|
|
||||||
static void on_pager(pjsua_call_id call_id, const pj_str_t *from,
|
|
||||||
const pj_str_t *to, const pj_str_t *contact,
|
|
||||||
const pj_str_t *mime_type, const pj_str_t *text);
|
|
||||||
};
|
|
||||||
|
|
||||||
//{{AFX_INSERT_LOCATION}}
|
|
||||||
// Microsoft eMbedded Visual C++ will insert additional declarations immediately before the previous line.
|
|
||||||
|
|
||||||
#endif // !defined(AFX_POCKETPJDLG_H__DF5F90C9_E72B_4557_9126_AFE75A3ADE9D__INCLUDED_)
|
|
|
@ -1,235 +0,0 @@
|
||||||
#include "stdafx.h"
|
|
||||||
#include "PopUpWnd.h"
|
|
||||||
#include "resource.h"
|
|
||||||
#include "PocketPJDlg.h"
|
|
||||||
|
|
||||||
#ifdef _DEBUG
|
|
||||||
#define new DEBUG_NEW
|
|
||||||
#undef THIS_FILE
|
|
||||||
static char THIS_FILE[] = __FILE__;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define IDC_BTN1 10
|
|
||||||
#define IDC_BTN2 11
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
// CPopUpWnd
|
|
||||||
|
|
||||||
CPopUpWnd::CPopUpWnd(CPocketPJDlg* pParent)
|
|
||||||
{
|
|
||||||
Create(pParent);
|
|
||||||
}
|
|
||||||
|
|
||||||
CPopUpWnd::~CPopUpWnd()
|
|
||||||
{
|
|
||||||
DestroyWindow();
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOL CPopUpWnd::Create(CPocketPJDlg* pParent)
|
|
||||||
{
|
|
||||||
BOOL bSuccess;
|
|
||||||
|
|
||||||
m_ParentWnd = pParent;
|
|
||||||
|
|
||||||
// Register window class
|
|
||||||
CString csClassName = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW,
|
|
||||||
0,
|
|
||||||
CBrush(::GetSysColor(COLOR_BTNFACE)));
|
|
||||||
|
|
||||||
// Create popup window
|
|
||||||
bSuccess = CreateEx(WS_EX_DLGMODALFRAME|WS_EX_TOPMOST, // Extended style
|
|
||||||
csClassName, // Classname
|
|
||||||
_T("PocketPJ"), // Title
|
|
||||||
WS_POPUP|WS_BORDER|WS_CAPTION, // style
|
|
||||||
0,0, // position - updated soon.
|
|
||||||
1,1, // Size - updated soon
|
|
||||||
pParent->GetSafeHwnd(), // handle to parent
|
|
||||||
0, // No menu
|
|
||||||
NULL);
|
|
||||||
if (!bSuccess)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
ShowWindow(SW_HIDE);
|
|
||||||
|
|
||||||
// Now create the controls
|
|
||||||
CRect TempRect(0,0,10,10);
|
|
||||||
|
|
||||||
/* |SS_LEFTNOWORDWRAP */
|
|
||||||
bSuccess = m_Title1.Create(_T("Title1"), WS_CHILD|WS_VISIBLE|SS_NOPREFIX,
|
|
||||||
TempRect, this, IDC_TITLE1);
|
|
||||||
if (!bSuccess)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
bSuccess = m_Title2.Create(_T("Title2"), WS_CHILD|WS_VISIBLE|SS_NOPREFIX,
|
|
||||||
TempRect, this, IDC_TITLE2);
|
|
||||||
if (!bSuccess)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
bSuccess = m_Title3.Create(_T("Title3"), WS_CHILD|WS_VISIBLE|SS_NOPREFIX,
|
|
||||||
TempRect, this, IDC_TITLE3);
|
|
||||||
if (!bSuccess)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
bSuccess = m_Btn1.Create(_T("Button1"),
|
|
||||||
WS_CHILD|WS_VISIBLE|WS_TABSTOP| BS_PUSHBUTTON,
|
|
||||||
TempRect, this, IDC_BTN1);
|
|
||||||
if (!bSuccess)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
bSuccess = m_Btn2.Create(_T("Button2"),
|
|
||||||
WS_CHILD|WS_VISIBLE|WS_TABSTOP| BS_PUSHBUTTON,
|
|
||||||
TempRect, this, IDC_BTN2);
|
|
||||||
if (!bSuccess)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
CFont *ft1 = new CFont,
|
|
||||||
*ft2 = new CFont,
|
|
||||||
*ft3 = new CFont;
|
|
||||||
|
|
||||||
|
|
||||||
LOGFONT lf;
|
|
||||||
memset(&lf, 0, sizeof(LOGFONT));
|
|
||||||
lf.lfHeight = 12;
|
|
||||||
lstrcpy(lf.lfFaceName, _T("Arial"));
|
|
||||||
VERIFY(ft1->CreateFontIndirect(&lf));
|
|
||||||
VERIFY(ft3->CreateFontIndirect(&lf));
|
|
||||||
|
|
||||||
lf.lfHeight = 20;
|
|
||||||
VERIFY(ft2->CreateFontIndirect(&lf));
|
|
||||||
|
|
||||||
m_Title1.SetFont(ft1, TRUE);
|
|
||||||
m_Title2.SetFont(ft2, TRUE);
|
|
||||||
m_Title3.SetFont(ft3, TRUE);
|
|
||||||
|
|
||||||
|
|
||||||
SetWindowSize();
|
|
||||||
|
|
||||||
// Center and show window
|
|
||||||
CenterWindow();
|
|
||||||
|
|
||||||
Show();
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPopUpWnd::SetContent(const CPopUpContent &content)
|
|
||||||
{
|
|
||||||
m_Title1.SetWindowText(content.m_Title1);
|
|
||||||
m_Title2.SetWindowText(content.m_Title2);
|
|
||||||
m_Title3.SetWindowText(content.m_Title3);
|
|
||||||
|
|
||||||
if (content.m_Btn1 != "") {
|
|
||||||
m_Btn1.SetWindowText(content.m_Btn1);
|
|
||||||
m_Btn1.ShowWindow(SW_SHOW);
|
|
||||||
} else {
|
|
||||||
m_Btn1.ShowWindow(SW_HIDE);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (content.m_Btn2 != "") {
|
|
||||||
m_Btn2.SetWindowText(content.m_Btn2);
|
|
||||||
m_Btn2.ShowWindow(SW_SHOW);
|
|
||||||
} else {
|
|
||||||
m_Btn2.ShowWindow(SW_HIDE);
|
|
||||||
}
|
|
||||||
|
|
||||||
UpdateWindow();
|
|
||||||
ShowWindow(SW_SHOW);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPopUpWnd::SetWindowSize(int width, int height)
|
|
||||||
{
|
|
||||||
enum { H1 = 16, H2 = 40, H3 = 16, S = 5, G = 10, BW=60, BH=20, BG=40};
|
|
||||||
|
|
||||||
CRect rootRect(0, 0, 320, 240);
|
|
||||||
int Y;
|
|
||||||
|
|
||||||
MoveWindow((rootRect.Width() - width)/2, (rootRect.Height() - height)/2,
|
|
||||||
width, height);
|
|
||||||
|
|
||||||
m_Title1.MoveWindow(10, Y=S, width-20, H1);
|
|
||||||
m_Title2.MoveWindow(10, Y+=H1+G, width-20, H2);
|
|
||||||
m_Title3.MoveWindow(10, Y+=H2+G, width-20, H3);
|
|
||||||
|
|
||||||
m_Btn1.MoveWindow((width-2*BW-BG)/2, Y+=H3+G, BW, BH);
|
|
||||||
m_Btn2.MoveWindow((width-2*BW-BG)/2+BW+BG, Y, BW, BH);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPopUpWnd::Hide()
|
|
||||||
{
|
|
||||||
if (!::IsWindow(GetSafeHwnd()))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (IsWindowVisible())
|
|
||||||
{
|
|
||||||
ShowWindow(SW_HIDE);
|
|
||||||
ModifyStyle(WS_VISIBLE, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPopUpWnd::Show()
|
|
||||||
{
|
|
||||||
if (!::IsWindow(GetSafeHwnd()))
|
|
||||||
return;
|
|
||||||
|
|
||||||
ModifyStyle(0, WS_VISIBLE);
|
|
||||||
ShowWindow(SW_SHOWNA);
|
|
||||||
RedrawWindow(NULL,NULL,RDW_ERASE|RDW_INVALIDATE|RDW_UPDATENOW);
|
|
||||||
}
|
|
||||||
|
|
||||||
BEGIN_MESSAGE_MAP(CPopUpWnd, CWnd)
|
|
||||||
//{{AFX_MSG_MAP(CPopUpWnd)
|
|
||||||
ON_WM_ERASEBKGND()
|
|
||||||
//}}AFX_MSG_MAP
|
|
||||||
ON_BN_CLICKED(IDC_BTN1, OnCancel1)
|
|
||||||
ON_BN_CLICKED(IDC_BTN2, OnCancel2)
|
|
||||||
END_MESSAGE_MAP()
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
// CPopUpWnd message handlers
|
|
||||||
|
|
||||||
BOOL CPopUpWnd::OnEraseBkgnd(CDC* pDC)
|
|
||||||
{
|
|
||||||
CBrush backBrush;
|
|
||||||
backBrush.CreateSolidBrush(RGB(255,255,255));
|
|
||||||
CBrush* pOldBrush = pDC->SelectObject(&backBrush);
|
|
||||||
|
|
||||||
CRect rect;
|
|
||||||
pDC->GetClipBox(&rect); // Erase the area needed
|
|
||||||
pDC->PatBlt(rect.left, rect.top, rect.Width(), rect.Height(), PATCOPY);
|
|
||||||
pDC->SelectObject(pOldBrush);
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPopUpWnd::OnCancel1()
|
|
||||||
{
|
|
||||||
m_ParentWnd->OnPopUpButton(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void CPopUpWnd::OnCancel2()
|
|
||||||
{
|
|
||||||
m_ParentWnd->OnPopUpButton(2);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
BOOL CPopUpWnd::DestroyWindow()
|
|
||||||
{
|
|
||||||
return CWnd::DestroyWindow();
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPopUpWnd::PeekAndPump()
|
|
||||||
{
|
|
||||||
MSG msg;
|
|
||||||
while (::PeekMessage(&msg, NULL,0,0,PM_NOREMOVE))
|
|
||||||
{
|
|
||||||
if (!AfxGetApp()->PumpMessage())
|
|
||||||
{
|
|
||||||
::PostQuitMessage(0);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,67 +0,0 @@
|
||||||
#ifndef __POPUP_WND_H__
|
|
||||||
#define __POPUP_WND_H__
|
|
||||||
|
|
||||||
|
|
||||||
class CPocketPJDlg;
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
struct CPopUpContent
|
|
||||||
{
|
|
||||||
CString m_Title1;
|
|
||||||
CString m_Title2;
|
|
||||||
CString m_Title3;
|
|
||||||
CString m_Btn1;
|
|
||||||
CString m_Btn2;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
// CPopUpWnd window
|
|
||||||
|
|
||||||
class CPopUpWnd : public CWnd
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
CPopUpWnd(CPocketPJDlg* pParent);
|
|
||||||
virtual ~CPopUpWnd();
|
|
||||||
|
|
||||||
void SetContent(const CPopUpContent &content);
|
|
||||||
void Hide();
|
|
||||||
void Show();
|
|
||||||
|
|
||||||
void SetWindowSize(int nWindowWidth = 200, int nWindowHeight = 180);
|
|
||||||
|
|
||||||
void PeekAndPump();
|
|
||||||
|
|
||||||
// Implementation
|
|
||||||
protected:
|
|
||||||
CPocketPJDlg * m_ParentWnd;
|
|
||||||
|
|
||||||
CStatic m_Title1;
|
|
||||||
CStatic m_Title2;
|
|
||||||
CStatic m_Title3;
|
|
||||||
CButton m_Btn1;
|
|
||||||
CButton m_Btn2;
|
|
||||||
|
|
||||||
BOOL Create(CPocketPJDlg* pParent);
|
|
||||||
|
|
||||||
// Overrides
|
|
||||||
// ClassWizard generated virtual function overrides
|
|
||||||
//{{AFX_VIRTUAL(CPopUpWnd)
|
|
||||||
public:
|
|
||||||
virtual BOOL DestroyWindow();
|
|
||||||
//}}AFX_VIRTUAL
|
|
||||||
|
|
||||||
// Generated message map functions
|
|
||||||
protected:
|
|
||||||
//{{AFX_MSG(CPopUpWnd)
|
|
||||||
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
|
|
||||||
//}}AFX_MSG
|
|
||||||
afx_msg void OnCancel1();
|
|
||||||
afx_msg void OnCancel2();
|
|
||||||
DECLARE_MESSAGE_MAP()
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
|
@ -1,81 +0,0 @@
|
||||||
========================================================================
|
|
||||||
Microsoft Foundation Class Library for Windows CE: PocketPJ
|
|
||||||
========================================================================
|
|
||||||
|
|
||||||
|
|
||||||
AppWizard has created this PocketPJ application for you. This application
|
|
||||||
not only demonstrates the basics of using the Microsoft Foundation classes
|
|
||||||
but is also a starting point for writing your application.
|
|
||||||
|
|
||||||
This file contains a summary of what you will find in each of the files that
|
|
||||||
make up your PocketPJ application.
|
|
||||||
|
|
||||||
PocketPJ.h
|
|
||||||
This is the main header file for the application. It includes other
|
|
||||||
project specific headers (including Resource.h) and declares the
|
|
||||||
CPocketPJApp application class.
|
|
||||||
|
|
||||||
PocketPJ.cpp
|
|
||||||
This is the main application source file that contains the application
|
|
||||||
class CPocketPJApp.
|
|
||||||
|
|
||||||
PocketPJ.rc
|
|
||||||
This is a listing of all of the Microsoft Windows CE resources that the
|
|
||||||
program uses. It includes the icons, bitmaps, and cursors that are stored
|
|
||||||
in the RES subdirectory. This file can be directly edited in Microsoft
|
|
||||||
eMbedded Visual C++.
|
|
||||||
|
|
||||||
res\PocketPJ.ico
|
|
||||||
This is an icon file, which is used as the application's icon. This
|
|
||||||
icon is included by the main resource file PocketPJ.rc.
|
|
||||||
|
|
||||||
res\PocketPJ.rc2
|
|
||||||
This file contains resources that are not edited by Microsoft
|
|
||||||
eMbedded Visual C++. You should place all resources not
|
|
||||||
editable by the resource editor in this file.
|
|
||||||
|
|
||||||
PocketPJ.vcc
|
|
||||||
This file contains information used by ClassWizard to edit existing
|
|
||||||
classes or add new classes. ClassWizard also uses this file to store
|
|
||||||
information needed to create and edit message maps and dialog data
|
|
||||||
maps and to create prototype member functions.
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
AppWizard creates one dialog class:
|
|
||||||
|
|
||||||
PocketPJDlg.h, PocketPJDlg.cpp - the dialog
|
|
||||||
These files contain your CPocketPJDlg class. This class defines
|
|
||||||
the behavior of your application's main dialog. The dialog's
|
|
||||||
template is in PocketPJ.rc, which can be edited in Microsoft
|
|
||||||
Developer Studio.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
Other standard files:
|
|
||||||
|
|
||||||
StdAfx.h, StdAfx.cpp
|
|
||||||
These files are used to build a precompiled header (PCH) file
|
|
||||||
named PocketPJ.pch and a precompiled types file named StdAfx.obj.
|
|
||||||
|
|
||||||
Resource.h
|
|
||||||
This is the standard header file, which defines new resource IDs.
|
|
||||||
Microsoft eMbedded Visual C++ reads and updates this file.
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
Other notes:
|
|
||||||
|
|
||||||
AppWizard uses "TODO:" to indicate parts of the source code you
|
|
||||||
should add to or customize.
|
|
||||||
|
|
||||||
If your application uses MFC in a shared DLL, and your application is
|
|
||||||
in a language other than the operating system's current language, you
|
|
||||||
will need to copy the corresponding localized resources MFCWCXXX.DLL from
|
|
||||||
the Microsoft eMbedded Visual C++ CD-ROM onto the system or system32 directory,
|
|
||||||
and rename it to be MFCLOC.DLL. ("XXX" stands for the language abbreviation.
|
|
||||||
For example, MFCWCDEU.DLL contains resources translated to German.) If you
|
|
||||||
don't do this, some of the UI elements of your application will remain in the
|
|
||||||
language of the operating system.
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
|
@ -1,376 +0,0 @@
|
||||||
// SettingsDlg.cpp : implementation file
|
|
||||||
//
|
|
||||||
|
|
||||||
#include "stdafx.h"
|
|
||||||
#include "PocketPJ.h"
|
|
||||||
#include "SettingsDlg.h"
|
|
||||||
#include <pjsua-lib/pjsua.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")
|
|
||||||
#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<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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
DWORD codecCount = 0;
|
|
||||||
cbData = sizeof(dwordVal);
|
|
||||||
if (key.QueryValue(codecCount, REG_CODEC_CNT) == ERROR_SUCCESS) {
|
|
||||||
|
|
||||||
m_Codecs.RemoveAll();
|
|
||||||
|
|
||||||
for (i=0; i<codecCount; ++i) {
|
|
||||||
CString entry;
|
|
||||||
entry.Format(REG_CODEC_X, i);
|
|
||||||
|
|
||||||
cbData = sizeof(textVal);
|
|
||||||
if (key.QueryValue(textVal, entry, &cbData) == ERROR_SUCCESS) {
|
|
||||||
m_Codecs.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_EchoSuppress, REG_ENABLE_EC);
|
|
||||||
key.SetValue(m_EcTail, REG_EC_TAIL);
|
|
||||||
|
|
||||||
key.SetValue(m_TCP, REG_ENABLE_TCP);
|
|
||||||
key.SetValue(m_VAD, REG_ENABLE_VAD);
|
|
||||||
key.SetValue(m_AutoAnswer, REG_AUTO_ANSWER);
|
|
||||||
|
|
||||||
key.SetValue(m_BuddyList.GetSize(), REG_BUDDY_CNT);
|
|
||||||
|
|
||||||
int i;
|
|
||||||
for (i=0; i<m_BuddyList.GetSize(); ++i) {
|
|
||||||
CString entry;
|
|
||||||
entry.Format(REG_BUDDY_X, i);
|
|
||||||
key.SetValue(m_BuddyList.GetAt(i), entry);
|
|
||||||
}
|
|
||||||
|
|
||||||
DWORD N = m_Codecs.GetSize();
|
|
||||||
key.SetValue(N, REG_CODEC_CNT);
|
|
||||||
for (i=0; i<m_Codecs.GetSize(); ++i) {
|
|
||||||
CString entry;
|
|
||||||
entry.Format(REG_CODEC_X, i);
|
|
||||||
key.SetValue(m_Codecs.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("");
|
|
||||||
m_EchoSuppress = FALSE;
|
|
||||||
m_EcTail = _T("");
|
|
||||||
m_TCP = FALSE;
|
|
||||||
m_VAD = FALSE;
|
|
||||||
m_AutoAnswer = FALSE;
|
|
||||||
//}}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;
|
|
||||||
m_EchoSuppress = m_Cfg.m_EchoSuppress;
|
|
||||||
m_TCP = m_Cfg.m_TCP;
|
|
||||||
m_VAD = m_Cfg.m_VAD;
|
|
||||||
m_AutoAnswer= m_Cfg.m_AutoAnswer;
|
|
||||||
|
|
||||||
CString s;
|
|
||||||
s.Format(_T("%d"), m_Cfg.m_EcTail);
|
|
||||||
m_EcTail = s;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void CSettingsDlg::DoDataExchange(CDataExchange* pDX)
|
|
||||||
{
|
|
||||||
CDialog::DoDataExchange(pDX);
|
|
||||||
//{{AFX_DATA_MAP(CSettingsDlg)
|
|
||||||
DDX_Control(pDX, IDC_CODECS, m_Codecs);
|
|
||||||
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);
|
|
||||||
DDX_Check(pDX, IDC_ECHO_SUPPRESS, m_EchoSuppress);
|
|
||||||
DDX_Text(pDX, IDC_EC_TAIL, m_EcTail);
|
|
||||||
DDX_Check(pDX, IDC_TCP, m_TCP);
|
|
||||||
DDX_Check(pDX, IDC_VAD, m_VAD);
|
|
||||||
DDX_Check(pDX, IDC_AA, m_AutoAnswer);
|
|
||||||
//}}AFX_DATA_MAP
|
|
||||||
|
|
||||||
|
|
||||||
if (m_Codecs.GetCount() == 0) {
|
|
||||||
int i;
|
|
||||||
for (i=0; i<m_Cfg.m_Codecs.GetSize(); ++i) {
|
|
||||||
m_Codecs.AddString(m_Cfg.m_Codecs.GetAt(i));
|
|
||||||
}
|
|
||||||
m_Codecs.SetCurSel(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
BEGIN_MESSAGE_MAP(CSettingsDlg, CDialog)
|
|
||||||
//{{AFX_MSG_MAP(CSettingsDlg)
|
|
||||||
ON_BN_CLICKED(IDC_STUN, OnStun)
|
|
||||||
ON_BN_CLICKED(IDC_ECHO_SUPPRESS, OnEchoSuppress)
|
|
||||||
ON_CBN_SELCHANGE(IDC_CODECS, OnSelchangeCodecs)
|
|
||||||
//}}AFX_MSG_MAP
|
|
||||||
END_MESSAGE_MAP()
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
// CSettingsDlg message handlers
|
|
||||||
|
|
||||||
int CSettingsDlg::DoModal()
|
|
||||||
{
|
|
||||||
int rc = CDialog::DoModal();
|
|
||||||
|
|
||||||
return rc;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CSettingsDlg::OnStun()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void CSettingsDlg::OnEchoSuppress()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void CSettingsDlg::OnSelchangeCodecs()
|
|
||||||
{
|
|
||||||
int cur = m_Codecs.GetCurSel();
|
|
||||||
if (cur < 1)
|
|
||||||
return;
|
|
||||||
|
|
||||||
CString codec;
|
|
||||||
DWORD N;
|
|
||||||
|
|
||||||
m_Codecs.GetLBText(cur, codec);
|
|
||||||
N = m_Codecs.GetCount();
|
|
||||||
m_Codecs.DeleteString(cur);
|
|
||||||
N = m_Codecs.GetCount();
|
|
||||||
m_Codecs.InsertString(0, codec);
|
|
||||||
N = m_Codecs.GetCount();
|
|
||||||
m_Codecs.SetCurSel(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void CSettingsDlg::OnOK()
|
|
||||||
{
|
|
||||||
UpdateData(TRUE);
|
|
||||||
|
|
||||||
m_Cfg.m_Domain = m_Domain;
|
|
||||||
m_Cfg.m_UseIce = m_ICE != 0;
|
|
||||||
m_Cfg.m_Password = m_Passwd;
|
|
||||||
m_Cfg.m_UsePublish = m_PUBLISH != 0;
|
|
||||||
m_Cfg.m_UseSrtp = m_SRTP != 0;
|
|
||||||
m_Cfg.m_UseStun = m_STUN != 0;
|
|
||||||
m_Cfg.m_StunSrv = m_StunSrv;
|
|
||||||
m_Cfg.m_User = m_User;
|
|
||||||
m_Cfg.m_DNS = m_Dns;
|
|
||||||
m_Cfg.m_EchoSuppress= m_EchoSuppress != 0;
|
|
||||||
m_Cfg.m_EcTail = _ttoi(m_EcTail);
|
|
||||||
m_Cfg.m_TCP = m_TCP != 0;
|
|
||||||
m_Cfg.m_VAD = m_VAD != 0;
|
|
||||||
m_Cfg.m_AutoAnswer = m_AutoAnswer != 0;
|
|
||||||
|
|
||||||
unsigned i;
|
|
||||||
m_Cfg.m_Codecs.RemoveAll();
|
|
||||||
DWORD N = m_Codecs.GetCount();
|
|
||||||
for (i=0; i<N; ++i) {
|
|
||||||
CString codec;
|
|
||||||
m_Codecs.GetLBText(i, codec);
|
|
||||||
m_Cfg.m_Codecs.Add(codec);
|
|
||||||
}
|
|
||||||
|
|
||||||
CDialog::OnOK();
|
|
||||||
}
|
|
|
@ -1,99 +0,0 @@
|
||||||
#if !defined(AFX_SETTINGSDLG_H__46F18E6E_F411_4D9E_BEE9_619D80BC81DC__INCLUDED_)
|
|
||||||
#define AFX_SETTINGSDLG_H__46F18E6E_F411_4D9E_BEE9_619D80BC81DC__INCLUDED_
|
|
||||||
|
|
||||||
#if _MSC_VER > 1000
|
|
||||||
#pragma once
|
|
||||||
#endif // _MSC_VER > 1000
|
|
||||||
// SettingsDlg.h : header file
|
|
||||||
//
|
|
||||||
#include <Afxtempl.h>
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
// Settings
|
|
||||||
struct CPocketPJSettings
|
|
||||||
{
|
|
||||||
CString m_Domain;
|
|
||||||
CString m_User;
|
|
||||||
CString m_Password;
|
|
||||||
bool m_UseStun;
|
|
||||||
CString m_StunSrv;
|
|
||||||
bool m_UseIce;
|
|
||||||
bool m_UseSrtp;
|
|
||||||
bool m_UsePublish;
|
|
||||||
CString m_DNS;
|
|
||||||
bool m_EchoSuppress;
|
|
||||||
DWORD m_EcTail;
|
|
||||||
bool m_TCP;
|
|
||||||
bool m_VAD;
|
|
||||||
bool m_AutoAnswer;
|
|
||||||
|
|
||||||
CArray<CString,CString> m_Codecs;
|
|
||||||
CArray<CString,CString> m_BuddyList;
|
|
||||||
|
|
||||||
CPocketPJSettings();
|
|
||||||
|
|
||||||
// Load from registry
|
|
||||||
void LoadRegistry();
|
|
||||||
|
|
||||||
// Save to registry
|
|
||||||
void SaveRegistry();
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
// CSettingsDlg dialog
|
|
||||||
|
|
||||||
class CSettingsDlg : public CDialog
|
|
||||||
{
|
|
||||||
// Construction
|
|
||||||
public:
|
|
||||||
CSettingsDlg(CPocketPJSettings & cfg, CWnd* pParent = NULL);
|
|
||||||
|
|
||||||
// Dialog Data
|
|
||||||
//{{AFX_DATA(CSettingsDlg)
|
|
||||||
enum { IDD = IDD_SETTING };
|
|
||||||
CComboBox m_Codecs;
|
|
||||||
CString m_Domain;
|
|
||||||
BOOL m_ICE;
|
|
||||||
CString m_Passwd;
|
|
||||||
BOOL m_PUBLISH;
|
|
||||||
BOOL m_SRTP;
|
|
||||||
BOOL m_STUN;
|
|
||||||
CString m_StunSrv;
|
|
||||||
CString m_User;
|
|
||||||
CString m_Dns;
|
|
||||||
BOOL m_EchoSuppress;
|
|
||||||
CString m_EcTail;
|
|
||||||
BOOL m_TCP;
|
|
||||||
BOOL m_VAD;
|
|
||||||
BOOL m_AutoAnswer;
|
|
||||||
//}}AFX_DATA
|
|
||||||
|
|
||||||
|
|
||||||
// Overrides
|
|
||||||
// ClassWizard generated virtual function overrides
|
|
||||||
//{{AFX_VIRTUAL(CSettingsDlg)
|
|
||||||
public:
|
|
||||||
virtual int DoModal();
|
|
||||||
protected:
|
|
||||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
|
||||||
//}}AFX_VIRTUAL
|
|
||||||
|
|
||||||
// Implementation
|
|
||||||
protected:
|
|
||||||
CPocketPJSettings & m_Cfg;
|
|
||||||
|
|
||||||
// Generated message map functions
|
|
||||||
//{{AFX_MSG(CSettingsDlg)
|
|
||||||
afx_msg void OnStun();
|
|
||||||
afx_msg void OnEchoSuppress();
|
|
||||||
afx_msg void OnSelchangeCodecs();
|
|
||||||
virtual void OnOK();
|
|
||||||
//}}AFX_MSG
|
|
||||||
DECLARE_MESSAGE_MAP()
|
|
||||||
};
|
|
||||||
|
|
||||||
//{{AFX_INSERT_LOCATION}}
|
|
||||||
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
|
|
||||||
|
|
||||||
#endif // !defined(AFX_SETTINGSDLG_H__46F18E6E_F411_4D9E_BEE9_619D80BC81DC__INCLUDED_)
|
|
|
@ -1,6 +0,0 @@
|
||||||
// stdafx.cpp : source file that includes just the standard includes
|
|
||||||
// PocketPJ.pch will be the pre-compiled header
|
|
||||||
// stdafx.obj will contain the pre-compiled type information
|
|
||||||
|
|
||||||
#include "stdafx.h"
|
|
||||||
|
|
|
@ -1,32 +0,0 @@
|
||||||
// stdafx.h : include file for standard system include files,
|
|
||||||
// or project specific include files that are used frequently, but
|
|
||||||
// are changed infrequently
|
|
||||||
//
|
|
||||||
|
|
||||||
#if !defined(AFX_STDAFX_H__20B05C7D_B63E_4E5C_B3BB_E76C6C9E70B7__INCLUDED_)
|
|
||||||
#define AFX_STDAFX_H__20B05C7D_B63E_4E5C_B3BB_E76C6C9E70B7__INCLUDED_
|
|
||||||
|
|
||||||
#if _MSC_VER >= 1000
|
|
||||||
#pragma once
|
|
||||||
#endif // _MSC_VER >= 1000
|
|
||||||
|
|
||||||
#pragma warning(disable:4496)
|
|
||||||
|
|
||||||
|
|
||||||
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
|
|
||||||
|
|
||||||
#include <afxwin.h> // MFC core and standard components
|
|
||||||
#include <afxext.h> // MFC extensions
|
|
||||||
|
|
||||||
#if defined(_AFXDLL)
|
|
||||||
#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef _AFX_NO_AFXCMN_SUPPORT
|
|
||||||
#include <afxcmn.h> // MFC support for Windows Common Controls
|
|
||||||
#endif // _AFX_NO_AFXCMN_SUPPORT
|
|
||||||
|
|
||||||
//{{AFX_INSERT_LOCATION}}
|
|
||||||
// Microsoft eMbedded Visual C++ will insert additional declarations immediately before the previous line.
|
|
||||||
|
|
||||||
#endif // !defined(AFX_STDAFX_H__20B05C7D_B63E_4E5C_B3BB_E76C6C9E70B7__INCLUDED_)
|
|
|
@ -1,28 +0,0 @@
|
||||||
#ifndef __NEWRES_H__
|
|
||||||
#define __NEWRES_H__
|
|
||||||
|
|
||||||
#define SHMENUBAR RCDATA
|
|
||||||
#if !(defined(_WIN32_WCE_PSPC) && (_WIN32_WCE >= 300))
|
|
||||||
#undef HDS_HORZ
|
|
||||||
#undef HDS_BUTTONS
|
|
||||||
#undef HDS_HIDDEN
|
|
||||||
|
|
||||||
#include <commctrl.h>
|
|
||||||
// for MenuBar
|
|
||||||
#define I_IMAGENONE (-2)
|
|
||||||
#define NOMENU 0xFFFF
|
|
||||||
#define IDS_SHNEW 1
|
|
||||||
#define IDM_SHAREDNEW 10
|
|
||||||
#define IDM_SHAREDNEWDEFAULT 11
|
|
||||||
|
|
||||||
// for Tab Control
|
|
||||||
#define TCS_SCROLLOPPOSITE 0x0001 // assumes multiline tab
|
|
||||||
#define TCS_BOTTOM 0x0002
|
|
||||||
#define TCS_RIGHT 0x0002
|
|
||||||
#define TCS_VERTICAL 0x0080
|
|
||||||
#define TCS_MULTISELECT 0x0004 // allow multi-select in button mode
|
|
||||||
#define TCS_FLATBUTTONS 0x0008
|
|
||||||
#endif //_WIN32_WCE_PSPC
|
|
||||||
|
|
||||||
|
|
||||||
#endif //__NEWRES_H__
|
|
Before Width: | Height: | Size: 1.1 KiB |
|
@ -1,13 +0,0 @@
|
||||||
//
|
|
||||||
// POCKETPJ.RC2 - resources Microsoft eMbedded Visual C++ does not edit directly
|
|
||||||
//
|
|
||||||
|
|
||||||
#ifdef APSTUDIO_INVOKED
|
|
||||||
#error this file is not editable by Microsoft eMbedded Visual C++
|
|
||||||
#endif //APSTUDIO_INVOKED
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
// Add manually edited resources here...
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
Before Width: | Height: | Size: 246 B |
Before Width: | Height: | Size: 246 B |
Before Width: | Height: | Size: 246 B |
Before Width: | Height: | Size: 318 B |
Before Width: | Height: | Size: 246 B |
Before Width: | Height: | Size: 318 B |
Before Width: | Height: | Size: 246 B |
Before Width: | Height: | Size: 318 B |
|
@ -1,71 +0,0 @@
|
||||||
//{{NO_DEPENDENCIES}}
|
|
||||||
// Microsoft eMbedded Visual C++ generated include file.
|
|
||||||
// Used by PocketPJ.rc
|
|
||||||
//
|
|
||||||
#define IDD_POCKETPJ_DIALOG 102
|
|
||||||
#define IDR_MAINFRAME 128
|
|
||||||
#define IDI_ONLINE 131
|
|
||||||
#define IDI_OFFLINE 132
|
|
||||||
#define IDI_INVISIBLE 133
|
|
||||||
#define IDB_ONLINE 135
|
|
||||||
#define IDB_OFFLINE 136
|
|
||||||
#define IDB_INVISIBLE 137
|
|
||||||
#define IDB_ACTION 138
|
|
||||||
#define IDR_ACC_MENU 139
|
|
||||||
#define IDR_URI_MENU 140
|
|
||||||
#define IDD_SETTING 141
|
|
||||||
#define IDD_POPUP 143
|
|
||||||
#define IDB_BLANK 144
|
|
||||||
#define IDC_BTN_ACC 1006
|
|
||||||
#define IDC_BTN_ACTION 1007
|
|
||||||
#define IDC_ACC_ID 1008
|
|
||||||
#define IDC_BUDDY_LIST 1009
|
|
||||||
#define IDC_URL 1010
|
|
||||||
#define IDC_DOMAIN 1011
|
|
||||||
#define IDC_USER 1012
|
|
||||||
#define IDC_PASSWD 1013
|
|
||||||
#define IDC_STUN 1014
|
|
||||||
#define IDC_STUN_SRV 1015
|
|
||||||
#define IDC_ICE 1016
|
|
||||||
#define IDC_SRTP 1017
|
|
||||||
#define IDC_TITLE1 1017
|
|
||||||
#define IDC_PUBLISH 1018
|
|
||||||
#define IDC_TITLE2 1018
|
|
||||||
#define IDC_DNS 1019
|
|
||||||
#define IDC_TITLE3 1020
|
|
||||||
#define IDC_ECHO_SUPPRESS 1020
|
|
||||||
#define IDC_BUTTON1 1021
|
|
||||||
#define IDC_EC_TAIL 1021
|
|
||||||
#define IDC_BUTTON2 1022
|
|
||||||
#define IDC_VAD 1022
|
|
||||||
#define IDC_TCP 1023
|
|
||||||
#define IDC_CODECS 1024
|
|
||||||
#define IDC_AA 1025
|
|
||||||
#define IDS_CAP_ONLINE 32772
|
|
||||||
#define IDS_CAP_OFFLINE 32774
|
|
||||||
#define IDS_CAP_INVISIBLE 32776
|
|
||||||
#define IDC_ONLINE 32777
|
|
||||||
#define IDC_ACC_ONLINE 32777
|
|
||||||
#define IDS_CAP_MENUITEM32783 32784
|
|
||||||
#define IDC_MENU1 32785
|
|
||||||
#define IDS_CAP_MENUITEM32786 32787
|
|
||||||
#define IDC_SETTINGS 32788
|
|
||||||
#define IDC_ACC_SETTINGS 32788
|
|
||||||
#define IDC_MENU2 32789
|
|
||||||
#define IDS_CAP_MENUITEM32790 32791
|
|
||||||
#define IDC_URI_CALL 32792
|
|
||||||
#define IDC_URI_ADD_BUDDY 32793
|
|
||||||
#define ID_URI_DEL_BUDDY 32794
|
|
||||||
#define IDC_URI_DEL_BUDDY 32794
|
|
||||||
#define IDC_ACC_INVISIBLE 32795
|
|
||||||
|
|
||||||
// Next default values for new objects
|
|
||||||
//
|
|
||||||
#ifdef APSTUDIO_INVOKED
|
|
||||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
|
||||||
#define _APS_NEXT_RESOURCE_VALUE 145
|
|
||||||
#define _APS_NEXT_COMMAND_VALUE 32796
|
|
||||||
#define _APS_NEXT_CONTROL_VALUE 1025
|
|
||||||
#define _APS_NEXT_SYMED_VALUE 101
|
|
||||||
#endif
|
|
||||||
#endif
|
|