Exemplo n.º 1
0
        void HandleSkipAlertDismissed(object sender, UIButtonEventArgs e)
        {
            if (e.ButtonIndex == 1)
            {
                SkippedSigning = true;

                // redraw the recipt with empty signature
                Signature.Clear();
                UIImageView iv = new UIImageView();
                iv             = (UIImageView)Tabs._payment.GeneratedPdfView.ViewWithTag(MyConstants.ReceiptPDFTemplateTags.Signature);
                iv.ContentMode = UIViewContentMode.ScaleAspectFit;
                UIImage im = Signature.GetDrawingImage();                  // this.Signature.Image;
                iv.Image = im;

                Tabs._payment.RedrawReceiptPDF(true);

                iv.Dispose();  im.Dispose();
                im = null; iv = null;

                GoForward(this, new EventArgs());
            }
        }
Exemplo n.º 2
0
        public SignInvoiceViewController(DetailedTabs tabs) : base(tabs)
        {
            this.Title = "Sign receipt";
            using (var image = UIImage.FromBundle("Images/187-pencil")) this.TabBarItem.Image = image;
            this.NavigationItem.HidesBackButton = true;

            GoBack = delegate {
                if (SigningMode)
                {
                    FinishSigning(null, null);
                    hasBeenSigned = false;
                }

                // if service should be signed, push service
                bool ShouldSignService = false;
                Job  main = (Tabs._jobRunTable.CurrentJob.HasParent()) ?  Tabs._jobRunTable.FindParentJob(Tabs._jobRunTable.CurrentJob) : Tabs._jobRunTable.CurrentJob;

                if (main.JobReportAttached)
                {
                    ShouldSignService = true;
                }
                foreach (Job child in main.ChildJobs)
                {
                    if (child.JobReportAttached)
                    {
                        ShouldSignService = true;
                    }
                    break;
                }

                /*
                 * if (main.Type.Code == "SER") ShouldSignService = true;
                 * foreach(Job child in main.ChildJobs)
                 *      if (child.Type.Code == "SER") ShouldSignService = true;
                 */

                if (ShouldSignService)
                {
                    Tabs.SigningNav.PopToRootViewController(false);
                    Tabs.SigningNav.PushViewController(Tabs.SignService, true);
                }

                // else if pre-plumbing should be signed, push pre-plumbing
                else if (!Tabs._prePlumbView.IsDefault())
                {
                    // push pre-plumbing check
                    Tabs.SigningNav.PopToRootViewController(false);
                    Tabs.SigningNav.PushViewController(Tabs.SignPre, true);
                }
                else                            // otherwise, return back to payment screen
                {
                    Tabs.SigningNav.PopToRootViewController(false);
                    Tabs.SelectedViewController = Tabs.ViewControllers[Tabs.LastSelectedTab];
                }
            };

            GoForward = delegate {
                if ((this.hasBeenSigned && !SigningMode) || SkippedSigning)
                {
                    //string currentNetwork = MyConstants.GetCurrentWiFiNetworkID ();
                    //bool networkOK = (currentNetwork == "247");
                    //this.Tabs._scView.Log (String.Format("Current network returned by MyConstants.GetCurrentWiFiNetworkID : {0}", currentNetwork));

                    //networkOK = true; // debug

                    if (true)                     // networkOK
                    {
                        // AllPrintingDone.Reset ();

                        BeginPrinting();
                        // this starts a new thread to handle the printing task
                    }

                    /*
                     * else
                     * {
                     *      // we're connected to another network, alert the user
                     *      var networkAlert = new UIAlertView( String.Format("Your iPad is connected to \"{0}\"", "currentNetwork"),
                     *                                  "You have to go to Settings -> Wi-Fi and connect to printer network (\"247\") for printing to work. What would you like to do?", null,
                     *                                  "Skip printing", "Change network");
                     *      networkAlert.Dismissed += HandleNetworkAlertDismissed;
                     *      networkAlert.Show ();
                     * }
                     */
                }
                else
                {
                    var alert = new UIAlertView("", "Please finish signing the document first", null, "OK");
                    alert.Show();
                }

                if (SkippedSigning)
                {
                    // Here we should take whatever measures to somehow record that the receipt has not been signed by the customer
                    SkippedSigning = false;
                }
            };

            ClearSignature = delegate {
                // Signature.Image = new UIImage();
                Signature.Clear();
                hasBeenSigned = false;
            };

            SkipSigning = delegate {
                skipAlert            = new UIAlertView("Are you sure?", "The receipt will be printed out without the customer signature.", null, "No, never mind", "Yes, please");
                skipAlert.Dismissed += HandleSkipAlertDismissed;
                skipAlert.Show();
            };

            StartSigning = delegate {
                signing = new UIBarButtonItem("Done", UIBarButtonItemStyle.Done, FinishSigning);
                this.SetToolbarItems(new UIBarButtonItem[] {
                    back, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                    clearSignature, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                    signing, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                    skipSigning, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                    forward
                }, true);

                Signature.Clear();
                hasBeenSigned = false;
                SigningMode   = true;

                this.NavigationController.SetNavigationBarHidden(false, true);
                this.NavigationItem.SetLeftBarButtonItem(new UIBarButtonItem("Clear Signature", UIBarButtonItemStyle.Plain, ClearSignature), true);
                this.NavigationItem.SetRightBarButtonItem(new UIBarButtonItem("Done", UIBarButtonItemStyle.Done, FinishSigning), true);

//				this.NavigationItem.SetRightBarButtonItems (new UIBarButtonItem[] {
//					new UIBarButtonItem("Done", UIBarButtonItemStyle.Done, FinishSigning),
//					new UIBarButtonItem("Clear Signature", UIBarButtonItemStyle.Bordered, ClearSignature) }, true);

                this.NavigationController.SetToolbarHidden(true, true);
            };

            FinishSigning = delegate {
                SigningMode = false;
                signing     = new UIBarButtonItem("Start signing", UIBarButtonItemStyle.Plain, StartSigning);

                this.SetToolbarItems(new UIBarButtonItem[] {
                    back, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                    signing, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                    email, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                    skipSigning, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                    forward
                }, true);

                this.NavigationItem.SetLeftBarButtonItems(new UIBarButtonItem[] { }, true);
                this.NavigationItem.SetRightBarButtonItems(new UIBarButtonItem[] { }, true);
                this.NavigationController.SetToolbarHidden(false, true);

                UIImageView iv = new UIImageView();
                iv             = (UIImageView)Tabs._payment.GeneratedPdfView.ViewWithTag(MyConstants.ReceiptPDFTemplateTags.Signature);
                iv.ContentMode = UIViewContentMode.ScaleAspectFit;
                UIImage im = Signature.GetDrawingImage();                  // this.Signature.Image;
                iv.Image = im;

                if (hasBeenSigned)
                {
                    PDFView.ScrollView.ScrollsToTop = false;
                    Tabs._payment.RedrawReceiptPDF(true);
                    // Signature.Image = new UIImage();
                    Signature.Clear();
                }

                if (iv != null)
                {
                    iv.Dispose(); iv = null;
                }
                if (im != null)
                {
                    im.Dispose(); im = null;
                }
            };

            DoSendReceiptEmail = delegate {
                if (MFMailComposeViewController.CanSendMail)
                {
                    // check if there is an existing email address on file
                    string existingEmail = Tabs._jobRunTable.CurrentCustomer.EmailAddress;
                    if (ValidateEmailAddress(existingEmail))
                    {
                        // there is an email address on file
                        var alertUseExistingEmail = new UIAlertView("Use this email address?", existingEmail, null, "No", "Yes");
                        alertUseExistingEmail.Dismissed += delegate(object sender, UIButtonEventArgs e) {
                            if (e.ButtonIndex == 1)
                            {
                                // user confirmed using existing email
                                emailRecepients = existingEmail;
                                SaveEmailAndPresentMailComposingView();
                            }
                            else
                            {
                                // user declined using existing email, collect email address
                                PresentGetEmailAddressView();
                            }
                        };
                        alertUseExistingEmail.Show();
                    }
                    else
                    {
                        // collect email address
                        PresentGetEmailAddressView();
                    }
                }
                else
                {
                    var alertCannotSendEmails = new UIAlertView("", "It seems like this iPad cannot send e-mails at the time. Please check the network settings and try again", null, "OK");
                    alertCannotSendEmails.Show();
                }
            };

            back           = new UIBarButtonItem(UIBarButtonSystemItem.Reply);
            signing        = new UIBarButtonItem("Start signing", UIBarButtonItemStyle.Plain, StartSigning);
            email          = new UIBarButtonItem("Email receipt", UIBarButtonItemStyle.Plain, DoSendReceiptEmail);
            skipSigning    = new UIBarButtonItem("Skip signing", UIBarButtonItemStyle.Plain, SkipSigning);
            forward        = new UIBarButtonItem(UIBarButtonSystemItem.Action);
            clearSignature = new UIBarButtonItem("Clear signature", UIBarButtonItemStyle.Plain, ClearSignature);

            ToolbarItems = new UIBarButtonItem[] {
                back, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                signing, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                email, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                skipSigning, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                forward
            };

            back.Clicked    += GoBack;
            forward.Clicked += GoForward;
        }
        public SignPrePlumbingViewController(DetailedTabs tabs) : base(tabs)
        {
            this.Title = "Sign pre-plumbing";
            using (var image = UIImage.FromBundle("Images/187-pencil")) this.TabBarItem.Image = image;
            this.NavigationItem.HidesBackButton = true;

            GoBack = delegate {
                if (!SigningMode)
                {
                    Tabs.SelectedViewController = Tabs.ViewControllers[Tabs.LastSelectedTab];
                }
                else
                {
                    FinishSigning(null, null);
                    hasBeenSigned = false;
                    Tabs.SelectedViewController = Tabs.ViewControllers[Tabs.LastSelectedTab];
                }
            };

            GoForward = delegate {
                if (hasBeenSigned && !SigningMode)
                {
                    bool ShouldSignService = false;
                    Job  main = (Tabs._jobRunTable.CurrentJob.HasParent())?  Tabs._jobRunTable.FindParentJob(Tabs._jobRunTable.CurrentJob) : Tabs._jobRunTable.CurrentJob;
                    if (main.Type.Code == "SER")
                    {
                        ShouldSignService = true;
                    }
                    foreach (Job child in main.ChildJobs)
                    {
                        if (child.Type.Code == "SER")
                        {
                            ShouldSignService = true;
                        }
                    }


                    if ((Tabs._prePlumbView.pr.UpgradeOffered == PrePlumbingCheckView.Choices.Option1 ||
                         Tabs._prePlumbView.pr.UpgradeOffered == PrePlumbingCheckView.Choices.Option2) &&
                        Tabs._prePlumbView.pr.CustomerAcceptedUpgrade == PrePlumbingCheckView.Choices.Yes)
                    {
                        // look for a tubing upgrade job
                        bool foundUpgrade = false;
                        if (main.Type.Code.Contains("TUBING"))
                        {
                            foundUpgrade = true;
                        }
                        if (!foundUpgrade)
                        {
                            foreach (Job child in main.ChildJobs)
                            {
                                if (child.Type.Code.Contains("TUBING"))
                                {
                                    foundUpgrade = true;
                                }
                            }
                        }
                        if (!foundUpgrade)
                        {
                            Dictionary <int, string> Reasons = MyConstants.GetFollowUpReasonsFromDB();
                            string pickedReason = "Unable to do upgrade";
                            int    reasonID     = Reasons.FindKeyByValue(pickedReason);
                            Tabs._jobService.SaveFollowupToDatabase(main.JobBookingNumber, reasonID, "Upgrade was authorised and not done?");
                        }
                    }

                    if (ShouldSignService)
                    {
                        Tabs.SigningNav.PopToRootViewController(false);
                        Tabs.SigningNav.PushViewController(Tabs.SignService, true);
                    }
                    else
                    {
                        Tabs.SigningNav.PushViewController(Tabs.SignInvoice, true);
                        //Tabs.SigningNav.InvoicePushed = true;
                        // Tabs._navWorkflow._finishWorkflow(null, null);
                    }
                }
                else
                {
                    var alert = new UIAlertView("", "Please finish signing the document first", null, "OK");
                    alert.Show();
                }
            };

            ClearSignature = delegate {
                // Signature.Image = new UIImage();
                Signature.Clear();
                hasBeenSigned = false;
            };

            StartSigning = delegate {
                signing = new UIBarButtonItem("Done", UIBarButtonItemStyle.Done, FinishSigning);
                this.SetToolbarItems(new UIBarButtonItem[] {
                    back, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                    clearSignature, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                    signing, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                    forward
                }, true);

                // Signature.Image = new UIImage();
                Signature.Clear();
                hasBeenSigned = false;
                SigningMode   = true;

                this.NavigationController.SetNavigationBarHidden(false, true);
                this.NavigationItem.SetLeftBarButtonItem(new UIBarButtonItem("Clear Signature", UIBarButtonItemStyle.Bordered, ClearSignature), true);
                this.NavigationItem.SetRightBarButtonItem(new UIBarButtonItem("Done", UIBarButtonItemStyle.Done, FinishSigning), true);

//				this.NavigationItem.SetRightBarButtonItems (new UIBarButtonItem[] {
//					new UIBarButtonItem("Done", UIBarButtonItemStyle.Done, FinishSigning),
//					new UIBarButtonItem("Clear Signature", UIBarButtonItemStyle.Bordered, ClearSignature) }, true);

                this.NavigationController.SetToolbarHidden(true, true);
            };

            FinishSigning = delegate {
                SigningMode = false;
                signing     = new UIBarButtonItem("Start signing", UIBarButtonItemStyle.Bordered, StartSigning);

                this.SetToolbarItems(new UIBarButtonItem[] {
                    back, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                    signing, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                    forward
                }, true);

                this.NavigationItem.SetLeftBarButtonItems(new UIBarButtonItem[] { }, true);
                this.NavigationItem.SetRightBarButtonItems(new UIBarButtonItem[] { }, true);
                this.NavigationController.SetToolbarHidden(false, true);

                UIImageView iv = new UIImageView();
                iv = (UIImageView)Tabs._prePlumbView.GeneratedPDFView.ViewWithTag(MyConstants.PrePlumbingPDFTemplateTags.Signature);

                iv.ContentMode = UIViewContentMode.ScaleAspectFit;
                UIImage im = this.Signature.GetDrawingImage();                  // this.Signature.Image;
                iv.Image = im;

                if (hasBeenSigned)
                {
                    Tabs._prePlumbView.RedrawPrePlumbingPDF(false, true);

                    CGPoint offset = new CGPoint(0, this.PDFView.ScrollView.ContentSize.Height - this.PDFView.ScrollView.Bounds.Height);
                    PDFView.ScrollView.SetContentOffset(offset, true);
                    Signature.Clear();                      // Signature.Image = new UIImage();
                }

                iv.Dispose();  im.Dispose();
                im = null; iv = null;
            };

            back           = new UIBarButtonItem(UIBarButtonSystemItem.Reply);
            signing        = new UIBarButtonItem("Start signing", UIBarButtonItemStyle.Bordered, StartSigning);
            forward        = new UIBarButtonItem(UIBarButtonSystemItem.Action);
            clearSignature = new UIBarButtonItem("Clear signature", UIBarButtonItemStyle.Bordered, ClearSignature);

            ToolbarItems = new UIBarButtonItem[] {
                back, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                signing, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                forward
            };

            back.Clicked    += GoBack;
            forward.Clicked += GoForward;
        }
