Exemple #1
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            Title      = "Login";
            Logo.Image = Images.Misc.GitHubLogo;
            if (Username != null)
            {
                User.Text = Username;
            }

            User.ShouldReturn = delegate
            {
                Password.BecomeFirstResponder();
                return(true);
            };
            Password.ShouldReturn = delegate
            {
                Password.ResignFirstResponder();

                //Run this in another thread
                ThreadPool.QueueUserWorkItem(delegate { BeginLogin(); });
                return(true);
            };
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            ViewModel.WhenAnyValue(x => x.Username).Subscribe(x => User.Text     = x);
            ViewModel.WhenAnyValue(x => x.Password).Subscribe(x => Password.Text = x);
            ViewModel.WhenAnyValue(x => x.Domain).Subscribe(x => Domain.Text     = x);

            User.EditingChanged += (sender, args) =>
                                   ViewModel.Username = User.Text;
            Password.EditingChanged += (sender, args) =>
                                       ViewModel.Password = Password.Text;
            Domain.EditingChanged += (sender, args) =>
                                     ViewModel.Domain = Domain.Text;

            LoginButton.TouchUpInside += (sender, args) => ViewModel.LoginCommand.Execute(null);

            ViewModel.LoginCommand.IsExecuting.Subscribe(x =>
            {
                if (x)
                {
                    StatusIndicatorService.Show("Logging in...");
                }
                else
                {
                    StatusIndicatorService.Hide();
                }
            });

            View.BackgroundColor = UIColor.FromRGB(239, 239, 244);
            Logo.Image           = Images.StashLogo;

            LoginButton.SetTitleColor(UIColor.Black, UIControlState.Normal);
            LoginButton.SetBackgroundImage(Images.GreyButton.CreateResizableImage(new UIEdgeInsets(18, 18, 18, 18)), UIControlState.Normal);

            //Set some generic shadowing
            LoginButton.Layer.ShadowColor   = UIColor.Black.CGColor;
            LoginButton.Layer.ShadowOffset  = new SizeF(0, 1);
            LoginButton.Layer.ShadowOpacity = 0.3f;

            Domain.ShouldReturn = delegate {
                User.BecomeFirstResponder();
                return(true);
            };

            User.ShouldReturn = delegate {
                Password.BecomeFirstResponder();
                return(true);
            };

            Password.ShouldReturn = delegate {
                Password.ResignFirstResponder();
                LoginButton.SendActionForControlEvents(UIControlEvent.TouchUpInside);
                return(true);
            };


            ScrollView.ContentSize = new SizeF(View.Frame.Width, LoginButton.Frame.Bottom + 10f);
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            Logo.Image = Images.Logos.GitHub;

            if (_enterprise)
            {
                LoginButton.SetTitleColor(UIColor.White, UIControlState.Normal);
                LoginButton.SetBackgroundImage(Images.Buttons.BlackButton.CreateResizableImage(new UIEdgeInsets(18, 18, 18, 18)), UIControlState.Normal);
            }
            else
            {
                LoginButton.SetBackgroundImage(Images.Buttons.GreyButton.CreateResizableImage(new UIEdgeInsets(18, 18, 18, 18)), UIControlState.Normal);

                //Hide the domain, slide everything up
                Domain.Hidden = true;
                var f = User.Frame;
                f.Y       -= 39;
                User.Frame = f;

                var p = Password.Frame;
                p.Y           -= 39;
                Password.Frame = p;

                var l = LoginButton.Frame;
                l.Y -= 39;
                LoginButton.Frame = l;
            }

            //Set some generic shadowing
            LoginButton.Layer.ShadowColor   = UIColor.Black.CGColor;
            LoginButton.Layer.ShadowOffset  = new SizeF(0, 1);
            LoginButton.Layer.ShadowOpacity = 0.3f;

            if (_attemptedAccount != null)
            {
                Domain.Text = _attemptedAccount.Domain;
                User.Text   = _attemptedAccount.Username;
            }

            Domain.ShouldReturn = delegate {
                User.BecomeFirstResponder();
                return(true);
            };

            User.ShouldReturn = delegate {
                Password.BecomeFirstResponder();
                return(true);
            };
            Password.ShouldReturn = delegate {
                Password.ResignFirstResponder();
                InvokeOnMainThread(() => DoLogin());
                return(true);
            };

            LoginButton.TouchUpInside += (object sender, EventArgs e) => DoLogin();
            ScrollView.ContentSize     = new SizeF(View.Frame.Width, LoginButton.Frame.Bottom + 10f);
        }
