From 97cf5197cf5b882b2c689d8dc2b555f2edf8f418 Mon Sep 17 00:00:00 2001 From: Dave Wilson Date: Tue, 17 Mar 2015 19:50:07 -0700 Subject: Initial publish --- .../PrinterExtensionManager.cs | 121 +++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 print/v4PrintDriverSamples/PrinterExtensionSample/PrinterExtensionLibrary/PrinterExtensionManager.cs (limited to 'print/v4PrintDriverSamples/PrinterExtensionSample/PrinterExtensionLibrary/PrinterExtensionManager.cs') diff --git a/print/v4PrintDriverSamples/PrinterExtensionSample/PrinterExtensionLibrary/PrinterExtensionManager.cs b/print/v4PrintDriverSamples/PrinterExtensionSample/PrinterExtensionLibrary/PrinterExtensionManager.cs new file mode 100644 index 00000000..91815d6a --- /dev/null +++ b/print/v4PrintDriverSamples/PrinterExtensionSample/PrinterExtensionLibrary/PrinterExtensionManager.cs @@ -0,0 +1,121 @@ +// 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 an Adapter that wrap the PrinterExtensionManager COM Interop type. +// +using System; +using System.IO; +using System.Collections; +using System.Collections.Generic; +using System.Runtime; +using System.Runtime.InteropServices; +using Microsoft.Samples.Printing.PrinterExtension.Types; + +namespace Microsoft.Samples.Printing.PrinterExtension +{ + public class PrinterExtensionManager + { + public PrinterExtensionManager() + { + _manager = new PrinterExtensionLib.PrinterExtensionManager(); + } + + #region IPrinterExtensionManager methods + + /// + /// Maps to COM IPrinterExtensionManager::DisableEvents + /// + public void DisableEvents() + { + _manager.DisableEvents(); + } + + /// + /// Maps to COM IPrinterExtensionManager::EnableEvents + /// + public void EnableEvents(Guid printerDriverId) + { + _manager.EnableEvents(printerDriverId); + } + + /// + /// Maps to COM IPrinterExtensionEvent::OnDriverEvent + /// + public event EventHandler OnDriverEvent + { + add + { + if (_onDriverEvent == null) + { + _manager.OnDriverEvent += OnDriverEventReceiver; + } + _onDriverEvent += value; + } + remove + { + _onDriverEvent -= value; + if (_onDriverEvent == null) + { + _manager.OnDriverEvent -= OnDriverEventReceiver; + } + } + } + + /// + /// Maps to COM IPrinterExtensionEvent::OnPrinterQueuesEnumerated + /// + public event EventHandler OnPrinterQueuesEnumerated + { + add + { + if (_onPrinterQueuesEnumerated == null) + { + _manager.OnPrinterQueuesEnumerated += OnPrinterQueuesEnumeratedReceiver; + } + _onPrinterQueuesEnumerated += value; + } + remove + { + _onPrinterQueuesEnumerated -= value; + if (_onPrinterQueuesEnumerated == null) + { + _manager.OnPrinterQueuesEnumerated -= OnPrinterQueuesEnumeratedReceiver; + } + } + } + + #endregion + + #region Implementation details + + private void OnDriverEventReceiver(PrinterExtensionLib.IPrinterExtensionEventArgs pEventArgs) + { + if (_onDriverEvent != null) + { + _onDriverEvent(this, new PrinterExtensionEventArgs(pEventArgs)); + } + } + + private void OnPrinterQueuesEnumeratedReceiver(PrinterExtensionLib.IPrinterExtensionContextCollection contextCollection) + { + if (_onPrinterQueuesEnumerated != null) + { + _onPrinterQueuesEnumerated(this, new PrinterQueuesEnumeratedEventArgs(contextCollection)); + } + } + + private event EventHandler _onDriverEvent; + private event EventHandler _onPrinterQueuesEnumerated; + + private PrinterExtensionLib.PrinterExtensionManager _manager; + + #endregion + } +} \ No newline at end of file -- cgit v1.3.1