Beispiel #1
0
        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);
        }
Beispiel #2
0
        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();
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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();
        }