public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            Title = NSBundle.MainBundle.LocalizedString("Menu", "Form Sections");

            if (UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Pad)
            {
                //PreferredContentSize = new CGSize(320f, 600f);
                ClearsSelectionOnViewWillAppear = false;
            }

            DetailViewController       = (DetailViewController)((UINavigationController)SplitViewController.ViewControllers[1]).TopViewController;
            DetailViewController.Style = UITableViewStyle.Plain;

            // TODO pull to refresh: (problem scrolling with it..)
            //DetailViewController.RefreshRequested += delegate
            //{
            //	DetailViewController.ReloadComplete();
            //};

            var  dds             = new DynaPadService.DynaPadService();
            var  menu            = dds.BuildDynaMenu("123");
            var  menuObj         = JsonConvert.DeserializeObject <Menu>(dds.BuildDynaMenu("123"));
            Menu myDynaMenu      = JsonConvert.DeserializeObject <Menu>(dds.BuildDynaMenu("123"));
            var  rootMainMenu    = new RootElement(myDynaMenu.MenuCaption);
            var  sectionMainMenu = new Section();

            sectionMainMenu.HeaderView = null;
            BuildMenu(myDynaMenu, sectionMainMenu);
            rootMainMenu.Add(sectionMainMenu);
            Root = rootMainMenu;
        }
Exemplo n.º 2
0
        void SaveButtonAction(object sender, EventArgs e)
        {
            try
            {
                loadingOverlay = new LoadingOverlay(contentView.Bounds);
                contentView.Add(loadingOverlay);

                UIImage im = AsImage(contentView);
                if (CrossConnectivity.Current.IsConnected)
                {
                    var bw = new BackgroundWorker();

                    // this allows our worker to report progress during work
                    bw.WorkerReportsProgress = true;

                    // what to do in the background thread
                    bw.DoWork += delegate(object o, DoWorkEventArgs argss)
                    {
                        var b = o as BackgroundWorker;

                        byte[] editArr  = im.AsJPEG(0.5f).ToArray();
                        var    saveType = MREditing ? "DynaPad Edit" : "DynaPad Note";

                        var dps = new DynaPadService.DynaPadService();
                        //byte[] saveArr = MREditType == "jpg" ? editArr : dps.ConvertToType(CommonFunctions.GetUserConfig(), editArr, MREditType);
                        byte[] saveArr  = editArr;
                        var    savefile = dps.SaveFile(CommonFunctions.GetUserConfig(), apptId, patientId, doctorId, locationId, filename, saveType, "DynaPad", "", "", saveArr, IsDoctorForm, false);
                    };

                    // what to do when worker completes its task (notify the user)
                    bw.RunWorkerCompleted += delegate
                    {
                        var savestring = MREditing ? "Edited File Saved" : "New Note Saved";
                        PresentViewController(CommonFunctions.AlertPrompt(savestring, "A new edit has been saved to medical records", true, null, false, null), true, null);
                    };

                    bw.RunWorkerAsync();

                    //byte[] editArr = im.AsJPEG(0.5f).ToArray();

                    //var dps = new DynaPadService.DynaPadService();
                    ////byte[] saveArr = MREditType == "jpg" ? editArr : dps.ConvertToType(CommonFunctions.GetUserConfig(), editArr, MREditType);
                    //byte[] saveArr = editArr;
                    //var savefile = dps.SaveFile(CommonFunctions.GetUserConfig(), apptId, patientId, doctorId, locationId, filename, "DynaPad Edit", "DynaPad", "", saveArr, IsDoctorForm, false);
                }
                else
                {
                    PresentViewController(CommonFunctions.InternetAlertPrompt(), true, null);
                }
            }
            catch (Exception ex)
            {
                CommonFunctions.sendErrorEmail(ex);
                PresentViewController(CommonFunctions.ExceptionAlertPrompt(), true, null);
            }
            finally
            {
                loadingOverlay.Hide();
            }
        }
        public UIViewController GetReportService(RootElement rElement)
        {
            if (DetailViewController.QuestionsView != null)
            {
                DetailViewController.Title = "";
                DetailViewController.QuestionsView.Clear();
            }

            var dfElemet = (DynaFormRootElement)rElement;
            //var ShortForm = SelectedAppointment.ApptShortForms.Find((QShortForm obj) => obj.FormId == dfElemet.MenuValue);
            var    dds      = new DynaPadService.DynaPadService();
            string origJson = dds.GetShortForms(dfElemet.FormID, dfElemet.DoctorID, false);

            JsonHandler.OriginalFormJsonString = origJson;
            var rootReports    = new RootElement(dfElemet.FormName);
            var sectionReports = new Section();

            foreach (Report esf in SelectedAppointment.ApptReports)
            {
                sectionReports.Add(new StringElement(esf.ReportName, delegate { LoadSectionView(esf.ReportId, "Report", null, false); }));
            }

            rootReports.Add(sectionReports);

            var formDVC = new DialogViewController(rootReports, true);

            return(formDVC);
        }
        void SavePreset(string presetName)
        {
            // doctorid = 123 / 321
            // locationid = 321 / 123

            string presetJson = JsonConvert.SerializeObject(SelectedAppointment.SelectedQForm);
            var    dds        = new DynaPadService.DynaPadService();

            dds.SaveAnswerPreset(SelectedAppointment.SelectedQForm.FormId, null, SelectedAppointment.ApptDoctorId, true, presetName, presetJson, SelectedAppointment.ApptLocationId);
        }
