public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            this.CreateTopBackground(UIColor.GroupTableViewBackgroundColor);
            var header = new ImageAndTitleHeaderView
            {
                EnableSeperator = true,
                SeperatorColor  = TableView.SeparatorColor,
                Image           = Images.ProjectAvatar,
                BackgroundColor = UIColor.GroupTableViewBackgroundColor,
            };

            TableView.TableHeaderView = header;

            ViewModel.WhenAnyValue(x => x.Project).Where(x => x != null).Subscribe(x =>
            {
                if (x.IsPersonal)
                {
                    header.Text = x.Name + "'s Personal Repositories";
                }
                else
                {
                    header.Text = x.Description;
                }
                TableView.TableHeaderView = header;
                var selfLink = x.Links["self"].FirstOrDefault();
                if (selfLink != null && !string.IsNullOrEmpty(selfLink.Href))
                {
                    header.ImageUri = selfLink.Href + "/avatar.png";
                }
            });
        }
        public override void ViewDidLoad()
        {
            Title = ViewModel.RepositorySlug;

            base.ViewDidLoad();

            var header = new ImageAndTitleHeaderView
            {
                BackgroundColor = UIColor.GroupTableViewBackgroundColor,
                Image           = Images.ProjectAvatar,
                Text            = ViewModel.RepositorySlug
            };

            TableView.TableHeaderView     = header;
            TableView.TableFooterView     = new UIView();
            TableView.SeparatorInset      = UIEdgeInsets.Zero;
            TableView.BackgroundColor     = UIColor.GroupTableViewBackgroundColor;
            TableView.SectionHeaderHeight = 0.3f;

            var settingsSection = new Section();
            var splitElement    = new SplitButtonElement();
            var forksButton     = splitElement.AddButton("Forks", "0", () => ViewModel.GoToForksCommand.ExecuteIfCan());
            var releatedButton  = splitElement.AddButton("Related", "0", () => ViewModel.GoToRelatedCommand.ExecuteIfCan());

            settingsSection.Add(splitElement);
//
//            var eventsElement = new StyledStringElement("Events", () => {}, Images.Megaphone.ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate));
//            settingsSection.Add(eventsElement);
//
//            var readmeElement = new StyledStringElement("Readme", () => {}, Images.Readme.ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate));
//            settingsSection.Add(readmeElement);
//
            var codeSection = new Section();

            codeSection.Add(new StyledStringElement("Commits", () => ViewModel.GoToCommitsCommand.Execute(null), Images.Commit.ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate)));
            codeSection.Add(new StyledStringElement("Source Code", () => ViewModel.GoToSourceCommand.Execute(null), Images.Build.ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate)));
            codeSection.Add(new StyledStringElement("Pull Requests", () => ViewModel.GoToPullRequestsCommand.Execute(null), Images.Merge.ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate)));

            var root = new RootElement(Title);

            root.Add(settingsSection);
            root.Add(codeSection);
            Root = root;

            ViewModel.WhenAnyValue(x => x.Repository).Where(x => x != null).Subscribe(x =>
            {
                var selfLink = x.Project.Links["self"].FirstOrDefault();
                if (selfLink == null || string.IsNullOrEmpty(selfLink.Href))
                {
                    return;
                }

                header.ImageUri = selfLink.Href + "/avatar.png";
            });

            ViewModel.WhenAnyValue(x => x.ForkedRepositories).Subscribe(x => forksButton.Text     = x.ToString());
            ViewModel.WhenAnyValue(x => x.RelatedRepositories).Subscribe(x => releatedButton.Text = x.ToString());
        }
 protected PrettyDialogViewController()
 {
     HeaderView   = new ImageAndTitleHeaderView();
     SlideUpTitle = new SlideUpTitleView(44f)
     {
         Offset = 100f
     };
     NavigationItem.TitleView = SlideUpTitle;
     _backgroundHeaderView    = new UIView();
 }
        protected PrettyDialogViewController()
        {
            _rootElement          = new Lazy <RootElement>(() => new RootElement(TableView));
            _backgroundHeaderView = new UIView();
            _tableView            = new Lazy <EnhancedTableView>(() => new EnhancedTableView(UITableViewStyle.Grouped));

            HeaderView   = new ImageAndTitleHeaderView();
            SlideUpTitle = new SlideUpTitleView(44f)
            {
                Offset = 100f
            };
            NavigationItem.TitleView = SlideUpTitle;
        }
