/**********************************************************************/ /** Microsoft Windows/NT **/ /** Copyright(c) Microsoft Corporation, 1997 - 1999 -99 **/ /**********************************************************************/ /* statndpp.cpp Comment goes here FILE HISTORY: */ #include "stdafx.h" #include "winssnap.h" #include "StatNdpp.h" #include "status.h" #include "root.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #define MILLISEC_PER_MINUTE (60 * 1000) ///////////////////////////////////////////////////////////////////////////// // CStatusNodePropGen property page IMPLEMENT_DYNCREATE(CStatusNodePropGen, CPropertyPageBase) CStatusNodePropGen::CStatusNodePropGen() : CPropertyPageBase(CStatusNodePropGen::IDD) { //{{AFX_DATA_INIT(CStatusNodePropGen) m_nUpdateInterval = 0; //}}AFX_DATA_INIT } CStatusNodePropGen::~CStatusNodePropGen() { } void CStatusNodePropGen::DoDataExchange(CDataExchange* pDX) { CPropertyPageBase::DoDataExchange(pDX); //{{AFX_DATA_MAP(CStatusNodePropGen) DDX_Text(pDX, IDC_EDIT_UPDATE, m_nUpdateInterval); DDV_MinMaxInt(pDX, m_nUpdateInterval, 1, 59); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CStatusNodePropGen, CPropertyPageBase) //{{AFX_MSG_MAP(CStatusNodePropGen) ON_EN_CHANGE(IDC_EDIT_UPDATE, OnChangeEditUpdate) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CStatusNodePropGen message handlers void CStatusNodePropGen::OnChangeEditUpdate() { // mark the root node as dirty so that the user is prompted to save the // file, refresh interval is part of the .msc file SPITFSNode spNode, spParent; spNode = GetHolder()->GetNode(); // set the upadte interval from the root node spNode->GetParent(&spParent); // mark the data as dirty so that we'll ask the user to save. spParent->SetData(TFS_DATA_DIRTY, TRUE); SetDirty(TRUE); } BOOL CStatusNodePropGen::OnInitDialog() { CPropertyPageBase::OnInitDialog(); SPITFSNode spNode, spParent; spNode = GetHolder()->GetNode(); // set the upadte interval from the root node spNode->GetParent(&spParent); CWinsRootHandler *pRoot = GETHANDLER(CWinsRootHandler, spParent); m_nUpdateInterval = pRoot->GetUpdateInterval()/(MILLISEC_PER_MINUTE); UpdateData(FALSE); m_uImage = (UINT) spNode->GetData(TFS_DATA_IMAGEINDEX); // load the correct icon for (int i = 0; i < ICON_IDX_MAX; i++) { if (g_uIconMap[i][1] == m_uImage) { HICON hIcon = LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(g_uIconMap[i][0])); if (hIcon) ((CStatic *) GetDlgItem(IDC_STATIC_ICON))->SetIcon(hIcon); break; } } SetDirty(FALSE); return TRUE; } BOOL CStatusNodePropGen::OnApply() { UpdateData(); // update the m_dwInterval for the status node SPITFSNode spNode, spParent; CWinsRootHandler *pRoot= NULL; CWinsStatusHandler *pStat = NULL; spNode = GetHolder()->GetNode(); spNode->GetParent(&spParent); pRoot = GETHANDLER(CWinsRootHandler, spParent); pStat = GETHANDLER(CWinsStatusHandler, spNode); DWORD dwValue = m_nUpdateInterval * MILLISEC_PER_MINUTE; pStat->SetUpdateInterval(dwValue); pRoot->SetUpdateInterval(dwValue); return CPropertyPageBase::OnApply(); } ///////////////////////////////////////////////////////////////////////////// // CRepNodeProperties Handlers ///////////////////////////////////////////////////////////////////////////// CStatusNodeProperties::CStatusNodeProperties ( ITFSNode * pNode, IComponentData * pComponentData, ITFSComponentData * pTFSCompData, LPCTSTR pszSheetName ) : CPropertyPageHolderBase(pNode, pComponentData, pszSheetName) { m_bAutoDeletePages = FALSE; // we have the pages as embedded members m_bTheme = TRUE; AddPageToList((CPropertyPageBase*) &m_pageGeneral); Assert(pTFSCompData != NULL); m_spTFSCompData.Set(pTFSCompData); } CStatusNodeProperties::~CStatusNodeProperties() { RemovePageFromList((CPropertyPageBase*) &m_pageGeneral, FALSE); }