/// <summary> /// Выполняет загрузку презентации и дополнительных данных /// </summary> public void AssignPresentation(Presentation.Presentation APresentation, PresentationInfo APresentationInfo) { m_Presentation = APresentation; m_PresentationInfo = APresentationInfo; if (!DesignerClient.Instance.IsStandAlone) { SubscribeForMonitor(true); } }
void PresentationNotifier_OnObjectChanged(object sender, NotifierEventArg<IList<ObjectInfo>> e) { if (e.Data != null) { foreach (ObjectInfo info in e.Data) { if (!_identity.Equals(info.UserIdentity)) { if (info.ObjectKey.GetObjectType() == ObjectType.Presentation) { if (m_Presentation.UniqueName == ((PresentationKey)info.ObjectKey).PresentationUniqueName && !PresentationLocked) { m_PresentationInfo = DesignerClient.Instance.PresentationWorker.GetPresentationInfo(m_Presentation.UniqueName); Slide[] slides = GetLockedSlides(); m_Presentation = m_PresentationInfo.CreatePresentationStub(); //merge foreach (Slide s in slides) { Slide dest = m_Presentation.SlideList.Find(sl => sl.Id == s.Id); if (dest == null) continue; dest.SaveSlideLevelChanges(s); dest.IsLocked = s.IsLocked; dest.Cached = s.Cached; dest.State = s.State; //dest.SourceList.Clear(); //dest.SourceList.AddRange(s.SourceList); //dest.DeviceList.Clear(); //dest.DeviceList.AddRange(s.DeviceList); //dest.DisplayList.Clear(); //dest.DisplayList.AddRange(s.DisplayList); } //update presentation if (OnPresentationChangedExternally != null) OnPresentationChangedExternally(); continue; } } if (info.ObjectKey.GetObjectType() == ObjectType.Slide) { string presentationUniqueName = ((PresentationKey) ((SlideKey) info.ObjectKey).PresentationKey).PresentationUniqueName; int slideId = ((SlideKey) info.ObjectKey).Id; if (presentationUniqueName == this.m_Presentation.UniqueName) { Slide slide = m_Presentation.SlideList.FirstOrDefault(s => s.Id == ((SlideKey)info.ObjectKey).Id); if (slide != null) { slide.Cached = false; LoadSlide(slide); //refresh slide data if (OnSlideChangedExternally != null) OnSlideChangedExternally(slide); continue; } } } } } } }
///// <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; }