示例#1
0
 public async Task <int> SelectChoiceAsync(
     string title,
     IList <string> choices,
     string confirmingText = "Ok",
     string dismissiveText = "Cancel",
     MaterialConfirmationDialogConfiguration configuration = null)
 {
     return((int)await MaterialConfirmationDialog.ShowSelectChoiceAsync(title, choices, confirmingText, dismissiveText, configuration));
 }
 public async Task <int[]> SelectChoicesAsync(
     string title,
     IList choices,
     IList <int> selectedIndices,
     string choiceBindingName = null,
     string confirmingText    = "Ok",
     string dismissiveText    = "Cancel",
     MaterialConfirmationDialogConfiguration configuration = null)
 {
     return((int[])await MaterialConfirmationDialog.ShowSelectChoicesAsync(title, choices, selectedIndices, choiceBindingName, confirmingText, dismissiveText, configuration));
 }
 public async Task <int> SelectChoiceAsync(
     string title,
     IList <string> choices,
     int selectedIndex,
     string confirmingText = "Ok",
     string dismissiveText = "Cancel",
     MaterialConfirmationDialogConfiguration configuration = null,
     bool closeOnSelection = false)
 {
     return((int)await MaterialConfirmationDialog.ShowSelectChoiceAsync(title, choices, selectedIndex, confirmingText, dismissiveText, configuration, closeOnSelection));
 }
示例#4
0
        private void ConfigureStylesheets()
        {
            var alertDialogConfiguration = new MaterialAlertDialogConfiguration
            {
                BackgroundColor   = XF.Material.Forms.Material.GetResource <Color>(MaterialConstants.Color.PRIMARY),
                TitleTextColor    = Color.White,
                TitleFontFamily   = XF.Material.Forms.Material.GetResource <OnPlatform <string> >("FontFamily.RobotoRegular"),
                MessageTextColor  = Color.White,
                MessageFontFamily = XF.Material.Forms.Material.GetResource <OnPlatform <string> >("FontFamily.RobotoRegular"),
                TintColor         = Color.White,
                ButtonFontFamily  = XF.Material.Forms.Material.GetResource <OnPlatform <string> >("FontFamily.RobotoRegular"),
                CornerRadius      = 8,
                ScrimColor        = Color.FromHex("#011A27").MultiplyAlpha(0.32),
                ButtonAllCaps     = false
            };

            var alertconfirmationDialogConfiguration = new MaterialConfirmationDialogConfiguration
            {
                BackgroundColor  = XF.Material.Forms.Material.GetResource <Color>(MaterialConstants.Color.PRIMARY),
                TitleTextColor   = Color.White,
                TitleFontFamily  = XF.Material.Forms.Material.GetResource <OnPlatform <string> >("FontFamily.RobotoRegular"),
                TintColor        = Color.White,
                ButtonFontFamily = XF.Material.Forms.Material.GetResource <OnPlatform <string> >("FontFamily.RobotoRegular"),
                CornerRadius     = 8,
                ScrimColor       = Color.FromHex("#011A27").MultiplyAlpha(0.32),
                ButtonAllCaps    = false
            };

            var alertloadingDialogConfiguration = new MaterialLoadingDialogConfiguration
            {
                BackgroundColor   = XF.Material.Forms.Material.GetResource <Color>(MaterialConstants.Color.PRIMARY),
                MessageTextColor  = Color.White,
                TintColor         = Color.White,
                MessageFontFamily = XF.Material.Forms.Material.GetResource <OnPlatform <string> >("FontFamily.RobotoRegular"),
                CornerRadius      = 8,
                ScrimColor        = Color.FromHex("#011A27").MultiplyAlpha(0.32)
            };

            var alertsimpleDialogConfiguration = new MaterialSimpleDialogConfiguration
            {
                BackgroundColor = XF.Material.Forms.Material.GetResource <Color>(MaterialConstants.Color.PRIMARY),
                TitleTextColor  = Color.White,
                TitleFontFamily = XF.Material.Forms.Material.GetResource <OnPlatform <string> >("FontFamily.RobotoRegular"),
                TintColor       = Color.White,
                TextFontFamily  = XF.Material.Forms.Material.GetResource <OnPlatform <string> >("FontFamily.RobotoRegular"),
                CornerRadius    = 8,
                ScrimColor      = Color.FromHex("#011A27").MultiplyAlpha(0.32),
                TextColor       = Color.White
            };

            MaterialDialog.Instance.SetGlobalStyles(alertDialogConfiguration, alertloadingDialogConfiguration, null, alertsimpleDialogConfiguration, alertconfirmationDialogConfiguration);
        }
