310 lines
7.1 KiB
C
310 lines
7.1 KiB
C
//----------------------------------------------------------------------------
|
|
//
|
|
// 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 );
|
|
|
|
}
|