コード例 #1
0
ファイル: MyIssuesView.cs プロジェクト: RaineriOS/CodeHub
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            _segmentBarButton = new UIBarButtonItem(_viewSegment);
            _segmentBarButton.Width = View.Frame.Width - 10f;
            ToolbarItems = new [] { new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace), _segmentBarButton, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace) };
            var vm = (MyIssuesViewModel)ViewModel;
            var weakVm = new WeakReference<MyIssuesViewModel>(vm);

            vm.Bind(x => x.SelectedFilter).Subscribe(x =>
            {
                var goodVm = weakVm.Get();

                if (x == 2 && goodVm != null)
                {
                    var filter = new CodeHub.iOS.Views.Filters.MyIssuesFilterViewController(goodVm.Issues);
                    var nav = new UINavigationController(filter);
                    PresentViewController(nav, true, null);
                }

                // If there is searching going on. Finish it.
                FinishSearch();
            });

            this.BindCollection(vm.Issues, CreateElement);

            OnActivation(d =>
            {
                d(vm.Bind(x => x.SelectedFilter, true).Subscribe(x => _viewSegment.SelectedSegment = (nint)x));
                d(_viewSegment.GetChangedObservable().Subscribe(x => vm.SelectedFilter = x));
            });
        }
コード例 #2
0
ファイル: SourceTreeView.cs プロジェクト: xNUTs/CodeBucket
 private static Element CreateElement(SourceTreeViewModel.SourceModel x, WeakReference<SourceTreeViewModel> viewModel)
 {
     if (x.Type.Equals("dir", StringComparison.OrdinalIgnoreCase))
     {
         var e = new StringElement(x.Name, AtlassianIcon.Devtoolsfolderclosed.ToImage());
         e.Clicked.Select(_ => x).BindCommand(viewModel.Get()?.GoToSourceCommand);
         return e;
     }
     if (x.Type.Equals("file", StringComparison.OrdinalIgnoreCase))
     {
         var e = new StringElement(x.Name, AtlassianIcon.Devtoolsfile.ToImage());
         e.Clicked.Select(_ => x).BindCommand(viewModel.Get()?.GoToSourceCommand);
         return e;
     }
     return new StringElement(x.Name) { Image = AtlassianIcon.Devtoolsfilebinary.ToImage() };
 }
コード例 #3
0
ファイル: BaseIssuesView.cs プロジェクト: GitWatcher/CodeHub
 protected IssueElement CreateElement(IssueModel x)
 {
     var weakVm = new WeakReference<IBaseIssuesViewModel>(ViewModel);
     var isPullRequest = x.PullRequest != null && !(string.IsNullOrEmpty(x.PullRequest.HtmlUrl));
     var assigned = x.Assignee != null ? x.Assignee.Login : "******";
     var kind = isPullRequest ? "Pull" : "Issue";
     var commentString = x.Comments == 1 ? "1 comment" : x.Comments + " comments";
     var el = new IssueElement(x.Number.ToString(), x.Title, assigned, x.State, commentString, kind, x.UpdatedAt);
     el.Tapped += () => weakVm.Get()?.GoToIssueCommand.Execute(x);
     return el;
 }
コード例 #4
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            var vm = (TeamsViewModel) ViewModel;
            var weakVm = new WeakReference<TeamsViewModel>(vm);
            this.BindCollection(vm.Teams, x => {
                var e = new StringElement(x.Name);
                e.Clicked.Subscribe(_ => weakVm.Get()?.GoToTeamCommand.Execute(x));
                return e;
            });
        }
コード例 #5
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            var vm = (ChangesetBranchesViewModel) ViewModel;
            var weakVm = new WeakReference<ChangesetBranchesViewModel>(vm);
            BindCollection(vm.Branches, x => {
                var e = new StringElement(x.Name);
                e.Clicked.Subscribe(_ => weakVm.Get()?.GoToBranchCommand.Execute(x));
                return e;
            });
        }
コード例 #6
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            var vm = (BaseUserCollectionViewModel)ViewModel;
            var weakVm = new WeakReference<BaseUserCollectionViewModel>(vm);
            BindCollection(vm.Users, x =>
            {
                var e = new UserElement(x.Username, string.Empty, string.Empty, new Avatar(x.Avatar));
                e.Clicked.Subscribe(_ => weakVm.Get()?.GoToUserCommand.Execute(x));
                return e;
            });
        }
コード例 #7
0
ファイル: GroupsView.cs プロジェクト: xNUTs/CodeBucket
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

			var vm = (GroupsViewModel) ViewModel;
            var weakVm = new WeakReference<GroupsViewModel>(vm);
			BindCollection(vm.Organizations, x =>
			{
                var e = new StringElement(x.Name);
                e.Clicked.Select(_ => x).BindCommand(weakVm.Get()?.GoToGroupCommand);
				return e;
			});
        }
コード例 #8
0
ファイル: GistCreateView.cs プロジェクト: GitWatcher/CodeHub
 public static GistCreateView Show(UIViewController parent)
 {
     var ctrl = new GistCreateView();
     var weakVm = new WeakReference<GistCreateViewModel>(ctrl.ViewModel);
     ctrl.ViewModel.SaveCommand.Subscribe(_ => parent.DismissViewController(true, null));
     ctrl.NavigationItem.LeftBarButtonItem = new UIBarButtonItem { Image = Images.Buttons.CancelButton };
     ctrl.NavigationItem.LeftBarButtonItem.GetClickedObservable().Subscribe(_ => {
         weakVm.Get()?.CancelCommand.Execute(null);
         parent.DismissViewController(true, null);
     });
     parent.PresentViewController(new ThemedNavigationController(ctrl), true, null);
     return ctrl;
 }
