Exemple #1
0
        /// <summary>
        /// Initialize with the page that we should track.
        /// </summary>
        /// <param name="page">The PDF page to be rendered</param>
        /// <remarks>We will call PeparePageAsync on the page</remarks>
        public SlideThumbViewModel(IObservable <Tuple <string, IObservable <PdfPage> > > pageInfo, Lazy <FullTalkAsStripViewModel> fullVM, int pageNumber)
        {
            PDFPageVM = new PDFPageViewModel(pageInfo);
            _fullVM   = fullVM;

            // And the command to open up a full view of the talk, at max size.
            OpenFullView = ReactiveCommand.Create();
            OpenFullView
            .Subscribe(_ => fullVM.Value.LoadPage(pageNumber));
        }
        /// <summary>
        /// Create the VM. We generate a first page hero slide.
        /// </summary>
        /// <param name="file">The PDF File to generate. If null, we will make this VM as invalid</param>
        public FirstSlideHeroViewModel(PDFFile file, Lazy <FullTalkAsStripViewModel> fullVM)
        {
            // If we are actually connected to a file, then
            // - setup the hero slide
            // - a button to show all slides
            _heroPageUC   = null;
            HaveHeroSlide = false;
            if (file != null)
            {
                // Hero slide. Tricky because we can't display until
                // a fetch has been done on the PDF data.
                var pdf = new PDFPageViewModel(file.GetPageStreamAndCacheInfo(0));
                _heroPageUC = pdf.LoadSize()
                              .Select(_ => pdf)
                              .ToProperty(this, m => m.HeroPageUC, scheduler: RxApp.MainThreadScheduler);

                HaveHeroSlide = true;

                // Allow a full view
                OpenFullView = ReactiveCommand.Create();
                OpenFullView
                .Subscribe(_ => fullVM.Value.LoadPage(0));
            }
        }