aboutsummaryrefslogtreecommitdiff
path: root/Src/auth/Loginbox/loginpage.h
blob: e477965bf1f7233b8a17524ac688b0d612c52d2f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#ifndef NULLSOFT_AUTH_LOGINPAGE_HEADER
#define NULLSOFT_AUTH_LOGINPAGE_HEADER

#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#include <wtypes.h>

#define NLPM_FIRST			(WM_APP + 10)
#define NLPM_PAGEFIRST		(NLPM_FIRST + 40)

#define NLPM_GETLOGINDATA	(NLPM_FIRST + 0) // wParam - not used, lParam = (LPARAM)(LoginData**)__ppLoginData; Return:  TRUE on success.
#define LoginPage_GetData(/*HWND*/ __hwnd, /*LoginData** */ __ppLoginData)\
	((BOOL)(SNDMSG((__hwnd), NLPM_GETLOGINDATA, 0, (LPARAM)(__ppLoginData))))

#define NLPM_UPDATESTATECHANGE	(NLPM_FIRST + 1) // wParam - not used, lParam = (BOOL)__updateActive; Return - ignored
#define LoginPage_UpdateStateChange(/*HWND*/ __hwnd, /*BOOL*/ __updateActive)\
	((BOOL)(SNDMSG((__hwnd), NLPM_UPDATESTATECHANGE, 0, (LPARAM)(__updateActive))))

#define NLPM_SETUSERNAME		(NLPM_FIRST + 2) // wParam - not used, lParam = (LPARAM)(LPCWSTR)__pszUsername; Return TRUE on success
#define LoginPage_SetUsername(/*HWND*/ __hwnd, /*LPCWSTR*/ __pszUsername)\
	((BOOL)(SNDMSG((__hwnd), NLPM_SETUSERNAME, 0, (LPARAM)(__pszUsername))))

#define NLPM_SETPASSWORD		(NLPM_FIRST + 3) // wParam - not used, lParam = (LPARAM)(LPCWSTR)__pszPassword; Return TRUE on success
#define LoginPage_SetPassword(/*HWND*/ __hwnd, /*LPCWSTR*/ __pszPassword)\
	((BOOL)(SNDMSG((__hwnd), NLPM_SETPASSWORD, 0, (LPARAM)(__pszPassword))))

#define NLPM_GETFIRSTITEM		(NLPM_FIRST + 4) // wParam - not used, lParam - not used; Return HWND where you want focus to be on page create or NULL.
#define LoginPage_GetFirstItem(/*HWND*/ __hwnd)\
	((HWND)(SNDMSG((__hwnd), NLPM_GETFIRSTITEM, 0, 0L)))

#define NLPM_SETTITLE			(NLPM_FIRST + 5) // wParam - not used, lParam = (LPARAM)(LPCWSTR)__pszTitle; Return TRUE on success
#define LoginPage_SetTitle(/*HWND*/ __hwnd, /*LPCWSTR*/ __pszTitle)\
	((BOOL)(SNDMSG((__hwnd), NLPM_SETTITLE, 0, (LPARAM)(__pszTitle))))

class LoginPage;
class LoginData;

typedef HRESULT (CALLBACK *LOGINPAGECREATOR)(HWND /*hwnd*/, HWND /*hLoginbox*/, LoginPage** /*instance*/);

class __declspec(novtable) LoginPage
{

protected:
	LoginPage(HWND hwnd, HWND hLoginbox);
	virtual ~LoginPage();

public:
	static HWND CreatePage(HWND hLoginbox, LPCWSTR pszTemplate, HWND hParent, LPARAM param, LOGINPAGECREATOR fnCreator);

protected:
	virtual void UpdateMargins();
	virtual void UpdateColors();
	virtual void UpdateLayout(BOOL fRedraw);

	virtual BOOL GetPageRect(RECT *prc);
	BOOL ShowHelp();
	BOOL IsHelpAvailable();
	INT GetTitleSpacing();
	BOOL SetLabelText(INT controlId, LPCWSTR pszText);


protected:
	virtual BOOL OnInitDialog(HWND hFocus, LPARAM param);
	virtual void OnDestroy();
	virtual void OnWindowPosChanged(const WINDOWPOS *pwp);
	virtual void OnCommand(UINT commandId, UINT eventType, HWND hControl);
	virtual BOOL OnNotify(UINT controlId, const NMHDR *pnmh);
	virtual BOOL OnSetCursor(HWND hTarget, INT hitCode, INT uMsg);
	virtual HBRUSH OnGetStaticColor(HDC hdc, HWND hControl);
	virtual HBRUSH OnGetDialogColor(HDC hdc, HWND hControl);
	virtual BOOL OnHelp(HELPINFO *phi);
	virtual void OnThemeChanged();
	virtual void OnSysColorChanged();
	
	virtual BOOL OnGetLoginData(LoginData **ppLoginData);
	virtual void OnUpdateStateChange(BOOL updateActive);
	virtual BOOL OnSetUsername(LPCWSTR pszUsername);
	virtual BOOL OnSetPassword(LPCWSTR pszPassword);
	virtual HWND OnGetFirstItem();
	virtual BOOL OnSetTitle(LPCWSTR pszTitle);

	virtual INT_PTR DialogProc(UINT uMsg, WPARAM wParam, LPARAM lParam);

private:
	friend static INT_PTR CALLBACK LoginPage_DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

protected:
	HWND	hwnd;
	HWND	hLoginbox;
	RECT	margins;
	COLORREF rgbTitle;
	COLORREF rgbSecondaryText;
	COLORREF rgbText;
	COLORREF rgbBack;
	HBRUSH	hbrBack;
	
};

#endif //NULLSOFT_AUTH_LOGINPAGE_HEADER