Esempio n. 1
0
        public override void ViewDidLoad()
        {
            Title = "Pull Requests";
            //NoItemsText = "No Pull Requests";

            base.ViewDidLoad();

            _viewSegment          = new UISegmentedControl(new object[] { "Open", "Closed" });
            _segmentBarButtonItem = new UIBarButtonItem(_viewSegment)
            {
                Width = View.Frame.Width - 10f
            };
            ToolbarItems = new[] { new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace), _segmentBarButtonItem, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace) };

            _viewSegment.ValueChanged += (sender, args) => ViewModel.SelectedFilter = _viewSegment.SelectedSegment;
            ViewModel.WhenAnyValue(x => x.SelectedFilter).Subscribe(x => _viewSegment.SelectedSegment = x);


            this.BindList(ViewModel.PullRequests, s =>
            {
                var sse = new NameTimeStringElement
                {
                    Name     = s.Title ?? "No Title",
                    String   = (s.Body ?? string.Empty).Replace('\n', ' ').Replace("\r", ""),
                    Lines    = 3,
                    Time     = s.CreatedAt.ToDaysAgo(),
                    Image    = Theme.CurrentTheme.AnonymousUserImage,
                    ImageUri = new Uri(s.User.AvatarUrl)
                };
                sse.Tapped += () => ViewModel.GoToPullRequestCommand.Execute(s);
                return(sse);
            });
        }
Esempio n. 2
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            var vm = (PullRequestsViewModel)ViewModel;

            _segmentBarButton.Width = View.Frame.Width - 10f;
            var set = this.CreateBindingSet <PullRequestsView, PullRequestsViewModel>();

            set.Bind(_viewSegment).To(x => x.SelectedFilter);
            set.Apply();

            BindCollection(vm.PullRequests, s =>
            {
                var sse = new NameTimeStringElement
                {
                    Name     = s.Title,
                    String   = s.Description.Replace('\n', ' ').Replace("\r", ""),
                    Lines    = 3,
                    Time     = s.UpdatedOn.ToDaysAgo(),
                    Image    = Theme.CurrentTheme.AnonymousUserImage,
                    ImageUri = new Uri(s.Author.Links.Avatar.Href)
                };
                sse.Tapped += () => vm.GoToPullRequestCommand.Execute(s);
                return(sse);
            });
        }
Esempio n. 3
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            var sec  = new Section();
            var root = new RootElement("Pull Requests")
            {
                UnevenRows = true
            };

            root.Add(sec);
            Root = root;

            ViewModel.PullRequests.Changed.Subscribe(_ => sec.Reset(ViewModel.PullRequests.Select(x =>
            {
                var element = new NameTimeStringElement
                {
                    Name   = x.Author.User.DisplayName,
                    String = x.Description,
                    Time   = UnixDateTimeHelper.FromUnixTime(x.UpdatedDate).ToDaysAgo(),
                    Lines  = 4
                };
                element.Tapped += () => ViewModel.GoToPullRequestCommand.Execute(x);
                return(element);
            })));

            var selector = new UISegmentedControl(new object[] { "Open", "Merged", "Declined" });

            ViewModel.WhenAnyValue(x => x.SelectedView).Subscribe(x => selector.SelectedSegment = x);
            selector.ValueChanged   += (sender, e) => ViewModel.SelectedView = selector.SelectedSegment;
            NavigationItem.TitleView = selector;
        }
Esempio n. 4
0
        public override void ViewDidLoad()
        {
            NoItemsText = "No Gists".t();

            base.ViewDidLoad();

            var vm = (GistsViewModel)ViewModel;

            BindCollection(vm.Gists, x =>
            {
                var str = string.IsNullOrEmpty(x.Description) ? "Gist " + x.Id : x.Description;
                var sse = new NameTimeStringElement
                {
                    Time   = x.UpdatedAt.ToDaysAgo(),
                    String = str,
                    Lines  = 4,
                    Image  = Theme.CurrentTheme.AnonymousUserImage
                };

                sse.Name     = (x.User == null) ? "Anonymous" : x.User.Login;
                sse.ImageUri = (x.User == null) ? null : new Uri(x.User.AvatarUrl);
                sse.Tapped  += () => vm.GoToGistCommand.Execute(x);
                return(sse);
            });
        }