Exemple #4
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            Title = "Login";


            View.BackgroundColor = EnterpriseBackgroundColor;
            Logo.Image           = Images.Logos.EnterpriseMascot;

            LoginButton.SetBackgroundImage(Images.Buttons.BlackButton.CreateResizableImage(new UIEdgeInsets(18, 18, 18, 18)), UIControlState.Normal);
            LoginButton.Enabled = true;

            //Set some generic shadowing
            LoginButton.Layer.ShadowColor   = UIColor.Black.CGColor;
            LoginButton.Layer.ShadowOffset  = new CGSize(0, 1);
            LoginButton.Layer.ShadowOpacity = 0.3f;

            var attributes = new UIStringAttributes {
                ForegroundColor = UIColor.LightGray,
            };

            Domain.AttributedPlaceholder   = new NSAttributedString("Domain", attributes);
            User.AttributedPlaceholder     = new NSAttributedString("Username", attributes);
            Password.AttributedPlaceholder = new NSAttributedString("Password", attributes);

            foreach (var i in new [] { Domain, User, Password })
            {
                i.Layer.BorderColor  = UIColor.Black.CGColor;
                i.Layer.BorderWidth  = 1;
                i.Layer.CornerRadius = 4;
            }

            Domain.ShouldReturn = delegate {
                User.BecomeFirstResponder();
                return(true);
            };

            User.ShouldReturn = delegate {
                Password.BecomeFirstResponder();
                return(true);
            };
            Password.ShouldReturn = delegate {
                Password.ResignFirstResponder();
                LoginButton.SendActionForControlEvents(UIControlEvent.TouchUpInside);
                return(true);
            };

            OnActivation(d =>
            {
                d(User.GetChangedObservable().Subscribe(x => ViewModel.Username     = x));
                d(Password.GetChangedObservable().Subscribe(x => ViewModel.Password = x));
                d(Domain.GetChangedObservable().Subscribe(x => ViewModel.Domain     = x));
                d(LoginButton.GetClickedObservable().BindCommand(ViewModel.LoginCommand));
                d(ViewModel.Bind(x => x.IsLoggingIn).SubscribeStatus("Logging in..."));
                d(ViewModel.LoginCommand.ThrownExceptions.Subscribe(HandleLoginException));
            });
        }
