public Button(SplitButtonElement element, string text, string caption) { _element = element; _text = text; _caption = caption; Clicked = new Subject <Unit>(); }
public Button(SplitButtonElement element, string text, string caption) { _element = element; _text = text; _caption = caption; Clicked = new Subject<Unit>(); }
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.BindCommand(ViewModel.GoToFollowersCommand)); d(following.Clicked.BindCommand(ViewModel.GoToFollowingCommand)); d(events.Clicked.BindCommand(ViewModel.GoToEventsCommand)); d(organizations.Clicked.BindCommand(ViewModel.GoToOrganizationsCommand)); d(repos.Clicked.BindCommand(ViewModel.GoToRepositoriesCommand)); d(gists.Clicked.BindCommand(ViewModel.GoToGistsCommand)); d(ViewModel.Bind(x => x.Title, true).Subscribe(x => Title = x)); }); }
public override void ViewDidLoad() { base.ViewDidLoad(); Title = "Gist"; var editButton = NavigationItem.RightBarButtonItem = new UIBarButtonItem(UIBarButtonSystemItem.Action); HeaderView.SetImage(null, Images.Avatar); HeaderView.Text = "Gist #" + ViewModel.Id; 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)) .Switch() .ObserveOn(RxApp.MainThreadScheduler) .Subscribe(x => HeaderView.SetSubImage(x ? Octicon.Star.ToImage() : null)); TableView.RowHeight = UITableView.AutomaticDimension; TableView.EstimatedRowHeight = 44f; _split = new SplitButtonElement(); var files = _split.AddButton("Files", "-"); var comments = _split.AddButton("Comments", "-"); var forks = _split.AddButton("Forks", "-"); _splitRow1 = new SplitViewElement(Octicon.Lock.ToImage(), Octicon.Package.ToImage()); _splitRow2 = new SplitViewElement(Octicon.Calendar.ToImage(), Octicon.Star.ToImage()); _ownerElement = new StringElement("Owner", string.Empty, UITableViewCellStyle.Value1) { Image = Octicon.Person.ToImage(), Accessory = UITableViewCellAccessory.DisclosureIndicator }; OnActivation(d => { d(editButton.GetClickedObservable().Subscribe(_ => ShareButtonTap(editButton))); d(_ownerElement.Clicked.BindCommand(ViewModel.GoToUserCommand)); d(ViewModel.Bind(x => x.IsStarred, true).Subscribe(isStarred => _splitRow2.Button2.Text = isStarred ? "Starred" : "Not Starred")); d(ViewModel.BindCollection(x => x.Comments, true).Subscribe(_ => RenderGist())); d(HeaderView.Clicked.BindCommand(ViewModel.GoToUserCommand)); d(ViewModel.Bind(x => x.Gist, true).Where(x => x != null).Subscribe(gist => { _splitRow1.Button1.Text = (gist.Public ?? true) ? "Public" : "Private"; _splitRow1.Button2.Text = (gist.History?.Count ?? 0) + " Revisions"; _splitRow2.Button1.Text = gist.CreatedAt.Day + " Days Old"; _ownerElement.Value = gist.Owner?.Login ?? "Unknown"; files.Text = gist.Files.Count.ToString(); comments.Text = gist.Comments.ToString(); forks.Text = gist.Forks.Count.ToString(); HeaderView.SubText = gist.Description; HeaderView.Text = gist.Files?.Select(x => x.Key).FirstOrDefault() ?? HeaderView.Text; HeaderView.SetImage(gist.Owner?.AvatarUrl, Images.Avatar); RenderGist(); RefreshHeaderView(); })); }); }