protected override void SetupSubviews() { base.SetupSubviews(); BackgroundView = new UIImageView() { Image = AppImages.Background, UserInteractionEnabled = false }; SetNeedsDisplay(); InvalidCredentialLabel = new UILabel().SetCredentialLabel(Strings.InvalidCredential); LoginTextField = new UITextField().SetTextFieldStyle(Strings.Login); LoginTextField.ReturnKeyType = UIReturnKeyType.Next; LoginTextField.ShouldReturn = field => PasswordTextField.BecomeFirstResponder(); PasswordTextField = new UITextField().SetTextFieldStyle(Strings.Password); PasswordTextField.SecureTextEntry = true; PasswordTextField.ReturnKeyType = UIReturnKeyType.Done; PasswordTextField.ShouldReturn = field => PasswordTextField.ResignFirstResponder(); LoginButton = new UIButton().SetPrimaryButtonStyle(Strings.SignIn); ActivityIndicatorView = new ActivityIndicatorView(80, 1); }
public override void ViewWillAppear(bool animated) { base.ViewWillAppear(animated); ActivityIndicatorView.Alpha = 0; ActivityIndicatorView.StartSpinning(); PasswordTextField.ResignFirstResponder(); }
void ReleaseDesignerOutlets() { if (ActivityIndicatorView != null) { ActivityIndicatorView.Dispose(); ActivityIndicatorView = null; } if (CreateWorkspaceButton != null) { CreateWorkspaceButton.Dispose(); CreateWorkspaceButton = null; } if (TryAgainButton != null) { TryAgainButton.Dispose(); TryAgainButton = null; } if (HeadingLabel != null) { HeadingLabel.Dispose(); HeadingLabel = null; } if (TextLabel != null) { TextLabel.Dispose(); TextLabel = null; } }
public override void ViewDidLoad() { base.ViewDidLoad(); RemoveBackBarButtonTitle(); ActivityIndicatorView.Hidden = true; SaveButton.Hidden = true; TextField.KeyboardType = UIKeyboardType.Url; TextField.Placeholder = "Website URL"; TextField.AutocorrectionType = UITextAutocorrectionType.No; TextField.BecomeFirstResponder(); TextField.EditingChanged += (sender, e) => { WebView.Hidden = true; SaveButton.Hidden = true; HideActivityIndicatorView(); }; TextField.EditingDidEndOnExit += (sender, e) => { if (String.IsNullOrEmpty(TextField.Text)) { return; } URL = TextField.Text.Trim(); if (!URL.Contains("http")) { URL = "http://" + URL; } if (!StringUtils.IsValidURL(URL)) { return; } WebView.Hidden = false; WebView.LoadRequest(NSUrlRequest.FromUrl(NSUrl.FromString(URL))); ActivityIndicatorView.Hidden = false; ActivityIndicatorView.StartAnimating(); }; SetProgressButton(SaveButton); WebViewSuperViewWidthConstraint.Constant = UIScreen.MainScreen.Bounds.Width - 40; WebView.Hidden = true; WebView.LoadFinished += (sender, e) => { SaveButton.Hidden = false; HideActivityIndicatorView(); }; }
protected override void SetupSubviews() { base.SetupSubviews(); ContentView = new UIView { BackgroundColor = AppColors.ContentPrimary }; VacationsPager = new UIView(); VacationPageControl = new UIPageControl { Pages = Enum.GetValues(typeof(VacationType)).Length, PageIndicatorTintColor = AppColors.TextBody, CurrentPageIndicatorTintColor = AppColors.TextPrimary }; AboveDateSeparator = new UIView().SetSeparatorStyle(); DateBeginView = new LargeDateControl(AppColors.TextPrimary); DateEndView = new LargeDateControl(AppColors.TextSecondary); BelowDateSeparator = new UIView().SetSeparatorStyle(); StatusSegmentedControl = new UISegmentedControl(Strings.Approved, Strings.Closed) { TintColor = AppColors.TextSecondary }; StartDatePicker = new UIDatePicker { Mode = UIDatePickerMode.Date }; EndDatePicker = new UIDatePicker { Mode = UIDatePickerMode.Date }; DatePickerToolbar = new UIToolbar { BarStyle = UIBarStyle.Default, Translucent = true, TintColor = AppColors.TextPrimary }; var doneButton = new UIBarButtonItem() { Title = Strings.Done, Style = UIBarButtonItemStyle.Plain, }; doneButton.ClickedWeakSubscribe((sender, args) => HideDatePickers()); var space = new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace); DatePickerToolbar.SetItems(new[] { space, doneButton }, false); DatePickerToolbar.UserInteractionEnabled = true; ActivityIndicator = new ActivityIndicatorView(80, 1); }
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; } }
void ReleaseDesignerOutlets() { if (ActivityIndicatorView != null) { ActivityIndicatorView.Dispose(); ActivityIndicatorView = null; } if (Label != null) { Label.Dispose(); Label = null; } if (LabelTrailingSpaceConstraint != null) { LabelTrailingSpaceConstraint.Dispose(); LabelTrailingSpaceConstraint = null; } }
public override void ViewDidLoad() { base.ViewDidLoad(); CreateWorkspaceButton.SetTitle(Resources.CreateNewWorkspace, UIControlState.Normal); HeadingLabel.Text = Resources.UhOh; TextLabel.Text = Resources.NoWorkspaceErrorMessage; var screenWidth = UIScreen.MainScreen.Bounds.Width; PreferredContentSize = new CGSize { // ScreenWidth - 32 for 16pt margins on both sides Width = screenWidth > 320 ? screenWidth - 32 : 312, Height = cardHeight }; prepareViews(); CreateWorkspaceButton.Rx() .BindAction(ViewModel.CreateWorkspaceWithDefaultName) .DisposedBy(DisposeBag); TryAgainButton.Rx() .BindAction(ViewModel.TryAgain) .DisposedBy(DisposeBag); ViewModel.IsLoading .Invert() .Subscribe(CreateWorkspaceButton.Rx().Enabled()) .DisposedBy(DisposeBag); ViewModel.IsLoading .Invert() .Subscribe(TryAgainButton.Rx().IsVisibleWithFade()) .DisposedBy(DisposeBag); ViewModel.IsLoading.StartWith(false) .Subscribe(ActivityIndicatorView.Rx().IsVisibleWithFade()) .DisposedBy(DisposeBag); }
public override void ViewDidLoad() { base.ViewDidLoad(); var screenWidth = UIScreen.MainScreen.Bounds.Width; PreferredContentSize = new CGSize { // ScreenWidth - 32 for 16pt margins on both sides Width = screenWidth > 320 ? screenWidth - 32 : 312, Height = cardHeight }; prepareViews(); this.Bind(CreateWorkspaceButton.Rx().Tap(), ViewModel.CreateWorkspaceWithDefaultName); this.Bind(TryAgainButton.Rx().Tap(), ViewModel.TryAgain); this.Bind(ViewModel.IsLoading.Select(CommonFunctions.Invert), CreateWorkspaceButton.Rx().Enabled()); this.Bind(ViewModel.IsLoading.Select(CommonFunctions.Invert), TryAgainButton.Rx().IsVisibleWithFade()); this.Bind(ViewModel.IsLoading.StartWith(false), ActivityIndicatorView.Rx().IsVisibleWithFade()); }
void ReleaseDesignerOutlets() { if (ActivityIndicatorView != null) { ActivityIndicatorView.Dispose(); ActivityIndicatorView = null; } if (SaveButton != null) { SaveButton.Dispose(); SaveButton = null; } if (ScrollView != null) { ScrollView.Dispose(); ScrollView = null; } if (TextField != null) { TextField.Dispose(); TextField = null; } if (WebView != null) { WebView.Dispose(); WebView = null; } if (WebViewSuperViewWidthConstraint != null) { WebViewSuperViewWidthConstraint.Dispose(); WebViewSuperViewWidthConstraint = null; } }
public override void ViewDidAppear(bool animated) { base.ViewDidAppear(animated); ActivityIndicatorView.StartSpinning(); }
public void StartAnimation() { ActivityIndicatorView?.StartAnimating(); }
void HideActivityIndicatorView() { ActivityIndicatorView.Hidden = true; ActivityIndicatorView.StopAnimating(); }
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(); }
public override void ViewDidLoad() { base.ViewDidLoad(); CreateWorkspaceButton.SetTitle(Resources.CreateNewWorkspace, UIControlState.Normal); HeadingLabel.Text = Resources.UhOh; TextLabel.Text = Resources.NoWorkspaceErrorMessage; var tryAgainString = string.Format(Resources.NoWorkspaceOr, Resources.NoWorkspaceTryAgain); var rangeStart = tryAgainString.IndexOf(Resources.NoWorkspaceTryAgain, System.StringComparison.CurrentCulture); var rangeEnd = Resources.NoWorkspaceTryAgain.Length; var range = new NSRange(rangeStart, rangeEnd); var attributedString = new NSMutableAttributedString( tryAgainString, new UIStringAttributes { ForegroundColor = ColorAssets.Text }); attributedString.AddAttributes( new UIStringAttributes { ForegroundColor = Colors.NoWorkspace.ActivityIndicator.ToNativeColor() }, range); TryAgainButton.SetAttributedTitle(attributedString, UIControlState.Normal); var screenWidth = UIScreen.MainScreen.Bounds.Width; PreferredContentSize = new CGSize { // ScreenWidth - 32 for 16pt margins on both sides Width = screenWidth > 320 ? screenWidth - 32 : 312, Height = cardHeight }; prepareViews(); CreateWorkspaceButton.Rx() .BindAction(ViewModel.CreateWorkspaceWithDefaultName) .DisposedBy(DisposeBag); TryAgainButton.Rx() .BindAction(ViewModel.TryAgain) .DisposedBy(DisposeBag); ViewModel.IsLoading .Invert() .Subscribe(CreateWorkspaceButton.Rx().Enabled()) .DisposedBy(DisposeBag); ViewModel.IsLoading .Invert() .Subscribe(TryAgainButton.Rx().IsVisibleWithFade()) .DisposedBy(DisposeBag); ViewModel.IsLoading.StartWith(false) .Subscribe(ActivityIndicatorView.Rx().IsVisibleWithFade()) .DisposedBy(DisposeBag); }
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(); }