Exemple #5
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            Username.BackgroundColor       = ComponentBackgroundColor;
            Username.AttributedPlaceholder = new Foundation.NSAttributedString("Username", foregroundColor: ComponentPlaceholderColor);
            Username.TextColor             = ComponentTextColor;
            Username.EditingChanged       += (sender, args) =>
                                             ViewModel.Username = Username.Text;
            ViewModel.WhenAnyValue(x => x.Username).Subscribe(x => Username.Text = x);

            Password.BackgroundColor       = ComponentBackgroundColor;
            Password.AttributedPlaceholder = new Foundation.NSAttributedString("Password", foregroundColor: ComponentPlaceholderColor);
            Password.TextColor             = ComponentTextColor;
            Password.EditingChanged       += (sender, args) =>
                                             ViewModel.Password = Password.Text;
            ViewModel.WhenAnyValue(x => x.Password).Subscribe(x => Password.Text = x);

            Domain.BackgroundColor       = ComponentBackgroundColor;
            Domain.AttributedPlaceholder = new Foundation.NSAttributedString("Domain", foregroundColor: ComponentPlaceholderColor);
            Domain.TextColor             = ComponentTextColor;
            Domain.EditingChanged       += (sender, args) =>
                                           ViewModel.Domain = Domain.Text;
            ViewModel.WhenAnyValue(x => x.Domain).Subscribe(x => Domain.Text = x);

            LoginButton.TouchUpInside += (sender, args) => ViewModel.LoginCommand.ExecuteIfCan();
            ViewModel.LoginCommand.CanExecuteObservable.Subscribe(x => LoginButton.Enabled = x);

            View.BackgroundColor = BackgroundColor;
            LogoImageView.Image  = Images.Logos.Enterprise;

            LoginButton.SetTitleColor(ComponentTextColor, UIControlState.Normal);
            LoginButton.SetBackgroundImage(Images.Buttons.BlackButton.CreateResizableImage(new UIEdgeInsets(18, 18, 18, 18)), UIControlState.Normal);

            //Set some generic shadowing
            LoginButton.Layer.ShadowColor   = UIColor.Black.CGColor;
            LoginButton.Layer.ShadowOffset  = new CGSize(0, 1);
            LoginButton.Layer.ShadowOpacity = 0.2f;

            Domain.ShouldReturn = delegate {
                Username.BecomeFirstResponder();
                return(true);
            };

            Username.ShouldReturn = delegate {
                Password.BecomeFirstResponder();
                return(true);
            };
            Password.ShouldReturn = delegate {
                Password.ResignFirstResponder();
                LoginButton.SendActionForControlEvents(UIControlEvent.TouchUpInside);
                return(true);
            };

            this.ViewportObservable().Subscribe(x => ScrollView.Frame = x);

            ImageHeight.Constant = UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Pad ? 192 : 86;
        }
Exemple #6
0
        public override void ViewDidLoad()
        {
            var set = this.CreateBindingSet <AddAccountView, AddAccountViewModel>();

            set.Bind(User).To(x => x.Username);
            set.Bind(Password).To(x => x.Password);
            set.Bind(Domain).To(x => x.Domain);
            set.Bind(LoginButton).To(x => x.LoginCommand);
            set.Apply();

            base.ViewDidLoad();

            ViewModel.Bind(x => x.IsLoggingIn, x =>
            {
                if (x)
                {
                    _hud.Show("Logging in...");
                }
                else
                {
                    _hud.Hide();
                }
            });

            View.BackgroundColor = UIColor.FromRGB(239, 239, 244);
            Logo.Image           = Images.Logos.GitHub;

            if (ViewModel.IsEnterprise)
            {
                LoginButton.SetTitleColor(UIColor.White, UIControlState.Normal);
                LoginButton.SetBackgroundImage(Images.Buttons.BlackButton.CreateResizableImage(new UIEdgeInsets(18, 18, 18, 18)), UIControlState.Normal);
            }
            else
            {
                LoginButton.SetBackgroundImage(Images.Buttons.GreyButton.CreateResizableImage(new UIEdgeInsets(18, 18, 18, 18)), UIControlState.Normal);

                //Hide the domain, slide everything up
                Domain.Hidden = true;
                var f = User.Frame;
                f.Y       -= 39;
                User.Frame = f;

                var p = Password.Frame;
                p.Y           -= 39;
                Password.Frame = p;

                var l = LoginButton.Frame;
                l.Y -= 39;
                LoginButton.Frame = l;
            }

            //Set some generic shadowing
            LoginButton.Layer.ShadowColor   = UIColor.Black.CGColor;
            LoginButton.Layer.ShadowOffset  = new SizeF(0, 1);
            LoginButton.Layer.ShadowOpacity = 0.3f;

            Domain.ShouldReturn = delegate {
                User.BecomeFirstResponder();
                return(true);
            };

            User.ShouldReturn = delegate {
                Password.BecomeFirstResponder();
                return(true);
            };
            Password.ShouldReturn = delegate {
                Password.ResignFirstResponder();
                LoginButton.SendActionForControlEvents(UIControlEvent.TouchUpInside);
                return(true);
            };


            ScrollView.ContentSize = new SizeF(View.Frame.Width, LoginButton.Frame.Bottom + 10f);
        }
