|
|
#ifndef _INC_DSKQUOTA_VOLPROP_H
#define _INC_DSKQUOTA_VOLPROP_H
///////////////////////////////////////////////////////////////////////////////
/* File: volprop.h
Description: Provides declarations for quota property pages.
Revision History:
Date Description Programmer -------- --------------------------------------------------- ---------- 08/15/96 Initial creation. BrianAu */ ///////////////////////////////////////////////////////////////////////////////
#ifndef _INC_DSKQUOTA_PRSHTEXT_H
# include "prshtext.h"
#endif
#ifndef _INC_DSKQUOTA_DETAILS_H
# include "details.h"
#endif
#ifdef POLICY_MMC_SNAPIN
# ifndef _INC_DSKQUOTA_POLICY_H
# include "policy.h"
# endif
#endif
#include "resource.h"
const DWORD IDT_STATUS_UPDATE = 1; const DWORD STATUS_UPDATE_TIMER_PERIOD = 2000; // Update every 2 sec.
#define TLM_SETSTATE (WM_USER + 100) // TLM = Traffic Light Message.
//
// Volume property page.
//
class VolumePropPage : public DiskQuotaPropSheetExt { protected: class TrafficLight { private: HWND m_hwndAnimateCtl; INT m_idAviClipRes;
//
// Prevent copy.
//
TrafficLight(const TrafficLight& rhs); TrafficLight& operator = (const TrafficLight& rhs);
public: TrafficLight(VOID) : m_hwndAnimateCtl(NULL), m_idAviClipRes(-1) { }
TrafficLight(HWND hwndAnimateCtl, INT idAviClipRes) : m_hwndAnimateCtl(hwndAnimateCtl), m_idAviClipRes(idAviClipRes) { Initialize(hwndAnimateCtl, idAviClipRes); }
VOID Initialize(HWND hwndAnimateCtl, INT idAviClipRes);
~TrafficLight(VOID) { Animate_Close(m_hwndAnimateCtl); }
enum { YELLOW, OFF, RED, GREEN, FLASHING_YELLOW };
VOID Show(INT eShow);
INT_PTR ForwardMessage(UINT uMsg, WPARAM wParam, LPARAM lParam); };
DWORD m_dwQuotaState; DWORD m_dwQuotaLogFlags; LONGLONG m_llDefaultQuotaThreshold; LONGLONG m_llDefaultQuotaLimit; UINT64 m_cVolumeMaxBytes; UINT_PTR m_idStatusUpdateTimer; DWORD m_dwLastStatusMsgID; int m_idCtlNextFocus; DetailsView *m_pDetailsView; XBytes *m_pxbDefaultLimit; XBytes *m_pxbDefaultThreshold; TrafficLight m_TrafficLight;
virtual INT_PTR OnInitDialog(HWND hDlg, WPARAM wParam, LPARAM lParam); INT_PTR OnCommand(HWND hDlg, WPARAM wParam, LPARAM lParam); INT_PTR OnNotify(HWND hDlg, WPARAM wParam, LPARAM lParam);
INT_PTR OnContextMenu(HWND hwndItem, int xPos, int yPos); INT_PTR OnHelp(HWND hDlg, WPARAM wParam, LPARAM lParam); INT_PTR OnTimer(HWND hDlg, WPARAM wParam, LPARAM lParam); INT_PTR OnButtonDetails(HWND hDlg, WPARAM wParam, LPARAM lParam); INT_PTR OnButtonEventLog(HWND hDlg, WPARAM wParam, LPARAM lParam);
//
// PSN_xxxx handlers.
//
virtual INT_PTR OnSheetNotifyApply(HWND hDlg, WPARAM wParam, LPARAM lParam); virtual INT_PTR OnSheetNotifyKillActive(HWND hDlg, WPARAM wParam, LPARAM lParam); virtual INT_PTR OnSheetNotifyReset(HWND hDlg, WPARAM wParam, LPARAM lParam); virtual INT_PTR OnSheetNotifySetActive(HWND hDlg, WPARAM wParam, LPARAM lParam);
//
// EN_xxxx handlers.
//
INT_PTR OnEditNotifyUpdate(HWND hDlg, WPARAM wParam, LPARAM lParam); INT_PTR OnEditNotifyKillFocus(HWND hDlg, WPARAM wParam, LPARAM lParam); INT_PTR OnEditNotifySetFocus(HWND hDlg, WPARAM wParam, LPARAM lParam);
//
// CBN_xxxx handlers.
//
INT_PTR OnComboNotifySelChange(HWND hDlg, WPARAM wParam, LPARAM lParam);
HRESULT UpdateControls(HWND hDlg) const; HRESULT InitializeControls(HWND hDlg); HRESULT EnableControls(HWND hDlg); HRESULT RefreshCachedVolumeQuotaInfo(VOID); HRESULT ApplySettings(HWND hDlg); HRESULT QuotaStateFromControls(HWND hDlg, LPDWORD pdwState) const; HRESULT LogFlagsFromControls(HWND hDlg, LPDWORD pdwLogFlags) const; BOOL ActivateExistingDetailsView(VOID) const; bool SetByPolicy(LPCTSTR pszPolicyValue);
HRESULT UpdateStatusIndicators(HWND hDlg);
VOID SetStatusUpdateTimer(HWND hDlg) { if (0 == m_idStatusUpdateTimer) m_idStatusUpdateTimer = SetTimer(hDlg, IDT_STATUS_UPDATE, STATUS_UPDATE_TIMER_PERIOD, NULL); } VOID KillStatusUpdateTimer(HWND hDlg) { if (0 != m_idStatusUpdateTimer) { KillTimer(hDlg, m_idStatusUpdateTimer); m_idStatusUpdateTimer = 0; } }
//
// Prevent copy.
//
VolumePropPage(const VolumePropPage& rhs); VolumePropPage& operator = (const VolumePropPage& rhs);
public: VolumePropPage(VOID); ~VolumePropPage(VOID);
//
// Dialog Proc callback.
//
static INT_PTR APIENTRY DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); };
#ifdef POLICY_MMC_SNAPIN
//
// A specialization of VolumePropPage to address the specific needs of
// of the disk quota policy property sheet displayed from within MMC. The
// similarities between the two classes called for reusing as much of the
// VolumePropPage implementation as possible.
// The differences from VolumePropPage are:
//
// 1. "Quota Entries" and "Event Log" buttons are hidden.
// 2. Traffic light and status messages are hidden.
// 3. Page is not opened up "over" a specific volume.
// 4. When user selects "OK" or "Apply", quota information is written to
// the registry.
//
class CSnapInCompData; // fwd decl.
class SnapInVolPropPage : public VolumePropPage { public: SnapInVolPropPage(void) : m_pPolicy(NULL) { }
~SnapInVolPropPage(void);
private: LPDISKQUOTAPOLICY m_pPolicy;
virtual INT_PTR OnInitDialog(HWND hDlg, WPARAM wParam, LPARAM lParam); virtual HRESULT CreateDiskQuotaPolicyObject(IDiskQuotaPolicy **ppOut);
//
// PSN_xxxx handlers.
//
virtual INT_PTR OnSheetNotifyApply(HWND hDlg, WPARAM wParam, LPARAM lParam); virtual INT_PTR OnSheetNotifyKillActive(HWND hDlg, WPARAM wParam, LPARAM lParam); virtual INT_PTR OnSheetNotifyReset(HWND hDlg, WPARAM wParam, LPARAM lParam); virtual INT_PTR OnSheetNotifySetActive(HWND hDlg, WPARAM wParam, LPARAM lParam); };
#endif // POLICY_MMC_SNAPIN
#ifdef PER_DIRECTORY_QUOTAS
//
// Folder property page.
//
class FolderPropPage : public DiskQuotaPropSheetExt { //
// This class has not been implemented.
// At some future date, we may implement per-directory quota management.
// If such support is required, look at class VolumePropPage.
// You should be able to provide a similar implementation only with
// directory-specific features. All features common to volumes and
// directories are in class DiskQuotaPropSheetExt.
//
public: //
// Dialog Proc callback.
//
static INT_PTR APIENTRY DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { return FALSE; } };
#endif // PER_DIRECTORY_QUOTAS
#endif // __DSKQUOTA_PROPSHEET_EXT_H
|