Source code of Windows XP (NT5)
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.
 
 
 
 
 
 

738 lines
22 KiB

//Copyright (c) 1998 - 1999 Microsoft Corporation
#include "precomp.h"
#include "propdlgs.h"
LRW_DLG_INT CALLBACK
PropModeDlgProc(
IN HWND hwnd,
IN UINT uMsg,
IN WPARAM wParam,
IN LPARAM lParam
)
{
DWORD dwRetCode = ERROR_SUCCESS;
BOOL bStatus = TRUE;
switch (uMsg)
{
case WM_INITDIALOG:
{
TCHAR lpBuffer[ 512];
LVFINDINFO lvFindInfo;
int nItem = 0;
HWND hWndComboBox = GetDlgItem(hwnd,IDC_COMBO_MODE);
HWND hWndListBox = GetDlgItem(hwnd, IDC_COUNTRYREGION );
{
LV_COLUMN lvColumn;
TCHAR lpszHeader[ 128];
lvColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvColumn.fmt = LVCFMT_LEFT;
lvColumn.cx = 250;
LoadString(GetInstanceHandle(), IDS_COUNTRYREGION_HEADER, lpszHeader, sizeof(lpszHeader)/sizeof(TCHAR));
lvColumn.pszText = lpszHeader;
ListView_InsertColumn(hWndListBox, 0, &lvColumn);
lvColumn.pszText = _TEXT("");
lvColumn.cx = 0;
ListView_InsertColumn(hWndListBox, 1, &lvColumn);
}
memset(lpBuffer,0,sizeof(lpBuffer));
dwRetCode = LoadString(GetInstanceHandle(), IDS_INTERNETMODE, lpBuffer, 512);
ComboBox_AddString(hWndComboBox,lpBuffer);
memset(lpBuffer,0,sizeof(lpBuffer));
dwRetCode = LoadString(GetInstanceHandle(), IDS_WWWMODE, lpBuffer, 512);
ComboBox_AddString(hWndComboBox,lpBuffer);
memset(lpBuffer,0,sizeof(lpBuffer));
dwRetCode = LoadString(GetInstanceHandle(), IDS_TELEPHONEMODE, lpBuffer, 512);
ComboBox_AddString(hWndComboBox,lpBuffer);
//
// Set the Current Activation Method
//
GetGlobalContext()->SetLSProp_ActivationMethod(GetGlobalContext()->GetActivationMethod());
ListView_DeleteAllItems(GetDlgItem(hwnd, IDC_COUNTRYREGION));
if(GetGlobalContext()->GetActivationMethod() == CONNECTION_INTERNET ||
GetGlobalContext()->GetActivationMethod() == CONNECTION_DEFAULT)
{
ComboBox_SetCurSel(hWndComboBox, 0);
EnableWindow(GetDlgItem(hwnd,IDC_LBL_COUNTRYREGION),FALSE);
EnableWindow(GetDlgItem(hwnd, IDC_COUNTRYREGION),FALSE);
}
if(GetGlobalContext()->GetActivationMethod() == CONNECTION_WWW )
{
ComboBox_SetCurSel(hWndComboBox, 1);
EnableWindow(GetDlgItem(hwnd,IDC_LBL_COUNTRYREGION),FALSE);
EnableWindow(GetDlgItem(hwnd, IDC_COUNTRYREGION),FALSE);
}
if(GetGlobalContext()->GetActivationMethod() == CONNECTION_PHONE )
{
ComboBox_SetCurSel(hWndComboBox, 2);
EnableWindow(GetDlgItem(hwnd,IDC_LBL_COUNTRYREGION),TRUE);
EnableWindow(hWndListBox,TRUE);
dwRetCode = PopulateCountryRegionComboBox(hWndListBox);
if (dwRetCode != ERROR_SUCCESS)
{
LRMessageBox(hwnd, dwRetCode, LRGetLastError());
}
memset(&lvFindInfo,0,sizeof(lvFindInfo));
lvFindInfo.flags = LVFI_STRING;
lvFindInfo.psz = GetGlobalContext()->GetContactDataObject()->sCSRPhoneRegion;
nItem = ListView_FindItem(hWndListBox,-1,&lvFindInfo);
ListView_SetItemState(hWndListBox,nItem,LVIS_SELECTED,LVIS_SELECTED);
ListView_SetSelectionMark(hWndListBox,nItem);
ListView_SetSelectionMark(hWndListBox,nItem);
}
}
break;
case WM_COMMAND:
if(HIWORD(wParam) == CBN_SELCHANGE && LOWORD(wParam) == IDC_COMBO_MODE)
{
LVFINDINFO lvFindInfo;
int nItem = 0;
HWND hWndListBox = GetDlgItem(hwnd, IDC_COUNTRYREGION );
HWND hWndComboBox = GetDlgItem(hwnd,IDC_COMBO_MODE);
SetReFresh(1);
dwRetCode = ComboBox_GetCurSel((HWND)lParam);
ListView_DeleteAllItems(hWndListBox);
//Enable Country/Region List Box in case of Telephone
if(dwRetCode == 2)
{
EnableWindow(GetDlgItem(hwnd,IDC_LBL_COUNTRYREGION),TRUE);
EnableWindow(hWndListBox,TRUE);
GetGlobalContext()->SetLSProp_ActivationMethod(CONNECTION_PHONE);
dwRetCode = PopulateCountryRegionComboBox(hWndListBox);
if (dwRetCode != ERROR_SUCCESS)
{
LRMessageBox(hwnd, dwRetCode, LRGetLastError());
}
memset(&lvFindInfo,0,sizeof(lvFindInfo));
lvFindInfo.flags = LVFI_STRING;
lvFindInfo.psz = GetGlobalContext()->GetContactDataObject()->sCSRPhoneRegion;
nItem = ListView_FindItem(hWndListBox,-1,&lvFindInfo);
ListView_SetItemState(hWndListBox,nItem,LVIS_SELECTED,LVIS_SELECTED);
ListView_SetSelectionMark(hWndListBox,nItem);
ListView_SetSelectionMark(hWndListBox,nItem);
}
else
{
if(dwRetCode == 0) // Internet
{
GetGlobalContext()->SetLSProp_ActivationMethod(CONNECTION_INTERNET);
}
else
{
GetGlobalContext()->SetLSProp_ActivationMethod(CONNECTION_WWW);
}
EnableWindow(GetDlgItem(hwnd,IDC_LBL_COUNTRYREGION),FALSE);
EnableWindow(hWndListBox,FALSE);
}
}
break;
case WM_DESTROY:
LRW_SETWINDOWLONG( hwnd, LRW_GWL_USERDATA, NULL );
break;
case WM_NOTIFY:
{
LPNMHDR pnmh = (LPNMHDR)lParam;
switch( pnmh->code )
{
case PSN_SETACTIVE:
break;
case PSN_APPLY:
{
HWND hWndComboBox = GetDlgItem(hwnd,IDC_COMBO_MODE);
HWND hWndListBox = GetDlgItem(hwnd, IDC_COUNTRYREGION );
long lReturnStatus = PSNRET_NOERROR;
TCHAR szItemText[255];
int nItem = 0;
dwRetCode = ComboBox_GetCurSel(hWndComboBox);
assert(dwRetCode >= 0 && dwRetCode <= 2);
//Internet
if(dwRetCode == 0)
{
GetGlobalContext()->SetActivationMethod(CONNECTION_INTERNET);
}
// WWW
if(dwRetCode == 1)
{
GetGlobalContext()->SetActivationMethod(CONNECTION_WWW);
}
// Phone
if(dwRetCode == 2)
{
TCHAR lpVal[ 128];
GetGlobalContext()->SetActivationMethod(CONNECTION_PHONE);
nItem = ListView_GetSelectionMark(hWndListBox);
if(nItem == -1)
{
LRMessageBox(hwnd, IDS_ERR_NOCOUNTRYSELECTED, 0);
lReturnStatus = PSNRET_INVALID_NOCHANGEPAGE;
goto done;
}
ListView_GetItemText(hWndListBox,nItem,0,szItemText,sizeof(szItemText)/sizeof(TCHAR));
GetGlobalContext()->SetInRegistery(REG_LRWIZ_CSPHONEREGION,szItemText);
LVITEM lvItem;
lvItem.mask = LVIF_TEXT;
lvItem.iItem = nItem;
lvItem.iSubItem = 1;
lvItem.pszText = lpVal;
lvItem.cchTextMax = 128;
ListView_GetItem(hWndListBox, &lvItem);
GetGlobalContext()->SetCSRNumber(lpVal);
}
done:
if(lReturnStatus != PSNRET_NOERROR)
PropSheet_SetCurSel(GetParent(hwnd),NULL,PG_NDX_PROP_MODE);
LRW_SETWINDOWLONG(hwnd, LRW_DWL_MSGRESULT, lReturnStatus);
}
break;
default:
bStatus = FALSE;
break;
}
}
break;
default:
bStatus = FALSE;
break;
}
return bStatus;
}
LRW_DLG_INT CALLBACK
PropProgramDlgProc(
IN HWND hwnd,
IN UINT uMsg,
IN WPARAM wParam,
IN LPARAM lParam
)
{
BOOL bStatus = TRUE;
static BOOL bIsFirstTime = TRUE ; //Ignore the first click in the radio buttons (solve Bug #439)
static int iSelectedOption = IDC_RD_REG_SELECT;
switch (uMsg)
{
case WM_INITDIALOG:
{
TCHAR szBuffer[ 1024];
bIsFirstTime = TRUE ;
if(GetGlobalContext()->GetContactDataObject()->sProgramName == PROGRAM_SELECT)
{
SendDlgItemMessage(hwnd,IDC_RD_REG_SELECT,BM_SETCHECK,(WPARAM)BST_CHECKED,(LPARAM)0);
LoadString(GetInstanceHandle(), IDS_SELECT_DESCRIPTION,
szBuffer, sizeof(szBuffer)/sizeof(TCHAR));
SendDlgItemMessage(hwnd, IDC_DESCRIPTION,
WM_SETTEXT,(WPARAM)0,
(LPARAM)(LPCTSTR)szBuffer);
SetFocus(GetDlgItem(hwnd, IDC_RD_REG_SELECT));
iSelectedOption = IDC_RD_REG_SELECT;
}
else if(GetGlobalContext()->GetContactDataObject()->sProgramName == PROGRAM_MOLP)
{
SendDlgItemMessage(hwnd,IDC_RD_REG_MOLP,BM_SETCHECK,(WPARAM)BST_CHECKED,(LPARAM)0);
LoadString(GetInstanceHandle(), IDS_OPEN_DESCRIPTION,
szBuffer, sizeof(szBuffer)/sizeof(TCHAR));
SendDlgItemMessage(hwnd, IDC_DESCRIPTION,
WM_SETTEXT,(WPARAM)0,
(LPARAM)(LPCTSTR)szBuffer);
SetFocus(GetDlgItem(hwnd, IDC_RD_REG_MOLP));
iSelectedOption = IDC_RD_REG_MOLP;
}
else if(GetGlobalContext()->GetContactDataObject()->sProgramName == PROGRAM_RETAIL)
{
SendDlgItemMessage(hwnd,IDC_RD_REG_OTHER,BM_SETCHECK,(WPARAM)BST_CHECKED,(LPARAM)0);
LoadString(GetInstanceHandle(), IDS_OTHER_DESCRIPTION,
szBuffer, sizeof(szBuffer)/sizeof(TCHAR));
SendDlgItemMessage(hwnd, IDC_DESCRIPTION,
WM_SETTEXT,(WPARAM)0,
(LPARAM)(LPCTSTR)szBuffer);
SetFocus(GetDlgItem(hwnd, IDC_RD_REG_OTHER));
iSelectedOption = IDC_RD_REG_OTHER;
}
else //By default Check the first RADIO button.
{
SendDlgItemMessage(hwnd,IDC_RD_REG_SELECT,BM_SETCHECK,(WPARAM)BST_CHECKED,(LPARAM)0);
LoadString(GetInstanceHandle(), IDS_SELECT_DESCRIPTION,
szBuffer, sizeof(szBuffer)/sizeof(TCHAR));
SendDlgItemMessage(hwnd, IDC_DESCRIPTION,
WM_SETTEXT,(WPARAM)0,
(LPARAM)(LPCTSTR)szBuffer);
SetFocus(GetDlgItem(hwnd, IDC_RD_REG_SELECT));
iSelectedOption = IDC_RD_REG_SELECT;
}
}
break;
case WM_DESTROY:
LRW_SETWINDOWLONG( hwnd, LRW_GWL_USERDATA, NULL );
break;
case WM_COMMAND:
if (HIWORD(wParam) == BN_CLICKED)
{
TCHAR szBuffer[ 1024];
switch ( LOWORD(wParam) ) //from which control
{
case IDC_RD_REG_SELECT:
if (bIsFirstTime == TRUE){ //Ignore the first click (solve Bug #439)
SetFocus(GetDlgItem(hwnd, iSelectedOption));
}
else
{
LoadString(GetInstanceHandle(), IDS_SELECT_DESCRIPTION, szBuffer, sizeof(szBuffer)/sizeof(TCHAR));
SendDlgItemMessage(hwnd, IDC_DESCRIPTION, WM_SETTEXT,(WPARAM)0, (LPARAM)(LPCTSTR)szBuffer);
}
break;
case IDC_RD_REG_MOLP:
LoadString(GetInstanceHandle(), IDS_OPEN_DESCRIPTION, szBuffer, sizeof(szBuffer)/sizeof(TCHAR));
SendDlgItemMessage(hwnd, IDC_DESCRIPTION, WM_SETTEXT,(WPARAM)0, (LPARAM)(LPCTSTR)szBuffer);
break;
case IDC_RD_REG_OTHER:
LoadString(GetInstanceHandle(), IDS_OTHER_DESCRIPTION, szBuffer, sizeof(szBuffer)/sizeof(TCHAR));
SendDlgItemMessage(hwnd, IDC_DESCRIPTION, WM_SETTEXT,(WPARAM)0, (LPARAM)(LPCTSTR)szBuffer);
break;
}
bIsFirstTime = FALSE ;
}
break;
case WM_NOTIFY:
{
LPNMHDR pnmh = (LPNMHDR)lParam;
switch( pnmh->code )
{
case PSN_SETACTIVE:
break;
case PSN_APPLY:
{
if(SendDlgItemMessage(hwnd,IDC_RD_REG_SELECT,BM_GETCHECK,(WPARAM)0,(LPARAM)0) == BST_CHECKED)
{
GetGlobalContext()->SetInRegistery(szOID_BUSINESS_CATEGORY,PROGRAM_SELECT);
//GetGlobalContext()->SetEncodedInRegistry(szOID_BUSINESS_CATEGORY,PROGRAM_SELECT);
}
else if (SendDlgItemMessage(hwnd,IDC_RD_REG_MOLP,BM_GETCHECK,(WPARAM)0,(LPARAM)0) == BST_CHECKED)
{
GetGlobalContext()->SetInRegistery(szOID_BUSINESS_CATEGORY,PROGRAM_MOLP);
}
else
{
GetGlobalContext()->SetInRegistery(szOID_BUSINESS_CATEGORY,PROGRAM_RETAIL);
}
}
break;
default:
bStatus = FALSE;
break;
}
}
break;
default:
bStatus = FALSE;
break;
}
return bStatus;
}
LRW_DLG_INT CALLBACK
PropCustInfoADlgProc(
IN HWND hwnd,
IN UINT uMsg,
IN WPARAM wParam,
IN LPARAM lParam
)
{
BOOL bStatus = TRUE;
switch (uMsg)
{
case WM_INITDIALOG:
SendDlgItemMessage (hwnd , IDC_TXT_COMPANYNAME, EM_SETLIMITTEXT, CA_COMPANY_NAME_LEN,0);
SendDlgItemMessage (hwnd , IDC_TXT_ORGUNIT , EM_SETLIMITTEXT, CA_ORG_UNIT_LEN,0);
SendDlgItemMessage (hwnd , IDC_TXT_LNAME, EM_SETLIMITTEXT, CA_NAME_LEN,0);
SendDlgItemMessage (hwnd , IDC_TXT_FNAME, EM_SETLIMITTEXT, CA_NAME_LEN,0);
SendDlgItemMessage (hwnd , IDC_TXT_PHONE, EM_SETLIMITTEXT, CA_PHONE_LEN,0);
SendDlgItemMessage (hwnd , IDC_TXT_EMAIL, EM_SETLIMITTEXT, CA_EMAIL_LEN,0);
SendDlgItemMessage (hwnd , IDC_TXT_FAX, EM_SETLIMITTEXT, CA_FAX_LEN,0);
//
//Populate the values which were read from the Registry during Global Init
//
//
//Populate the values which were read from the Registry during Global Init
//
SetDlgItemText(hwnd,IDC_TXT_LNAME, GetGlobalContext()->GetContactDataObject()->sContactLName);
SetDlgItemText(hwnd,IDC_TXT_FNAME, GetGlobalContext()->GetContactDataObject()->sContactFName);
SetDlgItemText(hwnd,IDC_TXT_PHONE, GetGlobalContext()->GetContactDataObject()->sContactPhone);
SetDlgItemText(hwnd,IDC_TXT_FAX, GetGlobalContext()->GetContactDataObject()->sContactFax);
SetDlgItemText(hwnd,IDC_TXT_EMAIL, GetGlobalContext()->GetContactDataObject()->sContactEmail);
SetDlgItemText(hwnd,IDC_TXT_COMPANYNAME, GetGlobalContext()->GetContactDataObject()->sCompanyName);
SetDlgItemText(hwnd,IDC_TXT_ORGUNIT, GetGlobalContext()->GetContactDataObject()->sOrgUnit);
break;
case WM_DESTROY:
LRW_SETWINDOWLONG( hwnd, LRW_GWL_USERDATA, NULL );
break;
case WM_NOTIFY:
{
LPNMHDR pnmh = (LPNMHDR)lParam;
switch( pnmh->code )
{
case PSN_SETACTIVE:
{
TCHAR szBuf[ 255];
LoadString(GetInstanceHandle(),IDS_FAXOPTION_LABEL,szBuf,sizeof(szBuf)/sizeof(TCHAR));
SetDlgItemText(hwnd, IDC_LBL_FAX, szBuf);
if (GetGlobalContext()->GetLSProp_ActivationMethod() == CONNECTION_INTERNET)
{
LoadString(GetInstanceHandle(),IDS_EMAIL_LABEL,szBuf,sizeof(szBuf)/sizeof(TCHAR));
}
else
{
LoadString(GetInstanceHandle(),IDS_EMAILOPTION_LABEL,szBuf,sizeof(szBuf)/sizeof(TCHAR));
}
SetDlgItemText(hwnd, IDC_LBL_EMAIL, szBuf);
}
break;
case PSN_APPLY:
{
CString sCompanyName;
CString sOrgUnit;
CString sLastName;
CString sFirstName;
CString sPhone;
CString sFax;
CString sEmail;
LPTSTR lpVal = NULL;
long lReturnStatus = PSNRET_NOERROR;
//Read all the fields
lpVal = sCompanyName.GetBuffer(CA_COMPANY_NAME_LEN+1);
GetDlgItemText(hwnd,IDC_TXT_COMPANYNAME,lpVal,CA_COMPANY_NAME_LEN+1);
sCompanyName.ReleaseBuffer(-1);
lpVal = sOrgUnit.GetBuffer(CA_ORG_UNIT_LEN+1);
GetDlgItemText(hwnd,IDC_TXT_ORGUNIT,lpVal,CA_ORG_UNIT_LEN+1);
sOrgUnit.ReleaseBuffer(-1);
lpVal = sLastName.GetBuffer(CA_NAME_LEN+1);
GetDlgItemText(hwnd,IDC_TXT_LNAME,lpVal,CA_NAME_LEN+1);
sLastName.ReleaseBuffer(-1);
lpVal = sFirstName.GetBuffer(CA_NAME_LEN+1);
GetDlgItemText(hwnd,IDC_TXT_FNAME,lpVal,CA_NAME_LEN+1);
sFirstName.ReleaseBuffer(-1);
lpVal = sPhone.GetBuffer(CA_PHONE_LEN+1);
GetDlgItemText(hwnd,IDC_TXT_PHONE,lpVal,CA_PHONE_LEN+1);
sPhone.ReleaseBuffer(-1);
lpVal = sFax.GetBuffer(CA_FAX_LEN+1);
GetDlgItemText(hwnd,IDC_TXT_FAX,lpVal,CA_FAX_LEN+1);
sFax.ReleaseBuffer(-1);
lpVal = sEmail.GetBuffer(CA_EMAIL_LEN+1);
GetDlgItemText(hwnd,IDC_TXT_EMAIL,lpVal,CA_EMAIL_LEN+1);
sEmail.ReleaseBuffer(-1);
sFirstName.TrimLeft(); sFirstName.TrimRight();
sLastName.TrimLeft(); sLastName.TrimRight();
sPhone.TrimLeft(); sPhone.TrimRight();
sFax.TrimLeft(); sFax.TrimRight();
sEmail.TrimLeft(); sEmail.TrimRight();
sCompanyName.TrimLeft(); sCompanyName.TrimRight();
sOrgUnit.TrimLeft(); sOrgUnit.TrimRight();
if(sLastName.IsEmpty() || sFirstName.IsEmpty() || sCompanyName.IsEmpty() ||
(sEmail.IsEmpty() && GetGlobalContext()->GetLSProp_ActivationMethod() == CONNECTION_INTERNET))
{
LRMessageBox(hwnd,IDS_ERR_FIELD_EMPTY);
lReturnStatus = PSNRET_INVALID_NOCHANGEPAGE;
goto done;
}
//
// Check for the Invalid Characters
//
if( !ValidateLRString(sFirstName) ||
!ValidateLRString(sLastName) ||
!ValidateLRString(sPhone) ||
!ValidateLRString(sEmail) ||
!ValidateLRString(sFax)
)
{
LRMessageBox(hwnd,IDS_ERR_INVALID_CHAR);
lReturnStatus = PSNRET_INVALID_NOCHANGEPAGE;
goto done;
}
//
// Validate email address if not empty
//
if(!sEmail.IsEmpty())
{
if(!ValidateEmailId(sEmail))
{
LRMessageBox(hwnd,IDS_ERR_INVALID_EMAIL);
lReturnStatus = PSNRET_INVALID_NOCHANGEPAGE;
goto done;
}
}
// Put into regsitery too
GetGlobalContext()->SetInRegistery(szOID_RSA_emailAddr, (LPCTSTR) sEmail);
GetGlobalContext()->SetInRegistery(szOID_COMMON_NAME, sFirstName);
GetGlobalContext()->SetInRegistery(szOID_SUR_NAME, sLastName);
GetGlobalContext()->SetInRegistery(szOID_TELEPHONE_NUMBER, sPhone);
GetGlobalContext()->SetInRegistery(szOID_FACSIMILE_TELEPHONE_NUMBER, sFax);
GetGlobalContext()->SetInRegistery(szOID_ORGANIZATION_NAME, sCompanyName);
GetGlobalContext()->SetInRegistery(szOID_ORGANIZATIONAL_UNIT_NAME, sOrgUnit);
done:
if(lReturnStatus != PSNRET_NOERROR)
PropSheet_SetCurSel(GetParent(hwnd),NULL,PG_NDX_PROP_CUSTINFO_a);
LRW_SETWINDOWLONG(hwnd, LRW_DWL_MSGRESULT, lReturnStatus);
}
break;
default:
bStatus = FALSE;
break;
}
}
break;
default:
bStatus = FALSE;
break;
}
return bStatus;
}
LRW_DLG_INT CALLBACK
PropCustInfoBDlgProc(
IN HWND hwnd,
IN UINT uMsg,
IN WPARAM wParam,
IN LPARAM lParam
)
{
BOOL bStatus = TRUE;
CString sCountryDesc;
switch (uMsg)
{
case WM_INITDIALOG:
SendDlgItemMessage (hwnd , IDC_TXT_ADDRESS1, EM_SETLIMITTEXT, CA_ADDRESS_LEN,0);
SendDlgItemMessage (hwnd , IDC_TXT_CITY, EM_SETLIMITTEXT, CA_CITY_LEN,0);
SendDlgItemMessage (hwnd , IDC_TXT_STATE, EM_SETLIMITTEXT, CA_STATE_LEN,0);
SendDlgItemMessage (hwnd , IDC_TXT_ZIP, EM_SETLIMITTEXT, CA_ZIP_LEN,0);
PopulateCountryComboBox(GetDlgItem(hwnd,IDC_COMBO1));
//
//Populate the values which were read from the Registry during Global Init
//
SetDlgItemText(hwnd,IDC_TXT_ADDRESS1, GetGlobalContext()->GetContactDataObject()->sContactAddress);
SetDlgItemText(hwnd,IDC_TXT_CITY , GetGlobalContext()->GetContactDataObject()->sCity);
SetDlgItemText(hwnd,IDC_TXT_STATE , GetGlobalContext()->GetContactDataObject()->sState);
SetDlgItemText(hwnd,IDC_TXT_ZIP , GetGlobalContext()->GetContactDataObject()->sZip);
GetCountryDesc(
GetGlobalContext()->GetContactDataObject()->sCountryCode,
sCountryDesc.GetBuffer(LR_COUNTRY_DESC_LEN+1));
sCountryDesc.ReleaseBuffer();
ComboBox_SetCurSel(
GetDlgItem(hwnd,IDC_COMBO1),
ComboBox_FindStringExact(
GetDlgItem(hwnd,IDC_COMBO1),
0,
(LPCTSTR)sCountryDesc));
break;
case WM_DESTROY:
LRW_SETWINDOWLONG( hwnd, LRW_GWL_USERDATA, NULL );
break;
case WM_NOTIFY:
{
LPNMHDR pnmh = (LPNMHDR)lParam;
switch( pnmh->code )
{
case PSN_SETACTIVE:
break;
case PSN_APPLY:
{
LPTSTR lpVal = NULL;
CString sAddress1;
CString sCity;
CString sState;
CString sZip;
CString sCountryDesc;
CString sCountryCode;
int nCurSel = -1;
long lReturnStatus = PSNRET_NOERROR;
//
//Read all the fields
//
lpVal = sAddress1.GetBuffer(CA_ADDRESS_LEN+1);
GetDlgItemText(hwnd,IDC_TXT_ADDRESS1,lpVal,CA_ADDRESS_LEN+1);
sAddress1.ReleaseBuffer(-1);
lpVal = sCity.GetBuffer(CA_CITY_LEN+1);
GetDlgItemText(hwnd,IDC_TXT_CITY,lpVal,CA_CITY_LEN+1);
sCity.ReleaseBuffer(-1);
lpVal = sState.GetBuffer(CA_STATE_LEN+1);
GetDlgItemText(hwnd,IDC_TXT_STATE,lpVal,CA_STATE_LEN+1);
sState.ReleaseBuffer(-1);
lpVal = sZip.GetBuffer(CA_ZIP_LEN+1);
GetDlgItemText(hwnd,IDC_TXT_ZIP,lpVal,CA_ZIP_LEN+1);
sZip.ReleaseBuffer(-1);
nCurSel = ComboBox_GetCurSel(GetDlgItem(hwnd,IDC_COMBO1));
lpVal = sCountryDesc.GetBuffer(LR_COUNTRY_DESC_LEN+1);
ComboBox_GetLBText(GetDlgItem(hwnd,IDC_COMBO1), nCurSel, lpVal);
sCountryDesc.ReleaseBuffer(-1);
sAddress1.TrimLeft(); sAddress1.TrimRight();
sCity.TrimLeft(); sCity.TrimRight();
sState.TrimLeft(); sState.TrimRight();
sZip.TrimLeft(); sZip.TrimRight();
sCountryDesc.TrimLeft();sCountryDesc.TrimRight();
if(
!ValidateLRString(sAddress1) ||
!ValidateLRString(sCity) ||
!ValidateLRString(sState) ||
!ValidateLRString(sZip) ||
!ValidateLRString(sCountryDesc)
)
{
LRMessageBox(hwnd,IDS_ERR_INVALID_CHAR);
lReturnStatus = PSNRET_INVALID_NOCHANGEPAGE;
goto done;
}
if (sCountryDesc.IsEmpty())
{
LRMessageBox(hwnd,IDS_ERR_FIELD_EMPTY);
lReturnStatus = PSNRET_INVALID_NOCHANGEPAGE;
goto done;
}
lpVal = sCountryCode.GetBuffer(LR_COUNTRY_CODE_LEN+1);
GetCountryCode(sCountryDesc,lpVal);
sCountryCode.ReleaseBuffer(-1);
GetGlobalContext()->SetInRegistery(szOID_LOCALITY_NAME, sCity);
GetGlobalContext()->SetInRegistery(szOID_COUNTRY_NAME, sCountryDesc);
GetGlobalContext()->SetInRegistery(szOID_DESCRIPTION, sCountryCode);
GetGlobalContext()->SetInRegistery(szOID_STREET_ADDRESS, sAddress1);
GetGlobalContext()->SetInRegistery(szOID_POSTAL_CODE, sZip);
GetGlobalContext()->SetInRegistery(szOID_STATE_OR_PROVINCE_NAME, sState);
done:
if(lReturnStatus != PSNRET_NOERROR)
PropSheet_SetCurSel(GetParent(hwnd),NULL,PG_NDX_PROP_CUSTINFO_b);
LRW_SETWINDOWLONG(hwnd, LRW_DWL_MSGRESULT, lReturnStatus);
}
break;
default:
bStatus = FALSE;
break;
}
}
break;
default:
bStatus = FALSE;
break;
}
return bStatus;
}