示例#5
0
        private void Configure(MaterialConfirmationDialogConfiguration configuration)
        {
            MaterialConfirmationDialogConfiguration preferredConfig = configuration ?? GlobalConfiguration;

            if (preferredConfig == null)
            {
                return;
            }
            this.BackgroundColor           = preferredConfig.ScrimColor;
            this.Container.CornerRadius    = preferredConfig.CornerRadius;
            this.Container.BackgroundColor = preferredConfig.BackgroundColor;
            this.PositiveButton.TextColor  = this.NegativeButton.TextColor = preferredConfig.TintColor;
            this.PositiveButton.AllCaps    = this.NegativeButton.AllCaps = preferredConfig.ButtonAllCaps;
            this.PositiveButton.FontFamily = this.NegativeButton.FontFamily = preferredConfig.ButtonFontFamily;
            this.Container.Margin          = preferredConfig.Margin == default ? Material.GetResource <Thickness>("Material.Dialog.Margin") : preferredConfig.Margin;
        }
示例#6
0
        private void Configure(MaterialConfirmationDialogConfiguration configuration)
        {
            _preferredConfig = configuration ?? GlobalConfiguration;

            if (_preferredConfig != null)
            {
                this.BackgroundColor      = _preferredConfig.ScrimColor;
                Container.CornerRadius    = _preferredConfig.CornerRadius;
                Container.BackgroundColor = _preferredConfig.BackgroundColor;
                DialogTitle.TextColor     = _preferredConfig.TitleTextColor;
                DialogTitle.FontFamily    = _preferredConfig.TitleFontFamily;
                PositiveButton.TextColor  = NegativeButton.TextColor = _preferredConfig.TintColor;
                PositiveButton.AllCaps    = NegativeButton.AllCaps = _preferredConfig.ButtonAllCaps;
                PositiveButton.FontFamily = NegativeButton.FontFamily = _preferredConfig.ButtonFontFamily;
            }
        }
