You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
209 lines
7.6 KiB
209 lines
7.6 KiB
/////////////////////////////////////////////////////////////////////////////
|
|
// Copyright (C) 1993-1996 Microsoft Corporation. All Rights Reserved.
|
|
//
|
|
// MODULE: spoolui.h
|
|
//
|
|
// PURPOSE: Defines the spooler UI classes, prototypes, constants, etc.
|
|
//
|
|
|
|
#ifndef __SPOOLUI_H__
|
|
#define __SPOOLUI_H__
|
|
|
|
#include "spoolapi.h"
|
|
#include "msident.h"
|
|
|
|
class CNewsTask;
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Spooler UI class
|
|
//
|
|
class CSpoolerDlg :
|
|
public ISpoolerUI,
|
|
public IIdentityChangeNotify
|
|
|
|
{
|
|
public:
|
|
/////////////////////////////////////////////////////////////////////////
|
|
// Constructor, destructor, initialization
|
|
CSpoolerDlg();
|
|
~CSpoolerDlg();
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////
|
|
// IUnknown Interface
|
|
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj);
|
|
STDMETHOD_(ULONG, AddRef)(THIS);
|
|
STDMETHOD_(ULONG, Release)(THIS);
|
|
|
|
/////////////////////////////////////////////////////////////////////////
|
|
// ISpoolerUI Interface
|
|
STDMETHOD(Init)(HWND hwndParent);
|
|
STDMETHOD(RegisterBindContext)(ISpoolerBindContext *pBindCtx);
|
|
STDMETHOD(InsertEvent)(EVENTID eid, LPCSTR pszDescription,
|
|
LPCWSTR pwszConnection);
|
|
STDMETHOD(InsertError)(EVENTID eid, LPCSTR pszError);
|
|
STDMETHOD(UpdateEventState)(EVENTID eid, INT nImage, LPCSTR pszDescription,
|
|
LPCSTR pszStatus);
|
|
STDMETHOD(SetProgressRange)(WORD wMax);
|
|
STDMETHOD(IncrementProgress)(WORD wDelta);
|
|
STDMETHOD(SetProgressPosition)(WORD wPos);
|
|
STDMETHOD(SetGeneralProgress)(LPCSTR pszProgress);
|
|
STDMETHOD(SetSpecificProgress)(LPCSTR pszProgress);
|
|
STDMETHOD(SetAnimation)(int nAnimationId, BOOL fPlay);
|
|
STDMETHOD(EnsureVisible)(EVENTID eid);
|
|
STDMETHOD(ShowWindow)(int nCmdShow);
|
|
STDMETHOD(GetWindow)(HWND *pHwnd);
|
|
STDMETHOD(StartDelivery)(void);
|
|
STDMETHOD(GoIdle)(BOOL fErrors, BOOL fShutdown, BOOL fNoSync);
|
|
STDMETHOD(ClearEvents)(void);
|
|
STDMETHOD(SetTaskCounts)(DWORD cSucceeded, DWORD cTotal);
|
|
STDMETHOD(IsDialogMessage)(LPMSG pMsg);
|
|
STDMETHOD(Close)(void);
|
|
STDMETHOD(ChangeHangupOption)(BOOL fEnable, DWORD dwOption);
|
|
STDMETHOD(AreThereErrors)(void);
|
|
STDMETHOD(Shutdown)(void);
|
|
|
|
/////////////////////////////////////////////////////////////////////////
|
|
// IIdentityChangeNotify Interface
|
|
virtual STDMETHODIMP QuerySwitchIdentities();
|
|
virtual STDMETHODIMP SwitchIdentities();
|
|
virtual STDMETHODIMP IdentityInformationChanged(DWORD dwType);
|
|
|
|
/////////////////////////////////////////////////////////////////////////
|
|
// Dialog message handling
|
|
protected:
|
|
static INT_PTR CALLBACK SpoolerDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
|
static LRESULT CALLBACK ListSubClassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
|
|
|
BOOL OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam);
|
|
void OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
|
|
LRESULT OnNotify(HWND hwnd, int idFrom, LPNMHDR pnmhdr);
|
|
void OnDrawItem(HWND hwnd, const DRAWITEMSTRUCT* lpDrawItem);
|
|
void OnMeasureItem(HWND hwnd, MEASUREITEMSTRUCT * lpMeasureItem);
|
|
void OnDeleteItem(HWND hwnd, const DELETEITEMSTRUCT * lpDeleteItem);
|
|
void OnClose(HWND hwnd);
|
|
void OnDestroy(HWND hwnd);
|
|
void OnContextMenu(HWND hwnd, HWND hwndContext, UINT xPos, UINT yPos);
|
|
void OnTabChange(LPNMHDR pnmhdr);
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////
|
|
// UI Utility functions
|
|
BOOL InitializeTabs(void);
|
|
BOOL InitializeLists(void);
|
|
BOOL InitializeAnimation(void);
|
|
BOOL InitializeToolbar(void);
|
|
void ExpandCollapse(BOOL fExpand, BOOL fSetFocus=TRUE);
|
|
void UpdateLists(BOOL fEvents, BOOL fErrors, BOOL fHistory);
|
|
void ToggleStatics(BOOL fIdle);
|
|
|
|
/////////////////////////////////////////////////////////////////////////
|
|
// Class member data
|
|
private:
|
|
ULONG m_cRef; // Object reference count
|
|
|
|
// Interfaces
|
|
ISpoolerBindContext *m_pBindCtx; // Interface to communicate with the engine
|
|
|
|
// Window handles
|
|
HWND m_hwnd; // Handle of the primary dialog window
|
|
HWND m_hwndOwner; // Handle of the window that parents the dialog
|
|
HWND m_hwndEvents; // Handle of the listview which displays the event list
|
|
HWND m_hwndErrors; // Handle of the listview which displays errors
|
|
|
|
CRITICAL_SECTION m_cs; // Thread safety
|
|
|
|
// Drawing info
|
|
HIMAGELIST m_himlImages; // Images shared by the list views
|
|
DWORD m_cxErrors; // Width of the error list box
|
|
|
|
// State
|
|
BOOL m_fTack; // TRUE if the tack is pressed
|
|
BOOL m_iTab; // Which tab currently has the foreground
|
|
|
|
BOOL m_fExpanded; // TRUE if the details part of the dialog is visible
|
|
RECT m_rcDlg; // Size of the fully expanded dialog
|
|
DWORD m_cyCollapsed; // Height of the collapsed dialog
|
|
BOOL m_fIdle; // TRUE if we're in an idle state
|
|
BOOL m_fErrors; // Are errors in the error box
|
|
BOOL m_fShutdown; // Are we in shutdown mode
|
|
BOOL m_fSaveSize; // Set to TRUE if we should persist our expanded / collapsed state
|
|
|
|
// Strings
|
|
TCHAR m_szCount[256];
|
|
|
|
HICON m_hIcon,
|
|
m_hIconSm;
|
|
|
|
DWORD m_dwIdentCookie;
|
|
};
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Structures
|
|
//
|
|
typedef struct tagLBDATA
|
|
{
|
|
LPTSTR pszText;
|
|
RECT rcText;
|
|
EVENTID eid;
|
|
} LBDATA;
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Images
|
|
//
|
|
enum {
|
|
IMAGE_BLANK = 0,
|
|
IMAGE_TACK_IN,
|
|
IMAGE_TACK_OUT,
|
|
IMAGE_ERROR,
|
|
IMAGE_CHECK,
|
|
IMAGE_BULLET,
|
|
IMAGE_EXECUTE,
|
|
IMAGE_WARNING,
|
|
IMAGE_MAX
|
|
};
|
|
|
|
#define BULLET_WIDTH 20
|
|
#define BULLET_INDENT 2
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Tabs on the details dialog
|
|
//
|
|
enum {
|
|
TAB_TASKS,
|
|
TAB_ERRORS,
|
|
TAB_MAX
|
|
};
|
|
|
|
const int c_cxImage = 16;
|
|
const int c_cyImage = 16;
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Resource ID's
|
|
//
|
|
#define IDC_SP_MINIMIZE 1001
|
|
#define IDC_SP_STOP 1002
|
|
#define IDC_SP_DETAILS 1003
|
|
#define IDC_SP_SEPARATOR 1004
|
|
#define IDC_SP_ANIMATE 1006
|
|
#define IDC_SP_PROGRESS_BAR 1007
|
|
#define IDC_SP_GENERAL_PROG 1009
|
|
#define IDC_SP_SPECIFIC_PROG 1010
|
|
#define IDC_SP_TABS 1011
|
|
#define IDC_SP_SKIP_TASK 1012
|
|
#define IDC_SP_TACK 1015
|
|
#define IDC_SP_OVERALL_STATUS 1016
|
|
#define IDC_SP_EVENTS 1017
|
|
#define IDC_SP_ERRORS 1018
|
|
#define IDC_SP_TOOLBAR 1019
|
|
#define IDC_SP_HANGUP 1020
|
|
#define IDC_SP_IDLETEXT 1021
|
|
#define IDC_SP_IDLEICON 1022
|
|
#define IDC_SP_PROGSTAT 1023
|
|
|
|
#endif // __SPOOLUI_H__
|
|
|