Beispiel #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();
                });
                //});
            }
        }
        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();
                });
            }
        }
Beispiel #3
0
        async void printDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args)
        {
            // Listen for PageContent changes
            string optionId = args.OptionId as string;

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

            await rootPage.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, printDocument.InvalidatePreview);
        }
        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();
                });
            }
        }
Beispiel #5
0
        /// <summary>
        /// Option change event handler
        /// </summary>
        /// <param name="sender">PrintTaskOptionsDetails object</param>
        /// <param name="args">the event arguments containing the changed option id</param>
        void printDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args)
        {
            string optionId = args.OptionId as string;

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

            // Handle change in Page Range Option
            if (optionId == StandardPrintTaskOptions.CustomPageRanges)
            {
                PrintPageRangeOptionDetails pageRangeOption = (PrintPageRangeOptionDetails)sender.Options[optionId];
                ValidatePageRangeOption(pageRangeOption);
            }
        }
Beispiel #6
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());
            }
        }
        private void OnOptionChanged( PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs e )
        {
            var optionId = e.OptionId.ToString();
            Action<IPrintCustomOptionDetails> textOptionCallback;

            // try text options first
            if ( textCallbacks.TryGetValue( optionId, out textOptionCallback ) )
            {
                textOptionCallback( (IPrintCustomOptionDetails) sender.Options[optionId] );
                return;
            }

            Action<IPrintItemListOptionDetails> listOptionCallback;

            // then try list options
            if ( listCallbacks.TryGetValue( optionId, out listOptionCallback ) )
                listOptionCallback( (IPrintItemListOptionDetails) sender.Options[optionId] );
        }
Beispiel #8
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();
                });
            }
        }
Beispiel #9
0
        private async void PrintDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args)
        {
            System.Diagnostics.Debug.WriteLine(args.OptionId);
            CoreApplicationView newView = CoreApplication.CreateNewView();
            int newViewId = 0;
            await newView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                Frame frame = new Frame();
                frame.Navigate(typeof(SecondaryPage), null);
                Window.Current.Content = frame;
                // You have to activate the window in order to show it later.
                Window.Current.Activate();

                newViewId = ApplicationView.GetForCurrentView().Id;
            });

            //bool viewShown = await ApplicationViewSwitcher.TryShowAsStandaloneAsync(newViewId);

            //await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
            //    async  () =>
            //      {
            //          //ContentDialogPage dialog = new ContentDialogPage();
            //          //await dialog.ShowAsync();

            //      });
        }
Beispiel #10
0
        /// <summary>
        /// This is the event handler for whenever the user makes changes to the options.
        /// In this case, the options of interest are PageContent, Margins and Header.
        /// </summary>
        /// <param name="sender">PrintTaskOptionDetails</param>
        /// <param name="args">PrintTaskOptionChangedEventArgs</param>
        async void printDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args)
        {
            bool invalidatePreview = false;

            string optionId = args.OptionId as string;

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

            if (optionId == "PageContent")
            {
                invalidatePreview = true;
            }

            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 (optionId == "Header")
            {
                PrintCustomToggleOptionDetails headerOption = (PrintCustomToggleOptionDetails)sender.Options["Header"];
                showHeader        = (bool)headerOption.Value;
                invalidatePreview = true;
            }

            if (invalidatePreview)
            {
                await scenarioPage.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                {
                    printDocument.InvalidatePreview();
                });
            }
        }
