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