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