Example #1
0
//        public ICommand GoToSubmoduleCommand
//        {
//			get { return new MvxCommand<SourceModel>(GoToSubmodule);}
//        }

//		private void GoToSubmodule(SourceModel x)
//        {
//            var nameAndSlug = x.GitUrl.Substring(x.GitUrl.IndexOf("/repos/", System.StringComparison.Ordinal) + 7);
//            var repoId = new RepositoryIdentifier(nameAndSlug.Substring(0, nameAndSlug.IndexOf("/git", System.StringComparison.Ordinal)));
//            var sha = x.GitUrl.Substring(x.GitUrl.LastIndexOf("/", System.StringComparison.Ordinal) + 1);
//            ShowViewModel<SourceTreeViewModel>(new NavObject {Username = repoId.Owner, Repository = repoId.Name, Branch = sha});
//        }

        public SourceTreeViewModel()
        {
			_content = new FilterableCollectionViewModel<SourceModel, SourceFilterModel>("SourceViewModel");
            _content.FilteringFunction = FilterModel;
            _content.Bind(x => x.Filter).Subscribe(_ => _content.Refresh());

            this.Bind(x => x.Filter).Subscribe(_ => _content.Refresh());

            GoToSourceCommand = ReactiveUI.ReactiveCommand.Create();
            GoToSourceCommand.OfType<SourceModel>().Subscribe(x =>
            {
                if (x.Type.Equals("dir", StringComparison.OrdinalIgnoreCase))
                {
                    ShowViewModel<SourceTreeViewModel>(new NavObject
                    {
                        Username = Username,
                        Branch = Branch,
                        Repository = Repository,
                        Path = x.Path
                    });
                }
                else if (x.Type.Equals("file", StringComparison.OrdinalIgnoreCase))
                {
                    ShowViewModel<SourceViewModel>(new SourceViewModel.NavObject 
                    { 
                        Name = x.Name, 
                        User = Username,
                        Repository = Repository, 
                        Branch = Branch, 
                        Path = x.Path 
                    });
                }
            });
        }
Example #2
0
 protected RepositoriesViewModel(string filterKey = "RepositoryController")
 {
     _repositories = new FilterableCollectionViewModel <RepositoryModel, RepositoriesFilterModel>(filterKey);
     _repositories.FilteringFunction = x => Repositories.Filter.Ascending ? x.OrderBy(y => y.Name) : x.OrderByDescending(y => y.Name);
     _repositories.GroupingFunction  = CreateGroupedItems;
     _repositories.Bind(x => x.Filter, Repositories.Refresh);
 }
        public NotificationsViewModel()
        {
            _notifications = new FilterableCollectionViewModel <NotificationModel, NotificationsFilterModel>("Notifications");
            _notifications.GroupingFunction = (n) => n.GroupBy(x => x.Repository.FullName);
            _notifications.Bind(x => x.Filter, () => LoadCommand.Execute(false));
            this.Bind(x => x.ShownIndex, x => {
                if (x == 0)
                {
                    _notifications.Filter = NotificationsFilterModel.CreateUnreadFilter();
                }
                else if (x == 1)
                {
                    _notifications.Filter = NotificationsFilterModel.CreateParticipatingFilter();
                }
                else
                {
                    _notifications.Filter = NotificationsFilterModel.CreateAllFilter();
                }
                ((IMvxCommand)ReadAllCommand).RaiseCanExecuteChanged();
            });
            this.Bind(x => x.IsLoading, ((IMvxCommand)ReadAllCommand).RaiseCanExecuteChanged);

            if (_notifications.Filter.Equals(NotificationsFilterModel.CreateUnreadFilter()))
            {
                _shownIndex = 0;
            }
            else if (_notifications.Filter.Equals(NotificationsFilterModel.CreateParticipatingFilter()))
            {
                _shownIndex = 1;
            }
            else
            {
                _shownIndex = 2;
            }
        }
        protected RepositoriesViewModel(string filterKey = "RepositoryController")
        {
			_repositories = new FilterableCollectionViewModel<RepositoryDetailedModel, RepositoriesFilterModel>(filterKey);
			_repositories.FilteringFunction = x => Repositories.Filter.Ascending ? x.OrderBy(y => y.Name) : x.OrderByDescending(y => y.Name);
            _repositories.GroupingFunction = CreateGroupedItems;
			_repositories.Bind(x => x.Filter, Repositories.Refresh);
        }
