|
|
#include "precomp.h"
#include "resource.h"
#include "PropWnd2.h"
#include "DsPropWnd2.h"
#include "NmAkWiz.h"
#include "EditServer.h"
#include "WndProcs.h"
//#include "poldata.h"
#include "nmakreg.h"
#include <algorithm>
const int CDsPropWnd2::MAXSERVERS = 15; const TCHAR c_szMSServer[] = TEXT("logon.netmeeting.microsoft.com");
CWebViewInfo* GetWebViewInfo() { static CWebViewInfo g_wvi; return(&g_wvi); }
BOOL IsMSServer(LPCTSTR szServer) { return(0 == lstrcmp(szServer, c_szMSServer)); }
// Read the WebView information, but only once
void ReadWebViewSettings(CPropertyDataWindow2 *pData) { static BOOL g_bRead = FALSE;
if (g_bRead) { return; }
CWebViewInfo *pWebView = GetWebViewInfo();
pData->ReadStringValue(KEYNAME_WEBVIEWNAME , pWebView->m_szWebViewName , CCHMAX(pWebView->m_szWebViewName )); pData->ReadStringValue(KEYNAME_WEBVIEWURL , pWebView->m_szWebViewURL , CCHMAX(pWebView->m_szWebViewURL )); pData->ReadStringValue(KEYNAME_WEBVIEWSERVER, pWebView->m_szWebViewServer, CCHMAX(pWebView->m_szWebViewServer));
g_bRead = TRUE; }
void WriteWebViewSettings(CPropertyDataWindow2 *pData) { CWebViewInfo *pWebView = GetWebViewInfo();
// If the WebView is the default, write blanks to the file
LPCTSTR szWVName = pWebView->m_szWebViewName ; LPCTSTR szWVURL = pWebView->m_szWebViewURL ; LPCTSTR szWVServer = pWebView->m_szWebViewServer; if (IsMSServer(szWVServer)) { szWVName = szWVURL = szWVServer = TEXT(""); }
pData->WriteStringValue(KEYNAME_WEBVIEWNAME , szWVName ); pData->WriteStringValue(KEYNAME_WEBVIEWURL , szWVURL ); pData->WriteStringValue(KEYNAME_WEBVIEWSERVER, szWVServer); }
void WriteWebViewToINF(HANDLE hFile, BOOL bWebViewAllowed) { CWebViewInfo *pWebView = GetWebViewInfo();
// If the WebView is the default, write blanks to the file
if (!bWebViewAllowed || IsMSServer(pWebView->m_szWebViewServer)) { CPolicyData( CPolicyData::eKeyType_HKEY_CURRENT_USER, POLICIES_KEY, REGVAL_POL_INTRANET_WEBDIR_NAME, CPolicyData::OpDelete() ).SaveToINFFile( hFile ); CPolicyData( CPolicyData::eKeyType_HKEY_CURRENT_USER, POLICIES_KEY, REGVAL_POL_INTRANET_WEBDIR_URL, CPolicyData::OpDelete() ).SaveToINFFile( hFile ); CPolicyData( CPolicyData::eKeyType_HKEY_CURRENT_USER, POLICIES_KEY, REGVAL_POL_INTRANET_WEBDIR_SERVER, CPolicyData::OpDelete() ).SaveToINFFile( hFile ); } else { CPolicyData( CPolicyData::eKeyType_HKEY_CURRENT_USER, POLICIES_KEY, REGVAL_POL_INTRANET_WEBDIR_NAME, pWebView->m_szWebViewName ).SaveToINFFile( hFile ); CPolicyData( CPolicyData::eKeyType_HKEY_CURRENT_USER, POLICIES_KEY, REGVAL_POL_INTRANET_WEBDIR_URL, pWebView->m_szWebViewURL ).SaveToINFFile( hFile ); CPolicyData( CPolicyData::eKeyType_HKEY_CURRENT_USER, POLICIES_KEY, REGVAL_POL_INTRANET_WEBDIR_SERVER, pWebView->m_szWebViewServer ).SaveToINFFile( hFile ); } }
void CWebViewInfo::SetWebView(LPCTSTR szServer, LPCTSTR szName, LPCTSTR szURL) { lstrcpy(m_szWebViewServer, szServer); if (NULL != szName) { lstrcpy(m_szWebViewName, szName); } if (NULL != szURL) { lstrcpy(m_szWebViewURL, szURL); } }
CDsPropWnd2::CDsPropWnd2( HWND hwndParent, int iX, int iY, int iWidth, int iHeight ) : CPropertyDataWindow2( hwndParent, IDD_CHILDPAGE_ILSGATEWAY, TEXT("IDD_CHILDPAGE_ILSGATEWAY"), (WNDPROC) DsPropWndProc, 0, iX, iY, iWidth, iHeight, FALSE ) { SetWindowLong( m_hwnd, GWL_USERDATA, (long)this ); Edit_LimitText( GetDlgItem( m_hwnd, IDC_EDIT_NEW_SERVER ), MAX_PATH ); Edit_LimitText( GetDlgItem( m_hwnd, IDC_EDIT_GATEWAY ), MAX_PATH );
m_hwndList = GetDlgItem( m_hwnd, IDC_LIST_SERVERS );
ConnectControlsToCheck( IDC_CHECK_GATEWAY, 1, new CControlID(GetDlgItem(m_hwnd, IDC_CHECK_GATEWAY), IDC_CHECK_GATEWAY, IDC_EDIT_GATEWAY, CControlID::EDIT ) );
PrepSettings(FALSE); SetButtons(); }
CDsPropWnd2::~CDsPropWnd2() { deque< LPTSTR >::iterator it; for( it = m_serverDQ.begin(); it != m_serverDQ.end(); ++it ) { delete [] *it; } }
void CDsPropWnd2::QueryWizNext(void) { bool bWarned = false;
if (DirectoryEnabled()) { CWebViewInfo *pWebView = GetWebViewInfo(); if (('\0' == pWebView->m_szWebViewServer[0] || IsMSServer(pWebView->m_szWebViewServer)) && IsWebViewAllowed()) { // Just using default Web View information; see if the default
// server is there
for (int i=m_serverDQ.size()-1; ; --i) { if (i < 0) { // Got through the list without finding the default server
NmrkMessageBox(MAKEINTRESOURCE(IDS_WEBDIR_AUTOADD), NULL, MB_OK | MB_ICONINFORMATION); bWarned = true; break; }
if (IsMSServer(m_serverDQ.at(i))) { // Found the default server; no need to proceed
break; } } }
// Note that the MID may be automatically added even if users are not
// allowed to add servers
if (!bWarned && 0 == CountServers()) { if (AllowUserToAdd()) { NmrkMessageBox(MAKEINTRESOURCE(IDS_DSLIST_EMPTY), NULL, MB_OK | MB_ICONINFORMATION); } else { NmrkMessageBox(MAKEINTRESOURCE(IDS_DS_WILL_BE_EMPTY), NULL, MB_OK | MB_ICONINFORMATION); } } } }
LRESULT CALLBACK CDsPropWnd2::DsPropWndProc( HWND hwnd, UINT uiMsg, WPARAM wParam, LPARAM lParam ) { switch( uiMsg ) { case WM_VSCROLL: case WM_VKEYTOITEM: case WM_COMMAND: { CDsPropWnd2 * pPropWnd = (CDsPropWnd2 *)GetWindowLong( hwnd, GWL_USERDATA ); return pPropWnd->_WndProc( hwnd, uiMsg, wParam, lParam ); break; } default: { return DefWindowProc( hwnd, uiMsg, wParam, lParam ); break; } } }
BOOL CDsPropWnd2::DoCommand(WPARAM wParam, LPARAM lParam) { return(_WndProc(m_hwnd, WM_COMMAND, wParam, lParam)); }
LRESULT CALLBACK CDsPropWnd2::_WndProc( HWND hwnd, UINT uiMsg, WPARAM wParam, LPARAM lParam ) { switch( uiMsg ) { case WM_VSCROLL: { OnMsg_VScroll( hwnd, wParam ); return 0; break; } case WM_VKEYTOITEM: { if( m_serverDQ.size() ) { switch( LOWORD( wParam ) ) { case VK_DELETE: { _DeleteCurSel(); return 0; break; } } } break; } case WM_COMMAND: { switch (GET_WM_COMMAND_ID(wParam, lParam)) { case IDC_LIST_SERVERS: { switch (GET_WM_COMMAND_CMD(wParam, lParam)) { case LBN_SELCHANGE: { SetButtons(); return 0; break; }
case LBN_DBLCLK: { _EditCurSel(); return 0; break; } } break; }
case IDC_BUTTON_SET_AS_DEFAULT: { switch (GET_WM_COMMAND_CMD(wParam, lParam)) { case BN_CLICKED: { _SetAsDefault( ListBox_GetCurSel( m_hwndList ) ); return 0; break; } } break; }
case IDC_BUTTON_EDIT: { switch (GET_WM_COMMAND_CMD(wParam, lParam)) { case BN_CLICKED: { _EditCurSel(); return 0; break; } } break; }
case IDC_BUTTON_SET_WEBVIEW: { switch (GET_WM_COMMAND_CMD(wParam, lParam)) { case BN_CLICKED: { _EditCurSelWebView(); return 0; break; } } break; }
case IDC_BUTTON_REMOVE: { switch (GET_WM_COMMAND_CMD(wParam, lParam)) { case BN_CLICKED: { _DeleteCurSel(); return 0; break; } } break; }
case IDC_BUTTON_UP: { switch (GET_WM_COMMAND_CMD(wParam, lParam)) { case BN_CLICKED: { _MoveCurSel( -1 ); return 0; break; } } break; }
case IDC_BUTTON_DOWN: { switch (GET_WM_COMMAND_CMD(wParam, lParam)) { case BN_CLICKED: { _MoveCurSel( 1 ); return 0; break; } } break; }
case IDC_BUTTON_ADDDIRECTORYSERVER: { switch (GET_WM_COMMAND_CMD(wParam, lParam)) { case BN_CLICKED: { HWND hwndEdit = GetDlgItem( m_hwnd, IDC_EDIT_NEW_SERVER ); if( Edit_GetTextLength( hwndEdit ) ) { LPTSTR szServer = new TCHAR[ MAX_PATH ]; Edit_GetText( hwndEdit, szServer, MAX_PATH ); _AddServer( szServer ); Edit_SetText( hwndEdit, TEXT("") ); } else { NmrkMessageBox( MAKEINTRESOURCE(IDS_DSNAME_INVALID), NULL, MB_OK | MB_ICONEXCLAMATION ); }
return 0; break; } } break; }
case IDC_ALLOW_USER_TO_USE_DIRECTORY_SERVICES: { switch (GET_WM_COMMAND_CMD(wParam, lParam)) { case BN_CLICKED: { SetButtons(); return 0; break; } } break; }
case IDC_DISABLE_WEBDIR: { switch (GET_WM_COMMAND_CMD(wParam, lParam)) { case BN_CLICKED: { _UpdateServerList(); SetButtons(); return 0; break; } } break; } } break; } } return DefWindowProc( hwnd, uiMsg, wParam, lParam ); }
void CDsPropWnd2::SetButtons() { BOOL bEnable = DirectoryEnabled(); HWND hwndFocus = GetFocus(); BOOL bFocusEnabled = IsWindowEnabled(hwndFocus);
if( m_serverDQ.size() ) { int iCurSel = ListBox_GetCurSel( m_hwndList ); ::EnableWindow( GetDlgItem( m_hwnd, IDC_BUTTON_UP ), bEnable && 1 < iCurSel && m_defaultServer != iCurSel ); ::EnableWindow( GetDlgItem( m_hwnd, IDC_BUTTON_DOWN ), bEnable && (m_serverDQ.size() - 1) != iCurSel && m_defaultServer != iCurSel ); ::EnableWindow( GetDlgItem( m_hwnd, IDC_BUTTON_SET_AS_DEFAULT ), bEnable && iCurSel != m_defaultServer ); ::EnableWindow( GetDlgItem( m_hwnd, IDC_BUTTON_SET_WEBVIEW ), bEnable && IsWebViewAllowed() && !(IsWebView(iCurSel) && IsMSServer(GetWebViewInfo()->m_szWebViewServer)) ); ::EnableWindow( GetDlgItem( m_hwnd, IDC_BUTTON_EDIT ), bEnable ); ::EnableWindow( GetDlgItem( m_hwnd, IDC_BUTTON_REMOVE ), bEnable ); } else { ::EnableWindow( GetDlgItem( m_hwnd, IDC_BUTTON_SET_AS_DEFAULT ), FALSE ); ::EnableWindow( GetDlgItem( m_hwnd, IDC_BUTTON_SET_WEBVIEW ), FALSE ); ::EnableWindow( GetDlgItem( m_hwnd, IDC_BUTTON_EDIT ), FALSE ); ::EnableWindow( GetDlgItem( m_hwnd, IDC_BUTTON_REMOVE ), FALSE ); ::EnableWindow( GetDlgItem( m_hwnd, IDC_BUTTON_UP ), FALSE ); ::EnableWindow( GetDlgItem( m_hwnd, IDC_BUTTON_DOWN ), FALSE ); }
::EnableWindow( GetDlgItem( m_hwnd, IDC_BUTTON_ADDDIRECTORYSERVER ), bEnable && m_serverDQ.size() != MAXSERVERS ); ::EnableWindow( GetDlgItem( m_hwnd, IDC_EDIT_NEW_SERVER ), bEnable && m_serverDQ.size() != MAXSERVERS ); ::EnableWindow( GetDlgItem( m_hwnd, IDC_PREVENT_THE_USER_FROM_ADDING_NEW_SERVERS ), bEnable ); ::EnableWindow( GetDlgItem( m_hwnd, IDC_DISABLE_WEBDIR), bEnable); ::EnableWindow( m_hwndList, bEnable );
if (bFocusEnabled && !IsWindowEnabled(hwndFocus)) { // We seem to have disabled the focus window. Let's try to set the
// focus to an enabled window
if (IsWindowEnabled(m_hwndList)) { FORWARD_WM_NEXTDLGCTL(m_hwndParent, m_hwndList, TRUE, SendMessage); } else { FORWARD_WM_NEXTDLGCTL(m_hwndParent, FALSE, FALSE, SendMessage); } } }
void CDsPropWnd2::_AddServer( LPTSTR szServer ) { int iSize = m_serverDQ.size(); if( iSize > 0 && iSize < MAXSERVERS ) { int iCurSel = ListBox_GetCurSel( m_hwndList ); if( iCurSel == m_defaultServer ) { ++iCurSel; }
deque< LPTSTR >::iterator it = m_serverDQ.begin(); for( int i = 0; i < iCurSel; ++i ) { ++it; }
m_serverDQ.insert( it, szServer ); ListBox_InsertString( m_hwndList, iCurSel, szServer );
ListBox_SetCurSel( m_hwndList, iCurSel ); } else { m_serverDQ.push_front( szServer ); ListBox_InsertString( m_hwndList, 0, szServer ); _SetAsDefault( 0 ); } SetButtons(); }
void CDsPropWnd2::_MoveCurSel( int iPlaces ) { int iCurSel = ListBox_GetCurSel( m_hwndList ); int iNewPos = iCurSel + iPlaces;
if( iNewPos == m_defaultServer ) { _SetAsDefault( iCurSel ); } else if( iCurSel == m_defaultServer ) { _SetAsDefault( iNewPos ); } else { LPTSTR szCur = m_serverDQ.at( iCurSel ); LPTSTR szNew = m_serverDQ.at( iNewPos );
m_serverDQ.at( iCurSel ) = szNew; m_serverDQ.at( iNewPos ) = szCur;
if( iPlaces > 0 ) { ListBox_DeleteString( m_hwndList, iCurSel ); ListBox_InsertString( m_hwndList, iCurSel, m_serverDQ.at( iCurSel ) );
ListBox_DeleteString( m_hwndList, iNewPos ); ListBox_InsertString( m_hwndList, iNewPos, m_serverDQ.at( iNewPos ) ); } else { ListBox_DeleteString( m_hwndList, iNewPos ); ListBox_InsertString( m_hwndList, iNewPos, m_serverDQ.at( iNewPos ) );
ListBox_DeleteString( m_hwndList, iCurSel ); ListBox_InsertString( m_hwndList, iCurSel, m_serverDQ.at( iCurSel ) ); } } ListBox_SetCurSel( m_hwndList, iNewPos );
_UpdateServerList();
SetButtons(); }
void CDsPropWnd2::PrepSettings( BOOL fGkMode ) { if (g_pWiz->m_IntroSheet.GetFilePane()->OptionEnabled()) { ReadSettings(); } else { deque <LPTSTR>::iterator it; for( it = m_serverDQ.begin(); it != m_serverDQ.end(); ++it ) { delete [] *it; }
m_serverDQ.erase( m_serverDQ.begin(), m_serverDQ.end() );
LPTSTR szServerName = NULL;
szServerName = new TCHAR[ MAX_PATH ]; lstrcpy( szServerName, c_szMSServer ); m_serverDQ.push_back( szServerName );
m_defaultServer = 0;
Button_SetCheck( GetDlgItem( m_hwnd, IDC_ALLOW_USER_TO_USE_DIRECTORY_SERVICES ), TRUE ); Button_SetCheck( GetDlgItem( m_hwnd, IDC_PREVENT_THE_USER_FROM_ADDING_NEW_SERVERS ), FALSE ); Button_SetCheck( GetDlgItem( m_hwnd, IDC_DISABLE_WEBDIR), FALSE);
Button_SetCheck( GetDlgItem( m_hwnd, IDC_CHECK_GATEWAY), FALSE); }
ListBox_ResetContent( m_hwndList );
// Add Items to listbox
deque< LPTSTR >::const_iterator it; int i = 0; for( it = m_serverDQ.begin(); it != m_serverDQ.end(); ++it, ++i ) { ListBox_InsertString( m_hwndList, i, *it ); }
if( m_serverDQ.size() ) { // This will do an _UpdateServerList for us
_SetAsDefault( m_defaultServer ); } }
void CDsPropWnd2::_UpdateServerList() { int iSel = ListBox_GetCurSel(m_hwndList);
// We only want to find one WebView
BOOL bFoundWebView = FALSE;
for (int index=ListBox_GetCount(m_hwndList)-1; index>=0; --index) { TCHAR szNewText[MAX_PATH]; lstrcpy(szNewText, m_serverDQ.at(index));
BOOL bWebView = FALSE; if (!bFoundWebView) { bWebView = IsWebView(szNewText); }
if (IsDefault(index)) { lstrcat(szNewText, TEXT(" (Default)")); } if (bWebView) { bFoundWebView = TRUE;
if (IsWebViewAllowed()) { lstrcat(szNewText, TEXT(" (WebView)")); } }
TCHAR szOldText[MAX_PATH]; ListBox_GetText(m_hwndList, index, szOldText); if (lstrcmp(szOldText, szNewText) != 0) { ListBox_DeleteString(m_hwndList, index); ListBox_InsertString(m_hwndList, index, szNewText); if (iSel == index) { ListBox_SetCurSel(m_hwndList, iSel); } } }
if (!bFoundWebView && !IsMSServer(GetWebViewInfo()->m_szWebViewServer)) { SetWebView(c_szMSServer); _UpdateServerList(); } }
void CDsPropWnd2::_EditCurSel() { int iCurSel = ListBox_GetCurSel( m_hwndList ); LPTSTR szOldServer = m_serverDQ.at( iCurSel ); CEditServer* pEditServer = new CEditServer( m_hwnd, szOldServer, MAX_PATH ); if( pEditServer->ShowDialog() == IDOK ) { LPTSTR szServer = new TCHAR[ MAX_PATH ]; lstrcpy( szServer, pEditServer->GetServer() ); m_serverDQ.at( iCurSel ) = szServer;
if (IsWebView(szOldServer)) { SetWebView(szServer); }
_UpdateServerList();
delete [] szOldServer; }
ListBox_SetCurSel( m_hwndList, iCurSel ); }
void CDsPropWnd2::SetWebView(LPCTSTR szServer, LPCTSTR szName, LPCTSTR szURL) { GetWebViewInfo()->SetWebView(szServer, szName, szURL); _UpdateServerList(); }
void CDsPropWnd2::_EditCurSelWebView() { int iCurSel = ListBox_GetCurSel( m_hwndList ); LPTSTR szServer = m_serverDQ.at( iCurSel );
if (IsMSServer(szServer)) { if (IDYES == NmrkMessageBox(MAKEINTRESOURCE(IDS_DEFAULT_WEBVIEW), MAKEINTRESOURCE(IDS_EDIT_WEBVIEW), MB_ICONEXCLAMATION | MB_YESNO)) { SetWebView(szServer, TEXT(""), TEXT("")); SetButtons(); } return; }
CWebViewInfo *pWebView = GetWebViewInfo();
LPCTSTR szWVName = TEXT(""); LPCTSTR szWVURL = TEXT(""); if (IsWebView(szServer)) { szWVName = pWebView->m_szWebViewName; szWVURL = pWebView->m_szWebViewURL; }
CEditWebView* pEditWebView = new CEditWebView( m_hwnd, szServer, szWVName, szWVURL, MAX_PATH ); pEditWebView->SetEditServer(FALSE); if( pEditWebView->ShowDialog() == IDOK ) { SetWebView(szServer, pEditWebView->GetName(), pEditWebView->GetURL()); SetButtons(); }
delete pEditWebView; }
BOOL CDsPropWnd2::_SetAsDefault( int iIndex ) { if( iIndex < 0 || iIndex > m_serverDQ.size() ) { return FALSE; }
// Move default server to top of deque
LPTSTR szNewZero = m_serverDQ.at( iIndex );
m_serverDQ.erase( m_serverDQ.begin() + iIndex ); ListBox_DeleteString( m_hwndList, iIndex );
ListBox_InsertString( m_hwndList, 0, szNewZero ); m_serverDQ.push_front( szNewZero ); m_defaultServer = 0;
ListBox_SetCurSel( m_hwndList, 0 );
_UpdateServerList();
SetButtons();
return TRUE; }
BOOL CDsPropWnd2::_DeleteCurSel() { int iCurSel = ListBox_GetCurSel( m_hwndList );
LPTSTR szKill = m_serverDQ.at( iCurSel );
TCHAR szBuffer[ MAX_PATH ]; LoadString( IDS_ARE_YOU_SURE_YOU_WISH_TO_REMOVE, szBuffer, CCHMAX( szBuffer ) );
TCHAR lpszMessage[ MAX_PATH ]; wsprintf( lpszMessage, szBuffer, szKill );
if( IDNO == NmrkMessageBox(lpszMessage, MAKEINTRESOURCE(IDS_VERIFY), MB_YESNO | MB_ICONQUESTION ) ) { return FALSE; }
m_serverDQ.erase( m_serverDQ.begin() + iCurSel );
delete [] szKill; ListBox_DeleteString( m_hwndList, iCurSel );
if( m_defaultServer == iCurSel ) { if( m_serverDQ.size() > iCurSel ) { _SetAsDefault( iCurSel ); } else { _SetAsDefault( iCurSel - 1 ); } } else { if( m_serverDQ.size() > iCurSel ) { ListBox_SetCurSel( m_hwndList, iCurSel ); } else if( iCurSel > 0 ) { ListBox_SetCurSel( m_hwndList, iCurSel - 1); } }
// Make sure all the WebView information is up-to-date
_UpdateServerList();
// Bug fix - I do not get a LBN_SELCHANGE message all the time when I want one
// even though the string selected changes. So just for that I gotta do this
SetButtons();
return TRUE; }
void CDsPropWnd2::ReadSettings( void ) { TCHAR szValue[ MAX_PATH ]; TCHAR szServerName[ MAX_PATH ];
for( int i = 0; i < MAXSERVERS; i++ ) { wsprintf( szValue, KEYNAME_ILSSERVER, i ); ReadStringValue(szValue, szServerName, CCHMAX(szServerName)); if (!szServerName[0]) break;
LPTSTR szServer = new TCHAR[ lstrlen( szServerName ) + 1 ]; lstrcpy( szServer, szServerName ); m_serverDQ.push_back( szServer ); }
ReadWebViewSettings(this);
ReadNumberValue(KEYNAME_ILSDEFAULT, &m_defaultServer);
_ReadCheckSetting( IDC_ALLOW_USER_TO_USE_DIRECTORY_SERVICES ); _ReadCheckSetting( IDC_PREVENT_THE_USER_FROM_ADDING_NEW_SERVERS ); _ReadCheckSetting( IDC_DISABLE_WEBDIR);
_ReadCheckSetting( IDC_CHECK_GATEWAY ); _ReadEditSetting ( IDC_EDIT_GATEWAY ); }
void CDsPropWnd2::WriteSettings( BOOL fGkMode ) { TCHAR szValue[ MAX_PATH ]; deque< LPTSTR >::const_iterator it; int i = 0; for( it = m_serverDQ.begin(); it != m_serverDQ.end(); ++it ) { wsprintf( szValue, KEYNAME_ILSSERVER, i ); WriteStringValue(szValue, (LPTSTR)*it); i++; }
while( i < MAXSERVERS ) { wsprintf( szValue, KEYNAME_ILSSERVER, i ); WriteStringValue(szValue, TEXT("")); i++; }
WriteWebViewSettings(this);
WriteNumberValue(KEYNAME_ILSDEFAULT, m_defaultServer);
_WriteCheckSetting( IDC_ALLOW_USER_TO_USE_DIRECTORY_SERVICES ); _WriteCheckSetting( IDC_PREVENT_THE_USER_FROM_ADDING_NEW_SERVERS ); _WriteCheckSetting( IDC_DISABLE_WEBDIR );
_WriteCheckSetting( IDC_CHECK_GATEWAY ); _WriteEditSetting( IDC_EDIT_GATEWAY ); }
BOOL CDsPropWnd2::WriteToINF(BOOL fGkMode, HANDLE hFile ) { TCHAR szValue[ MAX_PATH ]; deque< LPTSTR >::const_iterator it; int i = 0; for( it = m_serverDQ.begin(); it != m_serverDQ.end(); ++it, ++i ) { wsprintf( szValue, TEXT("Name%d"), i ); CPolicyData( CPolicyData::eKeyType_HKEY_CURRENT_USER, DIR_MRU_KEY, szValue, *it ).SaveToINFFile( hFile ); }
CPolicyData( CPolicyData::eKeyType_HKEY_CURRENT_USER, DIR_MRU_KEY, TEXT("Count"), (DWORD)m_serverDQ.size() ).SaveToINFFile( hFile );
while( i < MAXSERVERS ) { wsprintf( szValue, TEXT("Name%d"), i ); CPolicyData( CPolicyData::eKeyType_HKEY_CURRENT_USER, DIR_MRU_KEY, szValue, CPolicyData::OpDelete() ).SaveToINFFile( hFile ); i++; }
if( m_serverDQ.size() ) { CPolicyData( CPolicyData::eKeyType_HKEY_CURRENT_USER, ISAPI_CLIENT_KEY, REGVAL_SERVERNAME, m_serverDQ.at( m_defaultServer ) ).SaveToINFFile( hFile ); }
//
// Directory stuff
//
BOOL bCheckValues = !fGkMode && DirectoryEnabled(); if (!fGkMode) { WriteWebViewToINF(hFile, IsWebViewAllowed()); _WriteCheckToINF( hFile, IDC_DISABLE_WEBDIR, bCheckValues); }
CPolicyData( ms_ClassMap[ IDC_ALLOW_USER_TO_USE_DIRECTORY_SERVICES ], ms_KeyMap[ IDC_ALLOW_USER_TO_USE_DIRECTORY_SERVICES ], ms_ValueMap[ IDC_ALLOW_USER_TO_USE_DIRECTORY_SERVICES ], !bCheckValues ).SaveToINFFile( hFile );
CPolicyData( CPolicyData::eKeyType_HKEY_CURRENT_USER, POLICIES_KEY, REGVAL_POL_NO_DIRECTORY_SERVICES, !bCheckValues ).SaveToINFFile( hFile );
_WriteCheckToINF( hFile, IDC_PREVENT_THE_USER_FROM_ADDING_NEW_SERVERS, bCheckValues );
//
// Gateway stuff
//
bCheckValues = !fGkMode & GatewayEnabled();
_WriteCheckToINF( hFile, IDC_CHECK_GATEWAY, bCheckValues); _WriteEditToINF(hFile, IDC_EDIT_GATEWAY, bCheckValues);
return TRUE; }
int CDsPropWnd2::SpewToListBox( HWND hwndList, int iStartLine ) { if( DirectoryEnabled() ) { if( m_serverDQ.size() ) { ListBox_InsertString( hwndList, iStartLine, TEXT("Adding Directory Servers:") ); iStartLine++;
deque< LPTSTR >::const_iterator it; for( it = m_serverDQ.begin(); it != m_serverDQ.end(); ++it ) { LPTSTR sz = new TCHAR[ lstrlen( *it ) + 2 ]; sz[ 0 ] = '\t'; sz[1] = '\0'; lstrcat( sz, *it );
ListBox_InsertString( hwndList, iStartLine, sz ); iStartLine++;
delete [] sz; }
ListBox_InsertString( hwndList, iStartLine, TEXT("Default Server:") ); iStartLine++;
{ LPTSTR sz = new TCHAR[ lstrlen( m_serverDQ.at( m_defaultServer ) ) + 2 ]; sz[ 0 ] = '\t'; sz[1] = '\0'; lstrcat( sz, m_serverDQ.at( m_defaultServer ) );
ListBox_InsertString( hwndList, iStartLine, sz ); iStartLine++;
delete [] sz; } }
if( !AllowUserToAdd() ) { ListBox_InsertString( hwndList, iStartLine, TEXT("Prevent users from adding new servers to the list you provide") ); iStartLine++; }
if (!IsWebViewAllowed()) { ListBox_InsertString( hwndList, iStartLine, TEXT("Prevent users from viewing web directory")); iStartLine++; } } else { ListBox_InsertString( hwndList, iStartLine, TEXT("Disable Directory Services") ); iStartLine++; }
if (GatewayEnabled()) { TCHAR szGateway[MAX_PATH];
ListBox_InsertString( hwndList, iStartLine, TEXT("Adding Gateway server:") ); iStartLine++;
szGateway[0] = '\t'; GetDlgItemText(m_hwnd, IDC_EDIT_GATEWAY, szGateway+1, CCHMAX(szGateway)-1); ListBox_InsertString( hwndList, iStartLine, szGateway); iStartLine++; }
return iStartLine; }
//
// GATEKEEPER STUFF
//
CGkPropWnd2::CGkPropWnd2( HWND hwndParent, int iX, int iY, int iWidth, int iHeight ) : CPropertyDataWindow2( hwndParent, IDD_CHILDPAGE_GATEKEEPER, TEXT("IDD_CHILDPAGE_GATEKEEPER"), (WNDPROC) GkPropWndProc, 0, iX, iY, iWidth, iHeight, FALSE ) { SetWindowLong( m_hwnd, GWL_USERDATA, (long)this );
HWND hwndChild;
// Calling method radio buttons
hwndChild = GetDlgItem(m_hwnd, IDC_RADIO_GKMODE_ACCOUNT); SetWindowLong( hwndChild, GWL_USERDATA, GK_LOGON_USING_ACCOUNT );
hwndChild = GetDlgItem(m_hwnd, IDC_RADIO_GKMODE_PHONE); SetWindowLong(hwndChild, GWL_USERDATA, GK_LOGON_USING_PHONENUM);
hwndChild = GetDlgItem(m_hwnd, IDC_RADIO_GKMODE_BOTH); SetWindowLong(hwndChild, GWL_USERDATA, GK_LOGON_USING_BOTH);
Edit_LimitText( GetDlgItem( m_hwnd, IDC_EDIT_GATEKEEPER ), MAX_PATH ); ConnectControlsToCheck( IDC_CHECK_GATEKEEPER, 1, new CControlID(GetDlgItem(m_hwnd, IDC_CHECK_GATEKEEPER), IDC_CHECK_GATEKEEPER, IDC_EDIT_GATEKEEPER, CControlID::EDIT ) );
PrepSettings(FALSE);
SetButtons(); }
CGkPropWnd2::~CGkPropWnd2() { }
void CGkPropWnd2::_EditCurSelWebView() { CWebViewInfo *pWebView = GetWebViewInfo();
CEditWebView* pEditWebView = new CEditWebView( m_hwnd, pWebView->m_szWebViewServer, pWebView->m_szWebViewName, pWebView->m_szWebViewURL, MAX_PATH ); if( pEditWebView->ShowDialog() == IDOK ) { SetWebView(pEditWebView->GetServer(), pEditWebView->GetName(), pEditWebView->GetURL()); SetButtons(); }
delete pEditWebView; }
LRESULT CALLBACK CGkPropWnd2::GkPropWndProc( HWND hwnd, UINT uiMsg, WPARAM wParam, LPARAM lParam ) { switch( uiMsg ) { case WM_VSCROLL: case WM_VKEYTOITEM: case WM_COMMAND: { CGkPropWnd2 * pPropWnd = (CGkPropWnd2 *)GetWindowLong( hwnd, GWL_USERDATA ); return pPropWnd->_WndProc( hwnd, uiMsg, wParam, lParam ); break; } default: { return DefWindowProc( hwnd, uiMsg, wParam, lParam ); break; } } }
BOOL CGkPropWnd2::DoCommand(WPARAM wParam, LPARAM lParam) { return(_WndProc(m_hwnd, WM_COMMAND, wParam, lParam)); }
LRESULT CALLBACK CGkPropWnd2::_WndProc( HWND hwnd, UINT uiMsg, WPARAM wParam, LPARAM lParam ) { switch( uiMsg ) { case WM_VSCROLL: { OnMsg_VScroll( hwnd, wParam ); return 0; break; }
case WM_COMMAND: if (GET_WM_COMMAND_CMD(wParam, lParam) == BN_CLICKED) { switch (GET_WM_COMMAND_ID(wParam, lParam)) { case IDC_BUTTON_SET_WEBVIEW: _EditCurSelWebView(); break;
case IDC_DISABLE_WEBDIR_GK: SetButtons(); break; } } break; } return DefWindowProc( hwnd, uiMsg, wParam, lParam ); }
void CGkPropWnd2::SetButtons() { ::EnableWindow(GetDlgItem(m_hwnd, IDC_BUTTON_SET_WEBVIEW), !IsDlgButtonChecked(m_hwnd, IDC_DISABLE_WEBDIR_GK)); }
void CGkPropWnd2::PrepSettings( BOOL fGkMode ) { if (g_pWiz->m_IntroSheet.GetFilePane()->OptionEnabled()) { ReadSettings(); } else { TCHAR szText[1];
szText[0] = 0; SetDlgItemText(m_hwnd, IDC_EDIT_GATEKEEPER, szText);
Button_SetCheck(GetDlgItem(m_hwnd, IDC_CHECK_GATEKEEPER), FALSE); Button_SetCheck(GetDlgItem(m_hwnd, IDC_RADIO_GKMODE_BOTH), BST_CHECKED); } }
void CGkPropWnd2::ReadSettings( void ) { int iRadio;
_ReadEditSetting ( IDC_EDIT_GATEKEEPER ); Button_SetCheck(GetDlgItem(m_hwnd, IDC_CHECK_GATEKEEPER), (GetWindowTextLength(GetDlgItem(m_hwnd, IDC_EDIT_GATEKEEPER)) != 0));
for (iRadio = IDC_RADIO_GKMODE_FIRST; iRadio < IDC_RADIO_GKMODE_MAX; iRadio++) { _ReadCheckSetting(iRadio); }
ReadWebViewSettings(this);
_ReadCheckSetting( IDC_DISABLE_WEBDIR_GK); }
void CGkPropWnd2::WriteSettings( BOOL fGkMode ) { int iRadio;
_WriteEditSetting( IDC_EDIT_GATEKEEPER );
for (iRadio = IDC_RADIO_GKMODE_FIRST; iRadio < IDC_RADIO_GKMODE_MAX; iRadio++) { _WriteCheckSetting(iRadio); }
WriteWebViewSettings(this);
_WriteCheckSetting( IDC_DISABLE_WEBDIR_GK ); }
BOOL CGkPropWnd2::WriteToINF( BOOL fGkMode, HANDLE hFile ) { int iRadio;
_WriteEditToINF( hFile, IDC_EDIT_GATEKEEPER, fGkMode && IsDlgButtonChecked(m_hwnd, IDC_CHECK_GATEKEEPER));
for (iRadio = IDC_RADIO_GKMODE_FIRST; iRadio < IDC_RADIO_GKMODE_MAX; iRadio++) { _WriteCheckToINF(hFile, iRadio, fGkMode); }
if (fGkMode) { WriteWebViewToINF(hFile, IsWebViewAllowed()); _WriteCheckToINF( hFile, IDC_DISABLE_WEBDIR_GK, fGkMode ); }
return TRUE; }
int CGkPropWnd2::SpewToListBox( HWND hwndList, int iStartLine ) { TCHAR szTemp[MAX_PATH]; int iRadio;
if (IsDlgButtonChecked(m_hwnd, IDC_CHECK_GATEKEEPER)) { ListBox_InsertString(hwndList, iStartLine, TEXT("Adding Gatekeeper server:") ); iStartLine++;
szTemp[0] = '\t'; GetDlgItemText(m_hwnd, IDC_EDIT_GATEKEEPER, szTemp+1, CCHMAX(szTemp)-1); ListBox_InsertString(hwndList, iStartLine, szTemp); iStartLine++; }
ListBox_InsertString(hwndList, iStartLine, TEXT("Gatekeeper addressing mode:") ); iStartLine++;
for (iRadio = IDC_RADIO_GKMODE_FIRST; iRadio < IDC_RADIO_GKMODE_MAX; iRadio++) { if (IsDlgButtonChecked(m_hwnd, iRadio)) { szTemp[0] = '\t'; GetDlgItemText(m_hwnd, iRadio, szTemp+1, CCHMAX(szTemp)-1); ListBox_InsertString(hwndList, iStartLine, szTemp); iStartLine++;
break; } }
return(iStartLine); }
void CGkPropWnd2::QueryWizNext(void) {
}
void CGkPropWnd2::SetWebView(LPCTSTR szServer, LPCTSTR szName, LPCTSTR szURL) { GetWebViewInfo()->SetWebView(szServer, szName, szURL); }
|