|
|
// ItemPropSheet.cpp : implementation file
//
#include "stdafx.h"
#define __FILE_ID__ 42
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__; #endif
/////////////////////////////////////////////////////////////////////////////
// CItemPropSheet
IMPLEMENT_DYNAMIC(CItemPropSheet, CPropertySheet)
CItemPropSheet::CItemPropSheet( UINT nIDCaption, // sheet caption id
CWnd* pParentWnd, // parent window
UINT iSelectPage // initialy selected page
): CPropertySheet(nIDCaption, pParentWnd, iSelectPage), m_dwLastError(ERROR_SUCCESS), m_pMsg(NULL) { //
// no Help button
//
m_psh.dwFlags &= ~PSH_HASHELP; //
// no Apply button
//
m_psh.dwFlags |= PSH_NOAPPLYNOW; }
DWORD CItemPropSheet::Init( CFolder* pFolder, // folder
CFaxMsg* pMsg // pointer to CJob or CArchiveMsg
) { m_dwLastError = ERROR_SUCCESS; DBG_ENTER(TEXT("CItemPropSheet::Init"), m_dwLastError);
ASSERTION(pFolder); ASSERTION(pMsg);
//
// init page array
//
for(DWORD dw=0; dw < PROP_SHEET_PAGES_NUM; ++dw) { m_pPages[dw] = NULL; }
//
// create pages according to FolderType
//
FolderType type = pFolder->Type(); BOOL bCreatePersonalInfo = TRUE;
if(pMsg->IsKindOf(RUNTIME_CLASS(CArchiveMsg))) { try { m_pMsg = new CArchiveMsg; } catch(...) { m_dwLastError = ERROR_NOT_ENOUGH_MEMORY; CALL_FAIL (MEM_ERR, TEXT ("new CArchiveMsg"), m_dwLastError); goto exit; }
m_dwLastError = ((CArchiveMsg*)m_pMsg)->Copy(*((CArchiveMsg*)pMsg)); if(ERROR_SUCCESS != m_dwLastError) { return m_dwLastError; } } else if(pMsg->IsKindOf(RUNTIME_CLASS(CJob))) { try { m_pMsg = new CJob; } catch(...) { m_dwLastError = ERROR_NOT_ENOUGH_MEMORY; CALL_FAIL (MEM_ERR, TEXT ("new CJob"), m_dwLastError); goto exit; }
m_dwLastError = ((CJob*)m_pMsg)->Copy(*((CJob*)pMsg)); if(ERROR_SUCCESS != m_dwLastError) { return m_dwLastError; } } else { ASSERTION_FAILURE }
try { switch(type) { case FOLDER_TYPE_INCOMING: bCreatePersonalInfo = FALSE;
m_pPages[0] = new CIncomingGeneralPg(m_pMsg); m_pPages[1] = new CIncomingDetailsPg(m_pMsg);
break; case FOLDER_TYPE_INBOX: bCreatePersonalInfo = FALSE;
m_pPages[0] = new CInboxGeneralPg(m_pMsg); m_pPages[1] = new CInboxDetailsPg(m_pMsg);
break; case FOLDER_TYPE_OUTBOX: m_pPages[0] = new COutboxGeneralPg(m_pMsg); m_pPages[1] = new COutboxDetailsPg(m_pMsg);
break; case FOLDER_TYPE_SENT_ITEMS: m_pPages[0] = new CSentItemsGeneralPg(m_pMsg); m_pPages[1] = new CSentItemsDetailsPg(m_pMsg);
break; default: ASSERTION_FAILURE; break; };
if(bCreatePersonalInfo) { //
// create sender info page
//
m_pPages[2] = new CPersonalInfoPg(IDS_SENDER_INFO_CAPTION, PERSON_SENDER, m_pMsg, pFolder);
m_dwLastError = ((CPersonalInfoPg*)m_pPages[2])->Init(); if(ERROR_SUCCESS != m_dwLastError) { CALL_FAIL (GENERAL_ERR, TEXT ("CPersonalInfoPg::Init"), m_dwLastError); } } } catch(...) { m_dwLastError = ERROR_NOT_ENOUGH_MEMORY; CALL_FAIL (MEM_ERR, TEXT ("new CPropertyPage"), m_dwLastError); goto exit; }
//
// add pages to sheet
//
for(dw=0; dw < PROP_SHEET_PAGES_NUM; ++dw) { if(NULL != m_pPages[dw]) { AddPage(m_pPages[dw]); } }
exit: if(ERROR_SUCCESS != m_dwLastError) { for(DWORD dw=0; dw < PROP_SHEET_PAGES_NUM; ++dw) { SAFE_DELETE(m_pPages[dw]); } }
return m_dwLastError; }
CItemPropSheet::~CItemPropSheet() { for(DWORD dw=0; dw < PROP_SHEET_PAGES_NUM; ++dw) { SAFE_DELETE(m_pPages[dw]); }
SAFE_DELETE(m_pMsg); }
BEGIN_MESSAGE_MAP(CItemPropSheet, CPropertySheet) //{{AFX_MSG_MAP(CItemPropSheet)
ON_WM_ACTIVATE() ON_MESSAGE(WM_SET_SHEET_FOCUS, OnSetSheetFocus) ON_WM_CREATE() ON_MESSAGE(WM_HELP, OnHelp) //}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CItemPropSheet message handlers
void CItemPropSheet::OnActivate( UINT nState, CWnd* pWndOther, BOOL bMinimized ) { DBG_ENTER(TEXT("CItemPropSheet::OnActivate"));
CPropertySheet::OnActivate(nState, pWndOther, bMinimized); //
// hide OK button
//
CWnd *pWnd = GetDlgItem( IDOK ); ASSERTION(NULL != pWnd); pWnd->ShowWindow( FALSE );
//
// rename Cancel button
//
CString cstrText; DWORD dwRes = LoadResourceString (cstrText, IDS_BUTTON_CLOSE); if (ERROR_SUCCESS != dwRes) { CALL_FAIL (RESOURCE_ERR, TEXT("LoadResourceString"), dwRes); return; }
pWnd = GetDlgItem( IDCANCEL ); ASSERT(NULL != pWnd); pWnd->SetWindowText(cstrText); }
LONG CItemPropSheet::OnSetSheetFocus( UINT wParam, LONG lParam ) { //
// set focus on Close button
//
CWnd *pWnd = GetDlgItem( IDCANCEL ); ASSERT(NULL != pWnd); pWnd->SetFocus(); return 0; }
int CItemPropSheet::OnCreate( LPCREATESTRUCT lpCreateStruct ) { if (CPropertySheet::OnCreate(lpCreateStruct) == -1) return -1; ModifyStyleEx(0, WS_EX_CONTEXTHELP); return 0; }
LONG CItemPropSheet::OnHelp( UINT wParam, LONG lParam ) { return TRUE; }
|