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();
                }));
            });
        }
Ejemplo n.º 2
0
        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);
            });
        }
Ejemplo n.º 3
0
        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();
                }));
            });
        }