Esempio n. 5
0
        public override void ViewDidLoad()
        {
            Title           = "Commits".t();
            Root.UnevenRows = true;

            base.ViewDidLoad();

            var vm = (PullRequestCommitsViewModel)ViewModel;

            BindCollection(vm.Commits, x =>
            {
                var msg       = x.Message ?? string.Empty;
                var firstLine = msg.IndexOf("\n", StringComparison.Ordinal);
                var desc      = firstLine > 0 ? msg.Substring(0, firstLine) : msg;
                string username;
                if (x.Author.User != null)
                {
                    username = x.Author.User.DisplayName ?? x.Author.User.Username;
                }
                else
                {
                    var bracketStart = x.Author.Raw.IndexOf("<", StringComparison.Ordinal);
                    username         = x.Author.Raw.Substring(0, bracketStart > 0 ? bracketStart : x.Author.Raw.Length);
                }

                var el = new NameTimeStringElement {
                    Name = username, Time = x.Date.ToDaysAgo(), String = desc, Lines = 4
                };
                el.Tapped += () => vm.GoToChangesetCommand.Execute(x);
                return(el);
            });
        }
Esempio n. 6
0
        public void RenderGist(GistModel model)
        {
            _shareButton.Enabled = _userButton.Enabled = model != null;
            var root = new RootElement(Title)
            {
                UnevenRows = true
            };
            var sec = new Section();

            _header.Subtitle = "Updated " + model.UpdatedAt.ToDaysAgo();


            var str = string.IsNullOrEmpty(model.Description) ? "Gist " + model.Id : model.Description;
            var d   = new NameTimeStringElement()
            {
                Time               = model.UpdatedAt.ToDaysAgo(),
                String             = str,
                Image              = Theme.CurrentTheme.AnonymousUserImage,
                BackgroundColor    = UIColor.White,
                UseBackgroundColor = true,
            };

            //Sometimes there's no user!
            d.Name     = (model.User == null) ? "Anonymous" : model.User.Login;
            d.ImageUri = (model.User == null) ? null : new Uri(model.User.AvatarUrl);

            sec.Add(d);

            var sec2 = new Section();

            foreach (var file in model.Files.Keys)
            {
                var sse = new StyledStringElement(file, model.Files[file].Size + " bytes", UITableViewCellStyle.Subtitle)
                {
                    Accessory     = MonoTouch.UIKit.UITableViewCellAccessory.DisclosureIndicator,
                    LineBreakMode = MonoTouch.UIKit.UILineBreakMode.TailTruncation,
                    Lines         = 1
                };

                var fileSaved     = file;
                var gistFileModel = model.Files[fileSaved];

                if (string.Equals(gistFileModel.Language, "markdown", StringComparison.OrdinalIgnoreCase))
                {
                    sse.Tapped += () => NavigationController.PushViewController(new GistViewableFileController(gistFileModel, ViewModel.Gist.HtmlUrl), true);
                }
                else
                {
                    sse.Tapped += () => NavigationController.PushViewController(new GistFileViewController(gistFileModel, ViewModel.Gist.HtmlUrl), true);
                }

                sec2.Add(sse);
            }

            _header.SetNeedsDisplay();
            root.Add(new [] { sec, sec2 });
            Root = root;
        }