Beispiel #11
0
        private async void printDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args)
        {
            string optionId = args.OptionId as string;

            if (string.IsNullOrEmpty(optionId))
            {
                return;
            }
            //await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
            //{
            //    printDoc.InvalidatePreview();
            //});

            if (optionId == "PageContent")
            {
                await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                {
                    printDoc.InvalidatePreview();
                });
            }
        }
        /// <summary>
        /// Option change event handler
        /// </summary>
        /// <param name="sender">PrintTaskOptionsDetails object</param>
        /// <param name="args">the event arguments containing the changed option id</param>
        async void printDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args)
        {
            if (args.OptionId == null)
            {
                return;
            }

            string optionId = args.OptionId.ToString();

            // Handle change in Page Range Option
            if (optionId == "PageRange")
            {
                IPrintOptionDetails pageRange = sender.Options[optionId];
                string pageRangeValue         = pageRange.Value.ToString();

                selectionMode = false;

                switch (pageRangeValue)
                {
                case "PrintRange":
                    // Add PageRangeEdit custom option to the option list
                    sender.DisplayedOptions.Add("PageRangeEdit");
                    pageRangeEditVisible = true;
                    await scenarioPage.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                    {
                        ShowContent(null);
                    });

                    break;

                case "PrintSelection":
                    await scenarioPage.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                    {
                        //Scenario4PageRange page = (Scenario4PageRange)scenarioPage;
                        PacketMessaging.Views.FormsPage page = (Scenario4PageRange)scenarioPage;
                        PageToPrint pageContent = (PageToPrint)page.PrintFrame.Content;
                        ShowContent(pageContent.TextContentBlock.SelectedText);
                    });

                    RemovePageRangeEdit(sender);
                    break;

                default:
                    await scenarioPage.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                    {
                        ShowContent(null);
                    });

                    RemovePageRangeEdit(sender);
                    break;
                }

                Refresh();
            }
            else if (optionId == "PageRangeEdit")
            {
                IPrintOptionDetails pageRange = sender.Options[optionId];
                // Expected range format (p1,p2...)*, (p3-p9)* ...
                if (!Regex.IsMatch(pageRange.Value.ToString(), @"^\s*\d+\s*(\-\s*\d+\s*)?(\,\s*\d+\s*(\-\s*\d+\s*)?)*$"))
                {
                    pageRange.ErrorText = "Invalid Page Range (eg: 1-3, 5)";
                }
                else
                {
                    pageRange.ErrorText = string.Empty;
                    try
                    {
                        GetPagesInRange(pageRange.Value.ToString());
                        Refresh();
                    }
                    catch (InvalidPageException ipex)
                    {
                        pageRange.ErrorText = ipex.Message;
                    }
                }
            }
        }
 private void PrintDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args)
 {
     if (args.OptionId == null)
     {
         // Invalidate the preview when switching printers.
         this.printDocument.InvalidatePreview();
     }
 }
Beispiel #14
0
        private async void PrintDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args)
        {
            var invalidatePreview = false;

            switch (args.OptionId)
            {
            case "LayoutOption":

                switch (sender.Options["LayoutOption"].Value as string)
                {
                case "Center":
                    this.printLayout = PrintPanel.LayoutOption.Centered;
                    break;

                case "AlignLeftOrTop":
                    this.printLayout = PrintPanel.LayoutOption.AlignLeftOrTop;
                    break;

                case "AlignRightOrBottom":
                    this.printLayout = PrintPanel.LayoutOption.AlignRightOrBottom;
                    break;
                }

                invalidatePreview = true;
                break;
            }

            if (invalidatePreview)
            {
                await this.caller.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                {
                    this.printDocument.InvalidatePreview();
                });
            }
        }
        /// <summary>
        /// Option change event handler
        /// </summary>
        /// <param name="sender">The print task option details for which an option changed.</param>
        /// <param name="args">The event arguments containing the id of the changed option.</param>
        private async void PrintDetailedOptionsOptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args)
        {
            bool invalidatePreview = false;

            // For this scenario we are interested only when the 2 custom options change (photoSize & scaling) in order to trigger a preview refresh.
            // Default options that change page aspect will trigger preview invalidation (refresh) automatically.
            // It is safe to ignore verifying other options and(or) combinations here because during Paginate event(CreatePrintPreviewPages) we check if the PageDescription changed.
            if (args.OptionId == null)
            {
                return;
            }

            string optionId = args.OptionId.ToString();

            if (optionId == "photoSize")
            {
                IPrintOptionDetails photoSizeOption = sender.Options[optionId];
                string photoSizeValue = photoSizeOption.Value as string;

                if (!string.IsNullOrEmpty(photoSizeValue))
                {
                    switch (photoSizeValue)
                    {
                    case "SizeFullPage":
                        photoSize = PhotoSize.SizeFullPage;
                        break;

                    case "Size4x6":
                        photoSize = PhotoSize.Size4x6;
                        break;

                    case "Size5x7":
                        photoSize = PhotoSize.Size5x7;
                        break;

                    case "Size8x10":
                        photoSize = PhotoSize.Size8x10;
                        break;
                    }
                    invalidatePreview = true;
                }
            }

            if (optionId == "scaling")
            {
                IPrintOptionDetails scalingOption = sender.Options[optionId];
                string scalingValue = scalingOption.Value as string;

                if (!string.IsNullOrEmpty(scalingValue))
                {
                    switch (scalingValue)
                    {
                    case "Crop":
                        photoScale = Scaling.Crop;
                        break;

                    case "ShrinkToFit":
                        photoScale = Scaling.ShrinkToFit;
                        break;
                    }
                    invalidatePreview = true;
                }
            }

            // Invalidate preview if one of the 2 options (photoSize, scaling) changed.
            if (invalidatePreview)
            {
                await scenarioPage.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, printDocument.InvalidatePreview);
            }
        }
Beispiel #16
0
 private void PrintDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args)
 {
     if (ShouldInvalidatePreview(args.OptionId))
     {
         _printDocument.InvalidatePreview();
     }
 }
Beispiel #17
0
 private void PrintDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args)
 {
     System.Diagnostics.Debug.WriteLine(args.OptionId);
 }