Esempio n. 5
0
        public override void ViewDidLoad()
        {
            Style = UITableViewStyle.Grouped;
            Title = ViewModel.UserSlug;

            base.ViewDidLoad();

            var header = new ImageAndTitleHeaderView {
                BackgroundColor = UIColor.GroupTableViewBackgroundColor
            };

            header.Image = CodeFramework.iOS.Images.LoginUserUnknown;
            header.Text  = ViewModel.UserSlug;

            var repositorySection = new Section();

            Root = new RootElement(Title)
            {
                repositorySection
            };

            TableView.TableHeaderView = header;

            ViewModel.WhenAnyValue(x => x.User).Where(x => x != null).Subscribe(x =>
            {
                header.Text = x.DisplayName;

                var selfLink = x.Links["self"].FirstOrDefault();
                if (selfLink == null || string.IsNullOrEmpty(selfLink.Href))
                {
                    return;
                }

                header.ImageUri = selfLink.Href + "/avatar.png";
            });

            ViewModel.Repositories.Changed.Subscribe(_ => repositorySection.Reset(ViewModel.Repositories.Select(x =>
            {
                var el       = new StyledStringElement(x.Name);
                el.Accessory = UITableViewCellAccessory.DisclosureIndicator;
                el.Tapped   += () => ViewModel.GoToRepositoryCommand.Execute(x);
                return(el);
            })));
        }
Esempio n. 6
0
        protected BaseDialogViewController()
            : base(UITableViewStyle.Grouped)
        {
            SlideUpTitle = new SlideUpTitleView(44f)
            {
                Offset = 100f
            };
            NavigationItem.TitleView = SlideUpTitle;
            HeaderView            = new ImageAndTitleHeaderView();
            _backgroundHeaderView = new UIView();

            Appearing
            .Where(x => ToolbarItems != null && NavigationController != null)
            .Subscribe(x => NavigationController.SetToolbarHidden(false, x));
            Disappearing
            .Where(x => ToolbarItems != null && NavigationController != null)
            .Subscribe(x => NavigationController.SetToolbarHidden(true, x));
            Disappearing
            .Where(_ => NavigationController != null)
            .Subscribe(_ => NavigationController.NavigationBar.ShadowImage = null);
        }