Exemple #7
0
        public override void ViewDidLoad()
        {
            Title = "Login";
            NavigationItem.LeftBarButtonItem = new UIBarButtonItem(Images.BackButton, UIBarButtonItemStyle.Plain, (s, e) => ViewModel.DismissCommand.ExecuteIfCan());

            base.ViewDidLoad();

            ViewModel.LoginCommand.IsExecuting.Skip(1).Subscribe(x =>
            {
                if (x)
                {
                    _statusIndicatorService.Show("Logging in...");
                }
                else
                {
                    _statusIndicatorService.Hide();
                }
            });

            ViewModel.LoginCommand.ThrownExceptions.Subscribe(x =>
            {
                if (x is LoginService.TwoFactorRequiredException)
                {
                    _alertDialogService.PromptTextBox("Two Factor Authentication",
                                                      "This account requires a two factor authentication code", string.Empty, "Ok")
                    .ContinueWith(t =>
                    {
                        ViewModel.TwoFactor = t.Result;
                        ViewModel.LoginCommand.ExecuteIfCan();
                    }, TaskContinuationOptions.OnlyOnRanToCompletion);
                }
            });

            User.ValueChanged += (sender, args) => ViewModel.Username = User.Text;
            ViewModel.WhenAnyValue(x => x.Username).Subscribe(x => User.Text = x);

            Password.ValueChanged += (sender, args) => ViewModel.Password = Password.Text;
            ViewModel.WhenAnyValue(x => x.Password).Subscribe(x => Password.Text = x);

            Domain.ValueChanged += (sender, args) => ViewModel.Domain = Domain.Text;
            ViewModel.WhenAnyValue(x => x.Domain).Subscribe(x => Domain.Text = x);

            LoginButton.TouchUpInside += (sender, args) => ViewModel.LoginCommand.ExecuteIfCan();



            View.BackgroundColor = UIColor.FromRGB(239, 239, 244);
            Logo.Image           = Images.Logos.GitHub;

            if (ViewModel.IsEnterprise)
            {
                LoginButton.SetTitleColor(UIColor.White, UIControlState.Normal);
                LoginButton.SetBackgroundImage(Images.Buttons.BlackButton.CreateResizableImage(new UIEdgeInsets(18, 18, 18, 18)), UIControlState.Normal);
            }
            else
            {
                LoginButton.SetBackgroundImage(Images.Buttons.GreyButton.CreateResizableImage(new UIEdgeInsets(18, 18, 18, 18)), UIControlState.Normal);

                //Hide the domain, slide everything up
                Domain.Hidden = true;
                var f = User.Frame;
                f.Y       -= 39;
                User.Frame = f;

                var p = Password.Frame;
                p.Y           -= 39;
                Password.Frame = p;

                var l = LoginButton.Frame;
                l.Y -= 39;
                LoginButton.Frame = l;
            }

            //Set some generic shadowing
            LoginButton.Layer.ShadowColor   = UIColor.Black.CGColor;
            LoginButton.Layer.ShadowOffset  = new SizeF(0, 1);
            LoginButton.Layer.ShadowOpacity = 0.3f;

            Domain.ShouldReturn = delegate {
                User.BecomeFirstResponder();
                return(true);
            };

            User.ShouldReturn = delegate {
                Password.BecomeFirstResponder();
                return(true);
            };
            Password.ShouldReturn = delegate {
                Password.ResignFirstResponder();
                LoginButton.SendActionForControlEvents(UIControlEvent.TouchUpInside);
                return(true);
            };


            ScrollView.ContentSize = new SizeF(View.Frame.Width, LoginButton.Frame.Bottom + 10f);
        }
