public OccurrencesSection(CheckPoint checkpoint,iCheckpointCommandController Controller,CheckPointDetailDialog dialog) { this.Caption= "Completions:"; this.Footer = "Tap to remove."; var occurenceElements = checkpoint .AllOccurrences .OrderByDescending (o => o.TimeStamp) .Select (o => new StringElement (o.Date.ToString ("d") + (o.IsSkipped?" (Skipped)":""), ()=>{ var c = SharedDialogs.ConfirmationDialog( (a)=> { checkpoint.RemoveOccurrence(o); Controller.RewriteOccurrences(); dialog.Render(); },Message:"Deleting this completion will affect averages and streaks."); dialog.PresentModalViewController(c,true); }) { Value= o.TimeStamp.ToString ("t") }) .ToList(); this.AddAll (occurenceElements.Take(5)); if (occurenceElements.Count > 5) this.Add (new StringElement ("All Completions", ()=>{ var r = new RootElement(checkpoint.Name); var s = new Section("All Completions"); r.Add(s); s.AddAll( occurenceElements.Select(o=> { o.Tapped+=()=> {r.Reload(s,UITableViewRowAnimation.Automatic);}; return o; } )); dialog.moreDialog = new DialogViewController(r,true); dialog.NavigationController.PushViewController(dialog.moreDialog,true); } ){ Alignment = UITextAlignment.Center }); }
public UIViewController GetViewController () { var menu = new RootElement ("Test Runner"); var runMode = new Section("Run Mode"); var interactiveCheckBox = new CheckboxElement("Enable Interactive Mode"); interactiveCheckBox.Tapped += () => GraphicsTestBase.ForceInteractiveMode = interactiveCheckBox.Value; runMode.Add(interactiveCheckBox); menu.Add(runMode); Section main = new Section ("Loading test suites..."); menu.Add (main); Section options = new Section () { new StyledStringElement ("Options", Options) { Accessory = UITableViewCellAccessory.DisclosureIndicator }, new StyledStringElement ("Credits", Credits) { Accessory = UITableViewCellAccessory.DisclosureIndicator } }; menu.Add (options); // large unit tests applications can take more time to initialize // than what the iOS watchdog will allow them on devices ThreadPool.QueueUserWorkItem (delegate { foreach (Assembly assembly in assemblies) Load (assembly, null); window.InvokeOnMainThread (delegate { while (suite.Tests.Count == 1 && (suite.Tests[0] is TestSuite)) suite = (TestSuite)suite.Tests[0]; foreach (TestSuite ts in suite.Tests) { main.Add (Setup (ts)); } mre.Set (); main.Caption = null; menu.Reload (main, UITableViewRowAnimation.Fade); options.Insert (0, new StringElement ("Run Everything", Run)); menu.Reload (options, UITableViewRowAnimation.Fade); }); assemblies.Clear (); }); var dv = new DialogViewController (menu) { Autorotate = true }; // AutoStart running the tests (with either the supplied 'writer' or the options) if (AutoStart) { ThreadPool.QueueUserWorkItem (delegate { mre.WaitOne (); window.BeginInvokeOnMainThread (delegate { Run (); // optionally end the process, e.g. click "Touch.Unit" -> log tests results, return to springboard... // http://stackoverflow.com/questions/1978695/uiapplication-sharedapplication-terminatewithsuccess-is-not-there if (TerminateAfterExecution) TerminateWithSuccess (); }); }); } return dv; }
public UIViewController GetViewController () { var menu = new RootElement ("Test Runner"); Section main = new Section ("Loading test suites..."); menu.Add (main); Section options = new Section () { new StyledStringElement ("Options", Options) { Accessory = UITableViewCellAccessory.DisclosureIndicator }, new StyledStringElement ("Credits", Credits) { Accessory = UITableViewCellAccessory.DisclosureIndicator } }; menu.Add (options); // large unit tests applications can take more time to initialize // than what the iOS watchdog will allow them on devices, so loading // must be done async. ThreadPool.QueueUserWorkItem ((v) => { LoadSync (); ExecuteOnMainThread (() => { foreach (TestSuite ts in Suite.Tests) { main.Add (Setup (ts)); } main.Caption = null; menu.Reload (main, UITableViewRowAnimation.Fade); options.Insert (0, new StringElement ("Run Everything", Run)); menu.Reload (options, UITableViewRowAnimation.Fade); AutoRun (); }); }); return new DialogViewController (menu) { Autorotate = true }; }
public override void ViewDidLoad() { base.ViewDidLoad(); _hud = this.CreateHud(); NavigationItem.RightBarButtonItem = new UIBarButtonItem(Theme.CurrentTheme.SaveButton, UIBarButtonItemStyle.Plain, (s, e) => { View.EndEditing(true); ViewModel.SaveCommand.Execute(null); }); var title = new InputElement("Title", string.Empty, string.Empty) { TextAlignment = UITextAlignment.Right }; title.Changed += (object sender, EventArgs e) => ViewModel.Title = title.Value; var assignedTo = new StyledStringElement("Responsible", "Unassigned", UITableViewCellStyle.Value1); assignedTo.Accessory = UITableViewCellAccessory.DisclosureIndicator; assignedTo.Tapped += () => ViewModel.GoToAssigneeCommand.Execute(null); var kind = new StyledStringElement("Issue Type", ViewModel.Kind, UITableViewCellStyle.Value1); kind.Accessory = UITableViewCellAccessory.DisclosureIndicator; kind.Tapped += () => { var ctrl = new IssueAttributesView(IssueModifyViewModel.Kinds, ViewModel.Kind) { Title = "Issue Type" }; ctrl.SelectedValue = x => ViewModel.Kind = x.ToLower(); NavigationController.PushViewController(ctrl, true); }; var priority = new StyledStringElement("Priority", ViewModel.Priority, UITableViewCellStyle.Value1); priority.Accessory = UITableViewCellAccessory.DisclosureIndicator; priority.Tapped += () => { var ctrl = new IssueAttributesView(IssueModifyViewModel.Priorities, ViewModel.Priority) { Title = "Priority" }; ctrl.SelectedValue = x => ViewModel.Priority = x.ToLower(); NavigationController.PushViewController(ctrl, true); }; var milestone = new StyledStringElement("Milestone".t(), "None", UITableViewCellStyle.Value1); milestone.Accessory = UITableViewCellAccessory.DisclosureIndicator; milestone.Tapped += () => ViewModel.GoToMilestonesCommand.Execute(null); var component = new StyledStringElement("Component".t(), "None", UITableViewCellStyle.Value1); component.Accessory = UITableViewCellAccessory.DisclosureIndicator; component.Tapped += () => ViewModel.GoToComponentsCommand.Execute(null); var version = new StyledStringElement("Version".t(), "None", UITableViewCellStyle.Value1); version.Accessory = UITableViewCellAccessory.DisclosureIndicator; version.Tapped += () => ViewModel.GoToVersionsCommand.Execute(null); var content = new MultilinedElement("Description"); content.Tapped += () => { var composer = new Composer { Title = "Issue Description", Text = content.Value }; composer.NewComment(this, (text) => { ViewModel.Content = text; composer.CloseComposer(); }); }; ViewModel.Bind(x => x.IsSaving, x => { if (x) _hud.Show("Saving..."); else _hud.Hide(); }); Root = new RootElement(Title) { new Section { title, assignedTo, kind, priority }, new Section { milestone, component, version }, new Section { content } }; ViewModel.Bind(x => x.Title, x => { title.Value = x; Root.Reload(title, UITableViewRowAnimation.None); }, true); ViewModel.Bind(x => x.AssignedTo, x => { assignedTo.Value = x == null ? "Unassigned" : x.Username; Root.Reload(assignedTo, UITableViewRowAnimation.None); }, true); ViewModel.Bind(x => x.Kind, x => { kind.Value = x; Root.Reload(kind, UITableViewRowAnimation.None); }, true); ViewModel.Bind(x => x.Priority, x => { priority.Value = x; Root.Reload(priority, UITableViewRowAnimation.None); }, true); ViewModel.Bind(x => x.Milestone, x => { milestone.Value = x ?? "None"; Root.Reload(milestone, UITableViewRowAnimation.None); }, true); ViewModel.Bind(x => x.Component, x => { component.Value = x ?? "None"; Root.Reload(component, UITableViewRowAnimation.None); }, true); ViewModel.Bind(x => x.Version, x => { version.Value = x ?? "None"; Root.Reload(version, UITableViewRowAnimation.None); }, true); ViewModel.Bind(x => x.Content, x => { content.Value = x; Root.Reload(content, UITableViewRowAnimation.None); }, true); }