Exemple #1
0
        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;
        }
Exemple #3
0
        //[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;
        }