示例#7
0
 public void SetGlobalStyles(
     MaterialAlertDialogConfiguration dialogConfiguration                    = null,
     MaterialLoadingDialogConfiguration loadingDialogConfiguration           = null,
     MaterialSnackbarConfiguration snackbarConfiguration                     = null,
     MaterialSimpleDialogConfiguration simpleDialogConfiguration             = null,
     MaterialConfirmationDialogConfiguration confirmationDialogConfiguration = null,
     MaterialInputDialogConfiguration inputDialogConfiguration               = null,
     MaterialAlertDialogConfiguration customContentDialogConfiguration       = null)
 {
     MaterialAlertDialog.GlobalConfiguration        = dialogConfiguration;
     MaterialLoadingDialog.GlobalConfiguration      = loadingDialogConfiguration;
     MaterialSnackbar.GlobalConfiguration           = snackbarConfiguration;
     MaterialSimpleDialog.GlobalConfiguration       = simpleDialogConfiguration;
     MaterialConfirmationDialog.GlobalConfiguration = confirmationDialogConfiguration;
     MaterialInputDialog.GlobalConfiguration        = inputDialogConfiguration;
     MaterialDialogFragment.GlobalConfiguration     = customContentDialogConfiguration;
 }
        private void Configure(MaterialConfirmationDialogConfiguration configuration)
        {
            _preferredConfig = configuration ?? GlobalConfiguration;

            if (_preferredConfig == null)
            {
                return;
            }
            this.BackgroundColor      = _preferredConfig.ScrimColor;
            Container.CornerRadius    = _preferredConfig.CornerRadius;
            Container.BackgroundColor = _preferredConfig.BackgroundColor;
            DialogTitle.TextColor     = _preferredConfig.TitleTextColor;
            DialogTitle.FontFamily    = _preferredConfig.TitleFontFamily;
            PositiveButton.TextColor  = NegativeButton.TextColor = _preferredConfig.TintColor;
            PositiveButton.AllCaps    = NegativeButton.AllCaps = _preferredConfig.ButtonAllCaps;
            PositiveButton.FontFamily = NegativeButton.FontFamily = _preferredConfig.ButtonFontFamily;
            Container.Margin          = _preferredConfig.Margin == default ? Material.GetResource <Thickness>("Material.Dialog.Margin") : _preferredConfig.Margin;
        }
        public async Task <int?> SelectChoiceAsync(
            string title,
            IList choices,
            string choiceBindingName = null,
            string confirmingText    = "Ok",
            string dismissiveText    = "Cancel",
            MaterialConfirmationDialogConfiguration configuration = null)
        {
            var result = await MaterialConfirmationDialog.ShowSelectChoiceAsync(title, choices, choiceBindingName, confirmingText, dismissiveText, configuration);

            if (result != null)
            {
                int[] choice = (int[])result;
                return(choice[0]);
            }
            else
            {
                return(null);
            }
        }