コード例 #9
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            var vm = (OrganizationsViewModel) ViewModel;
            var weakVm = new WeakReference<OrganizationsViewModel>(vm);
            BindCollection(vm.Organizations, x =>
            {
                var avatar = new GitHubAvatar(x.AvatarUrl);
                var e = new UserElement(x.Login, string.Empty, string.Empty, avatar);
                e.Clicked.Subscribe(_ => weakVm.Get()?.GoToOrganizationCommand.Execute(x));
                return e;
            });
        }
コード例 #10
0
        public override void ViewWillAppear(bool animated)
        {
            base.ViewWillAppear(animated);

            var accountsService = Mvx.Resolve<IAccountsService>();
            var weakVm = new WeakReference<AccountsViewController>(this);
            var accountSection = new Section();
            accountSection.AddAll(accountsService.Select(account =>
            {
                var t = new AccountElement(account, account.Equals(accountsService.ActiveAccount));
                t.Tapped += () => weakVm.Get()?.SelectAccount(account);
                return t;
            }));
            Root.Reset(accountSection);

            SetCancelButton();
        }
コード例 #11
0
 private static Action<object> MakeCallback(WeakReference<BranchesAndTagsViewModel> weakVm, BranchesAndTagsViewModel.ViewObject viewObject)
 {
     return new Action<object>(_ => weakVm.Get()?.GoToSourceCommand.Execute(viewObject));
 }
コード例 #12
0
 public void SetButtons(List<Button> items)
 {
     foreach (var b in _buttons.Zip(items, (x, y) => new { Button = x, Data = y }))
     {
         b.Button.Caption = b.Data.Caption;
         b.Button.Text = b.Data.Text;
         b.Button.UserInteractionEnabled = true;
         var weakRef = new WeakReference<Button>(b.Data);
         b.Button.Touch = () => weakRef.Get()?.Clicked.OnNext(Unit.Default);
     }
 }
コード例 #13
0
ファイル: NewsFeedElement.cs プロジェクト: xNUTs/CodeBucket
        private static Tuple<NSMutableAttributedString,List<NewsCellView.Link>> CreateAttributedStringFromBlocks(UIFont font, UIColor primaryColor, IEnumerable<TextBlock> blocks)
        {
            var attributedString = new NSMutableAttributedString();
            var links = new List<NewsCellView.Link>();

            nint lengthCounter = 0;
            int i = 0;

            foreach (var b in blocks)
            {
                UIColor color = null;
                if (b.Tapped != null)
                    color = LinkColor;

                color = color ?? primaryColor; 

                var ctFont = new CoreText.CTFont(font.Name, font.PointSize);
                var str = new NSAttributedString(b.Value, new CoreText.CTStringAttributes() { ForegroundColor = color.CGColor, Font = ctFont });
                attributedString.Append(str);
                var strLength = str.Length;

                if (b.Tapped != null)
                {
                    var weakTapped = new WeakReference<Action>(b.Tapped);
                    links.Add(new NewsCellView.Link { Range = new NSRange(lengthCounter, strLength), Callback = () => weakTapped.Get()?.Invoke(), Id = i++ });
                }

                lengthCounter += strLength;
            }

            return new Tuple<NSMutableAttributedString, List<NewsCellView.Link>>(attributedString, links);
        }
コード例 #14
0
ファイル: GistView.cs プロジェクト: GitWatcher/CodeHub
 private static Action<object> MakeCallback(WeakReference<GistViewModel> weakVm, GistFileModel model)
 {
     return new Action<object>(_ => weakVm.Get()?.GoToFileSourceCommand.Execute(model));
 }
コード例 #15
0
ファイル: CommitsView.cs プロジェクト: GitWatcher/CodeHub
 private static Action MakeCallback(WeakReference<CommitsViewModel> weakVm, CommitModel model)
 {
     return new Action(() => weakVm.Get()?.GoToChangesetCommand.Execute(model));
 }
コード例 #16
0
            public MarkReadSection(string text, NotificationsView parent, bool button)
                : base(new CoreGraphics.CGRect(0, 0, 320, 28f))
            {
                var weakVm = new WeakReference<NotificationsViewModel>(parent.ViewModel as NotificationsViewModel);
                TextLabel.Text = text;

                if (button)
                {
                    _button = new UIButton(UIButtonType.RoundedRect);
                    _button.SetImage(Images.Buttons.CheckButton, UIControlState.Normal);
                    //_button.Frame = new System.Drawing.RectangleF(320f - 42f, 1f, 26f, 26f);
                    _button.TintColor = UIColor.FromRGB(50, 50, 50);
                    _button.TouchUpInside += (sender, e) => weakVm.Get()?.ReadRepositoriesCommand.Execute(text);
                    Add(_button);
                }
            }
コード例 #17
0
 private static Action<object> MakeCallback(WeakReference<NotificationsViewModel> weakVm, NotificationModel model)
 {
     return new Action<object>(_ => weakVm.Get()?.GoToNotificationCommand.Execute(model));
 }
コード例 #18
0
 private static Action MakeCallback(WeakReference<RepositoriesExploreViewModel> weakVm, RepositorySearchModel.RepositoryModel model)
 {
     return new Action(() => weakVm.Get()?.GoToRepositoryCommand.Execute(model));
 }
コード例 #19
0
 public static EventHandler MakeHandler(ImageAndTitleHeaderView view)
 {
     var weakRef = new WeakReference<ImageAndTitleHeaderView>(view);
     return new EventHandler((s, e) => weakRef.Get()._clickedSubject.OnNext(Unit.Default));
 }