|
|
/**********************************************************************/ /** Microsoft Windows/NT **/ /** Copyright(c) Microsoft Corp., 1991 **/ /**********************************************************************/
/*
focusdlg.hxx Common dialog for setting the app's focus
FILE HISTORY: kevinl 14-Jun-91 Created rustanl 04-Sep-1991 Modified to let this dialog do more work (rather than letting ADMIN_APP do the work after this dialog is dismissed) KeithMo 06-Oct-1991 Win32 Conversion. TerryK 15-Nov-1991 move from admin\common\h\setfocus.hxx to here TerryK 18-Nov-1991 added ssfdlg.hxx to the end of the file Chuckc 23-Feb-1992 Added SELECTION_TYPE KeithMo 23-Jul-1992 Added maskDomainSources and pszDefaultSelection. KeithMo 07-Aug-1992 Added HelpContext parameters. YiHsinS 08-Mar-1993 Added second worker thread FOCUSDLG_DATA_THREAD
*/
#ifndef _FOCUSDLG_HXX_
#define _FOCUSDLG_HXX_
extern "C" { #include "domenum.h" // for BROWSE_*_DOMAIN[S] flags
#include "uimsg.h"
} // extern "C"
#include "string.hxx"
#include "fontedit.hxx" // for SLE_FONT
#include "olb.hxx" // get LM_OLLB
#include "focus.hxx" // for FOCUS_TYPE, SELECTION_TYPE and FOCUS_CACHE_SETTING
#include "w32event.hxx" // for WIN32_EVENT
#include "w32thred.hxx" // for WIN32_THREAD
#include "domenum.hxx" // for BROWSE_DOMAIN_ENUM
#include "lmoesrv.hxx" // for SERVER1_ENUM
#define IERR_DONT_DISMISS_FOCUS_DLG ( IDS_UI_APPLIB_LAST - 5 )
#define WM_FOCUS_LB_FILLED ( WM_USER + 138 )
typedef struct { BROWSE_DOMAIN_ENUM *pEnumDomains; // Contains the list of domains
SERVER1_ENUM *pEnumServers; // Contains the list of servers if needed
const TCHAR *pszSelection; // The default selection
} FOCUSDLG_RETURN_DATA;
DLL_CLASS FOCUSDLG_DATA_THREAD;
/*************************************************************************
NAME: BASE_SET_FOCUS_DLG
SYNOPSIS: This is the base class of SET_FOCUS_DLG. Currently, it has 2 children classes as:
BASE_SET_FOCUS_DLG / \ / \ SET_FOCUS_DLG STANDALONE_SET_FOCUS_DLG
where SET_FOCUS_DLG is associated with the ADMINAPP object and STANDALONE_SET_FOCUS_DLG is completely independent.
The purpose of this class is to popup a dialog window and display a SLE and a listbox which contains the current domain and servers available and let the user selects either the domain or server.
INTERFACE: BASE_SET_FOCUS_DLG() - constructor ~BASE_SET_FOCUS_DLG() - destructor
PARENT: DIALOG_WINDOW
USES: SLE, LM_OLLB, CONTROL_EVENT, HWND
HISTORY: terryk 18-Nov-91 Created KeithMo 23-Jul-1992 Added maskDomainSources and pszDefaultSelection.
**************************************************************************/
DLL_CLASS BASE_SET_FOCUS_DLG : public DIALOG_WINDOW { private: SLE _sleFocusPath;
// Note, _iCurrShowSelection must always be in sync with the current
// selection of _olb. This means that every time SelectItem or
// RemoveSelection is called on _olb, _iCurrShowSelection must
// be updated.
INT _iCurrShowSelection; LM_OLLB _olb; SLE_FONT _sleGetInfo; SLT _sltLBTitle;
SELECTION_TYPE _seltype ;
ULONG _nHelpContext;
NLS_STR _nlsHelpFile ;
SLT _sltBoundary; XYDIMENSION _xyOriginal; CHECKBOX _chkboxRasMode; SLT _sltRasModeMessage;
RESOURCE_STR _resstrRasServerSlow; RESOURCE_STR _resstrRasServerFast; RESOURCE_STR _resstrRasDomainSlow; RESOURCE_STR _resstrRasDomainFast;
FOCUSDLG_DATA_THREAD *_pDataThread;
VOID OnDomainLBChange();
APIERR ProcessNetPath( NLS_STR * pnlsPath, MSGID *pmsgid );
VOID SelectNetPathString();
/*
* The RasMode checkbox is updated (if active) when the edit field changes */ VOID UpdateRasMode();
protected: virtual BOOL OnCommand( const CONTROL_EVENT & event ); virtual BOOL OnUserMessage( const EVENT & event );
virtual BOOL OnOK(); virtual APIERR SetNetworkFocus( HWND hwndOwner, const TCHAR * pszNetworkFocus, FOCUS_CACHE_SETTING setting ); virtual ULONG QueryHelpContext(); virtual const TCHAR * QueryHelpFile( ULONG nHelpContext );
/*
* Determine whether the given focus is know to be slow or fast */ virtual FOCUS_CACHE_SETTING ReadFocusCache( const TCHAR * pszFocus ) const;
/*
* Return the supplied helpfile name if any */ const TCHAR * QuerySuppliedHelpFile(void) { return _nlsHelpFile.QueryPch() ; }
/*
* Return the supplied help context if any */ DWORD QuerySuppliedHelpContext(void) { return _nHelpContext ; }
VOID ShowArea( BOOL fFull ); // Change dialog size
BOOL IsExpanded() const;
public: BASE_SET_FOCUS_DLG( const HWND wndOwner, SELECTION_TYPE seltype, ULONG maskDomainSources, const TCHAR * pszDefaultSelection, ULONG nHelpContext, const TCHAR *pszHelpFile = NULL, ULONG nServerTypes = (ULONG) -1L ); ~BASE_SET_FOCUS_DLG();
// Overloaded 'Process' members for reducing initial dialog extent
APIERR Process( UINT *pnRetVal = NULL ); APIERR Process( BOOL *pfRetVal );
VOID SetRasMode( BOOL fRasMode ) { _chkboxRasMode.SetCheck( fRasMode ); }
BOOL InRasMode( VOID ) const { return _chkboxRasMode.QueryCheck(); } };
/*************************************************************************
NAME: FOCUSDLG_DATA_THREAD
SYNOPSIS: Worker thread to get all the domains, servers...
INTERFACE: FOCUSDLG_DATA_THREAD() - Constructor ~FOCUSDLG_DATA_THREAD() - Destructor ExitThread() - Signals the thread to exit
PARENT: WIN32_THREAD
USES: WIN32_EVENT
HISTORY: YiHsinS 10-Mar-1993 Created
**************************************************************************/
DLL_CLASS FOCUSDLG_DATA_THREAD : public WIN32_THREAD { private: //
// Information needed to do the enumeration
//
HWND _hwndDlg; ULONG _maskDomainSources; SELECTION_TYPE _seltype; NLS_STR _nlsSelection; ULONG _nServerTypes;
//
// Exit thread event
//
WIN32_EVENT _eventExitThread;
//
// Set when the main dialog is exiting
//
BOOL _fThreadIsTerminating;
protected:
//
// Main routine to enumerate the information
//
virtual APIERR Main( VOID );
//
// THIS DELETES *this!
//
virtual APIERR PostMain( VOID );
public: FOCUSDLG_DATA_THREAD( HWND hwndDlg, ULONG maskDomainSources, SELECTION_TYPE seltype, const TCHAR *pszSelection, ULONG nServerTypes ); virtual ~FOCUSDLG_DATA_THREAD();
//
// This signals the thread to *asynchronously* clean up and die.
//
// THIS OBJECT WILL BE DELETED SOMETIME AFTER THIS CALL!
//
APIERR ExitThread( VOID ) { _fThreadIsTerminating = TRUE; return _eventExitThread.Set(); } };
/*************************************************************************
NAME: STANDALONE_SET_FOCUS_DLG
SYNOPSIS: Popup a dialog box and let the user selects a domain or server
INTERFACE: STANDALONE_SET_FOCUS_DLG() - constructor.
PARENT: BASE_SET_FOCUS_DLG
USES: NLS_STR
HISTORY: terryk 18-Nov-1991 Created KeithMo 23-Jul-1992 Added maskDomainSources and pszDefaultSelection.
**************************************************************************/
DLL_CLASS STANDALONE_SET_FOCUS_DLG : public BASE_SET_FOCUS_DLG { private: NLS_STR *_pnlsName;
protected: virtual APIERR SetNetworkFocus( HWND hwndOwner, const TCHAR * pszNetworkFocus, FOCUS_CACHE_SETTING setting );
public: // the NLS_STR is a pointer which points to the string receive
// buffer for the domain or server name.
STANDALONE_SET_FOCUS_DLG( HWND wndOwner, NLS_STR *pnlsName, ULONG nHelpContext, SELECTION_TYPE seltype = SEL_SRV_AND_DOM, ULONG maskDomainSources = BROWSE_LM2X_DOMAINS, const TCHAR * pszDefaultSelection = NULL, const TCHAR * pszHelpFile = NULL, ULONG nServerTypes = (ULONG)-1L ); };
#endif // _FOCUSDLG_HXX_
|