Example #5
0
//        public ICommand GoToSubmoduleCommand
//        {
//			get { return new MvxCommand<SourceModel>(GoToSubmodule);}
//        }

//		private void GoToSubmodule(SourceModel x)
//        {
//            var nameAndSlug = x.GitUrl.Substring(x.GitUrl.IndexOf("/repos/", System.StringComparison.Ordinal) + 7);
//            var repoId = new RepositoryIdentifier(nameAndSlug.Substring(0, nameAndSlug.IndexOf("/git", System.StringComparison.Ordinal)));
//            var sha = x.GitUrl.Substring(x.GitUrl.LastIndexOf("/", System.StringComparison.Ordinal) + 1);
//            ShowViewModel<SourceTreeViewModel>(new NavObject {Username = repoId.Owner, Repository = repoId.Name, Branch = sha});
//        }

        public SourceTreeViewModel()
        {
            _content = new FilterableCollectionViewModel <SourceModel, SourceFilterModel>("SourceViewModel");
            _content.FilteringFunction = FilterModel;
            _content.Bind(x => x.Filter).Subscribe(_ => _content.Refresh());

            this.Bind(x => x.Filter).Subscribe(_ => _content.Refresh());

            GoToSourceCommand = ReactiveUI.ReactiveCommand.Create();
            GoToSourceCommand.OfType <SourceModel>().Subscribe(x =>
            {
                if (x.Type.Equals("dir", StringComparison.OrdinalIgnoreCase))
                {
                    ShowViewModel <SourceTreeViewModel>(new NavObject
                    {
                        Username   = Username,
                        Branch     = Branch,
                        Repository = Repository,
                        Path       = x.Path
                    });
                }
                else if (x.Type.Equals("file", StringComparison.OrdinalIgnoreCase))
                {
                    ShowViewModel <SourceViewModel>(new SourceViewModel.NavObject
                    {
                        Name       = x.Name,
                        User       = Username,
                        Repository = Repository,
                        Branch     = Branch,
                        Path       = x.Path
                    });
                }
            });
        }
Example #6
0
        public RepositoriesViewModel(string username, string filterKey = "RepositoryController")
        {
            Username = username;

            _repositories = new FilterableCollectionViewModel <RepositoryModel, RepositoriesFilterModel>(filterKey);
            _repositories.FilteringFunction = x => _repositories.Filter.Ascending ? x.OrderBy(y => y.Name) : x.OrderByDescending(y => y.Name);
            _repositories.GroupingFunction  = CreateGroupedItems;
            _repositories.Bind(x => x.Filter, () => {
                Repositories.Refresh();
            });
        }
