|
|
//----------------------------------------------------------------------------
//
// Copyright (c) 1997-1999 Microsoft Corporation
// All rights reserved.
//
// File Name:
// client.c
//
// Description:
//
//
//----------------------------------------------------------------------------
#include "pch.h"
#include "resource.h"
//----------------------------------------------------------------------------
//
// Function: AddComponentToListView
//
// Purpose:
//
// Arguments: IN HWND hwnd - handle to the dialog
// NETWORK_COMPONENT *pNetComponent - pointer to the component to
// be added to the list view
//
// Returns: VOID
//
//----------------------------------------------------------------------------
VOID AddComponentToListView( IN HWND hwnd, IN NETWORK_COMPONENT *pNetComponent ) {
HWND hClientListView = GetDlgItem( hwnd, IDC_SELECT_CLIENT_LIST );
if ( WizGlobals.iPlatform == PLATFORM_PERSONAL ) { if( pNetComponent->dwPlatforms & PERSONAL_INSTALL ) {
InsertEntryIntoListView( hClientListView, (LPARAM) pNetComponent );
} } else if( WizGlobals.iPlatform == PLATFORM_WORKSTATION ) {
if( pNetComponent->dwPlatforms & WORKSTATION_INSTALL ) {
InsertEntryIntoListView( hClientListView, (LPARAM) pNetComponent );
} } else {
if( pNetComponent->dwPlatforms & SERVER_INSTALL ) {
InsertEntryIntoListView( hClientListView, (LPARAM) pNetComponent );
} } }
//----------------------------------------------------------------------------
//
// Function: InitSelectClientListView
//
// Purpose:
//
//----------------------------------------------------------------------------
VOID InitSelectClientListView( HWND hwnd, HINSTANCE hInst ) {
LV_ITEM lvI; NETWORK_COMPONENT *pNetComponent;
for( pNetComponent = NetSettings.NetComponentsList; pNetComponent; pNetComponent = pNetComponent->next ) {
if( pNetComponent->bInstalled == FALSE && pNetComponent->ComponentType == CLIENT ) {
//
// If it is not a sysprep then just go ahead and add it to the
// list view. If we are doing a sysprep, check to see if this
// component is supported by sysprep to see if we should add it
// or not
//
if( WizGlobals.iProductInstall == PRODUCT_SYSPREP ) { if( pNetComponent->bSysprepSupport ) { AddComponentToListView( hwnd, pNetComponent ); } } else {
AddComponentToListView( hwnd, pNetComponent );
}
}
}
SetListViewSelection( hwnd, IDC_SELECT_CLIENT_LIST, 0 );
}
//----------------------------------------------------------------------------
//
// Function: OnClientOk
//
// Purpose:
//
// Arguments: IN HWND hwnd - handle to the dialog
//
// Returns: VOID
//
//----------------------------------------------------------------------------
static VOID OnClientOk( IN HWND hwnd ) {
LV_ITEM lvI;
// ISSUE-2002/02/28-stelo- if there is no item selected and the user clicks OK the dialog should NOT close
//
// see if there is an item selected
//
if(GetSelectedItemFromListView(hwnd, IDC_SELECT_CLIENT_LIST, &lvI)) {
NETWORK_COMPONENT *pEntry = (NETWORK_COMPONENT *)lvI.lParam;
pEntry->bInstalled = TRUE;
//
// return a 1 to show an item was actually added
//
EndDialog(hwnd, 1);
} else {
//
// return a 0 to show no items were added because the list is empty
//
EndDialog(hwnd, 0);
}
}
//----------------------------------------------------------------------------
//
// Function: NotifyHandler
//
// Purpose:
//
// Arguments: IN HWND hwnd - handle to the dialog
// IN WPARAM wParam -
// IN LPARAM lParam -
//
// Returns: BOOL - whether the message was handled or not
//
//----------------------------------------------------------------------------
static BOOL NotifyHandler( IN HWND hwnd, IN WPARAM wParam, IN LPARAM lParam ) {
LV_DISPINFO *pLvdi = (LV_DISPINFO *)lParam; NM_LISTVIEW *pNm = (NM_LISTVIEW *)lParam; NETWORK_COMPONENT *pListViewString = (NETWORK_COMPONENT *)(pLvdi->item.lParam); BOOL bStatus = TRUE;
if( wParam == IDC_SELECT_CLIENT_LIST ) {
switch( pLvdi->hdr.code ) { case LVN_GETDISPINFO: pLvdi->item.pszText = pListViewString->StrComponentName; break; }
switch( pNm->hdr.code ) {
case NM_DBLCLK: {
NMITEMACTIVATE *pNmItemActivate = (NMITEMACTIVATE *) lParam;
//
// see if the user has double clicked inside the list view
//
if( pNm->hdr.idFrom == IDC_SELECT_CLIENT_LIST ) {
//
// Make sure they actually clicked on an item and not just
// empty space
//
if( pNmItemActivate->iItem != -1 ) { OnClientOk( hwnd ); }
} break;
}
default: bStatus = FALSE; break;
}
}
return( bStatus );
}
//----------------------------------------------------------------------------
//
// Function: SelectNetworkClientDlgProc
//
// Purpose:
//
//----------------------------------------------------------------------------
INT_PTR CALLBACK SelectNetworkClientDlgProc( IN HWND hwnd, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam) {
BOOL bStatus = TRUE;
switch (uMsg) {
case WM_DESTROY: // do nothing
break;
case WM_INITDIALOG: InitSelectClientListView(hwnd, FixedGlobals.hInstance); break;
case WM_COMMAND: { int nButtonId;
switch ( nButtonId = LOWORD(wParam) ) { case IDOK: OnClientOk( hwnd ); break;
case IDCANCEL: // return a 0 to show no items were added
EndDialog(hwnd, 0); break;
case IDC_HAVEDISK: // ISSUE-2002/02/28-stelo- this needs to be implemented
AssertMsg(FALSE, "This button has not been implemented yet."); break;
default: bStatus = FALSE; break; } break; } case WM_NOTIFY: NotifyHandler( hwnd, wParam, lParam ); break;
default: bStatus = FALSE; break;
}
return( bStatus );
}
|