Beispiel #1
0
        public MyIssuesViewModel(ISessionService sessionService)
            : base(sessionService)
        {
            _sessionService = sessionService;

            Title  = "My Issues";
            Filter = MyIssuesFilterModel.CreateOpenFilter();

            _selectedFilter = this.WhenAnyValue(x => x.Filter)
                              .Select(x =>
            {
                if (x == null || _openFilter.Equals(x))
                {
                    return(0);
                }
                return(_closedFilter.Equals(x) ? 1 : -1);
            })
                              .ToProperty(this, x => x.SelectedFilter);

            this.WhenAnyValue(x => x.Filter).Skip(1).Subscribe(filter => {
                IssuesBacking.Clear();
                LoadCommand.ExecuteIfCan();
                CustomFilterEnabled = !(filter == _closedFilter || filter == _openFilter);
            });

            GoToFilterCommand = ReactiveCommand.Create();
            GoToFilterCommand.Subscribe(_ => {
                var vm = this.CreateViewModel <MyIssuesFilterViewModel>();
                vm.Init(Filter);
                vm.SaveCommand.Subscribe(filter => Filter = filter);
                NavigateTo(vm);
            });
        }
        public override void ViewWillAppear(bool animated)
        {
            if (ToolbarItems != null && !IsSearching)
            {
                NavigationController.SetToolbarHidden(false, animated);
            }
            base.ViewWillAppear(animated);

            //Before we select which one, make sure we detach the event handler or silly things will happen
            _viewSegment.ValueChanged -= SegmentValueChanged;

            //Select which one is currently selected
            if (ViewModel.Issues.Filter.Equals(MyIssuesFilterModel.CreateOpenFilter()))
            {
                _viewSegment.SelectedSegment = 0;
            }
            else if (ViewModel.Issues.Filter.Equals(MyIssuesFilterModel.CreateClosedFilter()))
            {
                _viewSegment.SelectedSegment = 1;
            }
            else
            {
                _viewSegment.SelectedSegment = 2;
            }

            _viewSegment.ValueChanged += SegmentValueChanged;
        }
Beispiel #3
0
 public MyIssuesFilterViewModel Init(MyIssuesFilterModel model)
 {
     Ascending  = model.Ascending;
     FilterType = model.FilterType;
     Labels     = model.Labels;
     State      = model.Open;
     SortType   = model.SortType;
     return(this);
 }
Beispiel #4
0
        private MyIssuesFilterModel CreateFilterModel()
        {
            var model = new MyIssuesFilterModel();

            model.FilterType = _filter.Value;
            model.Open       = _open.Value;
            model.Labels     = _labels.Value;
            model.SortType   = _sort.Value;
            model.Ascending  = _asc.Value;
            return(model);
        }
Beispiel #5
0
        public MyIssuesViewModel(IApplicationService applicationService)
        {
            Title  = "My Issues";
            Filter = MyIssuesFilterModel.CreateOpenFilter();

            _selectedFilter = this.WhenAnyValue(x => x.Filter)
                              .Select(x =>
            {
                if (x == null || _openFilter.Equals(x))
                {
                    return(0);
                }
                return(_closedFilter.Equals(x) ? 1 : -1);
            })
                              .ToProperty(this, x => x.SelectedFilter);

            this.WhenAnyValue(x => x.Filter).Skip(1).Subscribe(LoadCommand.ExecuteIfCan);

            //Filter = applicationService.Account.Filters.GetFilter<MyIssuesFilterModel>("MyIssues");
//            Issues.GroupFunc = x =>
//            {
//                var @group = base.Group(model);
//                if (@group != null) return @group;
//
//                try
//                {
//                    var regex = new System.Text.RegularExpressions.Regex("repos/(.+)/issues/");
//                    return model.GroupBy(x => regex.Match(x.Url).Groups[1].Value).ToList();
//                }
//                catch (Exception e)
//                {
//                    return null;
//                }
//            };



            LoadCommand = ReactiveCommand.CreateAsyncTask(t =>
            {
                var filter    = Filter.FilterType.ToString().ToLower();
                var direction = Filter.Ascending ? "asc" : "desc";
                var state     = Filter.Open ? "open" : "closed";
                var sort      = Filter.SortType == BaseIssuesFilterModel.Sort.None
                    ? null : Filter.SortType.ToString().ToLower();
                var labels = string.IsNullOrEmpty(Filter.Labels) ? null : Filter.Labels;

                var request = applicationService.Client.AuthenticatedUser.Issues.GetAll(sort: sort, labels: labels,
                                                                                        state: state, direction: direction, filter: filter);
                return(IssuesCollection.SimpleCollectionLoad(request, t as bool?));
            });
        }
 void SegmentValueChanged(object sender, EventArgs e)
 {
     if (_viewSegment.SelectedSegment == 0)
     {
         ViewModel.Issues.ApplyFilter(MyIssuesFilterModel.CreateOpenFilter(), true);
     }
     else if (_viewSegment.SelectedSegment == 1)
     {
         ViewModel.Issues.ApplyFilter(MyIssuesFilterModel.CreateClosedFilter(), true);
     }
     else if (_viewSegment.SelectedSegment == 2)
     {
         var filter = new MyIssuesFilterViewController(ViewModel.Issues);
         var nav    = new UINavigationController(filter);
         PresentViewController(nav, true, null);
     }
 }
Beispiel #7
0
        public MyIssuesViewModel(IApplicationService applicationService)
        {
            _applicationService = applicationService;

            Title  = "My Issues";
            Filter = MyIssuesFilterModel.CreateOpenFilter();

            _selectedFilter = this.WhenAnyValue(x => x.Filter)
                              .Select(x =>
            {
                if (x == null || _openFilter.Equals(x))
                {
                    return(0);
                }
                return(_closedFilter.Equals(x) ? 1 : -1);
            })
                              .ToProperty(this, x => x.SelectedFilter);

            this.WhenAnyValue(x => x.Filter).Skip(1).Subscribe(_ =>
            {
                IssuesBacking.Clear();
                LoadCommand.ExecuteIfCan();
            });
        }