private void prepareViews() { NavigationController.NavigationBarHidden = true; LoginButton.SetTitleColor( Foundation.MvvmCross.Helper.Color.Login.DisabledButtonColor.ToNativeColor(), UIControlState.Disabled ); EmailTextField.ShouldReturn += _ => { PasswordTextField.BecomeFirstResponder(); return(false); }; PasswordTextField.ShouldReturn += _ => { ViewModel.Login(); PasswordTextField.ResignFirstResponder(); return(false); }; View.AddGestureRecognizer(new UITapGestureRecognizer(() => { EmailTextField.ResignFirstResponder(); PasswordTextField.ResignFirstResponder(); })); prepareForgotPasswordButton(); ShowPasswordButton.SetupShowPasswordButton(); }
private void prepareViews() { NavigationController.NavigationBarHidden = true; LoginButton.SetTitleColor( UIColor.White.ColorWithAlpha((nfloat)0.5), UIControlState.Disabled ); EmailTextField.ShouldReturn += _ => { PasswordTextField.BecomeFirstResponder(); return(false); }; PasswordTextField.ShouldReturn += _ => { ViewModel.Login(); PasswordTextField.ResignFirstResponder(); return(false); }; setupKeyboardDismissingGestureRecognizers(); prepareForgotPasswordButton(); ShowPasswordButton.SetupShowPasswordButton(); }
private void prepareViews() { NavigationController.NavigationBarHidden = true; ActivityIndicator.Alpha = 0; ActivityIndicator.StartSpinning(); SignupButton.SetTitleColor( Core.UI.Helper.Colors.Login.DisabledButtonColor.ToNativeColor(), UIControlState.Disabled ); EmailTextField.ShouldReturn += _ => { PasswordTextField.BecomeFirstResponder(); return(false); }; PasswordTextField.ShouldReturn += _ => { ViewModel.Signup.Execute(); PasswordTextField.ResignFirstResponder(); return(false); }; View.AddGestureRecognizer(new UITapGestureRecognizer(() => { EmailTextField.ResignFirstResponder(); PasswordTextField.ResignFirstResponder(); })); ShowPasswordButton.SetupShowPasswordButton(); }
public override void ViewDidLoad() { base.ViewDidLoad(); NavigationController.NavigationBarHidden = true; PasswordManagerButton.Hidden = !ViewModel.IsPasswordManagerAvailable; UIKeyboard.Notifications.ObserveWillShow(KeyboardWillShow); UIKeyboard.Notifications.ObserveWillHide(KeyboardWillHide); //Text this.Bind(ViewModel.Email, EmailTextField.BindText()); this.Bind(ViewModel.ErrorMessage, ErrorLabel.BindText()); this.Bind(ViewModel.Password, PasswordTextField.BindText()); this.Bind(EmailTextField.Text().Select(Email.From), ViewModel.SetEmail); this.Bind(PasswordTextField.Text().Select(Password.From), ViewModel.SetPassword); this.Bind(ViewModel.IsLoading.Select(loginButtonTitle), LoginButton.BindAnimatedTitle()); //Visibility this.Bind(ViewModel.HasError, ErrorLabel.BindAnimatedIsVisible()); this.Bind(ViewModel.IsLoading, ActivityIndicator.BindIsVisibleWithFade()); this.Bind(ViewModel.IsPasswordMasked.Skip(1), PasswordTextField.BindSecureTextEntry()); this.Bind(ViewModel.IsShowPasswordButtonVisible, ShowPasswordButton.BindIsVisible()); this.Bind(PasswordTextField.FirstResponder, ViewModel.SetIsShowPasswordButtonVisible); //Commands this.Bind(SignupCard.Tapped(), ViewModel.Signup); this.BindVoid(LoginButton.Tapped(), ViewModel.Login); this.BindVoid(GoogleLoginButton.Tapped(), ViewModel.GoogleLogin); this.Bind(ForgotPasswordButton.Tapped(), ViewModel.ForgotPassword); this.Bind(PasswordManagerButton.Tapped(), ViewModel.StartPasswordManager); this.BindVoid(ShowPasswordButton.Tapped(), ViewModel.TogglePasswordVisibility); //Color this.Bind(ViewModel.HasError.Select(loginButtonTintColor), LoginButton.BindTintColor()); this.Bind(ViewModel.LoginEnabled.Select(loginButtonTitleColor), LoginButton.BindTitleColor()); //Animation this.Bind(ViewModel.Shake, shakeTargets => { if (shakeTargets.HasFlag(LoginViewModel.ShakeTargets.Email)) { EmailTextField.Shake(); } if (shakeTargets.HasFlag(LoginViewModel.ShakeTargets.Password)) { PasswordTextField.Shake(); } }); prepareViews(); UIColor loginButtonTintColor(bool hasError) => hasError ? UIColor.White : UIColor.Black; UIColor loginButtonTitleColor(bool enabled) => enabled ? Color.Login.EnabledButtonColor.ToNativeColor() : Color.Login.DisabledButtonColor.ToNativeColor(); }
private void prepareViews() { ActivityIndicator.Alpha = 0; ActivityIndicator.StartAnimation(); SignupButton.SetTitleColor( Color.Login.DisabledButtonColor.ToNativeColor(), UIControlState.Disabled ); EmailTextField.ShouldReturn += _ => { PasswordTextField.BecomeFirstResponder(); return(false); }; PasswordTextField.ShouldReturn += _ => { PasswordTextField.ResignFirstResponder(); return(false); }; PasswordTextField.ResignFirstResponder(); ShowPasswordButton.SetupShowPasswordButton(); SelectCountryButton.SemanticContentAttribute = UISemanticContentAttribute.ForceRightToLeft; var spacing = 4; SelectCountryButton.ImageEdgeInsets = new UIEdgeInsets(0, spacing, 0, 0); SelectCountryButton.TitleEdgeInsets = new UIEdgeInsets(0, 0, 0, spacing); }
private void prepareViews() { ActivityIndicator.Alpha = 0; ActivityIndicator.StartAnimation(); LoginButton.SetTitleColor( Color.Login.DisabledButtonColor.ToNativeColor(), UIControlState.Disabled ); EmailTextField.ShouldReturn += _ => { PasswordTextField.BecomeFirstResponder(); return(false); }; PasswordTextField.ShouldReturn += _ => { PasswordTextField.ResignFirstResponder(); return(false); }; PasswordTextField.ResignFirstResponder(); ShowPasswordButton.SetupShowPasswordButton(); prepareForgotPasswordButton(); }
private void prepareViews() { NavigationController.NavigationBarHidden = true; ActivityIndicator.Alpha = 0; ActivityIndicator.StartSpinning(); SignupButton.SetTitleColor( Color.Login.DisabledButtonColor.ToNativeColor(), UIControlState.Disabled ); EmailTextField.ShouldReturn += _ => { PasswordTextField.BecomeFirstResponder(); return(false); }; PasswordTextField.ShouldReturn += _ => { ViewModel.SignupCommand.Execute(); PasswordTextField.ResignFirstResponder(); return(false); }; View.AddGestureRecognizer(new UITapGestureRecognizer(() => { EmailTextField.ResignFirstResponder(); PasswordTextField.ResignFirstResponder(); })); SignupShakeTriggerButton.TouchUpInside += (sender, e) => { if (!ViewModel.Email.IsValid) { EmailTextField.Shake(); } if (!ViewModel.Password.IsValid) { PasswordTextField.Shake(); } if (!ViewModel.IsCountryValid) { SelectCountryButton.Shake(); CountryNotSelectedImageView.Shake(); CountryDropDownCaretImageView.Shake(); } }; ShowPasswordButton.SetupShowPasswordButton(); EmailTextField.ResignFirstResponder(); PasswordTextField.ResignFirstResponder(); }
void ReleaseDesignerOutlets() { if (EmailLabel != null) { EmailLabel.Dispose(); EmailLabel = null; } if (ActivityIndicatorView != null) { ActivityIndicatorView.Dispose(); ActivityIndicatorView = null; } if (BottomConstraint != null) { BottomConstraint.Dispose(); BottomConstraint = null; } if (ErrorLabel != null) { ErrorLabel.Dispose(); ErrorLabel = null; } if (ErrorView != null) { ErrorView.Dispose(); ErrorView = null; } if (PasswordTextField != null) { PasswordTextField.Dispose(); PasswordTextField = null; } if (ShowPasswordButton != null) { ShowPasswordButton.Dispose(); ShowPasswordButton = null; } if (SignOutButton != null) { SignOutButton.Dispose(); SignOutButton = null; } }
private void prepareViews() { NavigationController.NavigationBarHidden = true; LoginButton.SetTitleColor( Color.Login.DisabledButtonColor.ToNativeColor(), UIControlState.Disabled ); EmailTextField.ShouldReturn += _ => { PasswordTextField.BecomeFirstResponder(); return(false); }; PasswordTextField.ShouldReturn += _ => { ViewModel.LoginCommand.Execute(); PasswordTextField.ResignFirstResponder(); return(false); }; View.AddGestureRecognizer(new UITapGestureRecognizer(() => { EmailTextField.ResignFirstResponder(); PasswordTextField.ResignFirstResponder(); })); LoginShakeTriggerButton.TouchUpInside += (sender, e) => { if (!ViewModel.Email.IsValid) { EmailTextField.Shake(); } if (!ViewModel.Password.IsValid) { PasswordTextField.Shake(); } }; PasswordTextField.ResignFirstResponder(); ShowPasswordButton.SetupShowPasswordButton(); prepareForgotPasswordButton(); }
public override void ViewDidLoad() { base.ViewDidLoad(); EmailTextField.Placeholder = Resources.EmailAddress; PasswordTextField.Placeholder = Resources.Password; SignUpCardTitleLabel.Text = Resources.AlreadyHaveAnAccountQuestionMark; SignUpCardLoginLabel.Text = Resources.LoginTitle; OrLabel.Text = Resources.Or.ToUpper(); GoogleSignupButton.SetTitle(Resources.GoogleSignUp, UIControlState.Normal); NavigationController.NavigationBarHidden = true; UIKeyboard.Notifications.ObserveWillShow(KeyboardWillShow); UIKeyboard.Notifications.ObserveWillHide(KeyboardWillHide); ViewModel.SuccessfulSignup .Subscribe(logAdjustSignupEvent) .DisposedBy(DisposeBag); //Text ViewModel.ErrorMessage .Subscribe(ErrorLabel.Rx().Text()) .DisposedBy(DisposeBag); ViewModel.Email .Subscribe(EmailTextField.Rx().TextObserver()) .DisposedBy(DisposeBag); ViewModel.Password .Subscribe(PasswordTextField.Rx().TextObserver()) .DisposedBy(DisposeBag); EmailTextField.Rx().Text() .Select(Email.From) .Subscribe(ViewModel.SetEmail) .DisposedBy(DisposeBag); PasswordTextField.Rx().Text() .Select(Password.From) .Subscribe(ViewModel.SetPassword) .DisposedBy(DisposeBag); ViewModel.IsLoading .Select(signupButtonTitle) .Subscribe(SignupButton.Rx().AnimatedTitle()) .DisposedBy(DisposeBag); ViewModel.CountryButtonTitle .Subscribe(SelectCountryButton.Rx().AnimatedTitle()) .DisposedBy(DisposeBag); //Visibility ViewModel.HasError .Subscribe(ErrorLabel.Rx().AnimatedIsVisible()) .DisposedBy(DisposeBag); ViewModel.IsLoading .Subscribe(ActivityIndicator.Rx().IsVisibleWithFade()) .DisposedBy(DisposeBag); ViewModel.IsPasswordMasked .Skip(1) .Subscribe(PasswordTextField.Rx().SecureTextEntry()) .DisposedBy(DisposeBag); ViewModel.IsShowPasswordButtonVisible .Subscribe(ShowPasswordButton.Rx().IsVisible()) .DisposedBy(DisposeBag); PasswordTextField.FirstResponder .Subscribe(ViewModel.SetIsShowPasswordButtonVisible) .DisposedBy(DisposeBag); ViewModel.IsCountryErrorVisible .Subscribe(CountryNotSelectedImageView.Rx().AnimatedIsVisible()) .DisposedBy(DisposeBag); //Commands LoginCard.Rx() .BindAction(ViewModel.Login) .DisposedBy(DisposeBag); SignupButton.Rx() .BindAction(ViewModel.Signup) .DisposedBy(DisposeBag); GoogleSignupButton.Rx() .BindAction(ViewModel.GoogleSignup) .DisposedBy(DisposeBag); ShowPasswordButton.Rx().Tap() .Subscribe(ViewModel.TogglePasswordVisibility) .DisposedBy(DisposeBag); SelectCountryButton.Rx() .BindAction(ViewModel.PickCountry) .DisposedBy(DisposeBag); //Color ViewModel.HasError .Select(signupButtonTintColor) .Subscribe(SignupButton.Rx().TintColor()) .DisposedBy(DisposeBag); ViewModel.SignupEnabled .Select(signupButtonTitleColor) .Subscribe(SignupButton.Rx().TitleColor()) .DisposedBy(DisposeBag); //Animation ViewModel.Shake .Subscribe(shakeTargets => { if (shakeTargets.HasFlag(SignupViewModel.ShakeTargets.Email)) { EmailTextField.Shake(); } if (shakeTargets.HasFlag(SignupViewModel.ShakeTargets.Password)) { PasswordTextField.Shake(); } if (shakeTargets.HasFlag(SignupViewModel.ShakeTargets.Country)) { SelectCountryButton.Shake(); } }) .DisposedBy(DisposeBag); prepareViews(); UIColor signupButtonTintColor(bool hasError) => hasError ? UIColor.White : UIColor.Black; UIColor signupButtonTitleColor(bool enabled) => enabled ? Core.UI.Helper.Colors.Login.EnabledButtonColor.ToNativeColor() : Core.UI.Helper.Colors.Login.DisabledButtonColor.ToNativeColor(); }
void ReleaseDesignerOutlets() { if (ActivityIndicator != null) { ActivityIndicator.Dispose(); ActivityIndicator = null; } if (CountryDropDownCaretImageView != null) { CountryDropDownCaretImageView.Dispose(); CountryDropDownCaretImageView = null; } if (CountryNotSelectedImageView != null) { CountryNotSelectedImageView.Dispose(); CountryNotSelectedImageView = null; } if (EmailTextField != null) { EmailTextField.Dispose(); EmailTextField = null; } if (ErrorLabel != null) { ErrorLabel.Dispose(); ErrorLabel = null; } if (GoogleSignupButton != null) { GoogleSignupButton.Dispose(); GoogleSignupButton = null; } if (LoginCard != null) { LoginCard.Dispose(); LoginCard = null; } if (PasswordTextField != null) { PasswordTextField.Dispose(); PasswordTextField = null; } if (SelectCountryButton != null) { SelectCountryButton.Dispose(); SelectCountryButton = null; } if (ShowPasswordButton != null) { ShowPasswordButton.Dispose(); ShowPasswordButton = null; } if (SignupButton != null) { SignupButton.Dispose(); SignupButton = null; } if (SignupShakeTriggerButton != null) { SignupShakeTriggerButton.Dispose(); SignupShakeTriggerButton = null; } if (TopConstraint != null) { TopConstraint.Dispose(); TopConstraint = null; } if (EmailFieldTopConstraint != null) { EmailFieldTopConstraint.Dispose(); EmailFieldTopConstraint = null; } }
void ReleaseDesignerOutlets() { if (ActivityIndicator != null) { ActivityIndicator.Dispose(); ActivityIndicator = null; } if (BottomConstraint != null) { BottomConstraint.Dispose(); BottomConstraint = null; } if (EmailTextField != null) { EmailTextField.Dispose(); EmailTextField = null; } if (InfoLabel != null) { InfoLabel.Dispose(); InfoLabel = null; } if (ForgotPasswordButton != null) { ForgotPasswordButton.Dispose(); ForgotPasswordButton = null; } if (PasswordManagerButton != null) { PasswordManagerButton.Dispose(); PasswordManagerButton = null; } if (PasswordTextField != null) { PasswordTextField.Dispose(); PasswordTextField = null; } if (PrivacyPolicyButton != null) { PrivacyPolicyButton.Dispose(); PrivacyPolicyButton = null; } if (ShowPasswordButton != null) { ShowPasswordButton.Dispose(); ShowPasswordButton = null; } if (SignUpLabels != null) { SignUpLabels.Dispose(); SignUpLabels = null; } if (TermsOfServiceButton != null) { TermsOfServiceButton.Dispose(); TermsOfServiceButton = null; } }
void ReleaseDesignerOutlets() { if (TopConstraint != null) { TopConstraint.Dispose(); TopConstraint = null; } if (ActivityIndicator != null) { ActivityIndicator.Dispose(); ActivityIndicator = null; } if (EmailTextField != null) { EmailTextField.Dispose(); EmailTextField = null; } if (ErrorLabel != null) { ErrorLabel.Dispose(); ErrorLabel = null; } if (GoogleSignupButton != null) { GoogleSignupButton.Dispose(); GoogleSignupButton = null; } if (LoginCard != null) { LoginCard.Dispose(); LoginCard = null; } if (PasswordTextField != null) { PasswordTextField.Dispose(); PasswordTextField = null; } if (SelectCountryButton != null) { SelectCountryButton.Dispose(); SelectCountryButton = null; } if (ShowPasswordButton != null) { ShowPasswordButton.Dispose(); ShowPasswordButton = null; } if (SignupButton != null) { SignupButton.Dispose(); SignupButton = null; } }
public override void ViewDidLoad() { base.ViewDidLoad(); Title = Resources.LoginTitle; ResetSuccessLabel.Text = Resources.APITokenResetSuccess; InstructionLabel.Text = Resources.TokenResetInstruction; PasswordTextField.Placeholder = Resources.Password; SignOutButton.SetTitle(Resources.OrSignOut, UIControlState.Normal); EmailLabel.Text = ViewModel.Email.ToString(); ViewModel.Error .Subscribe(ErrorLabel.Rx().Text()) .DisposedBy(DisposeBag); ViewModel.Password .Subscribe(PasswordTextField.Rx().TextObserver()) .DisposedBy(DisposeBag); PasswordTextField.Rx().Text() .Subscribe(ViewModel.Password) .DisposedBy(DisposeBag); SignOutButton.Rx() .BindAction(ViewModel.SignOut) .DisposedBy(DisposeBag); ViewModel.SignOut.Elements .Subscribe(IosDependencyContainer.Instance.IntentDonationService.ClearAll) .DisposedBy(DisposeBag); ShowPasswordButton.Rx().Tap() .Subscribe(_ => { PasswordTextField.ResignFirstResponder(); PasswordTextField.SecureTextEntry = !PasswordTextField.SecureTextEntry; PasswordTextField.BecomeFirstResponder(); }) .DisposedBy(DisposeBag); LoginButton.Rx().Tap() .Subscribe(ViewModel.Done.Inputs) .DisposedBy(DisposeBag); PasswordTextField.Rx().ShouldReturn() .Subscribe(ViewModel.Done.Inputs) .DisposedBy(DisposeBag); //Enabled ViewModel.NextIsEnabled .Subscribe(LoginButton.Rx().Enabled()) .DisposedBy(DisposeBag); //Visibility ErrorLabel.Hidden = true; ViewModel.HasError .Subscribe(ErrorLabel.Rx().AnimatedIsVisible()) .DisposedBy(DisposeBag); ViewModel.Done.Executing .Invert() .Subscribe(ShowPasswordButton.Rx().IsVisible()) .DisposedBy(DisposeBag); ViewModel.Done.Executing .Subscribe(ActivityIndicatorView.Rx().IsVisibleWithFade()) .DisposedBy(DisposeBag); ViewModel.Done.Executing.Select(loginButtonTitle) .Subscribe(LoginButton.Rx().AnimatedTitle()) .DisposedBy(DisposeBag); PasswordTextField.BecomeFirstResponder(); ShowPasswordButton.SetupShowPasswordButton(); //Color ViewModel.HasError .Select(loginButtonTintColor) .Subscribe(LoginButton.Rx().TintColor()) .DisposedBy(DisposeBag); ViewModel.NextIsEnabled .Select(loginButtonTitleColor) .Subscribe(LoginButton.Rx().TitleColor()) .DisposedBy(DisposeBag); UIColor loginButtonTintColor(bool hasError) => hasError ? UIColor.White : UIColor.Black; UIColor loginButtonTitleColor(bool enabled) => enabled ? Core.UI.Helper.Colors.Login.EnabledButtonColor.ToNativeColor() : Core.UI.Helper.Colors.Login.DisabledButtonColor.ToNativeColor(); }
public override void ViewDidLoad() { base.ViewDidLoad(); EmailTextField.Placeholder = Resources.EmailAddress; PasswordTextField.Placeholder = Resources.Password; OrLabel.Text = Resources.Or.ToUpper(); LoginButton.SetTitle(Resources.LoginTitle, UIControlState.Normal); GoogleLoginButton.SetTitle(Resources.GoogleLogin, UIControlState.Normal); DontHaveAnAccountLabel.Text = Resources.DoNotHaveAnAccountWithQuestionMark; SignUpForFreeLabel.Text = Resources.SignUpTitle; NavigationController.NavigationBarHidden = true; UIKeyboard.Notifications.ObserveWillShow(KeyboardWillShow); UIKeyboard.Notifications.ObserveWillHide(KeyboardWillHide); //Text ViewModel.Email .Subscribe(EmailTextField.Rx().TextObserver()) .DisposedBy(DisposeBag); ViewModel.ErrorMessage .Subscribe(ErrorLabel.Rx().Text()) .DisposedBy(DisposeBag); ViewModel.Password .Subscribe(PasswordTextField.Rx().TextObserver()) .DisposedBy(DisposeBag); EmailTextField.Rx().Text() .Select(Email.From) .Subscribe(ViewModel.SetEmail) .DisposedBy(DisposeBag); PasswordTextField.Rx().Text() .Select(Password.From) .Subscribe(ViewModel.SetPassword) .DisposedBy(DisposeBag); ViewModel.IsLoading.Select(loginButtonTitle) .Subscribe(LoginButton.Rx().AnimatedTitle()) .DisposedBy(DisposeBag); //Visibility ViewModel.HasError .Subscribe(ErrorLabel.Rx().AnimatedIsVisible()) .DisposedBy(DisposeBag); ViewModel.IsLoading .Subscribe(ActivityIndicator.Rx().IsVisibleWithFade()) .DisposedBy(DisposeBag); ViewModel.IsPasswordMasked .Skip(1) .Subscribe(PasswordTextField.Rx().SecureTextEntry()) .DisposedBy(DisposeBag); ViewModel.IsShowPasswordButtonVisible .Subscribe(ShowPasswordButton.Rx().IsVisible()) .DisposedBy(DisposeBag); PasswordTextField.FirstResponder .Subscribe(ViewModel.SetIsShowPasswordButtonVisible) .DisposedBy(DisposeBag); //Commands SignupCard.Rx() .BindAction(ViewModel.Signup) .DisposedBy(DisposeBag); LoginButton.Rx().Tap() .Subscribe(ViewModel.Login) .DisposedBy(DisposeBag); GoogleLoginButton.Rx().Tap() .Subscribe(ViewModel.GoogleLogin) .DisposedBy(DisposeBag); ForgotPasswordButton.Rx() .BindAction(ViewModel.ForgotPassword) .DisposedBy(DisposeBag); ShowPasswordButton.Rx().Tap() .Subscribe(ViewModel.TogglePasswordVisibility) .DisposedBy(DisposeBag); //Color ViewModel.HasError .Select(loginButtonTintColor) .Subscribe(LoginButton.Rx().TintColor()) .DisposedBy(DisposeBag); ViewModel.LoginEnabled .Select(loginButtonTitleColor) .Subscribe(LoginButton.Rx().TitleColor()) .DisposedBy(DisposeBag); //Animation ViewModel.Shake .Subscribe(shakeTargets => { if (shakeTargets.HasFlag(LoginViewModel.ShakeTargets.Email)) { EmailTextField.Shake(); } if (shakeTargets.HasFlag(LoginViewModel.ShakeTargets.Password)) { PasswordTextField.Shake(); } }) .DisposedBy(DisposeBag); prepareViews(); UIColor loginButtonTintColor(bool hasError) => hasError ? UIColor.White : UIColor.Black; UIColor loginButtonTitleColor(bool enabled) => enabled ? UIColor.White : UIColor.White.ColorWithAlpha((nfloat)0.5); }
void ReleaseDesignerOutlets() { if (ActivityIndicator != null) { ActivityIndicator.Dispose(); ActivityIndicator = null; } if (EmailTextField != null) { EmailTextField.Dispose(); EmailTextField = null; } if (ErrorLabel != null) { ErrorLabel.Dispose(); ErrorLabel = null; } if (ForgotPasswordButton != null) { ForgotPasswordButton.Dispose(); ForgotPasswordButton = null; } if (GoogleLoginButton != null) { GoogleLoginButton.Dispose(); GoogleLoginButton = null; } if (LoginButton != null) { LoginButton.Dispose(); LoginButton = null; } if (LogoImageView != null) { LogoImageView.Dispose(); LogoImageView = null; } if (PasswordManagerButton != null) { PasswordManagerButton.Dispose(); PasswordManagerButton = null; } if (PasswordTextField != null) { PasswordTextField.Dispose(); PasswordTextField = null; } if (ShowPasswordButton != null) { ShowPasswordButton.Dispose(); ShowPasswordButton = null; } if (SignupCard != null) { SignupCard.Dispose(); SignupCard = null; } if (TopConstraint != null) { TopConstraint.Dispose(); TopConstraint = null; } if (LoginShakeTriggerButton != null) { LoginShakeTriggerButton.Dispose(); LoginShakeTriggerButton = null; } }
public override void ViewDidLoad() { base.ViewDidLoad(); Title = Resources.LoginTitle; ResetSuccessLabel.Text = Resources.APITokenResetSuccess; InstructionLabel.Text = Resources.TokenResetInstruction; PasswordTextField.Placeholder = Resources.Password; SignOutButton.SetTitle(Resources.OrSignOut, UIControlState.Normal); prepareViews(); ViewModel.Error .Subscribe(ErrorLabel.Rx().Text()) .DisposedBy(DisposeBag); ViewModel.Email .SelectToString() .Subscribe(EmailLabel.Rx().Text()) .DisposedBy(DisposeBag); ViewModel.Password .Subscribe(PasswordTextField.Rx().TextObserver()) .DisposedBy(DisposeBag); PasswordTextField.Rx().Text() .Subscribe(ViewModel.Password) .DisposedBy(DisposeBag); ViewModel.IsPasswordMasked .Subscribe(PasswordTextField.Rx().SecureTextEntry()) .DisposedBy(DisposeBag); SignOutButton.Rx() .BindAction(ViewModel.SignOut) .DisposedBy(DisposeBag); ShowPasswordButton.Rx() .BindAction(ViewModel.TogglePasswordVisibility) .DisposedBy(DisposeBag); nextButton.Rx().Tap() .Subscribe(ViewModel.Done.Inputs) .DisposedBy(DisposeBag); PasswordTextField.Rx().ShouldReturn() .Subscribe(ViewModel.Done.Inputs) .DisposedBy(DisposeBag); //Enabled ViewModel.NextIsEnabled .Subscribe(nextButton.Rx().Enabled()) .DisposedBy(DisposeBag); //Visibility ViewModel.HasError .Subscribe(ErrorView.Rx().IsVisible()) .DisposedBy(DisposeBag); ViewModel.Done.Executing .Invert() .Subscribe(ShowPasswordButton.Rx().IsVisible()) .DisposedBy(DisposeBag); ViewModel.Done.Executing .Subscribe(ActivityIndicatorView.Rx().IsVisible()) .DisposedBy(DisposeBag); PasswordTextField.BecomeFirstResponder(); }