Leaked source code of windows server 2003
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.
 
 
 
 
 
 

181 lines
4.4 KiB

//============================================================================
// Copyright (C) Microsoft Corporation, 1996 - 1999
//
// File: rtrsheet.cpp
//
// History:
// 06/19/96 Abolade Gbadegesin Created.
//
// Implementation of IP configuration dialogs.
//============================================================================
#include "stdafx.h"
#include "mprapi.h"
#include "rtrsheet.h"
#include "rtrui.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//----------------------------------------------------------------------------
// Class: RtrPropertySheet
//
//----------------------------------------------------------------------------
RtrPropertySheet::RtrPropertySheet(
ITFSNode * pNode,
IComponentData *pComponentData,
ITFSComponentData *pTFSCompData,
LPCTSTR pszSheetName,
CWnd* pParent,
UINT iPage,
BOOL fScopePane)
: CPropertyPageHolderBase(pNode, pComponentData, pszSheetName, fScopePane),
m_fCancel(FALSE)
{
//if this is not done, deadlock can happen
EnablePeekMessageDuringNotifyConsole(TRUE);
Assert(pTFSCompData);
m_spTFSCompData.Set(pTFSCompData);
}
/*!--------------------------------------------------------------------------
RtrPropertySheet::OnPropertyChange
This operation occurs on the main thread. This function is called
in response to an Apply operation on a property sheet.
Author: KennT
---------------------------------------------------------------------------*/
BOOL RtrPropertySheet::OnPropertyChange(BOOL bScopePane, LONG_PTR* pChangeMask)
{
BOOL bReturn = FALSE;
// This means that all of the dirty pages have finished saving
// their data, now we can go ahead and save the sheet data
//
// Because we have gotten here means that at least one page must
// have been dirty, so go ahead and save the data (otherwise we would
// never have gotten here).
//
if (m_cDirty == 1)
{
if (m_fCancel)
{
CancelSheetData();
bReturn = TRUE;
}
else
bReturn = SaveSheetData();
}
BOOL fPageReturn = CPropertyPageHolderBase::OnPropertyChange(
bScopePane, pChangeMask);
return bReturn && fPageReturn;
}
//----------------------------------------------------------------------------
// Class: RtrPropertyPage
//
//----------------------------------------------------------------------------
IMPLEMENT_DYNAMIC(RtrPropertyPage, CPropertyPageBase)
RtrPropertyPage::~RtrPropertyPage()
{
if (m_hIcon)
{
DestroyIcon(m_hIcon);
}
}
/*!--------------------------------------------------------------------------
RtrPropertyPage::SetDirty
-
Author: KennT
---------------------------------------------------------------------------*/
void RtrPropertyPage::SetDirty(BOOL bDirty)
{
// Set the property sheet to be dirty
// But change the dirty count only if we are toggling the flag
if (GetHolder() && (bDirty != IsDirty()))
{
GetHolder()->IncrementDirty(bDirty ? 1 : -1);
}
CPropertyPageBase::SetDirty(bDirty);
}
void RtrPropertyPage::OnCancel()
{
// We need to notify the property sheet of this
((RtrPropertySheet *)GetHolder())->SetCancelFlag(TRUE);
// Give the property sheet a chance to do something
OnApply();
CPropertyPageBase::OnCancel();
((RtrPropertySheet *)GetHolder())->SetCancelFlag(FALSE);
}
void RtrPropertyPage::ValidateSpinRange(CSpinButtonCtrl *pSpin)
{
int iPos, iLow, iHigh;
Assert(pSpin);
iPos = pSpin->GetPos();
if (HIWORD(iPos))
{
pSpin->GetRange(iLow, iHigh);
iPos = iLow;
pSpin->SetPos(iPos);
}
}
BOOL RtrPropertyPage::OnApply()
{
BOOL fReturn = CPropertyPageBase::OnApply();
SetDirty(FALSE);
return fReturn;
}
void RtrPropertyPage::CancelApply()
{
CPropertyPageBase::CancelApply();
SetDirty(FALSE);
}
void RtrPropertyPage::InitializeInterfaceIcon(UINT idcIcon, DWORD dwType)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
UINT uIcon = IsWanInterface(dwType) ? IDI_RTRLIB_WAN : IDI_RTRLIB_LAN;
if (m_hIcon)
{
DestroyIcon(m_hIcon);
m_hIcon = NULL;
}
m_hIcon = AfxGetApp()->LoadIcon(MAKEINTRESOURCE(uIcon));
if (m_hIcon && GetDlgItem(idcIcon))
((CStatic *) GetDlgItem(idcIcon))->SetIcon(m_hIcon);
}