public override void ViewDidLoad() { base.ViewDidLoad(); var model = _filterController.Filter.Clone(); var save = new StringElement("Save as Default") { Accessory = UITableViewCellAccessory.None }; save.Clicked.Subscribe(_ => { _filterController.ApplyFilter(CreateFilterModel(), true); CloseViewController(); }); //Load the root var sections = new [] { new Section("Filter") { (_filter = CreateEnumElement("Type", model.FilterType)), (_open = new BooleanElement("Open?", model.Open)), (_labels = new EntryElement("Labels", "bug,ui,@user", model.Labels) { TextAlignment = UITextAlignment.Right, AutocorrectionType = UITextAutocorrectionType.No, AutocapitalizationType = UITextAutocapitalizationType.None }), }, new Section("Order By") { (_sort = CreateEnumElement("Field", model.SortType)), (_asc = new BooleanElement("Ascending", model.Ascending)) }, new Section() { save, } }; Root.Reset(sections); }
public override void ViewDidLoad() { base.ViewDidLoad(); var model = _filterController.Filter.Clone(); var save = new StringElement("Save as Default") { Accessory = UITableViewCellAccessory.None }; save.Clicked.Subscribe(_ => { _filterController.ApplyFilter(CreateFilterModel(), true); CloseViewController(); }); //Load the root var root = new [] { new Section("Filter") { (_open = new BooleanElement("Open?", model.Open)), (_labels = new EntryElement("Labels", "bug,ui,@user", model.Labels) { TextAlignment = UITextAlignment.Right, AutocorrectionType = UITextAutocorrectionType.No, AutocapitalizationType = UITextAutocapitalizationType.None }), (_mentioned = new EntryElement("Mentioned", "User", model.Mentioned) { TextAlignment = UITextAlignment.Right, AutocorrectionType = UITextAutocorrectionType.No, AutocapitalizationType = UITextAutocapitalizationType.None }), (_creator = new EntryElement("Creator", "User", model.Creator) { TextAlignment = UITextAlignment.Right, AutocorrectionType = UITextAutocorrectionType.No, AutocapitalizationType = UITextAutocapitalizationType.None }), (_assignee = new EntryElement("Assignee", "User", model.Assignee) { TextAlignment = UITextAlignment.Right, AutocorrectionType = UITextAutocorrectionType.No, AutocapitalizationType = UITextAutocapitalizationType.None }), (_milestone = new StringElement("Milestone", "None", UITableViewCellStyle.Value1)), }, new Section("Order By") { (_sort = CreateEnumElement("Field", model.SortType)), (_asc = new BooleanElement("Ascending", model.Ascending)) }, new Section(string.Empty, "Saving this filter as a default will save it only for this repository.") { save } }; RefreshMilestone(); _milestone.Accessory = UITableViewCellAccessory.DisclosureIndicator; _milestone.Clicked.Subscribe(_ => { var ctrl = new IssueMilestonesFilterViewController(_user, _repo, _milestoneHolder != null); ctrl.MilestoneSelected = (title, num, val) => { if (title == null && num == null && val == null) _milestoneHolder = null; else _milestoneHolder = new IssuesFilterModel.MilestoneKeyValue { Name = title, Value = val, IsMilestone = num.HasValue }; RefreshMilestone(); NavigationController.PopViewController(true); }; NavigationController.PushViewController(ctrl, true); }); Root.Reset(root); }
private void CreateTable() { var application = Mvx.Resolve<IApplicationService>(); var vm = (SettingsViewModel)ViewModel; var currentAccount = application.Account; var accountSection = new Section("Account"); var showOrganizationsInEvents = new BooleanElement("Show Organizations in Events", currentAccount.ShowOrganizationsInEvents); showOrganizationsInEvents.Changed.Subscribe(x => { currentAccount.ShowOrganizationsInEvents = x; application.Accounts.Update(currentAccount); }); var showOrganizations = new BooleanElement("List Organizations in Menu", currentAccount.ExpandOrganizations); showOrganizations.Changed.Subscribe(x => { currentAccount.ExpandOrganizations = x; application.Accounts.Update(currentAccount); }); var repoDescriptions = new BooleanElement("Show Repo Descriptions", currentAccount.ShowRepositoryDescriptionInList); repoDescriptions.Changed.Subscribe(x => { currentAccount.ShowRepositoryDescriptionInList = x; application.Accounts.Update(currentAccount); }); var startupView = new StringElement("Startup View", vm.DefaultStartupViewName, UITableViewCellStyle.Value1) { Accessory = UITableViewCellAccessory.DisclosureIndicator, }; startupView.Clicked.BindCommand(vm.GoToDefaultStartupViewCommand); var pushNotifications = new BooleanElement("Push Notifications", vm.PushNotificationsEnabled); pushNotifications.Changed.Subscribe(e => vm.PushNotificationsEnabled = e); accountSection.Add(pushNotifications); var source = new StringElement("Source Code"); source.Clicked.BindCommand(vm.GoToSourceCodeCommand); var follow = new StringElement("Follow On Twitter"); follow.Clicked.Subscribe(_ => UIApplication.SharedApplication.OpenUrl(new NSUrl("https://twitter.com/CodeHubapp"))); var rate = new StringElement("Rate This App"); rate.Clicked.Subscribe(_ => UIApplication.SharedApplication.OpenUrl(new NSUrl("https://itunes.apple.com/us/app/codehub-github-for-ios/id707173885?mt=8"))); var aboutSection = new Section("About", "Thank you for downloading. Enjoy!") { source, follow, rate }; if (vm.ShouldShowUpgrades) { var upgrades = new StringElement("Upgrades"); upgrades.Clicked.BindCommand(vm.GoToUpgradesCommand); aboutSection.Add(upgrades); } var appVersion = new StringElement("App Version", UIApplication.SharedApplication.GetVersion()) { Accessory = UITableViewCellAccessory.None, SelectionStyle = UITableViewCellSelectionStyle.None }; aboutSection.Add(appVersion); //Assign the root Root.Reset(accountSection, new Section("Appearance") { showOrganizationsInEvents, showOrganizations, repoDescriptions, startupView }, aboutSection); }
protected void UpdateView() { ICollection<Section> sections = new LinkedList<Section>(); var section = new Section(); sections.Add(section); var desc = new MultilinedElement("Description", ViewModel.Description); desc.Clicked.Subscribe(_ => ChangeDescription()); section.Add(desc); var pub = new BooleanElement("Public", ViewModel.Public); pub.Changed.Subscribe(x => ViewModel.Public = x); section.Add(pub); var fileSection = new Section(); sections.Add(fileSection); foreach (var file in ViewModel.Files.Keys) { var key = file; if (string.IsNullOrEmpty(ViewModel.Files[file])) continue; var size = System.Text.Encoding.UTF8.GetByteCount(ViewModel.Files[file]); var el = new StringElement(file, size + " bytes", UITableViewCellStyle.Subtitle) { Accessory = UITableViewCellAccessory.DisclosureIndicator }; el.Clicked.Subscribe(_ => { if (!ViewModel.Files.ContainsKey(key)) return; var createController = new GistFileEditViewController { Filename = key, Content = ViewModel.Files[key] }; createController.SaveCommand.Subscribe(__ => NavigationController.PopToViewController(this, true)); createController.Save = (name, content) => { if (string.IsNullOrEmpty(name)) throw new InvalidOperationException("Please enter a name for the file"); //If different name & exists somewhere else if (!name.Equals(key) && ViewModel.Files.ContainsKey(name)) throw new InvalidOperationException("A filename by that type already exists"); ViewModel.Files.Remove(key); ViewModel.Files[name] = content; ViewModel.Files = ViewModel.Files; // Trigger refresh }; NavigationController.PushViewController(createController, true); }); fileSection.Add(el); } var add = new StringElement("Add New File"); add.Clicked.Subscribe(_ => AddFile()); fileSection.Add(add); Root.Reset(sections); }
public override void ViewDidLoad() { base.ViewDidLoad(); TableView.RowHeight = UITableView.AutomaticDimension; TableView.EstimatedRowHeight = 44f; var vm = (IssueEditViewModel)ViewModel; var saveButton = new UIBarButtonItem { Image = Images.Buttons.SaveButton }; NavigationItem.RightBarButtonItem = saveButton; var title = new EntryElement("Title", string.Empty, string.Empty); var assignedTo = new StringElement("Responsible", "Unassigned", UITableViewCellStyle.Value1); var milestone = new StringElement("Milestone", "None", UITableViewCellStyle.Value1); var labels = new StringElement("Labels", "None", UITableViewCellStyle.Value1); var content = new MultilinedElement("Description"); var state = new BooleanElement("Open", true); Root.Reset(new Section { title, assignedTo, milestone, labels }, new Section { state }, new Section { content }); OnActivation(d => { d(vm.Bind(x => x.IssueTitle, true).Subscribe(x => title.Value = x)); d(title.Changed.Subscribe(x => vm.IssueTitle = x)); d(assignedTo.Clicked.BindCommand(vm.GoToAssigneeCommand)); d(milestone.Clicked.BindCommand(vm.GoToMilestonesCommand)); d(labels.Clicked.BindCommand(vm.GoToLabelsCommand)); d(vm.Bind(x => x.IsOpen, true).Subscribe(x => state.Value = x)); d(vm.Bind(x => x.IsSaving).SubscribeStatus("Updating...")); d(state.Changed.Subscribe(x => vm.IsOpen = x)); d(vm.Bind(x => x.Content, true).Subscribe(x => content.Details = x)); d(vm.Bind(x => x.AssignedTo, true).Subscribe(x => { assignedTo.Value = x == null ? "Unassigned" : x.Login; })); d(vm.Bind(x => x.Milestone, true).Subscribe(x => { milestone.Value = x == null ? "None" : x.Title; })); d(vm.BindCollection(x => x.Labels, true).Subscribe(x => { labels.Value = vm.Labels.Items.Count == 0 ? "None" : string.Join(", ", vm.Labels.Items.Select(i => i.Name)); })); d(saveButton.GetClickedObservable().Subscribe(_ => { View.EndEditing(true); vm.SaveCommand.Execute(null); })); d(content.Clicked.Subscribe(_ => { var composer = new MarkdownComposerViewController { Title = "Issue Description", Text = content.Details }; composer.NewComment(this, (text) => { vm.Content = text; composer.CloseComposer(); }); })); }); }