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); } }
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; })); }
private void ExecutePromptResultMultiInput(PromptConfigMultiInput config, NSMutableArray inputs) { config.OnAction?.Invoke(new PromptResultMultiInput(true, config.Inputs)); }
public abstract IDisposable PromptMultiInputs(PromptConfigMultiInput config);