/*****************************************************************/ /** Microsoft Windows NT **/ /** Copyright(c) Microsoft Corp., 1991 **/ /*****************************************************************/ /* * sharestp.hxx * Contains the following classes used by the stop sharing dialog * and the share management dialog. * * SHARE_LISTBOX * SHARE_LBI * * CURRENT_USERS_WARNING_DIALOG * USERS_LISTBOX * USERS_LBI * * VIEW_SHARE_DIALOG_BASE * * STOP_SHARING_DIALOG * STOP_SHARING_GROUP * * History: * Yi-HsinS 1/6/92 Separated from sharefmx.cxx * Yi-HsinS 3/12/92 Added STOP_SHARING_GROUP * Yi-HsinS 4/2/92 Added MayRun * Yi-HsinS 8/2/92 Reorganize the hier. to match winball * Yi-HsinS 11/20/92 Added support for sticky shares * */ #ifndef _SHARESTP_HXX_ #define _SHARESTP_HXX_ #include "sharebas.hxx" // Bitmask of type of shares to be displayed in the dialogs #define STYPE_DISK_SHARE 0x00000001 #define STYPE_PRINT_SHARE 0x00000002 #define STYPE_IPC_SHARE 0x00000004 #define STYPE_ALL_SHARE (STYPE_DISK_SHARE | STYPE_PRINT_SHARE | STYPE_IPC_SHARE) // Types of bitmaps to display in the SHARE_LISTBOX #define DISKSHARE_TYPE 0 // normal disk share #define STICKYSHARE_TYPE 1 // sticky disk share #define IPCSHARE_TYPE 2 // IPC$ share /************************************************************************* NAME: SHARE_LBI SYNOPSIS: Items in the SHARE_LISTBOX in VIEW_SHARE_DIALOG_BASE to display the share name and path of the share on the selected computer. INTERFACE: SHARE_LBI() - Constructor ~SHARE_LBI() - Destructor QueryShareName() - Query the share name contained in the LBI QuerySharePath() - Query the share path contained in the LBI IsSticky() - TRUE if the share is sticky, FALSE otherwise PARENT: LBI USES: NLS_STR CAVEATS: NOTES: HISTORY: Yi-HsinS 1/6/92 Created beng 22-Apr-1992 Change to LBI::Paint **************************************************************************/ class SHARE_LBI: public LBI { // Name of the share NLS_STR _nlsShareName; // Path that the share represents NLS_STR _nlsSharePath; // TRUE if the share is sticky, FALSE otherwise UINT _nType; protected: virtual VOID Paint( LISTBOX *plb, HDC hdc, const RECT *prect, GUILTT_INFO *pGUILTT ) const; virtual INT Compare( const LBI *plbi ) const; public: SHARE_LBI( const SHARE2_ENUM_OBJ &s2, UINT nType = DISKSHARE_TYPE ); virtual ~SHARE_LBI(); virtual WCHAR QueryLeadingChar( VOID ) const; NLS_STR *QueryShareName( VOID ) { return &_nlsShareName; } NLS_STR *QuerySharePath( VOID ) { return &_nlsSharePath; } BOOL IsSticky( VOID ) const { return _nType == STICKYSHARE_TYPE; } }; /************************************************************************* NAME: SHARE_LISTBOX SYNOPSIS: Listbox used in VIEW_SHARE_DIALOG_BASE to display the share name and the path of the share on the selected computer. INTERFACE: SHARE_LISTBOX() - Constructor ~SHARE_LISTBOX() - Destructor QueryItem() - Query the SHARE_LBI QueryColumnWidths()- Query the array of column widths QueryShareBitmap() - Query the share bitmap QueryStickyShareBitmap() - Query the sticky share bitmap Update() - Refresh the listbox PARENT: BLT_LISTBOX USES: DMID_DTE CAVEATS: NOTES: HISTORY: Yi-HsinS 1/20/92 Created **************************************************************************/ class SHARE_LISTBOX: public BLT_LISTBOX { private: // // Array storing the calculated column widths // UINT _adx[3]; // // Pointer to the bitmap // DMID_DTE *_pdmdte; DMID_DTE *_pdmdteSticky; DMID_DTE *_pdmdteIPC; // // Indicating the type of shares to display in the listbox // UINT _nShareType; public: SHARE_LISTBOX( OWNER_WINDOW *powin, CID cid, UINT nShareType ); ~SHARE_LISTBOX(); DECLARE_LB_QUERY_ITEM( SHARE_LBI ); const UINT *QueryColumnWidths( VOID ) const { return _adx; } DMID_DTE *QueryShareBitmap( VOID ) { return _pdmdte; } DMID_DTE *QueryStickyShareBitmap( VOID ) { return _pdmdteSticky; } DMID_DTE *QueryIPCShareBitmap( VOID ) { return _pdmdteIPC; } APIERR Update( SERVER_WITH_PASSWORD_PROMPT *psvr ); }; /************************************************************************* NAME: USERS_LBI SYNOPSIS: Listbox items in the USERS_LISTBOX in CURRENT_USERS_WARNING_DIALOG INTERFACE: USERS_LBI() - Constructor ~USERS_LBI() - Destructor PARENT: LBI USES: NLS_STR CAVEATS: NOTES: HISTORY: Yi-HsinS 8/25/91 Created beng 4/22/92 Change to LBI::Paint **************************************************************************/ class USERS_LBI: public LBI { // Name of the user NLS_STR _nlsUserName; // Number of open files the user has UINT _usNumOpens; // Elapsed time since the user connect to the share ULONG _ulTime; protected: virtual VOID Paint( LISTBOX *plb, HDC hdc, const RECT *prect, GUILTT_INFO *pGUILTT ) const; virtual INT Compare( const LBI *plbi ) const; // // Convert the time in seconds to the output string // APIERR ConvertTime( ULONG ulTime, NLS_STR *pnlsTime ) const; public: USERS_LBI( const CONN1_ENUM_OBJ &c1 ); virtual ~USERS_LBI(); }; /************************************************************************* NAME: USERS_LISTBOX SYNOPSIS: The listbox that displays the user/file opens/elapsed of the users that have connection to the share to be deleted. Used by the CURRENT_USERS_WARNING_DIALOG INTERFACE: USERS_LISTBOX() - Constructor QueryItem() - Query the USERS_LBI QueryColumnWidths() - Return the array of column widths PARENT: BLT_LISTBOX USES: CAVEATS: NOTES: HISTORY: Yi-HsinS 1/21/92 Created **************************************************************************/ class USERS_LISTBOX: public BLT_LISTBOX { private: // Array of column widths UINT _adx[3]; public: USERS_LISTBOX( OWNER_WINDOW *powin, CID cid ); DECLARE_LB_QUERY_ITEM( USERS_LBI ); const UINT *QueryColumnWidths( VOID ) { return _adx; } }; /************************************************************************* NAME: CURRENT_USERS_WARNING_DIALOG SYNOPSIS: This dialog pops up if there are users using the share that is to be deleted. The listbox have three columns, listing the usernmame, the number of file opens, and the elapsed time since connection. INTERFACE: CURRENT_USERS_WARNING_DIALOG() - Constructor PARENT: DIALOG_WINDOW USES: USERS_LISTBOX, SLT CAVEATS: NOTES: OnOK and OnCancel is not redefined here. The default in the DIALOG_WINDOW class serves the purpose - Dismiss( FALSE ) OnCancel and Dismiss(TRUE) OnOK. The list box in this dialog is a read-only listbox. HISTORY: Yi-HsinS 8/25/91 Created **************************************************************************/ class CURRENT_USERS_WARNING_DIALOG: public DIALOG_WINDOW { private: // Display the share name to be deleted SLT _sltShareText; // Listbox for displaying the users connected to the share USERS_LISTBOX _lbUsers; // Store the help context base ULONG _ulHelpContextBase; protected: virtual ULONG QueryHelpContext( VOID ); public: CURRENT_USERS_WARNING_DIALOG( HWND hwndParent, const TCHAR *pszServer, const TCHAR *pszShare, ULONG ulHelpContextBase ); }; /************************************************************************* NAME: VIEW_SHARE_DIALOG_BASE SYNOPSIS: This is the base dialog for STOP_SHARING_DIALOG in the file manager and SHARE_MANAGEMENT_DIALOG in the server manager. INTERFACE: PARENT: DIALOG_WINDOW USES: SLT, SHARE_LISTBOX, SERVER_WITH_PASSWORD_PROMPT CAVEATS: NOTES: This class contains all common routines called used by the share management dialog and stop share dialog. HISTORY: Yi-HsinS 8/25/91 Created **************************************************************************/ class VIEW_SHARE_DIALOG_BASE : public DIALOG_WINDOW { private: // The title of the share listbox SLT _sltShareTitle; // Listbox for displaying the shares on the selected computer SHARE_LISTBOX _lbShare; SERVER_WITH_PASSWORD_PROMPT *_psvr; // the help context base ULONG _ulHelpContextBase; protected: VIEW_SHARE_DIALOG_BASE( const TCHAR *pszDlgResource, HWND hwndParent, ULONG ulHelpContextBase, UINT nShareType = STYPE_ALL_SHARE ); ~VIEW_SHARE_DIALOG_BASE(); virtual BOOL OnCommand( const CONTROL_EVENT & event ); // // Virtual methods that are called when the user double clicks // on a share in the listbox // virtual BOOL OnShareLbDblClk( VOID ) = 0; // // Initialize the SERVER_WITH_PASSWORD_PROMPT object and will prompt // password if needed when focused on a LM share-level server // APIERR InitComputer( const TCHAR *pszComputer ); // // Refresh the listbox // APIERR Refresh( VOID ); // // Stop sharing the share - If there are users connected to the // share, a warning dialog will popup. // APIERR StopShare( const TCHAR *pszShare, BOOL *pfCancel ); // // Return a pointer to the listbox // SHARE_LISTBOX *QueryLBShare( VOID ) { return &_lbShare; } // // Query the computer name // const TCHAR *QueryComputerName( VOID ) const { UIASSERT( _psvr != NULL); return _psvr->QueryName(); } // // Return the SERVER_WITH_PASSWORD_PROMPT object // SERVER_WITH_PASSWORD_PROMPT *QueryServer2( VOID ) const { UIASSERT( _psvr != NULL); return _psvr; } // // Return the help context base // ULONG QueryHelpContextBase( VOID ) const { return _ulHelpContextBase; } }; /************************************************************************* NAME: STOP_SHARING_GROUP SYNOPSIS: This group contains pointers to the share name listbox, the OK push button and the CANCEL push button. INTERFACE: STOP_SHARING_GROUP() - Constructor ~STOP_SHARING_GROUP() - Destructor PARENT: CONTROL_GROUP USES: SHARE_LISTBOX, PUSH_BUTTON CAVEATS: NOTES: If the number of selected items in the listbox is greater than 0, we will make OK the default button. Else we will make CANCEL the default button. HISTORY: Yi-HsinS 3/12/92 Created **************************************************************************/ class STOP_SHARING_GROUP: public CONTROL_GROUP { private: // Pointer to the share listbox SHARE_LISTBOX *_plbShare; // Pointer to the OK button PUSH_BUTTON *_pbuttonOK; // Pointer to the Cancel button PUSH_BUTTON *_pbuttonCancel; SHARE_LISTBOX *QueryLBShare( VOID ) { return _plbShare; } protected: virtual APIERR OnUserAction( CONTROL_WINDOW *pcw, const CONTROL_EVENT &e ); public: STOP_SHARING_GROUP( SHARE_LISTBOX *plbShareName, PUSH_BUTTON *pbuttonOK, PUSH_BUTTON *pbuttonCancel ); ~STOP_SHARING_GROUP(); }; /************************************************************************* NAME: STOP_SHARING_DIALOG SYNOPSIS: This is the dialog for deleting shares via file manager INTERFACE: STOP_SHARING_DIALOG() - Constructor PARENT: VIEW_SHARE_DIALOG_BASE USES: PUSH_BUTTON, STOP_SHARING_GROUP CAVEATS: NOTES: OnCancel is not redefined here. The default in the DIALOG_WINDOW class serves the purpose - Dismiss( FALSE ). HISTORY: Yi-HsinS 8/25/91 Created **************************************************************************/ class STOP_SHARING_DIALOG : public VIEW_SHARE_DIALOG_BASE { private: PUSH_BUTTON _buttonOK; PUSH_BUTTON _buttonCancel; STOP_SHARING_GROUP _stpShareGrp; // // Find out the computer that the user is focusing and // initialize all information shown in the dialog. // APIERR Init( const TCHAR *pszSelectedDir ); protected: virtual BOOL OnOK( VOID ); virtual ULONG QueryHelpContext( VOID ); // // Virtual methods that are called when the user double clicks // on a share in the listbox // virtual BOOL OnShareLbDblClk( VOID ); public: STOP_SHARING_DIALOG( HWND hwndParent, const TCHAR *pszSelectedDir, ULONG ulHelpContextBase ); }; #endif