Leaked source code of windows server 2003
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.
 
 
 
 
 
 

412 lines
9.8 KiB

/////////////////////////////////////////////////////////////////////////////
// FILE : dlgSelectCountry.cpp //
// //
// DESCRIPTION : The CDlgSelectCountry class implements the //
// dialog for selecting Country code from country ID. //
// //
// AUTHOR : yossg //
// //
// HISTORY : //
// Sep 22 2000 yossg Create //
// Oct 17 2000 yossg //
// //
// Copyright (C) 2000 Microsoft Corporation All Rights Reserved //
/////////////////////////////////////////////////////////////////////////////
#include "StdAfx.h"
#include "dlgSelectCountry.h"
#include "FaxServer.h"
#include "FaxServerNode.h"
#include "FaxMMCUtils.h"
#include "dlgutils.h"
#include "Helper.h"
/////////////////////////////////////////////////////////////////////////////
// CDlgSelectCountry
CDlgSelectCountry::CDlgSelectCountry(CFaxServer * pFaxServer)
{
m_pCountryList = NULL;
m_dwNumOfCountries = 0;
m_fAllReadyToApply = FALSE;
ATLASSERT(pFaxServer);
m_pFaxServer = pFaxServer;
}
CDlgSelectCountry::~CDlgSelectCountry()
{
if (NULL != m_pCountryList)
FaxFreeBuffer(m_pCountryList);
}
/*
+ CDlgSelectCountry::OnInitDialog
+
* Purpose:
* Initiate all dialog controls.
*
* Arguments:
* [in] uMsg : Value identifying the event.
* [in] lParam : Message-specific value.
* [in] wParam : Message-specific value.
* [in] bHandled : bool value.
*
- Return:
- 0 or 1
*/
LRESULT
CDlgSelectCountry::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
DEBUG_FUNCTION_NAME( _T("CDlgSelectCountry::OnInitDialog"));
HRESULT hRc = S_OK;
DWORD ec = ERROR_SUCCESS;
HINSTANCE hInst;
hInst = _Module.GetResourceInstance();
PFAX_TAPI_LINECOUNTRY_ENTRYW pCountryEntries;
pCountryEntries = NULL;
WCHAR buf[FXS_MAX_COUNTRYNAME_LEN //256 == TAPIUTIL MAX_COUNTRY_NAME
+3 // " (" and ")"
+FXS_MAX_COUNTRYCODE_LEN // 10
+1]; //NULL
//
// Attach controls
//
m_CountryCombo.Attach(GetDlgItem(IDC_COUNTRYRULE_COMBO));
//
// Step 1: Init List
//
//
// Init country drop-down box
//
ATLASSERT(m_pCountryList);
pCountryEntries = m_pCountryList->LineCountryEntries;
for (int i = 0; (DWORD)i < m_dwNumOfCountries; i++ )
{
wsprintf(buf, _T("%s (%d)"),
pCountryEntries[i].lpctstrCountryName,
pCountryEntries[i].dwCountryCode);
hRc = AddComboBoxItem ( m_CountryCombo,
buf, //pCountryEntries[i].lpctstrCountryName,
pCountryEntries[i].dwCountryCode,
hInst);
if (FAILED(hRc))
{
DebugPrintEx( DEBUG_ERR, _T("Fail to load country list."));
PageError(IDS_FAIL2LOADCOUNTRYLIST, m_hWnd, hInst);
::EnableWindow(GetDlgItem(IDC_COUNTRYRULE_COMBO), FALSE);
goto Cleanup;
}
}
Cleanup:
EnableOK(FALSE);
return 1; // Let the system set the focus
}
/*
+ CDlgSelectCountry::OnOK
+
* Purpose:
* Submit data
*
* Arguments:
*
- Return:
- 0 or 1
*/
LRESULT
CDlgSelectCountry::OnOK(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
DEBUG_FUNCTION_NAME( _T("CDlgSelectCountry::OnOK"));
HRESULT hRc = S_OK;
DWORD ec = ERROR_SUCCESS;
BOOL fSkipMessage = FALSE;
int iCurrentSelectedItem = 0;
DWORD dwCountryCode = 0;
//
// Step 0: PreApply Checks
//
ATLASSERT( TRUE == m_fAllReadyToApply );
if (!AllReadyToApply(/*fSilent =*/ FALSE))
{
EnableOK(FALSE);
hRc =S_FALSE;
goto Exit;
}
//
// Step 1: get selected country
//
iCurrentSelectedItem = m_CountryCombo.GetCurSel();
ATLASSERT(iCurrentSelectedItem != CB_ERR);
//
// Step 2: setCountryCode from the ItemData
//
m_dwCountryCode = (DWORD)m_CountryCombo.GetItemData(iCurrentSelectedItem);
//
// Step 3: Close the dialog
//
ATLASSERT(S_OK == hRc && ERROR_SUCCESS == ec);
DebugPrintEx( DEBUG_MSG,
_T("The rule was added successfully."));
EndDialog(wID);
goto Exit;
Exit:
return FAILED(hRc) ? 0 : 1;
}
/*
- CDlgSelectCountry::OnComboChanged
-
* Purpose:
* Gray/Ungray the submit button.
*
* Arguments:
*
* Return:
* 1
*/
LRESULT
CDlgSelectCountry::OnComboChanged(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
DEBUG_FUNCTION_NAME( _T("CDlgSelectCountry::OnComboChanged"));
if (AllReadyToApply(TRUE))
{
m_fAllReadyToApply = TRUE;
EnableOK(TRUE);
}
else
{
m_fAllReadyToApply = FALSE;
EnableOK(FALSE);
}
return 1;
}
/*
- CDlgSelectCountry::AllReadyToApply
-
* Purpose:
* Enable/Disable the submit button.
*
* Arguments:
*
* Return:
* TRUE if all ready to apply, else FALSE.
*/
BOOL
CDlgSelectCountry::AllReadyToApply(BOOL fSilent)
{
DEBUG_FUNCTION_NAME( _T("CDlgSelectCountry::AllReadyToApply"));
if ( CB_ERR == m_CountryCombo.GetCurSel())
{
if (!fSilent)
{
DlgMsgBox(this, IDS_PLEASESELECT_COUNTRY);
::SetFocus(GetDlgItem(IDC_COUNTRYRULE_COMBO));
}
return FALSE;
}
return TRUE;
}
/*
- CDlgSelectCountry::EnableOK
-
* Purpose:
* Enable/Disable the submit button.
*
* Arguments:
* [in] fEnable - boolen value tells
* to Enable or Disable the OK button.
*
* Return:
* VOID
*/
VOID
CDlgSelectCountry::EnableOK(BOOL fEnable)
{
HWND hwndOK = GetDlgItem(IDOK);
::EnableWindow(hwndOK, fEnable);
}
/*
- CDlgSelectCountry::OnCancel
-
* Purpose:
* End the dialog.
*
* Arguments:
*
* Return:
* 0
*/
LRESULT
CDlgSelectCountry::OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
DEBUG_FUNCTION_NAME( _T("CDlgSelectCountry::OnCancel"));
EndDialog(wID);
return 0;
}
/*
- CDlgSelectCountry::InitSelectCountryCodeDlg
-
* Purpose:
* Init all the members as country list pointer and
* device list pointer
*
* Arguments:
* No.
*
* Return:
* 0
*/
HRESULT CDlgSelectCountry::InitSelectCountryCodeDlg()
{
DEBUG_FUNCTION_NAME( _T("CDlgSelectCountry::InitSelectCountryCodeDlg"));
HRESULT hRc = S_OK;
DWORD ec = ERROR_SUCCESS;
//
// Step 1: Init Lists from RPC
//
//
// get Fax Handle
//
if (!m_pFaxServer->GetFaxServerHandle())
{
ec= GetLastError();
DebugPrintEx(
DEBUG_ERR,
_T("Failed to GetFaxServerHandle. (ec: %ld)"),
ec);
goto Error;
}
//
// Country (code ,name)
//
if (!FaxGetCountryList(m_pFaxServer->GetFaxServerHandle(),
&m_pCountryList))
{
ec = GetLastError();
DebugPrintEx(
DEBUG_ERR,
_T("Fail to get c TAPI country list. (ec: %ld)"),
ec);
if (IsNetworkError(ec))
{
DebugPrintEx(
DEBUG_ERR,
_T("Network Error was found. (ec: %ld)"),
ec);
m_pFaxServer->Disconnect();
}
goto Error;
}
ATLASSERT(m_pCountryList);
m_dwNumOfCountries = m_pCountryList->dwNumCountries;
ATLASSERT(S_OK == hRc);
DebugPrintEx( DEBUG_MSG,
_T("Succeed to get all configurations."));
goto Exit;
Error:
ATLASSERT(ERROR_SUCCESS != ec);
hRc = HRESULT_FROM_WIN32(ec);
//MsgBox will be done by calling Func.
Exit:
return hRc;
}
//////////////////////////////////////////////////////////////////////////////
/*++
CDlgSelectCountry::OnHelpRequest
This is called in response to the WM_HELP Notify
message and to the WM_CONTEXTMENU Notify message.
WM_HELP Notify message.
This message is sent when the user presses F1 or <Shift>-F1
over an item or when the user clicks on the ? icon and then
presses the mouse over an item.
WM_CONTEXTMENU Notify message.
This message is sent when the user right clicks over an item
and then clicks "What's this?"
--*/
/////////////////////////////////////////////////////////////////////////////
LRESULT
CDlgSelectCountry::OnHelpRequest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/)
{
DEBUG_FUNCTION_NAME(_T("CDlgSelectCountry::OnHelpRequest"));
switch (uMsg)
{
case WM_HELP:
WinContextHelp(((LPHELPINFO)lParam)->dwContextId, m_hWnd);
break;
case WM_CONTEXTMENU:
WinContextHelp(::GetWindowContextHelpId((HWND)wParam), m_hWnd);
break;
}
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////