Example #7
0
        public SourceViewModel(string username, string slug, string branch = "master", string path = "")
        {
            Username   = username;
            Repository = slug;
            Branch     = branch;
            Path       = path;

            _content = new FilterableCollectionViewModel <ContentModel, SourceFilterModel>("SourceViewModel");
            _content.FilteringFunction = FilterModel;
            _content.Bind(x => x.Filter, () => _content.Refresh());
        }
        public void Init(NavObject nav)
        {
            Username   = nav.Username;
            Repository = nav.Repository;
            Simple     = nav.Simple;
            _issues    = new FilterableCollectionViewModel <IssueModel, IssuesFilterModel>("IssuesViewModel:" + Username + "/" + Repository);
            _issues.GroupingFunction = Group;
            _issues.Bind(x => x.Filter).Subscribe(_ => LoadCommand.Execute(true));

            _addToken = Messenger.SubscribeOnMainThread <IssueAddMessage>(x =>
            {
                if (x.Issue == null || !DoesIssueBelong(x.Issue))
                {
                    return;
                }
                Issues.Items.Insert(0, x.Issue);
            });

            _editToken = Messenger.SubscribeOnMainThread <IssueEditMessage>(x =>
            {
                if (x.Issue == null || !DoesIssueBelong(x.Issue))
                {
                    return;
                }

                var item = Issues.Items.FirstOrDefault(y => y.LocalId == x.Issue.LocalId);
                if (item == null)
                {
                    return;
                }

                var index = Issues.Items.IndexOf(item);

                using (Issues.DeferRefresh())
                {
                    Issues.Items.RemoveAt(index);
                    Issues.Items.Insert(index, x.Issue);
                }
            });

            _deleteToken = Messenger.SubscribeOnMainThread <IssueDeleteMessage>(x =>
            {
                var find = Issues.Items.FirstOrDefault(i => i.LocalId == x.Issue.LocalId);
                if (find != null)
                {
                    Issues.Items.Remove(find);
                }
            });

            _filterToken = Messenger.SubscribeOnMainThread <IssuesFilterMessage>(x => {
                _issues.Filter = x.Filter;
            });
        }
Example #9
0
		public void Init(NavObject nav)
		{
			Username = nav.Username;
			Repository = nav.Repository;
            Simple = nav.Simple;
			_issues = new FilterableCollectionViewModel<IssueModel, IssuesFilterModel>("IssuesViewModel:" + Username + "/" + Repository);
			_issues.GroupingFunction = Group;
			_issues.Bind(x => x.Filter, () => LoadCommand.Execute(true));

			_addToken = Messenger.SubscribeOnMainThread<IssueAddMessage>(x =>
			{
				if (x.Issue == null || !DoesIssueBelong(x.Issue))
					return;
				Issues.Items.Insert(0, x.Issue);
			});

			_editToken = Messenger.SubscribeOnMainThread<IssueEditMessage>(x =>
			{
				if (x.Issue == null || !DoesIssueBelong(x.Issue))
					return;
				
				var item = Issues.Items.FirstOrDefault(y => y.LocalId == x.Issue.LocalId);
				if (item == null)
					return;

				var index = Issues.Items.IndexOf(item);

				using (Issues.DeferRefresh())
				{
					Issues.Items.RemoveAt(index);
					Issues.Items.Insert(index, x.Issue);
				}
			});

            _deleteToken = Messenger.SubscribeOnMainThread<IssueDeleteMessage>(x =>
            {
                var find = Issues.Items.FirstOrDefault(i => i.LocalId == x.Issue.LocalId);
                if (find != null)
                    Issues.Items.Remove(find);
            });

            _filterToken = Messenger.SubscribeOnMainThread<IssuesFilterMessage>(x => {
                _issues.Filter = x.Filter;
            });
		}
Example #10
0
        public MyIssuesViewModel(IMessageService messageService = null)
        {
            messageService = messageService ?? GetService <IMessageService>();

            _issues = new FilterableCollectionViewModel <IssueModel, MyIssuesFilterModel>("MyIssues");
            _issues.GroupingFunction = Group;
            _issues.Bind(x => x.Filter).Subscribe(_ => LoadCommand.Execute(false));

            this.Bind(x => x.SelectedFilter).Subscribe(x =>
            {
                if (x == 0)
                {
                    _issues.Filter = MyIssuesFilterModel.CreateOpenFilter();
                }
                else if (x == 1)
                {
                    _issues.Filter = MyIssuesFilterModel.CreateClosedFilter();
                }
            });

            _editToken = messageService.Listen <IssueEditMessage>(x =>
            {
                if (x.Issue == null)
                {
                    return;
                }

                var item = Issues.Items.FirstOrDefault(y => y.Number == x.Issue.Number);
                if (item == null)
                {
                    return;
                }

                var index = Issues.Items.IndexOf(item);

                using (Issues.DeferRefresh())
                {
                    Issues.Items.RemoveAt(index);
                    Issues.Items.Insert(index, x.Issue);
                }
            });
        }