Exemple #8
0
        private bool CheckFields() //need to resize window on keyboard appereance, otherwise Snackbar will be covered
        {
            if (Sex.SelectedRowInComponent(0) == 0)
            {
                checkFormMessage = LangEnglish.SexEmpty;
                Sex.BecomeFirstResponder();
                return(false);
            }
            if (Email.Text.Trim() == "")
            {
                checkFormMessage = LangEnglish.EmailEmpty;
                Email.BecomeFirstResponder();
                return(false);
            }
            int lastDotPos = Email.Text.LastIndexOf(".");

            if (lastDotPos < Email.Text.Length - 5)
            {
                checkFormMessage = LangEnglish.EmailWrong;
                Email.BecomeFirstResponder();
                return(false);
            }
            //If the extension is long, the regex will freeze the app.
            Regex regex = new Regex(Constants.EmailFormat);

            if (!regex.IsMatch(Email.Text))
            {
                checkFormMessage = LangEnglish.EmailWrong;
                Email.BecomeFirstResponder();
                return(false);
            }
            if (Password.Text.Trim().Length < 6)
            {
                checkFormMessage = LangEnglish.PasswordShort;
                Password.BecomeFirstResponder();
                return(false);
            }
            if (Password.Text.Trim() != ConfirmPassword.Text.Trim())
            {
                checkFormMessage = LangEnglish.ConfirmPasswordNoMatch;
                ConfirmPassword.BecomeFirstResponder();
                return(false);
            }
            if (Username.Text.Trim() == "")
            {
                checkFormMessage = LangEnglish.UsernameEmpty;
                Username.BecomeFirstResponder();
                return(false);
            }
            if (Username.Text.Trim().Substring(Username.Text.Trim().Length - 1) == "\\")
            {
                checkFormMessage = LangEnglish.UsernameBackslash;
                return(false);
            }
            if (Name.Text.Trim() == "")
            {
                checkFormMessage = LangEnglish.NameEmpty;
                Name.BecomeFirstResponder();
                return(false);
            }
            if (Name.Text.Trim().Substring(Name.Text.Trim().Length - 1) == "\\")
            {
                checkFormMessage = LangEnglish.NameBackslash;
                return(false);
            }
            if (rc.uploadedImages.Count == 0)
            {
                checkFormMessage = LangEnglish.ImagesEmpty;
                Images.BecomeFirstResponder();
                return(false);
            }
            if (DescriptionText.Text.Trim() == "")
            {
                checkFormMessage = LangEnglish.DescriptionEmpty;
                DescriptionText.BecomeFirstResponder();
                return(false);
            }
            if (DescriptionText.Text.Substring(DescriptionText.Text.Length - 1) == "\\")
            {
                checkFormMessage = LangEnglish.DescriptionBackslash;
                return(false);
            }
            return(true);
        }
