private void ShowDisplayNumber(MovieSeriesEntryViewModel vm) { vm.DisplayNumber = (this.Entries .Where(entry => entry.SequenceNumber < vm.SequenceNumber && entry.DisplayNumber.HasValue) .Select(entry => entry.DisplayNumber) .Max() ?? (this.GetFirstDisplayNumber() - 1)) + 1; this.IncrementNumbers(vm.SequenceNumber); }
private void SwapEntryNumbers(MovieSeriesEntryViewModel first, MovieSeriesEntryViewModel second) { first.SequenceNumber++; second.SequenceNumber--; if (first.DisplayNumber.HasValue) { first.DisplayNumber++; } if (second.DisplayNumber.HasValue) { second.DisplayNumber--; } }
private MovieSeriesEntryViewModel CreateEntryViewModel(MovieSeriesEntry entry) { var viewModel = new MovieSeriesEntryViewModel(entry, this, this.ResourceManager, this.Scheduler); var subsciptions = new CompositeDisposable(); viewModel.Select .Select(_ => viewModel) .InvokeCommand(this.SelectEntry) .DisposeWith(subsciptions); viewModel.MoveUp .Select(_ => viewModel) .Subscribe(this.MoveEntryUp) .DisposeWith(subsciptions); viewModel.MoveDown .Select(_ => viewModel) .Subscribe(this.MoveEntryDown) .DisposeWith(subsciptions); viewModel.HideDisplayNumber .Select(_ => viewModel) .Subscribe(this.HideDisplayNumber) .DisposeWith(subsciptions); viewModel.ShowDisplayNumber .Select(_ => viewModel) .Subscribe(this.ShowDisplayNumber) .DisposeWith(subsciptions); viewModel.Delete .WhereNotNull() .InvokeCommand(this.DetachEntry) .DisposeWith(subsciptions); viewModel.Delete .WhereNotNull() .Discard() .Subscribe(subsciptions.Dispose) .DisposeWith(subsciptions); return(viewModel); }
private void HideDisplayNumber(MovieSeriesEntryViewModel vm) { vm.DisplayNumber = null; this.DecrementNumbers(vm.SequenceNumber); }
private void MoveEntryDown(MovieSeriesEntryViewModel vm) => this.SwapEntryNumbers(vm, this.Entries.First(e => e.SequenceNumber == vm.SequenceNumber + 1));
private void MoveEntryUp(MovieSeriesEntryViewModel vm) => this.SwapEntryNumbers(this.Entries.First(e => e.SequenceNumber == vm.SequenceNumber - 1), vm);