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
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;
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|