|
|
//////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2000-2001 Microsoft Corporation
//
// Module Name:
// TaskTreeView.h
//
// Maintained By:
// David Potter (DavidP) 27-MAR-2001
// Geoffrey Pease (GPease) 22-MAY-2000
//
//////////////////////////////////////////////////////////////////////////////
#pragma once
class CAnalyzePage; class CCommitPage;
//////////////////////////////////////////////////////////////////////////////
// Type Definitions
//////////////////////////////////////////////////////////////////////////////
//
// This structure is on the lParam of all tree view items.
//
typedef struct _STreeItemLParamData { CLSID clsidMajorTaskId; CLSID clsidMinorTaskId; BSTR bstrNodeName; ULONG ulMin; ULONG ulMax; ULONG ulCurrent; HRESULT hr; BSTR bstrDescription; FILETIME ftTime; BSTR bstrReference; } STreeItemLParamData;
typedef enum _ETASKSTATUS { tsUNKNOWN = 0, tsPENDING, // E_PENDING
tsDONE, // S_OK
tsWARNING, // S_FALSE
tsFAILED, // FAILED( hr )
tsMAX } ETaskStatus;
//////////////////////////////////////////////////////////////////////////////
//++
//
// class CTaskTreeView
//
// Description:
// Handles the tree view control that displays tasks.
//
//--
//////////////////////////////////////////////////////////////////////////////
class CTaskTreeView { friend class CAnalyzePage; friend class CCommitPage;
private: // data
HWND m_hwndParent; HWND m_hwndTV; HWND m_hwndProg; HWND m_hwndStatus; HIMAGELIST m_hImgList; // Image list of icons for tree view
ULONG m_ulHighNibble; // Progress bar high nibble count
ULONG m_ulLowNibble; // Progress bar low nibble count
HTREEITEM m_htiSelected; // Selected item in the tree
private: // methods
CTaskTreeView( HWND hwndParentIn , UINT uIDTVIn , UINT uIDProgressIn , UINT uIDStatusIn ); virtual ~CTaskTreeView( void );
void OnNotifyDeleteItem( LPNMHDR pnmhdrIn ); void OnNotifySelChanged( LPNMHDR pnmhdrIn ); HRESULT HrInsertTaskIntoTree( HTREEITEM htiFirstIn , STreeItemLParamData * ptipdIn , int nImageIn , BSTR bstrDescriptionIn ); HRESULT HrUpdateProgressBar( const STreeItemLParamData * ptipdPrevIn , const STreeItemLParamData * ptipdNewIn ); HRESULT HrPropagateChildStateToParents( HTREEITEM htiChildIn , int nImageIn , BOOL fOnlyUpdateProgressIn );
public: // methods
HRESULT HrOnInitDialog( void ); HRESULT HrOnSendStatusReport( LPCWSTR pcszNodeNameIn , CLSID clsidTaskMajorIn , CLSID clsidTaskMinorIn , ULONG ulMinIn , ULONG ulMaxIn , ULONG ulCurrentIn , HRESULT hrStatusIn , LPCWSTR pcszDescriptionIn , FILETIME * pftTimeIn , LPCWSTR pcszReferenceIn ); HRESULT HrAddTreeViewRootItem( UINT idsIn, REFCLSID rclsidTaskIDIn ) { return THR( HrAddTreeViewItem( NULL // phtiOut
, idsIn , rclsidTaskIDIn , IID_NULL , TVI_ROOT ) );
} //*** CTaskTreeView::HrAddTreeViewRootItem()
HRESULT HrAddTreeViewItem( HTREEITEM * phtiOut , UINT idsIn , REFCLSID rclsidMinorTaskIDIn , REFCLSID rclsidMajorTaskIDIn = IID_NULL , HTREEITEM htiParentIn = TVI_ROOT ); HRESULT HrOnNotifySetActive( void );
LRESULT OnNotify( LPNMHDR pnmhdrIn );
HRESULT HrShowStatusAsDone( void ); HRESULT HrDisplayDetails( void ); BOOL FGetItem( HTREEITEM htiIn, STreeItemLParamData ** pptipdOut ); HRESULT HrFindPrevItem( HTREEITEM * phtiOut ); HRESULT HrFindNextItem( HTREEITEM * phtiOut ); HRESULT HrSelectItem( HTREEITEM htiIn );
}; //*** class CTaskTreeView
|