/*++ Copyright (C) Microsoft Corporation, 1996 - 1999 All rights reserved. Module Name: driverlv.hxx Abstract: Driver List View Header Author: Steve Kiraly (SteveKi) 19-Nov-1996 Revision History: --*/ #ifndef _DRIVERLV_HXX #define _DRIVERLV_HXX /******************************************************************** Forward reference. ********************************************************************/ class TDriversLVNotify; /******************************************************************** Drivers list view control. ********************************************************************/ class TDriversLV { SIGNATURE( 'drlv' ) ALWAYS_VALID public: enum EConstants { kEnumDriversLevel = 3, kDriverHeaderMax = 3, kDriverDefaultHeaderWidth = 40, kMaxDriverInfo = 4, }; enum EColumns { kDriverNameColumn, kEnvironmentColumn, kVersionColumn, kMaxColumn, }; enum EOrder { kAscending, kDecending, }; class THandle{ public: THandle( VOID ) : _iIndex( -1 ) { } VOID vReset( VOID ) { _iIndex = -1; } INT Index( VOID ) { return _iIndex; } VOID Index( INT iIndex ) { _iIndex = iIndex; } private: INT _iIndex; }; TDriversLV( VOID ); ~TDriversLV( VOID ); BOOL bSetUI( IN LPCTSTR pszServerName, IN HWND hwnd, IN WPARAM wmDblClickMsg = 0, IN WPARAM wmSingleClickMsg = 0, IN WPARAM wmDeleteKeyMsg = 0 ); BOOL bIsAnyItemSelcted( VOID ) const; BOOL bHandleMessage( IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam ); BOOL bRefresh( VOID ); BOOL bGetSelectedDriverInfo( IN TDriverInfo **ppDriverInfo, IN TDriversLV::THandle &Handle ) const; BOOL bGetSelectedDriverInfo( IN TDriverTransfer &DriverTransfer, IN UINT *pnCount = NULL ); VOID vDeleteDriverInfoFromListView( IN TDriverInfo *pDriverInfo ); VOID vDeleteDriverInfoFromListView( IN TDriverTransfer &DriverTransfer ); BOOL bAddDriverInfoToListView( IN TDriverInfo *pDriverInfo, IN BOOL bCheckForDuplicates = TRUE ); BOOL bAddDriverInfoToListView( IN TDriverTransfer &DriverTransfer ); VOID vDeleteAllListViewItems( VOID ); BOOL bSendDriverInfoNotification( IN TDriversLVNotify &Notify ) const; UINT uGetListViewItemCount( VOID ) const; VOID vSelectItem( IN UINT iIndex ); BOOL bSortColumn( IN const EColumns Column, IN const EOrder Order = kAscending ); BOOL bGetFullDriverList( IN TDriverTransfer &DriverTransfer, IN UINT *pnCount = NULL ); VOID vDumpList( VOID ); VOID vReturnDriverInfoToListView( IN TDriverInfo *pDriverInfo ); VOID vReturnDriverInfoToListView( IN TDriverTransfer &DriverTransfer ); UINT uGetSelectedDriverInfoCount( VOID ) const; private: // // Copying and assignment are not defined. // TDriversLV( const TDriversLV & ); TDriversLV & operator =( const TDriversLV & ); BOOL bLoadDrivers( VOID ); VOID vRelease( VOID ); BOOL bGetItemData( IN INT iItem, IN TDriverInfo **ppDriverInfo ) const; VOID vAddDriverToListView( IN TDriverInfo *pDriverInfo ); BOOL bDriverListViewSort( UINT uColumn ); static INT CALLBACK iCompareProc( IN LPARAM lParam1, IN LPARAM lParam2, IN LPARAM lParamSort ); INT iFindDriver( IN TDriverInfo *pDriverInfo ) const; BOOL bFindDriverInfo( IN TDriverInfo *pDriverInfo, IN TDriverInfo **ppDriverInfo ) const; BOOL bGetSelectedItem( IN INT *pIndex ) const; VOID vAddInSortedOrder( IN TDriverInfo *pDriverInfo ); HWND _hwnd; HWND _hwndLV; UINT _cLVDrivers; WPARAM _wmDoubleClickMsg; WPARAM _wmSingleClickMsg; WPARAM _wmDeleteKeyMsg; TBitArray _ColumnSortState; UINT _uCurrentColumn; TString _strServerName; DLINK_BASE( TDriverInfo, DriverInfoList, DriverInfo ); }; /******************************************************************** Drivers list view callback ********************************************************************/ class TDriversLVNotify { SIGNATURE( 'dlvn' ) ALWAYS_VALID public: TDriversLVNotify( VOID ); virtual ~TDriversLVNotify( VOID ); virtual BOOL bNotify( IN TDriverInfo *pDriverInfo ) = 0; private: // // Operator = and copy are not defined. // TDriversLVNotify & operator =( const TDriversLVNotify & ); TDriversLVNotify( const TDriversLVNotify & ); }; #endif