/*++ © 1998 Seagate Software, Inc. All rights reserved Module Name: PrMrLsRc.cpp Abstract: Recall limit Property Page Author: Rohde Wakefield [rohde] 08-Aug-1997 Revision History: --*/ #include "stdafx.h" #include "PrMrLsRc.h" static DWORD pHelpIds[] = { IDC_EXEMPT_ADMINS, idh_runaway_recall_exemption, IDC_EDIT_RECALL_LIMIT, idh_runaway_recall_limit, IDC_SPIN_RECALL_LIMIT, idh_runaway_recall_limit, IDC_EDIT_RECALL_LIMIT_LABEL, idh_runaway_recall_limit, IDC_EDIT_COPYFILES_LIMIT, idh_concurrent_drives_limit, IDC_SPIN_COPYFILES_LIMIT, idh_concurrent_drives_limit, IDC_SPIN_COPYFILES_LIMIT_LABEL, idh_concurrent_drives_limit, 0, 0 }; ///////////////////////////////////////////////////////////////////////////// // CPrMrLsRec property page CPrMrLsRec::CPrMrLsRec() : CSakPropertyPage(IDD) { WsbTraceIn( L"CPrMrLsRec::CPrMrLsRec", L"" ); //{{AFX_DATA_INIT(CPrMrLsRec) m_RecallLimit = 0; m_ExemptAdmins = FALSE; m_CopyFilesLimit = 1; //}}AFX_DATA_INIT m_RecallChanged = FALSE; m_CopyFilesChanged = FALSE; m_pHelpIds = pHelpIds; WsbTraceOut( L"CPrMrLsRec::CPrMrLsRec", L"" ); } CPrMrLsRec::~CPrMrLsRec() { } void CPrMrLsRec::DoDataExchange(CDataExchange* pDX) { WsbTraceIn( L"CPrMrLsRec::DoDataExchange", L"" ); CSakPropertyPage::DoDataExchange(pDX); //{{AFX_DATA_MAP(CPrMrLsRec) DDX_Control(pDX, IDC_SPIN_COPYFILES_LIMIT, m_spinCopyFilesLimit); DDX_Control(pDX, IDC_EDIT_COPYFILES_LIMIT, m_editCopyFilesLimit); DDX_Control(pDX, IDC_EDIT_RECALL_LIMIT, m_editRecallLimit); DDX_Control(pDX, IDC_SPIN_RECALL_LIMIT, m_spinRecallLimit); DDX_Text(pDX, IDC_EDIT_RECALL_LIMIT, m_RecallLimit); DDV_MinMaxUInt(pDX, m_RecallLimit, 0, 9999); DDX_Check(pDX, IDC_EXEMPT_ADMINS, m_ExemptAdmins); DDX_Text(pDX, IDC_EDIT_COPYFILES_LIMIT, m_CopyFilesLimit); DDV_MinMaxDWord(pDX, m_CopyFilesLimit, 1, 99); //}}AFX_DATA_MAP WsbTraceOut( L"CPrMrLsRec::DoDataExchange", L"" ); } BEGIN_MESSAGE_MAP(CPrMrLsRec, CSakPropertyPage) //{{AFX_MSG_MAP(CPrMrLsRec) ON_EN_CHANGE(IDC_EDIT_RECALL_LIMIT, OnChangeEditRecallLimit) ON_BN_CLICKED(IDC_EXEMPT_ADMINS, OnExemptAdmins) ON_EN_CHANGE(IDC_EDIT_COPYFILES_LIMIT, OnChangeEditCopyfilesLimit) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CPrMrLsRec message handlers BOOL CPrMrLsRec::OnInitDialog() { WsbTraceIn( L"CPrMrLsRec::OnInitDialog", L"" ); CSakPropertyPage::OnInitDialog(); AFX_MANAGE_STATE(AfxGetStaticModuleState()); m_spinRecallLimit.SetRange( 0, 9999 ); m_editRecallLimit.SetLimitText( 4 ); m_spinCopyFilesLimit.SetRange( 1, 99 ); m_editCopyFilesLimit.SetLimitText( 2 ); HRESULT hr = S_OK; try { // Get HSM relevant objects WsbAffirmHr( m_pParent->GetFsaFilter( &m_pFsaFilter ) ); WsbAffirmHr( m_pParent->GetHsmServer( &m_pHsmServer ) ); // Set controls to values from the object WsbAffirmHr( m_pFsaFilter->GetAdminExemption( &m_ExemptAdmins ) ); ULONG lMaxRecalls; WsbAffirmHr( m_pFsaFilter->GetMaxRecalls( &lMaxRecalls ) ); m_RecallLimit = lMaxRecalls; WsbAffirmHr(m_pHsmServer->GetCopyFilesUserLimit(&m_CopyFilesLimit)); UpdateData( FALSE ); m_RecallChanged = FALSE; m_CopyFilesChanged = FALSE; } WsbCatch( hr ); WsbTraceOut( L"CPrMrLsRec::OnInitDialog", L"" ); return TRUE; } BOOL CPrMrLsRec::OnApply() { WsbTraceIn( L"CPrMrLsRec::OnApply", L"" ); HRESULT hr = S_OK; UpdateData( TRUE ); try { if( m_RecallChanged ) { WsbAffirmHr( m_pFsaFilter->SetMaxRecalls( m_RecallLimit ) ); m_RecallChanged = FALSE; WsbAffirmHr( m_pFsaFilter->SetAdminExemption( m_ExemptAdmins ) ); // Save it CComPtr pFsaServer; WsbAffirmHr( m_pParent->GetFsaServer( &pFsaServer ) ); WsbAffirmHr( RsServerSaveAll( pFsaServer ) ); } if( m_CopyFilesChanged ) { WsbAffirmHr(m_pHsmServer->SetCopyFilesUserLimit(m_CopyFilesLimit)); m_CopyFilesChanged = FALSE; // Save it WsbAffirmHr(RsServerSaveAll(m_pHsmServer)); } } WsbCatch( hr ); WsbTraceOut( L"CPrMrLsRec::OnApply", L"" ); return CSakPropertyPage::OnApply(); } void CPrMrLsRec::OnChangeEditRecallLimit() { WsbTraceIn( L"CPrMrLsRec::OnChangeEditRecallLimit", L"" ); SetModified( TRUE ); m_RecallChanged = TRUE; WsbTraceOut( L"CPrMrLsRec::OnChangeEditRecallLimit", L"" ); } void CPrMrLsRec::OnExemptAdmins() { WsbTraceIn( L"CPrMrLsRec::OnExemptAdmins", L"" ); SetModified( TRUE ); m_RecallChanged = TRUE; WsbTraceOut( L"CPrMrLsRec::OnExemptAdmins", L"" ); } void CPrMrLsRec::OnChangeEditCopyfilesLimit() { WsbTraceIn( L"CPrMrLsRec::OnChangeEditCopyfilesLimit", L"" ); SetModified( TRUE ); m_CopyFilesChanged = TRUE; WsbTraceOut( L"CPrMrLsRec::OnChangeEditCopyfilesLimit", L"" ); }