Ejemplo n.º 1
0
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously
        async void OnPrintDetailOptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args)
#pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously
        {
            bool invalidatePreview = false;

            string optionId = args.OptionId as string;

            if (string.IsNullOrEmpty(optionId))
            {
                return;
            }

            if (optionId == "Margins")
            {
                PrintCustomItemListOptionDetails marginsOption = (PrintCustomItemListOptionDetails)sender.Options["Margins"];
                string marginsValue = marginsOption.Value.ToString();

                switch (marginsValue)
                {
                case "WideMargins":
                    ApplicationContentMarginTop  = 0.2;
                    ApplicationContentMarginLeft = 0.2;
                    break;

                case "ModerateMargins":
                    ApplicationContentMarginTop  = 0.1;
                    ApplicationContentMarginLeft = 0.1;
                    break;

                case "NarrowMargins":
                    ApplicationContentMarginTop  = 0.05;
                    ApplicationContentMarginLeft = 0.05;
                    break;
                }

                if (marginsValue == "NarrowMargins")
                {
                    marginsOption.WarningText = "Narrow margins may not be supported by some printers";
                }
                else
                {
                    marginsOption.WarningText = "";
                }

                invalidatePreview = true;
            }

            if (invalidatePreview)
            {
                //await PrintPage.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                //{
                Xamarin.Forms.Device.BeginInvokeOnMainThread(() =>
                {
                    printDocument.InvalidatePreview();
                });
                //});
            }
        }
Ejemplo n.º 2
0
        async void OnOptionDetailsOptionChanged(PrintTaskOptionDetails sender,
                                                PrintTaskOptionChangedEventArgs args)
        {
            if (args.OptionId == null)
            {
                return;
            }

            string optionId  = args.OptionId.ToString();
            string strValue  = sender.Options[optionId].Value.ToString();
            string errorText = String.Empty;
            double value     = 0;

            switch (optionId)
            {
            case "idFontSize":
                if (!Double.TryParse(strValue, out value))
                {
                    errorText = "Value must be numeric";
                }

                else if (value < 4 || value > 36)
                {
                    errorText = "Value must be between 4 and 36";
                }
                break;

            case "idLeftMargin":
            case "idTopMargin":
            case "idRightMargin":
            case "idBottomMargin":
                if (!Double.TryParse(strValue, out value))
                {
                    errorText = "Value must be numeric";
                }

                else if (value < 0 || value > 2)
                {
                    errorText = "Value must be between 0 and 2";
                }
                break;
            }

            sender.Options[optionId].ErrorText = errorText;

            // If there's no error, then invalidate the preview
            if (String.IsNullOrEmpty(errorText))
            {
                await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    printDocument.InvalidatePreview();
                });
            }
        }
Ejemplo n.º 3
0
        async void OnOptionDetailsOptionChanged(PrintTaskOptionDetails sender,
                                                PrintTaskOptionChangedEventArgs args)
        {
            if (args.OptionId == null)
            {
                return;
            }

            string optionId  = args.OptionId.ToString();
            string strValue  = sender.Options[optionId].Value.ToString();
            string errorText = String.Empty;

            switch (optionId)
            {
            case "idPrintRange":
                switch (strValue)
                {
                case "idPrintAll":
                    if (sender.DisplayedOptions.Contains("idCustomRangeEdit"))
                    {
                        sender.DisplayedOptions.Remove("idCustomRangeEdit");
                    }
                    break;

                case "idPrintCustom":
                    sender.DisplayedOptions.Add("idCustomRangeEdit");
                    break;
                }
                break;

            case "idCustomRangeEdit":
                // Check to see if CustomPageRange accepts this
                if (!new CustomPageRange(strValue, bookPages.Length).IsValid)
                {
                    errorText = "Use the form 2-4, 7, 9-11";
                }
                break;
            }

            sender.Options[optionId].ErrorText = errorText;

            // If no error, then invalidate the preview
            if (String.IsNullOrEmpty(errorText))
            {
                await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    printDocument.InvalidatePreview();
                });
            }
        }
