/// <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)); } }