Exemplo n.º 5
0
        void SaveButtonAction(object sender, EventArgs e)
        {
            var ass  = cgView;
            var ass2 = cgView.StrokeCollection;
            var hole = strokeCollection;

            cgView.StrokeCollection = strokeCollection;
            UIImage im = AsImage(canvasContainerView);

            if (CrossConnectivity.Current.IsConnected)
            {
                //var bw = new BackgroundWorker();

                //// this allows our worker to report progress during work
                //bw.WorkerReportsProgress = true;

                //// what to do in the background thread
                //bw.DoWork += delegate (object o, DoWorkEventArgs argss)
                //{
                //	var b = o as BackgroundWorker;

                //	var dps = new DynaPadService.DynaPadService();
                //	var savefile = dps.SaveFile(CommonFunctions.GetUserConfig(), apptId, patientId, doctorId, locationId, filename, "DynaPad Photo", "DynaPad", "", im.AsJPEG(0.5f).ToArray(), IsDoctorForm, false);
                //};

                //// what to do when worker completes its task (notify the user)
                //bw.RunWorkerCompleted += delegate (object o, RunWorkerCompletedEventArgs argsss)
                //{
                //	PresentViewController(CommonFunctions.AlertPrompt("Edited File Saved", "A new edit has been saved to medical records", true, null, false, null), true, null);
                //};

                //bw.RunWorkerAsync();

                byte[] editArr = im.AsJPEG(0.5f).ToArray();

                var dps = new DynaPadService.DynaPadService();
                //byte[] saveArr = MREditType == "jpg" ? editArr : dps.ConvertToType(CommonFunctions.GetUserConfig(), editArr, MREditType);
                byte[] saveArr  = editArr;
                var    savefile = dps.SaveFile(CommonFunctions.GetUserConfig(), apptId, patientId, doctorId, locationId, filename, "DynaPad Edit", "DynaPad", "", "", saveArr, IsDoctorForm, false);
            }
            else
            {
                PresentViewController(CommonFunctions.InternetAlertPrompt(), true, null);
            }
        }
        public UIViewController GetFormService(RootElement rElement)
        {
            //if (DetailViewController.QuestionsView != null)
            //{
            //	DetailViewController.Title = "";
            //	DetailViewController.QuestionsView.Clear();
            //}

            var bounds = UIScreen.MainScreen.Bounds;

            // show the loading overlay on the UI thread using the correct orientation sizing
            loadingOverlay = new LoadingOverlay(bounds);
            mvc            = (DialogViewController)((UINavigationController)SplitViewController.ViewControllers[0]).TopViewController;
            mvc.Add(loadingOverlay);

            var    dds      = new DynaPadService.DynaPadService();
            var    dfElemet = (DynaFormRootElement)rElement;
            string origJson = dds.GetFormQuestions(dfElemet.FormID, dfElemet.PatientID, dfElemet.ApptID, dfElemet.IsDoctorForm);

            JsonHandler.OriginalFormJsonString = origJson;
            SelectedAppointment.SelectedQForm  = JsonConvert.DeserializeObject <QForm>(origJson);
            var rootFormSections    = new RootElement(SelectedAppointment.SelectedQForm.FormName);
            var sectionFormSections = new Section();

            bool IsDoctorForm = dfElemet.IsDoctorForm;

            if (IsDoctorForm)
            {
                /*
                 * TODO: make presets password protected (maybe not, since for doctors only?)! (maybe component: Passcode)
                 */

                var FormPresetNames   = dds.GetAnswerPresets(SelectedAppointment.ApptFormId, null, SelectedAppointment.ApptPatientId, true, SelectedAppointment.ApptLocationId);
                var formPresetSection = new DynaSection("Form Preset Answers");
                formPresetSection.Enabled = true;
                var formPresetGroup = new RadioGroup("FormPresetAnswers", SelectedAppointment.SelectedQForm.FormSelectedTemplateId);
                var formPresetsRoot = new DynaRootElement("Preset Answers", formPresetGroup);
                formPresetsRoot.IsPreset = true;

                foreach (string[] arrPreset in FormPresetNames)
                {
                    var radioPreset = new MyRadioElement(arrPreset[1], "FormPresetAnswers");
                    radioPreset.OnSelected += delegate(object sender, EventArgs e)
                    {
                        string presetJson = arrPreset[2];
                        JsonHandler.OriginalFormJsonString = presetJson;
                        SelectedAppointment.SelectedQForm  = JsonConvert.DeserializeObject <QForm>(presetJson);
                        LoadSectionView(SelectedAppointment.SelectedQForm.FormSections[0].SectionId, SelectedAppointment.SelectedQForm.FormSections[0].SectionName, SelectedAppointment.SelectedQForm.FormSections[0], IsDoctorForm);
                    };

                    formPresetSection.Add(radioPreset);
                }

                var btnNewFormPreset = new GlassButton(new RectangleF(0, 0, (float)View.Frame.Width, 50));
                btnNewFormPreset.Font = UIFont.BoldSystemFontOfSize(17);
                btnNewFormPreset.SetTitleColor(UIColor.Black, UIControlState.Normal);
                btnNewFormPreset.NormalColor = UIColor.FromRGB(224, 238, 240);
                btnNewFormPreset.SetTitle("Save New Form Preset", UIControlState.Normal);
                btnNewFormPreset.TouchUpInside += (sender, e) =>
                {
                    /*
                     * TODO: popup to enter preset name (DONE?)
                     */

                    //Create Alert
                    var SavePresetPrompt = UIAlertController.Create("New Form Preset", "Necesito name", UIAlertControllerStyle.Alert);
                    SavePresetPrompt.AddTextField((field) =>
                    {
                        field.Placeholder = "Preset Name";
                    });
                    //Add Actions
                    SavePresetPrompt.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, action => SavePreset(SavePresetPrompt.TextFields[0].Text)));
                    SavePresetPrompt.AddAction(UIAlertAction.Create("Cancel", UIAlertActionStyle.Cancel, null));
                    //Present Alert
                    PresentViewController(SavePresetPrompt, true, null);
                };

                formPresetSection.Add(btnNewFormPreset);
                formPresetsRoot.Add(formPresetSection);
                formPresetsRoot.Enabled = true;

                sectionFormSections.Add(formPresetsRoot);
            }

            foreach (FormSection fSection in SelectedAppointment.SelectedQForm.FormSections)
            {
                sectionFormSections.Add(new StringElement(fSection.SectionName, delegate { LoadSectionView(fSection.SectionId, fSection.SectionName, fSection, IsDoctorForm); }));
            }

            sectionFormSections.Add(new StringElement("Finalize", delegate { LoadSectionView("Finalize", "Finalize", null, IsDoctorForm); }));

            rootFormSections.Add(sectionFormSections);

            var formDVC = new DialogViewController(rootFormSections, true);

            // TODO pull to refresh: (problamatic scrolling with it)
            //formDVC.RefreshRequested += delegate
            //{
            //	formDVC.ReloadComplete();
            //};

            if (!IsDoctorForm)
            {
                messageLabel = new UILabel();
                formDVC.NavigationItem.LeftBarButtonItem = new UIBarButtonItem(UIImage.FromBundle("Lock"), UIBarButtonItemStyle.Bordered, delegate(object sender, EventArgs e)
                {
                    //Create Alert
                    var BackPrompt = UIAlertController.Create("Exit Form", "Administrative use only. Please enter password to continue or tap Cancel", UIAlertControllerStyle.Alert);
                    BackPrompt.AddTextField((field) =>
                    {
                        field.SecureTextEntry = true;
                        field.Placeholder     = "Password";
                    });

                    BackPrompt.Add(messageLabel);
                    BackPrompt.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, action => PopBack(BackPrompt.TextFields[0].Text)));
                    BackPrompt.AddAction(UIAlertAction.Create("Cancel", UIAlertActionStyle.Cancel, null));

                    //Present Alert
                    PresentViewController(BackPrompt, true, null);
                });
                //formDVC.NavigationItem.LeftBarButtonItem.Title = "Back";
            }

            loadingOverlay.Hide();

            return(formDVC);
        }