Ejemplo n.º 4
0
        private void HandleCustomOptionsOptionChanged
            (PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args)
        {
            // Called in response to a setting being changed.
            // Determine if it was a custom setting and react accordingly
            var optionId = args.OptionId as String;

            if (LayoutOptionId.Equals(optionId) ||
                PreviewTypeOptionId.Equals(optionId) ||
                PageTitleOptionId.Equals(optionId))
            {
                // Invalidate the preview content to force it to refresh.
                // This has to happen on the UI thread.
                _dispatcher.RunAsync(CoreDispatcherPriority.Normal,
                                     () => _printDocument.InvalidatePreview());
            }
        }
Ejemplo n.º 5
0
        private async void printDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args)
        {
            string optionId = args.OptionId as string;

            if (string.IsNullOrEmpty(optionId))
            {
                return;
            }

            if (optionId == "PageContent")
            {
                await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                {
                    printDoc.InvalidatePreview();
                });
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// This is the event handler for PrintManager option changed.
        /// </summary>
        /// <param name="sender">PrintTaskOptionDetails</param>
        /// <param name="args">PrintTaskOptionChangedEventArgs </param>
        private static async void PrintDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args)
        {
            bool invalidatePreview = false;

            string optionId = args.OptionId as string;

            if (string.IsNullOrEmpty(optionId))
            {
                return;
            }

            if (optionId == "HeaderText")
            {
                PrintCustomTextOptionDetails headerText = (PrintCustomTextOptionDetails)sender.Options["HeaderText"];
                _headerText       = headerText.Value.ToString();
                invalidatePreview = true;
            }

            if (optionId == "FooterText")
            {
                PrintCustomTextOptionDetails footerText = (PrintCustomTextOptionDetails)sender.Options["FooterText"];
                _footerText       = footerText.Value.ToString();
                invalidatePreview = true;
            }

            if (optionId == "LeftMargin")
            {
                PrintCustomTextOptionDetails leftMargin = (PrintCustomTextOptionDetails)sender.Options["LeftMargin"];
                var leftMarginValueConverterArg         = double.TryParse(leftMargin.Value.ToString(), out var leftMarginValue);
                if (leftMarginValue > 50 || leftMarginValue < 0 || !leftMarginValueConverterArg)
                {
                    leftMargin.ErrorText = _resourceLoader.GetString("Print_ErrorMsg_ValueOutOfRange");
                    return;
                }
                else if (Math.Round(leftMarginValue, 1) != leftMarginValue)
                {
                    leftMargin.ErrorText = _resourceLoader.GetString("Print_ErrorMsg_DecimalOutOfRange");
                    return;
                }
                leftMargin.ErrorText          = string.Empty;
                _applicationContentMarginLeft = (Math.Round(leftMarginValue / 100, 3));
                invalidatePreview             = true;
            }

            if (optionId == "TopMargin")
            {
                PrintCustomTextOptionDetails topMargin = (PrintCustomTextOptionDetails)sender.Options["TopMargin"];
                var topMarginValueConverterArg         = double.TryParse(topMargin.Value.ToString(), out var topMarginValue);
                if (topMarginValue > 50 || topMarginValue < 0 || !topMarginValueConverterArg)
                {
                    topMargin.ErrorText = _resourceLoader.GetString("Print_ErrorMsg_ValueOutOfRange");
                    return;
                }
                else if (Math.Round(topMarginValue, 1) != topMarginValue)
                {
                    topMargin.ErrorText = _resourceLoader.GetString("Print_ErrorMsg_DecimalOutOfRange");
                    return;
                }
                topMargin.ErrorText          = string.Empty;
                _applicationContentMarginTop = (Math.Round(topMarginValue / 100, 3));
                invalidatePreview            = true;
            }

            if (invalidatePreview)
            {
                await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                {
                    _printDocument.InvalidatePreview();
                });
            }
        }