/// <summary> ///Actual claim method task that claims and enables printer instance 2 asynchronously. It then adds the releasedevicerequested event handler as well to the claimed printer. /// </summary> private async Task <bool> ClaimAndEnablePrinter2() { if (printerInstance2 == null) { rootPage.NotifyUser("Cound not claim printer. Make sure you find printer first.", NotifyType.ErrorMessage); return(false); } if (printerInstance1 != null && claimedPrinter2 == null) { rootPage.NotifyUser("Trying to claim instance 2.", NotifyType.StatusMessage); claimedPrinter2 = await printerInstance2.ClaimPrinterAsync(); if (claimedPrinter2 != null) { claimedPrinter2.ReleaseDeviceRequested += ClaimedPrinter2_ReleaseDeviceRequested; rootPage.NotifyUser("Claimed Printer Instance 2", NotifyType.StatusMessage); if (!await claimedPrinter2.EnableAsync()) { rootPage.NotifyUser("Could not enable printer instance 2.", NotifyType.ErrorMessage); } else { return(true); } } else { rootPage.NotifyUser("Claim Printer instance 2 failed. Probably because instance 1 is holding on to it.", NotifyType.ErrorMessage); } } return(false); }
/// <summary> /// Reset all instances of claimed printer and remove event handlers. /// </summary> private void ResetTheScenarioState() { IsAnImportantTransactionInstance1 = true; IsAnImportantTransactionInstance2 = false; chkInstance1.IsChecked = true; chkInstance2.IsChecked = false; //Remove releasedevicerequested handler and dispose claimed printer object. if (claimedPrinter1 != null) { claimedPrinter1.ReleaseDeviceRequested -= ClaimedPrinter1_ReleaseDeviceRequested; claimedPrinter1.Dispose(); claimedPrinter1 = null; } if (claimedPrinter2 != null) { claimedPrinter2.ReleaseDeviceRequested -= ClaimedPrinter2_ReleaseDeviceRequested; claimedPrinter2.Dispose(); claimedPrinter2 = null; } if (printerInstance1 != null) { printerInstance1.Dispose(); printerInstance1 = null; } if (printerInstance2 != null) { printerInstance2.Dispose(); printerInstance2 = null; } }
private async Task <bool> PrintLine(string message, ClaimedPosPrinter claimedPrinter) { if (claimedPrinter == null) { rootPage.NotifyUser("Claimed printer object is null. Cannot print.", NotifyType.ErrorMessage); return(false); } if (claimedPrinter.Receipt == null) { rootPage.NotifyUser("No receipt printer object in claimed printer.", NotifyType.ErrorMessage); return(false); } ReceiptPrintJob job = claimedPrinter.Receipt.CreateJob(); job.PrintLine(message); if (await job.ExecuteAsync()) { rootPage.NotifyUser("Printed line", NotifyType.StatusMessage); return(true); } rootPage.NotifyUser("Was not able to print line", NotifyType.StatusMessage); return(false); }
public void ReleaseClaimedPrinter() { if (ClaimedPrinter != null) { ClaimedPrinter.ReleaseDeviceRequested -= ClaimedPrinter_ReleaseDeviceRequested; ClaimedPrinter.Dispose(); ClaimedPrinter = null; StateChanged?.Invoke(); } }
/// <summary> /// Default checkbox selection makes it an important transaction, hence we do not release claim when we get a release devicerequested event. /// </summary> async void ClaimedPrinter_ReleaseDeviceRequested(ClaimedPosPrinter sender, PosPrinterReleaseDeviceRequestedEventArgs args) { if (IsAnImportantTransaction) { await sender.RetainDeviceAsync(); } else { ResetTheScenarioState(); } }
private void ResetTheScenarioState() { //Remove releasedevicerequested handler and dispose claimed printer object. if (claimedPrinter != null) { claimedPrinter.ReleaseDeviceRequested -= ClaimedPrinter_ReleaseDeviceRequested; claimedPrinter.Dispose(); claimedPrinter = null; } printer = null; }
private ReceiptPrintJob GetCustomerFooter(ClaimedPosPrinter printer) { ReceiptPrintJob customerFooter = printer.Receipt.CreateJob(); customerFooter.PrintLine(); customerFooter.PrintLine("______________________"); customerFooter.PrintLine("Tip"); customerFooter.PrintLine(); customerFooter.PrintLine("Customer Copy"); LineFeedAndCutPaper(customerFooter); return(customerFooter); }
async void ClaimedPrinter2_ReleaseDeviceRequested(ClaimedPosPrinter sender, PosPrinterReleaseDeviceRequestedEventArgs args) { if (IsAnImportantTransactionInstance2) { await sender.RetainDeviceAsync(); } else { claimedPrinter2.ReleaseDeviceRequested -= ClaimedPrinter2_ReleaseDeviceRequested; claimedPrinter2.Dispose(); claimedPrinter2 = null; } }
/// <summary> /// Releases claim of printer instance 1 /// </summary> void Release1_Click(object sender, RoutedEventArgs e) { if (claimedPrinter1 != null) { claimedPrinter1.ReleaseDeviceRequested -= ClaimedPrinter1_ReleaseDeviceRequested; claimedPrinter1.Dispose(); claimedPrinter1 = null; rootPage.NotifyUser("Released claimed Instance 1", NotifyType.StatusMessage); } else { rootPage.NotifyUser("Instance 1 not claimed to release", NotifyType.StatusMessage); } }
/// <summary> /// Releases claim of printer instance 2 /// </summary> void Release2_Click(object sender, RoutedEventArgs e) { if (claimedPrinter2 != null) { claimedPrinter2.ReleaseDeviceRequested -= ClaimedPrinter2_ReleaseDeviceRequested; claimedPrinter2.Dispose(); claimedPrinter2 = null; rootPage.NotifyUser("Released claimed Instance 2", NotifyType.StatusMessage); } else { rootPage.NotifyUser("Instance 2 not claimed to release", NotifyType.StatusMessage); } }
/// <summary> /// If the "Retain device" checkbox is checked, we retain the device. /// Otherwise, we allow the other claimant to claim the device. /// </summary> private async void ClaimedPrinter_ReleaseDeviceRequested(ClaimedPosPrinter sender, PosPrinterReleaseDeviceRequestedEventArgs args) { if (IsAnImportantTransaction) { await sender.RetainDeviceAsync(); } else { await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { NotifyUser("Lost printer claim.", NotifyType.ErrorMessage); ReleaseClaimedPrinter(); }); } }
private ReceiptPrintJob GetMerchantFooter(ClaimedPosPrinter printer) { ReceiptPrintJob merchantFooter = printer.Receipt.CreateJob(); merchantFooter.PrintLine(); merchantFooter.PrintLine("______________________"); merchantFooter.PrintLine("Tip"); merchantFooter.PrintLine(); merchantFooter.PrintLine("______________________"); merchantFooter.PrintLine("Signature"); merchantFooter.PrintLine(); merchantFooter.PrintLine("Merchant Copy"); LineFeedAndCutPaper(merchantFooter); return(merchantFooter); }
/// <summary> /// Actual claim method task that claims the printer asynchronously /// </summary> private async Task <bool> ClaimPrinter() { if (claimedPrinter == null) { claimedPrinter = await printer.ClaimPrinterAsync(); if (claimedPrinter != null) { rootPage.NotifyUser("Claimed Printer", NotifyType.StatusMessage); } else { rootPage.NotifyUser("Claim Printer failed", NotifyType.ErrorMessage); return(false); } } return(true); }
async void ClaimedPrinter1_ReleaseDeviceRequested(ClaimedPosPrinter sender, PosPrinterReleaseDeviceRequestedEventArgs args) { if (IsAnImportantTransactionInstance1) { await sender.RetainDeviceAsync(); } else { claimedPrinter1.ReleaseDeviceRequested -= ClaimedPrinter1_ReleaseDeviceRequested; claimedPrinter1.Dispose(); claimedPrinter1 = null; if (printerInstance1 != null) { printerInstance1.Dispose(); printerInstance1 = null; } } }
/// <summary> /// Releases claim of printer instance 1 /// </summary> void Release1_Click(object sender, RoutedEventArgs e) { if (claimedPrinter1 != null) { claimedPrinter1.ReleaseDeviceRequested -= ClaimedPrinter1_ReleaseDeviceRequested; claimedPrinter1.Dispose(); claimedPrinter1 = null; if (printerInstance1 != null) { printerInstance1.Dispose(); printerInstance1 = null; } rootPage.NotifyUser("Released claimed Instance 1", NotifyType.StatusMessage); } else { rootPage.NotifyUser("Instance 1 not claimed to release", NotifyType.StatusMessage); } }
public ClaimedPosPrinterEvents(ClaimedPosPrinter This) { this.This = This; }
/// <summary> /// Actual claim method task that claims the printer asynchronously /// </summary> private async Task<bool> ClaimPrinter() { if (claimedPrinter == null) { claimedPrinter = await printer.ClaimPrinterAsync(); if (claimedPrinter != null) { claimedPrinter.ReleaseDeviceRequested += ClaimedPrinter_ReleaseDeviceRequested; rootPage.NotifyUser("Claimed Printer", NotifyType.StatusMessage); } else { rootPage.NotifyUser("Claim Printer failed", NotifyType.ErrorMessage); return false; } } return true; }
private ReceiptPrintJob GetMerchantFooter(ClaimedPosPrinter printer) { ReceiptPrintJob merchantFooter = printer.Receipt.CreateJob(); merchantFooter.PrintLine(); merchantFooter.PrintLine("______________________"); merchantFooter.PrintLine("Tip"); merchantFooter.PrintLine(); merchantFooter.PrintLine("______________________"); merchantFooter.PrintLine("Signature"); merchantFooter.PrintLine(); merchantFooter.PrintLine("Merchant Copy"); merchantFooter.CutPaper(); return merchantFooter; }
private ReceiptPrintJob GetCustomerFooter(ClaimedPosPrinter printer) { ReceiptPrintJob customerFooter = printer.Receipt.CreateJob(); customerFooter.PrintLine(); customerFooter.PrintLine("______________________"); customerFooter.PrintLine("Tip"); customerFooter.PrintLine(); customerFooter.PrintLine("Customer Copy"); customerFooter.CutPaper(); return customerFooter; }
/// <summary> ///Actual claim method task that claims and enables printer instance 2 asynchronously. It then adds the releasedevicerequested event handler as well to the claimed printer. /// </summary> private async Task<bool> ClaimAndEnablePrinter2() { if (printerInstance2 == null) { rootPage.NotifyUser("Cound not claim printer. Make sure you find printer first.", NotifyType.ErrorMessage); return false; } if (printerInstance1 != null && claimedPrinter2 == null) { rootPage.NotifyUser("Trying to claim instance 2.", NotifyType.StatusMessage); claimedPrinter2 = await printerInstance2.ClaimPrinterAsync(); if (claimedPrinter2 != null) { claimedPrinter2.ReleaseDeviceRequested += ClaimedPrinter2_ReleaseDeviceRequested; rootPage.NotifyUser("Claimed Printer Instance 2", NotifyType.StatusMessage); if (!await claimedPrinter2.EnableAsync()) { rootPage.NotifyUser("Could not enable printer instance 2.", NotifyType.ErrorMessage); } else { return true; } } else { rootPage.NotifyUser("Claim Printer instance 2 failed. Probably because instance 1 is holding on to it.", NotifyType.ErrorMessage); } } return false; }
/// <summary> /// Reset all instances of claimed printer and remove event handlers. /// </summary> private void ResetTheScenarioState() { IsAnImportantTransactionInstance1 = true; IsAnImportantTransactionInstance2 = false; chkInstance1.IsChecked = true; chkInstance2.IsChecked = false; //Remove releasedevicerequested handler and dispose claimed printer object. if (claimedPrinter1 != null) { claimedPrinter1.ReleaseDeviceRequested -= ClaimedPrinter1_ReleaseDeviceRequested; claimedPrinter1.Dispose(); claimedPrinter1 = null; } if (claimedPrinter2 != null) { claimedPrinter2.ReleaseDeviceRequested -= ClaimedPrinter2_ReleaseDeviceRequested; claimedPrinter2.Dispose(); claimedPrinter2 = null; } printerInstance1 = null; printerInstance2 = null; }
private async Task<bool> PrintLine(string message, ClaimedPosPrinter claimedPrinter) { if (claimedPrinter == null) { rootPage.NotifyUser("Claimed printer object is null. Cannot print.", NotifyType.ErrorMessage); return false; } if (claimedPrinter.Receipt == null) { rootPage.NotifyUser("No receipt printer object in claimed printer.", NotifyType.ErrorMessage); return false; } ReceiptPrintJob job = claimedPrinter.Receipt.CreateJob(); job.PrintLine(message); if (await job.ExecuteAsync()) { rootPage.NotifyUser("Printed line", NotifyType.StatusMessage); return true; } rootPage.NotifyUser("Was not able to print line", NotifyType.StatusMessage); return false; }