windows-nt/Source/XPSP1/NT/admin/netui/common/h/focusdlg.hxx

313 lines
9.3 KiB
C++
Raw Normal View History

2020-09-26 03:20:57 -05:00
/**********************************************************************/
/** 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_