///////////////////////////////////////////////////////////////////////////////////////// // // Copyright (c) 1997 Active Voice Corporation. All Rights Reserved. // // Active Agent(r) and Unified Communications(tm) are trademarks of Active Voice Corporation. // // Other brand and product names used herein are trademarks of their respective owners. // // The entire program and user interface including the structure, sequence, selection, // and arrangement of the dialog, the exclusively "yes" and "no" choices represented // by "1" and "2," and each dialog message are protected by copyrights registered in // the United States and by international treaties. // // Protected by one or more of the following United States patents: 5,070,526, 5,488,650, // 5,434,906, 5,581,604, 5,533,102, 5,568,540, 5,625,676, 5,651,054. // // Active Voice Corporation // Seattle, Washington // USA // ///////////////////////////////////////////////////////////////////////////////////////// // DlgAddConfServer.cpp : Implementation of CDlgAddConfServer #include "stdafx.h" #include "TapiDialer.h" #include "AVTapi.h" #include "DlgAddCSvr.h" ///////////////////////////////////////////////////////////////////////////// // CDlgAddConfServer IMPLEMENT_MY_HELP(CDlgAddConfServer) CDlgAddConfServer::CDlgAddConfServer() { m_bstrLocation = m_bstrServer = NULL; } CDlgAddConfServer::~CDlgAddConfServer() { SysFreeString( m_bstrLocation ); SysFreeString( m_bstrServer ); } void CDlgAddConfServer::UpdateData( bool bSaveAndValidate ) { USES_CONVERSION; if ( bSaveAndValidate ) { // Retrieve data SysFreeString( m_bstrServer ); GetDlgItemText( IDC_EDT_NAME, m_bstrServer ); } else { LoadDefaultServers( GetDlgItem(IDC_EDT_NAME) ); // Set any default text the author specified, otherwise select the first item in // the list box if ( m_bstrServer && SysStringLen(m_bstrServer) ) { SetDlgItemText( IDC_EDT_NAME, OLE2CT(m_bstrServer) ); } else if ( SendDlgItemMessage(IDC_EDT_NAME, CB_GETCOUNT, 0, 0) >= 0 ) { SendDlgItemMessage( IDC_EDT_NAME, CB_SETCURSEL, 0, 0 ); SendDlgItemMessage( IDC_EDT_NAME, CB_SETEDITSEL, 0, MAKELPARAM(0, -1) ); } ::EnableWindow( GetDlgItem(IDC_BTN_ADD_ILS_SERVER), (BOOL) (::GetWindowTextLength(GetDlgItem(IDC_EDT_NAME)) > 0) ); } } LRESULT CDlgAddConfServer::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { UpdateData( false ); return true; // Let the system set the focus } LRESULT CDlgAddConfServer::OnOK(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { UpdateData( true ); EndDialog(IDOK); return 0; } LRESULT CDlgAddConfServer::OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { EndDialog(wID); return 0; } LRESULT CDlgAddConfServer::OnEdtNameChange(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { ::EnableWindow( GetDlgItem(IDC_BTN_ADD_ILS_SERVER), (BOOL) (::GetWindowTextLength(GetDlgItem(IDC_EDT_NAME)) > 0) ); return 0; } void CDlgAddConfServer::LoadDefaultServers( HWND hWndList ) { USES_CONVERSION; _ASSERT( hWndList ); if ( !hWndList ) return; // Load the default servers into the dialog CComPtr pAVTapi; if ( SUCCEEDED(_Module.get_AVTapi(&pAVTapi)) ) { IConfExplorer *pIConfExplorer; if ( SUCCEEDED(pAVTapi->get_ConfExplorer(&pIConfExplorer)) ) { ITRendezvous *pITRend; if ( SUCCEEDED(pIConfExplorer->get_ITRendezvous((IUnknown **) &pITRend)) ) { IEnumDirectory *pEnum = NULL; if ( SUCCEEDED(pITRend->EnumerateDefaultDirectories(&pEnum)) && pEnum ) { ITDirectory *pDir = NULL; while ( (pEnum->Next(1, &pDir, NULL) == S_OK) && pDir ) { // Look for ILS servers DIRECTORY_TYPE nDirType; if ( SUCCEEDED(pDir->get_DirectoryType(&nDirType)) && (nDirType == DT_ILS) ) { BSTR bstrName = NULL; pDir->get_DisplayName( &bstrName ); if ( bstrName && SysStringLen(bstrName) ) ::SendMessage( hWndList, CB_ADDSTRING, 0, (LPARAM) OLE2CT(bstrName) ); SysFreeString( bstrName ); } pDir->Release(); pDir = NULL; } pEnum->Release(); } pITRend->Release(); } pIConfExplorer->Release(); } } } LRESULT CDlgAddConfServer::OnSelChange(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { bHandled = false; ::EnableWindow( GetDlgItem(IDC_BTN_ADD_ILS_SERVER), true ); return 0; }