Windows2003-3790/termsrv/license/lrwizapi/propdlgs.cpp
2020-09-30 16:53:55 +02:00

540 lines
17 KiB
C++

//Copyright (c) 1998 - 2001 Microsoft Corporation
#include "licensetype.h"
#include "fonts.h"
#include "mode.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_MODEOFREG);
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);
HWND hCountryRegion = GetDlgItem(hwnd, IDC_PHONE_COUNTRYREGION);
// Set the Current Activation Method
GetGlobalContext()->SetLSProp_ActivationMethod(GetGlobalContext()->GetActivationMethod());
ComboBox_ResetContent(hCountryRegion);
if(GetGlobalContext()->GetActivationMethod() == CONNECTION_INTERNET ||
GetGlobalContext()->GetActivationMethod() == CONNECTION_DEFAULT)
{
ComboBox_SetCurSel(hWndComboBox, 0);
EnableWindow(hCountryRegion,FALSE);
EnableWindow(GetDlgItem(hwnd, IDC_COUNTRYREGION_LABEL), FALSE);
}
if(GetGlobalContext()->GetActivationMethod() == CONNECTION_WWW )
{
ComboBox_SetCurSel(hWndComboBox, 1);
EnableWindow(hCountryRegion,FALSE);
EnableWindow(GetDlgItem(hwnd, IDC_COUNTRYREGION_LABEL), FALSE);
}
if(GetGlobalContext()->GetActivationMethod() == CONNECTION_PHONE )
{
ComboBox_SetCurSel(hWndComboBox, 2);
dwRetCode = PopulateCountryRegionComboBox(hCountryRegion);
if (dwRetCode != ERROR_SUCCESS)
{
LRMessageBox(hwnd, dwRetCode, NULL, LRGetLastError());
}
nItem = ComboBox_FindStringExact(hCountryRegion, -1, GetGlobalContext()->GetContactDataObject()->sCSRPhoneRegion);
ComboBox_SetCurSel(hCountryRegion, nItem);
EnableWindow(hCountryRegion,TRUE);
EnableWindow(GetDlgItem(hwnd, IDC_COUNTRYREGION_LABEL), TRUE);
}
SetDlgItemText(hwnd, IDC_LABEL_PRODUCTID, GetGlobalContext()->GetLicenseServerID());
}
SetConnectionMethodText(hwnd);
break;
case WM_COMMAND:
if(HIWORD(wParam) == CBN_SELCHANGE && LOWORD(wParam) == IDC_MODEOFREG)
{
LVFINDINFO lvFindInfo;
int nItem = 0;
HWND hWndComboBox = GetDlgItem(hwnd,IDC_MODEOFREG);
HWND hCountryRegion = GetDlgItem(hwnd, IDC_PHONE_COUNTRYREGION);
SetReFresh(1);
dwRetCode = ComboBox_GetCurSel((HWND)lParam);
ComboBox_ResetContent(hCountryRegion);
//Enable Country/Region List Box in case of Telephone
if(dwRetCode == 2)
{
GetGlobalContext()->SetLSProp_ActivationMethod(CONNECTION_PHONE);
dwRetCode = PopulateCountryRegionComboBox(hCountryRegion);
if (dwRetCode != ERROR_SUCCESS)
{
LRMessageBox(hwnd, dwRetCode, NULL, LRGetLastError());
}
nItem = ComboBox_FindStringExact(hCountryRegion, -1, GetGlobalContext()->GetContactDataObject()->sCSRPhoneRegion);
ComboBox_SetCurSel(hCountryRegion, nItem);
EnableWindow(hCountryRegion,TRUE);
EnableWindow(GetDlgItem(hwnd, IDC_COUNTRYREGION_LABEL), TRUE);
}
else
{
if(dwRetCode == 0) // Internet
{
GetGlobalContext()->SetLSProp_ActivationMethod(CONNECTION_INTERNET);
}
else
{
GetGlobalContext()->SetLSProp_ActivationMethod(CONNECTION_WWW);
}
EnableWindow(hCountryRegion,FALSE);
EnableWindow(GetDlgItem(hwnd, IDC_COUNTRYREGION_LABEL), FALSE);
}
SetConnectionMethodText(hwnd);
}
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_MODEOFREG);
HWND hCountryRegion = GetDlgItem(hwnd, IDC_PHONE_COUNTRYREGION );
long lReturnStatus = PSNRET_NOERROR;
TCHAR szItemText[MAX_COUNTRY_NAME_LENGTH + 1];
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)
{
GetGlobalContext()->SetActivationMethod(CONNECTION_PHONE);
nItem = ComboBox_GetCurSel(hCountryRegion);
if(nItem == -1)
{
LRMessageBox(hwnd, IDS_ERR_NOCOUNTRYSELECTED);
lReturnStatus = PSNRET_INVALID_NOCHANGEPAGE;
goto done;
}
ComboBox_GetLBText(hCountryRegion, nItem, szItemText);
GetGlobalContext()->SetInRegistry(REG_LRWIZ_CSPHONEREGION,szItemText);
TCHAR szPhoneNumber[128];
GetGlobalContext()->ReadPhoneNumberFromRegistry(szItemText, szPhoneNumber, (DWORD)sizeof(szPhoneNumber));
GetGlobalContext()->SetCSRNumber(szPhoneNumber);
}
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
PropCustInfoADlgProc(
IN HWND hwnd,
IN UINT uMsg,
IN WPARAM wParam,
IN LPARAM lParam
)
{
BOOL bStatus = TRUE;
CString sCountryDesc;
CString sCountryCode;
switch (uMsg)
{
case WM_INITDIALOG:
SendDlgItemMessage (hwnd , IDC_TXT_COMPANYNAME, EM_SETLIMITTEXT, CA_COMPANY_NAME_LEN,0);
SendDlgItemMessage (hwnd , IDC_TXT_LNAME, EM_SETLIMITTEXT, CA_NAME_LEN,0);
SendDlgItemMessage (hwnd , IDC_TXT_FNAME, EM_SETLIMITTEXT, CA_NAME_LEN,0);
//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_COMPANYNAME, GetGlobalContext()->GetContactDataObject()->sCompanyName);
//Set up the country/region combo box
PopulateCountryComboBox(GetDlgItem(hwnd,IDC_COUNTRY_REGION));
GetCountryDesc(GetGlobalContext()->GetContactDataObject()->sCountryCode,
sCountryDesc.GetBuffer(LR_COUNTRY_DESC_LEN+1));
sCountryDesc.ReleaseBuffer();
ComboBox_SetCurSel(GetDlgItem(hwnd,IDC_COUNTRY_REGION),
ComboBox_FindStringExact(GetDlgItem(hwnd, IDC_COUNTRY_REGION), 0, sCountryDesc));
AddHyperLinkToStaticCtl(hwnd, IDC_PRIVACY);
break;
case WM_DESTROY:
LRW_SETWINDOWLONG( hwnd, LRW_GWL_USERDATA, NULL );
break;
case WM_NOTIFY:
{
LPNMHDR pnmh = (LPNMHDR)lParam;
switch( pnmh->code )
{
//Trap keystokes/clicks on the hyperlink
case NM_CHAR:
if( ( ( LPNMCHAR )lParam )->ch != VK_SPACE )
break;
// else fall through
case NM_RETURN:
case NM_CLICK:
DisplayPrivacyHelp();
break;
case PSN_SETACTIVE:
{
TCHAR szBuf[ 255];
LoadString(GetInstanceHandle(),IDS_FAXOPTION_LABEL,szBuf,sizeof(szBuf)/sizeof(TCHAR));
SetDlgItemText(hwnd, IDC_LBL_FAX, szBuf);
AddHyperLinkToStaticCtl(hwnd, IDC_PRIVACY);
}
break;
case PSN_APPLY:
{
CString sCompanyName;
CString sLastName;
CString sFirstName;
CString sCountryDesc;
CString sCountryCode;
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 = 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);
int nCurSel = -1;
nCurSel = ComboBox_GetCurSel(GetDlgItem(hwnd,IDC_COUNTRY_REGION));
lpVal = sCountryDesc.GetBuffer(LR_COUNTRY_DESC_LEN+1);
ComboBox_GetLBText(GetDlgItem(hwnd, IDC_COUNTRY_REGION), nCurSel, lpVal);
sCountryDesc.ReleaseBuffer(-1);
sFirstName.TrimLeft(); sFirstName.TrimRight();
sLastName.TrimLeft(); sLastName.TrimRight();
sCompanyName.TrimLeft(); sCompanyName.TrimRight();
sCountryDesc.TrimLeft();sCountryDesc.TrimRight();
if(sLastName.IsEmpty() || sFirstName.IsEmpty() || sCompanyName.IsEmpty())
{
LRMessageBox(hwnd,IDS_ERR_FIELD_EMPTY);
lReturnStatus = PSNRET_INVALID_NOCHANGEPAGE;
goto done;
}
// Check for the Invalid Characters
if( !ValidateLRString(sFirstName) ||
!ValidateLRString(sLastName) ||
!ValidateLRString(sCountryDesc)
)
{
LRMessageBox(hwnd,IDS_ERR_INVALID_CHAR);
lReturnStatus = PSNRET_INVALID_NOCHANGEPAGE;
goto done;
}
//Check for unselected country/region
if(sCountryDesc.IsEmpty())
{
LRMessageBox(hwnd,IDS_ERR_FIELD_EMPTY);
lReturnStatus = PSNRET_INVALID_NOCHANGEPAGE;
goto done;
}
//Get the country code assicated with the selected country
lpVal = sCountryCode.GetBuffer(LR_COUNTRY_CODE_LEN+1);
if (sCountryDesc.IsEmpty())
lstrcpy(lpVal, _TEXT(""));
else
GetCountryCode(sCountryDesc,lpVal);
sCountryCode.ReleaseBuffer(-1);
// Put into regsitery
GetGlobalContext()->SetInRegistry(szOID_COMMON_NAME, sFirstName);
GetGlobalContext()->SetInRegistry(szOID_SUR_NAME, sLastName);
GetGlobalContext()->SetInRegistry(szOID_ORGANIZATION_NAME, sCompanyName);
GetGlobalContext()->SetInRegistry(szOID_COUNTRY_NAME, sCountryDesc);
GetGlobalContext()->SetInRegistry(szOID_DESCRIPTION, sCountryCode);
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;
switch (uMsg)
{
case WM_INITDIALOG:
SendDlgItemMessage (hwnd , IDC_TXT_EMAIL, EM_SETLIMITTEXT, CA_EMAIL_LEN,0);
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);
SendDlgItemMessage (hwnd , IDC_COMPANY_DIV, EM_SETLIMITTEXT, CA_ORG_UNIT_LEN,0);
//Populate the values which were read from the Registry during Global Init
SetDlgItemText(hwnd,IDC_TXT_EMAIL, GetGlobalContext()->GetContactDataObject()->sContactEmail);
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);
SetDlgItemText(hwnd,IDC_COMPANY_DIV , GetGlobalContext()->GetContactDataObject()->sOrgUnit);
AddHyperLinkToStaticCtl(hwnd, IDC_PRIVACY);
break;
case WM_DESTROY:
LRW_SETWINDOWLONG( hwnd, LRW_GWL_USERDATA, NULL );
break;
case WM_NOTIFY:
{
LPNMHDR pnmh = (LPNMHDR)lParam;
switch( pnmh->code )
{
//Trap keystokes/clicks on the hyperlink
case NM_CHAR:
if( ( ( LPNMCHAR )lParam )->ch != VK_SPACE )
break;
// else fall through
case NM_RETURN:
case NM_CLICK:
DisplayPrivacyHelp();
break;
case PSN_SETACTIVE:
TCHAR szBuf[ 255];
AddHyperLinkToStaticCtl(hwnd, IDC_PRIVACY);
break;
case PSN_APPLY:
{
LPTSTR lpVal = NULL;
CString sAddress1;
CString sCity;
CString sState;
CString sZip;
CString sOrgUnit;
CString sEmail;
int nCurSel = -1;
long lReturnStatus = PSNRET_NOERROR;
//Read all the fields
lpVal = sEmail.GetBuffer(CA_EMAIL_LEN+1);
GetDlgItemText(hwnd,IDC_TXT_EMAIL,lpVal,CA_EMAIL_LEN+1);
sEmail.ReleaseBuffer(-1);
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);
lpVal = sOrgUnit.GetBuffer(CA_ORG_UNIT_LEN+1);
GetDlgItemText(hwnd,IDC_COMPANY_DIV,lpVal,CA_ORG_UNIT_LEN+1);
sOrgUnit.ReleaseBuffer(-1);
sAddress1.TrimLeft(); sAddress1.TrimRight();
sCity.TrimLeft(); sCity.TrimRight();
sState.TrimLeft(); sState.TrimRight();
sZip.TrimLeft(); sZip.TrimRight();
sEmail.TrimLeft(); sEmail.TrimRight();
sOrgUnit.TrimLeft(); sOrgUnit.TrimRight();
if(
!ValidateLRString(sAddress1) ||
!ValidateLRString(sCity) ||
!ValidateLRString(sState) ||
!ValidateLRString(sEmail) ||
!ValidateLRString(sZip) ||
!ValidateLRString(sOrgUnit)
)
{
LRMessageBox(hwnd,IDS_ERR_INVALID_CHAR);
lReturnStatus = PSNRET_INVALID_NOCHANGEPAGE;
goto done;
}
GetGlobalContext()->SetInRegistry(szOID_RSA_emailAddr, (LPCTSTR) sEmail);
GetGlobalContext()->SetInRegistry(szOID_LOCALITY_NAME, sCity);
GetGlobalContext()->SetInRegistry(szOID_STREET_ADDRESS, sAddress1);
GetGlobalContext()->SetInRegistry(szOID_POSTAL_CODE, sZip);
GetGlobalContext()->SetInRegistry(szOID_STATE_OR_PROVINCE_NAME, sState);
GetGlobalContext()->SetInRegistry(szOID_ORGANIZATIONAL_UNIT_NAME, sOrgUnit);
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;
}