void SlideShowRestarter::Restart (bool bForce)
{ // Prevent multiple and concurrently restarts. if (mnEventId != nullptr) return;
if (bForce)
mnDisplayCount = 0;
// Remember the current slide in order to restore it after the slide // show has been restarted. if (mpSlideShow.is())
mnCurrentSlideNumber = mpSlideShow->getCurrentPageNumber();
// Remember a shared pointer to this object to prevent its destruction // before the whole restarting process has finished.
mpSelf = shared_from_this();
// We do not know in what situation this method was called. So, in // order to be able to cleanly stop the presentation, we do that // asynchronously.
mnEventId = Application::PostUserEvent(
LINK(this, SlideShowRestarter, EndPresentation));
}
// The following piece of code should not be here because the // slide show should be aware of the existence of the presenter // console (which is displayed in the FullScreenPane). But the // timing has to be right and I did not find a better place for // it.
// Wait for the full screen pane, which displays the presenter // console, to disappear. Only when it is gone, call // InitiatePresenterStart(), in order to begin the asynchronous // restart of the slide show. if (mpViewShellBase == nullptr) return;
void SlideShowRestarter::StartPresentation()
{ //rhbz#1091117 crash because we're exiting the application, and this is //being called during the configuration update event on exit. At this point //newly created objects won't get disposed called on them, because the //disposer is doing its last execution of that now. if (mpViewShellBase && mpViewShellBase->GetDrawController()->IsDisposing()) return;
if (mpDispatcher == nullptr && mpViewShellBase!=nullptr)
mpDispatcher = mpViewShellBase->GetViewFrame().GetDispatcher();
// Start the slide show on the saved current slide. if (mpDispatcher != nullptr)
{
mpDispatcher->Execute(SID_PRESENTATION, SfxCallMode::ASYNCHRON); if (mpSlideShow.is())
{
Sequence aProperties{ comphelper::makePropertyValue(u"FirstPage"_ustr, "page" + OUString::number(mnCurrentSlideNumber+1)) };
mpSlideShow->startWithArguments(aProperties);
}
mpSelf.reset();
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.