xref: /haiku/src/apps/haikudepot/ui/UserLoginWindow.h (revision 1bbda92dc72e7b14358c38db78373923ecb806fa)
104c9d578SStephan Aßmus /*
204c9d578SStephan Aßmus  * Copyright 2014, Stephan Aßmus <superstippi@gmx.de>.
304c9d578SStephan Aßmus  * All rights reserved. Distributed under the terms of the MIT License.
404c9d578SStephan Aßmus  */
504c9d578SStephan Aßmus #ifndef USER_LOGIN_WINDOW_H
604c9d578SStephan Aßmus #define USER_LOGIN_WINDOW_H
704c9d578SStephan Aßmus 
804c9d578SStephan Aßmus #include <Locker.h>
9*1bbda92dSStephan Aßmus #include <Messenger.h>
1004c9d578SStephan Aßmus #include <Window.h>
1104c9d578SStephan Aßmus 
1204c9d578SStephan Aßmus #include "PackageInfo.h"
1304c9d578SStephan Aßmus 
1404c9d578SStephan Aßmus 
1504c9d578SStephan Aßmus class BButton;
163e3d0effSStephan Aßmus class BMenuField;
1704c9d578SStephan Aßmus class BTabView;
1804c9d578SStephan Aßmus class BTextControl;
1904c9d578SStephan Aßmus class BitmapView;
2004c9d578SStephan Aßmus class Model;
2104c9d578SStephan Aßmus 
2204c9d578SStephan Aßmus 
2304c9d578SStephan Aßmus class UserLoginWindow : public BWindow {
2404c9d578SStephan Aßmus public:
2504c9d578SStephan Aßmus 								UserLoginWindow(BWindow* parent, BRect frame,
2604c9d578SStephan Aßmus 									Model& model);
2704c9d578SStephan Aßmus 	virtual						~UserLoginWindow();
2804c9d578SStephan Aßmus 
2904c9d578SStephan Aßmus 	virtual	void				MessageReceived(BMessage* message);
3004c9d578SStephan Aßmus 
31*1bbda92dSStephan Aßmus 			void				SetOnSuccessMessage(
32*1bbda92dSStephan Aßmus 									const BMessenger& messenger,
33*1bbda92dSStephan Aßmus 									const BMessage& message);
34*1bbda92dSStephan Aßmus 
3504c9d578SStephan Aßmus private:
3604c9d578SStephan Aßmus 			enum Mode {
3704c9d578SStephan Aßmus 				NONE = 0,
3804c9d578SStephan Aßmus 				LOGIN,
3904c9d578SStephan Aßmus 				CREATE_ACCOUNT
4004c9d578SStephan Aßmus 			};
4104c9d578SStephan Aßmus 
4204c9d578SStephan Aßmus 			void				_SetMode(Mode mode);
4304c9d578SStephan Aßmus 			void				_Login();
4404c9d578SStephan Aßmus 			void				_CreateAccount();
4504c9d578SStephan Aßmus 			void				_RequestCaptcha();
46*1bbda92dSStephan Aßmus 			void				_LoginSuccessful(const BString& message);
4704c9d578SStephan Aßmus 
4804c9d578SStephan Aßmus 			void				_SetWorkerThread(thread_id thread);
4904c9d578SStephan Aßmus 
5004c9d578SStephan Aßmus 	static	int32				_AuthenticateThreadEntry(void* data);
5104c9d578SStephan Aßmus 			void				_AuthenticateThread();
5204c9d578SStephan Aßmus 
5304c9d578SStephan Aßmus 	static	int32				_RequestCaptchaThreadEntry(void* data);
5404c9d578SStephan Aßmus 			void				_RequestCaptchaThread();
5504c9d578SStephan Aßmus 
5604c9d578SStephan Aßmus 	static	int32				_CreateAccountThreadEntry(void* data);
5704c9d578SStephan Aßmus 			void				_CreateAccountThread();
5804c9d578SStephan Aßmus 
5904c9d578SStephan Aßmus 			void				_CollectValidationFailures(
6004c9d578SStephan Aßmus 									const BMessage& result,
6104c9d578SStephan Aßmus 									BString& error) const;
6204c9d578SStephan Aßmus 
6304c9d578SStephan Aßmus private:
64*1bbda92dSStephan Aßmus 			BMessenger			fOnSuccessTarget;
65*1bbda92dSStephan Aßmus 			BMessage			fOnSuccessMessage;
66*1bbda92dSStephan Aßmus 
6704c9d578SStephan Aßmus 			BTabView*			fTabView;
6804c9d578SStephan Aßmus 
6904c9d578SStephan Aßmus 			BTextControl*		fUsernameField;
7004c9d578SStephan Aßmus 			BTextControl*		fPasswordField;
7104c9d578SStephan Aßmus 
7204c9d578SStephan Aßmus 			BTextControl*		fNewUsernameField;
7304c9d578SStephan Aßmus 			BTextControl*		fNewPasswordField;
7404c9d578SStephan Aßmus 			BTextControl*		fRepeatPasswordField;
7504c9d578SStephan Aßmus 			BTextControl*		fEmailField;
763e3d0effSStephan Aßmus 			BMenuField*			fLanguageCodeField;
7704c9d578SStephan Aßmus 			BitmapView*			fCaptchaView;
7804c9d578SStephan Aßmus 			BTextControl*		fCaptchaResultField;
7904c9d578SStephan Aßmus 
8004c9d578SStephan Aßmus 			BButton*			fSendButton;
8104c9d578SStephan Aßmus 			BButton*			fCancelButton;
8204c9d578SStephan Aßmus 
8304c9d578SStephan Aßmus 			BString				fCaptchaToken;
8404c9d578SStephan Aßmus 			BitmapRef			fCaptchaImage;
853e3d0effSStephan Aßmus 			BString				fPreferredLanguage;
8604c9d578SStephan Aßmus 
8704c9d578SStephan Aßmus 			Model&				fModel;
8804c9d578SStephan Aßmus 
8904c9d578SStephan Aßmus 			Mode				fMode;
9004c9d578SStephan Aßmus 
9104c9d578SStephan Aßmus 			BLocker				fLock;
9204c9d578SStephan Aßmus 			thread_id			fWorkerThread;
9304c9d578SStephan Aßmus };
9404c9d578SStephan Aßmus 
9504c9d578SStephan Aßmus 
9604c9d578SStephan Aßmus #endif // USER_LOGIN_WINDOW_H
97