public TopicWrap(Topic topic) { this.Topic = topic; foreach (var e in topic.Items) { var child = new TopicWrap(e); Items.Add(child); child.Parent = this; } }
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 void Commit(TopicWrap wrap) { wrap.Topic.Items.Clear(); foreach (var e in wrap.Items) { if (e is TopicWrap) { var tw = e as TopicWrap; Commit(tw); wrap.Topic.Items.Add(tw.Topic); continue; } if (e is VideoWrap) { var vw = e as VideoWrap; vw.Video.TopicGuid = wrap.Topic.Guid; vw.Video.NumberInTopic = wrap.Items.IndexOf(vw); } } }
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); }
public void Commit(TopicWrap wrap, CourseStructure structure, List<VideoPublishSummary> videos) { wrap.Topic.Items.Clear(); foreach (var e in wrap.Items) { if (e is TopicWrap) { var tw = e as TopicWrap; Commit(tw,structure,videos); wrap.Topic.Items.Add(tw.Topic); continue; } if (e is VideoWrap) { var vw = e as VideoWrap; var relation = new VideoToTopicRelation(); relation.TopicGuid = wrap.Topic.Guid; relation.NumberInTopic = wrap.Items.IndexOf(vw); relation.VideoGuid = vw.Video.Guid; structure.VideoToTopicRelations.Add(relation); videos.Add(vw.Video); } } }
public void Commit(TopicWrap wrap, CourseStructure structure) { wrap.Topic.Items.Clear(); foreach (var e in wrap.Items) { if (e is TopicWrap) { var tw = e as TopicWrap; Commit(tw,structure); wrap.Topic.Items.Add(tw.Topic); continue; } if (e is VideoWrap) { var vw = e as VideoWrap; var relation = new VideoToTopicRelation(); relation.TopicGuid = wrap.Topic.Guid; relation.NumberInTopic = wrap.Items.IndexOf(vw); relation.VideoGuid = vw.Video.Guid; structure.VideoToTopicRelations.Add(relation); } } }