windows-nt/Source/XPSP1/NT/net/sfm/afp/ui/afpmgr/volumes.hxx
2020-09-26 16:20:57 +08:00

587 lines
14 KiB
C++

/**********************************************************************/
/** Microsoft Windows/NT **/
/** Copyright(c) Microsoft Corp., 1991 **/
/**********************************************************************/
/*
volumes.hxx
Class declarations for the VOLUMES_DIALOG, VOLUMES_LISTBOX, and
VOLUMES_LBI classes.
These classes implement the Server Manager Shared Volumes subproperty
sheet. The VOLUMES_LISTBOX/VOLUMES_LBI classes implement the listbox
which shows the available sharepoints. VOLUMES_DIALOG implements the
actual dialog box.
FILE HISTORY:
NarenG 02-Oct-1993 Stole from Server Manager and folded
BASE_RES_DIALOG and FILES_DIALOG into one.
*/
#ifndef _VOLUMES_HXX
#define _VOLUMES_HXX
#include <bltnslt.hxx>
#include <strnumer.hxx>
#include <strelaps.hxx>
//
// Number of columns in USERS and volumes listboxes
//
#define COLS_SV_LB_USERS 4
#define COLS_SV_LB_VOLUMES 4
/*************************************************************************
NAME: USERS_LBI
SYNOPSIS: This class represents one item in the USERS_LISTBOX.
INTERFACE: USERS_LBI - Class constructor.
~USERS_LBI - Class destructor.
Paint - Draw an item.
QueryLeadingChar - Query the first character for
the keyboard interface.
Compare - Compare two items.
QueryUserName - Query the user name for this item.
QueryComputerName - Returns the computer name
associated with this item.
PARENT: LBI
HISTORY:
NarenG 02-Oct-1993 Stole from Server Manager and folded
BASE_RES_DIALOG and FILES_DIALOG into one.
**************************************************************************/
class USERS_LBI : public LBI
{
private:
//
// These data members represent the various
// columns to be displayed in the listbox.
//
DMID_DTE * _pdte;
NLS_STR _nlsUserName;
NLS_STR _nlsInUse;
ELAPSED_TIME_STR _nlsTime;
DWORD _cOpens;
DWORD _dwConnectionId;
protected:
//
// This method paints a single item into the listbox.
//
virtual VOID Paint( LISTBOX * plb,
HDC hdc,
const RECT * prect,
GUILTT_INFO * pGUILTT ) const;
//
// This method returns the first character in the
// listbox item. This is used for the listbox
// keyboard interface.
//
virtual WCHAR QueryLeadingChar( VOID ) const;
//
// This method compares two listbox items. This
// is used for sorting the listbox.
//
virtual INT Compare( const LBI * plbi ) const;
public:
//
// Usual constructor/destructor goodies.
//
USERS_LBI( DWORD dwConnectionId,
const TCHAR * pszUserName,
ULONG ulTime,
DWORD cOpens,
TCHAR chTimeSep,
DMID_DTE * pdte );
virtual ~USERS_LBI();
//
// Retrieve the user name associated with
// this listbox item.
//
const TCHAR * QueryUserName( VOID ) const
{ return _nlsUserName.QueryPch(); }
//
// Retrieve the Id of this connection.
//
DWORD QueryConnectionId( VOID ) const
{ return _dwConnectionId; }
DWORD QueryNumOpens( VOID ) const
{ return _cOpens; }
}; // class USERS_LBI
/*************************************************************************
NAME: USERS_LISTBOX
SYNOPSIS: This listbox displays the users connected to a
particular sharepoint.
INTERFACE: USERS_LISTBOX - Class constructor.
~USERS_LISTBOX - Class destructor.
Fill - Fill the user list.
Refresh - Refresh the user list.
QueryColumnWidths - Called by USERS_LBI::Paint(),
this is the column width table
used for painting the listbox
items.
PARENT: BLT_LISTBOX
USES: SERVER_2
HISTORY:
NarenG 02-Oct-1993 Stole from Server Manager and folded
BASE_RES_DIALOG and FILES_DIALOG into one.
**************************************************************************/
class USERS_LISTBOX : public BLT_LISTBOX
{
private:
//
// This array contains the column widths used
// while painting the listbox item. This array
// is generated by the BuildColumnWidthTable()
// function.
//
UINT _adx[COLS_SV_LB_USERS];
//
// This represents the target server.
//
AFP_SERVER_HANDLE _hServer;
//
// This is the cute little icon which is displayed
// in each of the USERS_LBI listbox items.
//
DMID_DTE _dteIcon;
//
// This is the time separator. It is retrieved from
// WIN.INI (section=intl, key=sTime). If this
// cannot be retrieved from WIN.INI, then ':' is
// used by default.
//
TCHAR _chTimeSep; // BUGBUG: Unicode?
public:
//
// Usual constructor/destructor goodies.
//
USERS_LISTBOX( OWNER_WINDOW * powOwner,
CID cid,
AFP_SERVER_HANDLE hServer );
~USERS_LISTBOX();
//
// This method fills the listbox with the connected
// users.
//
DWORD Fill( DWORD dwVolumeId );
//
// This method refreshes the listbox. It is responsible
// for maintaining the selection & appearance of the
// listbox.
//
DWORD Refresh( DWORD dwVolumeId );
//
// This method is called by the USERS_LBI::Paint()
// method for retrieving the column width table.
//
const UINT * QueryColumnWidths( VOID ) const
{ return _adx; }
//
// This method will return TRUE if any user in the
// listbox has any resource open.
//
BOOL AreResourcesOpen( VOID ) const;
//
// The following macro will declare (& define) a new
// QueryItem() method which will return an USERS_LBI *.
//
DECLARE_LB_QUERY_ITEM( USERS_LBI )
}; // class USERS_LISTBOX
/*************************************************************************
NAME: VOLUMES_LBI
SYNOPSIS: A single item to be displayed in VOLUMES_LISTBOX.
INTERFACE: VOLUMES_LBI - Constructor. Takes a sharepoint
name, a path, and a count of the
number of users using the share.
~VOLUMES_LBI - Destructor.
Paint - Paints the listbox item.
QueryResourceName - Query the resource name from
the listbox.
SetResourceName - Sets the resource name for this
listbox item.
QueryLeadingChar - Query the item's first character
(for the keyboard interface).
Compare - Compare two items.
PARENT: LBI
USES: NLS_STR
HISTORY:
NarenG 02-Oct-1993 Stole from Server Manager and folded
BASE_RES_DIALOG and FILES_DIALOG into one.
**************************************************************************/
class VOLUMES_LBI : public LBI
{
private:
//
// The target resource id.
//
DWORD _dwVolumeId;
//
// The following data members represent the
// various columns of the listbox.
//
DMID_DTE * _pdte;
NLS_STR _nlsVolumeName;
DEC_STR _nlsUses;
NLS_STR _nlsPath;
protected:
//
// This method paints a single item into the listbox.
//
virtual VOID Paint( LISTBOX * plb,
HDC hdc,
const RECT * prect,
GUILTT_INFO * pGUILTT ) const;
public:
DWORD QueryVolumeId( VOID ) const
{ return _dwVolumeId; }
const TCHAR * QueryVolumeName( VOID ) const
{ return _nlsVolumeName.QueryPch(); }
const TCHAR * QueryPath( VOID ) const
{ return _nlsPath.QueryPch(); }
//
// The next two methods are used for listbox management.
//
virtual WCHAR QueryLeadingChar( VOID ) const;
virtual INT Compare( const LBI * plbi ) const;
//
// This method is used to notify the LBI of a new "use" count.
//
virtual APIERR NotifyNewUseCount( DWORD cUses );
//
// Usual constructor/destructor goodies.
//
VOLUMES_LBI( DWORD dwVolumeId,
const TCHAR * pszVolName,
const TCHAR * pszPath,
DWORD cUses,
DMID_DTE * pdte );
virtual ~VOLUMES_LBI();
}; // class VOLUMES_LBI
/*************************************************************************
NAME: VOLUMES_LISTBOX
SYNOPSIS: This listbox shows the sharepoints available on a
target server.
INTERFACE: VOLUMES_LISTBOX - Class constructor. Takes a
pointer to the "owning" window,
a CID, and a handle to the server
being admiunistered.
~VOLUMES_LISTBOX - Class destructor.
Fill - Fills the listbox with the
available sharepoints.
Refresh - Refresh listbox contents.
QueryColumnWidths - Returns pointer to col width table.
QueryServer - Query the target server name.
PARENT: BLT_LISTBOX
USES: DMID_DTE
HISTORY:
NarenG 02-Oct-1993 Stole from Server Manager and folded
BASE_RES_DIALOG and FILES_DIALOG into one.
**************************************************************************/
class VOLUMES_LISTBOX : public BLT_LISTBOX
{
private:
//
// This s the cute little icon displayed in the VOLUMES
// listbox.
//
DMID_DTE _dteDisk;
//
// This data member represents the target server.
//
const AFP_SERVER_HANDLE _hServer;
//
// The column width table.
//
UINT _adx[COLS_SV_LB_VOLUMES];
public:
//
// The following method is called whenever the listbox needs
// to be refreshed (i.e. while the dialog is active). This
// method is responsible for maintaining (as much as possible)
// the current state of any selected item.
//
DWORD Refresh( VOID );
//
// This method returns a pointer to the column width table.
//
const UINT * QueryColumnWidths( VOID ) const
{ return _adx; }
//
// Usual constructor\destructor goodies.
//
//
VOLUMES_LISTBOX( OWNER_WINDOW * powner,
CID cid,
AFP_SERVER_HANDLE hServer );
~VOLUMES_LISTBOX();
//
// This method fills the listbox with the available sharepoints.
//
virtual DWORD Fill( VOID );
//
// The following macro will declare (& define) a new
// QueryItem() method which will return a VOLUMES_LBI *.
//
DECLARE_LB_QUERY_ITEM( VOLUMES_LBI )
}; // class VOLUMES_LISTBOX
/*************************************************************************
NAME: VOLUMES_DIALOG
SYNOPSIS: The class represents the Shared Volumes subproperty dialog
of the Server Manager.
INTERFACE: VOLUMES_DIALOG - Class constructor.
~VOLUMES_DIALOG - Class destructor.
QueryHelpContext - Called when the user presses "F1"
or the "Help" button. Used for
selecting the appropriate help
text for display.
OnCommand - Called during command processing.
Refresh - Refreshes the dialog window,
including all contained listboxes.
PARENT: SRV_BASE_DIALOG
USES: VOLUMES_LISTBOX
USERS_LISTBOX
PUSH_BUTTON
DEC_SLT
HISTORY:
NarenG 02-Oct-1993 Stole from Server Manager and folded
BASE_RES_DIALOG and FILES_DIALOG into one.
**************************************************************************/
class VOLUMES_DIALOG : public DIALOG_WINDOW
{
private:
//
// This listbox contains the available sharepoints.
//
VOLUMES_LISTBOX _lbVolumes;
//
// This listbox contains the users connected to the
// resource selected.
//
USERS_LISTBOX _lbUsers;
//
// The "Disconnect" and "Disconnect All" push buttons.
//
PUSH_BUTTON _pbDisconnect;
PUSH_BUTTON _pbDisconnectAll;
PUSH_BUTTON _pbOK;
//
// This member represents the display of the number of
// connected users.
//
DEC_SLT _sltUsersCount;
//
// This represents the target server.
//
AFP_SERVER_HANDLE _hServer;
protected:
//
// Called during help processing to select the appropriate
// help text for display.
//
virtual ULONG QueryHelpContext( VOID );
// Called during command processing, mainly to handle
// commands from the graphical button bar.
//
virtual BOOL OnCommand( const CONTROL_EVENT & event );
//
// The following method is called to refresh the
// dialog. It is responsible for refreshing all
// of the associated listboxes and text fields.
//
virtual DWORD Refresh( VOID );
public:
//
// Usual constructor\destructor goodies.
//
VOLUMES_DIALOG( HWND hWndOwner,
AFP_SERVER_HANDLE hServer,
const TCHAR * pszServerName );
~VOLUMES_DIALOG();
}; // class VOLUMES_DIALOG
#endif // _VOLUMES_HXX