#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(); }); } }
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(); }); } }
/// <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); } }
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] ); }
/// <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(); }); } }
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(); // }); }
/// <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(); }); } }
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(); } }
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); } }
private void PrintDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args) { if (ShouldInvalidatePreview(args.OptionId)) { _printDocument.InvalidatePreview(); } }
private void PrintDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args) { System.Diagnostics.Debug.WriteLine(args.OptionId); }