예제 #1
0
        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();
        }
예제 #2
0
//		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();
        }