|
|
#include <precomp.hxx>
#pragma hdrstop
#include "policy.h"
//
// Names of registry/INI file sections and values.
//
TCHAR CPolicy::SZ_REGINI_WATCHDOG[] = TEXT("DiskQuotaWatchDog"); TCHAR CPolicy::SZ_REGINI_SHOW_CLIENT_DIALOG[] = TEXT("ShowClientDialog"); TCHAR CPolicy::SZ_REGINI_SEND_USER_EMAIL[] = TEXT("SendUserEmail"); TCHAR CPolicy::SZ_REGINI_SEND_EMAIL_TO[] = TEXT("SendEmailTo"); TCHAR CPolicy::SZ_REGINI_SEND_EMAIL_CC[] = TEXT("SendEmailCc"); TCHAR CPolicy::SZ_REGINI_SEND_EMAIL_BCC[] = TEXT("SendEmailBcc");
BOOL CPolicy::I_REGINI_SEND_USER_EMAIL_DEFAULT = 1; BOOL CPolicy::I_REGINI_SHOW_CLIENT_DIALOG_DEFAULT = 0; TCHAR CPolicy::SZ_REGINI_SEND_EMAIL_TO_DEFAULT[] = TEXT("[email protected]"); TCHAR CPolicy::SZ_REGINI_SEND_EMAIL_CC_DEFAULT[] = TEXT(""); TCHAR CPolicy::SZ_REGINI_SEND_EMAIL_BCC_DEFAULT[] = TEXT("");
CPolicy::CPolicy( VOID ) : m_bSendUserEmail(FALSE), m_bShowClientDialog(FALSE) {
}
CPolicy::~CPolicy( VOID ) { //
// Nothing to do.
//
}
VOID CPolicy::Reset( VOID ) { m_bSendUserEmail = FALSE; m_bShowClientDialog = FALSE;
m_strOtherEmailTo.Empty(); m_strOtherEmailCc.Empty(); m_strOtherEmailBcc.Empty(); }
HRESULT CPolicy::Load( LPCTSTR pszIniFile ) { //
// Clear out previous policy contents.
//
Reset();
//
// Load the contents of the INI file using appropriate defaults
// if any values are not found.
//
LoadString(pszIniFile, SZ_REGINI_WATCHDOG, SZ_REGINI_SEND_EMAIL_TO, SZ_REGINI_SEND_EMAIL_TO_DEFAULT, m_strOtherEmailTo);
LoadString(pszIniFile, SZ_REGINI_WATCHDOG, SZ_REGINI_SEND_EMAIL_CC, SZ_REGINI_SEND_EMAIL_CC_DEFAULT, m_strOtherEmailCc);
LoadString(pszIniFile, SZ_REGINI_WATCHDOG, SZ_REGINI_SEND_EMAIL_BCC, SZ_REGINI_SEND_EMAIL_BCC_DEFAULT, m_strOtherEmailBcc);
m_bShowClientDialog = GetPrivateProfileInt(SZ_REGINI_WATCHDOG, SZ_REGINI_SHOW_CLIENT_DIALOG, I_REGINI_SHOW_CLIENT_DIALOG_DEFAULT, pszIniFile);
m_bSendUserEmail = GetPrivateProfileInt(SZ_REGINI_WATCHDOG, SZ_REGINI_SEND_USER_EMAIL, I_REGINI_SEND_USER_EMAIL_DEFAULT, pszIniFile); return NO_ERROR; }
//
// Loads policy string. Handles proper sizing of the value buffer.
// Caller is responsible for calling delete[] on *ppsz.
//
HRESULT CPolicy::LoadString( LPCTSTR pszFile, LPCTSTR pszSection, LPCTSTR pszValueName, LPCTSTR pszDefaultValue, CString& strOut ) { HRESULT hr = E_OUTOFMEMORY; INT cchIncr = MAX_PATH; INT cchValue = 0; INT cchRead = 0;
do { cchValue += cchIncr; cchRead = GetPrivateProfileString(pszSection, pszValueName, pszDefaultValue, strOut.GetBuffer(cchValue), cchValue, pszFile); if (0 == cchRead) { hr = E_FAIL; } } while(SUCCEEDED(hr) && cchRead == (cchValue - 1));
return hr; }
HRESULT CPolicy::Load( HKEY hkeyReg ) { HRESULT hr = NO_ERROR; //
// Clear out previous policy contents.
//
Reset();
return hr; }
//
// Should we send any email?
//
BOOL CPolicy::ShouldSendAnyEmail( VOID ) const { return ShouldSendUserEmail() || 0 != m_strOtherEmailTo.Length() || 0 != m_strOtherEmailCc.Length() || 0 != m_strOtherEmailBcc.Length(); }
|