163 lines
4.5 KiB
C++
163 lines
4.5 KiB
C++
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// 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
|