public PublishViewModel(Topic topicRoot, List<FinishedVideo> videos) { Root = new TopicWrap[] { new TopicWrap(topicRoot) }; UnassignedVideos = new ObservableCollection<VideoWrap>(); foreach (var e in videos.Where(z => z.TopicGuid == Guid.Empty)) UnassignedVideos.Add(new VideoWrap(e)); foreach(var e in Root[0].Subtree.OfType<TopicWrap>()) foreach (var v in videos.Where(z => z.TopicGuid == e.Topic.Guid).OrderBy(z => z.NumberInTopic)) { var vw = new VideoWrap(v); e.Items.Add(vw); vw.Parent = e; } AddCommand = new RelayCommand(Add, () => SelectedItem != null && SelectedItem is TopicWrap); RemoveCommand = new RelayCommand(Remove, () => SelectedItem != null && SelectedItem != Root[0]); DeleteCommand = new RelayCommand(DeleteFromList, () => SelectedItemInUnassignedList != null); }
public PublishViewModel(CourseTreeData globalData) { this.givenVideos = globalData.Videos; Root = new TopicWrap[] { new TopicWrap(globalData.Structure.RootTopic) }; UnassignedVideos = new ObservableCollection<VideoWrap>(); foreach (var e in globalData.Videos.Where(z=>!globalData.Structure.VideoToTopicRelations.Any(x=>x.VideoGuid==z.Guid))) UnassignedVideos.Add(new VideoWrap(e)); foreach(var e in Root[0].Subtree.OfType<TopicWrap>()) foreach (var v in globalData.Structure.VideoToTopicRelations.Where(z => z.TopicGuid == e.Topic.Guid).OrderBy(z => z.NumberInTopic)) { var pv = globalData.Videos.Where(z=>z.Guid==v.VideoGuid).FirstOrDefault(); if (pv==null) continue; var vw = new VideoWrap(pv); e.Items.Add(vw); vw.Parent = e; } AddCommand = new RelayCommand(Add, () => SelectedItem != null && SelectedItem is TopicWrap); RemoveCommand = new RelayCommand(Remove, () => SelectedItem != null && SelectedItem != Root[0]); DeleteCommand = new RelayCommand(DeleteFromList, () => SelectedItemInUnassignedList != null); }
public PublishViewModel(Topic topicRoot, List <FinishedVideo> videos) { Root = new TopicWrap[] { new TopicWrap(topicRoot) }; UnassignedVideos = new ObservableCollection <VideoWrap>(); foreach (var e in videos.Where(z => z.TopicGuid == Guid.Empty)) { UnassignedVideos.Add(new VideoWrap(e)); } foreach (var e in Root[0].Subtree.OfType <TopicWrap>()) { foreach (var v in videos.Where(z => z.TopicGuid == e.Topic.Guid).OrderBy(z => z.NumberInTopic)) { var vw = new VideoWrap(v); e.Items.Add(vw); vw.Parent = e; } } AddCommand = new RelayCommand(Add, () => SelectedItem != null && SelectedItem is TopicWrap); RemoveCommand = new RelayCommand(Remove, () => SelectedItem != null && SelectedItem != Root[0]); DeleteCommand = new RelayCommand(DeleteFromList, () => SelectedItemInUnassignedList != null); }