private static SlideBulk ComposeSlideBulk(PresentationInfo presentationInfo, IEnumerable<TechnicalServices.Persistence.SystemPersistence.Presentation.Slide> slideArr) { XmlSerializableDictionary<int, SlideLinkList> linkDic = new XmlSerializableDictionary<int, SlideLinkList>(); XmlSerializableDictionary<int, Point> positionDic = new XmlSerializableDictionary<int, Point>(); SlideBulk slideBulk = new SlideBulk(); foreach (TechnicalServices.Persistence.SystemPersistence.Presentation.Slide slide in slideArr) { slideBulk.SlideList.Add(slide); positionDic[slide.Id] = presentationInfo.SlidePositionList[slide.Id]; IList<LinkInfo> linkInfoList; if (!presentationInfo.SlideLinkInfoList.TryGetValue(slide.Id, out linkInfoList)) continue; foreach (LinkInfo linkInfo in linkInfoList) { if (!slideArr.Any(sl => sl.Id == linkInfo.NextSlideId)) continue; SlideLinkList slideLinkList; if (!linkDic.TryGetValue(slide.Id, out slideLinkList)) { linkDic[slide.Id] = slideLinkList = new SlideLinkList(); } slideLinkList.LinkList.Add(linkInfo.CreateLinkStub()); } } slideBulk.LinkDictionary = linkDic; slideBulk.SlidePositionList = positionDic; return slideBulk; }
public void SavePresentationChanges() { Presentation.Presentation m_Presentation = PresentationController.Instance.Presentation; m_Presentation.LinkDictionary.Clear(); m_Presentation.SlideList.Clear(); m_Presentation.SlidePositionList.Clear(); foreach (SlideView view in Model.Nodes.OfType<SlideView>()) { m_Presentation.SlideList.Add(view.Slide); SlideLinkList links = new SlideLinkList(); foreach (SlideLink link in view.GetOutgoingLinks()) { Presentation.Link l = new Presentation.Link { NextSlide = link.ToSlideView.Slide, IsDefault = link.IsDefault }; if (!links.LinkList.Contains(l)) links.LinkList.Add(l); } int viewSlideId = view.Slide.Id; if (!m_Presentation.LinkDictionary.ContainsKey(viewSlideId)) m_Presentation.LinkDictionary.Add(viewSlideId, links); } foreach (var slide in slideViews()) { Point p = slide.GetPosition(); m_Presentation.SlidePositionList.Add(slide.Slide.Id, p); } m_Presentation.StartSlideId = m_startSlideId; }
//[Obsolete] //public static Presentation SavePresentationLevelChanges(this Presentation presentation, Presentation other) //{ // presentation.Name = other.Name; // presentation.StartSlide = other.StartSlide; // presentation.Author = other.Author; // presentation.Comment = other.Comment; // // и раскладку слайдов // foreach (Slide slide in presentation.SlideList) // { // if (slide.State == SlideState.New) // { // slide.State = SlideState.Normal; // continue; // } // slide.LinkList.Clear(); // Slide otherSlide = other.SlideList.Find(sl => sl.Id == slide.Id); // foreach (Link otherLink in otherSlide.LinkList) // { // slide.LinkList.Add( // new Link() // {IsDefault = otherLink.IsDefault, // NextSlide = presentation.SlideList.Find (sl => sl.Id == otherLink.NextSlide.Id) // }); // } // } // // группы дисплеев // presentation.DisplayGroupList.Clear(); // presentation.DisplayGroupList.AddRange(other.DisplayGroupList); // // позиции слайдов // presentation.SlidePositionList.Clear(); // foreach (KeyValuePair<int, Point> keyValuePair in other.SlidePositionList) // { // presentation.SlidePositionList.Add(keyValuePair.Key, keyValuePair.Value); // } // return presentation; //} //public static void ChangeResourceContentPathWithNewName(this Presentation presentation, // string oldName, string newName) //{ // foreach (Slide slide in presentation.SlideList) // { // slide.ChangeResourceContentPathWithNewName(oldName,newName); // } //} public static Presentation SavePresentationLevelChanges(this Presentation presentation, PresentationInfo presentationInfoOther) { presentation.Name = presentationInfoOther.Name; presentation.StartSlide = presentation.SlideList.Find( sl => sl.Id == presentationInfoOther.StartSlideId); if (presentation.StartSlide == null) throw new Exception(String.Format("Slide {0} not exists", presentationInfoOther.StartSlideId)); presentation.Author = presentationInfoOther.Author; presentation.Comment = presentationInfoOther.Comment; // группы дисплеев presentation.DisplayGroupList.Clear(); presentation.DisplayGroupList.AddRange(presentationInfoOther.DisplayGroupList); // позиции слайдов presentation.SlidePositionList.Clear(); foreach (KeyValuePair<int, Point> keyValuePair in presentationInfoOther.SlidePositionList) { presentation.SlidePositionList.Add(keyValuePair.Key, keyValuePair.Value); } presentation.DisplayPositionList.Clear(); foreach (KeyValuePair<string, int> keyValuePair in presentationInfoOther.DisplayPositionList) { presentation.DisplayPositionList.Add(keyValuePair.Key, keyValuePair.Value); } // линки presentation.LinkDictionary.Clear(); foreach (KeyValuePair<int, IList<LinkInfo>> pair in presentationInfoOther.SlideLinkInfoList) { SlideLinkList slideLinkList = new SlideLinkList(); foreach (LinkInfo linkInfo in pair.Value) { Link link = new Link(); link.IsDefault = linkInfo.IsDefault; link.NextSlide = presentation.SlideList.Find( sl => sl.Id == linkInfo.NextSlideId); if (link.NextSlide == null) throw new Exception( String.Format("Slide {0} not exists", linkInfo.NextSlideId)); slideLinkList.LinkList.Add(link); } presentation.LinkDictionary.Add(pair.Key, slideLinkList); } return presentation; }
///// <summary> ///// Фабрика сценария ///// </summary> //public static Presentation.Presentation NewPresentation(string AName, string authorName) //{ // Presentation.Presentation result = new Presentation.Presentation() { Name = AName, Author = authorName }; // Slide slide = new Slide { Id = 1, LabelId = -1, Name = "Сцена 1", Author = authorName, Modified = DateTime.Now, State = SlideState.New }; // result.SlideList.Add(slide); // result.StartSlide = slide; // return result; //} /// <summary> /// Фабрика сценария /// </summary> public static Presentation.Presentation NewPresentation(string AName, string authorName, int numberOfSlides) { Presentation.Presentation result = new Presentation.Presentation() { Name = AName, Author = authorName }; DateTime now = DateTime.Now; for (int i = 1; i<=numberOfSlides; i++) { Slide slide = new Slide { Id = i, LabelId = -1, Name = string.Format("Сцена {0}", i), Author = authorName, Modified = now, State = SlideState.New }; result.SlideList.Add(slide); if (i == 1) result.StartSlide = slide; } for (int i = 0; i < numberOfSlides - 1; i++ ) { SlideLinkList list = new SlideLinkList(); list.LinkList.Add(new Link() { IsDefault = true, NextSlide = result.SlideList[i+1]}); result.LinkDictionary.Add(i + 1, list); } return result; }