Beispiel #1
0
            private void InsertDeck(FileInfo file)
            {
                ///get the index of the current slide that's selected,
                ///so that we can insert our deck there
                int current_slide_index;

                using (Synchronizer.Lock(deck_traversal_.SyncRoot)) {
                    current_slide_index = deck_traversal_.AbsoluteCurrentSlideIndex;
                }

                ///if current_slide_index == -1, this means there are no slides in current deck.
                ///This new slide we try to insert is the first slide.
                if (current_slide_index < 0)
                {
                    current_slide_index = 0;
                }

                /// get the deck of slides to insert
                DeckModel deck = null;

                if (file.Extension == ".cp3")
                {
                    deck = Decks.PPTDeckIO.OpenCP3(file);
                }
                else if (file.Extension == ".ppt")
                {
                    deck = Decks.PPTDeckIO.OpenPPT(file);
                }
                else if (file.Extension == ".pptx")
                {
                    deck = Decks.PPTDeckIO.OpenPPT(file);
                }
                else if (file.Extension == ".xps")
                {
                    deck = Decks.XPSDeckIO.OpenXPS(file);
                }
                if (deck == null)       // This should never happen,  since we have filtered on extension
                {
                    throw new Exception("Wrong file extension");
                }
                else
                {
                    deck_.InsertDeck(deck);
                }

                using (Synchronizer.Lock(deck.TableOfContents.SyncRoot)) {
                    using (Synchronizer.Lock(deck_.TableOfContents.SyncRoot)) {
                        ///insert each slide from the deck into our current deck.
                        for (int i = 0; i < deck.TableOfContents.Entries.Count; i++)
                        {
                            ///create our TOC entry
                            TableOfContentsModel.Entry entry = new TableOfContentsModel.Entry(Guid.NewGuid(), deck_.TableOfContents, deck.TableOfContents.Entries[i].Slide);
                            ///insert it into our TOC
                            this.m_WhereTheEntriesGo.Insert(current_slide_index + i, entry);//Natalie - should it be +1?
                        }
                    }
                }
            }