Example #1
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            HeaderView.SetImage(null, Images.Avatar);
            HeaderView.Text = ViewModel.Username;

            var split     = new SplitButtonElement();
            var followers = split.AddButton("Followers", "-");
            var following = split.AddButton("Following", "-");

            var events        = new StringElement("Events", Octicon.Rss.ToImage());
            var organizations = new StringElement("Organizations", Octicon.Organization.ToImage());
            var repos         = new StringElement("Repositories", Octicon.Repo.ToImage());
            var gists         = new StringElement("Gists", Octicon.Gist.ToImage());

            Root.Add(new [] { new Section {
                                  split
                              }, new Section {
                                  events, organizations, repos, gists
                              } });

            ViewModel.Bind(x => x.User).Subscribe(x => {
                followers.Text     = x?.Followers.ToString() ?? "-";
                following.Text     = x?.Following.ToString() ?? "-";
                HeaderView.SubText = string.IsNullOrWhiteSpace(x?.Name) ? null : x.Name;
                HeaderView.SetImage(x?.AvatarUrl, Images.Avatar);
                RefreshHeaderView();
            });

            OnActivation(d =>
            {
                d(followers.Clicked
                  .Select(x => UsersViewController.CreateFollowersViewController(ViewModel.Username))
                  .Subscribe(x => NavigationController.PushViewController(x, true)));

                d(following.Clicked
                  .Select(x => UsersViewController.CreateFollowingViewController(ViewModel.Username))
                  .Subscribe(x => NavigationController.PushViewController(x, true)));

                d(events.Clicked.BindCommand(ViewModel.GoToEventsCommand));
                d(organizations.Clicked.BindCommand(ViewModel.GoToOrganizationsCommand));

                d(gists.Clicked
                  .Select(x => GistsViewController.CreateUserGistsViewController(ViewModel.Username))
                  .Subscribe(x => NavigationController.PushViewController(x, true)));

                d(ViewModel.Bind(x => x.Title, true).Subscribe(x => Title = x));

                d(repos.Clicked.Subscribe(_ =>
                {
                    var vc = Repositories.RepositoriesViewController.CreateUserViewController(ViewModel.Username);
                    NavigationController?.PushViewController(vc, true);
                }));
            });
        }
        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();
                }));
            });
        }