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.
243 lines
8.8 KiB
243 lines
8.8 KiB
//*********************************************************************
|
|
//* Microsoft Windows **
|
|
//* Copyright(c) Microsoft Corp., 1994 **
|
|
//*********************************************************************
|
|
|
|
//
|
|
// AREACODE.CPP - Functions for
|
|
//
|
|
|
|
// HISTORY:
|
|
//
|
|
// 05/13/98 donaldm Created.
|
|
//
|
|
//*********************************************************************
|
|
|
|
|
|
#include "pre.h"
|
|
#include "icwextsn.h"
|
|
|
|
long lLastLocationID = -1;
|
|
|
|
void CleanupCombo(HWND hDlg)
|
|
{
|
|
HWND hCombo = GetDlgItem(hDlg, IDC_DIAL_FROM);
|
|
for (int i=0; i < ComboBox_GetCount(hCombo); i++)
|
|
{
|
|
DWORD *pdwTemp = (DWORD*)ComboBox_GetItemData(hCombo, i);
|
|
if (pdwTemp)
|
|
delete pdwTemp;
|
|
}
|
|
ComboBox_ResetContent(GetDlgItem(hDlg, IDC_DIAL_FROM));
|
|
}
|
|
|
|
/*******************************************************************
|
|
|
|
NAME: AreaCodeInitProc
|
|
|
|
SYNOPSIS: Called when page is displayed
|
|
|
|
ENTRY: hDlg - dialog window
|
|
fFirstInit - TRUE if this is the first time the dialog
|
|
is initialized, FALSE if this InitProc has been called
|
|
before (e.g. went past this page and backed up)
|
|
|
|
********************************************************************/
|
|
BOOL CALLBACK AreaCodeInitProc
|
|
(
|
|
HWND hDlg,
|
|
BOOL fFirstInit,
|
|
UINT *puNextPage
|
|
)
|
|
{
|
|
if (!fFirstInit)
|
|
{
|
|
short wNumLocations;
|
|
long lCurrLocIndex;
|
|
DWORD dwCountryCode;
|
|
TCHAR szTemp[MAX_MESSAGE_LEN];
|
|
BOOL bRetVal;
|
|
|
|
if (gpWizardState->cmnStateData.dwFlags & ICW_CFGFLAG_AUTOCONFIG)
|
|
LoadString(g_hInstance, IDS_MANUALOPTS_TITLE, szTemp, MAX_MESSAGE_LEN);
|
|
else
|
|
LoadString(g_hInstance, IDS_STEP1_TITLE, szTemp, MAX_MESSAGE_LEN);
|
|
|
|
PropSheet_SetHeaderTitle(GetParent(hDlg), ORD_PAGE_AREACODE, (LPCSTR)szTemp);
|
|
|
|
// We can skip the page if we have already downloaded
|
|
gpWizardState->pTapiLocationInfo->GetTapiLocationInfo(&bRetVal);
|
|
gpWizardState->pTapiLocationInfo->get_wNumberOfLocations(&wNumLocations, &lCurrLocIndex);
|
|
|
|
// Ensure that we only have only 1 location and we never shwon the areacode page
|
|
// Second part of this check is for case where user had more than 1 location and deleted
|
|
// down to one location. That case, our history told us to come to areacode page but
|
|
// since wNumLocations == 1, we would go back to refdial page.
|
|
if ((1 == wNumLocations) && (-1 == lLastLocationID))
|
|
{
|
|
// We are happy, so advance to the next page
|
|
BSTR bstrAreaCode = NULL;
|
|
|
|
*puNextPage = ORD_PAGE_REFSERVDIAL;
|
|
|
|
gpWizardState->pTapiLocationInfo->get_lCountryCode((long *)&dwCountryCode);
|
|
gpWizardState->pTapiLocationInfo->get_bstrAreaCode(&bstrAreaCode);
|
|
|
|
gpWizardState->cmnStateData.dwCountryCode = dwCountryCode;
|
|
lstrcpy(gpWizardState->cmnStateData.szAreaCode, W2A(bstrAreaCode));
|
|
SysFreeString(bstrAreaCode);
|
|
}
|
|
else
|
|
{
|
|
// We need to have the user enter the area code
|
|
if (wNumLocations)
|
|
{
|
|
int iIndex = 0;
|
|
CleanupCombo(hDlg);
|
|
for (long lIndex=0; lIndex < (long)wNumLocations; lIndex++)
|
|
{
|
|
BSTR bstr = NULL;
|
|
if (S_OK == gpWizardState->pTapiLocationInfo->get_LocationName(lIndex, &bstr))
|
|
{
|
|
iIndex = ComboBox_InsertString(GetDlgItem(hDlg, IDC_DIAL_FROM), lIndex, W2A(bstr));
|
|
}
|
|
SysFreeString(bstr);
|
|
}
|
|
|
|
BSTR bstrCountry = NULL;
|
|
BSTR bstrAreaCode = NULL;
|
|
long lCountryCode = 0;
|
|
ComboBox_SetCurSel( GetDlgItem(hDlg, IDC_DIAL_FROM), lCurrLocIndex );
|
|
if (S_OK == gpWizardState->pTapiLocationInfo->get_LocationInfo(lCurrLocIndex, &gpWizardState->lLocationID, &bstrCountry, &lCountryCode, &bstrAreaCode))
|
|
{
|
|
if (gpWizardState->lLocationID != lLastLocationID)
|
|
{
|
|
gpWizardState->bDoneRefServDownload = FALSE;
|
|
}
|
|
if (-1 == gpWizardState->lDefaultLocationID)
|
|
{
|
|
gpWizardState->lDefaultLocationID = gpWizardState->lLocationID;
|
|
}
|
|
lLastLocationID = gpWizardState->lLocationID;
|
|
gpWizardState->cmnStateData.dwCountryCode = (DWORD) lCountryCode;
|
|
SetWindowText(GetDlgItem(hDlg, IDC_AREACODE), W2A(bstrAreaCode));
|
|
SetWindowText(GetDlgItem(hDlg, IDC_COUNTRY), W2A(bstrCountry));
|
|
}
|
|
|
|
SysFreeString(bstrCountry);
|
|
SysFreeString(bstrAreaCode);
|
|
|
|
}
|
|
}
|
|
}
|
|
// if we've travelled through external apprentice pages,
|
|
// it's easy for our current page pointer to get munged,
|
|
// so reset it here for sanity's sake.
|
|
gpWizardState->uCurrentPage = ORD_PAGE_AREACODE;
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/*******************************************************************
|
|
|
|
NAME: AreaCodeOKProc
|
|
|
|
SYNOPSIS: Called when Next or Back btns pressed from page
|
|
|
|
ENTRY: hDlg - dialog window
|
|
fForward - TRUE if 'Next' was pressed, FALSE if 'Back'
|
|
puNextPage - if 'Next' was pressed,
|
|
proc can fill this in with next page to go to. This
|
|
parameter is ingored if 'Back' was pressed.
|
|
pfKeepHistory - page will not be kept in history if
|
|
proc fills this in with FALSE.
|
|
|
|
EXIT: returns TRUE to allow page to be turned, FALSE
|
|
to keep the same page.
|
|
|
|
********************************************************************/
|
|
BOOL CALLBACK AreaCodeOKProc
|
|
(
|
|
HWND hDlg,
|
|
BOOL fForward,
|
|
UINT *puNextPage,
|
|
BOOL *pfKeepHistory
|
|
)
|
|
{
|
|
ASSERT(puNextPage);
|
|
// Extract the data entered by the user and save it.
|
|
if (fForward)
|
|
{
|
|
//BUGBUG - if we are in auto config, we need to change the title of the next page
|
|
GetWindowText(GetDlgItem(hDlg, IDC_AREACODE), gpWizardState->cmnStateData.szAreaCode, MAX_AREA_CODE);
|
|
gpWizardState->pTapiLocationInfo->put_LocationId(gpWizardState->lLocationID);
|
|
if (gpWizardState->lLocationID != lLastLocationID)
|
|
{
|
|
lLastLocationID = gpWizardState->lLocationID;
|
|
gpWizardState->bDoneRefServDownload = FALSE;
|
|
}
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/*******************************************************************
|
|
|
|
NAME: AreaCodeCmdProc
|
|
|
|
********************************************************************/
|
|
BOOL CALLBACK AreaCodeCmdProc
|
|
(
|
|
HWND hDlg,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
)
|
|
{
|
|
|
|
switch(GET_WM_COMMAND_ID(wParam, lParam))
|
|
{
|
|
case IDC_DIAL_FROM:
|
|
{
|
|
if (GET_WM_COMMAND_CMD(wParam, lParam) == CBN_SELCHANGE)
|
|
{
|
|
// Get the currently selected item
|
|
HWND hWndDialFrom = GetDlgItem(hDlg, IDC_DIAL_FROM);
|
|
int iIndex = ComboBox_GetCurSel( hWndDialFrom );
|
|
|
|
BSTR bstrCountry = NULL;
|
|
BSTR bstrAreaCode = NULL;
|
|
long lCountryCode = 0;
|
|
|
|
if (S_OK == gpWizardState->pTapiLocationInfo->get_LocationInfo( iIndex,
|
|
&gpWizardState->lLocationID,
|
|
&bstrCountry,
|
|
&lCountryCode,
|
|
&bstrAreaCode))
|
|
{
|
|
gpWizardState->cmnStateData.dwCountryCode = lCountryCode;
|
|
if (bstrAreaCode)
|
|
{
|
|
SetWindowText(GetDlgItem(hDlg, IDC_AREACODE), W2A(bstrAreaCode));
|
|
}
|
|
else
|
|
{
|
|
SetWindowText(GetDlgItem(hDlg, IDC_AREACODE), NULL);
|
|
}
|
|
if (bstrCountry)
|
|
{
|
|
SetWindowText(GetDlgItem(hDlg, IDC_COUNTRY), W2A(bstrCountry));
|
|
}
|
|
else
|
|
{
|
|
SetWindowText(GetDlgItem(hDlg, IDC_COUNTRY), NULL);
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
return 1;
|
|
}
|
|
|