private void prepareViews() { NavigationController.NavigationBarHidden = false; ResetPasswordButton.SetTitleColor( Core.UI.Helper.Colors.Login.DisabledButtonColor.ToNativeColor(), UIControlState.Disabled ); EmailTextField.BecomeFirstResponder(); EmailTextField.Rx().ShouldReturn() .Subscribe(ViewModel.Reset.Inputs) .DisposedBy(DisposeBag); ActivityIndicator.StartSpinning(); ErrorLabel.Hidden = true; }
private void SetShouldReturnDelegates() { FirstNameTextField.ShouldReturn += (textField) => { LastNameTextField.BecomeFirstResponder(); return(true); }; LastNameTextField.ShouldReturn += (textField) => { EmailTextField.BecomeFirstResponder(); return(true); }; EmailTextField.ShouldReturn += (textField) => { View.EndEditing(true); AddUserButton.BecomeFirstResponder(); return(true); }; }
public override void ViewWillAppear(bool animated) { base.ViewWillAppear(animated); var timer = new System.Timers.Timer(); timer.Interval = 50; timer.Elapsed += delegate { timer.Stop(); timer.Dispose(); InvokeOnMainThread(() => { if (!String.IsNullOrEmpty(email_value)) { EmailTextField.BecomeFirstResponder(); EmailTextField.Text = email_value; } }); }; timer.Start(); }
private void InitViewModel() { FirstNameTextField.EditingChanged += (sender, e) => { }; LastNameTextField.EditingChanged += (sender, e) => { }; EmailTextField.EditingChanged += (sender, e) => { }; this.SetBinding(() => ViewModel.User.Name, () => FirstNameTextField.Text, BindingMode.TwoWay).ObserveTargetEvent("EditingChanged"); this.SetBinding(() => ViewModel.User.LastName, () => LastNameTextField.Text, BindingMode.TwoWay).ObserveTargetEvent("EditingChanged"); this.SetBinding(() => ViewModel.User.Email, () => EmailTextField.Text, BindingMode.TwoWay).ObserveTargetEvent("EditingChanged"); ViewModel.OnFirstNameValidation += (string error) => { FirstNameTextField.BecomeFirstResponder(); this.ShowError(error); }; ViewModel.OnLastNameValidation += (string error) => { LastNameTextField.BecomeFirstResponder(); this.ShowError(error); }; ViewModel.OnEmailNameValidation += (string error) => { EmailTextField.BecomeFirstResponder(); this.ShowError(error); }; ViewModel.OnUnexpectedError += (string error) => { FirstNameTextField.BecomeFirstResponder(); this.ShowError(error); }; ViewModel.OnError += (string error) => { FirstNameTextField.BecomeFirstResponder(); this.ShowError(error); }; }
public override void ViewDidLoad() { base.ViewDidLoad(); Title = ViewModel.Title; prepareTextFields(); UIKeyboard.Notifications.ObserveWillShow(keyboardWillShow); UIKeyboard.Notifications.ObserveWillHide(keyboardWillHide); NavigationItem.LeftBarButtonItem = new UIBarButtonItem { Title = Resources.LoginBackButton, TintColor = UIColor.White }; NavigationItem.RightBarButtonItem = new UIBarButtonItem { Title = Resources.LoginNextButton, TintColor = UIColor.White }; var bindingSet = this.CreateBindingSet <LoginViewController, LoginViewModel>(); //Text bindingSet.Bind(EmailTextField).To(vm => vm.Email); bindingSet.Bind(PasswordTextField).To(vm => vm.Password); bindingSet.Bind(ErrorLabel).To(vm => vm.ErrorText); bindingSet.Bind(PasswordTextField) .For(v => v.BindSecureTextEntry()) .To(vm => vm.IsPasswordMasked); //Commands bindingSet.Bind(NavigationItem.LeftBarButtonItem) .For(v => v.BindCommand()) .To(vm => vm.BackCommand); bindingSet.Bind(NavigationItem.RightBarButtonItem) .For(v => v.BindCommand()) .To(vm => vm.NextCommand); bindingSet.Bind(ShowPasswordButton) .For(v => v.BindTap()) .To(vm => vm.TogglePasswordVisibilityCommand); bindingSet.Bind(PasswordManagerButton) .For(v => v.BindTap()) .To(vm => vm.StartPasswordManagerCommand); //Enabled bindingSet.Bind(NavigationItem.RightBarButtonItem) .For(v => v.BindAnimatedEnabled()) .To(vm => vm.NextIsEnabled); //Visibility bindingSet.Bind(EmailTextField) .For(v => v.BindAnimatedVisibility()) .To(vm => vm.IsEmailPage); bindingSet.Bind(PasswordTextField) .For(v => v.BindAnimatedVisibility()) .To(vm => vm.IsPasswordPage); bindingSet.Bind(ShowPasswordButton) .For(v => v.BindAnimatedVisibility()) .To(vm => vm.ShowPasswordButtonVisible); bindingSet.Bind(ErrorLabel) .For(v => v.BindAnimatedVisibility()) .To(vm => vm.HasError); bindingSet.Bind(ActivityIndicator) .For(v => v.BindVisible()) .To(vm => vm.IsLoading); if (ViewModel.IsPasswordManagerAvailable) { bindingSet.Bind(PasswordManagerButton) .For(v => v.BindAnimatedVisibility()) .To(vm => vm.IsEmailPage); } else { PasswordManagerButton.Hidden = true; } //State bindingSet.Bind(EmailTextField) .For(v => v.BindFocus()) .To(vm => vm.IsEmailPage); bindingSet.Bind(PasswordTextField) .For(v => v.BindFocus()) .To(vm => vm.IsPasswordPage); bindingSet.Apply(); EmailTextField.BecomeFirstResponder(); }
public override void ViewDidAppear(bool animated) { base.ViewDidAppear(animated); EmailTextField.BecomeFirstResponder(); }
public override void ViewDidLoad() { base.ViewDidLoad(); Title = Resources.LoginForgotPassword; ResetPasswordButton.SetTitle(Resources.GetPasswordResetLink, UIControlState.Normal); EmailTextField.Placeholder = Resources.EmailAddress; SuccessMessageLabel.Text = Resources.PasswordResetSuccess; prepareViews(); //Text ViewModel.ErrorMessage .Subscribe(errorMessage => { ErrorLabel.Text = errorMessage; ErrorLabel.Hidden = string.IsNullOrEmpty(errorMessage); }) .DisposedBy(DisposeBag); EmailTextField.Rx().Text() .Select(Email.From) .Subscribe(ViewModel.Email.OnNext) .DisposedBy(DisposeBag); ViewModel.Reset.Executing .Subscribe(loading => { UIView.Transition( ResetPasswordButton, Animation.Timings.EnterTiming, UIViewAnimationOptions.TransitionCrossDissolve, () => ResetPasswordButton.SetTitle(loading ? "" : Resources.GetPasswordResetLink, UIControlState.Normal), null ); }) .DisposedBy(DisposeBag); //Visibility ViewModel.PasswordResetSuccessful .Subscribe(DoneCard.Rx().IsVisibleWithFade()) .DisposedBy(DisposeBag); ViewModel.PasswordResetSuccessful .Invert() .Subscribe(ResetPasswordButton.Rx().IsVisibleWithFade()) .DisposedBy(DisposeBag); ViewModel.PasswordResetSuccessful .Where(s => s == false) .Subscribe(_ => EmailTextField.BecomeFirstResponder()) .DisposedBy(DisposeBag); ViewModel.Reset.Executing .Subscribe(ActivityIndicator.Rx().IsVisibleWithFade()) .DisposedBy(DisposeBag); //Commands ResetPasswordButton.Rx() .BindAction(ViewModel.Reset) .DisposedBy(DisposeBag); }
public override void ViewDidLoad() { base.ViewDidLoad(); InitElements(); backBn.TouchUpInside += (s, e) => { this.NavigationController.PopViewController(true); }; if (!methods.IsConnected()) { NoConnectionViewController.view_controller_name = GetType().Name; this.NavigationController.PushViewController(storyboard.InstantiateViewController(nameof(NoConnectionViewController)), false); return; } nextBn.TouchUpInside += async(s, e) => { if (String.IsNullOrEmpty(EmailTextField.Text)) { UIAlertView alert_empty = new UIAlertView() { Title = "Введите email" }; alert_empty.AddButton("OK"); alert_empty.Show(); } else { try { ConfirmEmailViewControllerNew.email_value = methods.EmailValidation(EmailTextField.Text); activityIndicator.Hidden = false; nextBn.Hidden = true; var deviceName = UIDevice.CurrentDevice.Name;//IdentifierForVendor.ToString(); var UDID = UIDevice.CurrentDevice.IdentifierForVendor.ToString(); string res = null; try { res = await accountActions.AccountVerification(deviceName, EmailTextField.Text.ToLower(), UDID); } catch { if (!methods.IsConnected()) { InvokeOnMainThread(() => { NoConnectionViewController.view_controller_name = GetType().Name; this.NavigationController.PushViewController(storyboard.InstantiateViewController(nameof(NoConnectionViewController)), false); return; }); } return; } Analytics.TrackEvent($"{deviceName} {res}"); activityIndicator.Hidden = true; nextBn.Hidden = false; string error_message = ""; UIAlertView alert = new UIAlertView() { Title = "Ошибка", Message = "Что-то пошло не так." }; if (res.ToLower().Contains(Constants.alreadyDone.ToLower())) { var possibleRepeat = TimeZone.CurrentTimeZone.ToLocalTime(databaseMethods.GetRepeatAfter()); var hour = possibleRepeat.Hour.ToString(); var minute = possibleRepeat.Minute.ToString(); var second = possibleRepeat.Second.ToString(); if (hour.Length < 2) { hour = "0" + hour; } if (minute.Length < 2) { minute = "0" + minute; } if (second.Length < 2) { second = "0" + second; } alert.Message = "Запрос был выполнен ранее. Следующий можно будет выполнить после " + hour + ":" + minute + ":" + second; alert.AddButton("OK"); alert.Show(); return; } if (res.Contains("SubscriptionConstraint") || String.IsNullOrEmpty(res)) { error_message = "_"; var vc = storyboard.InstantiateViewController(nameof(EmailAlreadyRegisteredViewController)); this.NavigationController.PushViewController(vc, true); } else if (res.Contains("The Email field is not a valid e-mail address")) { error_message = "Неверный формат почты"; } if (!String.IsNullOrEmpty(error_message)) { if (!error_message.Contains("_")) { alert = new UIAlertView() { Title = "Ошибка", Message = error_message }; alert.AddButton("OK"); alert.Show(); } } if (res.Contains("actionJwt")) { var deserialized_value = JsonConvert.DeserializeObject <AccountVerificationModel>(res); databaseMethods.InsertActionJwt(deserialized_value.actionJwt); Analytics.TrackEvent($"{"actionJwt:"} {deserialized_value.actionJwt}"); EmailViewControllerNew.actionToken = deserialized_value.actionToken; EmailViewControllerNew.repeatAfter = deserialized_value.repeatAfter; EmailViewControllerNew.validTill = deserialized_value.validTill; databaseMethods.InsertValidTillRepeatAfter(EmailViewControllerNew.validTill, EmailViewControllerNew.repeatAfter, ConfirmEmailViewControllerNew.email_value); var vc = storyboard.InstantiateViewController(nameof(WaitingEmailConfirmViewController)); this.NavigationController.PushViewController(vc, true); } } catch { UIAlertView alert_empty = new UIAlertView() { Title = "Email некорректен" }; alert_empty.AddButton("OK"); alert_empty.Show(); } } }; EmailTextField.EditingChanged += (s, e) => { email_value = EmailTextField.Text; }; email_value = databaseMethods.GetEmailFromValidTill_RepeatAfter(); var timer = new System.Timers.Timer(); timer.Interval = 400; timer.Elapsed += delegate { timer.Stop(); timer.Dispose(); InvokeOnMainThread(() => { if (!String.IsNullOrEmpty(email_value)) { EmailTextField.BecomeFirstResponder(); EmailTextField.Text = email_value; } }); }; timer.Start(); }
public override void ViewDidLoad() { base.ViewDidLoad(); prepareViews(); var invertedBoolConverter = new BoolToConstantValueConverter <bool>(false, true); var bindingSet = this.CreateBindingSet <LoginViewController, LoginViewModel>(); //Text bindingSet.Bind(EmailTextField) .To(vm => vm.Email) .WithConversion(new EmailToStringValueConverter()); bindingSet.Bind(PasswordTextField) .To(vm => vm.Password) .WithConversion(new PasswordToStringValueConverter()); bindingSet.Bind(InfoLabel).To(vm => vm.InfoText); bindingSet.Bind(PasswordTextField) .For(v => v.BindSecureTextEntry()) .To(vm => vm.IsPasswordMasked); bindingSet.Bind(GoogleSignInButton) .For(v => v.BindTitle()) .To(vm => vm.GoogleButtonText); bindingSet.Bind(this) .For(v => v.Title) .To(vm => vm.Title); //Commands bindingSet.Bind(GoogleSignInButton).To(vm => vm.GoogleLoginCommand); bindingSet.Bind(ForgotPasswordButton).To(vm => vm.ForgotPasswordCommand); bindingSet.Bind(PrivacyPolicyButton).To(vm => vm.OpenPrivacyPolicyCommand); bindingSet.Bind(TermsOfServiceButton).To(vm => vm.OpenTermsOfServiceCommand); bindingSet.Bind(backButton) .For(v => v.BindCommand()) .To(vm => vm.BackCommand); bindingSet.Bind(nextButton) .For(v => v.BindCommand()) .To(vm => vm.NextCommand); bindingSet.Bind(ShowPasswordButton) .For(v => v.BindTap()) .To(vm => vm.TogglePasswordVisibilityCommand); bindingSet.Bind(PasswordManagerButton) .For(v => v.BindTap()) .To(vm => vm.StartPasswordManagerCommand); bindingSet.Bind(TryLoggingInInsteadButton) .For(v => v.BindTap()) .To(vm => vm.ChangeSignUpToLoginCommand); //Enabled bindingSet.Bind(EmailTextField) .For(v => v.BindShouldReturn()) .To(vm => vm.NextCommand); bindingSet.Bind(PasswordTextField) .For(v => v.BindShouldReturn()) .To(vm => vm.NextCommand); bindingSet.Bind(nextButton) .For(v => v.Enabled) .To(vm => vm.NextIsEnabled); bindingSet.Bind(backButton) .For(v => v.Enabled) .To(vm => vm.IsLoading) .WithConversion(invertedBoolConverter); bindingSet.Bind(ForgotPasswordButton) .For(v => v.Enabled) .To(vm => vm.IsLoading) .WithConversion(invertedBoolConverter); //Visibility bindingSet.Bind(EmailTextField) .For(v => v.BindAnimatedVisibility()) .To(vm => vm.EmailFieldVisible); bindingSet.Bind(PasswordTextField) .For(v => v.BindAnimatedVisibility()) .To(vm => vm.IsPasswordPage); bindingSet.Bind(ShowPasswordButton) .For(v => v.BindAnimatedVisibility()) .To(vm => vm.ShowPasswordButtonVisible); bindingSet.Bind(InfoLabel) .For(v => v.BindAnimatedVisibility()) .To(vm => vm.HasInfoText); bindingSet.Bind(ActivityIndicator) .For(v => v.BindVisible()) .To(vm => vm.IsLoading); bindingSet.Bind(ForgotPasswordButton) .For(v => v.BindVisible()) .To(vm => vm.ShowForgotPassword); bindingSet.Bind(SignUpLabels) .For(v => v.BindVisible()) .To(vm => vm.IsSignUp); bindingSet.Bind(PasswordManagerButton) .For(v => v.BindAnimatedVisibility()) .To(vm => vm.PasswordManagerVisible); bindingSet.Bind(TryLoggingInInsteadButton) .For(v => v.BindAnimatedVisibility()) .To(vm => vm.TryLoggingInInsteadOfSignup); //State bindingSet.Bind(EmailTextField) .For(v => v.BindFocus()) .To(vm => vm.IsEmailFocused); bindingSet.Bind(PasswordTextField) .For(v => v.BindFocus()) .To(vm => vm.IsPasswordPage); bindingSet.Apply(); EmailTextField.BecomeFirstResponder(); willEnterForegroundNotification = UIApplication.Notifications.ObserveWillEnterForeground((sender, e) => startAnimations()); }
public override void ViewDidLoad() { base.ViewDidLoad(); prepareViews(); UIKeyboard.Notifications.ObserveWillShow(keyboardWillShow); UIKeyboard.Notifications.ObserveWillHide(keyboardWillHide); var invertedBoolConverter = new BoolToConstantValueConverter <bool>(false, true); var bindingSet = this.CreateBindingSet <LoginViewController, LoginViewModel>(); //Text bindingSet.Bind(EmailTextField).To(vm => vm.Email); bindingSet.Bind(PasswordTextField).To(vm => vm.Password); bindingSet.Bind(InfoLabel).To(vm => vm.InfoText); bindingSet.Bind(PasswordTextField) .For(v => v.BindSecureTextEntry()) .To(vm => vm.IsPasswordMasked); bindingSet.Bind(this) .For(v => v.Title) .To(vm => vm.Title); //Commands bindingSet.Bind(ForgotPasswordButton).To(vm => vm.ForgotPasswordCommand); bindingSet.Bind(PrivacyPolicyButton).To(vm => vm.OpenPrivacyPolicyCommand); bindingSet.Bind(TermsOfServiceButton).To(vm => vm.OpenTermsOfServiceCommand); bindingSet.Bind(backButton) .For(v => v.BindCommand()) .To(vm => vm.BackCommand); bindingSet.Bind(nextButton) .For(v => v.BindCommand()) .To(vm => vm.NextCommand); bindingSet.Bind(ShowPasswordButton) .For(v => v.BindTap()) .To(vm => vm.TogglePasswordVisibilityCommand); bindingSet.Bind(PasswordManagerButton) .For(v => v.BindTap()) .To(vm => vm.StartPasswordManagerCommand); //Enabled bindingSet.Bind(EmailTextField) .For(v => v.BindShouldReturn()) .To(vm => vm.NextCommand); bindingSet.Bind(PasswordTextField) .For(v => v.BindShouldReturn()) .To(vm => vm.NextCommand); bindingSet.Bind(nextButton) .For(v => v.Enabled) .To(vm => vm.NextIsEnabled); bindingSet.Bind(backButton) .For(v => v.Enabled) .To(vm => vm.IsLoading) .WithConversion(invertedBoolConverter); bindingSet.Bind(ForgotPasswordButton) .For(v => v.Enabled) .To(vm => vm.IsLoading) .WithConversion(invertedBoolConverter); //Visibility bindingSet.Bind(EmailTextField) .For(v => v.BindAnimatedVisibility()) .To(vm => vm.EmailFieldVisible); bindingSet.Bind(PasswordTextField) .For(v => v.BindAnimatedVisibility()) .To(vm => vm.IsPasswordPage); bindingSet.Bind(ShowPasswordButton) .For(v => v.BindAnimatedVisibility()) .To(vm => vm.ShowPasswordButtonVisible); bindingSet.Bind(InfoLabel) .For(v => v.BindAnimatedVisibility()) .To(vm => vm.HasInfoText); bindingSet.Bind(ActivityIndicator) .For(v => v.BindVisible()) .To(vm => vm.IsLoading); bindingSet.Bind(ForgotPasswordButton) .For(v => v.BindVisible()) .To(vm => vm.ShowForgotPassword); bindingSet.Bind(SignUpLabels) .For(v => v.BindVisible()) .To(vm => vm.IsSignUp); if (ViewModel.IsPasswordManagerAvailable) { bindingSet.Bind(PasswordManagerButton) .For(v => v.BindAnimatedVisibility()) .To(vm => vm.IsEmailPage); } else { PasswordManagerButton.Hidden = true; } //State bindingSet.Bind(EmailTextField) .For(v => v.BindFocus()) .To(vm => vm.IsEmailPage); bindingSet.Bind(PasswordTextField) .For(v => v.BindFocus()) .To(vm => vm.IsPasswordPage); bindingSet.Apply(); EmailTextField.BecomeFirstResponder(); }