xref: /haiku/src/apps/haikudepot/ui/UserLoginWindow.h (revision 04c9d578d85baa79584c1c40c61cc73ca58d527b)
1*04c9d578SStephan Aßmus /*
2*04c9d578SStephan Aßmus  * Copyright 2014, Stephan Aßmus <superstippi@gmx.de>.
3*04c9d578SStephan Aßmus  * All rights reserved. Distributed under the terms of the MIT License.
4*04c9d578SStephan Aßmus  */
5*04c9d578SStephan Aßmus #ifndef USER_LOGIN_WINDOW_H
6*04c9d578SStephan Aßmus #define USER_LOGIN_WINDOW_H
7*04c9d578SStephan Aßmus 
8*04c9d578SStephan Aßmus #include <Locker.h>
9*04c9d578SStephan Aßmus #include <Window.h>
10*04c9d578SStephan Aßmus 
11*04c9d578SStephan Aßmus #include "PackageInfo.h"
12*04c9d578SStephan Aßmus 
13*04c9d578SStephan Aßmus 
14*04c9d578SStephan Aßmus class BButton;
15*04c9d578SStephan Aßmus class BTabView;
16*04c9d578SStephan Aßmus class BTextControl;
17*04c9d578SStephan Aßmus class BitmapView;
18*04c9d578SStephan Aßmus class Model;
19*04c9d578SStephan Aßmus 
20*04c9d578SStephan Aßmus 
21*04c9d578SStephan Aßmus class UserLoginWindow : public BWindow {
22*04c9d578SStephan Aßmus public:
23*04c9d578SStephan Aßmus 								UserLoginWindow(BWindow* parent, BRect frame,
24*04c9d578SStephan Aßmus 									Model& model);
25*04c9d578SStephan Aßmus 	virtual						~UserLoginWindow();
26*04c9d578SStephan Aßmus 
27*04c9d578SStephan Aßmus 	virtual	void				MessageReceived(BMessage* message);
28*04c9d578SStephan Aßmus 
29*04c9d578SStephan Aßmus private:
30*04c9d578SStephan Aßmus 			enum Mode {
31*04c9d578SStephan Aßmus 				NONE = 0,
32*04c9d578SStephan Aßmus 				LOGIN,
33*04c9d578SStephan Aßmus 				CREATE_ACCOUNT
34*04c9d578SStephan Aßmus 			};
35*04c9d578SStephan Aßmus 
36*04c9d578SStephan Aßmus 			void				_SetMode(Mode mode);
37*04c9d578SStephan Aßmus 			void				_Login();
38*04c9d578SStephan Aßmus 			void				_CreateAccount();
39*04c9d578SStephan Aßmus 			void				_RequestCaptcha();
40*04c9d578SStephan Aßmus 
41*04c9d578SStephan Aßmus 			void				_SetWorkerThread(thread_id thread);
42*04c9d578SStephan Aßmus 
43*04c9d578SStephan Aßmus 	static	int32				_AuthenticateThreadEntry(void* data);
44*04c9d578SStephan Aßmus 			void				_AuthenticateThread();
45*04c9d578SStephan Aßmus 
46*04c9d578SStephan Aßmus 	static	int32				_RequestCaptchaThreadEntry(void* data);
47*04c9d578SStephan Aßmus 			void				_RequestCaptchaThread();
48*04c9d578SStephan Aßmus 
49*04c9d578SStephan Aßmus 	static	int32				_CreateAccountThreadEntry(void* data);
50*04c9d578SStephan Aßmus 			void				_CreateAccountThread();
51*04c9d578SStephan Aßmus 
52*04c9d578SStephan Aßmus 			void				_CollectValidationFailures(
53*04c9d578SStephan Aßmus 									const BMessage& result,
54*04c9d578SStephan Aßmus 									BString& error) const;
55*04c9d578SStephan Aßmus 
56*04c9d578SStephan Aßmus private:
57*04c9d578SStephan Aßmus 			BTabView*			fTabView;
58*04c9d578SStephan Aßmus 
59*04c9d578SStephan Aßmus 			BTextControl*		fUsernameField;
60*04c9d578SStephan Aßmus 			BTextControl*		fPasswordField;
61*04c9d578SStephan Aßmus 
62*04c9d578SStephan Aßmus 			BTextControl*		fNewUsernameField;
63*04c9d578SStephan Aßmus 			BTextControl*		fNewPasswordField;
64*04c9d578SStephan Aßmus 			BTextControl*		fRepeatPasswordField;
65*04c9d578SStephan Aßmus 			BTextControl*		fEmailField;
66*04c9d578SStephan Aßmus 			BTextControl*		fLanguageCodeField;
67*04c9d578SStephan Aßmus 			BitmapView*			fCaptchaView;
68*04c9d578SStephan Aßmus 			BTextControl*		fCaptchaResultField;
69*04c9d578SStephan Aßmus 
70*04c9d578SStephan Aßmus 			BButton*			fSendButton;
71*04c9d578SStephan Aßmus 			BButton*			fCancelButton;
72*04c9d578SStephan Aßmus 
73*04c9d578SStephan Aßmus 			BString				fCaptchaToken;
74*04c9d578SStephan Aßmus 			BitmapRef			fCaptchaImage;
75*04c9d578SStephan Aßmus 
76*04c9d578SStephan Aßmus 			Model&				fModel;
77*04c9d578SStephan Aßmus 
78*04c9d578SStephan Aßmus 			Mode				fMode;
79*04c9d578SStephan Aßmus 
80*04c9d578SStephan Aßmus 			BLocker				fLock;
81*04c9d578SStephan Aßmus 			thread_id			fWorkerThread;
82*04c9d578SStephan Aßmus };
83*04c9d578SStephan Aßmus 
84*04c9d578SStephan Aßmus 
85*04c9d578SStephan Aßmus #endif // USER_LOGIN_WINDOW_H
86