Esempio n. 7
0
        public override void ViewDidLoad()
        {
            Title = ViewModel.Title;

            base.ViewDidLoad();

            Root = new RootElement(Title)
            {
                UnevenRows = true
            };

            var splitElement1 = new SplitElement
            {
                Button1 = new SplitElement.SplitButton(Images.Commit.ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate), "-", () => ViewModel.GoToParentCommitCommand.ExecuteIfCan()),
                Button2 = new SplitElement.SplitButton(Images.Branch.ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate), "-", () => ViewModel.GoToBranchesCommand.ExecuteIfCan()),
            };
            var splitElement2 = new SplitElement
            {
                Button1 = new SplitElement.SplitButton(Images.Build.ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate), "0 Builds", () => ViewModel.GoToBuildStatusCommand.ExecuteIfCan()),
                Button2 = new SplitElement.SplitButton(Images.Comment.ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate), "0 Comments", () => ViewModel.GoToCommentsCommand.ExecuteIfCan()),
            };

            Root.Add(new Section()
            {
                splitElement1, splitElement2
            });

            var header = new ImageAndTitleHeaderView
            {
//                EnableSeperator = true,
//                SeperatorColor = TableView.SeparatorColor
                BackgroundColor = UIColor.GroupTableViewBackgroundColor,
                Image           = Images.Avatar,
                Text            = ViewModel.RepositorySlug
            };

            TableView.TableHeaderView     = header;
            TableView.SectionFooterHeight = 0.3f;

            ViewModel.WhenAnyValue(x => x.Commit).Where(x => x != null).Subscribe(x =>
            {
                header.Text = x.Message;
                TableView.TableHeaderView = header;
                var firstParent           = x.Parents.FirstOrDefault();
                if (firstParent != null)
                {
                    splitElement1.Button1.Text = firstParent.DisplayId;
                }
                else
                {
                    splitElement1.Button1.Text = "No Parent";
                }
            });

            ViewModel.WhenAnyValue(x => x.BuildStatus).Where(x => x != null && x.Length > 0).Subscribe(x =>
            {
                var first = x.FirstOrDefault();
                if (string.Equals(first.State, "SUCCESSFUL", StringComparison.OrdinalIgnoreCase))
                {
                    splitElement2.Button1.Image = Images.BuildOk.ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate);
                }
                else if (string.Equals(first.State, "FAILED", StringComparison.OrdinalIgnoreCase))
                {
                    splitElement2.Button1.Image = Images.Error.ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate);
                }
                else
                {
                    splitElement2.Button1.Image = Images.Update.ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate);
                }

                splitElement2.Button1.Text = string.Format("{0} Build{1}", x.Length, x.Length == 1 ? string.Empty : "s");
            });

            ViewModel.Branches.Changed.Subscribe(_ =>
            {
                if (ViewModel.Branches.Count > 1)
                {
                    splitElement1.Button2.Text = string.Format("{0} Branches", ViewModel.Branches.Count);
                }
                else
                {
                    var firstBranch = ViewModel.Branches.FirstOrDefault();
                    if (firstBranch != null)
                    {
                        splitElement1.Button2.Text = firstBranch.DisplayId;
                    }
                }
            });

            var fileIcon = Images.File.ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate);

            ViewModel.Changes.Changed.Subscribe(_ =>
            {
                var sections = new List <Section>();
                sections.Add(new Section()
                {
                    splitElement1, splitElement2
                });
                foreach (var @group in ViewModel.Changes.GroupBy(x => x.Path.Parent))
                {
                    var sec = new Section("/" + @group.Key);
                    foreach (var entry in @group)
                    {
                        var entryClosed   = entry;
                        var element       = new StyledStringElement(entry.Path.Name, FirstCharToUpper(entry.Type), UITableViewCellStyle.Subtitle);
                        element.Tapped   += () => ViewModel.GoToDiffCommand.ExecuteIfCan(entryClosed);
                        element.Accessory = UITableViewCellAccessory.DisclosureIndicator;
                        element.Image     = fileIcon;
                        sec.Add(element);
                    }
                    sections.Add(sec);
                }

                Root.Reset(sections);
            });
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            Root = new RootElement(string.Format("Pull Request #{0}", ViewModel.PullRequestId))
            {
                UnevenRows = true
            };

            var description = new StyledMultilineElement(string.Empty);

            description.Font = UIFont.SystemFontOfSize(12f);

            var statusElement = new SplitElement
            {
                Button1 = new SplitElement.SplitButton(Images.Status.ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate), "Open")
                {
                    Enabled = false
                },
                Button2 = new SplitElement.SplitButton(Images.Group.ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate), "0 Participants", () => ViewModel.GoToParticipantsCommand.ExecuteIfCan()),
            };

            var buildElement = new SplitElement
            {
                Button1 = new SplitElement.SplitButton(Images.Build.ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate), "0 Builds", () => ViewModel.GoToBuildStatusCommand.ExecuteIfCan()),
                Button2 = new SplitElement.SplitButton(Images.Comment.ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate), "0 Comments", () => ViewModel.GoToCommentsCommand.ExecuteIfCan()),
            };

            Root.Add(new Section {
                statusElement, buildElement
            });

            var changesElement = new StyledStringElement("Changes", () => ViewModel.GoToChangesCommand.ExecuteIfCan(), Images.File.ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate));
            var commitsElement = new StyledStringElement("Commits", () => ViewModel.GoToCommitsCommand.ExecuteIfCan(), Images.Commit.ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate));

            Root.Add(new Section {
                changesElement, commitsElement
            });

            var mergeElement = new StyledStringElement("Merge", string.Empty);

            mergeElement.Image = Images.Merge;

            var commentsElement = new WebElement("comments");
            var commentsSection = new Section()
            {
                commentsElement
            };

            var header = new ImageAndTitleHeaderView
            {
                BackgroundColor = UIColor.GroupTableViewBackgroundColor,
                Image           = Images.Avatar,
                Text            = " "
            };

            TableView.TableHeaderView     = header;
            TableView.SectionFooterHeight = 0.3f;

            ViewModel.GoToCommentsCommand.Subscribe(_ =>
            {
                if (commentsElement.GetImmediateRootElement() != null)
                {
                    TableView.ScrollToRow(commentsElement.IndexPath, UITableViewScrollPosition.Middle, true);
                }
            });

            ViewModel.WhenAnyValue(x => x.PullRequest).Where(x => x != null).Subscribe(x =>
            {
                header.Text = x.Title;
                statusElement.Button1.Text = x.State;
                description.Caption        = x.Description;
                if (description.GetImmediateRootElement() == null)
                {
                    Root[0].Insert(0, UITableViewRowAnimation.Fade, description);
                }

                var selfLink = x.Author.User.Links["self"].FirstOrDefault();
                if (selfLink != null && !string.IsNullOrEmpty(selfLink.Href))
                {
                    header.ImageUri = selfLink.Href + "/avatar.png";
                }
                TableView.TableHeaderView = header;
            });

            ViewModel.Participants.Changed.Subscribe(_ =>
            {
                statusElement.Button2.Text = string.Format("{0} Participant{1}", ViewModel.Participants.Count, ViewModel.Participants.Count != 1 ? "s" : string.Empty);
            });

            ViewModel.WhenAnyValue(x => x.BuildStatus).Where(x => x != null && x.Length > 0).Subscribe(x =>
            {
                var first = x.FirstOrDefault();
                if (string.Equals(first.State, "SUCCESSFUL", StringComparison.OrdinalIgnoreCase))
                {
                    buildElement.Button1.Image = Images.BuildOk.ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate);
                }
                else if (string.Equals(first.State, "FAILED", StringComparison.OrdinalIgnoreCase))
                {
                    buildElement.Button1.Image = Images.Error.ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate);
                }
                else
                {
                    buildElement.Button1.Image = Images.Update.ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate);
                }

                buildElement.Button1.Text = string.Format("{0} Build{1}", x.Length, x.Length == 1 ? string.Empty : "s");
            });

            ViewModel.Activities.Changed.Subscribe(_ =>
            {
                var commentCount          = ViewModel.Activities.Where(x => x.Comment != null).Sum(x => CommentCount(x.Comment));
                buildElement.Button2.Text = string.Format("{0} Comment{1}", commentCount, commentCount != 1 ? "s" : string.Empty);

                if (ViewModel.Activities.Count > 0)
                {
                    if (commentsSection.GetImmediateRootElement() == null)
                    {
                        Root.Add(commentsSection);
                    }

                    var template = new CommentCellView {
                        Model = ViewModel.Activities.ToList()
                    };
                    commentsElement.Value = template.GenerateString();
                }
                else
                {
                    if (commentsSection.GetImmediateRootElement() != null)
                    {
                        Root.Remove(commentsSection, UITableViewRowAnimation.Fade);
                    }
                }
            });
        }