Esempio n. 7
0
        public override void ViewDidLoad()
        {
            Title           = "Commits".t();
            Root.UnevenRows = true;

            base.ViewDidLoad();

            var vm = (CommitsViewModel)ViewModel;

            BindCollection(vm.Commits, x =>
            {
                var msg       = x.Commit.Message ?? string.Empty;
                var firstLine = msg.IndexOf("\n", StringComparison.Ordinal);
                var desc      = firstLine > 0 ? msg.Substring(0, firstLine) : msg;

                string login;
                var date = DateTimeOffset.MinValue;

                if (x.Commit.Author != null && !string.IsNullOrEmpty(x.Commit.Author.Name))
                {
                    login = x.Commit.Author.Name;
                }
                else if (x.Commit.Committer != null && !string.IsNullOrEmpty(x.Commit.Committer.Name))
                {
                    login = x.Commit.Committer.Name;
                }
                else if (x.Author != null)
                {
                    login = x.Author.Login;
                }
                else if (x.Committer != null)
                {
                    login = x.Committer.Login;
                }
                else
                {
                    login = "******";
                }

                if (x.Commit.Committer != null)
                {
                    date = x.Commit.Committer.Date;
                }

                var el = new NameTimeStringElement {
                    Name = login, Time = date.ToDaysAgo(), String = desc, Lines = 4
                };
                el.Tapped += () => vm.GoToChangesetCommand.Execute(x);
                return(el);
            });
        }
Esempio n. 8
0
        public override void ViewDidLoad()
        {
            Title           = "Commits".t();
            Root.UnevenRows = true;

            base.ViewDidLoad();

            var vm = (CommitsViewModel)ViewModel;

            BindCollection(vm.Commits, x =>
            {
                var msg       = x.Message ?? string.Empty;
                var firstLine = msg.IndexOf("\n", StringComparison.Ordinal);
                var desc      = firstLine > 0 ? msg.Substring(0, firstLine) : msg;
                var el        = new NameTimeStringElement {
                    Name = x.Author, Time = x.Utctimestamp.ToDaysAgo(), String = desc, Lines = 4
                };
                el.Tapped += () => vm.GoToChangesetCommand.Execute(x);
                return(el);
            });
        }
Esempio n. 9
0
        protected GistsViewController(GistsViewModel viewModel)
        {
            SearchPlaceholder = "Search Gists".t();
            NoItemsText       = "No Gists".t();
            ViewModel         = viewModel;

            BindCollection(viewModel.Gists, x => {
                var str = string.IsNullOrEmpty(x.Description) ? "Gist " + x.Id : x.Description;
                var sse = new NameTimeStringElement()
                {
                    Time   = x.UpdatedAt.ToDaysAgo(),
                    String = str,
                    Lines  = 4,
                    Image  = Theme.CurrentTheme.AnonymousUserImage
                };

                sse.Name     = (x.User == null) ? "Anonymous" : x.User.Login;
                sse.ImageUri = (x.User == null) ? null : new Uri(x.User.AvatarUrl);
                sse.Tapped  += () => NavigationController.PushViewController(new GistViewController(x), true);
                return(sse);
            });
        }
