public PpGenerator(Func<IBuilder> builderResolver, Voortgang voortgangDelegate, GereedMelding gereedmeldingDelegate) { _builderResolver = builderResolver; _huidigeStatus = State.Onbekend; _setVoortgang = voortgangDelegate; _setGereedmelding = gereedmeldingDelegate; }
public PpGenerator(Func <IBuilder> builderResolver, Voortgang voortgangDelegate, GereedMelding gereedmeldingDelegate) { _builderResolver = builderResolver; _huidigeStatus = State.Onbekend; _setVoortgang = voortgangDelegate; _setGereedmelding = gereedmeldingDelegate; }
/// <summary> /// Genereer een presentatie aan de hand van meegegeven Liturgie en Template voor de Liederen /// </summary> public void GeneratePresentation() { _token = new CancellationTokenSource(); StatusWijziging?.Invoke(Status.Gestart, null, null); var succes = true; var slidesGemist = 0; var exception = string.Empty; // Hier pas COM calls want dit is de juiste thread using (var applicatie = _mppFactory.GetApplication()) //Creeer een nieuwe lege presentatie volgens de template thema (toon scherm zodat bij fout nog iets te zien is) using (var presentatie = applicatie.Open(_dependentFileList.FullTemplateTheme, metWindow: true)) { //Minimaliseer scherm applicatie.MinimizeInterface(); try { // Voor elke regel in de liturgie moeten sheets worden gemaakt (als dat mag) // Gebruik een list zodat we de plek weten voor de progress var hardeLijst = _liturgie.Where(l => l.VerwerkenAlsSlide).ToList(); foreach (var regel in hardeLijst) { var lijstTotaal = _liturgie.Count(); var bijItem = hardeLijst.IndexOf(regel); var resultaat = _regelVerwerker[regel.VerwerkenAlsType] .Init(applicatie, presentatie, _mppFactory, _liedFormatter, _buildSettings, _buildDefaults, _dependentFileList, _liturgie, _lengteBerekenaar, (p) => Voortgang?.Invoke(lijstTotaal, bijItem, p)) .Verwerk(regel, Volgende(_liturgie, regel), _token.Token); slidesGemist += resultaat.SlidesGemist; if (_stop) { break; } } //sla de presentatie op presentatie.OpslaanAls(_opslaanAls); } catch (Exception ex) { succes = false; exception = ex.ToString(); FoutmeldingSchrijver.Log(exception); } } _token = null; // dispose voordat we een statuswijziging hebben, anders is de applicatie niet op tijd gesloten if (succes) { // gereedmelding geven if (_stop) { StatusWijziging?.Invoke(Status.StopFout, "Tussentijds gestopt door de gebruiker.", null); } else { StatusWijziging?.Invoke(Status.StopGoed, null, slidesGemist); } } else { StatusWijziging?.Invoke(Status.StopFout, exception, null); } }
public void RegisterVoortgang(Voortgang callback) { _setVoortgang = callback; }