private int CompareEntries(MovieSeriesEntry left, MovieSeriesEntry right) { if (left.ParentSeries.IsStrictDescendantOf(right.ParentSeries)) { return(left.ParentSeries.GetAllAncestors() .Where(a => a.Entry != null) .First(a => a.Entry !.ParentSeriesId == right.ParentSeriesId) .Entry ! .SequenceNumber .CompareTo(right.SequenceNumber)); } if (right.ParentSeries.IsStrictDescendantOf(left.ParentSeries)) { return(left.SequenceNumber.CompareTo( right.ParentSeries.GetAllAncestors() .Where(a => a.Entry != null) .First(a => a.Entry !.ParentSeriesId == left.ParentSeriesId) .Entry ! .SequenceNumber)); } return(this.Compare( new MovieSeriesListItem(left.ParentSeries), new MovieSeriesListItem(right.ParentSeries))); }
private MovieSeriesEntry OnDetachEntry(MovieSeriesEntry entry) { this.DecrementNumbers(entry.SequenceNumber); this.Entries .Where(e => e.SequenceNumber >= entry.SequenceNumber) .ForEach(e => e.SequenceNumber--); this.entriesSource.Remove(entry); return(entry); }
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); }
public ListItem EntryToListItem(MovieSeriesEntry entry) => entry.Movie != null ? new MovieListItem(entry.Movie) : entry.Series != null ? (ListItem) new SeriesListItem(entry.Series) : new MovieSeriesListItem(entry.MovieSeries !);