Exemple #9
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            Username.BackgroundColor       = ComponentBackgroundColor;
            Username.AttributedPlaceholder = new Foundation.NSAttributedString("Username", foregroundColor: ComponentPlaceholderColor);
            Username.TextColor             = ComponentTextColor;

            Password.BackgroundColor       = ComponentBackgroundColor;
            Password.AttributedPlaceholder = new Foundation.NSAttributedString("Password", foregroundColor: ComponentPlaceholderColor);
            Password.TextColor             = ComponentTextColor;

            Domain.BackgroundColor       = ComponentBackgroundColor;
            Domain.AttributedPlaceholder = new Foundation.NSAttributedString("Domain", foregroundColor: ComponentPlaceholderColor);
            Domain.TextColor             = ComponentTextColor;

            View.BackgroundColor = BackgroundColor;
            LogoImageView.Image  = Images.Logos.Enterprise;

            LoginButton.SetTitleColor(ComponentTextColor, UIControlState.Normal);
            LoginButton.SetBackgroundImage(Images.Buttons.BlackButton.CreateResizableImage(new UIEdgeInsets(18, 18, 18, 18)), UIControlState.Normal);

            //Set some generic shadowing
            LoginButton.Layer.ShadowColor   = UIColor.Black.CGColor;
            LoginButton.Layer.ShadowOffset  = new CGSize(0, 1);
            LoginButton.Layer.ShadowOpacity = 0.2f;

            this.ViewportObservable().Subscribe(x => ScrollView.Frame = x);

            ImageHeight.Constant = UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Pad ? 192 : 86;

            OnActivation(d => {
                d(Username.GetChangedObservable().Subscribe(x => ViewModel.Username         = x));
                d(this.WhenAnyValue(x => x.ViewModel.Username).Subscribe(x => Username.Text = x));
                d(Password.GetChangedObservable().Subscribe(x => ViewModel.Password         = x));
                d(this.WhenAnyValue(x => x.ViewModel.Password).Subscribe(x => Password.Text = x));
                d(Domain.GetChangedObservable().Subscribe(x => ViewModel.Domain             = x));
                d(this.WhenAnyValue(x => x.ViewModel.Domain).Subscribe(x => Domain.Text     = x));
                d(LoginButton.GetClickedObservable().InvokeCommand(ViewModel.LoginCommand));
                d(ViewModel.LoginCommand.CanExecuteObservable.Subscribe(x => LoginButton.Enabled = x));

                d(this.WhenAnyValue(x => x.ViewModel.ShowLoginOptionsCommand)
                  .ToBarButtonItem(UIBarButtonSystemItem.Action, x => NavigationItem.RightBarButtonItem = x));

                Domain.ShouldReturn = delegate {
                    Username.BecomeFirstResponder();
                    return(true);
                };

                Username.ShouldReturn = delegate {
                    Password.BecomeFirstResponder();
                    return(true);
                };

                Password.ShouldReturn = delegate {
                    Password.ResignFirstResponder();
                    LoginButton.SendActionForControlEvents(UIControlEvent.TouchUpInside);
                    return(true);
                };

                d(Disposable.Create(() => {
                    Domain.ShouldReturn   = null;
                    Username.ShouldReturn = null;
                    Password.ShouldReturn = null;
                }));
            });
        }
Exemple #10
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            var scopes = string.Join(", ", OctokitClientFactory.Scopes);

            DescriptionLabel.Text      = string.Format("The provided Personal Access Token must allow access to the following scopes: {0}", scopes);
            DescriptionLabel.TextColor = ComponentTextColor;

            AuthenticationSelector.TintColor = ComponentTextColor.ColorWithAlpha(0.9f);

            View.BackgroundColor = EnterpriseBackgroundColor;
            Logo.Image           = Images.Logos.EnterpriseMascot;

            LoginButton.SetBackgroundImage(Images.Buttons.BlackButton.CreateResizableImage(new UIEdgeInsets(18, 18, 18, 18)), UIControlState.Normal);
            LoginButton.Enabled = true;

            //Set some generic shadowing
            LoginButton.Layer.ShadowColor   = UIColor.Black.CGColor;
            LoginButton.Layer.ShadowOffset  = new CGSize(0, 1);
            LoginButton.Layer.ShadowOpacity = 0.2f;

            var attributes = new UIStringAttributes {
                ForegroundColor = UIColor.LightGray,
            };

            Domain.AttributedPlaceholder         = new NSAttributedString("Domain", attributes);
            User.AttributedPlaceholder           = new NSAttributedString("Username", attributes);
            Password.AttributedPlaceholder       = new NSAttributedString("Password", attributes);
            TokenTextField.AttributedPlaceholder = new NSAttributedString("Token", attributes);

            foreach (var i in new [] { Domain, User, Password, TokenTextField })
            {
                i.Layer.BorderColor  = UIColor.Black.CGColor;
                i.Layer.BorderWidth  = 1;
                i.Layer.CornerRadius = 4;
            }

            SelectAuthenticationScheme(0);

            Domain.ShouldReturn = delegate {
                User.BecomeFirstResponder();
                return(true);
            };

            User.ShouldReturn = delegate {
                Password.BecomeFirstResponder();
                return(true);
            };

            Password.ShouldReturn = delegate {
                Password.ResignFirstResponder();
                LoginButton.SendActionForControlEvents(UIControlEvent.TouchUpInside);
                return(true);
            };

            OnActivation(d =>
            {
                d(User.GetChangedObservable()
                  .Subscribe(x => ViewModel.Username = x));

                d(Password.GetChangedObservable()
                  .Subscribe(x => ViewModel.Password = x));

                d(Domain.GetChangedObservable()
                  .Subscribe(x => ViewModel.Domain = x));

                d(TokenTextField.GetChangedObservable()
                  .Subscribe(x => ViewModel.Token = x));

                d(LoginButton.GetClickedObservable()
                  .InvokeReactiveCommand(ViewModel.LoginCommand));

                d(AuthenticationSelector.GetChangedObservable()
                  .Do(x => ViewModel.TokenAuthentication = x == 1)
                  .Subscribe(SelectAuthenticationScheme));

                d(this.WhenAnyObservable(x => x.ViewModel.LoginCommand.CanExecute)
                  .Subscribe(x => LoginButton.Enabled = x));

                d(this.WhenAnyValue(x => x.ViewModel.TokenAuthentication)
                  .Subscribe(x => AuthenticationSelector.SelectedSegment = x ? 1 : 0));
            });
        }
