1425 lines
44 KiB
C++
1425 lines
44 KiB
C++
|
#include "precomp.h"
|
||
|
#include "resource.h"
|
||
|
#include "PropWnd2.h"
|
||
|
#include "WndProcs.h"
|
||
|
#include "nmakwiz.h"
|
||
|
#include "nmakreg.h"
|
||
|
#include <algorithm>
|
||
|
|
||
|
const int CPropertyDataWindow2::mcs_iTop = 0;
|
||
|
const int CPropertyDataWindow2::mcs_iLeft = 150;
|
||
|
const int CPropertyDataWindow2::mcs_iBorder = 15;
|
||
|
|
||
|
/* static */ map< UINT, CPolicyData::eKeyType > CPropertyDataWindow2::ms_ClassMap;
|
||
|
/* static */ map< UINT, TCHAR* > CPropertyDataWindow2::ms_KeyMap;
|
||
|
/* static */ map< UINT, TCHAR* > CPropertyDataWindow2::ms_ValueMap;
|
||
|
|
||
|
|
||
|
LRESULT CALLBACK DefaultProc( HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam )
|
||
|
{
|
||
|
switch( iMsg )
|
||
|
{
|
||
|
case WM_VSCROLL:
|
||
|
{
|
||
|
OnMsg_VScroll( hwnd, wParam );
|
||
|
return 0;
|
||
|
break;
|
||
|
}
|
||
|
case WM_COMMAND:
|
||
|
{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
return( DefWindowProc( hwnd, iMsg, wParam, lParam ) );
|
||
|
}
|
||
|
|
||
|
CPropertyDataWindow2::CPropertyDataWindow2( HWND hwndParent, UINT uIDD, LPTSTR szClassName, UINT PopUpHelpMenuTextId, int iX, int iY, int iWidth, int iHeight, BOOL bScroll ) :
|
||
|
m_hwnd( NULL ),
|
||
|
m_IDD( uIDD ),
|
||
|
m_wndProc( (WNDPROC) DefaultProc),
|
||
|
m_bInit( FALSE ),
|
||
|
m_hwndParent( hwndParent )
|
||
|
{
|
||
|
m_szClassName = new TCHAR[ lstrlen( szClassName ) + 1 ];
|
||
|
lstrcpy( m_szClassName, szClassName );
|
||
|
_InitWindow();
|
||
|
_SizeWindow( iX, iY, iWidth, iHeight );
|
||
|
if( bScroll )
|
||
|
{
|
||
|
_PrepScrollBars();
|
||
|
}
|
||
|
ShowWindow( FALSE );
|
||
|
}
|
||
|
|
||
|
CPropertyDataWindow2::CPropertyDataWindow2( HWND hwndParent, UINT uIDD, LPTSTR szClassName, WNDPROC wndProc, UINT PopUpHelpMenuTextId, int iX, int iY, int iWidth, int iHeight, BOOL bScroll ) :
|
||
|
m_IDD( uIDD ),
|
||
|
m_hwnd( NULL ),
|
||
|
m_wndProc( wndProc ),
|
||
|
m_bInit( FALSE ),
|
||
|
m_hwndParent( hwndParent )
|
||
|
{
|
||
|
m_szClassName = new TCHAR[ lstrlen( szClassName ) + 1 ];
|
||
|
lstrcpy( m_szClassName, szClassName );
|
||
|
_InitWindow();
|
||
|
_SizeWindow( iX, iY, iWidth, iHeight );
|
||
|
if( bScroll )
|
||
|
{
|
||
|
_PrepScrollBars();
|
||
|
}
|
||
|
ShowWindow( FALSE );
|
||
|
}
|
||
|
|
||
|
CPropertyDataWindow2::~CPropertyDataWindow2( void )
|
||
|
{
|
||
|
delete [] m_szClassName;
|
||
|
list< CControlID * >::iterator it;
|
||
|
for( it = m_condList.begin(); it != m_condList.end(); it++ )
|
||
|
{
|
||
|
delete *it;
|
||
|
}
|
||
|
for( it = m_specialControlList.begin(); it != m_specialControlList.end(); it++ )
|
||
|
{
|
||
|
delete *it;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
void CPropertyDataWindow2::Reset()
|
||
|
{
|
||
|
list< HWND >::iterator i;
|
||
|
|
||
|
for( i = m_enableList.begin(); i != m_enableList.end(); i++ )
|
||
|
{
|
||
|
switch (GetWindowLong(*i, GWL_STYLE) & 0x0F)
|
||
|
{
|
||
|
case BS_AUTORADIOBUTTON:
|
||
|
case BS_RADIOBUTTON:
|
||
|
// Do nothing -- we always want default item checked
|
||
|
break;
|
||
|
|
||
|
default:
|
||
|
Button_SetCheck(*i, FALSE);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
list< CControlID * >::iterator it;
|
||
|
for( it = m_condList.begin(); it != m_condList.end(); it++ )
|
||
|
{
|
||
|
(*it)->Reset( m_hwnd );
|
||
|
}
|
||
|
for( it = m_specialControlList.begin(); it != m_specialControlList.end(); it++ )
|
||
|
{
|
||
|
(*it)->Reset( m_hwnd );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void CPropertyDataWindow2::SetEnableListID( UINT uCount, ... )
|
||
|
{
|
||
|
UINT uID;
|
||
|
HWND hwnd;
|
||
|
|
||
|
va_list ap;
|
||
|
va_start( ap, uCount );
|
||
|
|
||
|
while( uCount )
|
||
|
{
|
||
|
uID = va_arg( ap, UINT );
|
||
|
uCount--;
|
||
|
if( NULL == ( hwnd = GetDlgItem( m_hwnd, uID ) ) )
|
||
|
{
|
||
|
OutputDebugString( TEXT("Enabling Invalid ID\n") );
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
m_checkIDList.push_front( uID );
|
||
|
m_enableList.push_front( hwnd );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
va_end( ap );
|
||
|
}
|
||
|
|
||
|
BOOL CPropertyDataWindow2::SetFocus( UINT id )
|
||
|
{
|
||
|
return ::SetFocus( GetDlgItem( m_hwnd, id ) ) ? TRUE : FALSE;
|
||
|
}
|
||
|
|
||
|
void CPropertyDataWindow2::SetEditData( UINT id, TCHAR* sz )
|
||
|
{
|
||
|
Edit_SetText( GetDlgItem( m_hwnd, id ), sz );
|
||
|
}
|
||
|
|
||
|
void CPropertyDataWindow2::GetEditData( UINT id, LPTSTR sz, ULONG cb ) const
|
||
|
{
|
||
|
Edit_GetText( GetDlgItem( m_hwnd, id ), sz, cb );
|
||
|
}
|
||
|
|
||
|
ULONG CPropertyDataWindow2::GetEditDataLen( UINT id ) const
|
||
|
{
|
||
|
return Edit_GetTextLength( GetDlgItem( m_hwnd, id ) );
|
||
|
}
|
||
|
|
||
|
BOOL CPropertyDataWindow2::GetCheck( UINT id ) const
|
||
|
{
|
||
|
return(Button_GetCheck( GetDlgItem( m_hwnd, id ) ) ? TRUE : FALSE);
|
||
|
}
|
||
|
|
||
|
void CPropertyDataWindow2::SetCheck( UINT id, BOOL bCheck )
|
||
|
{
|
||
|
Button_SetCheck( GetDlgItem( m_hwnd, id ), bCheck );
|
||
|
}
|
||
|
|
||
|
void CPropertyDataWindow2::ShowWindow( BOOL bShowWindow /* = TRUE */ )
|
||
|
{
|
||
|
::ShowWindow( m_hwnd, bShowWindow ? SW_SHOW : SW_HIDE );
|
||
|
}
|
||
|
|
||
|
void CPropertyDataWindow2::EnableWindow( BOOL bEnable /* = TRUE */ )
|
||
|
{
|
||
|
list< HWND >::const_iterator it;
|
||
|
|
||
|
for (it = m_enableList.begin(); it != m_enableList.end(); ++it)
|
||
|
{
|
||
|
::EnableWindow( (HWND)(*it), bEnable );
|
||
|
}
|
||
|
|
||
|
if( m_specialControlList.size() )
|
||
|
{
|
||
|
list< CControlID * >::const_iterator iter;
|
||
|
for( iter = m_specialControlList.begin();
|
||
|
iter != m_specialControlList.end();
|
||
|
iter++ )
|
||
|
{
|
||
|
switch( (*iter)->GetType() )
|
||
|
{
|
||
|
case CControlID::CHECK:
|
||
|
case CControlID::SLIDER:
|
||
|
case CControlID::EDIT:
|
||
|
case CControlID::EDIT_NUM:
|
||
|
case CControlID::STATIC:
|
||
|
case CControlID::COMBO:
|
||
|
{
|
||
|
HWND hwnd = GetDlgItem( m_hwnd, (*iter)->GetID() );
|
||
|
::EnableWindow( hwnd, bEnable );
|
||
|
break;
|
||
|
}
|
||
|
default:
|
||
|
OutputDebugString( TEXT("CPropertyDataWindow2::EnableWindow: unknown CControlID::type\n") );
|
||
|
assert( 0 );
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if( m_condList.size() )
|
||
|
{
|
||
|
list< CControlID * >::const_iterator iter;
|
||
|
for( iter = m_condList.begin();
|
||
|
iter != m_condList.end();
|
||
|
iter++ )
|
||
|
{
|
||
|
::EnableWindow( (*iter)->GetCondHwnd(), bEnable );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
BOOL CPropertyDataWindow2::_InitWindow( void )
|
||
|
{
|
||
|
|
||
|
if( FALSE == m_bInit )
|
||
|
{
|
||
|
WNDCLASSEX wc;
|
||
|
|
||
|
ZeroMemory( &wc, sizeof( WNDCLASSEX ) );
|
||
|
wc . cbSize = sizeof( WNDCLASSEX );
|
||
|
wc . style = 0;
|
||
|
wc . cbWndExtra = DLGWINDOWEXTRA;
|
||
|
wc . hInstance = g_hInstance;
|
||
|
wc . lpfnWndProc = m_wndProc;
|
||
|
wc . lpszClassName = m_szClassName;
|
||
|
|
||
|
if( 0 == RegisterClassEx( &wc ) )
|
||
|
{
|
||
|
return FALSE;
|
||
|
}
|
||
|
|
||
|
if( NULL == (m_hwnd = CreateDialogParam( g_hInstance, MAKEINTRESOURCE( m_IDD ), m_hwndParent, NULL/*(DLGPROC)m_wndProc*/, 0 ) ) )
|
||
|
{
|
||
|
ErrorMessage( TEXT("CPropertyDataWindow2::_InitWindow"), GetLastError() );
|
||
|
}
|
||
|
|
||
|
m_bInit = TRUE;
|
||
|
}
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
BOOL CPropertyDataWindow2::_SizeWindow( int X, int Y, int Width, int Height )
|
||
|
{
|
||
|
GetClientRect( m_hwnd, &m_rect );
|
||
|
return SetWindowPos( m_hwnd, // handle to window
|
||
|
HWND_TOP, // placement-order handle
|
||
|
X, // horizontal position
|
||
|
Y, // vertical position
|
||
|
Width, // width
|
||
|
Height, // height
|
||
|
0 // window-positioning flags
|
||
|
);
|
||
|
}
|
||
|
|
||
|
void CPropertyDataWindow2::_PrepScrollBars()
|
||
|
{
|
||
|
RECT clientRect;
|
||
|
GetClientRect( m_hwnd, &clientRect );
|
||
|
|
||
|
int iTotalHeight = (m_rect.bottom - m_rect.top);
|
||
|
int iVisible = clientRect.bottom - clientRect.top;
|
||
|
|
||
|
if( iTotalHeight <= iVisible )
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
SCROLLINFO ScrollInfo;
|
||
|
ScrollInfo . cbSize = sizeof( SCROLLINFO );
|
||
|
ScrollInfo . fMask = SIF_ALL;
|
||
|
ScrollInfo . nMin = 0;
|
||
|
ScrollInfo . nMax = iTotalHeight;
|
||
|
// Make the scroll bar scroll 4/5th of a screen per page
|
||
|
ScrollInfo . nPage = MulDiv( iVisible, 4, 5 );
|
||
|
ScrollInfo . nPos = 0;
|
||
|
SetScrollInfo( m_hwnd, SB_VERT, &ScrollInfo, 0 );
|
||
|
}
|
||
|
|
||
|
void CPropertyDataWindow2::AddControl( CControlID *pControlID )
|
||
|
{
|
||
|
m_specialControlList.push_front( pControlID );
|
||
|
}
|
||
|
|
||
|
void CPropertyDataWindow2::ConnectControlsToCheck( UINT idCheck, UINT uCount, ... )
|
||
|
{
|
||
|
HWND hwndCheck = GetDlgItem( m_hwnd, idCheck );
|
||
|
PSUBDATA pSubData = new SUBDATA;
|
||
|
pSubData -> proc = SubclassWindow( hwndCheck, wndProcForCheckTiedToEdit );
|
||
|
|
||
|
va_list ap;
|
||
|
va_start( ap, uCount );
|
||
|
|
||
|
while( uCount )
|
||
|
{
|
||
|
uCount--;
|
||
|
CControlID *pControlID = va_arg( ap, CControlID * );
|
||
|
m_condList.push_front( pControlID );
|
||
|
|
||
|
switch( pControlID->GetType() )
|
||
|
{
|
||
|
case CControlID::STATIC:
|
||
|
case CControlID::CHECK:
|
||
|
case CControlID::SLIDER:
|
||
|
case CControlID::EDIT:
|
||
|
case CControlID::EDIT_NUM:
|
||
|
case CControlID::COMBO:
|
||
|
{
|
||
|
HWND hwnd = GetDlgItem( m_hwnd, pControlID->GetID() );
|
||
|
pSubData->list.push_front( hwnd );
|
||
|
break;
|
||
|
}
|
||
|
default:
|
||
|
OutputDebugString( TEXT("CPropertyDataWindow2::ConnectControlsToCheck: unknown CControlID::type\n") );
|
||
|
break;
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
SetWindowLong( hwndCheck, GWL_USERDATA, (long)pSubData );
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
BOOL CPropertyDataWindow2::WriteStringValue
|
||
|
(
|
||
|
LPCTSTR szKeyName,
|
||
|
LPCTSTR szValue
|
||
|
)
|
||
|
{
|
||
|
TCHAR szFile[MAX_PATH];
|
||
|
|
||
|
//
|
||
|
// We SAVE settings to the file on the finish page.
|
||
|
//
|
||
|
g_pWiz->m_FinishSheet.GetFilePane()->GetPathAndFile(szFile);
|
||
|
|
||
|
return(WritePrivateProfileString(SECTION_SETTINGS, szKeyName,
|
||
|
szValue, szFile));
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
BOOL CPropertyDataWindow2::WriteNumberValue
|
||
|
(
|
||
|
LPCTSTR szKeyName,
|
||
|
int nValue
|
||
|
)
|
||
|
{
|
||
|
TCHAR szValue[MAX_DIGITS];
|
||
|
TCHAR szFile[MAX_PATH];
|
||
|
|
||
|
//
|
||
|
// We SAVE settings to the file on the finish page.
|
||
|
//
|
||
|
g_pWiz->m_FinishSheet.GetFilePane()->GetPathAndFile(szFile);
|
||
|
|
||
|
wsprintf(szValue, "%d", nValue);
|
||
|
return(WritePrivateProfileString(SECTION_SETTINGS, szKeyName,
|
||
|
szValue, szFile));
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
void CPropertyDataWindow2::ReadStringValue
|
||
|
(
|
||
|
LPCTSTR szKeyName,
|
||
|
LPTSTR szValue,
|
||
|
UINT cchMax
|
||
|
)
|
||
|
{
|
||
|
TCHAR szFile[MAX_PATH];
|
||
|
|
||
|
//
|
||
|
// We READ settings from the file on the intro page.
|
||
|
//
|
||
|
g_pWiz->m_IntroSheet.GetFilePane()->GetPathAndFile(szFile);
|
||
|
|
||
|
GetPrivateProfileString(SECTION_SETTINGS, szKeyName,
|
||
|
TEXT(""), szValue, cchMax, szFile);
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
void CPropertyDataWindow2::ReadNumberValue
|
||
|
(
|
||
|
LPCTSTR szKeyName,
|
||
|
int * pnValue
|
||
|
)
|
||
|
{
|
||
|
TCHAR szFile[MAX_PATH];
|
||
|
|
||
|
//
|
||
|
// We READ settings from the file on the intro page.
|
||
|
//
|
||
|
g_pWiz->m_IntroSheet.GetFilePane()->GetPathAndFile(szFile);
|
||
|
|
||
|
*pnValue = GetPrivateProfileInt(SECTION_SETTINGS, szKeyName,
|
||
|
0, szFile);
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
void CPropertyDataWindow2::ReadSettings()
|
||
|
{
|
||
|
list< CControlID *>::const_iterator it;
|
||
|
|
||
|
_ReadCheckSettings();
|
||
|
|
||
|
for( it = m_condList.begin(); it != m_condList.end(); it++ )
|
||
|
{
|
||
|
_ReadCheckSetting( (*it)->GetCondID() );
|
||
|
switch( (*it)->GetType() )
|
||
|
{
|
||
|
case CControlID::STATIC:
|
||
|
break;
|
||
|
|
||
|
case CControlID::EDIT:
|
||
|
case CControlID::EDIT_NUM:
|
||
|
_ReadEditSetting( (*it)->GetID() );
|
||
|
break;
|
||
|
case CControlID::CHECK:
|
||
|
_ReadCheckSetting( (*it)->GetID() );
|
||
|
break;
|
||
|
case CControlID::COMBO:
|
||
|
_ReadComboSetting( (*it)->GetID() );
|
||
|
break;
|
||
|
case CControlID::SLIDER:
|
||
|
_ReadSliderSetting( (*it) );
|
||
|
break;
|
||
|
default:
|
||
|
OutputDebugString( TEXT("CPropertyDataWindow2::ReadSettings: unknown CControlID::type\n") );
|
||
|
assert( 0 );
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
for( it = m_specialControlList.begin(); it != m_specialControlList.end(); it++ )
|
||
|
{
|
||
|
switch( (*it)->GetType() )
|
||
|
{
|
||
|
case CControlID::STATIC:
|
||
|
break;
|
||
|
|
||
|
case CControlID::EDIT:
|
||
|
case CControlID::EDIT_NUM:
|
||
|
_ReadEditSetting( (*it)->GetID() );
|
||
|
break;
|
||
|
case CControlID::CHECK:
|
||
|
_ReadCheckSetting( (*it)->GetID() );
|
||
|
break;
|
||
|
case CControlID::COMBO:
|
||
|
_ReadComboSetting( (*it)->GetID() );
|
||
|
break;
|
||
|
case CControlID::SLIDER:
|
||
|
_ReadSliderSetting( (*it) );
|
||
|
break;
|
||
|
default:
|
||
|
OutputDebugString( TEXT("CPropertyDataWindow2::ReadSettings: unknown CControlID::type\n") );
|
||
|
assert( 0 );
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
BOOL CPropertyDataWindow2::WriteSettings()
|
||
|
{
|
||
|
list< CControlID *>::const_iterator it;
|
||
|
|
||
|
_WriteCheckSettings();
|
||
|
|
||
|
for( it = m_condList.begin(); it != m_condList.end(); it++ )
|
||
|
{
|
||
|
_WriteCheckSetting( (*it)->GetCondID() );
|
||
|
switch( (*it)->GetType() )
|
||
|
{
|
||
|
case CControlID::EDIT:
|
||
|
case CControlID::EDIT_NUM:
|
||
|
_WriteEditSetting( (*it)->GetID() );
|
||
|
break;
|
||
|
case CControlID::CHECK:
|
||
|
_WriteCheckSetting( (*it)->GetID() );
|
||
|
break;
|
||
|
case CControlID::COMBO:
|
||
|
_WriteComboSetting( (*it)->GetID() );
|
||
|
break;
|
||
|
case CControlID::SLIDER:
|
||
|
_WriteSliderSetting( (*it)->GetID() );
|
||
|
break;
|
||
|
case CControlID::STATIC:
|
||
|
break;
|
||
|
|
||
|
default:
|
||
|
OutputDebugString( TEXT("CPropertyDataWindow2::WriteSettings: unknown CControlID::type\n") );
|
||
|
assert( 0 );
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
for( it = m_specialControlList.begin(); it != m_specialControlList.end(); it++ )
|
||
|
{
|
||
|
switch( (*it)->GetType() )
|
||
|
{
|
||
|
case CControlID::EDIT:
|
||
|
case CControlID::EDIT_NUM:
|
||
|
_WriteEditSetting( (*it)->GetID() );
|
||
|
break;
|
||
|
case CControlID::CHECK:
|
||
|
_WriteCheckSetting( (*it)->GetID() );
|
||
|
break;
|
||
|
case CControlID::COMBO:
|
||
|
_WriteComboSetting( (*it)->GetID() );
|
||
|
break;
|
||
|
case CControlID::SLIDER:
|
||
|
_WriteSliderSetting( (*it)->GetID() );
|
||
|
break;
|
||
|
case CControlID::STATIC:
|
||
|
break;
|
||
|
default:
|
||
|
OutputDebugString( TEXT("CPropertyDataWindow2::WriteSettings: unknown CControlID::type\n") );
|
||
|
assert( 0 );
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
void CPropertyDataWindow2::_ReadEditSetting( UINT EditID )
|
||
|
{
|
||
|
TCHAR szKeyName[8];
|
||
|
TCHAR szSetting[512];
|
||
|
|
||
|
wsprintf( szKeyName, TEXT("%d"), EditID );
|
||
|
|
||
|
ReadStringValue(szKeyName, szSetting, CCHMAX(szSetting));
|
||
|
SetEditData(EditID, szSetting);
|
||
|
}
|
||
|
|
||
|
|
||
|
BOOL CPropertyDataWindow2::_WriteEditSetting( UINT EditID )
|
||
|
{
|
||
|
BOOL fSuccess;
|
||
|
int iLen = GetEditDataLen( EditID ) + 1;
|
||
|
LPTSTR szData = new TCHAR[ iLen ];
|
||
|
GetEditData( EditID, szData, iLen );
|
||
|
|
||
|
TCHAR szKeyName[ 8 ];
|
||
|
wsprintf(szKeyName, TEXT("%d"), EditID);
|
||
|
|
||
|
fSuccess = WriteStringValue(szKeyName, szData);
|
||
|
|
||
|
delete [] szData;
|
||
|
|
||
|
return(fSuccess);
|
||
|
}
|
||
|
|
||
|
|
||
|
void CPropertyDataWindow2::_ReadIntSetting( UINT ID, int *pData )
|
||
|
{
|
||
|
TCHAR szKeyName[ 8 ];
|
||
|
|
||
|
wsprintf( szKeyName, TEXT("%d"), ID );
|
||
|
|
||
|
ReadNumberValue(szKeyName, pData);
|
||
|
}
|
||
|
|
||
|
|
||
|
BOOL CPropertyDataWindow2::_WriteIntSetting( UINT ID, int data )
|
||
|
{
|
||
|
TCHAR szKeyName[ 8 ];
|
||
|
|
||
|
wsprintf( szKeyName, TEXT("%d"), ID );
|
||
|
|
||
|
return(WriteNumberValue(szKeyName, data));
|
||
|
}
|
||
|
|
||
|
|
||
|
void CPropertyDataWindow2::_ReadSliderSetting( CControlID *pControlID )
|
||
|
{
|
||
|
int iPos;
|
||
|
UINT ID = pControlID->GetID();
|
||
|
|
||
|
_ReadIntSetting( ID, &iPos);
|
||
|
|
||
|
//
|
||
|
// HACK FOR AV BANDWIDTH -- TrackBars are limited to WORD-sized values
|
||
|
// for range. So the registry has the real value (bits/sec) but we
|
||
|
// represent it in NMRK UI as (kbits/sec).
|
||
|
//
|
||
|
iPos /= 1000;
|
||
|
|
||
|
TrackBar_SetPos( GetDlgItem( m_hwnd, ID ), TRUE, iPos);
|
||
|
|
||
|
TCHAR szPos[ MAX_DIGITS ];
|
||
|
wsprintf( szPos, TEXT("%u"), iPos );
|
||
|
Static_SetText( GetDlgItem( m_hwnd, pControlID->GetStaticID()), szPos );
|
||
|
}
|
||
|
|
||
|
|
||
|
BOOL CPropertyDataWindow2::_WriteSliderSetting( UINT ID )
|
||
|
{
|
||
|
int iPos;
|
||
|
|
||
|
//
|
||
|
// HACK FOR AV BANDWIDTH -- TrackBars are limited to WORD-sized values
|
||
|
// for range. So the registry has the real value (bits/sec) but we
|
||
|
// represent it in NMRK UI as (kbits/sec).
|
||
|
//
|
||
|
|
||
|
iPos = TrackBar_GetPos(GetDlgItem(m_hwnd, ID));
|
||
|
iPos *= 1000;
|
||
|
|
||
|
return _WriteIntSetting( ID, iPos);
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
void CPropertyDataWindow2::_ReadComboSetting( UINT ID )
|
||
|
{
|
||
|
int iSelected;
|
||
|
|
||
|
_ReadIntSetting( ID, &iSelected );
|
||
|
|
||
|
HWND hwndCombo = GetDlgItem( m_hwnd, ID );
|
||
|
ComboBox_SetCurSel( hwndCombo, iSelected );
|
||
|
}
|
||
|
|
||
|
|
||
|
BOOL CPropertyDataWindow2::_WriteComboSetting( UINT ID )
|
||
|
{
|
||
|
return _WriteIntSetting( ID, ComboBox_GetCurSel( GetDlgItem( m_hwnd, ID ) ) );
|
||
|
}
|
||
|
|
||
|
|
||
|
void CPropertyDataWindow2::_ReadCheckSetting( UINT ID )
|
||
|
{
|
||
|
TCHAR szKeyName[ 8 ];
|
||
|
int nValue;
|
||
|
|
||
|
wsprintf( szKeyName, TEXT("%d"), ID );
|
||
|
ReadNumberValue(szKeyName, &nValue);
|
||
|
|
||
|
CheckDlgButton(m_hwnd, ID, nValue);
|
||
|
}
|
||
|
|
||
|
|
||
|
BOOL CPropertyDataWindow2::_WriteCheckSetting( UINT ID )
|
||
|
{
|
||
|
TCHAR szKeyName[ MAX_DIGITS ];
|
||
|
|
||
|
wsprintf( szKeyName, TEXT("%d"), ID );
|
||
|
|
||
|
return(WriteNumberValue(szKeyName, IsDlgButtonChecked(m_hwnd, ID)));
|
||
|
}
|
||
|
|
||
|
|
||
|
void CPropertyDataWindow2::_ReadCheckSettings()
|
||
|
{
|
||
|
for( list< UINT >::const_iterator it = m_checkIDList.begin(); it != m_checkIDList.end(); it++ )
|
||
|
{
|
||
|
_ReadCheckSetting(*it);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
BOOL CPropertyDataWindow2::_WriteCheckSettings()
|
||
|
{
|
||
|
for( list< UINT >::const_iterator it = m_checkIDList.begin(); it != m_checkIDList.end(); it++ )
|
||
|
{
|
||
|
if (!_WriteCheckSetting(*it))
|
||
|
{
|
||
|
return FALSE;
|
||
|
}
|
||
|
}
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
void CPropertyDataWindow2::MapControlsToRegKeys( void )
|
||
|
{
|
||
|
|
||
|
if( 0 != ms_ValueMap.size() )
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
UINT CurrentID;
|
||
|
// File Transfer
|
||
|
CurrentID = IDC_PREVENT_THE_USER_FROM_SENDING_FILES;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_FILETRANSFER_SEND;
|
||
|
|
||
|
CurrentID = IDC_PREVENT_THE_USER_FROM_RECEIVING_FILES;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_FILETRANSFER_RECEIVE;
|
||
|
|
||
|
CurrentID = IDC_EDIT_MAXIMUM_SIZE_OF_SENT_FILES;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_MAX_SENDFILESIZE;
|
||
|
|
||
|
// App Sharing
|
||
|
CurrentID = IDC_DISABLE_ALL_SHARING_FEATURES;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_APP_SHARING;
|
||
|
|
||
|
CurrentID = IDC_DISABLE_WEBDIR;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_WEBDIR;
|
||
|
|
||
|
CurrentID = IDC_DISABLE_WEBDIR_GK;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_WEBDIR;
|
||
|
|
||
|
CurrentID = IDC_PREVENT_SHARING;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_SHARING;
|
||
|
|
||
|
CurrentID = IDC_PREVENT_SHARING_DESKTOP;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_DESKTOP_SHARING;
|
||
|
|
||
|
CurrentID = IDC_PREVENT_SHARING_TRUECOLOR;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_TRUECOLOR_SHARING;
|
||
|
|
||
|
CurrentID = IDC_PREVENT_SHARING_EXPLORER;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_EXPLORER_SHARING;
|
||
|
|
||
|
CurrentID = IDC_PREVENT_SHARING_DOS;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_MSDOS_SHARING;
|
||
|
|
||
|
CurrentID = IDC_PREVENT_SHARING_CONTROL;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_ALLOW_CONTROL;
|
||
|
|
||
|
CurrentID = IDC_DISABLE_RDS_ON_ALL;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_LOCAL_MACHINE;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_RDS;
|
||
|
|
||
|
CurrentID = IDC_DISABLE_RDS_ON_WIN9X;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_LOCAL_MACHINE;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_RDS_WIN9X;
|
||
|
|
||
|
|
||
|
// Audio
|
||
|
CurrentID = IDC_CREATE_AN_AUDIO_LOG_FILE; // HKLM
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_LOCAL_MACHINE;
|
||
|
ms_KeyMap[ CurrentID ] = DEBUG_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_RETAIL_LOG;
|
||
|
|
||
|
CurrentID = IDC_CHECK_MUTE_SPEAKER_BY_DEFAULT;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = AUDIO_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_SPKMUTE;
|
||
|
|
||
|
CurrentID = IDC_CHECK_MUTE_MICROPHONE_BY_DEFAULT;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = AUDIO_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_RECMUTE;
|
||
|
|
||
|
CurrentID = IDC_ENABLE_DIRECT_SOUND;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = AUDIO_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_DIRECTSOUND;
|
||
|
|
||
|
CurrentID = IDC_NOCHANGE_DIRECT_SOUND;
|
||
|
ms_ClassMap[CurrentID] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[CurrentID] = POLICIES_KEY;
|
||
|
ms_ValueMap[CurrentID] = REGVAL_POL_NOCHANGE_DIRECTSOUND;
|
||
|
|
||
|
CurrentID = IDC_PREVENT_THE_USER_FROM_USING_AUDIO;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_AUDIO;
|
||
|
|
||
|
CurrentID = IDC_DISABLE_FULL_DUPLEX_AUDIO;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_FULLDUPLEX;
|
||
|
|
||
|
// Video
|
||
|
CurrentID = IDC_DISABLE_SENDING_VIDEO;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_VIDEO_SEND;
|
||
|
|
||
|
CurrentID = IDC_DISABLE_RECIEVING_VIDEO;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_VIDEO_RECEIVE;
|
||
|
|
||
|
// Notifications
|
||
|
|
||
|
//
|
||
|
// REMOTE OLDER WARNING is GONE
|
||
|
//
|
||
|
CurrentID = IDC_REQUIRE_COMPLETE_AUTHENTICATION;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_LOCAL_MACHINE;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_INCOMPLETE_CERTS;
|
||
|
|
||
|
CurrentID = IDC_EDIT_SET_RDN_FOR_REQUIRED_CA;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_LOCAL_MACHINE;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_ISSUER;
|
||
|
|
||
|
// Directory Services
|
||
|
CurrentID = IDC_ALLOW_USER_TO_USE_DIRECTORY_SERVICES;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = CONFERENCING_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_DONT_LOGON_ULS;
|
||
|
|
||
|
CurrentID = IDC_PREVENT_THE_USER_FROM_ADDING_NEW_SERVERS;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_ADDING_NEW_ULS;
|
||
|
|
||
|
// Chat
|
||
|
CurrentID = IDC_DISABLE_CHAT;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_CHAT;
|
||
|
|
||
|
|
||
|
// Whiteboard
|
||
|
//
|
||
|
// BOGUS BUGBUG LAURABU
|
||
|
// We have OLD and NEW whiteboard
|
||
|
//
|
||
|
CurrentID = IDC_DISABLE_2XWHITEBOARD;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_OLDWHITEBOARD;
|
||
|
|
||
|
CurrentID = IDC_DISABLE_WHITEBOARD;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_NEWWHITEBOARD;
|
||
|
|
||
|
// Online Support
|
||
|
CurrentID = IDC_EDIT_SET_URL_FOR_INTERNAL_SUPPORT_PAGE;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_INTRANET_SUPPORT_URL;
|
||
|
|
||
|
CurrentID = IDC_SHOW_THE_ONLINE_SUPPORT_PAGE_THE_FIRST_TIME_NETMEETING_STARTS;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_SHOW_FIRST_TIME_URL;
|
||
|
|
||
|
// Options Dialog
|
||
|
CurrentID = IDC_DISABLE_THE_GENERAL_OPTIONS_PAGE;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_GENERALPAGE;
|
||
|
|
||
|
CurrentID = IDC_DISABLE_THE_ADVANCED_CALLING_BUTTON;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_ADVANCEDCALLING;
|
||
|
|
||
|
CurrentID = IDC_DISABLE_THE_SECURITY_OPTIONS_PAGE;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_SECURITYPAGE;
|
||
|
|
||
|
CurrentID = IDC_DISABLE_THE_AUDIO_OPTIONS_PAGE;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_AUDIOPAGE;
|
||
|
|
||
|
CurrentID = IDC_DISABLE_THE_VIDEO_OPTIONS_PAGE;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_VIDEOPAGE;
|
||
|
|
||
|
CurrentID = IDC_DISABLE_AUTOACCEPT;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_AUTOACCEPTCALLS;
|
||
|
|
||
|
CurrentID = IDC_PERSIST_AUTOACCEPT;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_PERSIST_AUTOACCEPTCALLS;
|
||
|
|
||
|
// Security RADIO Options
|
||
|
CurrentID = IDC_RADIO_SECURITY_DEFAULT;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_SECURITY;
|
||
|
|
||
|
CurrentID = IDC_RADIO_SECURITY_REQUIRED;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_SECURITY;
|
||
|
|
||
|
CurrentID = IDC_RADIO_SECURITY_DISABLED;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_SECURITY;
|
||
|
|
||
|
// Call mode RADIO options
|
||
|
CurrentID = IDC_RADIO_CALLMODE_DIRECT;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = CONFERENCING_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_CALLING_MODE;
|
||
|
|
||
|
CurrentID = IDC_RADIO_CALLMODE_GATEKEEPER;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = CONFERENCING_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_CALLING_MODE;
|
||
|
|
||
|
|
||
|
// Gateway
|
||
|
CurrentID = IDC_CHECK_GATEWAY;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = CONFERENCING_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_USE_H323_GATEWAY;
|
||
|
|
||
|
CurrentID = IDC_EDIT_GATEWAY;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = CONFERENCING_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_H323_GATEWAY;
|
||
|
|
||
|
// Gatekeeper addressing RADIO options
|
||
|
CurrentID = IDC_RADIO_GKMODE_ACCOUNT;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = CONFERENCING_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_GK_METHOD;
|
||
|
|
||
|
CurrentID = IDC_RADIO_GKMODE_PHONE;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = CONFERENCING_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_GK_METHOD;
|
||
|
|
||
|
CurrentID = IDC_RADIO_GKMODE_BOTH;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = CONFERENCING_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_GK_METHOD;
|
||
|
|
||
|
|
||
|
|
||
|
CurrentID = IDC_EDIT_GATEKEEPER;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = CONFERENCING_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_GK_SERVER;
|
||
|
|
||
|
CurrentID = IDC_CHECK_NOCHANGECALLMODE;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_NOCHANGECALLMODE;
|
||
|
|
||
|
// AV Throughput
|
||
|
CurrentID = IDC_SLIDE_AV_THROUGHPUT;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_POL_MAX_BANDWIDTH;
|
||
|
|
||
|
// AutoConf
|
||
|
CurrentID = IDC_CHECK_AUTOCONFIG_CLIENTS;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_AUTOCONF_USE;
|
||
|
|
||
|
CurrentID = IDC_AUTOCONF_URL;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = POLICIES_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_AUTOCONF_CONFIGFILE;
|
||
|
|
||
|
// Network Speed RADIO options
|
||
|
CurrentID = IDC_RADIO_NETSPEED_144;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = AUDIO_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_TYPICALBANDWIDTH;
|
||
|
|
||
|
CurrentID = IDC_RADIO_NETSPEED_288;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = AUDIO_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_TYPICALBANDWIDTH;
|
||
|
|
||
|
CurrentID = IDC_RADIO_NETSPEED_ISDN;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = AUDIO_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_TYPICALBANDWIDTH;
|
||
|
|
||
|
CurrentID = IDC_RADIO_NETSPEED_LAN;
|
||
|
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER;
|
||
|
ms_KeyMap[ CurrentID ] = AUDIO_KEY;
|
||
|
ms_ValueMap[ CurrentID ] = REGVAL_TYPICALBANDWIDTH;
|
||
|
|
||
|
}
|
||
|
|
||
|
BOOL CPropertyDataWindow2::WriteToINF( HANDLE hFile, BOOL bCheckValues )
|
||
|
{
|
||
|
list< UINT > condList;
|
||
|
list< CControlID *>::const_iterator it;
|
||
|
|
||
|
_WriteChecksToINF( hFile, bCheckValues );
|
||
|
|
||
|
for( it = m_condList.begin(); it != m_condList.end(); it++ )
|
||
|
{
|
||
|
if( ms_ValueMap.find( (*it)->GetCondID() ) != ms_ValueMap.end() )
|
||
|
{
|
||
|
list< UINT >::const_iterator i;
|
||
|
if( (i = find( condList.begin(), condList.end(), (*it)->GetCondID() ) ) == condList.end() )
|
||
|
{
|
||
|
condList.push_front( (*it)->GetCondID() );
|
||
|
_WriteCheckToINF( hFile, (*it)->GetCondID(), bCheckValues );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if( bCheckValues)
|
||
|
{
|
||
|
bCheckValues = Button_GetCheck( (*it)->GetCondHwnd() );
|
||
|
}
|
||
|
switch( (*it)->GetType() )
|
||
|
{
|
||
|
case CControlID::STATIC:
|
||
|
break;
|
||
|
|
||
|
case CControlID::EDIT_NUM:
|
||
|
if( ms_ValueMap.find( (*it)->GetID() ) != ms_ValueMap.end() )
|
||
|
{
|
||
|
_WriteEditNumToINF( hFile, (*it)->GetID(), bCheckValues );
|
||
|
}
|
||
|
break;
|
||
|
case CControlID::EDIT:
|
||
|
if( ms_ValueMap.find( (*it)->GetID() ) != ms_ValueMap.end() )
|
||
|
{
|
||
|
_WriteEditToINF( hFile, (*it)->GetID(), bCheckValues );
|
||
|
}
|
||
|
break;
|
||
|
case CControlID::CHECK:
|
||
|
if( ms_ValueMap.find( (*it)->GetID() ) != ms_ValueMap.end() )
|
||
|
{
|
||
|
_WriteCheckToINF( hFile, (*it)->GetID(), bCheckValues );
|
||
|
}
|
||
|
break;
|
||
|
case CControlID::COMBO:
|
||
|
if( ms_ValueMap.find( (*it)->GetID() ) != ms_ValueMap.end() )
|
||
|
{
|
||
|
_WriteComboToINF( hFile, (*it)->GetID(), bCheckValues );
|
||
|
}
|
||
|
break;
|
||
|
case CControlID::SLIDER:
|
||
|
if( ms_ValueMap.find( (*it)->GetID() ) != ms_ValueMap.end() )
|
||
|
{
|
||
|
_WriteSliderToINF( hFile, (*it)->GetID(), bCheckValues );
|
||
|
}
|
||
|
break;
|
||
|
default:
|
||
|
OutputDebugString( TEXT("CPropertyDataWindow2::WriteToINF: unknown CControlID::type\n") );
|
||
|
assert( 0 );
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
for( it = m_specialControlList.begin(); it != m_specialControlList.end(); it++ )
|
||
|
{
|
||
|
switch( (*it)->GetType() )
|
||
|
{
|
||
|
case CControlID::STATIC:
|
||
|
break;
|
||
|
|
||
|
case CControlID::EDIT_NUM:
|
||
|
if( ms_ValueMap.find( (*it)->GetID() ) != ms_ValueMap.end() )
|
||
|
{
|
||
|
_WriteEditNumToINF( hFile, (*it)->GetID(), bCheckValues );
|
||
|
}
|
||
|
break;
|
||
|
case CControlID::EDIT:
|
||
|
if( ms_ValueMap.find( (*it)->GetID() ) != ms_ValueMap.end() )
|
||
|
{
|
||
|
_WriteEditToINF( hFile, (*it)->GetID(), bCheckValues );
|
||
|
}
|
||
|
break;
|
||
|
case CControlID::CHECK:
|
||
|
if( ms_ValueMap.find( (*it)->GetID() ) != ms_ValueMap.end() )
|
||
|
{
|
||
|
_WriteCheckToINF( hFile, (*it)->GetID(), bCheckValues );
|
||
|
}
|
||
|
break;
|
||
|
case CControlID::COMBO:
|
||
|
if( ms_ValueMap.find( (*it)->GetID() ) != ms_ValueMap.end() )
|
||
|
{
|
||
|
_WriteComboToINF( hFile, (*it)->GetID(), bCheckValues );
|
||
|
}
|
||
|
break;
|
||
|
case CControlID::SLIDER:
|
||
|
if( ms_ValueMap.find( (*it)->GetID() ) != ms_ValueMap.end() )
|
||
|
{
|
||
|
_WriteSliderToINF( hFile, (*it)->GetID(), bCheckValues );
|
||
|
}
|
||
|
break;
|
||
|
default:
|
||
|
OutputDebugString( TEXT("CPropertyDataWindow2::WriteToINF: unknown CControlID::type\n") );
|
||
|
assert( 0 );
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
void CPropertyDataWindow2::_WriteCheckToINF( HANDLE hFile, UINT ID, BOOL bCheckValues )
|
||
|
{
|
||
|
HWND hwndButton;
|
||
|
BOOL fIsRadioButton;
|
||
|
DWORD dwWrite;
|
||
|
|
||
|
hwndButton = GetDlgItem(m_hwnd, ID);
|
||
|
switch (GetWindowLong(hwndButton, GWL_STYLE) & 0x0F)
|
||
|
{
|
||
|
case BS_RADIOBUTTON:
|
||
|
case BS_AUTORADIOBUTTON:
|
||
|
fIsRadioButton = TRUE;
|
||
|
break;
|
||
|
|
||
|
default:
|
||
|
fIsRadioButton = FALSE;
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
if (bCheckValues && Button_GetCheck(hwndButton))
|
||
|
{
|
||
|
if (fIsRadioButton)
|
||
|
{
|
||
|
//
|
||
|
// For radio buttons, real value is in user data
|
||
|
//
|
||
|
dwWrite = GetWindowLong(hwndButton, GWL_USERDATA);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
dwWrite = TRUE;
|
||
|
}
|
||
|
|
||
|
CPolicyData(ms_ClassMap[ID], ms_KeyMap[ID], ms_ValueMap[ID], dwWrite).
|
||
|
SaveToINFFile(hFile);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
//
|
||
|
// If this is a radio button, do not write the unchecked ones out.
|
||
|
//
|
||
|
if (!fIsRadioButton)
|
||
|
{
|
||
|
dwWrite = FALSE;
|
||
|
|
||
|
CPolicyData(ms_ClassMap[ ID ],
|
||
|
ms_KeyMap[ ID ],
|
||
|
ms_ValueMap[ ID ],
|
||
|
dwWrite).SaveToINFFile( hFile );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
void CPropertyDataWindow2::_WriteChecksToINF( HANDLE hFile, BOOL bCheckValues )
|
||
|
{
|
||
|
list< UINT >::const_iterator it;
|
||
|
|
||
|
for (it = m_checkIDList.begin(); it != m_checkIDList.end(); it++)
|
||
|
{
|
||
|
if (ms_ValueMap.find(*it) != ms_ValueMap.end())
|
||
|
{
|
||
|
_WriteCheckToINF(hFile, *it, bCheckValues);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
void CPropertyDataWindow2::_WriteEditNumToINF( HANDLE hFile, UINT EditID, BOOL bCheckValues )
|
||
|
{
|
||
|
if( bCheckValues )
|
||
|
{
|
||
|
CPolicyData( ms_ClassMap[ EditID ],
|
||
|
ms_KeyMap[ EditID ],
|
||
|
ms_ValueMap[ EditID ],
|
||
|
(DWORD) GetDlgItemInt( m_hwnd, EditID, NULL, FALSE ) ).SaveToINFFile( hFile );
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
_DeleteKey( hFile, EditID );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void CPropertyDataWindow2::_WriteEditToINF( HANDLE hFile, UINT EditID, BOOL bCheckValues )
|
||
|
{
|
||
|
if( bCheckValues )
|
||
|
{
|
||
|
int iLen = GetEditDataLen( EditID ) + 1;
|
||
|
LPTSTR szData = new TCHAR[ iLen ];
|
||
|
GetEditData( EditID, szData, iLen );
|
||
|
|
||
|
CPolicyData( ms_ClassMap[ EditID ],
|
||
|
ms_KeyMap[ EditID ],
|
||
|
ms_ValueMap[ EditID ],
|
||
|
szData ).SaveToINFFile( hFile );
|
||
|
delete [] szData;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
_DeleteKey( hFile, EditID );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
void CPropertyDataWindow2::_WriteSliderToINF( HANDLE hFile, UINT SliderID, BOOL bCheckValues )
|
||
|
{
|
||
|
if( bCheckValues )
|
||
|
{
|
||
|
int iPos;
|
||
|
|
||
|
iPos = TrackBar_GetPos(GetDlgItem(m_hwnd, SliderID));
|
||
|
iPos *= 1000;
|
||
|
CPolicyData( ms_ClassMap[ SliderID ],
|
||
|
ms_KeyMap[ SliderID ],
|
||
|
ms_ValueMap[ SliderID ],
|
||
|
(DWORD)iPos
|
||
|
).SaveToINFFile( hFile );
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
_DeleteKey( hFile, SliderID );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void CPropertyDataWindow2::_WriteComboToINF( HANDLE hFile, UINT ComboID, BOOL bCheckValues )
|
||
|
{
|
||
|
if( bCheckValues )
|
||
|
{
|
||
|
HWND hwndCombo = GetDlgItem( m_hwnd, ComboID );
|
||
|
|
||
|
CPolicyData( ms_ClassMap[ ComboID ],
|
||
|
ms_KeyMap[ ComboID ],
|
||
|
ms_ValueMap[ ComboID ],
|
||
|
(DWORD) ComboBox_GetItemData( hwndCombo, ComboBox_GetCurSel( hwndCombo ) )
|
||
|
).SaveToINFFile( hFile );
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
_DeleteKey( hFile, ComboID );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void CPropertyDataWindow2::_DeleteKey( HANDLE hFile, UINT ID )
|
||
|
{
|
||
|
CPolicyData( ms_ClassMap[ ID ],
|
||
|
ms_KeyMap[ ID ],
|
||
|
ms_ValueMap[ ID ],
|
||
|
CPolicyData::OpDelete()
|
||
|
).SaveToINFFile( hFile );
|
||
|
|
||
|
}
|
||
|
|
||
|
int CPropertyDataWindow2::Spew( HWND hwndList, int iStartLine )
|
||
|
{
|
||
|
list< UINT >::const_iterator it;
|
||
|
for( it = m_checkIDList.begin(); it != m_checkIDList.end(); it++ )
|
||
|
{
|
||
|
if( Button_GetCheck( GetDlgItem( m_hwnd, *it ) ) )
|
||
|
{
|
||
|
HWND hwndButton = GetDlgItem( m_hwnd, *it );
|
||
|
// 2 is 1 for '\0' and 1 for '\t'
|
||
|
int iButtonTextLen = Button_GetTextLength( hwndButton ) + 2;
|
||
|
LPTSTR szButtonText = new TCHAR[ iButtonTextLen ];
|
||
|
szButtonText[0] = '\t';
|
||
|
Button_GetText( hwndButton, &(szButtonText[1]), iButtonTextLen - 1 );
|
||
|
ListBox_InsertString( hwndList, iStartLine, szButtonText );
|
||
|
iStartLine++;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
list< CControlID *>::const_iterator i;
|
||
|
if( m_condList.size() )
|
||
|
{
|
||
|
for( i = m_condList.begin(); i != m_condList.end(); i++ )
|
||
|
{
|
||
|
if( Button_GetCheck( (*i)->GetCondHwnd() ) )
|
||
|
{
|
||
|
iStartLine = _Spew( hwndList, iStartLine, *i );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if( m_specialControlList.size() )
|
||
|
{
|
||
|
for( i = m_specialControlList.begin(); i != m_specialControlList.end(); i++ )
|
||
|
{
|
||
|
iStartLine = _Spew( hwndList, iStartLine, *i );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return iStartLine;
|
||
|
}
|
||
|
|
||
|
int CPropertyDataWindow2::_Spew( HWND hwndList, int iStartLine, CControlID *pControlID )
|
||
|
{
|
||
|
switch( pControlID->GetType() )
|
||
|
{
|
||
|
case CControlID::EDIT_NUM:
|
||
|
case CControlID::EDIT:
|
||
|
{
|
||
|
int iEditLen = GetEditDataLen( pControlID->GetID() ) + 1;
|
||
|
if( iEditLen )
|
||
|
{
|
||
|
int iLen = Button_GetTextLength( pControlID->GetCondHwnd() ) + 1;
|
||
|
|
||
|
LPTSTR sz = new TCHAR[ iLen];
|
||
|
Button_GetText( pControlID->GetCondHwnd(), sz, iLen );
|
||
|
|
||
|
LPTSTR szData = new TCHAR[ iEditLen];
|
||
|
GetEditData( pControlID->GetID(), szData, iEditLen );
|
||
|
|
||
|
// 2 is: 1 for ' ' and 1 for '\t'
|
||
|
LPTSTR szBuff = new TCHAR[ iLen + iEditLen + 2];
|
||
|
wsprintf( szBuff, TEXT("\t%s %s"), sz, szData );
|
||
|
ListBox_InsertString( hwndList, iStartLine, szBuff );
|
||
|
iStartLine++;
|
||
|
delete [] szData;
|
||
|
delete [] szBuff;
|
||
|
delete [] sz;
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case CControlID::CHECK:
|
||
|
{
|
||
|
HWND hwnd = GetDlgItem( m_hwnd, pControlID->GetID() );
|
||
|
if( Button_GetCheck( hwnd ) )
|
||
|
{
|
||
|
int iLen = Button_GetTextLength( hwnd ) + 2;
|
||
|
|
||
|
LPTSTR sz = new TCHAR[ iLen];
|
||
|
sz[0] = '\t';
|
||
|
Button_GetText( hwnd, &sz[1], iLen );
|
||
|
|
||
|
ListBox_InsertString( hwndList, iStartLine, sz );
|
||
|
iStartLine++;
|
||
|
|
||
|
delete [] sz;
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case CControlID::COMBO:
|
||
|
{
|
||
|
HWND hwnd = GetDlgItem( m_hwnd, pControlID->GetID() );
|
||
|
int iCurSel = ComboBox_GetCurSel( hwnd );
|
||
|
int iLen = ComboBox_GetLBTextLen( hwnd, iCurSel ) + 2;
|
||
|
LPTSTR sz = new TCHAR[ iLen ];
|
||
|
sz[0] = '\t';
|
||
|
ComboBox_GetLBText( hwnd, iCurSel, &(sz[1]) );
|
||
|
|
||
|
ListBox_InsertString( hwndList, iStartLine, sz );
|
||
|
iStartLine++;
|
||
|
|
||
|
delete [] sz;
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case CControlID::SLIDER:
|
||
|
{
|
||
|
HWND hwnd = GetDlgItem( m_hwnd, pControlID->GetID() );
|
||
|
TCHAR sz[ MAX_DIGITS ];
|
||
|
wsprintf( sz, TEXT("\t%d kbits/s"), TrackBar_GetPos( hwnd ) );
|
||
|
|
||
|
ListBox_InsertString( hwndList, iStartLine, sz );
|
||
|
iStartLine++;
|
||
|
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case CControlID::STATIC:
|
||
|
break;
|
||
|
|
||
|
default:
|
||
|
OutputDebugString( TEXT("CPropertyDataWindow2::_Spew: unknown CControlID::type\n") );
|
||
|
assert( 0 );
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
return iStartLine;
|
||
|
}
|