windows-nt/Source/XPSP1/NT/net/sfm/afp/ui/afpmgr/volmgt.cxx

522 lines
10 KiB
C++
Raw Normal View History

2020-09-26 03:20:57 -05:00
/**********************************************************************/
/** Microsoft Windows NT **/
/** Copyright(c) Microsoft Corp., 1992 **/
/**********************************************************************/
/*
* volmgt.cxx
* Contains the dialog for managing volumes in the server manager
* VOLUME_MANAGEMENT_DIALOG
*
* FILE HISTORY:
* NarenG 11/11/92 Modified sharemgt.cxx for AFPMGR
*
*/
#define INCL_WINDOWS_GDI
#define INCL_WINDOWS
#define INCL_DOSERRORS
#define INCL_NETERRORS
#define INCL_NETSERVER
#define INCL_NETSHARE
#define INCL_NETCONS
#define INCL_NETLIB
#include <lmui.hxx>
#define INCL_BLT_WINDOW
#define INCL_BLT_DIALOG
#define INCL_BLT_CONTROL
#define INCL_BLT_MISC
#define INCL_BLT_CLIENT
#define INCL_BLT_MSGPOPUP
#define INCL_BLT_SPIN_GROUP
#define INCL_BLT_GROUP
#include <blt.hxx>
extern "C"
{
#include <afpmgr.h>
#include <macfile.h>
}
#include <string.hxx>
#include <uitrace.hxx>
#include <newvol.hxx>
#include <volprop.hxx>
#include "util.hxx"
#include "volmgt.hxx"
/*******************************************************************
NAME: VOLUME_MANAGEMENT_DIALOG::VOLUME_MANAGEMENT_DIALOG
SYNOPSIS: Constructor
ENTRY: hwndParent - hwnd of the parent window
hServer - handle to the target server
pszServerName - name of the selected computer
EXIT:
RETURNS:
NOTES:
HISTORY:
NarenG 11/18/92 Modified for AFPMGR
********************************************************************/
VOLUME_MANAGEMENT_DIALOG::VOLUME_MANAGEMENT_DIALOG(
HWND hwndOwner,
AFP_SERVER_HANDLE hServer,
const TCHAR *pszServerName )
: VIEW_VOLUMES_DIALOG_BASE( MAKEINTRESOURCE(IDD_VOLUME_MANAGEMENT_DLG),
hwndOwner,
hServer,
pszServerName,
TRUE,
IDVM_SLT_VOLUME_TITLE,
IDVM_LB_VOLUMES),
_pbVolumeDelete( this, IDVM_PB_DELETE_VOL ),
_pbVolumeInfo( this, IDVM_PB_VOL_INFO ),
_hServer( hServer ),
_nlsServerName( pszServerName ),
_pbClose( this, IDOK )
{
//
// Just to be cool
//
AUTO_CURSOR Cursor;
//
// Make sure everything constructed OK
//
if ( QueryError() != NERR_Success )
return;
DWORD err;
if ( ( err = _nlsServerName.QueryError() ) != NERR_Success )
{
ReportError( err );
return;
}
//
// Set the caption to "Volumes on Server".
//
err = ::SetCaption( this, IDS_CAPTION_VOLUMES, pszServerName );
if ( err != NO_ERROR )
{
ReportError( err );
return;
}
err = Refresh();
if ( err != NO_ERROR )
{
ReportError( err );
return;
}
ResetControls();
}
/*******************************************************************
NAME: VOLUME_MANAGEMENT_DIALOG::Refresh
SYNOPSIS: Refresh the volume listbox
ENTRY:
EXIT:
RETURNS:
NOTES:
HISTORY:
NarenG 11/18/92 Modified for AFPMGR
********************************************************************/
DWORD VOLUME_MANAGEMENT_DIALOG::Refresh( VOID )
{
//
// Just to be cool
//
AUTO_CURSOR Cursor;
DWORD err = VIEW_VOLUMES_DIALOG_BASE::Refresh();
ResetControls();
return err;
}
/*******************************************************************
NAME: VOLUME_MANAGEMENT_DIALOG::ResetControls
SYNOPSIS: Enable/Disable/MakeDefault the push buttons according
to whether there are items in the listbox
ENTRY:
EXIT:
RETURNS:
NOTES:
HISTORY:
NarenG 11/18/92 Modified for AFPMGR
********************************************************************/
VOID VOLUME_MANAGEMENT_DIALOG::ResetControls( VOID )
{
INT nCount = QueryLBVolumes()->QueryCount();
//
// If there are items in the listbox, select the first one
// and set focus to the listbox.
//
if ( nCount > 0 )
{
QueryLBVolumes()->SelectItem( 0 );
QueryLBVolumes()->ClaimFocus();
_pbVolumeDelete.Enable( TRUE );
_pbVolumeInfo.Enable( IsFocusOnGoodVolume() );
}
else
{
//
// Else set focus to the Close button
//
_pbClose.MakeDefault();
_pbClose.ClaimFocus();
_pbVolumeDelete.Enable( FALSE );
_pbVolumeInfo.Enable( FALSE );
}
}
/*******************************************************************
NAME: VOLUME_MANAGEMENT_DIALOG::OnCommand
SYNOPSIS: Handle all push buttons commands
ENTRY: event - the CONTROL_EVENT that occurred
EXIT:
RETURNS:
NOTES:
HISTORY:
NarenG 11/18/92 Modified for AFPMGR
********************************************************************/
BOOL VOLUME_MANAGEMENT_DIALOG::OnCommand( const CONTROL_EVENT &event )
{
switch ( event.QueryCid() )
{
case IDVM_PB_DELETE_VOL:
return( OnVolumeDelete() );
case IDVM_PB_VOL_INFO:
return( OnVolumeInfo() );
break;
case IDVM_PB_ADD_VOLUME:
return( OnVolumeAdd() );
break;
case IDVM_LB_VOLUMES:
_pbVolumeInfo.Enable( IsFocusOnGoodVolume() );
break;
default:
break;
}
return( VIEW_VOLUMES_DIALOG_BASE::OnCommand( event ) );
}
/*******************************************************************
NAME: VOLUME_MANAGEMENT_DIALOG::OnVolumeDelete
SYNOPSIS: Called when the "Stop Sharing" button is pressed.
Delete the selected share and pop up any warning
message if there are users connected to the share.
ENTRY:
EXIT:
RETURNS:
NOTES:
HISTORY:
NarenG 11/18/92 Modified for AFPMGR
********************************************************************/
BOOL VOLUME_MANAGEMENT_DIALOG::OnVolumeDelete( VOID )
{
//
// First warn the user.
//
if ( ::MsgPopup( this,
IDS_DELETE_VOLUME_CONFIRM,
MPSEV_WARNING,
MP_YESNO,
MP_YES ) == IDNO )
{
return NO_ERROR;
}
//
// Just to be cool
//
AUTO_CURSOR Cursor;
VIEW_VOLUMES_LISTBOX *plbVolume = QueryLBVolumes();
VIEW_VOLUMES_LBI *pvlbi = plbVolume->QueryItem();
BOOL fCancel;
//
// Delete the selected item in the listbox
//
DWORD err = VolumeDelete( pvlbi, &fCancel );
if ( err != NO_ERROR )
{
::MsgPopup( this, AFPERR_TO_STRINGID( err ) );
}
if ( ( err = Refresh() ) != NO_ERROR )
{
::MsgPopup( this, AFPERR_TO_STRINGID( err ) );
return FALSE;
}
return TRUE;
}
/*******************************************************************
NAME: VOLUME_MANAGEMENT_DIALOG::OnVolumeAdd
SYNOPSIS: Called when the "New Volume" button is pressed.
ENTRY:
EXIT:
RETURNS:
NOTES:
HISTORY:
NarenG 11/18/92 Modified for AFPMGR
********************************************************************/
BOOL VOLUME_MANAGEMENT_DIALOG::OnVolumeAdd( VOID )
{
//
// Just to be cool
//
AUTO_CURSOR Cursor;
DWORD err = NO_ERROR;
NEW_VOLUME_SRVMGR_DIALOG *pDlg = new NEW_VOLUME_SRVMGR_DIALOG(
QueryHwnd(),
_hServer,
_nlsServerName.QueryPch() );
if ( ( pDlg == NULL )
|| ((err = pDlg->QueryError()) != NERR_Success )
|| ((err = pDlg->Process()) != NERR_Success )
)
{
err = err ? err : ERROR_NOT_ENOUGH_MEMORY;
}
delete pDlg;
pDlg = NULL;
if ( err != NO_ERROR )
{
::MsgPopup( this, AFPERR_TO_STRINGID( err ) );
}
if ( ( err = Refresh() ) != NO_ERROR )
{
::MsgPopup( this, AFPERR_TO_STRINGID( err ) );
return FALSE;
}
return TRUE;
}
/*******************************************************************
NAME: VOLUME_MANAGEMENT_DIALOG::OnVolumeInfo
SYNOPSIS: Called when the "Properties" button is pressed.
Will pop up a dialog showing the properties of the
selected share.
ENTRY:
EXIT:
RETURNS:
NOTES:
HISTORY:
NarenG 11/18/92 Modified for AFPMGR
********************************************************************/
BOOL VOLUME_MANAGEMENT_DIALOG::OnVolumeInfo( VOID )
{
if ( !IsFocusOnGoodVolume() )
{
return FALSE;
}
//
// Just to be cool
//
AUTO_CURSOR Cursor;
DWORD err = NO_ERROR;
VIEW_VOLUMES_LISTBOX *plbVolume = QueryLBVolumes();
VIEW_VOLUMES_LBI *pvlbi = plbVolume->QueryItem();
VOLUME_PROPERTIES_DIALOG *pDlg = new VOLUME_PROPERTIES_DIALOG(
QueryHwnd(),
_hServer,
pvlbi->QueryVolumeName(),
_nlsServerName.QueryPch(),
TRUE );
if ( ( pDlg == NULL )
|| ((err = pDlg->QueryError()) != NERR_Success )
|| ((err = pDlg->Process()) != NERR_Success )
)
{
err = err ? err : ERROR_NOT_ENOUGH_MEMORY;
}
delete pDlg;
pDlg = NULL;
if ( err != NO_ERROR )
{
::MsgPopup( this, AFPERR_TO_STRINGID( err ) );
if ( ( err = Refresh() ) != NO_ERROR )
{
::MsgPopup( this, AFPERR_TO_STRINGID( err ) );
}
return FALSE;
}
return TRUE;
}
/*******************************************************************
NAME: VOLUME_MANAGEMENT_DIALOG::OnVolumeLbDblClk
SYNOPSIS: This is called when the user double clicks on a volume
in the listbox. Will pop up a dialog showing the
properties of the selected volume if is valid.
ENTRY:
EXIT:
RETURNS:
NOTES:
HISTORY:
NarenG 11/18/92 Modified for AFPMGR
********************************************************************/
BOOL VOLUME_MANAGEMENT_DIALOG::OnVolumeLbDblClk( VOID )
{
return( OnVolumeInfo() );
}
/*******************************************************************
NAME: VOLUME_MANAGEMENT_DIALOG::QueryHelpContext
SYNOPSIS: Query the help context of the dialog
ENTRY:
EXIT:
RETURNS: Return the help context of the dialog
NOTES:
HISTORY:
NarenG 11/18/92 Modified for AFPMGR
********************************************************************/
ULONG VOLUME_MANAGEMENT_DIALOG::QueryHelpContext( VOID )
{
return HC_VOLUME_MANAGEMENT_DIALOG;
}