private void BeginPrintingDailySummary(string pdfFileName) { ThreadStart tsPrinting = new ThreadStart(delegate { LoadingView printing = new LoadingView(); printing.Show("Printing, please wait"); var printSummaryDone = new ManualResetEvent(false); bool printSummaryOK = false; ThreadStart tsPrintSummary = new ThreadStart(delegate { printSummaryOK = MyConstants.PrintPDFFile(pdfFileName); printSummaryDone.Set(); }); Thread tPrintSummary = new Thread(tsPrintSummary); tPrintSummary.Start(); printSummaryDone.WaitOne(5000); if (tPrintSummary.ThreadState == ThreadState.Running) { tPrintSummary.Abort(); } if (!printSummaryOK) { InvokeOnMainThread(delegate { printing.Hide(); var printError = new UIAlertView("Failed to print summary", "We are sorry!", null, "OK"); printError.Show(); }); } else { InvokeOnMainThread(delegate { printing.Hide(); }); } }); Thread tPrinting = new Thread(tsPrinting); tPrinting.Start(); }
// void GetEmailRecepients (long CN, UIView view) { // // NOTE :: this does not work since iOS 6, because // // XPC infrastructure along with remote view controllers is used by mail composition // // we will have to collect email address before presenting the mail view controller // if (view is UITextField) { // if ((view as UITextField).Text.Contains ("@")) { // emailRecepients = (view as UITextField).Text; // return; // } // } // // if (view.Subviews.Length > 0) { // foreach (UIView subView in view.Subviews) { // GetEmailRecepients (CN, subView); // } // } // } void BeginPrinting() { ThreadStart ts = new ThreadStart(delegate { LoadingView wait = new LoadingView(); wait.Show("Printing, please wait"); printOK = false; if (!Tabs._prePlumbView.IsDefault()) { if (Tabs._jobRunTable.CurrentCustomer.FilesToPrint != null) { this.Tabs._jobRunTable.CurrentCustomer.FilesToPrint.Add(Tabs._prePlumbView.pdfPrePlumbingFileName); } PrePlumbingPrintingDone.Reset(); ThreadStart tsPrintPreplumbing = new ThreadStart(delegate { printOK = MyConstants.PrintPDFFile(Tabs._prePlumbView.pdfPrePlumbingFileName); PrePlumbingPrintingDone.Set(); }); Thread tPrintPrePlumbing = new Thread(tsPrintPreplumbing); tPrintPrePlumbing.Start(); PrePlumbingPrintingDone.WaitOne(5000); if (tPrintPrePlumbing.ThreadState == ThreadState.Running) { tPrintPrePlumbing.Abort(); } } else { printOK = true; } // WAS :: printOK = printOK && MyConstants.PrintPDFFile (Tabs._payment.pdfReceiptFileName); if (Tabs._jobRunTable.CurrentCustomer.FilesToPrint != null) { this.Tabs._jobRunTable.CurrentCustomer.FilesToPrint.Add(Tabs._payment.pdfReceiptFileName); } bool printReceiptOK = false; ReceiptPrintingDone.Reset(); ThreadStart tsPrintReceipt = new ThreadStart(delegate { printReceiptOK = MyConstants.PrintPDFFile(Tabs._payment.pdfReceiptFileName); ReceiptPrintingDone.Set(); }); Thread tPrintReceipt = new Thread(tsPrintReceipt); tPrintReceipt.Start(); ReceiptPrintingDone.WaitOne(5000); if (tPrintReceipt.ThreadState == ThreadState.Running) { tPrintReceipt.Abort(); } printOK = printOK && printReceiptOK; InvokeOnMainThread(delegate() { wait.Hide(); if (printOK) { Tabs._navWorkflow._finishWorkflow(null, null); } else // printing failed for some reason { UIAlertView printingError = new UIAlertView("Warning", "An error occurred during printing. What would you like to do?", null, "Try again", "Skip printing"); printingError.Dismissed += HandlePrintingErrorDismissed; printingError.Show(); } }); }); Thread t = new Thread(ts); t.Start(); }