WindowsXP-SP1/admin/hmonitor/snapin/hmlistviewcolumn.cpp
2020-09-30 16:53:49 +02:00

184 lines
4.3 KiB
C++

// HMListViewColumn.cpp: implementation of the CHMListViewColumn class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "snapin.h"
#include "HMListViewColumn.h"
#include "HealthmonResultsPane.h"
#include "HMScopeItem.h"
#include "ResultsPaneView.h"
#include "HMObject.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
IMPLEMENT_DYNCREATE(CHMListViewColumn,CListViewColumn)
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CHMListViewColumn::CHMListViewColumn()
{
m_Pane = Uninitialized;
}
CHMListViewColumn::~CHMListViewColumn()
{
Destroy();
}
//////////////////////////////////////////////////////////////////////
// Column Members
//////////////////////////////////////////////////////////////////////
bool CHMListViewColumn::InsertColumn(CResultsPane* pResultsPane, int iColumnIndex)
{
TRACEX(_T("CHMListViewColumn::InsertColumn"));
TRACEARGn(pResultsPane);
TRACEARGn(iColumnIndex);
if( ! GfxCheckObjPtr(pResultsPane,CHealthmonResultsPane) )
{
TRACE(_T("FAILED : pResultsPane is not a valid pointer.\n"));
return false;
}
CHealthmonResultsPane* pHMRP = (CHealthmonResultsPane*)pResultsPane;
_DHMListView* pList = NULL;
if( IsUpperPane() )
{
pList = pHMRP->GetUpperListCtrl();
}
else if( IsLowerPane() )
{
pList = pHMRP->GetLowerListCtrl();
}
else if( IsStatsPane() )
{
pList = pHMRP->GetStatsListCtrl();
}
else
{
TRACE(_T("WARNING : Column has not been assigned to a results pane in the split view.\n"));
ASSERT(FALSE);
}
if( ! pList )
{
TRACE(_T("FAILED : Results Pane's list control has not been intialized.\n"));
return false;
}
CResultsPaneView* pView = GetOwnerResultsView();
if( pView )
{
CHMScopeItem* pItem = (CHMScopeItem*)pView->GetOwnerScopeItem();
if( GfxCheckObjPtr(pItem,CHMScopeItem) )
{
CHMObject* pObject = pItem->GetObjectPtr();
if( pObject )
{
CRuntimeClass* pRTC = pObject->GetRuntimeClass();
if( pRTC )
{
USES_CONVERSION;
CString sEntry;
sEntry.Format(_T("ColumnWidth_%d_%d"),m_Pane,pList->GetColumnCount());
m_iWidth = AfxGetApp()->GetProfileInt(A2T(pRTC->m_lpszClassName),sEntry,m_iWidth);
if( m_iWidth > 2500 || m_iWidth < 0 )
{
m_iWidth = 125;
}
}
}
}
}
int iResult = pList->InsertColumn(pList->GetColumnCount(),(LPCTSTR)GetTitle(),GetFormat(),GetWidth(),-1L);
if( iResult == -1 )
{
TRACE(_T("FAILED : CListCtrl::InsertColumn failed.\n"));
return false;
}
return true;
}
/////////////////////////////////////////////////////////////////////////////
// Width Members
void CHMListViewColumn::SaveWidth(CResultsPane* pResultsPane, int iColumnIndex)
{
TRACEX(_T("CListViewColumn::SaveWidth\n"));
TRACEARGn(pResultsPane);
TRACEARGn(iColumnIndex);
if( ! GfxCheckObjPtr(pResultsPane,CHealthmonResultsPane) )
{
TRACE(_T("FAILED : pResultsPane is not a valid pointer.\n"));
return;
}
CHealthmonResultsPane* pHMRP = (CHealthmonResultsPane*)pResultsPane;
_DHMListView* pList = NULL;
if( IsUpperPane() )
{
pList = pHMRP->GetUpperListCtrl();
}
else if( IsLowerPane() )
{
pList = pHMRP->GetLowerListCtrl();
}
else if( IsStatsPane() )
{
pList = pHMRP->GetStatsListCtrl();
}
else
{
TRACE(_T("WARNING : Column has not been assigned to a results pane in the split view.\n"));
ASSERT(FALSE);
}
if( ! pList )
{
TRACE(_T("FAILED : Results Pane's list control has not been intialized.\n"));
return;
}
m_iWidth = pList->GetColumnWidth(iColumnIndex);
CResultsPaneView* pView = GetOwnerResultsView();
if( ! pView )
{
return;
}
CHMScopeItem* pItem = (CHMScopeItem*)pView->GetOwnerScopeItem();
if( ! GfxCheckObjPtr(pItem,CHMScopeItem) )
{
return;
}
CHMObject* pObject = pItem->GetObjectPtr();
if( ! pObject )
{
return;
}
CRuntimeClass* pRTC = pObject->GetRuntimeClass();
USES_CONVERSION;
CString sEntry;
sEntry.Format(_T("ColumnWidth_%d_%d"),m_Pane,iColumnIndex);
AfxGetApp()->WriteProfileInt(A2T(pRTC->m_lpszClassName),sEntry,m_iWidth);
return;
}