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.
296 lines
7.6 KiB
296 lines
7.6 KiB
// OptionsUserInfoPg.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
|
|
|
|
#define __FILE_ID__ 71
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
|
|
//
|
|
// this array maps dialog control IDs to
|
|
// number of string in FAX_PERSONAL_PROFILE structure
|
|
//
|
|
static TPersonalPageInfo s_PageInfo[] =
|
|
{
|
|
IDC_NAME_VALUE, PERSONAL_PROFILE_NAME,
|
|
IDC_FAX_NUMBER_VALUE, PERSONAL_PROFILE_FAX_NUMBER,
|
|
IDC_COMPANY_VALUE, PERSONAL_PROFILE_COMPANY,
|
|
IDC_TITLE_VALUE, PERSONAL_PROFILE_TITLE,
|
|
IDC_DEPARTMENT_VALUE, PERSONAL_PROFILE_DEPARTMENT,
|
|
IDC_OFFICE_VALUE, PERSONAL_PROFILE_OFFICE_LOCATION,
|
|
IDC_HOME_PHONE_VALUE, PERSONAL_PROFILE_HOME_PHONE,
|
|
IDC_BUSINESS_PHONE_VALUE, PERSONAL_PROFILE_OFFICE_PHONE,
|
|
IDC_EMAIL_VALUE, PERSONAL_PROFILE_EMAIL,
|
|
IDC_BILLING_CODE_VALUE, PERSONAL_PROFILE_BILLING_CODE,
|
|
IDC_ADDRESS_VALUE, PERSONAL_PROFILE_STREET_ADDRESS
|
|
};
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CUserInfoDlg property page
|
|
|
|
|
|
CUserInfoDlg::CUserInfoDlg():
|
|
CFaxClientDlg(CUserInfoDlg::IDD)
|
|
{
|
|
memset((LPVOID)&m_PersonalProfile, 0, sizeof(m_PersonalProfile));
|
|
m_PersonalProfile.dwSizeOfStruct = sizeof(m_PersonalProfile);
|
|
|
|
m_tchStrArray = &(m_PersonalProfile.lptstrName);
|
|
}
|
|
|
|
CUserInfoDlg::~CUserInfoDlg()
|
|
{
|
|
//
|
|
// free memory
|
|
//
|
|
for(DWORD dw=0; dw < PERSONAL_PROFILE_STR_NUM; ++dw)
|
|
{
|
|
MemFree(m_tchStrArray[dw]);
|
|
}
|
|
}
|
|
|
|
void CUserInfoDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CFaxClientDlg::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CUserInfoDlg)
|
|
DDX_Control(pDX, IDC_ADDRESS_VALUE, m_editAddress);
|
|
DDX_Control(pDX, IDOK, m_butOk);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CUserInfoDlg, CFaxClientDlg)
|
|
//{{AFX_MSG_MAP(CUserInfoDlg)
|
|
ON_EN_CHANGE(IDC_NAME_VALUE, OnModify)
|
|
ON_EN_CHANGE(IDC_NAME_VALUE, OnModify)
|
|
ON_EN_CHANGE(IDC_FAX_NUMBER_VALUE, OnModify)
|
|
ON_EN_CHANGE(IDC_COMPANY_VALUE, OnModify)
|
|
ON_EN_CHANGE(IDC_TITLE_VALUE, OnModify)
|
|
ON_EN_CHANGE(IDC_DEPARTMENT_VALUE, OnModify)
|
|
ON_EN_CHANGE(IDC_OFFICE_VALUE, OnModify)
|
|
ON_EN_CHANGE(IDC_HOME_PHONE_VALUE, OnModify)
|
|
ON_EN_CHANGE(IDC_BUSINESS_PHONE_VALUE, OnModify)
|
|
ON_EN_CHANGE(IDC_EMAIL_VALUE, OnModify)
|
|
ON_EN_CHANGE(IDC_BILLING_CODE_VALUE, OnModify)
|
|
ON_EN_CHANGE(IDC_ADDRESS_VALUE, OnModify)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CUserInfoDlg message handlers
|
|
|
|
BOOL
|
|
CUserInfoDlg::OnInitDialog()
|
|
{
|
|
DWORD dwRes = ERROR_SUCCESS;
|
|
DBG_ENTER(TEXT("COptionsSettingsPg::OnInitDialog"));
|
|
|
|
CFaxClientDlg::OnInitDialog();
|
|
|
|
//
|
|
// get user info
|
|
//
|
|
FAX_PERSONAL_PROFILE personalProfile;
|
|
memset((LPVOID)&personalProfile, 0, sizeof(personalProfile));
|
|
personalProfile.dwSizeOfStruct = sizeof(personalProfile);
|
|
|
|
HRESULT hResult = FaxGetSenderInformation(&personalProfile);
|
|
if(S_OK != hResult)
|
|
{
|
|
CALL_FAIL (GENERAL_ERR, TEXT("FaxGetSenderInformation"), hResult);
|
|
return TRUE;
|
|
}
|
|
|
|
//
|
|
// A numeric edit control should be LTR
|
|
//
|
|
SetLTREditDirection(m_hWnd, IDC_FAX_NUMBER_VALUE);
|
|
SetLTREditDirection(m_hWnd, IDC_EMAIL_VALUE);
|
|
SetLTREditDirection(m_hWnd, IDC_HOME_PHONE_VALUE);
|
|
SetLTREditDirection(m_hWnd, IDC_BUSINESS_PHONE_VALUE);
|
|
|
|
//
|
|
// copy strings into the private structure
|
|
//
|
|
DWORD dwLen;
|
|
TCHAR** tchStrArray = &(personalProfile.lptstrName);
|
|
for(DWORD dw=0; dw < PERSONAL_PROFILE_STR_NUM; ++dw)
|
|
{
|
|
if(NULL == tchStrArray[dw])
|
|
{
|
|
continue;
|
|
}
|
|
|
|
dwLen = _tcslen(tchStrArray[dw]);
|
|
if(0 == dwLen)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
m_tchStrArray[dw] = (TCHAR*)MemAlloc(sizeof(TCHAR)*(dwLen+1));
|
|
if(!m_tchStrArray[dw])
|
|
{
|
|
dwRes = ERROR_NOT_ENOUGH_MEMORY;
|
|
CALL_FAIL (MEM_ERR, TEXT("MemAlloc"), dwRes);
|
|
PopupError(dwRes);
|
|
break;
|
|
}
|
|
|
|
_tcscpy(m_tchStrArray[dw], tchStrArray[dw]);
|
|
}
|
|
|
|
FaxFreeSenderInformation(&personalProfile);
|
|
|
|
//
|
|
// display user info
|
|
//
|
|
CEdit* pEdit;
|
|
DWORD dwSize = sizeof(s_PageInfo)/sizeof(s_PageInfo[0]);
|
|
for(dw=0; dw < dwSize; ++dw)
|
|
{
|
|
//
|
|
// set item value
|
|
//
|
|
pEdit = (CEdit*)GetDlgItem(s_PageInfo[dw].dwValueResId);
|
|
ASSERTION(NULL != pEdit);
|
|
|
|
pEdit->SetWindowText(m_tchStrArray[s_PageInfo[dw].eValStrNum]);
|
|
pEdit->SetLimitText(80);
|
|
//
|
|
// Place the caret back at the beginning of the text
|
|
//
|
|
pEdit->SendMessage (EM_SETSEL, 0, 0);
|
|
}
|
|
|
|
m_editAddress.SetLimitText(ADDRESS_MAX_LEN);
|
|
|
|
m_butOk.EnableWindow(FALSE);
|
|
|
|
return TRUE;
|
|
|
|
} // CUserInfoDlg::OnInitDialog
|
|
|
|
|
|
void
|
|
CUserInfoDlg::OnModify()
|
|
{
|
|
m_butOk.EnableWindow(TRUE);
|
|
}
|
|
|
|
void
|
|
CUserInfoDlg::OnOK()
|
|
{
|
|
DBG_ENTER(TEXT("CUserInfoDlg::OnOK"));
|
|
|
|
DWORD dwRes = Save();
|
|
if(ERROR_SUCCESS != dwRes)
|
|
{
|
|
CALL_FAIL (GENERAL_ERR, TEXT("Save"),dwRes);
|
|
PopupError(dwRes);
|
|
return;
|
|
}
|
|
|
|
CFaxClientDlg::OnOK();
|
|
}
|
|
|
|
DWORD
|
|
CUserInfoDlg::Save()
|
|
/*++
|
|
|
|
Routine name : CUserInfoDlg::Save
|
|
|
|
Routine description:
|
|
|
|
save the settings into the registry
|
|
|
|
Author:
|
|
|
|
Alexander Malysh (AlexMay), Feb, 2000
|
|
|
|
Arguments:
|
|
|
|
|
|
Return Value:
|
|
|
|
Standard Win32 error code
|
|
|
|
--*/
|
|
{
|
|
DWORD dwRes = ERROR_SUCCESS;
|
|
DBG_ENTER(TEXT("CUserInfoDlg::Save"), dwRes);
|
|
|
|
//
|
|
// get user info from UI and save it into FAX_PERSONAL_PROFILE structure
|
|
//
|
|
CWnd *pWnd;
|
|
DWORD dwLen;
|
|
TCHAR tszText[512];
|
|
DWORD dwSize = sizeof(s_PageInfo)/sizeof(s_PageInfo[0]);
|
|
for(DWORD dw=0; dw < dwSize; ++dw)
|
|
{
|
|
//
|
|
// get item value
|
|
//
|
|
pWnd = GetDlgItem(s_PageInfo[dw].dwValueResId);
|
|
ASSERTION(NULL != pWnd);
|
|
|
|
pWnd->GetWindowText(tszText, sizeof(tszText)/sizeof(tszText[0]));
|
|
|
|
if(m_tchStrArray[s_PageInfo[dw].eValStrNum])
|
|
{
|
|
if(_tcscmp(m_tchStrArray[s_PageInfo[dw].eValStrNum], tszText) == 0)
|
|
{
|
|
continue;
|
|
}
|
|
}
|
|
|
|
MemFree(m_tchStrArray[s_PageInfo[dw].eValStrNum]);
|
|
m_tchStrArray[s_PageInfo[dw].eValStrNum] = NULL;
|
|
|
|
dwLen = _tcslen(tszText);
|
|
if(0 == dwLen)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
//
|
|
// copy string into FAX_PERSONAL_PROFILE structure
|
|
//
|
|
m_tchStrArray[s_PageInfo[dw].eValStrNum] = (TCHAR*)MemAlloc(sizeof(TCHAR)*(dwLen+1));
|
|
if(!m_tchStrArray[s_PageInfo[dw].eValStrNum])
|
|
{
|
|
dwRes = ERROR_NOT_ENOUGH_MEMORY;
|
|
CALL_FAIL (MEM_ERR, TEXT("MemAlloc"), dwRes);
|
|
break;
|
|
}
|
|
|
|
_tcscpy(m_tchStrArray[s_PageInfo[dw].eValStrNum], tszText);
|
|
}
|
|
|
|
//
|
|
// save user info into the registry
|
|
//
|
|
HRESULT hResult;
|
|
if(ERROR_SUCCESS == dwRes)
|
|
{
|
|
hResult = FaxSetSenderInformation(&m_PersonalProfile);
|
|
if(S_OK != hResult)
|
|
{
|
|
dwRes = hResult;
|
|
CALL_FAIL (GENERAL_ERR, TEXT("FaxSetSenderInformation"), hResult);
|
|
}
|
|
}
|
|
|
|
|
|
return dwRes;
|
|
|
|
} // CUserInfoDlg::Save
|
|
|