示例#10
0
 internal MaterialConfirmationDialog(MaterialConfirmationDialogConfiguration configuration)
 {
     this.InitializeComponent();
     this.Configure(configuration);
 }
        public static async Task <object> ShowSelectChoiceAsync(string title, IList <string> choices, string confirmingText = "Ok", string dismissiveText = "Cancel", MaterialConfirmationDialogConfiguration configuration = null, bool closeOnSelection = false)
        {
            using var dialog = new MaterialConfirmationDialog(configuration)
                  {
                      InputTaskCompletionSource = new TaskCompletionSource <object>(),
                      _radioButtonGroup         = new MaterialRadioButtonGroup
                      {
                          HorizontalSpacing = 20,
                          Choices           = choices ?? throw new ArgumentNullException(nameof(choices)),
                      }
                  };

            if (dialog._preferredConfig != null)
            {
                dialog._radioButtonGroup.SelectedColor   = dialog._preferredConfig.ControlSelectedColor;
                dialog._radioButtonGroup.UnselectedColor = dialog._preferredConfig.ControlUnselectedColor;
                dialog._radioButtonGroup.FontFamily      = dialog._preferredConfig.TextFontFamily;
                dialog._radioButtonGroup.TextColor       = dialog._preferredConfig.TextColor;
            }

            if (closeOnSelection)
            {
                dialog.PositiveButton.IsVisible = false;
                dialog._radioButtonGroup.SelectedIndexChanged += (sender, args) => dialog.PositiveButton_Clicked(sender, EventArgs.Empty);
            }

            dialog._radioButtonGroup.ShouldShowScrollbar = true;
            dialog.DialogTitle.Text    = !string.IsNullOrEmpty(title) ? title : throw new ArgumentNullException(nameof(title));
            dialog.PositiveButton.Text = confirmingText;
            dialog.NegativeButton.Text = dismissiveText;
            dialog.container.Content   = dialog._radioButtonGroup;
            await dialog.ShowAsync().ConfigureAwait(false);

            return(await dialog.InputTaskCompletionSource.Task.ConfigureAwait(false));
        }
 public static void SetDialogConfiguration(BindableObject bindable, MaterialConfirmationDialogConfiguration configuration)
 {
     bindable.SetValue(DialogConfigurationProperty, configuration);
 }
        public static async Task <object> ShowSelectChoicesAsync(string title, IList <string> choices, IList <int> selectedIndices, string confirmingText = "Ok", string dismissiveText = "Cancel", MaterialConfirmationDialogConfiguration configuration = null)
        {
            var dialog = new MaterialConfirmationDialog(configuration)
            {
                InputTaskCompletionSource = new TaskCompletionSource <object>(),
                _checkboxGroup            = new MaterialCheckboxGroup
                {
                    HorizontalSpacing = 20,
                    Choices           = choices ?? throw new ArgumentNullException(nameof(choices)),
                                              SelectedIndices = selectedIndices.ToList()
                }
            };

            if (dialog._preferredConfig != null)
            {
                dialog._checkboxGroup.SelectedColor   = dialog._preferredConfig.ControlSelectedColor;
                dialog._checkboxGroup.UnselectedColor = dialog._preferredConfig.ControlUnselectedColor;
                dialog._checkboxGroup.FontFamily      = dialog._preferredConfig.TextFontFamily;
                dialog._checkboxGroup.TextColor       = dialog._preferredConfig.TextColor;
            }

            dialog._checkboxGroup.ShouldShowScrollbar = true;
            dialog._isMultiChoice           = true;
            dialog.DialogTitle.Text         = !string.IsNullOrEmpty(title) ? title : throw new ArgumentNullException(nameof(title));
            dialog.container.Content        = dialog._checkboxGroup;
            dialog.PositiveButton.IsEnabled = true;
            dialog.PositiveButton.Text      = confirmingText;
            dialog.NegativeButton.Text      = dismissiveText;
            await dialog.ShowAsync();

            return(await dialog.InputTaskCompletionSource.Task);
        }
        public static async Task <object> ShowSelectChoiceAsync(string title, IList choices, string choiceBindingName = null, string confirmingText = "Ok", string dismissiveText = "Cancel", MaterialConfirmationDialogConfiguration configuration = null)
        {
            var radioButtonGroup = new MaterialRadioButtonGroup
            {
                HorizontalSpacing  = 20,
                ChoicesBindingName = choiceBindingName
            };

            radioButtonGroup.Choices = choices ?? throw new ArgumentNullException(nameof(choices));

            var dialog = new MaterialConfirmationDialog(configuration)
            {
                InputTaskCompletionSource = new TaskCompletionSource <object>(),
                _controlGroup             = radioButtonGroup
            };

            if (dialog._preferredConfig != null)
            {
                dialog._controlGroup.SelectedColor   = dialog._preferredConfig.ControlSelectedColor;
                dialog._controlGroup.UnselectedColor = dialog._preferredConfig.ControlUnselectedColor;
                dialog._controlGroup.FontFamily      = dialog._preferredConfig.TextFontFamily;
                dialog._controlGroup.TextColor       = dialog._preferredConfig.TextColor;
            }

            dialog._controlGroup.ShouldShowScrollbar = true;
            dialog.DialogTitle.Text         = !string.IsNullOrEmpty(title) ? title : throw new ArgumentNullException(nameof(title));
            dialog.PositiveButton.IsEnabled = false;
            dialog.PositiveButton.Text      = confirmingText.ToUpper();
            dialog.NegativeButton.Text      = dismissiveText.ToUpper();
            dialog.container.Content        = dialog._controlGroup;
            await dialog.ShowAsync();

            return(await dialog.InputTaskCompletionSource.Task);
        }
示例#15
0
        public static async Task <DateTime?> Show(string title = "Select Date", string confirmingText = "Ok", string dismissiveText = "Cancel", MaterialConfirmationDialogConfiguration configuration = null)
        {
            using (MaterialDatePicker dialog = new MaterialDatePicker(title, confirmingText.ToUpper(), dismissiveText.ToUpper(), configuration)
            {
                PositiveButton = { IsEnabled = false }
            })
            {
                await dialog.ShowAsync();

                return(await dialog.InputTaskCompletionSource.Task);
            }
        }
 /// <summary>
 /// Shows a confirmation dialog that allows the user to select one of the listed choices. Returns the index of the selected choice.
 /// </summary>
 /// <param name="title">The title of the confirmation dialog. This parameter must not be null or empty.</param>
 /// <param name="choices">The list of choices the user will choose from.</param>
 /// <exception cref="ArgumentNullException" />
 public static async Task <int> ShowSelectChoiceAsync(string title, IList <string> choices, MaterialConfirmationDialogConfiguration configuration = null, bool closeOnSelection = false)
 {
     return((int)await MaterialConfirmationDialog.ShowSelectChoiceAsync(title, choices, null, null, configuration, closeOnSelection));
 }