Exemplo n.º 7
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            var bounds = View.Bounds;
            //var bounds = new CGRect(0, 0, View.Bounds.Width, View.Bounds.Height);
            //var bounds = fingsize;
            var screenBounds = UIScreen.MainScreen.Bounds;
            //var maxScreenDimension = NMath.Max (screenBounds.Width, screenBounds.Height);
            var maxScreenDimension = NMath.Max(screenBounds.Width, screenBounds.Height);

            UIViewAutoresizing flexibleDimensions = FlexibleWidth | FlexibleHeight;

            scrollView = new UIScrollView(bounds)
            {
                AutoresizingMask = flexibleDimensions,
                //BackgroundColor = UIColor.Red
            };

            View.AddSubview(scrollView);

            var frame = new CGRect(CGPoint.Empty, new CGSize(maxScreenDimension, maxScreenDimension));

            //var frame = new CGRect(CGPoint.Empty, new CGSize(800, 800));
            //var frame = bounds;
            cgView = new StrokeCGView(frame)
            {
                AutoresizingMask = flexibleDimensions,
                editing          = MREditing
            };

            View.BackgroundColor = UIColor.White;
            //View.BackgroundColor = UIColor.Clear;
            //View.BackgroundColor = UIColor.FromWhiteAlpha(1.0f, 0.4f);
            //View.Alpha = 1.0f;

            canvasContainerView = CanvasContainerView.FromCanvasSize(cgView.Frame.Size);
            canvasContainerView.DocumentView = cgView;
            scrollView.ContentSize           = canvasContainerView.Frame.Size;
            scrollView.ContentOffset         = new CGPoint((canvasContainerView.Frame.Width - scrollView.Bounds.Width) / 2,
                                                           (canvasContainerView.Frame.Height - scrollView.Bounds.Height) / 2);
            //scrollView.ContentOffset = new CGPoint(0, 0);
            scrollView.AddSubview(canvasContainerView);
            scrollView.BackgroundColor = canvasContainerView.BackgroundColor;

            //scrollView.BackgroundColor = UIColor.Clear;
            //scrollView.BackgroundColor = UIColor.FromWhiteAlpha(1.0f, 0.4f);
            //scrollView.Alpha = 1.0f;

            scrollView.MaximumZoomScale = 3;
            scrollView.MinimumZoomScale = 0.5f;
            scrollView.PanGestureRecognizer.AllowedTouchTypes   = TouchTypes(UITouchType.Direct);
            scrollView.PinchGestureRecognizer.AllowedTouchTypes = TouchTypes(UITouchType.Direct);

            scrollView.Delegate = this;



            if (MREditing)
            {
                filename = MREditName + "_" + "edit" + "_" + DateTime.Now.ToString("s").Replace(":", "_") + ".jpg";
                //var img = UIImage.FromFile("dynapadscreenshot.png");

                UIImage img = new UIImage();
                switch (MREditType)
                {
                case "jpg":
                case "gif":
                case "png":
                    img = FromUrl(MREditPath);
                    break;

                case "pdf":
                case "doc":
                case "docx":
                    var dps = new DynaPadService.DynaPadService();
                    //img = dps.ConvertToJPG(CommonFunctions.GetUserConfig(), MREditPath);
                    break;

                default:
                    img = FromUrl(MREditPath);
                    break;
                }

                var imgView = new UIImageView(bounds);
                imgView.Image       = img;
                imgView.ContentMode = UIViewContentMode.ScaleAspectFit;                 // or ScaleAspectFill
                //imgView.BackgroundColor = UIColor.Green;
                //imgView.Opaque = false;
                //canvasContainerView.BackgroundColor = UIColor.Clear;
                //canvasContainerView.Opaque = false;
                canvasContainerView.AddSubview(imgView);
                canvasContainerView.SendSubviewToBack(imgView);
                //imgView.Alpha = 0.5f;
                //scrollView.AddSubview(imgView);
                //scrollView.SendSubviewToBack(imgView);
                //View.AddSubview(imgView);
                //View.SendSubviewToBack(imgView);
            }



            // We put our UI elements on top of the scroll view, so we don't want any of the
            // delay or cancel machinery in place.
            scrollView.DelaysContentTouches = false;

            fingerStrokeRecognizer = new StrokeGestureRecognizer(StrokeUpdated)
            {
                Delegate             = this,
                CancelsTouchesInView = false,
                IsForPencil          = false,
                CoordinateSpaceView  = cgView
            };
            scrollView.AddGestureRecognizer(fingerStrokeRecognizer);

            pencilStrokeRecognizer = new StrokeGestureRecognizer(StrokeUpdated)
            {
                Delegate             = this,
                CancelsTouchesInView = false,
                CoordinateSpaceView  = cgView,
                IsForPencil          = true
            };
            scrollView.AddGestureRecognizer(pencilStrokeRecognizer);

            SetupConfigurations();

            var onPhone = UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Phone;

            var ringDiameter   = onPhone ? 66f : 74f;
            var ringImageInset = onPhone ? 12f : 14f;
            var borderWidth    = 1f;
            var ringOutset     = ringDiameter / 2 - (NMath.Floor(NMath.Sqrt((ringDiameter * ringDiameter) / 8) - borderWidth));
            //var ringFrame = new CGRect (-ringOutset, View.Bounds.Height - ringDiameter + ringOutset, ringDiameter, ringDiameter);
            //var ringFrame = new CGRect(ringOutset, 800 - ringDiameter - ringOutset, ringDiameter, ringDiameter);
            var ringFrame   = new CGRect(ringOutset, View.Bounds.Height - ringDiameter + ringOutset - 50, ringDiameter, ringDiameter);
            var ringControl = new RingControl(ringFrame, configurations.Length);

            ringControl.AutoresizingMask = FlexibleRightMargin | FlexibleTopMargin;
            View.AddSubview(ringControl);
            leftRingControl = ringControl;
            string [] imageNames = { "Calligraphy", "Ink", "Debug" };
            for (int index = 0; index < leftRingControl.RingViews.Count; index++)
            {
                var ringView = leftRingControl.RingViews [index];
                ringView.ActionClosure = configurations [index];
                var imageView = new UIImageView(ringView.Bounds.Inset(ringImageInset, ringImageInset));
                imageView.Image            = UIImage.FromBundle(imageNames [index]);
                imageView.AutoresizingMask = FlexibleLeftMargin | FlexibleRightMargin | FlexibleTopMargin | FlexibleBottomMargin;
                ringView.AddSubview(imageView);
            }

            closeButton = AddButton("close", CloseButtonAction);
            clearButton = AddButton("clear", ClearButtonAction);
            saveButton  = AddButton("save", SaveButtonAction);
            SetupPencilUI();

            //cgView.SetNeedsDisplay();
            //scrollView.SetNeedsDisplay();
            //canvasContainerView.SetNeedsDisplay();
            //cgView.

            //new UIAlertView("Touched", "ass", null, "OK", null).Show ();
            //PresentViewController(CommonFunctions.AlertPrompt("File Edit", "Saving this edit will not overwrite the original file", true, null, false, null), true, null);
        }