summaryrefslogtreecommitdiff
path: root/print/v4PrintDriverSamples/PrinterExtensionSample/ExtensionSample/ValidationModalDialog.xaml.cs
diff options
context:
space:
mode:
authorDave Wilson <[email protected]>2015-03-17 19:50:07 -0700
committerDave Wilson <[email protected]>2015-03-17 19:50:07 -0700
commit97cf5197cf5b882b2c689d8dc2b555f2edf8f418 (patch)
tree46f3701832d70b420eb0fc0eb93261f9da45db3f /print/v4PrintDriverSamples/PrinterExtensionSample/ExtensionSample/ValidationModalDialog.xaml.cs
parentef1905bf1e8825bb31120dfb27e0daf3154d859a (diff)
Initial publish
Diffstat (limited to 'print/v4PrintDriverSamples/PrinterExtensionSample/ExtensionSample/ValidationModalDialog.xaml.cs')
-rw-r--r--print/v4PrintDriverSamples/PrinterExtensionSample/ExtensionSample/ValidationModalDialog.xaml.cs108
1 files changed, 108 insertions, 0 deletions
diff --git a/print/v4PrintDriverSamples/PrinterExtensionSample/ExtensionSample/ValidationModalDialog.xaml.cs b/print/v4PrintDriverSamples/PrinterExtensionSample/ExtensionSample/ValidationModalDialog.xaml.cs
new file mode 100644
index 00000000..0728c84c
--- /dev/null
+++ b/print/v4PrintDriverSamples/PrinterExtensionSample/ExtensionSample/ValidationModalDialog.xaml.cs
@@ -0,0 +1,108 @@
+// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
+// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
+// PARTICULAR PURPOSE.
+//
+// Copyright (c) Microsoft Corporation. All rights reserved
+//
+//
+// Abstract:
+//
+// This file contains as the interaction logic for ValidationModaldialog.
+// This dialog prevents the user from making changes to print ticket settings when asynchronous
+// validation is being performed.
+
+using System;
+using System.Collections.Generic;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+
+using Microsoft.Samples.Printing.PrinterExtension.Types;
+
+namespace Microsoft.Samples.Printing.PrinterExtension
+{
+ /// <summary>
+ /// Interaction logic for ValidationModalDialog.xaml
+ /// This dialog prevents the user from changing print preferences when validation is in progress.
+ /// </summary>
+ public partial class ValidationModalDialog : UserControl
+ {
+ public ValidationModalDialog()
+ {
+ InitializeComponent();
+ Visibility = Visibility.Hidden;
+ }
+
+ /// <summary>
+ /// Starts the asynchronous operation.
+ /// </summary>
+ /// <param name="asyncOperationToStart">Async operation context.</param>
+ public void StartAsyncOperation(IPrintSchemaAsyncOperation asyncOperationToStart)
+ {
+ this.asyncOperationContext = asyncOperationToStart;
+ Visibility = Visibility.Visible;
+ asyncOperationToStart.Completed += asyncOperation_Completed;
+ asyncOperationToStart.Start();
+ }
+
+
+ /// <summary>
+ /// This method is invoked from a different thread once asynchronous validation is completed.
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void asyncOperation_Completed(object sender, PrintSchemaAsyncOperationEventArgs e)
+ {
+ ValidationHResult = e.StatusHResult;
+ HideWindow();
+
+ if (Completed != null)
+ {
+ Completed(this, e);
+ }
+ }
+
+ /// <summary>
+ /// Hides the current window.
+ /// </summary>
+ private void HideWindow()
+ {
+ this.Dispatcher.Invoke(new Action(() =>
+ {
+ Visibility = Visibility.Hidden;
+ }));
+ }
+
+
+ /// <summary>
+ /// Result of the validation operation.
+ /// </summary>
+ public int ValidationHResult
+ {
+ get;
+ private set;
+ }
+
+ /// <summary>
+ /// Invoked then the "Cancel" button is clicked.
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void CancelValidationButton_Click(object sender, RoutedEventArgs e)
+ {
+ asyncOperationContext.Cancel();
+ HideWindow();
+ }
+
+ /// <summary>
+ /// Invoked when the asynchronous operation is completed.
+ /// </summary>
+ public event EventHandler<PrintSchemaAsyncOperationEventArgs> Completed;
+
+ /// <summary>
+ /// Asynchronous operation context.
+ /// </summary>
+ private IPrintSchemaAsyncOperation asyncOperationContext;
+ }
+}