//+---------------------------------------------------------------------------- // // File: dialogs.h // // Module: CMDIAL32.DLL // // Synopsis: This header contains definitions for the dialog UI code. // // Copyright (c) 1996-1999 Microsoft Corporation // // Author: quintinb Created Header 08/17/99 // //+---------------------------------------------------------------------------- #include "cm_misc.h" #include "ModalDlg.h" //+--------------------------------------------------------------------------- // // class CInetSignInDlg // // Description: The standalone "Internet Sign-In" dlg // // History: fengsun Created 10/30/97 // //---------------------------------------------------------------------------- class CInetSignInDlg : public CModalDlg { public: CInetSignInDlg(ArgsStruct * pArgs); virtual void OnOK(); virtual BOOL OnInitDialog(); virtual DWORD OnOtherCommand(WPARAM wParam, LPARAM lParam ); protected: ArgsStruct *m_pArgs; // pointer to the huge structure static const DWORD m_dwHelp[]; // help id pairs }; inline CInetSignInDlg::CInetSignInDlg(ArgsStruct * pArgs) : CModalDlg(m_dwHelp, pArgs->pszHelpFile) { MYDBGASSERT(pArgs); m_pArgs = pArgs; } //+--------------------------------------------------------------------------- // // class CPropertiesPage // // Description: A general properties property page class // // History: fengsun Created 10/30/97 // //---------------------------------------------------------------------------- class CPropertiesPage : public CWindowWithHelp { friend class CPropertiesSheet; public: CPropertiesPage(UINT nIDTemplate, const DWORD* pHelpPairs = NULL, const TCHAR* lpszHelpFile = NULL); CPropertiesPage(LPCTSTR lpszTemplateName, const DWORD* pHelpPairs = NULL, const TCHAR* lpszHelpFile = NULL); virtual BOOL OnInitDialog(); // WM_INITDIALOG virtual DWORD OnCommand(WPARAM wParam, LPARAM lParam ); // WM_COMMAND virtual BOOL OnSetActive(); // PSN_SETACTIVE virtual BOOL OnKillActive(); // PSN_KILLACTIVE virtual void OnApply(); // PSN_APPLY virtual void OnReset(); // PSN_RESET // If the derived class need to overwrite thses help function, make this virtual void OnPsnHelp(HWND hwndFrom, UINT_PTR idFrom); // PSN_HELP virtual DWORD OnOtherMessage(UINT uMsg, WPARAM wParam, LPARAM lParam ); protected: LPCTSTR m_pszTemplate; // the resource ID protected: void SetPropSheetResult(DWORD dwResult); static INT_PTR CALLBACK PropPageProc(HWND hwndDlg,UINT uMsg,WPARAM wParam, LPARAM lParam); }; //+--------------------------------------------------------------------------- // // class CPropertiesSheet // // Description: The properties property page class // // History: fengsun Created 10/30/97 // //---------------------------------------------------------------------------- class CPropertiesSheet { public: CPropertiesSheet(ArgsStruct *pArgs); void AddPage(const CPropertiesPage* pPage); void AddExternalPage(PROPSHEETPAGE *pPsp); BOOL HasPage(const CPropertiesPage* pPage) const; int DoPropertySheet(HWND hWndParent, LPTSTR pszCaption, HINSTANCE hInst); protected: enum {MAX_PAGES = 6}; enum {CPROP_SHEET_TYPE_INTERNAL = 0, CPROP_SHEET_TYPE_EXTERNAL = 1}; PROPSHEETHEADER m_psh; // propertysheet header PROPSHEETPAGE m_pages[MAX_PAGES]; // property pages array DWORD m_adwPageType[MAX_PAGES]; // property page type UINT m_numPages; // number of property pages ArgsStruct *m_pArgs; public: TCHAR* m_lpszServiceName; // the profile name, used as the mutex name for OK protected: static LRESULT CALLBACK SubClassPropSheetProc(HWND hwnd, UINT uMsg, WPARAM wParam,LPARAM lParam); static int CALLBACK PropSheetProc(HWND hwndDlg, UINT uMsg, LPARAM lParam); static WNDPROC m_pfnOrgPropSheetProc; // Original propertysheet wnd proc before subclass // pointer to the property sheet which can be accessed by static function. // Not works quite safe, if there are multiple instance of CPropertySheet. // Should be protected by CriticalSection. static CPropertiesSheet* m_pThis; }; // // Inline functions // inline CPropertiesSheet::CPropertiesSheet(ArgsStruct *pArgs) { m_pArgs = pArgs; MYDBGASSERT(m_pArgs); m_numPages = 0; ZeroMemory((LPVOID)m_adwPageType, sizeof(m_adwPageType)); } inline void CPropertiesPage::SetPropSheetResult(DWORD dwResult) { SetWindowLongU(m_hWnd, DWLP_MSGRESULT, (LONG_PTR)dwResult); } class CInetPage; //+--------------------------------------------------------------------------- // // class CGeneralPage // // Description: A dialing property page class // // History: fengsun Created 10/30/97 // //---------------------------------------------------------------------------- class CGeneralPage :public CPropertiesPage { public: CGeneralPage(ArgsStruct* pArgs, UINT nIDTemplate); void SetEventListener(CInetPage* pEventListener) {m_pEventListener = pEventListener;} protected: virtual BOOL OnInitDialog(); virtual DWORD OnCommand(WPARAM wParam, LPARAM lParam ); virtual void OnApply(); virtual BOOL OnKillActive(); // PSN_KILLACTIVE void OnDialingProperties(); void OnPhoneBookButton(UINT nPhoneIdx); BOOL DisplayMungedPhone(UINT uiPhoneIdx); BOOL CheckTapi(TapiLinkageStruct *ptlsTapiLink, HINSTANCE hInst); DWORD InitDialInfo(); void EnableDialupControls(BOOL fEnable); void ClearUseDialingRules(int iPhoneNdx); void UpdateDialingRulesButton(void); void UpdateNumberDescription(int nPhoneIdx, LPCTSTR pszDesc); // // Access Points // void UpdateForNewAccessPoint(BOOL fSetPhoneNumberDescriptions); BOOL AccessPointInfoChanged(); void DeleteAccessPoint(); void AddNewAPToReg(LPTSTR pszNewAPName, BOOL fRefreshUiWwithCurrentValues); virtual DWORD OnOtherMessage(UINT uMsg, WPARAM wParam, LPARAM lParam ); enum {WM_INITDIALINFO = WM_USER+1}; // message posted to itself to load dial info protected: ArgsStruct* m_pArgs; // pointer to the huge structure PHONEINFO m_DialInfo[MAX_PHONE_NUMBERS]; // local copy of dial info, UINT m_NumPhones; // Number of phone # to display (1 for connectoid dialing) TCHAR m_szDeviceName[RAS_MaxDeviceName+1]; // modem device name TCHAR m_szDeviceType[RAS_MaxDeviceName+1]; // device type CInetPage* m_pEventListener; // the object to receive event on this page BOOL m_bDialInfoInit; // whether we have loaded dialing information static const DWORD m_dwHelp[]; // help id pairs BOOL m_bAPInfoChanged; // whether Access point information has changed protected: static LRESULT CALLBACK SubClassEditProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); static WNDPROC m_pfnOrgEditWndProc; // the original phone # edit window proc for subclassing }; //+--------------------------------------------------------------------------- // // class CInetPage // // Description: The internet sign-on property page class // // History: fengsun Created 10/30/97 // //---------------------------------------------------------------------------- class CInetPage :public CPropertiesPage { public: CInetPage(ArgsStruct* pArgs, UINT nIDTemplate); void OnGeneralPageKillActive(BOOL fDirect); // // The following functions are shared with CInetSignInDlg, // For simplicity, we makes them static member function of class CInetPage // instead of having another class // static void OnInetInit(HWND hwndDlg, ArgsStruct *pArgs); static void OnInetOk(HWND hwndDlg, ArgsStruct *pArgs); static void AdjustSavePasswordCheckBox(HWND hwndCheckBox, BOOL fEmptyPassword, BOOL fDialAutomatically, BOOL fPasswordOptional); protected: virtual BOOL OnInitDialog(); virtual DWORD OnCommand(WPARAM wParam, LPARAM lParam ); virtual void OnApply(); virtual BOOL OnSetActive(); // PSN_SETACTIVE protected: ArgsStruct* m_pArgs;// pointer to the huge structure BOOL m_fDirect; // the current connection type selection in General page BOOL m_fPasswordOptional; // whether the PasswordOptional flag is set in // the profile static const DWORD m_dwHelp[]; // help id pairs }; //+--------------------------------------------------------------------------- // // class COptionPage // // Description: The options property page class // // History: fengsun Created 10/30/97 // //---------------------------------------------------------------------------- class COptionPage :public CPropertiesPage { public: COptionPage(ArgsStruct* pArgs, UINT nIDTemplate); protected: virtual BOOL OnInitDialog(); virtual DWORD OnCommand(WPARAM wParam, LPARAM lParam ); // WM_COMMAND virtual void OnApply(); void InitIdleTimeList(HWND hwndList, DWORD dwMinutes); DWORD GetIdleTimeList(HWND hwndList); BOOL ToggleLogging(); protected: ArgsStruct* m_pArgs; // pointer to the huge structure BOOL m_fEnableLog; // is logging enabled static const DWORD m_dwHelp[]; // help id pairs static const DWORD m_adwTimeConst[]; // = {0,1, 5, 10, 30, 1*60, 2*60, 4*60, 24*60}; static const int m_nTimeConstElements;// = sizeof(adwTimeConst)/sizeof(adwTimeConst[0]); }; //+--------------------------------------------------------------------------- // // class CVpnPage // // Description: The VPN property page class // // History: quintinb Created 10/26/00 // //---------------------------------------------------------------------------- class CVpnPage :public CPropertiesPage { public: CVpnPage(ArgsStruct* pArgs, UINT nIDTemplate); protected: virtual BOOL OnInitDialog(); virtual void OnApply(); protected: ArgsStruct* m_pArgs; // pointer to the huge structure static const DWORD m_dwHelp[]; // help id pairs }; //+--------------------------------------------------------------------------- // // class CAboutPage // // Description: The about property page class // // History: fengsun Created 10/30/97 // //---------------------------------------------------------------------------- class CAboutPage :public CPropertiesPage { public: CAboutPage(ArgsStruct* pArgs, UINT nIDTemplate); protected: virtual BOOL OnInitDialog(); virtual BOOL OnSetActive(); virtual BOOL OnKillActive(); virtual void OnApply(); virtual void OnReset(); virtual DWORD OnOtherMessage(UINT uMsg, WPARAM wParam, LPARAM lParam ); protected: ArgsStruct *m_pArgs; // pointer to the huge structure }; //+--------------------------------------------------------------------------- // // class CChangePasswordDlg // // Description: The network change password dlg // // History: v-vijayb Created 7/3/99 // //---------------------------------------------------------------------------- class CChangePasswordDlg : public CModalDlg { public: CChangePasswordDlg(ArgsStruct *pArgs); virtual void OnOK(); virtual void OnCancel(); virtual BOOL OnInitDialog(); virtual DWORD OnOtherCommand(WPARAM wParam, LPARAM lParam ); protected: ArgsStruct *m_pArgs; }; inline CChangePasswordDlg::CChangePasswordDlg(ArgsStruct *pArgs) : CModalDlg() { MYDBGASSERT(pArgs); m_pArgs = pArgs; } //+--------------------------------------------------------------------------- // // class CCallbackNumberDlg // // Description: Emulation of the RAS Callback Number dialog // // History: nickball Created 3/1/00 // //---------------------------------------------------------------------------- class CCallbackNumberDlg : public CModalDlg { public: CCallbackNumberDlg(ArgsStruct *pArgs); virtual void OnOK(); virtual void OnCancel(); virtual BOOL OnInitDialog(); virtual DWORD OnOtherCommand(WPARAM wParam, LPARAM lParam ); protected: ArgsStruct *m_pArgs; }; inline CCallbackNumberDlg::CCallbackNumberDlg(ArgsStruct *pArgs) : CModalDlg() { MYDBGASSERT(pArgs); m_pArgs = pArgs; } //+--------------------------------------------------------------------------- // // class CRetryAuthenticationDlg // // Description: Emulation of the RAS Retry authentication dialog // // History: nickball Created 3/1/00 // //---------------------------------------------------------------------------- class CRetryAuthenticationDlg : public CModalDlg { public: CRetryAuthenticationDlg(ArgsStruct *pArgs); virtual void OnOK(); virtual void OnCancel(); virtual BOOL OnInitDialog(); virtual DWORD OnOtherCommand(WPARAM wParam, LPARAM lParam ); virtual UINT GetDlgTemplate(); protected: ArgsStruct *m_pArgs; BOOL m_fInetCredentials; static const DWORD m_dwHelp[]; // help id pairs }; inline CRetryAuthenticationDlg::CRetryAuthenticationDlg(ArgsStruct *pArgs) : CModalDlg(m_dwHelp, pArgs->pszHelpFile) { MYDBGASSERT(pArgs); m_pArgs = pArgs; if (m_pArgs) { // // If the phone number calls for a tunnel, and we're not using // UseSameUserName and we're not actively dialing the tunnel, // then we must be dialing the Inet portion of the connection. // m_fInetCredentials = (!m_pArgs->fUseSameUserName && !IsDialingTunnel(m_pArgs) && UseTunneling(m_pArgs, m_pArgs->nDialIdx)); } } //+--------------------------------------------------------------------------- // // class CNewAccessPointDlg // // Description: Dialog to get the name of a new Access Point from the user // // History: t-urama Created 8/2/00 // //---------------------------------------------------------------------------- class CNewAccessPointDlg : public CModalDlg { public: CNewAccessPointDlg(ArgsStruct *pArgs, LPTSTR *ppAPName); virtual void OnOK(); virtual BOOL OnInitDialog(); virtual DWORD OnOtherCommand(WPARAM wParam, LPARAM lParam ); protected: LPTSTR *m_ppszAPName; ArgsStruct *m_pArgs; static LRESULT CALLBACK SubClassEditProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); static WNDPROC m_pfnOrgEditWndProc; // the original edit control window proc for subclassing }; inline CNewAccessPointDlg::CNewAccessPointDlg(ArgsStruct *pArgs, LPTSTR *ppszAPName) : CModalDlg() { MYDBGASSERT(pArgs); m_pArgs = pArgs; m_ppszAPName = ppszAPName; }