Exemple #11
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            Title = "Login";

            View.BackgroundColor = EnterpriseBackgroundColor;
            Logo.Image           = Images.StashLogo.ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate);
            Logo.TintColor       = UIColor.FromRGB(239, 239, 244);

            LoginButton.BackgroundColor = UIColor.FromRGB(0x10, 0x40, 0x71);
            LoginButton.Enabled         = true;

            LoginButton.Layer.BorderColor  = UIColor.Black.CGColor;
            LoginButton.Layer.BorderWidth  = 1;
            LoginButton.Layer.CornerRadius = 4;

            var attributes = new UIStringAttributes
            {
                ForegroundColor = UIColor.LightGray
            };

            Domain.AttributedPlaceholder   = new NSAttributedString("Domain", attributes);
            User.AttributedPlaceholder     = new NSAttributedString("Username", attributes);
            Password.AttributedPlaceholder = new NSAttributedString("Password", attributes);

            foreach (var i in new[] { Domain, User, Password })
            {
                i.BackgroundColor    = UIColor.FromRGB(0x10, 0x40, 0x71);
                i.Layer.BorderColor  = UIColor.Black.CGColor;
                i.Layer.BorderWidth  = 1;
                i.Layer.CornerRadius = 4;
            }

            Domain.ShouldReturn = delegate
            {
                User.BecomeFirstResponder();
                return(true);
            };

            User.ShouldReturn = delegate
            {
                Password.BecomeFirstResponder();
                return(true);
            };
            Password.ShouldReturn = delegate
            {
                Password.ResignFirstResponder();
                LoginButton.SendActionForControlEvents(UIControlEvent.TouchUpInside);
                return(true);
            };

            OnActivation(d =>
            {
                User.GetChangedObservable().Subscribe(x => ViewModel.Username     = x).AddTo(d);
                Password.GetChangedObservable().Subscribe(x => ViewModel.Password = x).AddTo(d);
                Domain.GetChangedObservable().Subscribe(x => ViewModel.Domain     = x).AddTo(d);
                LoginButton.GetClickedObservable().BindCommand(ViewModel.LoginCommand).AddTo(d);
                ViewModel.WhenAnyValue(x => x.IsLoggingIn).SubscribeStatus("Logging in...").AddTo(d);
                ViewModel.LoginCommand.ThrownExceptions.Subscribe(HandleLoginException).AddTo(d);
            });
        }