Example #11
0
 public NotificationsViewModel()
 {
     _notifications = new FilterableCollectionViewModel <NotificationModel, NotificationsFilterModel>("Notifications");
     _notifications.GroupingFunction = (n) => n.GroupBy(x => x.Repository.FullName);
     _notifications.Bind(x => x.Filter, async() =>
     {
         IsLoading = true;
         try
         {
             await Load(false);
         }
         catch (Exception e)
         {
         }
         finally
         {
             IsLoading = false;
         }
     });
 }
Example #12
0
        public PullRequestsViewModel(string username, string repository)
        {
            Username   = username;
            Repository = repository;

            _pullrequests = new FilterableCollectionViewModel <PullRequestModel, PullRequestsFilterModel>("PullRequests");
            _pullrequests.Bind(x => x.Filter, async() => {
                try
                {
                    IsLoading = true;
                    await Load(true);
                }
                catch (Exception e)
                {
                }
                finally
                {
                    IsLoading = false;
                }
            });
        }
Example #13
0
 public MyIssuesViewModel()
 {
     _issues = new FilterableCollectionViewModel <IssueModel, MyIssuesFilterModel>("MyIssues");
     _issues.GroupingFunction = Group;
     _issues.Bind(x => x.Filter, async() =>
     {
         try
         {
             IsLoading = true;
             await Load(true);
         }
         catch (Exception e)
         {
             //Do nothing...
         }
         finally
         {
             IsLoading = false;
         }
     });
 }
Example #14
0
        public NotificationsViewModel(
            IMessageService messageService         = null,
            IApplicationService applicationService = null)
        {
            _messageService                 = messageService ?? GetService <IMessageService>();
            _applicationService             = applicationService ?? GetService <IApplicationService>();
            _notifications                  = new FilterableCollectionViewModel <Octokit.Notification, NotificationsFilterModel>("Notifications");
            _notifications.GroupingFunction = (n) => n.GroupBy(x => x.Repository.FullName);
            _notifications.Bind(x => x.Filter).Subscribe(_ => LoadCommand.Execute(false));

            this.Bind(x => x.ShownIndex).Subscribe(x => {
                if (x == 0)
                {
                    _notifications.Filter = NotificationsFilterModel.CreateUnreadFilter();
                }
                else if (x == 1)
                {
                    _notifications.Filter = NotificationsFilterModel.CreateParticipatingFilter();
                }
                else
                {
                    _notifications.Filter = NotificationsFilterModel.CreateAllFilter();
                }
                ((IMvxCommand)ReadAllCommand).RaiseCanExecuteChanged();
            });
            this.Bind(x => x.IsLoading).Subscribe(_ => ((IMvxCommand)ReadAllCommand).RaiseCanExecuteChanged());

            if (_notifications.Filter.Equals(NotificationsFilterModel.CreateUnreadFilter()))
            {
                _shownIndex = 0;
            }
            else if (_notifications.Filter.Equals(NotificationsFilterModel.CreateParticipatingFilter()))
            {
                _shownIndex = 1;
            }
            else
            {
                _shownIndex = 2;
            }
        }
