public override void ViewDidLoad() { base.ViewDidLoad(); var vm = (OrganizationViewModel)ViewModel; HeaderView.SetImage(null, Images.Avatar); Title = vm.Name; HeaderView.Text = vm.Name; var members = new StringElement("Members", Octicon.Person.ToImage()); var teams = new StringElement("Teams", Octicon.Organization.ToImage()); var followers = new StringElement("Followers", Octicon.Heart.ToImage()); var events = new StringElement("Events", Octicon.Rss.ToImage()); var repos = new StringElement("Repositories", Octicon.Repo.ToImage()); var gists = new StringElement("Gists", Octicon.Gist.ToImage()); Root.Reset(new Section(new UIView(new CGRect(0, 0, 0, 20f))) { members, teams }, new Section { events, followers }, new Section { repos, gists }); OnActivation(d => { d(teams.Clicked.BindCommand(vm.GoToTeamsCommand)); d(events.Clicked.BindCommand(vm.GoToEventsCommand)); d(members.Clicked .Select(_ => UsersViewController.CreateOrganizationMembersViewController(vm.Name)) .Subscribe(x => NavigationController.PushViewController(x, true))); d(followers.Clicked .Select(_ => UsersViewController.CreateFollowersViewController(vm.Name)) .Subscribe(x => NavigationController.PushViewController(x, true))); d(repos.Clicked.Subscribe(_ => { var vc = Repositories.RepositoriesViewController.CreateOrganizationViewController(vm.Name); NavigationController?.PushViewController(vc, true); })); d(gists.Clicked .Select(x => GistsViewController.CreateUserGistsViewController(vm.Name)) .Subscribe(x => NavigationController.PushViewController(x, true))); d(vm.Bind(x => x.Organization, true).Where(x => x != null).Subscribe(x => { HeaderView.SubText = string.IsNullOrWhiteSpace(x.Name) ? x.Login : x.Name; HeaderView.SetImage(x.AvatarUrl, Images.Avatar); RefreshHeaderView(); })); }); }
public override void ViewDidLoad() { base.ViewDidLoad(); var vm = (TeamsViewModel)ViewModel; var weakVm = new WeakReference <TeamsViewController>(this); this.BindCollection(vm.Teams, x => { var e = new StringElement(x.Name); e.Clicked.Subscribe(_ => { var vc = UsersViewController.CreateTeamMembersViewController((int)x.Id); weakVm.Get()?.NavigationController.PushViewController(vc, true); }); return(e); }); }
public override void ViewDidLoad() { base.ViewDidLoad(); Title = ViewModel.Username; HeaderView.SetImage(null, Images.Avatar); HeaderView.Text = ViewModel.RepositoryName; HeaderView.SubImageView.TintColor = UIColor.FromRGB(243, 156, 18); Appeared.Take(1) .Select(_ => Observable.Timer(TimeSpan.FromSeconds(0.35f)).Take(1)) .Switch() .Select(_ => ViewModel.Bind(x => x.IsStarred, true).Where(x => x.HasValue)) .Switch() .ObserveOn(RxApp.MainThreadScheduler) .Subscribe(x => HeaderView.SetSubImage(x.Value ? Octicon.Star.ToImage() : null)); var actionButton = NavigationItem.RightBarButtonItem = new UIBarButtonItem(UIBarButtonSystemItem.Action) { Enabled = false }; _split = new SplitButtonElement(); _stargazers = _split.AddButton("Stargazers", "-"); _watchers = _split.AddButton("Watchers", "-"); _forks = _split.AddButton("Forks", "-"); OnActivation(d => { d(_watchers.Clicked .Select(_ => ViewModel) .Select(x => UsersViewController.CreateWatchersViewController(x.Username, x.RepositoryName)) .Subscribe(x => NavigationController.PushViewController(x, true))); d(_stargazers.Clicked .Select(_ => ViewModel) .Select(x => UsersViewController.CreateStargazersViewController(x.Username, x.RepositoryName)) .Subscribe(x => NavigationController.PushViewController(x, true))); d(actionButton.GetClickedObservable().Subscribe(_ => ShowExtraMenu())); d(_forks.Clicked.Subscribe(_ => { var vc = RepositoriesViewController.CreateForkedViewController(ViewModel.Username, ViewModel.RepositoryName); NavigationController?.PushViewController(vc, true); })); d(_eventsElement.Clicked.BindCommand(ViewModel.GoToEventsCommand)); d(_ownerElement.Clicked.BindCommand(ViewModel.GoToOwnerCommand)); d(_commitsElement.Clicked.BindCommand(ViewModel.GoToCommitsCommand)); d(_pullRequestsElement.Clicked.BindCommand(ViewModel.GoToPullRequestsCommand)); d(_sourceElement.Clicked.BindCommand(ViewModel.GoToSourceCommand)); d(ViewModel.Bind(x => x.Branches, true).Subscribe(_ => Render())); d(ViewModel.Bind(x => x.Readme, true).Subscribe(_ => Render())); d(_forkElement.Value.Clicked.Select(x => ViewModel.Repository.Parent).BindCommand(ViewModel.GoToForkParentCommand)); d(_issuesElement.Value.Clicked.BindCommand(ViewModel.GoToIssuesCommand)); d(_readmeElement.Value.Clicked.BindCommand(ViewModel.GoToReadmeCommand)); d(_websiteElement.Value.Clicked.Select(x => ViewModel.Repository.Homepage).BindCommand(ViewModel.GoToUrlCommand)); d(HeaderView.Clicked.BindCommand(ViewModel.GoToOwnerCommand)); d(ViewModel.Bind(x => x.Repository, true).Where(x => x != null).Subscribe(x => { if (x.Private && !_featuresService.IsProEnabled) { if (_privateView == null) { _privateView = this.ShowPrivateView(); } actionButton.Enabled = false; } else { actionButton.Enabled = true; _privateView?.Dispose(); } ViewModel.ImageUrl = x.Owner?.AvatarUrl; HeaderView.SubText = Emojis.FindAndReplace(x.Description); HeaderView.SetImage(x.Owner?.AvatarUrl, Images.Avatar); Render(); RefreshHeaderView(); })); }); }