示例#17
0
 /// <summary>
 /// Shows a confirmation dialog that allows the user to select one of the listed choices. Returns the index of the selected choice. If none was selected, returns -1.
 /// </summary>
 /// <param name="title">The title of the confirmation dialog. This parameter must not be null or empty.</param>
 /// <param name="choices">The list of choices the user will choose from.</param>
 /// <param name="selectedIndex">The currently selected index.</param>
 /// <param name="configuration">The style of the confirmation dialog.</param>
 /// <exception cref="ArgumentNullException" />
 /// <exception cref="IndexOutOfRangeException" />
 public async Task <int> SelectChoiceAsync(string title, IList <string> choices, int selectedIndex, MaterialConfirmationDialogConfiguration configuration = null)
 {
     return((int)await MaterialConfirmationDialog.ShowSelectChoiceAsync(title, choices, selectedIndex, configuration));
 }
示例#18
0
 /// <summary>
 /// Sets the global styles for <see cref="MaterialAlertDialog"/>, <see cref="MaterialLoadingDialog"/>, <see cref="MaterialSimpleDialog"/>, <see cref="MaterialConfirmationDialog"/>, and <see cref="MaterialSnackbar"/>. Parameters can be null.
 /// </summary>
 /// <param name="dialogConfiguration">Global style for <see cref="MaterialAlertDialog"/>.</param>
 /// <param name="loadingDialogConfiguration">Global style for <see cref="MaterialLoadingDialog"/>.</param>
 /// <param name="snackbarConfiguration">Global style for <see cref="MaterialSnackbar"/>.</param>
 /// <param name="simpleDialogConfiguration">Global style for <see cref="MaterialSimpleDialog"/>.</param>
 /// <param name="confirmationDialogConfiguration">Global style for <see cref="MaterialConfirmationDialog"/>.</param>
 /// <param name="inputDialogConfiguration">Global style for <see cref="MaterialInputDialog"/>.</param>
 public void SetGlobalStyles(MaterialAlertDialogConfiguration dialogConfiguration, MaterialLoadingDialogConfiguration loadingDialogConfiguration, MaterialSnackbarConfiguration snackbarConfiguration, MaterialSimpleDialogConfiguration simpleDialogConfiguration, MaterialConfirmationDialogConfiguration confirmationDialogConfiguration, MaterialInputDialogConfiguration inputDialogConfiguration)
 {
     MaterialAlertDialog.GlobalConfiguration        = dialogConfiguration;
     MaterialLoadingDialog.GlobalConfiguration      = loadingDialogConfiguration;
     MaterialSnackbar.GlobalConfiguration           = snackbarConfiguration;
     MaterialSimpleDialog.GlobalConfiguration       = simpleDialogConfiguration;
     MaterialConfirmationDialog.GlobalConfiguration = confirmationDialogConfiguration;
     MaterialInputDialog.GlobalConfiguration        = inputDialogConfiguration;
 }
 /// <summary>
 /// Shows a confirmation dialog that allows the user to select any of the listed choices. Returns the indices of the selected choices.
 /// </summary>
 /// <param name="title">The title of the confirmation dialog. This parameter must not be null or empty.</param>
 /// <param name="choices">The list of choices the user will choose from.</param>
 /// <exception cref="ArgumentNullException" />
 public static async Task <int[]> ShowSelectChoicesAsync(string title, IList <string> choices, MaterialConfirmationDialogConfiguration configuration = null)
 {
     return((int[])await MaterialConfirmationDialog.ShowSelectChoicesAsync(title, choices, null, null, configuration));
 }
