xref: /haiku/src/apps/haikudepot/ui/UserLoginWindow.h (revision 0c82f64bf608fbec4e2637162cc34e562e2343a5)
104c9d578SStephan Aßmus /*
204c9d578SStephan Aßmus  * Copyright 2014, Stephan Aßmus <superstippi@gmx.de>.
3f85e0300SAndrew Lindesay  * Copyright 2019, Andrew Lindesay <apl@lindesay.co.nz>.
404c9d578SStephan Aßmus  * All rights reserved. Distributed under the terms of the MIT License.
504c9d578SStephan Aßmus  */
604c9d578SStephan Aßmus #ifndef USER_LOGIN_WINDOW_H
704c9d578SStephan Aßmus #define USER_LOGIN_WINDOW_H
804c9d578SStephan Aßmus 
904c9d578SStephan Aßmus #include <Locker.h>
101bbda92dSStephan Aßmus #include <Messenger.h>
1104c9d578SStephan Aßmus #include <Window.h>
1204c9d578SStephan Aßmus 
1304c9d578SStephan Aßmus #include "PackageInfo.h"
1404c9d578SStephan Aßmus 
1504c9d578SStephan Aßmus 
1604c9d578SStephan Aßmus class BButton;
17*0c82f64bSAndrew Lindesay class BCheckBox;
183e3d0effSStephan Aßmus class BMenuField;
1904c9d578SStephan Aßmus class BTabView;
2004c9d578SStephan Aßmus class BTextControl;
2104c9d578SStephan Aßmus class BitmapView;
22*0c82f64bSAndrew Lindesay class LinkView;
2304c9d578SStephan Aßmus class Model;
24*0c82f64bSAndrew Lindesay class UserUsageConditions;
2504c9d578SStephan Aßmus 
2604c9d578SStephan Aßmus 
2704c9d578SStephan Aßmus class UserLoginWindow : public BWindow {
2804c9d578SStephan Aßmus public:
2904c9d578SStephan Aßmus 								UserLoginWindow(BWindow* parent, BRect frame,
3004c9d578SStephan Aßmus 									Model& model);
3104c9d578SStephan Aßmus 	virtual						~UserLoginWindow();
3204c9d578SStephan Aßmus 
3304c9d578SStephan Aßmus 	virtual	void				MessageReceived(BMessage* message);
3404c9d578SStephan Aßmus 
351bbda92dSStephan Aßmus 			void				SetOnSuccessMessage(
361bbda92dSStephan Aßmus 									const BMessenger& messenger,
371bbda92dSStephan Aßmus 									const BMessage& message);
381bbda92dSStephan Aßmus 
3904c9d578SStephan Aßmus private:
40*0c82f64bSAndrew Lindesay 
4104c9d578SStephan Aßmus 			enum Mode {
4204c9d578SStephan Aßmus 				NONE = 0,
4304c9d578SStephan Aßmus 				LOGIN,
4404c9d578SStephan Aßmus 				CREATE_ACCOUNT
4504c9d578SStephan Aßmus 			};
4604c9d578SStephan Aßmus 
4704c9d578SStephan Aßmus 			void				_SetMode(Mode mode);
486f9eb8d1SStephan Aßmus 			bool				_ValidateCreateAccountFields(
496f9eb8d1SStephan Aßmus 									bool alertProblems = false);
5004c9d578SStephan Aßmus 			void				_Login();
5104c9d578SStephan Aßmus 			void				_CreateAccount();
52*0c82f64bSAndrew Lindesay 			void				_CreateAccountSetup(uint32 mask);
53*0c82f64bSAndrew Lindesay 			void				_CreateAccountSetupIfNecessary();
541bbda92dSStephan Aßmus 			void				_LoginSuccessful(const BString& message);
5504c9d578SStephan Aßmus 
5604c9d578SStephan Aßmus 			void				_SetWorkerThread(thread_id thread);
5704c9d578SStephan Aßmus 
5804c9d578SStephan Aßmus 	static	int32				_AuthenticateThreadEntry(void* data);
5904c9d578SStephan Aßmus 			void				_AuthenticateThread();
6004c9d578SStephan Aßmus 
61*0c82f64bSAndrew Lindesay 	static	int32				_CreateAccountSetupThreadEntry(void* data);
62*0c82f64bSAndrew Lindesay 			void				_CreateAccountCaptchaSetupThread();
63*0c82f64bSAndrew Lindesay 			void				_CreateAccountUserUsageConditionsSetupThread();
64*0c82f64bSAndrew Lindesay 
65*0c82f64bSAndrew Lindesay 			void				_SetUserUsageConditions(
66*0c82f64bSAndrew Lindesay 									UserUsageConditions* userUsageConditions);
6704c9d578SStephan Aßmus 
6804c9d578SStephan Aßmus 	static	int32				_CreateAccountThreadEntry(void* data);
6904c9d578SStephan Aßmus 			void				_CreateAccountThread();
7004c9d578SStephan Aßmus 
7104c9d578SStephan Aßmus 			void				_CollectValidationFailures(
7204c9d578SStephan Aßmus 									const BMessage& result,
7304c9d578SStephan Aßmus 									BString& error) const;
7404c9d578SStephan Aßmus 
75*0c82f64bSAndrew Lindesay 			void				_ViewUserUsageConditions();
76*0c82f64bSAndrew Lindesay 
7704c9d578SStephan Aßmus private:
781bbda92dSStephan Aßmus 			BMessenger			fOnSuccessTarget;
791bbda92dSStephan Aßmus 			BMessage			fOnSuccessMessage;
801bbda92dSStephan Aßmus 
8104c9d578SStephan Aßmus 			BTabView*			fTabView;
8204c9d578SStephan Aßmus 
8304c9d578SStephan Aßmus 			BTextControl*		fUsernameField;
8404c9d578SStephan Aßmus 			BTextControl*		fPasswordField;
8504c9d578SStephan Aßmus 
8604c9d578SStephan Aßmus 			BTextControl*		fNewUsernameField;
8704c9d578SStephan Aßmus 			BTextControl*		fNewPasswordField;
8804c9d578SStephan Aßmus 			BTextControl*		fRepeatPasswordField;
8904c9d578SStephan Aßmus 			BTextControl*		fEmailField;
903e3d0effSStephan Aßmus 			BMenuField*			fLanguageCodeField;
9104c9d578SStephan Aßmus 			BitmapView*			fCaptchaView;
9204c9d578SStephan Aßmus 			BTextControl*		fCaptchaResultField;
93*0c82f64bSAndrew Lindesay 			BCheckBox*			fConfirmMinimumAgeCheckBox;
94*0c82f64bSAndrew Lindesay 			BCheckBox*			fConfirmUserUsageConditionsCheckBox;
95*0c82f64bSAndrew Lindesay 			LinkView*			fUserUsageConditionsLink;
9604c9d578SStephan Aßmus 
9704c9d578SStephan Aßmus 			BButton*			fSendButton;
9804c9d578SStephan Aßmus 			BButton*			fCancelButton;
9904c9d578SStephan Aßmus 
10004c9d578SStephan Aßmus 			BString				fCaptchaToken;
10104c9d578SStephan Aßmus 			BitmapRef			fCaptchaImage;
102f85e0300SAndrew Lindesay 			BString				fPreferredLanguageCode;
10304c9d578SStephan Aßmus 
10404c9d578SStephan Aßmus 			Model&				fModel;
10504c9d578SStephan Aßmus 
10604c9d578SStephan Aßmus 			Mode				fMode;
10704c9d578SStephan Aßmus 
108*0c82f64bSAndrew Lindesay 			UserUsageConditions*
109*0c82f64bSAndrew Lindesay 								fUserUsageConditions;
110*0c82f64bSAndrew Lindesay 
11104c9d578SStephan Aßmus 			BLocker				fLock;
11204c9d578SStephan Aßmus 			thread_id			fWorkerThread;
11304c9d578SStephan Aßmus };
11404c9d578SStephan Aßmus 
11504c9d578SStephan Aßmus 
11604c9d578SStephan Aßmus #endif // USER_LOGIN_WINDOW_H
117