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