Example #15
0
        public void Init(NavObject nav)
        {
            Username   = nav.Username;
            Repository = nav.Repository;
            _issues    = new FilterableCollectionViewModel <IssueModel, IssuesFilterModel>("IssuesViewModel:" + Username + "/" + Repository);
            _issues.GroupingFunction = Group;
            _issues.Bind(x => x.Filter).Subscribe(_ => LoadCommand.Execute(true));

            _addToken = _messageService.Listen <IssueAddMessage>(x =>
            {
                if (x.Issue == null || !DoesIssueBelong(x.Issue))
                {
                    return;
                }
                Issues.Items.Insert(0, x.Issue);
            });

            _editToken = _messageService.Listen <IssueEditMessage>(x =>
            {
                if (x.Issue == null || !DoesIssueBelong(x.Issue))
                {
                    return;
                }

                var item = Issues.Items.FirstOrDefault(y => y.Number == x.Issue.Number);
                if (item == null)
                {
                    return;
                }

                var index = Issues.Items.IndexOf(item);

                using (Issues.DeferRefresh())
                {
                    Issues.Items.RemoveAt(index);
                    Issues.Items.Insert(index, x.Issue);
                }
            });
        }
Example #16
0
        public IssuesViewModel(string user, string slug)
        {
            User = user;
            Slug = slug;

            _issues = new FilterableCollectionViewModel <IssueModel, IssuesFilterModel>("IssuesViewModel:" + user + "/" + slug);
            _issues.GroupingFunction = GroupModel;
            _issues.Bind(x => x.Filter, async() =>
            {
                IsLoading = true;
                try
                {
                    await Load(false);
                }
                catch (Exception e)
                {
                }
                finally
                {
                    IsLoading = false;
                }
            });
        }
Example #17
0
//		private void GoToSubmodule(SourceModel x)
//        {
//            var nameAndSlug = x.GitUrl.Substring(x.GitUrl.IndexOf("/repos/", System.StringComparison.Ordinal) + 7);
//            var repoId = new RepositoryIdentifier(nameAndSlug.Substring(0, nameAndSlug.IndexOf("/git", System.StringComparison.Ordinal)));
//            var sha = x.GitUrl.Substring(x.GitUrl.LastIndexOf("/", System.StringComparison.Ordinal) + 1);
//            ShowViewModel<SourceTreeViewModel>(new NavObject {Username = repoId.Owner, Repository = repoId.Name, Branch = sha});
//        }

        public SourceTreeViewModel()
        {
            _content = new FilterableCollectionViewModel <SourceModel, SourceFilterModel>("SourceViewModel");
            _content.FilteringFunction = FilterModel;
            _content.Bind(x => x.Filter, _content.Refresh);
        }
Example #18
0
        public NotificationsViewModel()
        {
            _notifications = new FilterableCollectionViewModel<NotificationModel, NotificationsFilterModel>("Notifications");
            _notifications.GroupingFunction = (n) => n.GroupBy(x => x.Repository.FullName);
			_notifications.Bind(x => x.Filter, () => LoadCommand.Execute(false));
			this.Bind(x => x.ShownIndex, x => {
				if (x == 0) _notifications.Filter = NotificationsFilterModel.CreateUnreadFilter();
				else if (x == 1) _notifications.Filter = NotificationsFilterModel.CreateParticipatingFilter();
				else _notifications.Filter = NotificationsFilterModel.CreateAllFilter();
				((IMvxCommand)ReadAllCommand).RaiseCanExecuteChanged();
			});
			this.Bind(x => x.IsLoading, ((IMvxCommand)ReadAllCommand).RaiseCanExecuteChanged);

			if (_notifications.Filter.Equals(NotificationsFilterModel.CreateUnreadFilter()))
				_shownIndex = 0;
			else if (_notifications.Filter.Equals(NotificationsFilterModel.CreateParticipatingFilter()))
				_shownIndex = 1;
			else
				_shownIndex = 2;

        }
Example #19
0
 public SourceTreeViewModel()
 {
     _content = new FilterableCollectionViewModel<ContentModel, SourceFilterModel>("SourceViewModel");
     _content.FilteringFunction = FilterModel;
     _content.Bind(x => x.Filter, _content.Refresh);
 }