Windows2003-3790/inetcore/connectionwizard/icwconn1/dialerr.cpp
2020-09-30 16:53:55 +02:00

338 lines
12 KiB
C++

//*********************************************************************
//* Microsoft Windows **
//* Copyright(c) Microsoft Corp., 1994 **
//*********************************************************************
//
// DIALERR.CPP - Functions for final Wizard pages
//
// HISTORY:
//
// 05/28/98 donaldm created
//
//*********************************************************************
#include "pre.h"
#include "htmlhelp.h"
void FillModemList(HWND hDlg)
{
long lNumModems;
long lCurrModem;
long lIndex;
HWND hWndMdmCmb = GetDlgItem(hDlg, IDC_DIALERR_MODEM);
ComboBox_ResetContent(hWndMdmCmb);
// Fill the list with the current set of installed modems
gpWizardState->pRefDial->get_ModemEnum_NumDevices( &lNumModems );
//RefDialSignup.ModemEnum_Reset();
gpWizardState->pRefDial->ModemEnum_Reset( );
for (lIndex=0; lIndex < lNumModems; lIndex++)
{
BSTR bstr = NULL;
gpWizardState->pRefDial->ModemEnum_Next(&bstr);
ComboBox_InsertString(hWndMdmCmb, lIndex, W2A(bstr));
SysFreeString(bstr);
}
gpWizardState->pRefDial->get_CurrentModem(&lCurrModem);
if (lCurrModem != -1)
{
ComboBox_SetCurSel(hWndMdmCmb, lCurrModem);
}
else
{
ComboBox_SetCurSel(hWndMdmCmb, 0);
}
}
void GetSupportNumber(HWND hDlg)
{
HWND hwndSupport = GetDlgItem(hDlg, IDC_SERVERR_HELP);
BSTR bstrSupportPhoneNum = NULL;
TCHAR szFmt [MAX_MESSAGE_LEN*3];
// Fill in the support number
gpWizardState->pRefDial->get_SupportNumber(&bstrSupportPhoneNum);
//If no support number could be found this will
//be null, in which case we don't want to display the
//support number string
if(bstrSupportPhoneNum)
{
LoadString(g_hInstance, IDS_DIALERR_HELP, szFmt, ARRAYSIZE(szFmt));
lstrcat(szFmt, W2A(bstrSupportPhoneNum));
SetWindowText(hwndSupport, szFmt);
SysFreeString(bstrSupportPhoneNum);
ShowWindow(hwndSupport, SW_SHOW);
}
else
ShowWindow(hwndSupport, SW_HIDE);
}
/*******************************************************************
NAME: DialErrorInitProc
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 DialErrorInitProc
(
HWND hDlg,
BOOL fFirstInit,
UINT *puNextPage
)
{
if (!fFirstInit)
{
// Show the phone Number
BSTR bstrPhoneNum = NULL;
BSTR bstrErrMsg = NULL;
gpWizardState->pRefDial->get_DialPhoneNumber(&bstrPhoneNum);
SetWindowLongPtr(GetDlgItem(hDlg, IDC_DIALERR_PHONENUMBER), GWLP_USERDATA, TRUE);
SetWindowText(GetDlgItem(hDlg, IDC_DIALERR_PHONENUMBER), W2A(bstrPhoneNum));
SysFreeString(bstrPhoneNum);
EnableWindow(GetDlgItem(hDlg, IDC_DIALING_PROPERTIES), TRUE);
// Display the error text message
gpWizardState->pRefDial->get_DialErrorMsg(&bstrErrMsg);
SetWindowText(GetDlgItem(hDlg, IDC_DIALERR_TEXT), W2A(bstrErrMsg));
SysFreeString(bstrErrMsg);
// Enum Modems, and fill in list.
FillModemList(hDlg);
//Get the support number for the current dlg
// Currently this is removed from BETA 2
// GetSupportNumber(hDlg);
// 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_REFDIALERROR;
}
return TRUE;
}
/*******************************************************************
NAME: DialErrorOKProc
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 DialErrorOKProc
(
HWND hMdmCmb,
BOOL fForward,
UINT *puNextPage,
BOOL *pfKeepHistory
)
{
ASSERT(puNextPage);
// Initialze status before connecting
gpWizardState->lRefDialTerminateStatus = ERROR_SUCCESS;
gpWizardState->bDoneRefServDownload = FALSE;
gpWizardState->bDoneRefServRAS = FALSE;
gpWizardState->bStartRefServDownload = FALSE;
// Assume the user has selected a number on this page
// So we will not do SetupForDialing again next time
gpWizardState->bDoUserPick = TRUE;
if (fForward)
{
*pfKeepHistory = FALSE;
*puNextPage = ORD_PAGE_REFSERVDIAL;
// Set the new phone Number
TCHAR szPhone[MAX_RES_LEN];
GetWindowText(GetDlgItem(hMdmCmb, IDC_DIALERR_PHONENUMBER), szPhone, ARRAYSIZE(szPhone));
gpWizardState->pRefDial->put_DialPhoneNumber(A2W(szPhone));
// Set the current modem
long lCurrModem = ComboBox_GetCurSel(GetDlgItem(hMdmCmb, IDC_DIALERR_MODEM));
gpWizardState->pRefDial->put_CurrentModem(lCurrModem);
}
else
{
BOOL bRetVal;
// Set userpick to FALSE to regenerate connectoid
gpWizardState->bDoUserPick = FALSE;
gpWizardState->pRefDial->RemoveConnectoid(&bRetVal);
}
return TRUE;
}
/*******************************************************************
NAME: DialErrorCmdProc
SYNOPSIS: Called when a command is generated from page
ENTRY: hDlg - dialog window
wParam - wParam
lParam - lParam
EXIT: returns TRUE
********************************************************************/
BOOL g_bNotChildDlgUpdate = TRUE;
BOOL CALLBACK DialErrorCmdProc
(
HWND hDlg,
WPARAM wParam,
LPARAM lParam
)
{
switch(GET_WM_COMMAND_CMD(wParam, lParam))
{
case BN_CLICKED:
{
switch (GET_WM_COMMAND_ID(wParam, lParam))
{
case IDC_CHANGE_NUMBER:
{
BOOL bRetVal;
g_bNotChildDlgUpdate = FALSE;
// Pass current modem, because if ISDN modem we need to show different content
gpWizardState->pRefDial->ShowPhoneBook(gpWizardState->cmnStateData.dwCountryCode,
ComboBox_GetCurSel(GetDlgItem(hDlg, IDC_DIALERR_MODEM)),
&bRetVal);
if (bRetVal)
{
// Show the phone Number as it may be changed after the popup
BSTR bstrPhoneNum = NULL;
gpWizardState->pRefDial->get_DialPhoneNumber(&bstrPhoneNum);
SetWindowText(GetDlgItem(hDlg, IDC_DIALERR_PHONENUMBER), W2A(bstrPhoneNum));
SysFreeString(bstrPhoneNum);
// 10/6/98 vyung
// We decided to remove this support number for beta 2
// Get the support number for the current dlg
// GetSupportNumber(hDlg);
g_bNotChildDlgUpdate = TRUE;
}
break;
}
case IDC_DIALING_PROPERTIES:
{
BOOL bRetVal;
g_bNotChildDlgUpdate = FALSE;
gpWizardState->pRefDial->ShowDialingProperties(&bRetVal);
if (bRetVal)
{
// Show the phone Number as it may be changed after the popup
BSTR bstrPhoneNum = NULL;
gpWizardState->pRefDial->get_DialPhoneNumber(&bstrPhoneNum);
SetWindowText(GetDlgItem(hDlg, IDC_DIALERR_PHONENUMBER), W2A(bstrPhoneNum));
SysFreeString(bstrPhoneNum);
// Show the modem as it may be changed after the popup
LONG lCurrModem = 0;
gpWizardState->pRefDial->get_CurrentModem(&lCurrModem);
if (lCurrModem == -1l)
{
lCurrModem = 0;
}
ComboBox_SetCurSel(GetDlgItem(hDlg, IDC_DIALERR_MODEM), lCurrModem);
if (gpWizardState->pTapiLocationInfo)
{
BOOL bRetVal;
BSTR bstrAreaCode = NULL;
DWORD dwCountryCode;
gpWizardState->pTapiLocationInfo->GetTapiLocationInfo(&bRetVal);
gpWizardState->pTapiLocationInfo->get_lCountryCode((long *)&dwCountryCode);
gpWizardState->pTapiLocationInfo->get_bstrAreaCode(&bstrAreaCode);
gpWizardState->cmnStateData.dwCountryCode = dwCountryCode;
if (bstrAreaCode)
{
lstrcpy(gpWizardState->cmnStateData.szAreaCode, W2A(bstrAreaCode));
SysFreeString(bstrAreaCode);
}
else
{
gpWizardState->cmnStateData.szAreaCode[0] = TEXT('\0');
}
}
g_bNotChildDlgUpdate = TRUE;
}
break;
}
case IDC_DIAL_HELP:
{
HtmlHelp(NULL, ICW_HTML_HELP_TROUBLE_TOPIC, HH_DISPLAY_TOPIC, NULL);
break;
}
default:
break;
}
break;
}
case EN_UPDATE:
{
switch (GET_WM_COMMAND_ID(wParam, lParam))
{
case IDC_DIALERR_PHONENUMBER:
{
if (!GetWindowLongPtr(GetDlgItem(hDlg, IDC_DIALERR_PHONENUMBER), GWLP_USERDATA))
{
//Since when the other popups set this text this event will fire we
//don't disable wanna disable the button when it's them.
//more so because a race condition and caos ensues causing a lack of input
//while windows figures out what the heck is going on
if(g_bNotChildDlgUpdate)
EnableWindow(GetDlgItem(hDlg, IDC_DIALING_PROPERTIES), FALSE);
}
SetWindowLongPtr(GetDlgItem(hDlg, IDC_DIALERR_PHONENUMBER), GWLP_USERDATA, FALSE);
}
}
}
default:
break;
} // End of switch
return TRUE;
}