Esempio n. 10
0
        public PullRequestsViewController(string user, string repo)
        {
            Root.UnevenRows   = true;
            Title             = "Pull Requests".t();
            SearchPlaceholder = "Search Pull Requests".t();
            NoItemsText       = "No Pull Requests".t();
            ViewModel         = new PullRequestsViewModel(user, repo);

            BindCollection(ViewModel.PullRequests, s => {
                var sse = new NameTimeStringElement {
                    Name     = s.Title,
                    String   = s.Body.Replace('\n', ' ').Replace("\r", ""),
                    Lines    = 3,
                    Time     = s.CreatedAt.ToDaysAgo(),
                    Image    = Theme.CurrentTheme.AnonymousUserImage,
                    ImageUri = new Uri(s.User.AvatarUrl)
                };
                sse.Tapped += () => NavigationController.PushViewController(new PullRequestViewController(ViewModel.Username, ViewModel.Repository, s.Number), true);
                return(sse);
            });

            ViewModel.Bind(x => x.IsLoading, Loading);
        }
        public override void ViewDidLoad()
        {
            Title = ViewModel.Title;
            Root  = new RootElement(ViewModel.Title)
            {
                UnevenRows = true
            };

            Bind(ViewModel.WhenAnyValue(x => x.Commits), x =>
            {
                var element = new NameTimeStringElement
                {
                    Name   = x.Author.Name,
                    Time   = AtlassianStashSharp.Helpers.UnixDateTimeHelper.FromUnixTime(x.AuthorTimestamp).ToDaysAgo(),
                    String = x.Message,
                    Lines  = 4
                };
                element.Tapped += () => ViewModel.GoToCommitCommand.Execute(x);
                return(element);
            });

            base.ViewDidLoad();
        }
        private void DoBinding()
        {
            BindCollection(ViewModel, x => x.Commits, x => {
                var desc = (x.Commit.Message ?? "").Replace("\n", " ").Trim();
                string login;
                var date = DateTime.MinValue;

                if (x.Committer != null)
                {
                    login = x.Committer.Login;
                }
                else if (x.Author != null)
                {
                    login = x.Author.Login;
                }
                else if (x.Commit.Committer != null)
                {
                    login = x.Commit.Committer.Name;
                }
                else
                {
                    login = "******";
                }

                if (x.Commit.Committer != null)
                {
                    date = x.Commit.Committer.Date;
                }

                var el = new NameTimeStringElement {
                    Name = login, Time = date.ToDaysAgo(), String = desc, Lines = 4
                };
                el.Tapped += () => NavigationController.PushViewController(new ChangesetViewController(ViewModel.Username, ViewModel.Repository, x.Sha), true);
                return(el);
            });
        }
Esempio n. 13
0
        public void RenderGist()
        {
            if (ViewModel.Gist == null)
            {
                return;
            }

            var model = ViewModel.Gist;

            _shareButton.Enabled = _userButton.Enabled = model != null;
            var root = new RootElement(Title)
            {
                UnevenRows = true
            };
            var sec = new Section();

            root.Add(sec);


            var str = string.IsNullOrEmpty(model.Description) ? "Gist " + model.Id : model.Description;
            var d   = new NameTimeStringElement()
            {
                Time   = model.UpdatedAt.ToDaysAgo(),
                String = str,
                Image  = Theme.CurrentTheme.AnonymousUserImage
            };

            //Sometimes there's no user!
            d.Name     = (model.User == null) ? "Anonymous" : model.User.Login;
            d.ImageUri = (model.User == null) ? null : new Uri(model.User.AvatarUrl);

            sec.Add(d);

            var sec2 = new Section("Files");

            root.Add(sec2);

            foreach (var file in model.Files.Keys)
            {
                var sse = new StyledStringElement(file, model.Files[file].Size + " bytes", UITableViewCellStyle.Subtitle)
                {
                    Accessory     = UITableViewCellAccessory.DisclosureIndicator,
                    LineBreakMode = UILineBreakMode.TailTruncation,
                    Lines         = 1
                };

                var fileSaved     = file;
                var gistFileModel = model.Files[fileSaved];

//				if (string.Equals(gistFileModel.Language, "markdown", StringComparison.OrdinalIgnoreCase))
//					sse.Tapped += () => ViewModel.GoToViewableFileCommand.Execute(gistFileModel);
//				else
                sse.Tapped += () => ViewModel.GoToFileSourceCommand.Execute(gistFileModel);


                sec2.Add(sse);
            }

            if (ViewModel.Comments.Items.Count > 0)
            {
                var sec3 = new Section("Comments");
                foreach (var comment in ViewModel.Comments)
                {
                    var el = new NameTimeStringElement
                    {
                        Name   = "Anonymous",
                        Image  = Theme.CurrentTheme.AnonymousUserImage,
                        String = comment.Body,
                        Time   = comment.CreatedAt.ToDaysAgo(),
                    };

                    if (comment.User != null)
                    {
                        el.Name     = comment.User.Login;
                        el.ImageUri = new Uri(comment.User.AvatarUrl);
                    }

                    sec3.Add(el);
                }
                root.Add(sec3);
            }

            Root = root;
        }