Exemplo n.º 4
0
        public SignServiceReportViewController(DetailedTabs tabs) : base(tabs)
        {
            this.Title = "Sign service report";
            using (var image = UIImage.FromBundle("Images/187-pencil")) this.TabBarItem.Image = image;
            this.NavigationItem.HidesBackButton = true;

            GoBack = delegate {
                if (SigningMode)
                {
                    FinishSigning(null, null);
                    hasBeenSigned = false;
                }
                if (!Tabs._prePlumbView.IsDefault())
                {
                    // push pre-plumb signing
                    Tabs.SigningNav.PopToRootViewController(false);
                    Tabs.SigningNav.PushViewController(Tabs.SignPre, true);
                }
                else
                {
                    Tabs.SelectedViewController = Tabs.ViewControllers[Tabs.LastSelectedTab];
                }
            };

            GoForward = delegate {
                if (this.hasBeenSigned && !SigningMode)
                {
                    if (Tabs.SignInvoice != null)
                    {
                        Tabs.SigningNav.PushViewController(Tabs.SignInvoice, true);
                        // Tabs.SigningNav.InvoicePushed = true;
                    }
                    else
                    {
                        Tabs._navWorkflow._finishWorkflow(null, null);
                    }
                }
                else
                {
                    var alert = new UIAlertView("", "Please finish signing the document first", null, "OK");
                    alert.Show();
                }
            };

            ClearSignature = delegate {
                // Signature.Image = new UIImage();
                Signature.Clear();
                hasBeenSigned = false;
            };

            StartSigning = delegate {
                signing = new UIBarButtonItem("Done", UIBarButtonItemStyle.Done, FinishSigning);
                this.SetToolbarItems(new UIBarButtonItem[] {
                    back, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                    clearSignature, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                    signing, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                    forward
                }, true);

                // Signature.Image = new UIImage();
                Signature.Clear();
                hasBeenSigned = false;
                SigningMode   = true;

                this.NavigationController.SetNavigationBarHidden(false, true);
                this.NavigationItem.SetLeftBarButtonItem(new UIBarButtonItem("Clear Signature", UIBarButtonItemStyle.Bordered, ClearSignature), true);
                this.NavigationItem.SetRightBarButtonItem(new UIBarButtonItem("Done", UIBarButtonItemStyle.Done, FinishSigning), true);
                this.NavigationController.SetToolbarHidden(true, true);
                //				this.NavigationItem.SetRightBarButtonItems (new UIBarButtonItem[] {
                //					new UIBarButtonItem("Done", UIBarButtonItemStyle.Done, FinishSigning),
                //					new UIBarButtonItem("Clear Signature", UIBarButtonItemStyle.Bordered, ClearSignature) }, true);
            };

            FinishSigning = delegate {
                SigningMode = false;
                signing     = new UIBarButtonItem("Start signing", UIBarButtonItemStyle.Bordered, StartSigning);

                this.SetToolbarItems(new UIBarButtonItem[] {
                    back, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                    signing, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                    forward
                }, true);

                this.NavigationItem.SetLeftBarButtonItems(new UIBarButtonItem[] { }, true);
                this.NavigationItem.SetRightBarButtonItems(new UIBarButtonItem[] { }, true);
                this.NavigationController.SetToolbarHidden(false, true);

                UIImageView iv = new UIImageView();
                iv             = (UIImageView)Tabs._jobService.GeneratedPDFView.ViewWithTag(MyConstants.ServiceCallPDFTemplateTags.Signature);
                iv.ContentMode = UIViewContentMode.ScaleAspectFit;
                UIImage im = this.Signature.GetDrawingImage();                  // this.Signature.Image;
                iv.Image = im;

                if (hasBeenSigned)
                {
                    Tabs._jobService.RedrawServiceCallPDF(true);

                    CGPoint offset = new CGPoint(0, this.PDFView.ScrollView.ContentSize.Height - this.PDFView.ScrollView.Bounds.Height);
                    PDFView.ScrollView.SetContentOffset(offset, true);
                    // Signature.Image = new UIImage();
                    Signature.Clear();
                }

                iv.Dispose();  im.Dispose();
                im = null; iv = null;
            };

            back           = new UIBarButtonItem(UIBarButtonSystemItem.Reply);
            signing        = new UIBarButtonItem("Start signing", UIBarButtonItemStyle.Bordered, StartSigning);
            forward        = new UIBarButtonItem(UIBarButtonSystemItem.Action);
            clearSignature = new UIBarButtonItem("Clear signature", UIBarButtonItemStyle.Bordered, ClearSignature);

            ToolbarItems = new UIBarButtonItem[] {
                back, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                signing, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                forward
            };

            back.Clicked    += GoBack;
            forward.Clicked += GoForward;
        }
        public SignDailyStockUsed(DetailedTabs tabs) : base(tabs)
        {
            // todo :: EXCEPTION HANDLING here

            // fill the DVC property here with the stock details
            dvc = new DialogViewController(new RootElement("Used stock"));
            dvc.Root.Add(new Section(""));

            if (File.Exists(ServerClientViewController.dbFilePath))
            {
                // read the data from database here
                using (var connection = new SqliteConnection("Data Source=" + ServerClientViewController.dbFilePath))
                {
                    try
                    {
                        using (var cmd = connection.CreateCommand())
                        {
                            connection.Open();
                            cmd.CommandText = "SELECT su.Element_Type as Type, su.Element_OID as ID, p.Part_Desc as Desc, SUM(su.Num_Used) as USED_TODAY " +
                                              "FROM STOCKUSED su, PARTS p " +
                                              "WHERE su.Element_OID = p.Part_ID  " +
                                              "AND su.Element_Type = 'P'  " +
                                              "GROUP BY Element_Type, Element_OID, Part_Desc " +
                                              "UNION SELECT su.Element_Type as Type, su.Element_OID as ID, a.Name as Desc, SUM(su.Num_Used) as USED_TODAY " +
                                              "FROM STOCKUSED su, ASSEMBLIES a " +
                                              "WHERE su.Element_OID = a.Assembly_ID  " +
                                              "AND su.Element_Type = 'A'  " +
                                              "GROUP BY Element_Type, Element_OID, Name";
                            using (var reader = cmd.ExecuteReader())
                            {
                                while (reader.Read())
                                {
                                    string id          = (string)(reader["type"]) + Convert.ToString(reader["id"]);
                                    string description = (string)reader["desc"];
                                    double used        = Convert.ToDouble(reader["used_today"]);

                                    dvc.Root[0].Add(new StyledStringElement(
                                                        id + " " + description,
                                                        used.ToString(),
                                                        UITableViewCellStyle.Value1));
                                }
                                if (!reader.IsClosed)
                                {
                                    reader.Close();
                                }
                            }
                        }
                    }
                    catch (Exception e) {
                        // Console.WriteLine (e.Message);
                    }
                }
            }
            GenerateStockUsedPDFPreview();
            RedrawDailyStockPDF(false);

            GoBack = delegate {
                if (SigningMode)
                {
                    FinishSigning(null, null);
                    hasBeenSigned = false;
                }
                this.NavigationController.PopToRootViewController(true);
            };

            GoForward = delegate {
                if (this.hasBeenSigned)
                {
                    this.NavigationController.SetNavigationBarHidden(true, false);
                    this.NavigationController.PopToRootViewController(true);

                    this.Tabs._scView.StartNewDataExchange();
                    // this.Tabs._scView.InitDataExchange ();
                }
                else
                {
                    var alert = new UIAlertView("", "Please finish signing the document first", null, "OK");
                    alert.Show();
                }
            };


            ClearSignature = delegate {
                // Signature.Image = new UIImage();
                Signature.Clear();
                hasBeenSigned = false;
            };


            StartSigning = delegate {
                signing = new UIBarButtonItem("Done", UIBarButtonItemStyle.Done, FinishSigning);
                this.SetToolbarItems(new UIBarButtonItem[] {
                    back, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                    clearSignature, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                    signing, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                    forward
                }, true);

                // Signature.Image = new UIImage();
                Signature.Clear();
                hasBeenSigned = false;
                SigningMode   = true;
            };

            FinishSigning = delegate {
                SigningMode = false;
                signing     = new UIBarButtonItem("Start signing", UIBarButtonItemStyle.Bordered, StartSigning);

                this.SetToolbarItems(new UIBarButtonItem[] {
                    back, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                    signing, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                    forward
                }, true);

                UIImageView iv = new UIImageView();
                iv             = (UIImageView)GeneratedPDFView.ViewWithTag(4);
                iv.ContentMode = UIViewContentMode.ScaleAspectFit;
                UIImage im = Signature.GetDrawingImage();                  // this.Signature.Image;

                iv.Image = im;

                if (hasBeenSigned)
                {
                    RedrawDailyStockPDF(true);

                    CGPoint offset = new CGPoint(0, this.PDFView.ScrollView.ContentSize.Height - this.PDFView.ScrollView.Bounds.Height);
                    PDFView.ScrollView.SetContentOffset(offset, true);
                    // Signature.Image = new UIImage();
                    Signature.Clear();
                }

                iv.Dispose();  im.Dispose();
                im = null; iv = null;
            };

            back           = new UIBarButtonItem(UIBarButtonSystemItem.Reply);
            signing        = new UIBarButtonItem("Start signing", UIBarButtonItemStyle.Plain, StartSigning);
            forward        = new UIBarButtonItem(UIBarButtonSystemItem.Action);
            clearSignature = new UIBarButtonItem("Clear signature", UIBarButtonItemStyle.Plain, ClearSignature);

            ToolbarItems = new UIBarButtonItem[] {
                back, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                signing, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                forward
            };

            back.Clicked    += GoBack;
            forward.Clicked += GoForward;
        }