Exemplo n.º 1
0
        public override IDisposable PromptMultiInputs(PromptConfigMultiInput config)
        {
            var activity = this.TopActivityFunc();

            if (activity is AppCompatActivity)
            {
                return(this.ShowDialog <PromptAppCompatDialogFragmentMultiInput, PromptConfigMultiInput>((AppCompatActivity)activity, config));
            }

            if (activity is FragmentActivity)
            {
                return(this.ShowDialog <PromptDialogFragmentMultiInput, PromptConfigMultiInput>((FragmentActivity)activity, config));
            }

            return(this.Show(activity, () => new PromptBuilderMultiInput().Build(activity, config)));
        }
        public virtual async Task <PromptResultMultiInput> PromptAsyncMultiInputs(PromptConfigMultiInput config, CancellationToken?cancelToken = default(CancellationToken?))
        {
            if (config.OnAction != null)
            {
                throw new ArgumentException(NO_ONACTION);
            }

            var tcs = new TaskCompletionSource <PromptResultMultiInput>();

            config.OnAction = x => tcs.TrySetResult(x);

            var disp = this.PromptMultiInputs(config);

            using (cancelToken?.Register(() => Cancel(disp, tcs)))
            {
                return(await tcs.Task);
            }
        }
Exemplo n.º 3
0
        public override IDisposable PromptMultiInputs(PromptConfigMultiInput config)
        {
            return(this.Present(() =>
            {
                var dlg = UIAlertController.Create(config.Title ?? String.Empty, config.Message, UIAlertControllerStyle.Alert);
                NSMutableArray txts = new NSMutableArray();

                if (config.IsCancellable)
                {
                    dlg.AddAction(UIAlertAction.Create(config.CancelText, UIAlertActionStyle.Cancel, x =>
                                                       config.OnAction?.Invoke(new PromptResultMultiInput(false, config.Inputs)
                                                                               )));
                }

                var btnOk = UIAlertAction.Create(config.OkText, UIAlertActionStyle.Default, x =>
                                                 ExecutePromptResultMultiInput(config, txts)
                                                 );
                dlg.AddAction(btnOk);
                dlg.AddTextField(x =>
                {
                    for (int i = 0; i < config.Inputs.Count - 1; i++)
                    {
                        UITextField txtFiled = new UITextField();
                        txtFiled = x;
                        txts.Add(txtFiled);

                        PromptInput pInput = config.Inputs[(int)i];

                        if (pInput.MaxLength != -1)
                        {
                            txtFiled.ShouldChangeCharacters = (field, replacePosition, replacement) =>
                            {
                                var updatedText = new StringBuilder(field.Text);
                                updatedText.Remove((int)replacePosition.Location, (int)replacePosition.Length);
                                updatedText.Insert((int)replacePosition.Location, replacement);
                                return updatedText.ToString().Length <= pInput.MaxLength;
                            };
                        }

                        if (config.OnTextChanged != null)
                        {
                            txtFiled.Ended += (sender, e) =>
                            {
                                var args = new PromptTextChangedArgs {
                                    Value = txtFiled.Text
                                };
                                config.OnTextChanged(args);
                                btnOk.Enabled = args.IsValid;
                                if (!txtFiled.Text.Equals(args.Value))
                                {
                                    txtFiled.Text = args.Value;
                                }
                            };
                        }
                        this.SetInputType(txtFiled, pInput.InputType);
                        txtFiled.Placeholder = pInput.Placeholder ?? String.Empty;
                    }
                });
                return dlg;
            }));
        }
Exemplo n.º 4
0
 private void ExecutePromptResultMultiInput(PromptConfigMultiInput config, NSMutableArray inputs)
 {
     config.OnAction?.Invoke(new PromptResultMultiInput(true, config.Inputs));
 }
 public abstract IDisposable PromptMultiInputs(PromptConfigMultiInput config);