示例#20
0
        public static async Task <object> ShowSelectChoicesAsync(string title, IList <string> choices, MaterialConfirmationDialogConfiguration configuration)
        {
            var dialog = new MaterialConfirmationDialog(configuration)
            {
                InputTaskCompletionSource = new TaskCompletionSource <object>()
            };

            dialog._checkboxGroup = new MaterialCheckboxGroup
            {
                HorizontalSpacing = 20,
                Choices           = choices ?? throw new ArgumentNullException(nameof(choices))
            };

            if (dialog._preferredConfig != null)
            {
                dialog._checkboxGroup.SelectedColor   = dialog._preferredConfig.ControlSelectedColor;
                dialog._checkboxGroup.UnselectedColor = dialog._preferredConfig.ControlUnselectedColor;
                dialog._checkboxGroup.FontFamily      = dialog._preferredConfig.TextFontFamily;
                dialog._checkboxGroup.TextColor       = dialog._preferredConfig.TextColor;
            }

            dialog._checkboxGroup.ShouldShowScrollbar = true;
            dialog._isMultiChoice    = true;
            dialog.DialogTitle.Text  = !string.IsNullOrEmpty(title) ? title : throw new ArgumentNullException(nameof(title));
            dialog.container.Content = dialog._checkboxGroup;
            await dialog.ShowAsync();

            return(await dialog.InputTaskCompletionSource.Task);
        }
示例#21
0
 internal MaterialDatePicker(MaterialConfirmationDialogConfiguration configuration = null)
 {
     this.InitializeComponent();
     this.Configure(configuration);
     this.Container.Margin = 25;
 }
示例#22
0
        internal MaterialDatePicker(string title = "Select Date", string confirmingText = "Ok", string dismissiveText = "Cancel", MaterialConfirmationDialogConfiguration configuration = null) : this(configuration)
        {
            this.InputTaskCompletionSource = new TaskCompletionSource <DateTime?>();

            this.Calendar.Title         = title;
            this.PositiveButton.Text    = confirmingText.ToUpper();
            this.NegativeButton.Text    = dismissiveText.ToUpper();
            this.PositiveButton.Command = new Command(async() =>
            {
                await this.DismissAsync();
                this.InputTaskCompletionSource?.TrySetResult(this.Calendar.SelectedDate);
            });
            this.NegativeButton.Command = new Command(async() =>
            {
                await this.DismissAsync();
                this.InputTaskCompletionSource?.TrySetResult(null);
            });
        }
示例#23
0
        public static async Task <object> ShowSelectChoiceAsync(string title, IList <string> choices, int selectedIndex, MaterialConfirmationDialogConfiguration configuration)
        {
            var dialog = new MaterialConfirmationDialog(configuration)
            {
                InputTaskCompletionSource = new TaskCompletionSource <object>()
            };

            dialog._radioButtonGroup = new MaterialRadioButtonGroup
            {
                HorizontalSpacing                                   = 20,
                Choices                                             = choices ?? throw new ArgumentNullException(nameof(choices)),
                                                      SelectedIndex = selectedIndex
            };

            if (dialog._preferredConfig != null)
            {
                dialog._radioButtonGroup.SelectedColor   = dialog._preferredConfig.ControlSelectedColor;
                dialog._radioButtonGroup.UnselectedColor = dialog._preferredConfig.ControlUnselectedColor;
                dialog._radioButtonGroup.FontFamily      = dialog._preferredConfig.TextFontFamily;
                dialog._radioButtonGroup.TextColor       = dialog._preferredConfig.TextColor;
            }

            dialog.DialogTitle.Text         = !string.IsNullOrEmpty(title) ? title : throw new ArgumentNullException(nameof(title));
            dialog.container.Content        = dialog._radioButtonGroup;
            dialog.PositiveButton.IsEnabled = true;
            await dialog.ShowAsync();

            return(await dialog.InputTaskCompletionSource.Task);
        }