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); }