You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
177 lines
6.1 KiB
177 lines
6.1 KiB
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Copyright (c) 2000-2002 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
|
|
{
|
|
// Data collected from SendStatusReport.
|
|
CLSID clsidMajorTaskId;
|
|
CLSID clsidMinorTaskId;
|
|
BSTR bstrNodeName;
|
|
ULONG nMin;
|
|
ULONG nMax;
|
|
ULONG nCurrent;
|
|
HRESULT hr;
|
|
BSTR bstrDescription;
|
|
FILETIME ftTime;
|
|
BSTR bstrReference;
|
|
|
|
// Data not collected from SendStatusReport.
|
|
BOOL fParentToAllNodeTasks;
|
|
BSTR bstrNodeNameWithoutDomain;
|
|
} STreeItemLParamData, * PSTreeItemLParamData;
|
|
|
|
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_nRangeHigh; // Progress bar high range
|
|
ULONG m_nInitialTickCount; // Initial count passed in via constructor
|
|
ULONG m_nCurrentPos; // Remember the current position
|
|
BOOL m_fThresholdBroken; // Has the initial count threshold been broken?
|
|
ULONG m_nRealPos; // Real position on the progress bar.
|
|
HTREEITEM m_htiSelected; // Selected item in the tree
|
|
BSTR m_bstrClientMachineName; // Default node name for SendStatusReport
|
|
BOOL m_fDisplayErrorsAsWarnings; // If TRUE, uses yellow bang icon for errors instead of red x
|
|
|
|
PSTreeItemLParamData * m_ptipdProgressArray; // Dynamic sparse array of tasks that reported a progress_update.
|
|
size_t m_cPASize; // The currently allocated size of the array.
|
|
size_t m_cPACount; // The number of entries currently stored in the array.
|
|
|
|
private: // methods
|
|
CTaskTreeView(
|
|
HWND hwndParentIn
|
|
, UINT uIDTVIn
|
|
, UINT uIDProgressIn
|
|
, UINT uIDStatusIn
|
|
, size_t uInitialTickCount
|
|
);
|
|
virtual ~CTaskTreeView( void );
|
|
|
|
void OnNotifyDeleteItem( LPNMHDR pnmhdrIn );
|
|
void OnNotifySelChanged( LPNMHDR pnmhdrIn );
|
|
HRESULT HrInsertTaskIntoTree(
|
|
HTREEITEM htiFirstIn
|
|
, STreeItemLParamData * ptipdIn
|
|
, int nImageIn
|
|
, BSTR bstrDescriptionIn
|
|
);
|
|
|
|
HRESULT HrProcessUpdateProgressTask( const STreeItemLParamData * ptipdIn );
|
|
|
|
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 nMinIn
|
|
, ULONG nMaxIn
|
|
, ULONG nCurrentIn
|
|
, 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
|
|
, TRUE // fParentToAllNodeTasksIn
|
|
) );
|
|
|
|
} //*** CTaskTreeView::HrAddTreeViewRootItem
|
|
HRESULT HrAddTreeViewItem(
|
|
HTREEITEM * phtiOut
|
|
, UINT idsIn
|
|
, REFCLSID rclsidMinorTaskIDIn
|
|
, REFCLSID rclsidMajorTaskIDIn = IID_NULL
|
|
, HTREEITEM htiParentIn = TVI_ROOT
|
|
, BOOL fParentToAllNodeTasksIn = FALSE
|
|
);
|
|
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 );
|
|
|
|
void SetDisplayErrorsAsWarnings( BOOL fDisplayErrorsAsWarningsIn )
|
|
{
|
|
m_fDisplayErrorsAsWarnings = fDisplayErrorsAsWarningsIn;
|
|
|
|
} //*** CTaskTreeView::SetDisplayErrorsAsWarnings
|
|
|
|
BOOL FDisplayErrorsAsWarnings( void )
|
|
{
|
|
return m_fDisplayErrorsAsWarnings;
|
|
|
|
} //*** CTaskTreeView::FDisplayErrorsAsWarnings
|
|
|
|
}; //*** class CTaskTreeView
|