public static CourseTreeData Load(DirectoryInfo directory) { var result = new CourseTreeData(); result.Videos = HeadedJsonFormat.Read <List <VideoPublishSummary> >( new FileInfo(Path.Combine(directory.FullName, VideoListName))); result.Structure = HeadedJsonFormat.Read <CourseStructure>(directory); return(result); }
public static Item Build <TFolderItem, TLectureItem, TVideoItem>(CourseTreeData globalData) where TFolderItem : FolderItem, new() where TLectureItem : LectureItem, new() where TVideoItem : VideoItem, new() { var result = BuildTopic <TFolderItem, TLectureItem, TVideoItem>(globalData, globalData.Structure.RootTopic); result.Root = result; lectureNumber = 0; InitializeItem(result); return(result); }
public static void RunCatalogWindow() { var videos = publishingModel.NonDistributedVideos.Concat(publishingModel.Videos).ToList(); var globalData = new CourseTreeData { Structure = publishingModel.CourseStructure, Videos = videos }; var model = new Tuto.TreeEditor.PublishViewModel(globalData); var wnd = new Tuto.TreeEditor.PublishPanel(); wnd.DataContext = model; wnd.Closed += wnd_Closed; Application.MainWindow.Hide(); wnd.Show(); }
public static Item BuildTopic <TFolderItem, TLectureItem, TVideoItem>(CourseTreeData globalData, Topic topic) where TFolderItem : FolderItem, new() where TLectureItem : LectureItem, new() where TVideoItem : VideoItem, new() { Item item = null; var videos = globalData.Structure.VideoToTopicRelations.Where(z => z.TopicGuid == topic.Guid).OrderBy(z => z.NumberInTopic).ToList(); if (videos.Count != 0 && topic.Items.Count != 0) { throw new Exception("Topic " + topic.Caption + " contains both videos and subtopics"); } if (videos.Count == 0) { item = new TFolderItem() { Topic = topic }; foreach (var e in topic.Items) { item.Children.Add(BuildTopic <TFolderItem, TLectureItem, TVideoItem>(globalData, e)); } return(item); } item = new TLectureItem() { Topic = topic }; foreach (var e in videos) { var video = globalData.Videos.Where(z => z.Guid == e.VideoGuid).FirstOrDefault(); if (video == null) { continue; } item.Children.Add(new TVideoItem { Video = video }); } return(item); }
public void Reload() { var data = new CourseTreeData { Structure = Model.CourseStructure, Videos = Model.Videos }; var root = ItemTreeBuilder.Build <FolderWrap, LectureWrap, VideoWrap>(data); Root = new[] { root }; base.NotifyAll(); sources = sourcesFactory().ToList(); foreach (var source in sources) { source.Initialize(Model); } Load(); CreateCommandBlocks(); }