fdo#45233 Allow editing pps/ppsx Autoplay Presentations
Added a context menu "Edit Presentation" when in Autplay mode. This has been discussed and approved by the Design team: https://wiki.documentfoundation.org/Design/Meetings/2013-07-20 Change-Id: Ic229e54bd10d23f999f1d746cce38c4004504d28 Reviewed-on: https://gerrit.libreoffice.org/4960 Reviewed-by: Luboš Luňák <l.lunak@suse.cz> Tested-by: Luboš Luňák <l.lunak@suse.cz>
This commit is contained in:
committed by
Luboš Luňák
parent
dd9c97d587
commit
b8608fddf0
@@ -164,6 +164,7 @@ private:
|
|||||||
sal_Bool mbOnlineSpell;
|
sal_Bool mbOnlineSpell;
|
||||||
sal_Bool mbSummationOfParagraphs;
|
sal_Bool mbSummationOfParagraphs;
|
||||||
bool mbStartWithPresentation; ///< is set to true when starting with command line parameter -start
|
bool mbStartWithPresentation; ///< is set to true when starting with command line parameter -start
|
||||||
|
bool mbExitAfterPresenting = false; ///< true if mbStartWithPresentation AND Presentation was shown fully
|
||||||
LanguageType meLanguage;
|
LanguageType meLanguage;
|
||||||
LanguageType meLanguageCJK;
|
LanguageType meLanguageCJK;
|
||||||
LanguageType meLanguageCTL;
|
LanguageType meLanguageCTL;
|
||||||
@@ -258,6 +259,9 @@ public:
|
|||||||
bool IsStartWithPresentation() const;
|
bool IsStartWithPresentation() const;
|
||||||
void SetStartWithPresentation( bool bStartWithPresentation );
|
void SetStartWithPresentation( bool bStartWithPresentation );
|
||||||
|
|
||||||
|
bool IsExitAfterPresenting() const;
|
||||||
|
void SetExitAfterPresenting( bool bExitAfterPresenting );
|
||||||
|
|
||||||
/** Insert pages into this document
|
/** Insert pages into this document
|
||||||
|
|
||||||
This method inserts whole pages into this document, either
|
This method inserts whole pages into this document, either
|
||||||
|
@@ -935,6 +935,16 @@ void SdDrawDocument::SetStartWithPresentation( bool bStartWithPresentation )
|
|||||||
mbStartWithPresentation = bStartWithPresentation;
|
mbStartWithPresentation = bStartWithPresentation;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool SdDrawDocument::IsExitAfterPresenting() const
|
||||||
|
{
|
||||||
|
return mbExitAfterPresenting;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SdDrawDocument::SetExitAfterPresenting( bool bExitAfterPresenting )
|
||||||
|
{
|
||||||
|
mbExitAfterPresenting = bExitAfterPresenting;
|
||||||
|
}
|
||||||
|
|
||||||
void SdDrawDocument::PageListChanged()
|
void SdDrawDocument::PageListChanged()
|
||||||
{
|
{
|
||||||
mpDrawPageListWatcher->Invalidate();
|
mpDrawPageListWatcher->Invalidate();
|
||||||
|
@@ -802,9 +802,9 @@ void SAL_CALL SlideShow::end() throw(RuntimeException)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( pViewShell->GetDoc()->IsStartWithPresentation() )
|
if( pViewShell->GetDoc()->IsExitAfterPresenting() )
|
||||||
{
|
{
|
||||||
pViewShell->GetDoc()->SetStartWithPresentation( false );
|
pViewShell->GetDoc()->SetExitAfterPresenting( false );
|
||||||
|
|
||||||
Reference<frame::XDispatchProvider> xProvider(pViewShell->GetViewShellBase().GetController()->getFrame(),
|
Reference<frame::XDispatchProvider> xProvider(pViewShell->GetViewShellBase().GetController()->getFrame(),
|
||||||
UNO_QUERY);
|
UNO_QUERY);
|
||||||
|
@@ -41,6 +41,8 @@
|
|||||||
#define CM_WIDTH_PEN_VERY_THICK 17
|
#define CM_WIDTH_PEN_VERY_THICK 17
|
||||||
#define CM_PEN_MODE 18
|
#define CM_PEN_MODE 18
|
||||||
|
|
||||||
|
#define CM_EDIT_PRESENTATION 19
|
||||||
|
|
||||||
#define CM_SLIDES 21 // this must be the last id!
|
#define CM_SLIDES 21 // this must be the last id!
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -141,6 +141,11 @@ Menu RID_SLIDESHOW_CONTEXTMENU
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
MenuItem
|
MenuItem
|
||||||
|
{
|
||||||
|
Identifier = CM_EDIT_PRESENTATION ;
|
||||||
|
Text [ en-US ] = "E~dit Presentation" ;
|
||||||
|
};
|
||||||
|
MenuItem
|
||||||
{
|
{
|
||||||
Identifier = CM_ENDSHOW ;
|
Identifier = CM_ENDSHOW ;
|
||||||
Text [ en-US ] = "~End Show" ;
|
Text [ en-US ] = "~End Show" ;
|
||||||
|
@@ -897,6 +897,11 @@ bool SlideshowImpl::startShow( PresentationSettingsEx* pPresSettings )
|
|||||||
if (mpParentWindow == NULL)
|
if (mpParentWindow == NULL)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
// Autoplay (pps/ppsx)
|
||||||
|
if (mpViewShell->GetDoc()->IsStartWithPresentation()){
|
||||||
|
mpViewShell->GetDoc()->SetExitAfterPresenting(true);
|
||||||
|
}
|
||||||
|
|
||||||
bool bRet = false;
|
bool bRet = false;
|
||||||
|
|
||||||
try
|
try
|
||||||
@@ -2158,6 +2163,7 @@ IMPL_LINK_NOARG(SlideshowImpl, ContextMenuHdl)
|
|||||||
const ShowWindowMode eMode = mpShowWindow->GetShowWindowMode();
|
const ShowWindowMode eMode = mpShowWindow->GetShowWindowMode();
|
||||||
pMenu->EnableItem( CM_NEXT_SLIDE, ( mpSlideController->getNextSlideIndex() != -1 ) );
|
pMenu->EnableItem( CM_NEXT_SLIDE, ( mpSlideController->getNextSlideIndex() != -1 ) );
|
||||||
pMenu->EnableItem( CM_PREV_SLIDE, ( mpSlideController->getPreviousSlideIndex() != -1 ) || (eMode == SHOWWINDOWMODE_END) || (eMode == SHOWWINDOWMODE_PAUSE) || (eMode == SHOWWINDOWMODE_BLANK) );
|
pMenu->EnableItem( CM_PREV_SLIDE, ( mpSlideController->getPreviousSlideIndex() != -1 ) || (eMode == SHOWWINDOWMODE_END) || (eMode == SHOWWINDOWMODE_PAUSE) || (eMode == SHOWWINDOWMODE_BLANK) );
|
||||||
|
pMenu->EnableItem( CM_EDIT_PRESENTATION, mpViewShell->GetDoc()->IsStartWithPresentation());
|
||||||
|
|
||||||
PopupMenu* pPageMenu = pMenu->GetPopupMenu( CM_GOTO );
|
PopupMenu* pPageMenu = pMenu->GetPopupMenu( CM_GOTO );
|
||||||
|
|
||||||
@@ -2384,6 +2390,19 @@ IMPL_LINK( SlideshowImpl, ContextMenuSelectHdl, Menu *, pMenu )
|
|||||||
mbWasPaused = false;
|
mbWasPaused = false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case CM_EDIT_PRESENTATION:
|
||||||
|
// When in autoplay mode (pps/ppsx), offer editing of the presentation
|
||||||
|
// Turn autostart off, else Impress will close when exiting the Presentation
|
||||||
|
mpViewShell->GetDoc()->SetExitAfterPresenting(false);
|
||||||
|
if( mpSlideController.get() && (ANIMATIONMODE_SHOW == meAnimationMode) )
|
||||||
|
{
|
||||||
|
if( mpSlideController->getCurrentSlideNumber() != -1 )
|
||||||
|
{
|
||||||
|
mnRestoreSlide = mpSlideController->getCurrentSlideNumber();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
endPresentation();
|
||||||
|
break;
|
||||||
case CM_ENDSHOW:
|
case CM_ENDSHOW:
|
||||||
// in case the user cancels the presentation, switch to current slide
|
// in case the user cancels the presentation, switch to current slide
|
||||||
// in edit mode
|
// in edit mode
|
||||||
|
Reference in New Issue
Block a user