/*****************************************************************/ /** Microsoft LAN Manager **/ /** Copyright(c) Microsoft Corp., 1990, 1991 **/ /*****************************************************************/ /* * browdlg.hxx * * History: * RustanL 05-Nov-1991 Created * RustanL 20-Feb-1991 Consequnces of new BLT_LISTBOX class * JohnL 15-Mar-1991 Added SelectNetPathString * rustanl 24-Mar-1991 Rolled in code review changes from * CR on 8-Feb-1991 attended by ThomasPa, * DavidBul, TerryK, RustanL. * rustanl 27-Apr-1991 Made SetFocusToNewConnections protected. * JohnL 17-Jun-1991 Added ClearNetPathString for DCR 2041 * */ #ifndef _BROWDLG_HXX_ #define _BROWDLG_HXX_ #include // get LMO_DEVICE #include // get LM_OLLB #include // get RESOURCE_LB #include // get DEVICE_COMBO class NLS_STR; // class declared in string.hxx class BROWSE_BASE : public DIALOG_WINDOW { private: LMO_DEVICE _lmodev; SLT _sltResourceText; SLE _sleNetworkPath; // Note, _iCurrShowSelection must always be in sync with the current // selection of _olbShow. This means that every time SelectItem or // RemoveSelection is called on _olbShow, _iCurrShowSelection must // be updated. INT _iCurrShowSelection; LM_OLLB _olbShow; SLT _sltShowText; RESOURCE_LB _lbResource; /* This static text field is affixed "on" the resources listbox. For some * common error messages, we fill and display this SLT thus it appears * to be contained inside the listbox. This of course means the listbox * must be empty. */ SLT _sltCommonErrorsDisplay ; BOOL _fNotifyOnNewSelection; USHORT QueryShareType( void ) const; APIERR OnShowResourcesChange( void ); void SetResourceText( const NLS_STR & nlsResourceName, MSGID MsgIDOffset ); APIERR OnResourceChange( void ); APIERR SelectNewServer( const TCHAR * pchServer ); #if ENTERPRISE APIERR OnEnterpriseSelect( OLLB_ENTRY * pollbe ); #endif APIERR OnDomainSelect( OLLB_ENTRY * pollbe ); APIERR OnServerSelect( OLLB_ENTRY * pollbe ); virtual void OnNewSelection( BOOL fIsNetPathEmpty ); protected: BROWSE_BASE( HWND hwndOwner, LMO_DEVICE lmodev, const TCHAR * pszDlgResource ); ~BROWSE_BASE(); LMO_DEVICE QueryDeviceType( void ) const { return _lmodev; } short QueryUseType( void ) const; MSGID QueryBrowseIDSBase( void ) const; BOOL OnCommand( const CONTROL_EVENT & e ); void ClearBrowseBaseDialog( void ); virtual BOOL OnConnect( void ); BOOL ProcessNetPath( NLS_STR * pnlsPath ); /* Set the focus to and hilite the current string in the * _sleNetworkPath control (used, e.g., after determining the network * path is invalid) */ void SelectNetPathString( void ) ; /* Clears the network path SLE. */ void ClearNetPathString( void ) ; /* SetFocusToNewConnections shifts the user's focus point away from the * upper portion of the dialog to the lower portion of the dialog box * where the new connection stuff is. The focus is shifted by calling * OnNewSelection, which removes the hi-lite bar from the current * connections dialog. */ void SetFocusToNewConnections( void ) ; /* DisplayCommonError takes the passed error and displays it "in" the * resources listbox. This generally occurs after selecting a server * and you can't display the shares (downlevel, no longer exists etc.). * The resources listbox must be empty before calling this. * * fShow == TRUE means display the error contained in err * fShow == FALSE means dismiss the error. * * Returns TRUE if the error was successfully displayed, FALSE otherwise. */ BOOL DisplayCommonError( BOOL fShow, APIERR err = 0 ) ; public: static LMO_DEVICE ToLmodevType( UINT nType ); }; // class BROWSE_BASE class BROWSE_DIALOG : public BROWSE_BASE { private: NLS_STR * _pnlsPathReturnBuffer; protected: BOOL OnOK( void ); ULONG QueryHelpContext( void ); BOOL OnConnect( void ); public: BROWSE_DIALOG( HWND hwndOwner, LMO_DEVICE lmodev, NLS_STR * pnlsPathReturnBuffer ); ~BROWSE_DIALOG(); }; // class BROWSE_DIALOG /************************************************************************* NAME: CONNECT_BASE SYNOPSIS: This class defines the commonality between the File connect dialog and the printer connect dialog in the winnet driver. INTERFACE: PARENT: BROWSE_BASE USES: CAVEATS: NOTES: HISTORY: Johnl 12-May-1991 Made _sltDeviceText & _devcombo protected (as opposed to private). This allows the file connection dialog to set the focus to the _devcombo. **************************************************************************/ class CONNECT_BASE : public BROWSE_BASE { protected: SLT _sltDeviceText; DEVICE_COMBO _devcombo; CONNECT_BASE( HWND hwndOwner, LMO_DEVICE lmodev, const TCHAR * pszDlgResource ); ~CONNECT_BASE(); BOOL OnCommand( const CONTROL_EVENT & e ); APIERR RefreshDeviceNames( void ); BOOL DoConnect( const NLS_STR & nlsPath ); inline BOOL IsDeviceComboEmpty( void ); }; // class CONNECT_BASE /******************************************************************* NAME: BROWSE_BASE::SelectNetPathString SYNOPSIS: Set focus & select the network path. Used after the network path is determined to be invalid. ENTRY: EXIT: The string in the Network Path SLE will have the focus and be hi-lited. NOTES: HISTORY: Johnl 15-Mar-1991 Created - Part of solution to BUG 1218 ********************************************************************/ inline void BROWSE_BASE::SelectNetPathString( void ) { _sleNetworkPath.ClaimFocus() ; _sleNetworkPath.SelectString() ; } /******************************************************************* NAME: BROWSE_BASE::SetFocusToNewConnections SYNOPSIS: Changes the user's focus from the upper portion of the connection dialog to the lower portion where the new connections are performed. Is done when it looks like the user wants to make a new connection by changing one of the new connection controls. ENTRY: EXIT: NOTES: HISTORY: Johnl 26-Mar-1991 Created ********************************************************************/ inline void BROWSE_BASE::SetFocusToNewConnections( void ) { OnNewSelection( _sleNetworkPath.QueryTextLength() == 0 ) ; } /******************************************************************* NAME: BROWSE_BASE::ClearNetPathString SYNOPSIS: Deletes the text from the network path SLE of the browse dialog and leaves the focus there. NOTES: In the printer connections dialog, the text is cleared after a successful connection so the default button is reset to the OK button. This method allows derived dialogs to clear the network path text. HISTORY: Johnl 17-Jun-1991 Created ********************************************************************/ inline void BROWSE_BASE::ClearNetPathString( void ) { _sleNetworkPath.ClaimFocus() ; _sleNetworkPath.ClearText() ; } /******************************************************************* NAME: CONNECT_BASE::IsDeviceComboEmpty SYNOPSIS: Returns whether or not the device combo is empty RETURNS: TRUE if device combo is empty; FALSE otherwise HISTORY: rustanl 20-May-1991 Created ********************************************************************/ inline BOOL CONNECT_BASE::IsDeviceComboEmpty( void ) { return ( _devcombo.QueryCount() == 0 ); } // CONNECT_BASE::IsDeviceComboEmpty #if 0 // Debugging code class SEARCH_DIALOG : public DIALOG_WINDOW { private: SLE _sleNetworkPath; TCHAR *_pszResult ; UINT _cbResult ; protected: public: SEARCH_DIALOG( HWND hwndOwner, TCHAR *pszResult, UINT cbResult, const TCHAR *pszDlgResource ); ~SEARCH_DIALOG(); BOOL OnOK( void ); }; #endif #endif // _BROWDLG_HXX_