xref: /freebsd/crypto/krb5/src/windows/leash/LeashView.h (revision 7f2fe78b9dd5f51c821d771b63d2e096f6fd49e9)
1*7f2fe78bSCy Schubert //	**************************************************************************************
2*7f2fe78bSCy Schubert //	File:			LeashView.h
3*7f2fe78bSCy Schubert //	By:				Arthur David Leather
4*7f2fe78bSCy Schubert //	Created:		12/02/98
5*7f2fe78bSCy Schubert //	Copyright		@1998 Massachusetts Institute of Technology - All rights reserved.
6*7f2fe78bSCy Schubert //	Description:	H file for LeashView.cpp. Contains variables and functions
7*7f2fe78bSCy Schubert //					for the Leash FormView
8*7f2fe78bSCy Schubert //
9*7f2fe78bSCy Schubert //	History:
10*7f2fe78bSCy Schubert //
11*7f2fe78bSCy Schubert //	MM/DD/YY	Inits	Description of Change
12*7f2fe78bSCy Schubert //	12/02/98	ADL		Original
13*7f2fe78bSCy Schubert //	**************************************************************************************
14*7f2fe78bSCy Schubert 
15*7f2fe78bSCy Schubert 
16*7f2fe78bSCy Schubert #if !defined(AFX_LeashVIEW_H__6F45AD99_561B_11D0_8FCF_00C04FC2A0C2__INCLUDED_)
17*7f2fe78bSCy Schubert #define AFX_LeashVIEW_H__6F45AD99_561B_11D0_8FCF_00C04FC2A0C2__INCLUDED_
18*7f2fe78bSCy Schubert 
19*7f2fe78bSCy Schubert #if _MSC_VER >= 1000
20*7f2fe78bSCy Schubert #pragma once
21*7f2fe78bSCy Schubert #endif // _MSC_VER >= 1000
22*7f2fe78bSCy Schubert 
23*7f2fe78bSCy Schubert #define GOOD_TICKETS	1  // Don't change this value
24*7f2fe78bSCy Schubert #define EXPIRED_TICKETS 2  // Don't change this value
25*7f2fe78bSCy Schubert #define TICKETS_LOW		3
26*7f2fe78bSCy Schubert #define ONE_SECOND		1000
27*7f2fe78bSCy Schubert #define SMALL_ICONS     16
28*7f2fe78bSCy Schubert #define LARGE_ICONS     32
29*7f2fe78bSCy Schubert 
30*7f2fe78bSCy Schubert #define UPDATE_DISPLAY_TIME 60  //seconds
31*7f2fe78bSCy Schubert 
32*7f2fe78bSCy Schubert #define ACTIVE_CLOCK          0
33*7f2fe78bSCy Schubert #define LOW_CLOCK             1
34*7f2fe78bSCy Schubert #define EXPIRED_CLOCK         2
35*7f2fe78bSCy Schubert #define ACTIVE_TICKET         3
36*7f2fe78bSCy Schubert #define LOW_TICKET            4
37*7f2fe78bSCy Schubert #define EXPIRED_TICKET        5
38*7f2fe78bSCy Schubert #define TICKET_NOT_INSTALLED  6
39*7f2fe78bSCy Schubert #define ACTIVE_PARENT_NODE    7
40*7f2fe78bSCy Schubert #define LOW_PARENT_NODE       8
41*7f2fe78bSCy Schubert #define EXPIRED_PARENT_NODE   9
42*7f2fe78bSCy Schubert #define NONE_PARENT_NODE      10
43*7f2fe78bSCy Schubert #define LOW_TRAY_ICON         11
44*7f2fe78bSCy Schubert #define EXPIRED_TRAY_ICON     12
45*7f2fe78bSCy Schubert #define ACTIVE_TRAY_ICON      13
46*7f2fe78bSCy Schubert #define NONE_TRAY_ICON        14
47*7f2fe78bSCy Schubert #define TKT_ADDRESS           15
48*7f2fe78bSCy Schubert #define TKT_SESSION           16
49*7f2fe78bSCy Schubert #define TKT_ENCRYPTION        17
50*7f2fe78bSCy Schubert #define IMAGE_COUNT           18
51*7f2fe78bSCy Schubert 
52*7f2fe78bSCy Schubert #define NODE_IS_EXPANDED 2
53*7f2fe78bSCy Schubert 
54*7f2fe78bSCy Schubert #define CX_BORDER   1
55*7f2fe78bSCy Schubert #define CY_BORDER   1
56*7f2fe78bSCy Schubert 
57*7f2fe78bSCy Schubert #ifdef NO_TICKETS
58*7f2fe78bSCy Schubert #undef NO_TICKETS // XXX - this is evil but necessary thanks to silliness...
59*7f2fe78bSCy Schubert #endif
60*7f2fe78bSCy Schubert 
61*7f2fe78bSCy Schubert #define WM_TRAYICON (WM_USER+100)
62*7f2fe78bSCy Schubert #define WM_WARNINGPOPUP (WM_USER+101)
63*7f2fe78bSCy Schubert 
64*7f2fe78bSCy Schubert enum ticketTimeLeft{NO_TICKETS, ZERO_MINUTES_LEFT, FIVE_MINUTES_LEFT, TEN_MINUTES_LEFT,
65*7f2fe78bSCy Schubert 					FIFTEEN_MINUTES_LEFT, TWENTY_MINUTES_LEFT, PLENTY_OF_TIME,
66*7f2fe78bSCy Schubert                     NOT_INSTALLED};
67*7f2fe78bSCy Schubert // Don't change 'NO_TICKET's' value
68*7f2fe78bSCy Schubert 
69*7f2fe78bSCy Schubert class CLeashDebugWindow;
70*7f2fe78bSCy Schubert class ViewColumnInfo
71*7f2fe78bSCy Schubert {
72*7f2fe78bSCy Schubert public:
73*7f2fe78bSCy Schubert     const char * m_name;
74*7f2fe78bSCy Schubert     int m_enabled;
75*7f2fe78bSCy Schubert     int m_id;
76*7f2fe78bSCy Schubert     int m_columnWidth;
77*7f2fe78bSCy Schubert };
78*7f2fe78bSCy Schubert 
79*7f2fe78bSCy Schubert enum eViewColumn {
80*7f2fe78bSCy Schubert     PRINCIPAL,
81*7f2fe78bSCy Schubert     TIME_ISSUED,
82*7f2fe78bSCy Schubert     RENEWABLE_UNTIL,
83*7f2fe78bSCy Schubert     VALID_UNTIL,
84*7f2fe78bSCy Schubert     ENCRYPTION_TYPE,
85*7f2fe78bSCy Schubert     TICKET_FLAGS,
86*7f2fe78bSCy Schubert     CACHE_NAME,
87*7f2fe78bSCy Schubert     NUM_VIEW_COLUMNS
88*7f2fe78bSCy Schubert };
89*7f2fe78bSCy Schubert 
90*7f2fe78bSCy Schubert class CCacheDisplayData
91*7f2fe78bSCy Schubert {
92*7f2fe78bSCy Schubert public:
CCacheDisplayData(const char * ccache_name)93*7f2fe78bSCy Schubert     CCacheDisplayData(const char *ccache_name) :
94*7f2fe78bSCy Schubert       m_next(NULL),
95*7f2fe78bSCy Schubert       m_ccacheName(strdup(ccache_name)),
96*7f2fe78bSCy Schubert       m_index(-1),
97*7f2fe78bSCy Schubert       m_focus(-1),
98*7f2fe78bSCy Schubert       m_expanded(0),
99*7f2fe78bSCy Schubert       m_selected(0),
100*7f2fe78bSCy Schubert       m_isRenewable(0),
101*7f2fe78bSCy Schubert       m_isDefault(0)
102*7f2fe78bSCy Schubert     {
103*7f2fe78bSCy Schubert     }
104*7f2fe78bSCy Schubert 
~CCacheDisplayData()105*7f2fe78bSCy Schubert     ~CCacheDisplayData()
106*7f2fe78bSCy Schubert     {
107*7f2fe78bSCy Schubert         if (m_ccacheName)
108*7f2fe78bSCy Schubert             free(m_ccacheName);
109*7f2fe78bSCy Schubert     }
110*7f2fe78bSCy Schubert 
111*7f2fe78bSCy Schubert     CCacheDisplayData *m_next;
112*7f2fe78bSCy Schubert     char *m_ccacheName;
113*7f2fe78bSCy Schubert     int m_index;               // item index in list view
114*7f2fe78bSCy Schubert     int m_focus;               // sub-item with focus
115*7f2fe78bSCy Schubert     unsigned int m_expanded;   // true when each individual ticket is displayed
116*7f2fe78bSCy Schubert     unsigned int m_selected;   // true when this ccache is selected
117*7f2fe78bSCy Schubert     unsigned int m_isRenewable; // true when tgt is renewable
118*7f2fe78bSCy Schubert     unsigned int m_isDefault;  // true when this is the default ccache
119*7f2fe78bSCy Schubert };
120*7f2fe78bSCy Schubert 
121*7f2fe78bSCy Schubert struct ListItemInfo
122*7f2fe78bSCy Schubert {
ListItemInfoListItemInfo123*7f2fe78bSCy Schubert     ListItemInfo() : m_font(NULL), m_durationFont(NULL) {}
124*7f2fe78bSCy Schubert     HFONT m_durationFont; // For renewable/valid until; italic when expired
125*7f2fe78bSCy Schubert     HFONT m_font;         // For all other items
126*7f2fe78bSCy Schubert };
127*7f2fe78bSCy Schubert 
128*7f2fe78bSCy Schubert class CLeashView : public CListView
129*7f2fe78bSCy Schubert {
130*7f2fe78bSCy Schubert private:
131*7f2fe78bSCy Schubert ////@#+Remove
132*7f2fe78bSCy Schubert     CLeashDebugWindow*	m_pDebugWindow;
133*7f2fe78bSCy Schubert     CCacheDisplayData*  m_ccacheDisplay;
134*7f2fe78bSCy Schubert 	CImageList			m_imageList;
135*7f2fe78bSCy Schubert 	CWinApp*			m_pApp;
136*7f2fe78bSCy Schubert 	HTREEITEM			m_hPrincipal;
137*7f2fe78bSCy Schubert 	HTREEITEM			m_hKerb5;
138*7f2fe78bSCy Schubert     HTREEITEM           m_hk5tkt;
139*7f2fe78bSCy Schubert 	TV_INSERTSTRUCT		m_tvinsert;
140*7f2fe78bSCy Schubert 	HMENU				m_hMenu;
141*7f2fe78bSCy Schubert     BOOL				m_startup;
142*7f2fe78bSCy Schubert 	BOOL				m_isMinimum;
143*7f2fe78bSCy Schubert 	BOOL				m_debugStartUp;
144*7f2fe78bSCy Schubert 	BOOL				m_alreadyPlayed;
145*7f2fe78bSCy Schubert     INT					m_upperCaseRealm;
146*7f2fe78bSCy Schubert 	INT					m_destroyTicketsOnExit;
147*7f2fe78bSCy Schubert 	INT					m_debugWindow;
148*7f2fe78bSCy Schubert 	INT					m_largeIcons;
149*7f2fe78bSCy Schubert 	INT					m_lowTicketAlarm;
150*7f2fe78bSCy Schubert 	INT					m_hPrincipalState;
151*7f2fe78bSCy Schubert 	INT					m_hKerb5State;
152*7f2fe78bSCy Schubert     CString*            m_pWarningMessage;
153*7f2fe78bSCy Schubert     BOOL                m_bIconAdded;
154*7f2fe78bSCy Schubert     BOOL                m_bIconDeleted;
155*7f2fe78bSCy Schubert     HFONT               m_BaseFont;
156*7f2fe78bSCy Schubert     HFONT               m_BoldFont;
157*7f2fe78bSCy Schubert     HFONT               m_ItalicFont;
158*7f2fe78bSCy Schubert     HFONT               m_BoldItalicFont;
159*7f2fe78bSCy Schubert     ListItemInfo*       m_aListItemInfo;
160*7f2fe78bSCy Schubert 
161*7f2fe78bSCy Schubert     static ViewColumnInfo sm_viewColumns[NUM_VIEW_COLUMNS];
162*7f2fe78bSCy Schubert 
163*7f2fe78bSCy Schubert     static INT		   	m_autoRenewTickets;
164*7f2fe78bSCy Schubert     static INT          m_ticketStatusKrb5;
165*7f2fe78bSCy Schubert     static INT          m_autoRenewalAttempted;
166*7f2fe78bSCy Schubert 	static INT			m_warningOfTicketTimeLeftKrb5;
167*7f2fe78bSCy Schubert     static INT			m_warningOfTicketTimeLeftLockKrb5;
168*7f2fe78bSCy Schubert     static INT			m_updateDisplayCount;
169*7f2fe78bSCy Schubert     static INT	        m_alreadyPlayedDisplayCount;
170*7f2fe78bSCy Schubert     static time_t		m_ticketTimeLeft;
171*7f2fe78bSCy Schubert     static BOOL			m_lowTicketAlarmSound;
172*7f2fe78bSCy Schubert     static LONG         m_timerMsgNotInProgress;
173*7f2fe78bSCy Schubert 
174*7f2fe78bSCy Schubert     void ToggleViewColumn(eViewColumn viewOption);
175*7f2fe78bSCy Schubert 	VOID ResetTreeNodes();
176*7f2fe78bSCy Schubert     VOID ApplicationInfoMissingMsg();
177*7f2fe78bSCy Schubert     VOID GetScrollBarState(CSize sizeClient, CSize& needSb,
178*7f2fe78bSCy Schubert 	                       CSize& sizeRange, CPoint& ptMove,
179*7f2fe78bSCy Schubert                            BOOL bInsideClient);
180*7f2fe78bSCy Schubert     VOID UpdateBars();
181*7f2fe78bSCy Schubert     VOID GetScrollBarSizes(CSize& sizeSb);
182*7f2fe78bSCy Schubert     BOOL GetTrueClientSize(CSize& size, CSize& sizeSb);
183*7f2fe78bSCy Schubert     HFONT GetSubItemFont(int iItem, int iSubItem);
184*7f2fe78bSCy Schubert 
185*7f2fe78bSCy Schubert     //void   GetRowWidthHeight(CDC* pDC, LPCSTR theString, int& nRowWidth,
186*7f2fe78bSCy Schubert     //                         int& nRowHeight, int& nCharWidth);
187*7f2fe78bSCy Schubert     static VOID	AlarmBeep();
188*7f2fe78bSCy Schubert     static VOID	CALLBACK EXPORT TimerProc(HWND hWnd, UINT nMsg, UINT_PTR nIDEvent,
189*7f2fe78bSCy Schubert 					  DWORD dwTime);
190*7f2fe78bSCy Schubert     static VOID	UpdateTicketTime(TICKETINFO& ticketinfo);
191*7f2fe78bSCy Schubert     static INT	GetLowTicketStatus(int);
192*7f2fe78bSCy Schubert     static time_t	LeashTime();
193*7f2fe78bSCy Schubert     static BOOL IsExpired(TicketList *ticket);
194*7f2fe78bSCy Schubert     static BOOL IsExpired(TICKETINFO *info);
195*7f2fe78bSCy Schubert     static VOID AddDisplayItem(CListCtrl &list,
196*7f2fe78bSCy Schubert                                CCacheDisplayData *elem,
197*7f2fe78bSCy Schubert                                int iItem,
198*7f2fe78bSCy Schubert                                char *principal,
199*7f2fe78bSCy Schubert                                time_t issued,
200*7f2fe78bSCy Schubert                                time_t valid_until,
201*7f2fe78bSCy Schubert                                time_t renew_until,
202*7f2fe78bSCy Schubert                                char *encTypes,
203*7f2fe78bSCy Schubert                                unsigned long flags,
204*7f2fe78bSCy Schubert                                char *cache_name);
205*7f2fe78bSCy Schubert 
206*7f2fe78bSCy Schubert     void   SetTrayIcon(int nim, int state=0);
207*7f2fe78bSCy Schubert     void   SetTrayText(int nim, CString tip);
208*7f2fe78bSCy Schubert 
209*7f2fe78bSCy Schubert     BOOL   UpdateDisplay();
210*7f2fe78bSCy Schubert     static UINT InitTicket(void *);
211*7f2fe78bSCy Schubert     static UINT RenewTicket(void *);
212*7f2fe78bSCy Schubert     static UINT ImportTicket(void *);
213*7f2fe78bSCy Schubert     // Queue a warning popup message.
214*7f2fe78bSCy Schubert     // This is a workaround to the MFC deficiency that you cannot safely create
215*7f2fe78bSCy Schubert     // a modal dialog while processing messages within AfxPreTranslateMessage()
216*7f2fe78bSCy Schubert     // returns TRUE if message is queued successfully.
217*7f2fe78bSCy Schubert     BOOL PostWarningMessage(const CString& message);
218*7f2fe78bSCy Schubert     afx_msg LRESULT OnWarningPopup(WPARAM wParam, LPARAM lParam);
219*7f2fe78bSCy Schubert 
220*7f2fe78bSCy Schubert     BOOL    IsExpanded(TICKETINFO *);
221*7f2fe78bSCy Schubert 
222*7f2fe78bSCy Schubert protected: // create from serialization only
223*7f2fe78bSCy Schubert 	DECLARE_DYNCREATE(CLeashView)
224*7f2fe78bSCy Schubert 
225*7f2fe78bSCy Schubert // Attributes
226*7f2fe78bSCy Schubert public:
227*7f2fe78bSCy Schubert     CLeashView();
228*7f2fe78bSCy Schubert 	//LeashDoc* GetDocument();
229*7f2fe78bSCy Schubert 
230*7f2fe78bSCy Schubert 	//{{AFX_DATA(CLeashView)
231*7f2fe78bSCy Schubert 	enum { IDD = IDD_DIALOG1 };
232*7f2fe78bSCy Schubert 		// NOTE: the ClassWizard will add data members here
233*7f2fe78bSCy Schubert 	//}}AFX_DATA
234*7f2fe78bSCy Schubert 
235*7f2fe78bSCy Schubert // Operations
236*7f2fe78bSCy Schubert public:
237*7f2fe78bSCy Schubert 
238*7f2fe78bSCy Schubert // Overrides
239*7f2fe78bSCy Schubert 	// ClassWizard generated virtual function overrides
240*7f2fe78bSCy Schubert 	//{{AFX_VIRTUAL(CLeashView)
241*7f2fe78bSCy Schubert 	public:
242*7f2fe78bSCy Schubert 	virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
243*7f2fe78bSCy Schubert 	virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
244*7f2fe78bSCy Schubert 	virtual VOID OnInitialUpdate();
245*7f2fe78bSCy Schubert 	virtual BOOL PreTranslateMessage(MSG* pMsg);
246*7f2fe78bSCy Schubert 	protected:
247*7f2fe78bSCy Schubert 	virtual VOID OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView);
248*7f2fe78bSCy Schubert 	//}}AFX_VIRTUAL
249*7f2fe78bSCy Schubert 
250*7f2fe78bSCy Schubert // Implementation
251*7f2fe78bSCy Schubert public:
252*7f2fe78bSCy Schubert 	virtual ~CLeashView();
253*7f2fe78bSCy Schubert 
254*7f2fe78bSCy Schubert #ifdef _DEBUG
255*7f2fe78bSCy Schubert 	virtual VOID AssertValid() const;
256*7f2fe78bSCy Schubert 	virtual VOID Dump(CDumpContext& dc) const;
257*7f2fe78bSCy Schubert #endif
258*7f2fe78bSCy Schubert 
259*7f2fe78bSCy Schubert // Generated message map functions
260*7f2fe78bSCy Schubert protected:
261*7f2fe78bSCy Schubert 	//{{AFX_MSG(CLeashView)
262*7f2fe78bSCy Schubert     afx_msg VOID OnItemexpandedTreeview(NMHDR* pNMHDR, LRESULT* pResult);
263*7f2fe78bSCy Schubert 	afx_msg INT OnCreate(LPCREATESTRUCT lpCreateStruct);
264*7f2fe78bSCy Schubert 	afx_msg VOID OnShowWindow(BOOL bShow, UINT nStatus);
265*7f2fe78bSCy Schubert     afx_msg VOID OnClose(void);
266*7f2fe78bSCy Schubert 	afx_msg VOID OnInitTicket();
267*7f2fe78bSCy Schubert 	afx_msg VOID OnRenewTicket();
268*7f2fe78bSCy Schubert 	afx_msg VOID OnDestroyTicket();
269*7f2fe78bSCy Schubert 	afx_msg VOID OnMakeDefault();
270*7f2fe78bSCy Schubert 	afx_msg VOID OnChangePassword();
271*7f2fe78bSCy Schubert 	afx_msg VOID OnUpdateDisplay();
272*7f2fe78bSCy Schubert 	afx_msg VOID OnSynTime();
273*7f2fe78bSCy Schubert 	afx_msg VOID OnDebugMode();
274*7f2fe78bSCy Schubert 	afx_msg VOID OnLargeIcons();
275*7f2fe78bSCy Schubert 	afx_msg VOID OnTimeIssued();
276*7f2fe78bSCy Schubert 	afx_msg VOID OnValidUntil();
277*7f2fe78bSCy Schubert 	afx_msg VOID OnRenewableUntil();
278*7f2fe78bSCy Schubert 	afx_msg VOID OnShowTicketFlags();
279*7f2fe78bSCy Schubert 	afx_msg VOID OnEncryptionType();
280*7f2fe78bSCy Schubert 	afx_msg VOID OnCcacheName();
281*7f2fe78bSCy Schubert 	afx_msg VOID OnUppercaseRealm();
282*7f2fe78bSCy Schubert 	afx_msg VOID OnKillTixOnExit();
283*7f2fe78bSCy Schubert 	afx_msg VOID OnDestroy();
284*7f2fe78bSCy Schubert 	afx_msg VOID OnUpdateDestroyTicket(CCmdUI* pCmdUI);
285*7f2fe78bSCy Schubert 	afx_msg VOID OnUpdateInitTicket(CCmdUI* pCmdUI);
286*7f2fe78bSCy Schubert 	afx_msg VOID OnUpdateRenewTicket(CCmdUI* pCmdUI);
287*7f2fe78bSCy Schubert 	afx_msg VOID OnUpdateTimeIssued(CCmdUI* pCmdUI);
288*7f2fe78bSCy Schubert 	afx_msg VOID OnUpdateValidUntil(CCmdUI* pCmdUI);
289*7f2fe78bSCy Schubert 	afx_msg VOID OnUpdateRenewableUntil(CCmdUI* pCmdUI);
290*7f2fe78bSCy Schubert 	afx_msg VOID OnUpdateShowTicketFlags(CCmdUI* pCmdUI);
291*7f2fe78bSCy Schubert 	afx_msg VOID OnUpdateEncryptionType(CCmdUI* pCmdUI);
292*7f2fe78bSCy Schubert 	afx_msg VOID OnUpdateCcacheName(CCmdUI* pCmdUI);
293*7f2fe78bSCy Schubert 	afx_msg VOID OnUpdateUppercaseRealm(CCmdUI* pCmdUI);
294*7f2fe78bSCy Schubert 	afx_msg VOID OnUpdateKillTixOnExit(CCmdUI* pCmdUI);
295*7f2fe78bSCy Schubert 	afx_msg VOID OnUpdateLowTicketAlarm(CCmdUI* pCmdUI);
296*7f2fe78bSCy Schubert 	afx_msg VOID OnUpdateAutoRenew(CCmdUI* pCmdUI);
297*7f2fe78bSCy Schubert 	afx_msg VOID OnUpdateMakeDefault(CCmdUI* pCmdUI);
298*7f2fe78bSCy Schubert 	afx_msg VOID OnAppAbout();
299*7f2fe78bSCy Schubert 	afx_msg VOID OnUpdateDebugMode(CCmdUI* pCmdUI);
300*7f2fe78bSCy Schubert 	afx_msg VOID OnUpdateCfgFiles(CCmdUI* pCmdUI);
301*7f2fe78bSCy Schubert 	afx_msg VOID OnKrb5Properties();
302*7f2fe78bSCy Schubert 	afx_msg void OnLeashProperties();
303*7f2fe78bSCy Schubert 	afx_msg void OnLeashRestore();
304*7f2fe78bSCy Schubert 	afx_msg void OnLeashMinimize();
305*7f2fe78bSCy Schubert 	afx_msg void OnLowTicketAlarm();
306*7f2fe78bSCy Schubert 	afx_msg void OnUpdateKrb5Properties(CCmdUI* pCmdUI);
307*7f2fe78bSCy Schubert     afx_msg void OnKrbProperties();
308*7f2fe78bSCy Schubert 	afx_msg void OnUpdateProperties(CCmdUI* pCmdUI);
309*7f2fe78bSCy Schubert 	afx_msg void OnHelpKerberos();
310*7f2fe78bSCy Schubert 	afx_msg void OnHelpLeash32();
311*7f2fe78bSCy Schubert 	afx_msg void OnHelpWhyuseleash32();
312*7f2fe78bSCy Schubert     afx_msg void OnSysColorChange();
313*7f2fe78bSCy Schubert     afx_msg void OnAutoRenew();
314*7f2fe78bSCy Schubert 	afx_msg LRESULT OnGoodbye(WPARAM wParam, LPARAM lParam);
315*7f2fe78bSCy Schubert 	afx_msg LRESULT OnTrayIcon(WPARAM wParam, LPARAM lParam);
316*7f2fe78bSCy Schubert     afx_msg LRESULT OnObtainTGTWithParam(WPARAM wParam, LPARAM lParam);
317*7f2fe78bSCy Schubert     afx_msg void OnItemChanged(NMHDR* pNmHdr, LRESULT* pResult);
318*7f2fe78bSCy Schubert     //}}AFX_MSG
319*7f2fe78bSCy Schubert 	DECLARE_MESSAGE_MAP()
320*7f2fe78bSCy Schubert public:
321*7f2fe78bSCy Schubert     afx_msg void OnLvnItemchanging(NMHDR *pNMHDR, LRESULT *pResult);
322*7f2fe78bSCy Schubert     afx_msg void OnLvnItemActivate(NMHDR *pNMHDR, LRESULT *pResult);
323*7f2fe78bSCy Schubert     afx_msg void OnLvnKeydown(NMHDR *pNMHDR, LRESULT *pResult);
324*7f2fe78bSCy Schubert     afx_msg void OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult);
325*7f2fe78bSCy Schubert };
326*7f2fe78bSCy Schubert 
327*7f2fe78bSCy Schubert /*
328*7f2fe78bSCy Schubert #ifndef _DEBUG  // debug version in CLeashView.cpp
329*7f2fe78bSCy Schubert inline LeashDoc* CLeashView::GetDocument()
330*7f2fe78bSCy Schubert    { return (LeashDoc*)m_pDocument; }
331*7f2fe78bSCy Schubert #endif
332*7f2fe78bSCy Schubert */
333*7f2fe78bSCy Schubert 
334*7f2fe78bSCy Schubert /////////////////////////////////////////////////////////////////////////////
335*7f2fe78bSCy Schubert 
336*7f2fe78bSCy Schubert //{{AFX_INSERT_LOCATION}}
337*7f2fe78bSCy Schubert // Microsoft Developer Studio will insert additional declarations immediately before the previous line.
338*7f2fe78bSCy Schubert 
339*7f2fe78bSCy Schubert #endif // !defined(AFX_LeashVIEW_H__6F45AD99_561B_11D0_8FCF_00C04FC2A0C2__INCLUDED_)
340