diff options
author | Armin Le Grand <Armin.Le.Grand@Sun.COM> | 2009-12-21 20:40:13 +0100 |
---|---|---|
committer | Armin Le Grand <Armin.Le.Grand@Sun.COM> | 2009-12-21 20:40:13 +0100 |
commit | aa009b1d9a3a8b691e01e9c28db0adcae84cbafc (patch) | |
tree | 980567c28bd94ea0f35a36c588a3cfc44a7f9f02 | |
parent | 2546b368921c771c4336e6db18543497389eaab7 (diff) | |
parent | eb86211c1db0bb492669e7ac8302b89254ed4793 (diff) |
aw078: resync to DEV300m68for integration
262 files changed, 3098 insertions, 1572 deletions
diff --git a/sd/inc/helpids.h b/sd/inc/helpids.h index e094027f9417..00268058745b 100644 --- a/sd/inc/helpids.h +++ b/sd/inc/helpids.h @@ -28,7 +28,7 @@ * ************************************************************************/ #ifndef _SOLAR_HRC -#include <svtools/solar.hrc> +#include <svl/solar.hrc> #endif #define HID_SD_PRINT_OPTIONS (HID_SD_START + 0) diff --git a/sd/inc/pch/precompiled_sd.hxx b/sd/inc/pch/precompiled_sd.hxx index e3329a44af7e..360f32e880bf 100644 --- a/sd/inc/pch/precompiled_sd.hxx +++ b/sd/inc/pch/precompiled_sd.hxx @@ -1,4 +1,5 @@ -/************************************************************************* +/************************************************************************cherex + * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -495,75 +496,75 @@ #include "sot/storinfo.hxx" #include "svtools/FilterConfigItem.hxx" -#include "svtools/aeitem.hxx" -#include "svtools/brdcst.hxx" +#include "svl/aeitem.hxx" +#include "svl/brdcst.hxx" #include "svtools/colorcfg.hxx" #include "svtools/colrdlg.hxx" #include "svtools/controldims.hrc" -#include "svtools/ctloptions.hxx" +#include "svl/ctloptions.hxx" #include "svtools/ctrlbox.hxx" #include "svtools/ctrltool.hxx" #include "svtools/ehdl.hxx" -#include "svtools/eitem.hxx" +#include "svl/eitem.hxx" #include "svtools/filedlg.hxx" #include "svtools/filter.hxx" -#include "svtools/flagitem.hxx" +#include "svl/flagitem.hxx" #include "svtools/fltcall.hxx" -#include "svtools/fltrcfg.hxx" -#include "svtools/globalnameitem.hxx" -#include "svtools/hint.hxx" -#include "svtools/historyoptions.hxx" +#include "unotools/fltrcfg.hxx" +#include "svl/globalnameitem.hxx" +#include "svl/hint.hxx" +#include "unotools/historyoptions.hxx" #include "svtools/htmlout.hxx" #include "svtools/imap.hxx" #include "svtools/imapcirc.hxx" #include "svtools/imapobj.hxx" #include "svtools/imappoly.hxx" #include "svtools/imaprect.hxx" -#include "svtools/inethist.hxx" -#include "svtools/intitem.hxx" -#include "svtools/itemiter.hxx" -#include "svtools/itempool.hxx" -#include "svtools/itemset.hxx" -#include "svtools/languageoptions.hxx" -#include "svtools/lckbitem.hxx" -#include "svtools/lingucfg.hxx" -#include "svtools/linguprops.hxx" -#include "svtools/listener.hxx" -#include "svtools/lstner.hxx" -#include "svtools/misccfg.hxx" -#include "svtools/pathoptions.hxx" -#include "svtools/poolitem.hxx" +#include "svl/inethist.hxx" +#include "svl/intitem.hxx" +#include "svl/itemiter.hxx" +#include "svl/itempool.hxx" +#include "svl/itemset.hxx" +#include "svl/languageoptions.hxx" +#include "svl/lckbitem.hxx" +#include "unotools/lingucfg.hxx" +#include "unotools/linguprops.hxx" +#include "svl/listener.hxx" +#include "svl/lstner.hxx" +#include "unotools/misccfg.hxx" +#include "unotools/pathoptions.hxx" +#include "svl/poolitem.hxx" #include "svtools/prgsbar.hxx" #include "svtools/printdlg.hxx" -#include "svtools/ptitem.hxx" -#include "svtools/rectitem.hxx" -#include "svtools/saveopt.hxx" +#include "svl/ptitem.hxx" +#include "svl/rectitem.hxx" +#include "unotools/saveopt.hxx" #include "svtools/sfxecode.hxx" -#include "svtools/slstitm.hxx" -#include "svtools/smplhint.hxx" +#include "svl/slstitm.hxx" +#include "svl/smplhint.hxx" #include "svtools/soerr.hxx" -#include "svtools/solar.hrc" +#include "svl/solar.hrc" #include "svtools/sores.hxx" #include "svtools/stdctrl.hxx" -#include "svtools/stritem.hxx" -#include "svtools/style.hrc" -#include "svtools/style.hxx" +#include "svl/stritem.hxx" +#include "svl/style.hrc" +#include "svl/style.hxx" #include "svtools/svmedit.hxx" -#include "svtools/svstdarr.hxx" -#include "svtools/syslocale.hxx" +#include "svl/svstdarr.hxx" +#include "unotools/syslocale.hxx" #include "svtools/tabbar.hxx" #include "svtools/treelist.hxx" -#include "svtools/undo.hxx" +#include "svl/undo.hxx" #include "svtools/unoimap.hxx" -#include "svtools/urihelper.hxx" -#include "svtools/urlbmk.hxx" -#include "svtools/useroptions.hxx" +#include "svl/urihelper.hxx" +#include "svl/urlbmk.hxx" +#include "unotools/useroptions.hxx" #include "svtools/valueset.hxx" -#include "svtools/viewoptions.hxx" -#include "svtools/visitem.hxx" -#include "svtools/whiter.hxx" +#include "unotools/viewoptions.hxx" +#include "svl/visitem.hxx" +#include "svl/whiter.hxx" #include "svtools/wmf.hxx" -#include "svtools/zforlist.hxx" +#include "svl/zforlist.hxx" #include "svx/SpellDialogChildWindow.hxx" @@ -596,7 +597,7 @@ #include "svx/editund2.hxx" #include "svx/editview.hxx" #include "svx/eeitem.hxx" -#include "svx/escherex.hxx" +#include "filter/msfilter/escherex.hxx" #include "svx/escpitem.hxx" #include "svx/extrusionbar.hxx" #include "svx/f3dchild.hxx" @@ -640,8 +641,8 @@ #include "svx/lspcitem.hxx" #include "svx/modctrl.hxx" #include "svx/msdffdef.hxx" -#include "svx/msocximex.hxx" -#include "svx/msoleexp.hxx" +#include "filter/msfilter/msocximex.hxx" +#include "filter/msfilter/msoleexp.hxx" #include "svx/numitem.hxx" #include "svx/obj3d.hxx" #include "svx/objfac3d.hxx" @@ -724,7 +725,7 @@ #include "svx/svxfont.hxx" #include "svx/svxgrahicitem.hxx" #include "svx/svxids.hrc" -#include "svx/svxmsbas.hxx" +#include "filter/msfilter/svxmsbas.hxx" #include "svx/sxciaitm.hxx" #include "svx/sxekitm.hxx" #include "svx/sxelditm.hxx" @@ -862,7 +863,7 @@ #include "vcl/field.hxx" #include "vcl/fixed.hxx" #include "vcl/font.hxx" -#include "vcl/fontcvt.hxx" +#include "unotools/fontcvt.hxx" #include "vcl/gdimtf.hxx" #include "vcl/gfxlink.hxx" #include "vcl/gradient.hxx" diff --git a/sd/inc/sdattr.hxx b/sd/inc/sdattr.hxx index 5600302c40ff..1972ad1583d3 100644 --- a/sd/inc/sdattr.hxx +++ b/sd/inc/sdattr.hxx @@ -32,9 +32,9 @@ #define _SDATTR_HXX #include <com/sun/star/presentation/FadeEffect.hpp> -#include <svtools/intitem.hxx> -#include <svtools/eitem.hxx> -#include <svtools/stritem.hxx> +#include <svl/intitem.hxx> +#include <svl/eitem.hxx> +#include <svl/stritem.hxx> #include <sfx2/sfx.hrc> #ifndef _SDATTR_HRC diff --git a/sd/inc/sdmod.hxx b/sd/inc/sdmod.hxx index 7481759cff4c..e4122ca0d4c3 100644 --- a/sd/inc/sdmod.hxx +++ b/sd/inc/sdmod.hxx @@ -42,7 +42,7 @@ #include <sot/storage.hxx> #include <tools/shl.hxx> #include "sddllapi.h" -#include <svtools/lstner.hxx> +#include <svl/lstner.hxx> #include <com/sun/star/text/WritingMode.hpp> #include <sfx2/module.hxx> #include <vcl/vclevent.hxx> diff --git a/sd/inc/sdundo.hxx b/sd/inc/sdundo.hxx index d71d6371e1d1..794f23e94b8e 100644 --- a/sd/inc/sdundo.hxx +++ b/sd/inc/sdundo.hxx @@ -31,7 +31,7 @@ #ifndef _SD_SDUNDO_HXX #define _SD_SDUNDO_HXX -#include <svtools/undo.hxx> +#include <svl/undo.hxx> #include "sddllapi.h" class SdDrawDocument; diff --git a/sd/inc/stlfamily.hxx b/sd/inc/stlfamily.hxx index ccd0619a4788..a00828a2690a 100644 --- a/sd/inc/stlfamily.hxx +++ b/sd/inc/stlfamily.hxx @@ -46,7 +46,7 @@ #include <cppuhelper/implbase7.hxx> -#include <svtools/style.hxx> +#include <svl/style.hxx> #include <svx/unoipset.hxx> diff --git a/sd/inc/stlsheet.hxx b/sd/inc/stlsheet.hxx index f683492c2110..69ee48e58dd9 100644 --- a/sd/inc/stlsheet.hxx +++ b/sd/inc/stlsheet.hxx @@ -44,7 +44,7 @@ #include <cppuhelper/implbase5.hxx> #include <cppuhelper/basemutex.hxx> -#include <svtools/style.hxx> +#include <svl/style.hxx> #include <svx/unoipset.hxx> diff --git a/sd/inc/undo/undomanager.hxx b/sd/inc/undo/undomanager.hxx index 5ced88e66dfe..583c74b71109 100644 --- a/sd/inc/undo/undomanager.hxx +++ b/sd/inc/undo/undomanager.hxx @@ -32,7 +32,7 @@ #define _SD_UNDOMANAGER_HXX #include "misc/scopelock.hxx" -#include <svtools/undo.hxx> +#include <svl/undo.hxx> namespace sd { diff --git a/sd/prj/build.lst b/sd/prj/build.lst index ace6165f64f3..bc8bf923f7e5 100644..100755 --- a/sd/prj/build.lst +++ b/sd/prj/build.lst @@ -1,4 +1,4 @@ -sd sd : l10n animations svx stoc uui canvas NULL +sd sd : filter l10n animations svx stoc canvas NULL sd sd usr1 - all sd_mkout NULL sd sd\inc nmake - all sd_inc NULL sd sd\prj get - all sd_prj NULL diff --git a/sd/sdi/ViewShellBase.sdi b/sd/sdi/ViewShellBase.sdi index 306fabf0df7d..67d9cfb1e85e 100644 --- a/sd/sdi/ViewShellBase.sdi +++ b/sd/sdi/ViewShellBase.sdi @@ -267,7 +267,7 @@ SfxVoidItem TaskPaneShowPanel SID_TASK_PANE ( GroupId = GID_VIEW; ] -interface ViewShellBaseView : View +interface ViewShellBaseView { SID_SWITCH_SHELL [ @@ -380,7 +380,7 @@ interface ViewShellBaseView : View ] } -shell ViewShellBase : SfxViewShell +shell ViewShellBase { import ViewShellBaseView[Automation]; } diff --git a/sd/sdi/_docsh.sdi b/sd/sdi/_docsh.sdi index 15b6f52ffc01..6d3267aacf81 100644 --- a/sd/sdi/_docsh.sdi +++ b/sd/sdi/_docsh.sdi @@ -27,7 +27,7 @@ * for a copy of the LGPLv3 License. * ************************************************************************/ -interface DrawDocument : OfficeDocument +interface DrawDocument { SID_PACKNGO // ole : ?, status : ? [ diff --git a/sd/sdi/_drvwsh.sdi b/sd/sdi/_drvwsh.sdi index b641ab64a1a0..5021249c4ff9 100644 --- a/sd/sdi/_drvwsh.sdi +++ b/sd/sdi/_drvwsh.sdi @@ -2226,7 +2226,7 @@ interface DrawView SID_FORMATPAINTBRUSH // [ - ExecMethod = FuTemporary ; + ExecMethod = FuPermanent ; StateMethod = GetMenuState ; ] diff --git a/sd/sdi/docshell.sdi b/sd/sdi/docshell.sdi index 13c979071b5c..159bd05227fc 100644 --- a/sd/sdi/docshell.sdi +++ b/sd/sdi/docshell.sdi @@ -35,7 +35,7 @@ interface ImpressDocument : DrawDocument { } -shell DrawDocShell : SfxObjectShell +shell DrawDocShell { import ImpressDocument[Automation]; } diff --git a/sd/sdi/grdocsh.sdi b/sd/sdi/grdocsh.sdi index 86cb36265704..4cd3ef0c905e 100644 --- a/sd/sdi/grdocsh.sdi +++ b/sd/sdi/grdocsh.sdi @@ -35,7 +35,7 @@ interface GraphicDocument : DrawDocument { } -shell GraphicDocShell : SfxObjectShell +shell GraphicDocShell { import GraphicDocument[Automation]; } diff --git a/sd/sdi/makefile.mk b/sd/sdi/makefile.mk index 8a2c8fd971d7..7eb22a96c770 100644 --- a/sd/sdi/makefile.mk +++ b/sd/sdi/makefile.mk @@ -51,6 +51,11 @@ SDI2NAME=$(TARGET2) SIDHRCNAME=SDSLOTS.HRC SVSDI1DEPEND= \ + $(SOLARINCXDIR)$/sfx2/sfx.sdi \ + $(SOLARINCXDIR)$/sfx2/sfxitems.sdi \ + $(SOLARINCXDIR)$/svx/svx.sdi \ + $(SOLARINCXDIR)$/svx/svxitems.sdi \ + $(SOLARINCXDIR)$/svx/xoitems.sdi \ sdraw.sdi \ app.sdi \ _docsh.sdi \ @@ -67,11 +72,15 @@ SVSDI1DEPEND= \ ViewShellBase.sdi \ TaskPaneViewShell.sdi \ sdslots.hrc \ - $(SOLARINCXDIR)$/svxslots.ilb \ $(PRJ)$/inc$/app.hrc SVSDI2DEPEND= \ - sdraw.sdi \ + $(SOLARINCXDIR)$/sfx2/sfx.sdi \ + $(SOLARINCXDIR)$/sfx2/sfxitems.sdi \ + $(SOLARINCXDIR)$/svx/svx.sdi \ + $(SOLARINCXDIR)$/svx/svxitems.sdi \ + $(SOLARINCXDIR)$/svx/xoitems.sdi \ + sdraw.sdi \ app.sdi \ _docsh.sdi \ grdocsh.sdi \ @@ -85,7 +94,6 @@ SVSDI2DEPEND= \ ViewShellBase.sdi \ TaskPaneViewShell.sdi \ sdslots.hrc \ - $(SOLARINCXDIR)$/svxslots.ilb \ $(PRJ)$/inc$/app.hrc # --- Targets ------------------------------------------------------- diff --git a/sd/sdi/sdgslots.sdi b/sd/sdi/sdgslots.sdi index da196204d6ca..db62ca5cdfb3 100644 --- a/sd/sdi/sdgslots.sdi +++ b/sd/sdi/sdgslots.sdi @@ -27,8 +27,6 @@ * for a copy of the LGPLv3 License. * ************************************************************************/ -import "svxslots.ilb" - module "2DADF501-1F00-101C-A2E4-00001B4C5CE7" "33A1C840-1F00-101C-A2E4-00001B4C5CE7" @@ -36,10 +34,15 @@ StarDraw [ HelpText( "StarDraw Application" ) SlotIdFile( "sdslots.hrc" ) -TypeLibFile( "sdgslots.tlb" ) ModulePrefix( "Sd" ) ] { + include "sfx2/sfxitems.sdi" + include "sfx2/sfx.sdi" + include "svx/svxitems.sdi" + include "svx/xoitems.sdi" + include "svx/svx.sdi" + item UINT16 TbxImageItem; enum FadeEffect diff --git a/sd/sdi/sdslots.sdi b/sd/sdi/sdslots.sdi index 83060f6dd36c..208613595b65 100644 --- a/sd/sdi/sdslots.sdi +++ b/sd/sdi/sdslots.sdi @@ -28,8 +28,6 @@ * ************************************************************************/ -import "svxslots.ilb" - module "2DADF501-1F00-101C-A2E4-00001B4C5CE7" "33A1C840-1F00-101C-A2E4-00001B4C5CE7" @@ -37,10 +35,15 @@ StarDraw [ HelpText( "StarDraw Application" ) SlotIdFile( "sdslots.hrc" ) -TypeLibFile( "sdslots.tlb" ) ModulePrefix( "Sd" ) ] { + include "sfx2/sfxitems.sdi" + include "sfx2/sfx.sdi" + include "svx/svxitems.sdi" + include "svx/xoitems.sdi" + include "svx/svx.sdi" + item UINT16 TbxImageItem; enum FadeEffect diff --git a/sd/sdi/svxitems.sdi b/sd/sdi/svxitems.sdi deleted file mode 100644 index 42d036d4e9d8..000000000000 --- a/sd/sdi/svxitems.sdi +++ /dev/null @@ -1,93 +0,0 @@ -enum SvxAdjust -{ - SVX_ADJUST_LEFT, - SVX_ADJUST_RIGHT, - SVX_ADJUST_BLOCK, - SVX_ADJUST_CENTER, - SVX_ADJUST_BLOCKLINE, - SVX_ADJUST_END -} - -item -{ - INT16 Red; - INT16 Green; - INT16 Blue; -} SvxColorItem - -item SvxAdjust SvxAdjustItem; - -item String SvxBoxInfoItem; - -item String SvxBoxItem; -item String SvxBrushItem; -item String SvxCaseMapItem; -item String SvxCharSetColorItem; -item String SvxColumnItem; -item String SvxContourItem; -item String SvxCrossedOutItem; -item String SvxDBDescMgr; -item String SvxDbTypeItem; -item String SvxEscapementItem; -item String SvxFmtBreakItem; -item String SvxFmtSplitItem; -item String SvxFontHeightItem; -item String SvxFontItem; -item String SvxFontListItem; -item String SvxHyphenZoneItem; -item String SvxInFrameItem; -item String SvxKerningItem; -item String SvxLRSpaceItem; -item String SvxLanguageItem; -item String SvxLineSpacingItem; -item String SvxMacroItem; -item String SvxNoHyphenItem; -item String SvxNoLinebreakItem; -item String SvxNumberInfoItem; -item String SvxOpaqueItem; -item String SvxOrphansItem; -item String SvxOverlineItem; -item String SvxPageItem; -item String SvxPageModelItem; -item String SvxPagePosSizeItem; -item String SvxPaperBinItem; -item String SvxParaDlgLimitsItem; -item String SvxPostItAuthorItem; -item String SvxPostItDateItem; -item String SvxPostItTextItem; -item String SvxPostureItem; -item String SvxPrintItem; -item String SvxPropSizeItem; -item String SvxProtectItem; -item String SvxPtrItem; -item String SvxRulerItem; -item String SvxSearchItem; -item String SvxSearchControllerItem; -item String SvxSearchItem; -item String SvxSetItem; -item String SvxShadowedItem; -item String SvxShadowItem; -item String SvxSizeItem; -item String SvxTabStopItem; -item String SvxULSpaceItem; -item String SvxUnderlineItem; -item String SvxWeightItem; -item String SvxWidowsItem; -item String SvxWordLineModeItem; -item String XFillAttrSetItem; -item String XFillBitmapItem; -item String XFillColorItem; -item String XFillGradientItem; -item String XFillHatchItem; -item String XFillStyleItem; -item String XLineAttrSetItem; -item String XLineColorItem; -item String XLineDashItem; -item String XLineEndItem; -item String XLineEndWidthItem; -item String XLineEndCenterItem; -item String XLineStartItem; -item String XLineStartWidthItem; -item String XLineStartCenterItem; -item String XLineStyleItem; -item String XLineWidthItem; diff --git a/sd/source/core/CustomAnimationPreset.cxx b/sd/source/core/CustomAnimationPreset.cxx index cf5d94c420ce..6a732e58a405 100644 --- a/sd/source/core/CustomAnimationPreset.cxx +++ b/sd/source/core/CustomAnimationPreset.cxx @@ -44,7 +44,7 @@ #include <tools/urlobj.hxx> #include <unotools/streamwrap.hxx> #include <comphelper/processfactory.hxx> -#include <svtools/pathoptions.hxx> +#include <unotools/pathoptions.hxx> #include <tools/stream.hxx> #include <tools/debug.hxx> diff --git a/sd/source/core/TransitionPreset.cxx b/sd/source/core/TransitionPreset.cxx index 563026fdc1ac..59251f62eb6f 100644 --- a/sd/source/core/TransitionPreset.cxx +++ b/sd/source/core/TransitionPreset.cxx @@ -43,7 +43,7 @@ #include <tools/urlobj.hxx> #include <unotools/streamwrap.hxx> #include <comphelper/processfactory.hxx> -#include <svtools/pathoptions.hxx> +#include <unotools/pathoptions.hxx> #include <tools/stream.hxx> #include <rtl/uri.hxx> diff --git a/sd/source/core/anminfo.cxx b/sd/source/core/anminfo.cxx index 8d06ae3d0fcd..d5ffdd562a74 100644 --- a/sd/source/core/anminfo.cxx +++ b/sd/source/core/anminfo.cxx @@ -31,10 +31,10 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sd.hxx" #include <tools/urlobj.hxx> -#include <svtools/smplhint.hxx> +#include <svl/smplhint.hxx> #include "svx/xtable.hxx" #include <svx/svdopath.hxx> -#include <svtools/urihelper.hxx> +#include <svl/urihelper.hxx> #include <svx/flditem.hxx> #include <svx/eeitem.hxx> diff --git a/sd/source/core/drawdoc.cxx b/sd/source/core/drawdoc.cxx index d5cd14a80b65..c86296a90997 100644 --- a/sd/source/core/drawdoc.cxx +++ b/sd/source/core/drawdoc.cxx @@ -42,11 +42,8 @@ #include <svx/eeitem.hxx> #include <svx/scriptspaceitem.hxx> -#include <svtools/useroptions.hxx> +#include <unotools/useroptions.hxx> -#ifndef _OFA_MISCCFG_HXX -#include <svtools/misccfg.hxx> -#endif #include <sfx2/printer.hxx> #include <sfx2/topfrm.hxx> #include <sfx2/app.hxx> @@ -57,30 +54,30 @@ #include <svx/eeitem.hxx> #include <svx/editstat.hxx> #include <svx/fontitem.hxx> -#include <svtools/flagitem.hxx> +#include <svl/flagitem.hxx> #include <svx/svdoattr.hxx> #include <svx/svdotext.hxx> #include <svx/bulitem.hxx> #include <svx/numitem.hxx> #include <svx/svditer.hxx> #include <svx/unolingu.hxx> -#include <svtools/itempool.hxx> +#include <svl/itempool.hxx> #include <com/sun/star/lang/XMultiServiceFactory.hpp> #include <svx/xtable.hxx> #include <com/sun/star/linguistic2/XHyphenator.hpp> #include <com/sun/star/linguistic2/XSpellChecker1.hpp> #include <com/sun/star/beans/XPropertySet.hpp> #include <svx/outlobj.hxx> -#include <svtools/saveopt.hxx> +#include <unotools/saveopt.hxx> #include <comphelper/extract.hxx> #include <i18npool/mslangid.hxx> #include <unotools/charclass.hxx> #include <comphelper/processfactory.hxx> #ifndef _SVTOOLS_PATHOPTIONS_HXX_ -#include <svtools/pathoptions.hxx> +#include <unotools/pathoptions.hxx> #endif -#include <svtools/lingucfg.hxx> -#include <svtools/linguprops.hxx> +#include <unotools/lingucfg.hxx> +#include <unotools/linguprops.hxx> #include "eetext.hxx" #include "drawdoc.hxx" @@ -262,7 +259,6 @@ SdDrawDocument::SdDrawDocument(DocumentType eType, SfxObjectShell* pDrDocSh) } // DefTab und SpellOptions setzen - //OfaMiscCfg* pOfaMiscCfg = SFX_APP()->GetMiscConfig(); // Jetzt am Modul (SD) USHORT nDefTab = pOptions->GetDefTab(); SetDefaultTabulator( nDefTab ); diff --git a/sd/source/core/drawdoc2.cxx b/sd/source/core/drawdoc2.cxx index 0513e1d02083..e208399d636f 100644 --- a/sd/source/core/drawdoc2.cxx +++ b/sd/source/core/drawdoc2.cxx @@ -49,7 +49,7 @@ #include <vcl/svapp.hxx> #include <svx/eeitem.hxx> #include <svx/langitem.hxx> -#include <svtools/itempool.hxx> +#include <svl/itempool.hxx> #include <svx/svdpool.hxx> #include <svx/flditem.hxx> diff --git a/sd/source/core/drawdoc3.cxx b/sd/source/core/drawdoc3.cxx index 6beaee7082eb..9c44f9edc485 100644 --- a/sd/source/core/drawdoc3.cxx +++ b/sd/source/core/drawdoc3.cxx @@ -44,13 +44,13 @@ #include <sfx2/docfile.hxx> #include <sot/storage.hxx> #include <sfx2/app.hxx> -#include <svtools/itemset.hxx> +#include <svl/itemset.hxx> #include <unotools/ucbstreamhelper.hxx> #include <sfx2/fcontnr.hxx> #include <svx/svdopath.hxx> #include <svx/svditer.hxx> -#include <svtools/style.hxx> +#include <svl/style.hxx> #include <svx/linkmgr.hxx> #include <svx/svdpagv.hxx> #include <svx/svdogrp.hxx> diff --git a/sd/source/core/drawdoc4.cxx b/sd/source/core/drawdoc4.cxx index 413323d27e97..862c383f043b 100644 --- a/sd/source/core/drawdoc4.cxx +++ b/sd/source/core/drawdoc4.cxx @@ -102,7 +102,7 @@ #include <svx/unolingu.hxx> #include <com/sun/star/linguistic2/XHyphenator.hpp> #include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include <svtools/itempool.hxx> +#include <svl/itempool.hxx> #include <svx/outlobj.hxx> #include <sfx2/viewfrm.hxx> #include <svx/langitem.hxx> @@ -119,7 +119,7 @@ #include "shapelist.hxx" #include <basegfx/point/b2dpoint.hxx> #include <basegfx/polygon/b2dpolygon.hxx> -#include <svtools/itemset.hxx> +#include <svl/itemset.hxx> using ::rtl::OUString; using namespace ::com::sun::star; diff --git a/sd/source/core/sdpage.cxx b/sd/source/core/sdpage.cxx index 998f34363f33..389af0473f85 100644 --- a/sd/source/core/sdpage.cxx +++ b/sd/source/core/sdpage.cxx @@ -54,7 +54,7 @@ #include <basic/basmgr.hxx> #include <svx/pbinitem.hxx> #include <svx/svdundo.hxx> -#include <svtools/smplhint.hxx> +#include <svl/smplhint.hxx> #include <svx/adjitem.hxx> #include <svx/editobj.hxx> #ifndef _SVX_SRIPTTYPEITEM_HXX @@ -2039,40 +2039,6 @@ void SdPage::ScaleObjects(const Size& rNewPageSize, const Rectangle& rNewBorderR pObj->NbcMove(aVec); } - Rectangle aBoundRect = pObj->GetCurrentBoundRect(); - - if (!aBorderRect.IsInside(aBoundRect)) - { - /********************************************************** - * Objekt liegt nicht vollstaendig innerhalb der Raender - * -> Position korrigieren - **********************************************************/ - Point aOldPos(aBoundRect.TopLeft()); - aNewPos = aOldPos; - - // Position links oben ggf. korrigieren - aNewPos.X() = Max(aNewPos.X(), aBorderRect.Left()); - aNewPos.Y() = Max(aNewPos.Y(), aBorderRect.Top()); - aVec = Size(aNewPos.X() - aOldPos.X(), aNewPos.Y() - aOldPos.Y()); - - if (aVec.Height() != 0 || aVec.Width() != 0) - { - pObj->NbcMove(aVec); - } - - // Position rechts unten ggf. korrigieren - aOldPos = aBoundRect.BottomRight(); - aNewPos = aOldPos; - aNewPos.X() = Min(aNewPos.X(), aBorderRect.Right()); - aNewPos.Y() = Min(aNewPos.Y(), aBorderRect.Bottom()); - aVec = Size(aNewPos.X() - aOldPos.X(), aNewPos.Y() - aOldPos.Y()); - - if (aVec.Height() != 0 || aVec.Width() != 0) - { - pObj->NbcMove(aVec); - } - } - pObj->SetChanged(); pObj->BroadcastObjectChange(); } @@ -2873,7 +2839,7 @@ bool SdPage::checkVisibility( } } } // check for placeholders on master - else if( pCheckPage->IsMasterPage() && ( pVisualizedPage != pCheckPage ) ) + else if( (eKind != PRESOBJ_NONE) && pCheckPage->IsMasterPage() && ( pVisualizedPage != pCheckPage ) ) { // presentation objects on master slide are always invisible if slide is shown. return false; diff --git a/sd/source/core/sdpage2.cxx b/sd/source/core/sdpage2.cxx index 3f03640c27fb..047431bec461 100644 --- a/sd/source/core/sdpage2.cxx +++ b/sd/source/core/sdpage2.cxx @@ -39,7 +39,7 @@ #include <svx/svdotext.hxx> #include <tools/urlobj.hxx> #include <svx/outlobj.hxx> -#include <svtools/urihelper.hxx> +#include <svl/urihelper.hxx> #include <svx/xmlcnitm.hxx> #include <svx/svditer.hxx> #include <tools/list.hxx> @@ -60,7 +60,7 @@ // #90477# #include <tools/tenccvt.hxx> -#include <svtools/itemset.hxx> +#include <svl/itemset.hxx> using namespace ::sd; using namespace ::com::sun::star; diff --git a/sd/source/core/stlfamily.cxx b/sd/source/core/stlfamily.cxx index 9f6bc230359b..e90b55243726 100644 --- a/sd/source/core/stlfamily.cxx +++ b/sd/source/core/stlfamily.cxx @@ -37,7 +37,7 @@ #include <vos/mutex.hxx> #include <vcl/svapp.hxx> -#include <svtools/style.hxx> +#include <svl/style.hxx> #include <svx/unoprov.hxx> diff --git a/sd/source/core/stlpool.cxx b/sd/source/core/stlpool.cxx index 708ed0b3c8b0..8c156af32038 100644 --- a/sd/source/core/stlpool.cxx +++ b/sd/source/core/stlpool.cxx @@ -42,14 +42,14 @@ #include <svx/wghtitem.hxx> #include <svx/postitem.hxx> #include <svx/fontitem.hxx> -#include <svtools/poolitem.hxx> +#include <svl/poolitem.hxx> #include <svx/xfillit0.hxx> #include <svx/xlineit0.hxx> #include <svx/ulspitem.hxx> #include <svx/numitem.hxx> #include <svx/brshitem.hxx> #include <svx/editeng.hxx> -#include <svtools/smplhint.hxx> +#include <svl/smplhint.hxx> #include <svx/langitem.hxx> #include <svx/charreliefitem.hxx> #ifndef _SVX_EMPHITEM_HXX @@ -64,7 +64,7 @@ #include <svx/bulitem.hxx> #include <svx/lrspitem.hxx> #include <svx/adjitem.hxx> -#include <svtools/itempool.hxx> +#include <svl/itempool.hxx> #define _SDR_POSITIVE #define _SDR_ITEMS @@ -78,7 +78,7 @@ #include "sdmod.hxx" #include "sdpage.hxx" #include "helpids.h" -#include <svtools/itemset.hxx> +#include <svl/itemset.hxx> using ::rtl::OUString; using namespace ::com::sun::star::uno; diff --git a/sd/source/core/stlsheet.cxx b/sd/source/core/stlsheet.cxx index 04a8c36263ef..d80881304b17 100644 --- a/sd/source/core/stlsheet.cxx +++ b/sd/source/core/stlsheet.cxx @@ -46,8 +46,8 @@ #include <svx/fhgtitem.hxx> #include <svx/svdoattr.hxx> #include <svx/ulspitem.hxx> -#include <svtools/smplhint.hxx> -#include <svtools/itemset.hxx> +#include <svl/smplhint.hxx> +#include <svl/itemset.hxx> #include <svx/xflbmtit.hxx> #include <svx/xflbstit.hxx> diff --git a/sd/source/core/typemap.cxx b/sd/source/core/typemap.cxx index 7223cf193cbd..c3f69a675e10 100644 --- a/sd/source/core/typemap.cxx +++ b/sd/source/core/typemap.cxx @@ -43,13 +43,13 @@ #include <svx/wghtitem.hxx> #include <svx/postitem.hxx> #include <svx/fontitem.hxx> -#include <svtools/poolitem.hxx> +#include <svl/poolitem.hxx> #include <svx/tstpitem.hxx> #include <svx/lrspitem.hxx> #include <svx/protitem.hxx> #include <svx/chrtitem.hxx> -#include <svtools/globalnameitem.hxx> +#include <svl/globalnameitem.hxx> #include <svx/hlnkitem.hxx> #include <svx/postattr.hxx> #include <svx/editdata.hxx> @@ -96,9 +96,9 @@ #include <svx/drawitem.hxx> // #UndoRedo# -#include <svtools/slstitm.hxx> +#include <svl/slstitm.hxx> -#include <svtools/lckbitem.hxx> +#include <svl/lckbitem.hxx> #define CharSetItem SfxUInt16Item @@ -129,8 +129,8 @@ #define OfaStringListItem SfxStringListItem #define avmedia_MediaItem ::avmedia::MediaItem #include <sfx2/tplpitem.hxx> -#include <svtools/ptitem.hxx> -#include <svtools/rectitem.hxx> +#include <svl/ptitem.hxx> +#include <svl/rectitem.hxx> #include <sfx2/frame.hxx> diff --git a/sd/source/filter/cgm/sdcgmfilter.cxx b/sd/source/filter/cgm/sdcgmfilter.cxx index b843fd06009f..68719b132bb7 100644 --- a/sd/source/filter/cgm/sdcgmfilter.cxx +++ b/sd/source/filter/cgm/sdcgmfilter.cxx @@ -33,7 +33,7 @@ #include <osl/module.hxx> #include <tools/urlobj.hxx> -#include <svtools/itemset.hxx> +#include <svl/itemset.hxx> #include <sfx2/docfile.hxx> #include <sfx2/docfilt.hxx> #include <svx/xflclit.hxx> diff --git a/sd/source/filter/eppt/eppt.cxx b/sd/source/filter/eppt/eppt.cxx index cb31e99aec63..cf66d81a0d6c 100644 --- a/sd/source/filter/eppt/eppt.cxx +++ b/sd/source/filter/eppt/eppt.cxx @@ -58,10 +58,11 @@ #include <tools/zcodec.hxx> #include <svx/svxenum.hxx> #include <sot/storinfo.hxx> -#include <svx/msoleexp.hxx> +#include <filter/msfilter/msoleexp.hxx> #include <vcl/virdev.hxx> #include <svtools/wmf.hxx> -#include <svx/msdffimp.hxx> +#include <filter/msfilter/msdffimp.hxx> +#include <filter/msfilter/svxmsbas.hxx> #include <svx/flditem.hxx> #include <sfx2/docinf.hxx> @@ -222,8 +223,6 @@ PPTWriter::PPTWriter( SvStorageRef& rSvStorage, } if ( !ImplCreateMainNotes() ) return; - maTextRuleList.First(); // rewind list, so we can get the current or next entry without - // searching, all entrys are sorted# for ( i = 0; i < mnPages; i++ ) { if ( !ImplCreateSlide( i ) ) @@ -274,8 +273,6 @@ PPTWriter::~PPTWriter() while( aStyleSheetIter < maStyleSheetList.end() ) delete *aStyleSheetIter++; - for ( pPtr = maTextRuleList.First(); pPtr; pPtr = maTextRuleList.Next() ) - delete (TextRuleEntry*)pPtr; for ( pPtr = maSlideNameList.First(); pPtr; pPtr = maSlideNameList.Next() ) delete (::rtl::OUString*)pPtr; for ( pPtr = maHyperlink.First(); pPtr; pPtr = maHyperlink.Next() ) @@ -560,22 +557,12 @@ sal_Bool PPTWriter::ImplCreateDocument() mpPptEscherEx->OpenContainer( EPP_SlideListWithText ); // Animation info fuer die Slides - sal_uInt32 nShapes; - sal_Bool bOtherThanPlaceHolders; - for ( i = 0; i < mnPages; i++ ) { - sal_uInt32 nPOffset, nPObjects; - sal_Bool bOutliner, bTitle; - - bOtherThanPlaceHolders = bOutliner = bTitle = FALSE; - nPObjects = 0; - mpPptEscherEx->AddAtom( 20, EPP_SlidePersistAtom ); mpPptEscherEx->InsertPersistOffset( EPP_MAINSLIDE_PERSIST_KEY | i, mpStrm->Tell() ); - *mpStrm << (sal_uInt32)0; // psrReference - logical reference to the slide persist object ( EPP_MAINSLIDE_PERSIST_KEY ) - nPOffset = mpStrm->Tell(); - *mpStrm << (sal_uInt32)0 // flags - only bit 3 used, if set then slide contains shapes other than placeholders + *mpStrm << (sal_uInt32)0 // psrReference - logical reference to the slide persist object ( EPP_MAINSLIDE_PERSIST_KEY ) + << (sal_uInt32)4 // flags - only bit 3 used, if set then slide contains shapes other than placeholders << (INT32)0 // numberTexts - number of placeholder texts stored with the persist object. Allows to display outline view without loading the slide persist objects << (INT32)i + 0x100 // slideId - Unique slide identifier, used for OLE link monikers for example << (sal_uInt32)0; // reserved, usualy 0 @@ -584,8 +571,6 @@ sal_Bool PPTWriter::ImplCreateDocument() return FALSE; ImplSetCurrentStyleSheet( ImplGetMasterIndex( NORMAL ) ); - const PHLayout& rLayout = ImplGetLayout( mXPagePropSet ); - ::com::sun::star::uno::Reference< ::com::sun::star::container::XNamed > aXName( mXDrawPage, ::com::sun::star::uno::UNO_QUERY ); @@ -597,113 +582,16 @@ sal_Bool PPTWriter::ImplCreateDocument() } else maSlideNameList.Insert( new ::rtl::OUString(), LIST_APPEND ); - - nShapes = mXShapes->getCount(); - - sal_Bool bSecOutl = FALSE; - if ( nShapes && ( rLayout.bTitlePossible || rLayout.bOutlinerPossible ) ) - { - for ( sal_uInt32 nIndex = 0; nIndex < nShapes; nIndex++ ) - { - if ( !ImplGetShapeByIndex( nIndex ) ) - continue; - - if ( mbPresObj && ( ( mType == "presentation.Outliner" ) || ( mType == "presentation.Subtitle" ) ) ) - { - if ( bOutliner == FALSE ) - { - bOutliner = TRUE; - mnTextStyle = EPP_TEXTSTYLE_BODY; - sal_uInt32 nTextType = EPP_TEXTTYPE_Body; - if ( bSecOutl ) - nTextType = EPP_TEXTTYPE_HalfBody; - else if ( mType == "presentation.Subtitle" ) - nTextType = EPP_TEXTTYPE_CenterBody; - - TextRuleEntry* pRule = new TextRuleEntry( i ); - SvMemoryStream aExtBu( 0x200, 0x200 ); - if ( !mbEmptyPresObj ) - ImplGetText(); - ImplWriteTextStyleAtom( *mpStrm, nTextType, nPObjects, pRule, aExtBu, NULL ); - ImplWriteExtParaHeader( aExtBu, nPObjects++, nTextType, i + 0x100 ); - maTextRuleList.Insert( (void*)pRule, LIST_APPEND ); - if ( rLayout.bSecOutlinerPossible ) - { - if ( ( nIndex + 1 ) < nShapes ) - { - if ( ImplGetShapeByIndex( nIndex + 1 ) && mType == "presentation.Outliner" ) - { - bSecOutl = TRUE; - TextRuleEntry* pTempRule = new TextRuleEntry( i ); - SvMemoryStream aTmpStrm( 0x200, 0x200 ); - if ( !mbEmptyPresObj ) - ImplGetText(); - ImplWriteTextStyleAtom( *mpStrm, nTextType, nPObjects, pTempRule, aTmpStrm, NULL ); - ImplWriteExtParaHeader( aTmpStrm, nPObjects++, nTextType, i + 0x100 ); - maTextRuleList.Insert( (void*)pTempRule, LIST_APPEND ); - } - } - } - } - } - else if ( rLayout.bTitlePossible && ( mType == "presentation.TitleText" ) ) - { - if ( bTitle == FALSE ) - { - bTitle = TRUE; - mnTextStyle = EPP_TEXTSTYLE_TITLE; - TextRuleEntry* pRule = new TextRuleEntry( i ); - SvMemoryStream aExtBu( 0x200, 0x200 ); - if ( !mbEmptyPresObj ) - ImplGetText(); - ImplWriteTextStyleAtom( *mpStrm, EPP_TEXTTYPE_Title, nPObjects, pRule, aExtBu, NULL ); - ImplWriteExtParaHeader( aExtBu, nPObjects++, EPP_TEXTTYPE_Title, i + 0x100 ); - maTextRuleList.Insert( (void*)pRule, LIST_APPEND ); - } - } - else - { - if ( mbEmptyPresObj ) - nPObjects++; - else - bOtherThanPlaceHolders = TRUE; // muss noch auf background und leeren Title/outliner geprueft werden !!! - } - if ( bOutliner && bTitle && bOtherThanPlaceHolders ) - break; - } - } - if ( nPObjects ) - { - sal_uInt32 nOldPos = mpStrm->Tell(); - mpStrm->Seek( nPOffset ); - *mpStrm << (sal_uInt32)( ( bOtherThanPlaceHolders ) ? 4 : 0 ); - *mpStrm << nPObjects; - mpStrm->Seek( nOldPos ); - } } mpPptEscherEx->CloseContainer(); // EPP_SlideListWithText mpPptEscherEx->OpenContainer( EPP_SlideListWithText, 2 ); // Animation info fuer die notes for( i = 0; i < mnPages; i++ ) { - if ( !ImplGetPageByIndex( i, NOTICE ) ) - return FALSE; - - nShapes = mXShapes->getCount(); - - bOtherThanPlaceHolders = FALSE; - if ( nShapes ) - { - for ( sal_uInt32 nIndex = 0; ( nIndex < nShapes ) && ( bOtherThanPlaceHolders == FALSE ); nIndex++ ) - { - if ( ImplGetShapeByIndex( nIndex ) && ( mType != "drawing.Page" ) ) - bOtherThanPlaceHolders = TRUE; - } - } mpPptEscherEx->AddAtom( 20, EPP_SlidePersistAtom ); mpPptEscherEx->InsertPersistOffset( EPP_MAINNOTES_PERSIST_KEY | i, mpStrm->Tell() ); *mpStrm << (sal_uInt32)0 - << (sal_uInt32)( ( bOtherThanPlaceHolders ) ? 4 : 0 ) + << (sal_uInt32)4 << (INT32)0 << (INT32)i + 0x100 << (sal_uInt32)0; @@ -2580,3 +2468,38 @@ extern "C" SAL_DLLPUBLIC_EXPORT BOOL __LOADONCALLAPI ExportPPT( SvStorageRef& rS return bStatus; } +extern "C" SAL_DLLPUBLIC_EXPORT BOOL __LOADONCALLAPI SaveVBA( SfxObjectShell& rDocShell, SvMemoryStream*& pBas ) +{ + SvStorageRef xDest( new SvStorage( new SvMemoryStream(), TRUE ) ); + SvxImportMSVBasic aMSVBas( rDocShell, *xDest, FALSE, FALSE ); + aMSVBas.SaveOrDelMSVBAStorage( TRUE, String( RTL_CONSTASCII_USTRINGPARAM("_MS_VBA_Overhead") ) ); + + SvStorageRef xOverhead = xDest->OpenSotStorage( String( RTL_CONSTASCII_USTRINGPARAM("_MS_VBA_Overhead") ) ); + if ( xOverhead.Is() && ( xOverhead->GetError() == SVSTREAM_OK ) ) + { + SvStorageRef xOverhead2 = xOverhead->OpenSotStorage( String( RTL_CONSTASCII_USTRINGPARAM("_MS_VBA_Overhead") ) ); + if ( xOverhead2.Is() && ( xOverhead2->GetError() == SVSTREAM_OK ) ) + { + SvStorageStreamRef xTemp = xOverhead2->OpenSotStream( String( RTL_CONSTASCII_USTRINGPARAM("_MS_VBA_Overhead2") ) ); + if ( xTemp.Is() && ( xTemp->GetError() == SVSTREAM_OK ) ) + { + UINT32 nLen = xTemp->GetSize(); + if ( nLen ) + { + char* pTemp = new char[ nLen ]; + if ( pTemp ) + { + xTemp->Seek( STREAM_SEEK_TO_BEGIN ); + xTemp->Read( pTemp, nLen ); + pBas = new SvMemoryStream( pTemp, nLen, STREAM_READ ); + pBas->ObjectOwnsMemory( TRUE ); + return TRUE; + } + } + } + } + } + + return FALSE; +} + diff --git a/sd/source/filter/eppt/eppt.hxx b/sd/source/filter/eppt/eppt.hxx index 84b64e33157c..af2c1d5ed6bf 100644 --- a/sd/source/filter/eppt/eppt.hxx +++ b/sd/source/filter/eppt/eppt.hxx @@ -38,7 +38,7 @@ #include <sot/storage.hxx> #include <tools/gen.hxx> #include <vcl/graph.hxx> -#include <vcl/fontcvt.hxx> +#include <unotools/fontcvt.hxx> #include <tools/string.hxx> #include "pptexanimations.hxx" #include <pptexsoundcollection.hxx> @@ -85,7 +85,7 @@ #include <com/sun/star/container/XIndexContainer.hpp> #include <com/sun/star/awt/XControlModel.hpp> #include <com/sun/star/style/TabStop.hpp> -#include <svx/msocximex.hxx> +#include <filter/msfilter/msocximex.hxx> #include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/beans/XPropertyState.hpp> #include <com/sun/star/beans/XPropertySetInfo.hpp> @@ -756,7 +756,6 @@ class PPTWriter : public GroupTable, public PropValue, public PPTExBulletProvide sal_uInt32 mnShapeMasterTitle; sal_uInt32 mnShapeMasterBody; - List maTextRuleList; // TextRuleEntry's List maHyperlink; FontCollection maFontCollection; diff --git a/sd/source/filter/eppt/epptso.cxx b/sd/source/filter/eppt/epptso.cxx index 75e5a4ba3227..361970345430 100644 --- a/sd/source/filter/eppt/epptso.cxx +++ b/sd/source/filter/eppt/epptso.cxx @@ -46,7 +46,7 @@ #include <vcl/virdev.hxx> #include <vcl/gradient.hxx> #include <sfx2/app.hxx> -#include <svtools/languageoptions.hxx> +#include <svl/languageoptions.hxx> //#ifndef _SVX_XIT_HXX //#include <svx/xit.hxx> //#endif @@ -4239,6 +4239,9 @@ void PPTWriter::ImplWritePage( const PHLayout& rLayout, EscherSolverContainer& a sal_Bool bAdditionalText = FALSE; + sal_Bool bSecOutl = FALSE; + sal_uInt32 nPObjects = 0; + SvMemoryStream* pClientTextBox = NULL; SvMemoryStream* pClientData = NULL; @@ -5341,32 +5344,32 @@ void PPTWriter::ImplWritePage( const PHLayout& rLayout, EscherSolverContainer& a if ( !pClientTextBox ) pClientTextBox = new SvMemoryStream( 0x200, 0x200 ); - *pClientTextBox << (sal_uInt32)( EPP_OutlineTextRefAtom << 16 ) << (sal_uInt32)4 - << nPlacementID; - if ( mbEmptyPresObj == FALSE ) { if ( ( ePageType == NORMAL ) && ( bMasterPage == FALSE ) ) - { // try to allocate the textruleratom - TextRuleEntry* pTextRule = (TextRuleEntry*)maTextRuleList.GetCurObject(); - while ( pTextRule ) + { + sal_uInt32 nTextType = EPP_TEXTTYPE_Body; + if ( mnTextStyle == EPP_TEXTSTYLE_BODY ) { - int nRulePage = pTextRule->nPageNumber; - if ( nRulePage > nPageNumber ) - break; - else if ( nRulePage < nPageNumber ) - pTextRule = (TextRuleEntry*)maTextRuleList.Next(); - else - { - SvMemoryStream* pOut = pTextRule->pOut; - if ( pOut ) - { - pClientTextBox->Write( pOut->GetData(), pOut->Tell() ); - delete pOut, pTextRule->pOut = NULL; - } - maTextRuleList.Next(); - break; - } + if ( bSecOutl ) + nTextType = EPP_TEXTTYPE_HalfBody; + else if ( mType == "presentation.Subtitle" ) + nTextType = EPP_TEXTTYPE_CenterBody; + bSecOutl = sal_True; + } + else + nTextType = EPP_TEXTTYPE_Title; + + TextRuleEntry aTextRule( nPageNumber ); + SvMemoryStream aExtBu( 0x200, 0x200 ); + ImplGetText(); + ImplWriteTextStyleAtom( *pClientTextBox, nTextType, nPObjects, &aTextRule, aExtBu, NULL ); + ImplWriteExtParaHeader( aExtBu, nPObjects++, nTextType, nPageNumber + 0x100 ); + SvMemoryStream* pOut = aTextRule.pOut; + if ( pOut ) + { + pClientTextBox->Write( pOut->GetData(), pOut->Tell() ); + delete pOut, aTextRule.pOut = NULL; } } } diff --git a/sd/source/filter/eppt/escherex.hxx b/sd/source/filter/eppt/escherex.hxx index 1ebebe8a5504..577531d9f534 100644 --- a/sd/source/filter/eppt/escherex.hxx +++ b/sd/source/filter/eppt/escherex.hxx @@ -30,7 +30,7 @@ #ifndef _PptEscherEX_HXX #define _PptEscherEX_HXX -#include <svx/escherex.hxx> +#include <filter/msfilter/escherex.hxx> // --------------------------------------------------------------------------------------------- // Werte fuer den ULONG im PPT_PST_TextHeaderAtom diff --git a/sd/source/filter/eppt/pptexanimations.hxx b/sd/source/filter/eppt/pptexanimations.hxx index 78dbb731ef0b..effbe3381cea 100644 --- a/sd/source/filter/eppt/pptexanimations.hxx +++ b/sd/source/filter/eppt/pptexanimations.hxx @@ -38,7 +38,7 @@ #include "../ppt/pptanimations.hxx" #endif #include <pptexsoundcollection.hxx> -#include <svx/escherex.hxx> +#include <filter/msfilter/escherex.hxx> #ifdef DBG_ANIM_LOG #include <stdio.h> diff --git a/sd/source/filter/grf/sdgrffilter.cxx b/sd/source/filter/grf/sdgrffilter.cxx index bb3c114f603f..5ef6123fdddf 100644 --- a/sd/source/filter/grf/sdgrffilter.cxx +++ b/sd/source/filter/grf/sdgrffilter.cxx @@ -60,7 +60,7 @@ // -- #include <comphelper/processfactory.hxx> -#include <svtools/pathoptions.hxx> +#include <unotools/pathoptions.hxx> #include <com/sun/star/ui/dialogs/XFilePicker.hpp> #include <com/sun/star/ui/dialogs/XFilterManager.hpp> #include <com/sun/star/ui/dialogs/TemplateDescription.hpp> diff --git a/sd/source/filter/html/buttonset.cxx b/sd/source/filter/html/buttonset.cxx index c2942f6b5b8f..2671452a0a3b 100644 --- a/sd/source/filter/html/buttonset.cxx +++ b/sd/source/filter/html/buttonset.cxx @@ -42,7 +42,7 @@ #include <vcl/graph.hxx> #include <vcl/virdev.hxx> #include <vcl/image.hxx> -#include <svtools/pathoptions.hxx> +#include <unotools/pathoptions.hxx> #include <boost/shared_ptr.hpp> diff --git a/sd/source/filter/html/htmlex.cxx b/sd/source/filter/html/htmlex.cxx index 6e2a7feb5240..e84d2b429ae3 100644 --- a/sd/source/filter/html/htmlex.cxx +++ b/sd/source/filter/html/htmlex.cxx @@ -40,7 +40,7 @@ #include <comphelper/processfactory.hxx> #include <osl/file.hxx> #include <tools/fsys.hxx> -#include <svtools/pathoptions.hxx> +#include <unotools/pathoptions.hxx> #include <svtools/FilterConfigItem.hxx> #ifndef _UNOTOOLS_UCBSTREAMHELPER_HXX #include <unotools/ucbstreamhelper.hxx> @@ -50,7 +50,7 @@ #include <sfx2/progress.hxx> #include <sfx2/progress.hxx> #include <vcl/wrkwin.hxx> -#include <svtools/aeitem.hxx> +#include <svl/aeitem.hxx> #include <svx/svditer.hxx> #include <svtools/imaprect.hxx> #include <svtools/imapcirc.hxx> @@ -75,9 +75,9 @@ #include <svx/flditem.hxx> #include <sfx2/dispatch.hxx> #include <sfx2/fcontnr.hxx> -#include <svtools/style.hxx> +#include <svl/style.hxx> #define _SVSTDARR_USHORTS -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> //#ifndef _SVDETC_HXX //#include <svx/svdetc.hxx> //#endif diff --git a/sd/source/filter/html/htmlex.hxx b/sd/source/filter/html/htmlex.hxx index d139940bfa97..2512c99e72d4 100644 --- a/sd/source/filter/html/htmlex.hxx +++ b/sd/source/filter/html/htmlex.hxx @@ -34,7 +34,7 @@ #include <com/sun/star/beans/PropertyValue.hpp> #include <com/sun/star/ucb/XSimpleFileAccess.hpp> #include <vcl/gdimtf.hxx> -#include <svtools/itemset.hxx> +#include <svl/itemset.hxx> #include "resltn.hxx" // enum PublishingResolution #include <svtools/colrdlg.hxx> #include <svtools/ehdl.hxx> diff --git a/sd/source/filter/html/pubdlg.cxx b/sd/source/filter/html/pubdlg.cxx index aec387604488..6d9860740740 100644 --- a/sd/source/filter/html/pubdlg.cxx +++ b/sd/source/filter/html/pubdlg.cxx @@ -44,14 +44,14 @@ #include <vcl/fixed.hxx> #include <vcl/combobox.hxx> #include <svtools/svmedit.hxx> -#include <svtools/intitem.hxx> -#include <svtools/aeitem.hxx> -#include <svtools/itemset.hxx> -#include <svtools/stritem.hxx> +#include <svl/intitem.hxx> +#include <svl/aeitem.hxx> +#include <svl/itemset.hxx> +#include <svl/stritem.hxx> #include <vcl/msgbox.hxx> #include <svtools/valueset.hxx> #include <vcl/graph.hxx> -#include <svtools/eitem.hxx> +#include <svl/eitem.hxx> #include <svx/impgrf.hxx> #include <svtools/colrdlg.hxx> #include <svx/colritem.hxx> @@ -60,8 +60,8 @@ #include <sfx2/docfile.hxx> #include <sfx2/app.hxx> #include <pres.hxx> -#include <svtools/useroptions.hxx> -#include <svtools/pathoptions.hxx> +#include <unotools/useroptions.hxx> +#include <unotools/pathoptions.hxx> #include "sdresid.hxx" #include "sdattr.hxx" diff --git a/sd/source/filter/ppt/pptatom.hxx b/sd/source/filter/ppt/pptatom.hxx index 9ccd845d14e6..14a7f81b4e98 100644 --- a/sd/source/filter/ppt/pptatom.hxx +++ b/sd/source/filter/ppt/pptatom.hxx @@ -32,6 +32,7 @@ #define _PPTATOM_HXX_ #include <svx/msdffdef.hxx> +#include <filter/msfilter/msdffimp.hxx> class SvStream; diff --git a/sd/source/filter/ppt/pptin.cxx b/sd/source/filter/ppt/pptin.cxx index c495c69a55e8..37277a17c97b 100644 --- a/sd/source/filter/ppt/pptin.cxx +++ b/sd/source/filter/ppt/pptin.cxx @@ -35,20 +35,20 @@ #include <unotools/ucbstreamhelper.hxx> #include <vcl/wrkwin.hxx> -#include <svtools/urihelper.hxx> +#include <svl/urihelper.hxx> #include <svx/svxids.hrc> -#include <svx/svdfppt.hxx> +#include <filter/msfilter/svdfppt.hxx> #include <svx/svditer.hxx> #include <sfx2/docfile.hxx> #include <sfx2/app.hxx> #include <svx/svdograf.hxx> #include <svx/svdlayer.hxx> #include <vcl/msgbox.hxx> -#include <svtools/style.hxx> +#include <svl/style.hxx> #include <svx/xflclit.hxx> #include <svx/eeitem.hxx> #include <svx/colritem.hxx> -#include <svtools/whiter.hxx> +#include <svl/whiter.hxx> #include <svx/xgrad.hxx> #include <svx/xflgrit.hxx> #include <svx/xbtmpit.hxx> @@ -75,7 +75,7 @@ #include <svx/gallery.hxx> #include <tools/urlobj.hxx> #include <svx/numitem.hxx> -#include <svtools/itempool.hxx> +#include <svl/itempool.hxx> #include <svx/fhgtitem.hxx> #include <svx/svdopage.hxx> #include <svx/svdomedia.hxx> @@ -88,11 +88,11 @@ #include "../../ui/inc/FrameView.hxx" #include "../../ui/inc/optsitem.hxx" -#include <svtools/fltrcfg.hxx> +#include <unotools/fltrcfg.hxx> #include <sfx2/progress.hxx> #include <unotools/localfilehelper.hxx> #include <svx/editstat.hxx> -#include <svtools/pathoptions.hxx> +#include <unotools/pathoptions.hxx> #include <sfx2/docfac.hxx> #define MAX_USER_MOVE 2 diff --git a/sd/source/filter/ppt/pptin.hxx b/sd/source/filter/ppt/pptin.hxx index 59d59eece151..0549f8fa85c0 100644 --- a/sd/source/filter/ppt/pptin.hxx +++ b/sd/source/filter/ppt/pptin.hxx @@ -31,11 +31,11 @@ #ifndef _SD_PPTIN_HXX #define _SD_PPTIN_HXX -#include <svx/svdfppt.hxx> +#include <filter/msfilter/svdfppt.hxx> #include <svx/msdffdef.hxx> #include <diadef.h> #include <svx/svdtypes.hxx> -#include <svx/msfiltertracer.hxx> +#include <filter/msfilter/msfiltertracer.hxx> #include <com/sun/star/uno/Any.h> #include <boost/shared_ptr.hpp> diff --git a/sd/source/filter/ppt/pptinanimations.hxx b/sd/source/filter/ppt/pptinanimations.hxx index 114f471a3cef..e53a2c406f36 100644 --- a/sd/source/filter/ppt/pptinanimations.hxx +++ b/sd/source/filter/ppt/pptinanimations.hxx @@ -34,15 +34,13 @@ #include <com/sun/star/animations/XTimeContainer.hpp> #include <com/sun/star/drawing/XDrawPage.hpp> -#ifndef _SD_PPTANIMATIONS_HXX #include "pptanimations.hxx" -#endif #include <animations.hxx> #ifdef DBG_ANIM_LOG #include <stdio.h> #endif -#include <svx/svdfppt.hxx> +#include <filter/msfilter/svdfppt.hxx> #include <list> diff --git a/sd/source/filter/sdfilter.cxx b/sd/source/filter/sdfilter.cxx index 3507a71526cf..657d658e22d0 100644 --- a/sd/source/filter/sdfilter.cxx +++ b/sd/source/filter/sdfilter.cxx @@ -39,7 +39,7 @@ #include <sfx2/docfile.hxx> #include <sfx2/viewfrm.hxx> #include <sfx2/progress.hxx> -#include <svtools/itemset.hxx> +#include <svl/itemset.hxx> #include "../ui/inc/DrawDocShell.hxx" #include "../ui/inc/strings.hrc" diff --git a/sd/source/filter/sdpptwrp.cxx b/sd/source/filter/sdpptwrp.cxx index 8c1674dbf789..8dea30f1659a 100644 --- a/sd/source/filter/sdpptwrp.cxx +++ b/sd/source/filter/sdpptwrp.cxx @@ -34,16 +34,16 @@ #include <sfx2/docfile.hxx> #include <sfx2/docfilt.hxx> #include <osl/module.hxx> -#include <svx/msoleexp.hxx> -#include <svx/svxmsbas.hxx> +#include <filter/msfilter/msoleexp.hxx> +#include <filter/msfilter/svxmsbas.hxx> #include <svx/svxerr.hxx> -#include <svtools/fltrcfg.hxx> +#include <unotools/fltrcfg.hxx> #include "sdpptwrp.hxx" #include "ppt/pptin.hxx" #include "drawdoc.hxx" #include <tools/urlobj.hxx> -#include <svx/msfiltertracer.hxx> +#include <filter/msfilter/msfiltertracer.hxx> // -------------- // - Namespaces - @@ -54,7 +54,6 @@ using namespace ::com::sun::star::beans; using namespace ::com::sun::star::task; using namespace ::com::sun::star::frame; - typedef BOOL ( __LOADONCALLAPI *ExportPPT )( SvStorageRef&, Reference< XModel > &, Reference< XStatusIndicator > &, @@ -63,6 +62,8 @@ typedef BOOL ( __LOADONCALLAPI *ExportPPT )( SvStorageRef&, typedef sal_Bool ( SAL_CALL *ImportPPT )( const ::rtl::OUString&, Sequence< PropertyValue >*, SdDrawDocument*, SvStream&, SvStorage&, SfxMedium& ); +typedef BOOL ( __LOADONCALLAPI *SaveVBA )( SfxObjectShell&, SvMemoryStream*& ); + // --------------- // - SdPPTFilter - // --------------- @@ -188,32 +189,13 @@ void SdPPTFilter::PreSaveBasic() SvtFilterOptions* pFilterOptions = SvtFilterOptions::Get(); if( pFilterOptions && pFilterOptions->IsLoadPPointBasicStorage() ) { - SvStorageRef xDest( new SvStorage( new SvMemoryStream(), TRUE ) ); - SvxImportMSVBasic aMSVBas( (SfxObjectShell&) mrDocShell, *xDest, FALSE, FALSE ); - aMSVBas.SaveOrDelMSVBAStorage( TRUE, String( RTL_CONSTASCII_USTRINGPARAM("_MS_VBA_Overhead") ) ); - - SvStorageRef xOverhead = xDest->OpenSotStorage( String( RTL_CONSTASCII_USTRINGPARAM("_MS_VBA_Overhead") ) ); - if ( xOverhead.Is() && ( xOverhead->GetError() == SVSTREAM_OK ) ) + ::osl::Module* pLibrary = OpenLibrary( mrMedium.GetFilter()->GetUserData() ); + if( pLibrary ) { - SvStorageRef xOverhead2 = xOverhead->OpenSotStorage( String( RTL_CONSTASCII_USTRINGPARAM("_MS_VBA_Overhead") ) ); - if ( xOverhead2.Is() && ( xOverhead2->GetError() == SVSTREAM_OK ) ) + SaveVBA pSaveVBA= reinterpret_cast<SaveVBA>(pLibrary->getFunctionSymbol( ::rtl::OUString::createFromAscii("SaveVBA") )); + if( pSaveVBA ) { - SvStorageStreamRef xTemp = xOverhead2->OpenSotStream( String( RTL_CONSTASCII_USTRINGPARAM("_MS_VBA_Overhead2") ) ); - if ( xTemp.Is() && ( xTemp->GetError() == SVSTREAM_OK ) ) - { - UINT32 nLen = xTemp->GetSize(); - if ( nLen ) - { - char* pTemp = new char[ nLen ]; - if ( pTemp ) - { - xTemp->Seek( STREAM_SEEK_TO_BEGIN ); - xTemp->Read( pTemp, nLen ); - pBas = new SvMemoryStream( pTemp, nLen, STREAM_READ ); - pBas->ObjectOwnsMemory( TRUE ); - } - } - } + pSaveVBA( (SfxObjectShell&) mrDocShell, pBas ); } } } diff --git a/sd/source/filter/xml/sdtransform.cxx b/sd/source/filter/xml/sdtransform.cxx index 16930a81b055..5fa918db31ef 100644 --- a/sd/source/filter/xml/sdtransform.cxx +++ b/sd/source/filter/xml/sdtransform.cxx @@ -32,10 +32,10 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sd.hxx" -#include <svtools/style.hxx> -#include <svtools/itemset.hxx> -#include <svtools/itempool.hxx> -#include <svtools/whiter.hxx> +#include <svl/style.hxx> +#include <svl/itemset.hxx> +#include <svl/itempool.hxx> +#include <svl/whiter.hxx> #include <svx/svdoutl.hxx> #include <svx/xmlcnitm.hxx> diff --git a/sd/source/filter/xml/sdxmlwrp.cxx b/sd/source/filter/xml/sdxmlwrp.cxx index 6f9e0d7b71da..6aac1c1c3967 100644 --- a/sd/source/filter/xml/sdxmlwrp.cxx +++ b/sd/source/filter/xml/sdxmlwrp.cxx @@ -67,11 +67,11 @@ #include <com/sun/star/io/XActiveDataControl.hpp> #include <comphelper/genericpropertyset.hxx> #include <comphelper/propertysetinfo.hxx> -#include <svtools/saveopt.hxx> +#include <unotools/saveopt.hxx> // #80365# include necessary for XML progress bar at load time -#include <svtools/itemset.hxx> -#include <svtools/stritem.hxx> +#include <svl/itemset.hxx> +#include <svl/stritem.hxx> #include <svtools/sfxecode.hxx> #include "sderror.hxx" diff --git a/sd/source/ui/accessibility/AccessibleDocumentViewBase.cxx b/sd/source/ui/accessibility/AccessibleDocumentViewBase.cxx index 2f86b8f8f1ad..55d485e7b08b 100644 --- a/sd/source/ui/accessibility/AccessibleDocumentViewBase.cxx +++ b/sd/source/ui/accessibility/AccessibleDocumentViewBase.cxx @@ -39,17 +39,11 @@ #include <com/sun/star/frame/XFrame.hpp> #include <com/sun/star/document/XEventBroadcaster.hpp> #include <com/sun/star/beans/XPropertySet.hpp> -#ifndef _COM_SUN_STAR_ACCESSIBLE_ACCESSIBLEEVENTID_HPP_ #include <com/sun/star/accessibility/AccessibleEventId.hpp> -#endif #include <com/sun/star/lang/IndexOutOfBoundsException.hpp> -#ifndef _COM_SUN_STAR_LANG_XMULSTISERVICEFACTORY_HPP_ #include <com/sun/star/lang/XMultiServiceFactory.hpp> -#endif #include <rtl/ustring.h> -#ifndef _SFXFRAME_HXX #include<sfx2/viewfrm.hxx> -#endif #include <svx/AccessibleShape.hxx> @@ -279,7 +273,7 @@ sal_Int32 SAL_CALL Reference<XAccessible> SAL_CALL AccessibleDocumentViewBase::getAccessibleChild (sal_Int32 nIndex) - throw (uno::RuntimeException) + throw (uno::RuntimeException, lang::IndexOutOfBoundsException) { ThrowIfDisposed (); diff --git a/sd/source/ui/accessibility/AccessibleDrawDocumentView.cxx b/sd/source/ui/accessibility/AccessibleDrawDocumentView.cxx index 38350f246bf1..1ea7d53ea35a 100644 --- a/sd/source/ui/accessibility/AccessibleDrawDocumentView.cxx +++ b/sd/source/ui/accessibility/AccessibleDrawDocumentView.cxx @@ -40,20 +40,11 @@ #include <com/sun/star/frame/XFrame.hpp> #include <com/sun/star/document/XEventBroadcaster.hpp> #include <com/sun/star/beans/XPropertySet.hpp> -#ifndef _COM_SUN_STAR_ACCESSIBLE_ACCESSIBLEEVENTID_HPP_ #include <com/sun/star/accessibility/AccessibleEventId.hpp> -#endif -#ifndef _COM_SUN_STAR_ACCESSIBLE_ACCESSIBLESTATETYPE_HPP_ #include <com/sun/star/accessibility/AccessibleStateType.hpp> -#endif -#include <com/sun/star/lang/IndexOutOfBoundsException.hpp> -#ifndef _COM_SUN_STAR_LANG_XMULSTISERVICEFACTORY_HPP_ #include <com/sun/star/lang/XMultiServiceFactory.hpp> -#endif #include <rtl/ustring.h> -#ifndef _SFXFRAME_HXX #include<sfx2/viewfrm.hxx> -#endif #include <svx/AccessibleShape.hxx> @@ -243,7 +234,7 @@ sal_Int32 SAL_CALL uno::Reference<XAccessible> SAL_CALL AccessibleDrawDocumentView::getAccessibleChild (sal_Int32 nIndex) - throw (::com::sun::star::uno::RuntimeException) + throw (uno::RuntimeException, lang::IndexOutOfBoundsException) { ThrowIfDisposed (); diff --git a/sd/source/ui/animations/AnimationSchemesPane.cxx b/sd/source/ui/animations/AnimationSchemesPane.cxx index 02a230650583..51ddad2fb97d 100644 --- a/sd/source/ui/animations/AnimationSchemesPane.cxx +++ b/sd/source/ui/animations/AnimationSchemesPane.cxx @@ -49,7 +49,7 @@ #include <svtools/controldims.hrc> #endif #include <svx/gallery.hxx> -#include <svtools/pathoptions.hxx> +#include <unotools/pathoptions.hxx> #include <vcl/msgbox.hxx> #include <tools/urlobj.hxx> diff --git a/sd/source/ui/animations/CustomAnimationCreateDialog.cxx b/sd/source/ui/animations/CustomAnimationCreateDialog.cxx index ce651b2965be..ea59e0773261 100644 --- a/sd/source/ui/animations/CustomAnimationCreateDialog.cxx +++ b/sd/source/ui/animations/CustomAnimationCreateDialog.cxx @@ -53,7 +53,7 @@ #include <svx/svdetc.hxx> #include <svx/svdstr.hrc> #include "sdresid.hxx" -#include <svtools/viewoptions.hxx> +#include <unotools/viewoptions.hxx> #include <com/sun/star/presentation/EffectNodeType.hpp> #include "CustomAnimationCreateDialog.hxx" #ifndef _SD_CUSTOMANIMATIONCREATEDIALOG_HRC diff --git a/sd/source/ui/animations/CustomAnimationDialog.cxx b/sd/source/ui/animations/CustomAnimationDialog.cxx index dc7a27ab5c53..9a1634a7f695 100644 --- a/sd/source/ui/animations/CustomAnimationDialog.cxx +++ b/sd/source/ui/animations/CustomAnimationDialog.cxx @@ -52,7 +52,7 @@ #ifndef _UNOTOOLS_PROCESSFACTORY_HXX #include <comphelper/processfactory.hxx> #endif -#include <svtools/pathoptions.hxx> +#include <unotools/pathoptions.hxx> #include <vcl/tabctrl.hxx> #include <vcl/tabpage.hxx> #include <vcl/menubtn.hxx> diff --git a/sd/source/ui/animations/SlideTransitionPane.cxx b/sd/source/ui/animations/SlideTransitionPane.cxx index 13400964c18b..4a235e3cd9af 100644 --- a/sd/source/ui/animations/SlideTransitionPane.cxx +++ b/sd/source/ui/animations/SlideTransitionPane.cxx @@ -51,7 +51,7 @@ #include <svtools/controldims.hrc> #endif #include <svx/gallery.hxx> -#include <svtools/pathoptions.hxx> +#include <unotools/pathoptions.hxx> #include <vcl/msgbox.hxx> #include <tools/urlobj.hxx> #include "DrawViewShell.hxx" diff --git a/sd/source/ui/annotations/annotationmanager.cxx b/sd/source/ui/annotations/annotationmanager.cxx index bbc9bbd539f3..9e650d0da43c 100644 --- a/sd/source/ui/annotations/annotationmanager.cxx +++ b/sd/source/ui/annotations/annotationmanager.cxx @@ -45,11 +45,11 @@ #include <vcl/menu.hxx> #include <vcl/msgbox.hxx> -#include <svtools/style.hxx> -#include <svtools/itempool.hxx> -#include <svtools/useroptions.hxx> -#include <svtools/syslocale.hxx> -#include <svtools/saveopt.hxx> +#include <svl/style.hxx> +#include <svl/itempool.hxx> +#include <unotools/useroptions.hxx> +#include <unotools/syslocale.hxx> +#include <unotools/saveopt.hxx> #include <sfx2/imagemgr.hxx> #include <sfx2/viewfrm.hxx> @@ -199,7 +199,7 @@ AnnotationManagerImpl::AnnotationManagerImpl( ViewShellBase& rViewShellBase ) { SdOptions* pOptions = SD_MOD()->GetSdOptions(mpDoc->GetDocumentType()); if( pOptions ) - mbShowAnnotations = pOptions->IsPreviewTransitions() == sal_True; + mbShowAnnotations = pOptions->IsShowComments() == TRUE; } // -------------------------------------------------------------------- diff --git a/sd/source/ui/annotations/annotationwindow.cxx b/sd/source/ui/annotations/annotationwindow.cxx index ae3c65a2b4d5..2a7ca2df9b0d 100644 --- a/sd/source/ui/annotations/annotationwindow.cxx +++ b/sd/source/ui/annotations/annotationwindow.cxx @@ -57,11 +57,11 @@ #include <svx/crsditem.hxx> #include <svtools/langtab.hxx> -#include <svtools/slstitm.hxx> -#include <svtools/securityoptions.hxx> -#include <svtools/useroptions.hxx> -#include <svtools/languageoptions.hxx> -#include <svtools/zforlist.hxx> +#include <svl/slstitm.hxx> +#include <unotools/securityoptions.hxx> +#include <unotools/useroptions.hxx> +#include <svl/languageoptions.hxx> +#include <svl/zforlist.hxx> #include <svtools/svmedit.hxx> #include <linguistic/lngprops.hxx> diff --git a/sd/source/ui/app/optsitem.cxx b/sd/source/ui/app/optsitem.cxx index 673e00477d46..b62bba0435ef 100644 --- a/sd/source/ui/app/optsitem.cxx +++ b/sd/source/ui/app/optsitem.cxx @@ -36,7 +36,7 @@ #ifndef _SV_SALBTYPE_HRC //autogen #include <vcl/salbtype.hxx> #endif -#include <svtools/syslocale.hxx> +#include <unotools/syslocale.hxx> #include "app.hxx" #include "optsitem.hxx" @@ -74,6 +74,10 @@ void SdOptionsItem::Commit() mrParent.Commit( *this ); }; +void SdOptionsItem::Notify( const com::sun::star::uno::Sequence<rtl::OUString>& ) +{} + + // ----------------------------------------------------------------------------- Sequence< Any > SdOptionsItem::GetProperties( const Sequence< OUString >& rNames ) diff --git a/sd/source/ui/app/res_bmp.src b/sd/source/ui/app/res_bmp.src index 4796be585d1e..77ef817e4c44 100644 --- a/sd/source/ui/app/res_bmp.src +++ b/sd/source/ui/app/res_bmp.src @@ -29,7 +29,7 @@ ************************************************************************/ #include <sfx2/sfx.hrc> -#include <svtools/style.hrc> +#include <svl/style.hrc> #include "glob.hrc" #include "res_bmp.hrc" diff --git a/sd/source/ui/app/sddll.cxx b/sd/source/ui/app/sddll.cxx index c2ab152d950b..7cdec8c9f36b 100644 --- a/sd/source/ui/app/sddll.cxx +++ b/sd/source/ui/app/sddll.cxx @@ -34,7 +34,7 @@ #include <svx/editeng.hxx> #include <svx/svdobj.hxx> -#include <svtools/moduleoptions.hxx> +#include <unotools/moduleoptions.hxx> #ifndef _FM_FMOBJFAC_HXX #include <svx/fmobjfac.hxx> #endif diff --git a/sd/source/ui/app/sddll1.cxx b/sd/source/ui/app/sddll1.cxx index 2ef0815aed3c..6b525a0b3f90 100644 --- a/sd/source/ui/app/sddll1.cxx +++ b/sd/source/ui/app/sddll1.cxx @@ -32,7 +32,7 @@ #include "precompiled_sd.hxx" -#include <svtools/moduleoptions.hxx> +#include <unotools/moduleoptions.hxx> #include "sddll.hxx" #include "diactrl.hxx" #include "tbx_ww.hxx" diff --git a/sd/source/ui/app/sdmod.cxx b/sd/source/ui/app/sdmod.cxx index f7e74a481740..0e68a487b6e2 100644 --- a/sd/source/ui/app/sdmod.cxx +++ b/sd/source/ui/app/sdmod.cxx @@ -30,8 +30,8 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sd.hxx" -#include <svtools/pathoptions.hxx> -#include <svtools/languageoptions.hxx> +#include <unotools/pathoptions.hxx> +#include <svl/languageoptions.hxx> #ifndef _UNOTOOLS_UCBSTREAMHELPER_HXX #include <unotools/ucbstreamhelper.hxx> #endif @@ -39,14 +39,14 @@ #include <vcl/virdev.hxx> #include <sfx2/app.hxx> #include <vcl/status.hxx> -#include <svtools/intitem.hxx> +#include <svl/intitem.hxx> #include <sfx2/msg.hxx> #include <sfx2/objface.hxx> #include <sfx2/printer.hxx> #include <svx/pszctrl.hxx> #include <svx/zoomctrl.hxx> #include <svx/modctrl.hxx> -#include <svtools/zforlist.hxx> +#include <svl/zforlist.hxx> #include <comphelper/processfactory.hxx> #include <svtools/ehdl.hxx> @@ -131,11 +131,6 @@ SdModule::SdModule(SfxObjectFactory* pFact1, SfxObjectFactory* pFact2 ) SdModule::~SdModule() { - // Mark the module in the global AppData structure as deleted. - SdModule** ppShellPointer = (SdModule**)GetAppData(SHL_DRAW); - if (ppShellPointer != NULL) - (*ppShellPointer) = NULL; - delete pSearchItem; if( pNumberFormatter ) @@ -152,6 +147,13 @@ SdModule::~SdModule() } } + mpResourceContainer.reset(); + + // Mark the module in the global AppData structure as deleted. + SdModule** ppShellPointer = (SdModule**)GetAppData(SHL_DRAW); + if (ppShellPointer != NULL) + (*ppShellPointer) = NULL; + delete mpErrorHdl; delete static_cast< VirtualDevice* >( mpVirtualRefDevice ); } diff --git a/sd/source/ui/app/sdmod1.cxx b/sd/source/ui/app/sdmod1.cxx index 4144b4afb774..65485d9df447 100644 --- a/sd/source/ui/app/sdmod1.cxx +++ b/sd/source/ui/app/sdmod1.cxx @@ -31,10 +31,10 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sd.hxx" -#include <svtools/lckbitem.hxx> +#include <svl/lckbitem.hxx> #include <sfx2/frame.hxx> #include <sfx2/viewfrm.hxx> -#include <svtools/moduleoptions.hxx> +#include <unotools/moduleoptions.hxx> #include "framework/FrameworkHelper.hxx" #include <svx/dialogs.hrc> @@ -49,7 +49,7 @@ #include <sfx2/docfile.hxx> #include <svx/paperinf.hxx> #include <svx/eeitem.hxx> -#include <svtools/useroptions.hxx> +#include <unotools/useroptions.hxx> #include "app.hrc" #include "glob.hrc" diff --git a/sd/source/ui/app/sdmod2.cxx b/sd/source/ui/app/sdmod2.cxx index bbf80e942602..0a4eaf0bbebe 100644 --- a/sd/source/ui/app/sdmod2.cxx +++ b/sd/source/ui/app/sdmod2.cxx @@ -33,10 +33,10 @@ #include <svx/eeitem.hxx> #include <svx/flditem.hxx> #include <sfx2/printer.hxx> -#include <svtools/inethist.hxx> -#include <svtools/poolitem.hxx> -#include <svtools/flagitem.hxx> -#include <svtools/useroptions.hxx> +#include <svl/inethist.hxx> +#include <svl/poolitem.hxx> +#include <svl/flagitem.hxx> +#include <unotools/useroptions.hxx> #include <sfx2/bindings.hxx> #include <vcl/msgbox.hxx> #include <sfx2/viewfrm.hxx> @@ -85,7 +85,7 @@ #include "sdabstdlg.hxx" #include "tpoption.hrc" #include "prntopts.hrc" -#include <svtools/intitem.hxx> +#include <svl/intitem.hxx> /** retrieves the page that is currently painted. This will only be the master page if the current drawn view only shows the master page*/ diff --git a/sd/source/ui/app/sdpopup.cxx b/sd/source/ui/app/sdpopup.cxx index 211e3a1fd02e..274a99f830e5 100644 --- a/sd/source/ui/app/sdpopup.cxx +++ b/sd/source/ui/app/sdpopup.cxx @@ -36,10 +36,10 @@ #include <svx/editeng.hxx> #include <svx/flditem.hxx> -#include <svtools/zforlist.hxx> +#include <svl/zforlist.hxx> #include <sfx2/objsh.hxx> #include <sfx2/docfile.hxx> -#include <svtools/useroptions.hxx> +#include <unotools/useroptions.hxx> #include "strings.hrc" #include "sdpopup.hxx" diff --git a/sd/source/ui/app/sdxfer.cxx b/sd/source/ui/app/sdxfer.cxx index f22af4ad2887..7a57c81178b6 100644 --- a/sd/source/ui/app/sdxfer.cxx +++ b/sd/source/ui/app/sdxfer.cxx @@ -49,13 +49,13 @@ #include <svx/svdotext.hxx> #include <svx/outlobj.hxx> #include <sot/storage.hxx> -#include <svtools/itempool.hxx> +#include <svl/itempool.hxx> #include <svx/editobj.hxx> #include <svx/fmglob.hxx> #include <svx/svdouno.hxx> #include <tools/urlobj.hxx> #include <sot/formats.hxx> -#include <svtools/urlbmk.hxx> +#include <svl/urlbmk.hxx> #include <svx/outliner.hxx> //#ifndef _SVDETC_HXX //autogen diff --git a/sd/source/ui/app/tbxww.cxx b/sd/source/ui/app/tbxww.cxx index e94fe501d73b..269486d56e92 100644 --- a/sd/source/ui/app/tbxww.cxx +++ b/sd/source/ui/app/tbxww.cxx @@ -35,7 +35,7 @@ #include <sfx2/bindings.hxx> #include <svx/svxids.hrc> #include <svx/grafctrl.hxx> -#include <svtools/cjkoptions.hxx> +#include <svl/cjkoptions.hxx> #include <sfx2/viewsh.hxx> #ifndef _SFX_IMAGEMGR_HXX #include <sfx2/imagemgr.hxx> @@ -311,7 +311,7 @@ void SdTbxControl::StateChanged( USHORT nSId, Image aImage = GetImage( m_xFrame, aSlotURL, hasBigImages(), - GetToolBox().GetDisplayBackground().GetColor().IsDark() ); + GetToolBox().GetSettings().GetStyleSettings().GetHighContrastMode() ); // !-Operator prueft, ob Image nicht vorhanden ist if( !!aImage ) diff --git a/sd/source/ui/app/tmplctrl.cxx b/sd/source/ui/app/tmplctrl.cxx index ce7f1ff28acc..86f0e4db6e10 100644 --- a/sd/source/ui/app/tmplctrl.cxx +++ b/sd/source/ui/app/tmplctrl.cxx @@ -37,8 +37,8 @@ #include <vcl/menu.hxx> #include <vcl/status.hxx> -#include <svtools/style.hxx> -#include <svtools/stritem.hxx> +#include <svl/style.hxx> +#include <svl/stritem.hxx> #include <sfx2/dispatch.hxx> #include "tmplctrl.hxx" diff --git a/sd/source/ui/dlg/LayerDialogContent.cxx b/sd/source/ui/dlg/LayerDialogContent.cxx index ac3149d4cadf..735af8c95042 100644 --- a/sd/source/ui/dlg/LayerDialogContent.cxx +++ b/sd/source/ui/dlg/LayerDialogContent.cxx @@ -38,7 +38,7 @@ #include <svx/gallery.hxx> #include <svx/colritem.hxx> #include <sfx2/dispatch.hxx> -#include <svtools/aeitem.hxx> +#include <svl/aeitem.hxx> #include <vcl/msgbox.hxx> #include "sdattr.hxx" diff --git a/sd/source/ui/dlg/PaneDockingWindow.cxx b/sd/source/ui/dlg/PaneDockingWindow.cxx index 9ae95a079bd6..2aa6039cfb76 100644 --- a/sd/source/ui/dlg/PaneDockingWindow.cxx +++ b/sd/source/ui/dlg/PaneDockingWindow.cxx @@ -263,7 +263,7 @@ void PaneDockingWindow::InitializeTitleToolBox (void) Image aImage = Image (aBitmap, Color (COL_LIGHTMAGENTA)); Image aImageHC = Image (aBitmapHC, Color (BMP_COLOR_HIGHCONTRAST)); mpTitleToolBox->InsertItem (1, - GetSettings().GetStyleSettings().GetMenuBarColor().IsDark() + GetSettings().GetStyleSettings().GetHighContrastMode() ? aImageHC : aImage); mpTitleToolBox->ShowItem (1); diff --git a/sd/source/ui/dlg/animobjs.cxx b/sd/source/ui/dlg/animobjs.cxx index 0c05c58312b8..9b0e9d118927 100644 --- a/sd/source/ui/dlg/animobjs.cxx +++ b/sd/source/ui/dlg/animobjs.cxx @@ -39,7 +39,7 @@ #include <svx/xoutbmp.hxx> #include <time.h> -#include <svtools/eitem.hxx> +#include <svl/eitem.hxx> #include <svx/svdograf.hxx> #include <svx/svdogrp.hxx> #include <sfx2/dispatch.hxx> @@ -138,7 +138,7 @@ void SdDisplay::DataChanged( const DataChangedEvent& rDCEvt ) { const StyleSettings& rStyles = Application::GetSettings().GetStyleSettings(); SetBackground( Wallpaper( Color( rStyles.GetFieldColor() ) ) ); - SetDrawMode( GetDisplayBackground().GetColor().IsDark() + SetDrawMode( GetSettings().GetStyleSettings().GetHighContrastMode() ? ViewShell::OUTPUT_DRAWMODE_CONTRAST : ViewShell::OUTPUT_DRAWMODE_COLOR ); } @@ -601,7 +601,7 @@ void AnimationWindow::UpdateControl( ULONG nListPos, BOOL bDisableCtrls ) aVD.SetOutputSize( aObjSize ); const StyleSettings& rStyles = Application::GetSettings().GetStyleSettings(); aVD.SetBackground( Wallpaper( rStyles.GetFieldColor() ) ); - aVD.SetDrawMode( GetDisplayBackground().GetColor().IsDark() + aVD.SetDrawMode( rStyles.GetHighContrastMode() ? ViewShell::OUTPUT_DRAWMODE_CONTRAST : ViewShell::OUTPUT_DRAWMODE_COLOR ); aVD.Erase(); diff --git a/sd/source/ui/dlg/celltempl.cxx b/sd/source/ui/dlg/celltempl.cxx index 0acea6b8d033..b0a353c42b2f 100644 --- a/sd/source/ui/dlg/celltempl.cxx +++ b/sd/source/ui/dlg/celltempl.cxx @@ -35,8 +35,8 @@ #undef SD_DLLIMPLEMENTATION #endif -#include <svtools/style.hxx> -#include <svtools/intitem.hxx> +#include <svl/style.hxx> +#include <svl/intitem.hxx> #include <svx/dialogs.hrc> #include <svx/drawitem.hxx> diff --git a/sd/source/ui/dlg/dlgass.cxx b/sd/source/ui/dlg/dlgass.cxx index 13ad351c7b24..ea89fba79500 100644 --- a/sd/source/ui/dlg/dlgass.cxx +++ b/sd/source/ui/dlg/dlgass.cxx @@ -41,7 +41,7 @@ #include <vcl/lstbox.hxx> #include <vcl/combobox.hxx> #include <sfx2/doctempl.hxx> -#include <svtools/lstner.hxx> +#include <svl/lstner.hxx> #include <sfx2/objsh.hxx> #include <svtools/ehdl.hxx> #include <svtools/sfxecode.hxx> @@ -49,7 +49,7 @@ #include <com/sun/star/presentation/FadeEffect.hpp> #include <fadedef.h> #include <sfx2/sfxsids.hrc> -#include <svtools/undo.hxx> +#include <svl/undo.hxx> #include "DrawDocShell.hxx" #include <vcl/gdimtf.hxx> #include <vcl/wintypes.hxx> @@ -66,7 +66,7 @@ #include <com/sun/star/ucb/XSimpleFileAccess.hpp> #include <com/sun/star/ui/XModuleUIConfigurationManagerSupplier.hpp> #include <com/sun/star/ui/XImageManager.hpp> -#include <svtools/historyoptions.hxx> +#include <unotools/historyoptions.hxx> #include <tools/urlobj.hxx> #include <osl/file.hxx> #include <sfx2/filedlghelper.hxx> diff --git a/sd/source/ui/dlg/dlgassim.cxx b/sd/source/ui/dlg/dlgassim.cxx index 0b394d57702b..a1781ec2d9dc 100644 --- a/sd/source/ui/dlg/dlgassim.cxx +++ b/sd/source/ui/dlg/dlgassim.cxx @@ -36,7 +36,7 @@ #endif #include <sfx2/docfile.hxx> #include <tools/urlobj.hxx> -#include <svtools/pathoptions.hxx> +#include <unotools/pathoptions.hxx> #include "sdpage.hxx" #include "Outliner.hxx" diff --git a/sd/source/ui/dlg/dlgassim.hxx b/sd/source/ui/dlg/dlgassim.hxx index 33b3a777b68b..d4a75fb8dd3d 100644 --- a/sd/source/ui/dlg/dlgassim.hxx +++ b/sd/source/ui/dlg/dlgassim.hxx @@ -28,7 +28,7 @@ * ************************************************************************/ -#include <svtools/dateitem.hxx> +#include <svl/dateitem.hxx> #include "drawdoc.hxx" #include <svx/svdotext.hxx> #include <svtools/svtreebx.hxx> diff --git a/sd/source/ui/dlg/dlgchar.cxx b/sd/source/ui/dlg/dlgchar.cxx index 6cee99175fcc..254e3f6dcfa2 100644 --- a/sd/source/ui/dlg/dlgchar.cxx +++ b/sd/source/ui/dlg/dlgchar.cxx @@ -44,7 +44,7 @@ #include "sdresid.hxx" #include "dlg_char.hxx" #include <svx/svxids.hrc> -#include <svtools/intitem.hxx> +#include <svl/intitem.hxx> /************************************************************************* |* diff --git a/sd/source/ui/dlg/dlgfield.cxx b/sd/source/ui/dlg/dlgfield.cxx index 99fcace44186..19fb96a6e4d9 100644 --- a/sd/source/ui/dlg/dlgfield.cxx +++ b/sd/source/ui/dlg/dlgfield.cxx @@ -40,12 +40,12 @@ #include <svx/editeng.hxx> #include <svx/eeitem.hxx> #include <svx/flditem.hxx> -#include <svtools/zforlist.hxx> +#include <svl/zforlist.hxx> #include <sfx2/objsh.hxx> #include <sfx2/docfile.hxx> -#include <svtools/itemset.hxx> +#include <svl/itemset.hxx> #include <svx/langitem.hxx> -#include <svtools/useroptions.hxx> +#include <unotools/useroptions.hxx> #include "strings.hrc" #include "dlgfield.hrc" diff --git a/sd/source/ui/dlg/dlgolbul.cxx b/sd/source/ui/dlg/dlgolbul.cxx index a7988b850214..dbe0e252f7eb 100644 --- a/sd/source/ui/dlg/dlgolbul.cxx +++ b/sd/source/ui/dlg/dlgolbul.cxx @@ -48,11 +48,11 @@ #include <svx/numitem.hxx> #include <svx/dialogs.hrc> -#include <svtools/intitem.hxx> +#include <svl/intitem.hxx> #include <svx/svdmark.hxx> #include "View.hxx" #include <svx/svdobj.hxx> -#include <svtools/style.hxx> +#include <svl/style.hxx> #include <drawdoc.hxx> #ifndef _SD_SDRESID_HXX @@ -64,7 +64,7 @@ #include "bulmaper.hxx" #include "DrawDocShell.hxx" #include <svx/svxids.hrc> -#include <svtools/aeitem.hxx> +#include <svl/aeitem.hxx> namespace sd { diff --git a/sd/source/ui/dlg/dlgpage.cxx b/sd/source/ui/dlg/dlgpage.cxx index bf5eb5da7c39..2145e477e476 100644 --- a/sd/source/ui/dlg/dlgpage.cxx +++ b/sd/source/ui/dlg/dlgpage.cxx @@ -35,7 +35,7 @@ #undef SD_DLLIMPLEMENTATION #endif -#include <svtools/intitem.hxx> +#include <svl/intitem.hxx> #ifndef _SVX_DIALOGS_HRC #include <svx/dialogs.hrc> #endif @@ -48,7 +48,7 @@ #include "dlgpage.hxx" #include "DrawDocShell.hxx" -#include <svtools/aeitem.hxx> +#include <svl/aeitem.hxx> #include <svx/flagsdef.hxx> #include <svx/svxenum.hxx> diff --git a/sd/source/ui/dlg/dlgsnap.cxx b/sd/source/ui/dlg/dlgsnap.cxx index 5a232649251e..fc541e7925e8 100644 --- a/sd/source/ui/dlg/dlgsnap.cxx +++ b/sd/source/ui/dlg/dlgsnap.cxx @@ -38,8 +38,8 @@ #include <svx/svxids.hrc> #include <svx/dlgutil.hxx> -#include <svtools/itempool.hxx> -#include <svtools/aeitem.hxx> +#include <svl/itempool.hxx> +#include <svl/aeitem.hxx> #include "dlgsnap.hrc" #include "sdattr.hxx" diff --git a/sd/source/ui/dlg/docprev.cxx b/sd/source/ui/dlg/docprev.cxx index b53b570f813e..b8c2f0b0867d 100644 --- a/sd/source/ui/dlg/docprev.cxx +++ b/sd/source/ui/dlg/docprev.cxx @@ -67,7 +67,11 @@ void SdDocPreviewWin::SetObjectShell( SfxObjectShell* pObj, sal_uInt16 nShowPage { mpObj = pObj; mnShowPage = nShowPage; - mxSlideShow.clear(); + if (mxSlideShow.is()) + { + mxSlideShow->end(); + mxSlideShow.clear(); + } updateViewSettings(); } diff --git a/sd/source/ui/dlg/gluectrl.cxx b/sd/source/ui/dlg/gluectrl.cxx index 1fea04cf31ab..a4f4e99d2463 100644 --- a/sd/source/ui/dlg/gluectrl.cxx +++ b/sd/source/ui/dlg/gluectrl.cxx @@ -36,7 +36,7 @@ #include <svx/dialogs.hrc> #include <svx/svdglue.hxx> -#include <svtools/intitem.hxx> +#include <svl/intitem.hxx> #include <sfx2/app.hxx> #include <sfx2/dispatch.hxx> #include <vcl/toolbox.hxx> diff --git a/sd/source/ui/dlg/ins_paste.cxx b/sd/source/ui/dlg/ins_paste.cxx index 9f2c3bf0b6b6..422acbec4a73 100644 --- a/sd/source/ui/dlg/ins_paste.cxx +++ b/sd/source/ui/dlg/ins_paste.cxx @@ -31,6 +31,10 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sd.hxx" +#ifdef SD_DLLIMPLEMENTATION +#undef SD_DLLIMPLEMENTATION +#endif + #include "ins_paste.hrc" #include "ins_paste.hxx" diff --git a/sd/source/ui/dlg/layeroptionsdlg.cxx b/sd/source/ui/dlg/layeroptionsdlg.cxx index cb9ade5336f8..3414f779cad8 100644 --- a/sd/source/ui/dlg/layeroptionsdlg.cxx +++ b/sd/source/ui/dlg/layeroptionsdlg.cxx @@ -34,7 +34,7 @@ #ifdef SD_DLLIMPLEMENTATION #undef SD_DLLIMPLEMENTATION #endif -#include <svtools/itemset.hxx> +#include <svl/itemset.hxx> #include "strings.hrc" #include "sdattr.hxx" diff --git a/sd/source/ui/dlg/morphdlg.cxx b/sd/source/ui/dlg/morphdlg.cxx index 6d34834ccab9..f43472d58ace 100644 --- a/sd/source/ui/dlg/morphdlg.cxx +++ b/sd/source/ui/dlg/morphdlg.cxx @@ -47,8 +47,8 @@ #include <svx/xlineit0.hxx> #include <svx/xenum.hxx> #include <svx/svdobj.hxx> -#include <svtools/itemset.hxx> -#include <svtools/itempool.hxx> +#include <svl/itemset.hxx> +#include <svl/itempool.hxx> namespace sd { diff --git a/sd/source/ui/dlg/navigatr.cxx b/sd/source/ui/dlg/navigatr.cxx index fa31c7fbb209..db2e69e6038c 100644 --- a/sd/source/ui/dlg/navigatr.cxx +++ b/sd/source/ui/dlg/navigatr.cxx @@ -36,11 +36,11 @@ #include <unotools/localfilehelper.hxx> #include <sfx2/imgmgr.hxx> #include <sfx2/fcontnr.hxx> -#include <svtools/eitem.hxx> -#include <svtools/stritem.hxx> +#include <svl/eitem.hxx> +#include <svl/stritem.hxx> #include <sfx2/docfilt.hxx> #include <sfx2/docfile.hxx> -#include <svtools/intitem.hxx> +#include <svl/intitem.hxx> #include <sfx2/dispatch.hxx> #include <svx/svxids.hrc> #include <vcl/menu.hxx> @@ -863,7 +863,7 @@ void SdNavigatorWin::SetDragImage() void SdNavigatorWin::ApplyImageList() { - const bool bHighContrast = GetDisplayBackground().GetColor().IsDark() != 0; + const bool bHighContrast = GetSettings().GetStyleSettings().GetHighContrastMode(); maToolbox.SetImageList( bHighContrast ? maImageListH : maImageList ); diff --git a/sd/source/ui/dlg/paragr.cxx b/sd/source/ui/dlg/paragr.cxx index 2ebdf316af34..eeefcda29f3d 100644 --- a/sd/source/ui/dlg/paragr.cxx +++ b/sd/source/ui/dlg/paragr.cxx @@ -37,9 +37,9 @@ #include <vcl/field.hxx> -#include <svtools/cjkoptions.hxx> -#include <svtools/eitem.hxx> -#include <svtools/intitem.hxx> +#include <svl/cjkoptions.hxx> +#include <svl/eitem.hxx> +#include <svl/intitem.hxx> #include <svx/editdata.hxx> #include <svx/dialogs.hrc> diff --git a/sd/source/ui/dlg/present.cxx b/sd/source/ui/dlg/present.cxx index d881c45070d3..e624e3b23320 100644 --- a/sd/source/ui/dlg/present.cxx +++ b/sd/source/ui/dlg/present.cxx @@ -38,7 +38,7 @@ #include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/container/XIndexAccess.hpp> #include <comphelper/processfactory.hxx> -#include <svtools/itemset.hxx> +#include <svl/itemset.hxx> #include "sdattr.hxx" #include "present.hxx" diff --git a/sd/source/ui/dlg/prltempl.cxx b/sd/source/ui/dlg/prltempl.cxx index 748d34a94c6c..b7a65b0d5b6e 100644 --- a/sd/source/ui/dlg/prltempl.cxx +++ b/sd/source/ui/dlg/prltempl.cxx @@ -41,7 +41,7 @@ #include <svx/dialogs.hrc> #include <svx/flstitem.hxx> #include <svx/drawitem.hxx> -#include <svtools/style.hxx> +#include <svl/style.hxx> #include <svx/tabline.hxx> #include <svx/bulitem.hxx> #include <svx/eeitem.hxx> @@ -49,7 +49,7 @@ #include <vcl/graph.hxx> #include <svx/lrspitem.hxx> #include <svx/numitem.hxx> -#include <svtools/cjkoptions.hxx> +#include <svl/cjkoptions.hxx> #include "DrawDocShell.hxx" #include "glob.hrc" @@ -59,7 +59,7 @@ #include "enumdlg.hrc" //#include "enumdlg.hxx" #include "bulmaper.hxx" -#include <svtools/intitem.hxx> +#include <svl/intitem.hxx> #include <svx/svxgrahicitem.hxx> #include <svx/flagsdef.hxx> #include "drawdoc.hxx" diff --git a/sd/source/ui/dlg/prntopts.cxx b/sd/source/ui/dlg/prntopts.cxx index 225919f32280..6a74ffaf206f 100644 --- a/sd/source/ui/dlg/prntopts.cxx +++ b/sd/source/ui/dlg/prntopts.cxx @@ -42,7 +42,7 @@ #include "sdresid.hxx" #include "prntopts.hxx" #include "app.hrc" -#include <svtools/intitem.hxx> +#include <svl/intitem.hxx> #include <sfx2/request.hxx> // STATIC DATA ----------------------------------------------------------- diff --git a/sd/source/ui/dlg/sdpreslt.cxx b/sd/source/ui/dlg/sdpreslt.cxx index b57474906567..1f97ce8d4cf2 100644 --- a/sd/source/ui/dlg/sdpreslt.cxx +++ b/sd/source/ui/dlg/sdpreslt.cxx @@ -36,7 +36,7 @@ #endif -#include <svtools/itemset.hxx> +#include <svl/itemset.hxx> #include <sfx2/new.hxx> #include <vcl/msgbox.hxx> diff --git a/sd/source/ui/dlg/sdtreelb.cxx b/sd/source/ui/dlg/sdtreelb.cxx index 9d335b859e31..bd93b07beb9a 100644 --- a/sd/source/ui/dlg/sdtreelb.cxx +++ b/sd/source/ui/dlg/sdtreelb.cxx @@ -35,7 +35,7 @@ #include <sot/formats.hxx> #include <sot/storage.hxx> #include <vcl/msgbox.hxx> -#include <svtools/urihelper.hxx> +#include <svl/urihelper.hxx> #include <svx/svditer.hxx> #include <sfx2/docfile.hxx> #include <svx/svdoole2.hxx> diff --git a/sd/source/ui/dlg/tabtempl.cxx b/sd/source/ui/dlg/tabtempl.cxx index 98a4959abdb8..5ce27def13a6 100644 --- a/sd/source/ui/dlg/tabtempl.cxx +++ b/sd/source/ui/dlg/tabtempl.cxx @@ -40,18 +40,18 @@ #include <svx/svxids.hrc> #include <svx/drawitem.hxx> -#include <svtools/intitem.hxx> +#include <svl/intitem.hxx> #include <svx/ofaitem.hxx> #include <svx/svxgrahicitem.hxx> #include <svx/svdmodel.hxx> -#include <svtools/cjkoptions.hxx> +#include <svl/cjkoptions.hxx> #include <svx/dialogs.hrc> #include <svx/svxdlg.hxx> #include <svx/tabline.hxx> -#include <svtools/style.hxx> +#include <svl/style.hxx> #include <svx/xtable.hxx> #include "DrawDocShell.hxx" diff --git a/sd/source/ui/dlg/tpaction.cxx b/sd/source/ui/dlg/tpaction.cxx index 2148b33d95d3..80ba0b78c9f9 100644 --- a/sd/source/ui/dlg/tpaction.cxx +++ b/sd/source/ui/dlg/tpaction.cxx @@ -54,10 +54,10 @@ #include <vcl/waitobj.hxx> #include <osl/file.hxx> #include <sfx2/app.hxx> -#include <svtools/pathoptions.hxx> +#include <unotools/pathoptions.hxx> #include <svx/svdpagv.hxx> #include <unotools/localfilehelper.hxx> -#include <svtools/aeitem.hxx> +#include <svl/aeitem.hxx> #include <svx/colritem.hxx> #include <svx/svdoole2.hxx> #include <sfx2/docfile.hxx> @@ -68,7 +68,7 @@ #include <svx/xtable.hxx> #include <vcl/svapp.hxx> #include <vcl/mnemonic.hxx> -#include <svtools/urihelper.hxx> +#include <svl/urihelper.hxx> #include <sfx2/filedlghelper.hxx> #include <svx/drawitem.hxx> #include "View.hxx" diff --git a/sd/source/ui/dlg/tpoption.cxx b/sd/source/ui/dlg/tpoption.cxx index b22ad4e32dbd..102c95a9b3e5 100644 --- a/sd/source/ui/dlg/tpoption.cxx +++ b/sd/source/ui/dlg/tpoption.cxx @@ -58,7 +58,7 @@ #include "tpoption.hxx" #include "strings.hrc" #include "app.hrc" -#include <svtools/intitem.hxx> +#include <svl/intitem.hxx> #include <sfx2/request.hxx> #define DLGWIN this->GetParent()->GetParent() diff --git a/sd/source/ui/dlg/unchss.cxx b/sd/source/ui/dlg/unchss.cxx index dc0ea3d63827..e42012d4b75d 100644 --- a/sd/source/ui/dlg/unchss.cxx +++ b/sd/source/ui/dlg/unchss.cxx @@ -32,9 +32,9 @@ #include "precompiled_sd.hxx" -#include <svtools/itemset.hxx> -#include <svtools/style.hxx> -#include <svtools/smplhint.hxx> +#include <svl/itemset.hxx> +#include <svl/style.hxx> +#include <svl/smplhint.hxx> #include <svx/svdobj.hxx> #include "unchss.hxx" diff --git a/sd/source/ui/docshell/docshel2.cxx b/sd/source/ui/docshell/docshel2.cxx index a62922381155..3917cc02880c 100644 --- a/sd/source/ui/docshell/docshel2.cxx +++ b/sd/source/ui/docshell/docshel2.cxx @@ -374,7 +374,7 @@ BOOL DrawDocShell::CheckPageName (::Window* pWin, String& rName ) { String aDesc( SdResId( STR_WARN_PAGE_EXISTS ) ); SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); - AbstractSvxNameDialog* aNameDlg = pFact ? pFact->CreateSvxNameDialog( pWin, aStrForDlg, aDesc, RID_SVXDLG_NAME ) : 0; + AbstractSvxNameDialog* aNameDlg = pFact ? pFact->CreateSvxNameDialog( pWin, aStrForDlg, aDesc ) : 0; if( aNameDlg ) { aNameDlg->SetEditHelpId( HID_SD_NAMEDIALOG_PAGE ); diff --git a/sd/source/ui/docshell/docshel3.cxx b/sd/source/ui/docshell/docshel3.cxx index c62bc9fcc620..96461168e299 100644 --- a/sd/source/ui/docshell/docshel3.cxx +++ b/sd/source/ui/docshell/docshel3.cxx @@ -51,7 +51,7 @@ #include <svx/outliner.hxx> #endif #include <sfx2/request.hxx> -#include <svtools/style.hxx> +#include <svl/style.hxx> #include <svx/drawitem.hxx> #include <svx/unolingu.hxx> #include <com/sun/star/i18n/TextConversionOption.hpp> diff --git a/sd/source/ui/docshell/docshel4.cxx b/sd/source/ui/docshell/docshel4.cxx index 4a4e62f2a106..ce2c38f20afd 100644 --- a/sd/source/ui/docshell/docshel4.cxx +++ b/sd/source/ui/docshell/docshel4.cxx @@ -41,8 +41,8 @@ #endif #include <svx/flstitem.hxx> #include <svx/eeitem.hxx> -#include <svtools/aeitem.hxx> -#include <svtools/flagitem.hxx> +#include <svl/aeitem.hxx> +#include <svl/flagitem.hxx> #include <sot/storage.hxx> #include <sfx2/docfile.hxx> #include <sfx2/docfilt.hxx> @@ -50,7 +50,7 @@ #include <sfx2/dispatch.hxx> #endif #include <svx/svdotext.hxx> -#include <svtools/style.hxx> +#include <svl/style.hxx> #include <sfx2/printer.hxx> #include <svtools/ctrltool.hxx> #ifndef _SFX_ECODE_HXX //autogen @@ -63,11 +63,11 @@ #include "unomodel.hxx" #endif -#include <svtools/fltrcfg.hxx> +#include <unotools/fltrcfg.hxx> #include <sfx2/frame.hxx> #include <sfx2/viewfrm.hxx> -#include <svx/svxmsbas.hxx> -#include <svtools/saveopt.hxx> +//#include <svx/svxmsbas.hxx> +#include <unotools/saveopt.hxx> #include <com/sun/star/drawing/XDrawPage.hpp> #include <com/sun/star/drawing/XDrawView.hpp> #include <comphelper/processfactory.hxx> diff --git a/sd/source/ui/docshell/docshell.cxx b/sd/source/ui/docshell/docshell.cxx index f9381d08a219..7d18f19f1993 100644 --- a/sd/source/ui/docshell/docshell.cxx +++ b/sd/source/ui/docshell/docshell.cxx @@ -44,8 +44,8 @@ #include <sfx2/srchitem.hxx> #include <svx/srchdlg.hxx> #include <svx/flstitem.hxx> -#include <svtools/eitem.hxx> -#include <svtools/intitem.hxx> +#include <svl/eitem.hxx> +#include <svl/intitem.hxx> #include <sfx2/printer.hxx> #ifndef _SFX_DOCFILE_HXX //autogen #include <sfx2/docfile.hxx> @@ -55,16 +55,16 @@ #include <svx/drawitem.hxx> #include <svx/srchdlg.hxx> #include <sfx2/dispatch.hxx> -#include <svtools/whiter.hxx> -#include <svtools/itempool.hxx> +#include <svl/whiter.hxx> +#include <svl/itempool.hxx> #include <svtools/ctrltool.hxx> #include <svtools/filter.hxx> #ifndef _SO_CLSIDS_HXX #include <sot/clsids.hxx> #endif #include <sfx2/topfrm.hxx> -#include <svtools/cjkoptions.hxx> -#include <svtools/visitem.hxx> +#include <svl/cjkoptions.hxx> +#include <svl/visitem.hxx> #include <svx/svdoutl.hxx> @@ -92,7 +92,6 @@ #include "FrameView.hxx" #endif #include "unomodel.hxx" -#include "formatclipboard.hxx" #include "undo/undomanager.hxx" #include "undo/undofactory.hxx" #include "OutlineView.hxx" @@ -169,7 +168,6 @@ DrawDocShell::DrawDocShell(SfxObjectCreateMode eMode, BOOL bDataObject, DocumentType eDocumentType,BOOL bScriptSupport) : SfxObjectShell( eMode == SFX_CREATE_MODE_INTERNAL ? SFX_CREATE_MODE_EMBEDDED : eMode), - mpFormatClipboard(new SdFormatClipboard()), mpDoc(NULL), mpUndoManager(NULL), mpPrinter(NULL), @@ -196,7 +194,6 @@ DrawDocShell::DrawDocShell(SdDrawDocument* pDoc, SfxObjectCreateMode eMode, BOOL bDataObject, DocumentType eDocumentType) : SfxObjectShell(eMode == SFX_CREATE_MODE_INTERNAL ? SFX_CREATE_MODE_EMBEDDED : eMode), - mpFormatClipboard(new SdFormatClipboard()), mpDoc(pDoc), mpUndoManager(NULL), mpPrinter(NULL), @@ -235,9 +232,6 @@ DrawDocShell::~DrawDocShell() mpDoc->SetSdrUndoManager( 0 ); delete mpUndoManager; - if(mpFormatClipboard) - delete mpFormatClipboard; - if (mbOwnPrinter) delete mpPrinter; diff --git a/sd/source/ui/docshell/formatclipboard.cxx b/sd/source/ui/docshell/formatclipboard.cxx deleted file mode 100644 index 8035e78150c7..000000000000 --- a/sd/source/ui/docshell/formatclipboard.cxx +++ /dev/null @@ -1,237 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile: formatclipboard.cxx,v $ - * $Revision: 1.10 $ - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sd.hxx" - -#include "formatclipboard.hxx" -#include <svx/globl3d.hxx> - -// header for class SfxItemIter -#include <svtools/itemiter.hxx> - -// header for class SfxStyleSheet -#include <svtools/style.hxx> - -/*-------------------------------------------------------------------- - --------------------------------------------------------------------*/ - -SdFormatClipboard::SdFormatClipboard() - : m_pItemSet(0) - , m_bPersistentCopy(false) - , m_nType_Inventor(0) - , m_nType_Identifier(0) -{ -} -SdFormatClipboard::~SdFormatClipboard() -{ - if(m_pItemSet) - delete m_pItemSet; -} - -bool SdFormatClipboard::HasContent() const -{ - return m_pItemSet!=0; -} - -bool SdFormatClipboard::CanCopyThisType( UINT32 nObjectInventor, UINT16 nObjectIdentifier ) const -{ - if( nObjectInventor != SdrInventor && nObjectInventor != E3dInventor ) - return false; - switch(nObjectIdentifier) - { - case OBJ_NONE: - case OBJ_GRUP: - return false; - case OBJ_LINE: - case OBJ_RECT: - case OBJ_CIRC: - case OBJ_SECT: - case OBJ_CARC: - case OBJ_CCUT: - case OBJ_POLY: - case OBJ_PLIN: - case OBJ_PATHLINE: - case OBJ_PATHFILL: - case OBJ_FREELINE: - case OBJ_FREEFILL: - case OBJ_SPLNLINE: - case OBJ_SPLNFILL: - case OBJ_TEXT: - case OBJ_TEXTEXT: - case OBJ_TITLETEXT: - return true; - case OBJ_OUTLINETEXT: - case OBJ_GRAF: - case OBJ_OLE2: - case OBJ_EDGE: - case OBJ_CAPTION: - return false; - case OBJ_PATHPOLY: - case OBJ_PATHPLIN: - return true; - case OBJ_PAGE: - case OBJ_MEASURE: - case OBJ_DUMMY: - case OBJ_FRAME: - case OBJ_UNO: - return false; - case OBJ_CUSTOMSHAPE: - return true; - default: - return false; - } -} - -bool SdFormatClipboard::HasContentForThisType( UINT32 nObjectInventor, UINT16 nObjectIdentifier ) const -{ - if( !HasContent() ) - return false; - if( !CanCopyThisType( nObjectInventor, nObjectIdentifier ) ) - return false; - return true; -} - -void SdFormatClipboard::Copy( ::sd::View& rDrawView, bool bPersistentCopy ) -{ - this->Erase(); - m_bPersistentCopy = bPersistentCopy; - - const SdrMarkList& rMarkList = rDrawView.GetMarkedObjectList(); - if( rMarkList.GetMarkCount() >= 1 ) - { - BOOL bOnlyHardAttr = FALSE; - m_pItemSet = new SfxItemSet( rDrawView.GetAttrFromMarked(bOnlyHardAttr) ); - - SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj(); - m_nType_Inventor = pObj->GetObjInventor(); - m_nType_Identifier = pObj->GetObjIdentifier(); - } -} - -void SdFormatClipboard::Paste( ::sd::View& rDrawView, bool, bool ) -{ - if( !rDrawView.AreObjectsMarked() ) - { - if(!m_bPersistentCopy) - this->Erase(); - return; - } - - SdrObject* pObj = 0; - - bool bWrongTargetType = false; - { - const SdrMarkList& rMarkList = rDrawView.GetMarkedObjectList(); - if( rMarkList.GetMarkCount() != 1 ) - bWrongTargetType = true; - else - { - pObj = rMarkList.GetMark(0)->GetMarkedSdrObj(); - if( pObj && pObj->GetStyleSheet() ) - bWrongTargetType = !this->HasContentForThisType( pObj->GetObjInventor(), pObj->GetObjIdentifier() ); - } - } - if( bWrongTargetType ) - { - if(!m_bPersistentCopy) - this->Erase(); - return; - } - if(m_pItemSet) - { - //modify source itemset - { - boost::shared_ptr< SfxItemSet > pTargetSet; - - if( pObj->GetStyleSheet() ) - { - pTargetSet.reset( new SfxItemSet( pObj->GetStyleSheet()->GetItemSet() ) ); - } - else - { - SdrModel* pModel = pObj->GetModel(); - if( pModel ) - { - pTargetSet.reset( new SfxItemSet( pModel->GetItemPool() ) ); - } - } - - if( pTargetSet.get() ) - { - USHORT nWhich=0; - SfxItemState nSourceState; - SfxItemState nTargetState; - const SfxPoolItem* pSourceItem=0; - const SfxPoolItem* pTargetItem=0; - SfxItemIter aSourceIter(*m_pItemSet); - pSourceItem = aSourceIter.FirstItem(); - while( pSourceItem!=NULL ) - { - if (!IsInvalidItem(pSourceItem)) - { - nWhich = pSourceItem->Which(); - if(nWhich) - { - nSourceState = m_pItemSet->GetItemState( nWhich ); - nTargetState = pTargetSet->GetItemState( nWhich ); - pTargetItem = pTargetSet->GetItem( nWhich ); - - if(!pTargetItem) - m_pItemSet->ClearItem(nWhich); - else if( (*pSourceItem) == (*pTargetItem) ) - { - //do not set items which have the same content in source and target - m_pItemSet->ClearItem(nWhich); - } - } - } - pSourceItem = aSourceIter.NextItem(); - }//end while - } - } - BOOL bReplaceAll = TRUE; - rDrawView.SetAttrToMarked(*m_pItemSet, bReplaceAll); - } - if(!m_bPersistentCopy) - this->Erase(); -} - -void SdFormatClipboard::Erase() -{ - if(m_pItemSet) - { - delete m_pItemSet; - m_pItemSet = 0; - } - m_nType_Inventor=0; - m_nType_Identifier=0; - m_bPersistentCopy = false; -} diff --git a/sd/source/ui/docshell/makefile.mk b/sd/source/ui/docshell/makefile.mk index f9e34eb03097..d33faaf69bbe 100644 --- a/sd/source/ui/docshell/makefile.mk +++ b/sd/source/ui/docshell/makefile.mk @@ -47,7 +47,6 @@ AUTOSEG=true # --- Files -------------------------------------------------------- SLOFILES = \ - $(SLO)$/formatclipboard.obj \ $(SLO)$/docshell.obj \ $(SLO)$/docshel2.obj \ $(SLO)$/docshel3.obj \ diff --git a/sd/source/ui/framework/tools/FrameworkHelper.cxx b/sd/source/ui/framework/tools/FrameworkHelper.cxx index d0d6938a2b21..4ce1bfebf6ee 100644 --- a/sd/source/ui/framework/tools/FrameworkHelper.cxx +++ b/sd/source/ui/framework/tools/FrameworkHelper.cxx @@ -45,7 +45,7 @@ #include "app.hrc" #include <com/sun/star/drawing/framework/XControllerManager.hpp> #include <cppuhelper/compbase1.hxx> -#include <svtools/lstner.hxx> +#include <svl/lstner.hxx> #include <comphelper/stl_types.hxx> #include <sfx2/request.hxx> diff --git a/sd/source/ui/func/bulmaper.cxx b/sd/source/ui/func/bulmaper.cxx index 3abd76237680..95687ab8a833 100644 --- a/sd/source/ui/func/bulmaper.cxx +++ b/sd/source/ui/func/bulmaper.cxx @@ -54,8 +54,8 @@ #include <svx/bulitem.hxx> #include <svx/brshitem.hxx> #include <vcl/graph.hxx> -#include <svtools/itemset.hxx> -#include <svtools/itempool.hxx> +#include <svl/itemset.hxx> +#include <svl/itempool.hxx> #include <svx/numitem.hxx> #include <svx/eeitem.hxx> diff --git a/sd/source/ui/func/fuarea.cxx b/sd/source/ui/func/fuarea.cxx index 5bb4942b8ea5..e070365eddda 100644 --- a/sd/source/ui/func/fuarea.cxx +++ b/sd/source/ui/func/fuarea.cxx @@ -37,8 +37,8 @@ #include <svx/svxids.hrc> #include <svx/tabarea.hxx> #include <vcl/msgbox.hxx> -#include <svtools/intitem.hxx> -#include <svtools/stritem.hxx> +#include <svl/intitem.hxx> +#include <svl/stritem.hxx> #include <sfx2/request.hxx> #include <sfx2/viewfrm.hxx> #include <sfx2/bindings.hxx> @@ -85,7 +85,6 @@ void FuArea::DoExecute( SfxRequest& rReq ) AbstractSvxAreaTabDialog * pDlg = pFact ? pFact->CreateSvxAreaTabDialog( NULL, &aNewAttr, mpDoc, - RID_SVXDLG_AREA, mpView) : 0; if( pDlg && (pDlg->Execute() == RET_OK) ) { diff --git a/sd/source/ui/func/fubullet.cxx b/sd/source/ui/func/fubullet.cxx index 64fb3783d78d..fac03893a880 100644 --- a/sd/source/ui/func/fubullet.cxx +++ b/sd/source/ui/func/fubullet.cxx @@ -38,7 +38,7 @@ #include <sfx2/bindings.hxx> #endif #include <svx/eeitem.hxx> -#include <svtools/poolitem.hxx> +#include <svl/poolitem.hxx> #include <svx/fontitem.hxx> #include "OutlineViewShell.hxx" #include "DrawViewShell.hxx" @@ -49,8 +49,8 @@ #include <svx/svdoutl.hxx> #include <vcl/msgbox.hxx> #include <sfx2/request.hxx> -#include <svtools/ctloptions.hxx> -#include <svtools/itempool.hxx> +#include <svl/ctloptions.hxx> +#include <svl/itempool.hxx> #ifdef IRIX #include <basic/sbx.hxx> diff --git a/sd/source/ui/func/fucon3d.cxx b/sd/source/ui/func/fucon3d.cxx index e9654a21bcee..eb738ef0d2fa 100644 --- a/sd/source/ui/func/fucon3d.cxx +++ b/sd/source/ui/func/fucon3d.cxx @@ -35,7 +35,7 @@ #include <vcl/waitobj.hxx> #include <svx/svxids.hrc> -#include <svtools/aeitem.hxx> +#include <svl/aeitem.hxx> #include <sfx2/app.hxx> #include <sfx2/dispatch.hxx> #include <sfx2/viewfrm.hxx> diff --git a/sd/source/ui/func/fuconarc.cxx b/sd/source/ui/func/fuconarc.cxx index 238c047ef70c..de658c401428 100644 --- a/sd/source/ui/func/fuconarc.cxx +++ b/sd/source/ui/func/fuconarc.cxx @@ -35,8 +35,8 @@ #include <svx/svdpagv.hxx> #include <svx/svdocirc.hxx> #include <sfx2/request.hxx> -#include <svtools/intitem.hxx> -#include <svtools/aeitem.hxx> +#include <svl/intitem.hxx> +#include <svl/aeitem.hxx> #include <sfx2/dispatch.hxx> #include <svx/svdobj.hxx> #include <sfx2/viewfrm.hxx> diff --git a/sd/source/ui/func/fuconbez.cxx b/sd/source/ui/func/fuconbez.cxx index ff95b7b3115b..1e16ac4c332c 100644 --- a/sd/source/ui/func/fuconbez.cxx +++ b/sd/source/ui/func/fuconbez.cxx @@ -34,9 +34,9 @@ #include <com/sun/star/presentation/EffectNodeType.hpp> #include "fuconbez.hxx" -#include <svtools/aeitem.hxx> +#include <svl/aeitem.hxx> #include <svx/svdopath.hxx> -#include <svtools/intitem.hxx> +#include <svl/intitem.hxx> #include <sfx2/dispatch.hxx> #include <svx/svdobj.hxx> #include <sfx2/bindings.hxx> diff --git a/sd/source/ui/func/fuconcs.cxx b/sd/source/ui/func/fuconcs.cxx index a360effd5469..a9f1445097e4 100644 --- a/sd/source/ui/func/fuconcs.cxx +++ b/sd/source/ui/func/fuconcs.cxx @@ -40,7 +40,7 @@ #include <svx/dialmgr.hxx> #include "app.hrc" -#include <svtools/aeitem.hxx> +#include <svl/aeitem.hxx> #include <svx/xlnstwit.hxx> #include <svx/xlnedwit.hxx> #include <svx/xlnedit.hxx> @@ -53,7 +53,7 @@ #include <sfx2/dispatch.hxx> #include <svx/svdopath.hxx> #include <svx/svdocirc.hxx> -#include <svtools/intitem.hxx> +#include <svl/intitem.hxx> #include <sfx2/request.hxx> #include <svx/adjitem.hxx> #include <svx/xtable.hxx> @@ -73,7 +73,7 @@ // #109583# #include <svx/writingmodeitem.hxx> #include <svx/gallery.hxx> -#include <svtools/itempool.hxx> +#include <svl/itempool.hxx> #include <com/sun/star/uno/Any.hxx> #include "sdresid.hxx" diff --git a/sd/source/ui/func/fuconrec.cxx b/sd/source/ui/func/fuconrec.cxx index a36b6f508534..d9513f4b5c22 100644 --- a/sd/source/ui/func/fuconrec.cxx +++ b/sd/source/ui/func/fuconrec.cxx @@ -40,7 +40,7 @@ #include <svx/dialmgr.hxx> #include "app.hrc" -#include <svtools/aeitem.hxx> +#include <svl/aeitem.hxx> #include <svx/xlnstwit.hxx> #include <svx/xlnedwit.hxx> #include <svx/xlnedit.hxx> @@ -53,7 +53,7 @@ #include <sfx2/dispatch.hxx> #include <svx/svdopath.hxx> #include <svx/svdocirc.hxx> -#include <svtools/intitem.hxx> +#include <svl/intitem.hxx> #include <sfx2/request.hxx> #include <svx/adjitem.hxx> #include <svx/xtable.hxx> diff --git a/sd/source/ui/func/fuconstr.cxx b/sd/source/ui/func/fuconstr.cxx index 3f9d8151ef4e..28531c7bef47 100644 --- a/sd/source/ui/func/fuconstr.cxx +++ b/sd/source/ui/func/fuconstr.cxx @@ -34,7 +34,7 @@ #include "fuconstr.hxx" #include <svx/svxids.hrc> -#include <svtools/aeitem.hxx> +#include <svl/aeitem.hxx> #include <svx/svdpagv.hxx> #include <svx/xdef.hxx> #include <svx/xfillit0.hxx> diff --git a/sd/source/ui/func/fuconuno.cxx b/sd/source/ui/func/fuconuno.cxx index ef98942a581f..512ccdb53623 100644 --- a/sd/source/ui/func/fuconuno.cxx +++ b/sd/source/ui/func/fuconuno.cxx @@ -32,11 +32,11 @@ #include "precompiled_sd.hxx" #include "fuconuno.hxx" -#include <svtools/aeitem.hxx> +#include <svl/aeitem.hxx> #include <sfx2/dispatch.hxx> #include <sfx2/viewfrm.hxx> #include <sfx2/request.hxx> -#include <svtools/intitem.hxx> +#include <svl/intitem.hxx> #include <svx/fmglob.hxx> diff --git a/sd/source/ui/func/fudraw.cxx b/sd/source/ui/func/fudraw.cxx index 6c6c0c3aaa81..7da8b98ea568 100644 --- a/sd/source/ui/func/fudraw.cxx +++ b/sd/source/ui/func/fudraw.cxx @@ -76,7 +76,7 @@ #include "sdresid.hxx" #include "drawview.hxx" #include "fusel.hxx" -#include <svtools/aeitem.hxx> +#include <svl/aeitem.hxx> #include <vcl/msgbox.hxx> #include "slideshow.hxx" #include <svx/sdrhittesthelper.hxx> diff --git a/sd/source/ui/func/fuediglu.cxx b/sd/source/ui/func/fuediglu.cxx index d23493de4249..24ed231ea25b 100644 --- a/sd/source/ui/func/fuediglu.cxx +++ b/sd/source/ui/func/fuediglu.cxx @@ -32,7 +32,7 @@ #include "precompiled_sd.hxx" #include "fuediglu.hxx" -#include <svtools/eitem.hxx> +#include <svl/eitem.hxx> #include <svx/dialogs.hrc> #include <svx/svdglue.hxx> #include <sfx2/request.hxx> diff --git a/sd/source/ui/func/fuformatpaintbrush.cxx b/sd/source/ui/func/fuformatpaintbrush.cxx index 1eaee6385175..98dbcba52ab2 100644 --- a/sd/source/ui/func/fuformatpaintbrush.cxx +++ b/sd/source/ui/func/fuformatpaintbrush.cxx @@ -31,19 +31,30 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sd.hxx" +#include <sfx2/request.hxx> +#include <sfx2/bindings.hxx> +#include <sfx2/dispatch.hxx> + +#include <svl/itemiter.hxx> + +#include <svx/globl3d.hxx> +#include <svx/svxids.hrc> +#include <svx/svdotable.hxx> +#include <svx/outliner.hxx> +#include <svx/eeitem.hxx> +#include <svx/editeng.hxx> + #define _SD_DLL // fuer SD_MOD() #include "sdmod.hxx" #include "fuformatpaintbrush.hxx" -#include "formatclipboard.hxx" -#include "View.hxx" -#include "ViewShell.hxx" +#include "drawview.hxx" #include "DrawDocShell.hxx" -// header for class SfxBindings -#include <sfx2/bindings.hxx> -/* -#include <svx/svxids.hrc> -*/ +#include "DrawViewShell.hxx" +#include "FrameView.hxx" +#include "drawdoc.hxx" +#include "Outliner.hxx" +#include "ViewShellBase.hxx" #ifndef SD_WINDOW_SHELL_HXX #include "Window.hxx" @@ -51,66 +62,137 @@ namespace sd { -TYPEINIT1( FuFormatPaintBrush, FuPoor ); +TYPEINIT1( FuFormatPaintBrush, FuText ); -FuFormatPaintBrush::FuFormatPaintBrush( - ViewShell* pViewSh - , ::sd::Window* pWin - , ::sd::View* pView - , SdDrawDocument* pDoc - , SfxRequest& rReq ) - : FuPoor(pViewSh, pWin, pView, pDoc, rReq) +FuFormatPaintBrush::FuFormatPaintBrush( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ) +: FuText(pViewSh, pWin, pView, pDoc, rReq) +, mbPermanent( false ) +, mbOldIsQuickTextEditMode( true ) { } FunctionReference FuFormatPaintBrush::Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ) { FunctionReference xFunc( new FuFormatPaintBrush( pViewSh, pWin, pView, pDoc, rReq ) ); + xFunc->DoExecute( rReq ); return xFunc; } +void FuFormatPaintBrush::DoExecute( SfxRequest& rReq ) +{ + const SfxItemSet *pArgs = rReq.GetArgs(); + if( pArgs && pArgs->Count() >= 1 ) + { + mbPermanent = static_cast<bool>(((SfxBoolItem &)pArgs->Get(SID_FORMATPAINTBRUSH)).GetValue()); + } + + if( mpView ) + { + mpView->TakeFormatPaintBrush( mpItemSet ); + } +} + +void FuFormatPaintBrush::implcancel() +{ + if( mpViewShell && mpViewShell->GetViewFrame() ) + { + SfxViewFrame* pViewFrame = mpViewShell->GetViewFrame(); + pViewFrame->GetBindings().Invalidate(SID_FORMATPAINTBRUSH); + pViewFrame->GetDispatcher()->Execute(SID_OBJECT_SELECT, SFX_CALLMODE_ASYNCHRON); + } +} + +static void unmarkimpl( SdrView* pView ) +{ + pView->SdrEndTextEdit(); + pView->UnMarkAll(); +} + BOOL FuFormatPaintBrush::MouseButtonDown(const MouseEvent& rMEvt) { if(mpView&&mpWindow) { - USHORT nHitLog = USHORT ( mpWindow->PixelToLogic(Size(HITPIX,0)).Width() ); - BOOL bToggle = FALSE; - mpView->UnMarkAll(); - mpView->MarkObj(mpWindow->PixelToLogic( rMEvt.GetPosPixel() ), nHitLog, bToggle, FALSE); + SdrViewEvent aVEvt; + SdrHitKind eHit = mpView->PickAnything(rMEvt, SDRMOUSEBUTTONDOWN, aVEvt); + + if( (eHit == SDRHIT_TEXTEDIT) || (eHit == SDRHIT_TEXTEDITOBJ && ( mpViewShell->GetFrameView()->IsQuickEdit() || dynamic_cast< sdr::table::SdrTableObj* >( aVEvt.pObj ) != NULL ) )) + { + SdrObject* pPickObj=0; + SdrPageView* pPV=0; + USHORT nHitLog = USHORT ( mpWindow->PixelToLogic(Size(HITPIX,0)).Width() ); + mpView->PickObj( mpWindow->PixelToLogic( rMEvt.GetPosPixel() ),nHitLog, pPickObj, pPV, SDRSEARCH_PICKMARKABLE); + + if( (pPickObj != 0) && !pPickObj->IsEmptyPresObj() ) + { + // if we text hit another shape than the one currently selected, unselect the old one now + const SdrMarkList& rMarkList = mpView->GetMarkedObjectList(); + if( rMarkList.GetMarkCount() >= 1 ) + { + if( rMarkList.GetMarkCount() == 1 ) + { + if( rMarkList.GetMark(0)->GetMarkedSdrObj() != pPickObj ) + { + + // if current selected shape is not that of the hit text edit, deselect it + unmarkimpl( mpView ); + } + } + else + { + // more than one shape selected, deselect all of them + unmarkimpl( mpView ); + } + } + MouseEvent aMEvt( rMEvt.GetPosPixel(), rMEvt.GetClicks(), rMEvt.GetMode(), rMEvt.GetButtons(), 0 ); + return FuText::MouseButtonDown(aMEvt); + } + + if( aVEvt.pObj == 0 ) + aVEvt.pObj = pPickObj; + } + + unmarkimpl( mpView ); + + if( aVEvt.pObj ) + { + USHORT nHitLog = USHORT ( mpWindow->PixelToLogic(Size(HITPIX,0)).Width() ); + BOOL bToggle = FALSE; + mpView->MarkObj(mpWindow->PixelToLogic( rMEvt.GetPosPixel() ), nHitLog, bToggle, FALSE); + return TRUE; + } } return FALSE; } BOOL FuFormatPaintBrush::MouseMove(const MouseEvent& rMEvt) { - SdFormatClipboard* pFormatClipboard = 0; - if(mpViewShell) - pFormatClipboard = mpViewShell->GetDocSh()->mpFormatClipboard; - if(mpView&&mpWindow&&pFormatClipboard&&pFormatClipboard->HasContent()) + BOOL bReturn = FALSE; + if( mpWindow && mpView ) { - USHORT nHitLog = USHORT ( mpWindow->PixelToLogic(Size(HITPIX,0)).Width() ); - SdrObject* pObj=0; - SdrPageView* pPV=0; - BOOL bOverMarkableObject = mpView->PickObj( - mpWindow->PixelToLogic( rMEvt.GetPosPixel() ) - ,nHitLog, pObj, pPV, SDRSEARCH_PICKMARKABLE); - - if(bOverMarkableObject && pFormatClipboard->HasContentForThisType(pObj->GetObjInventor(),pObj->GetObjIdentifier()) ) + if ( mpView->IsTextEdit() ) + { + bReturn = FuText::MouseMove( rMEvt ); mpWindow->SetPointer(Pointer(POINTER_FILL)); + } else - mpWindow->SetPointer(Pointer(POINTER_ARROW)); + { + USHORT nHitLog = USHORT ( mpWindow->PixelToLogic(Size(HITPIX,0)).Width() ); + SdrObject* pObj=0; + SdrPageView* pPV=0; + BOOL bOverMarkableObject = mpView->PickObj( mpWindow->PixelToLogic( rMEvt.GetPosPixel() ),nHitLog, pObj, pPV, SDRSEARCH_PICKMARKABLE); + + if(bOverMarkableObject && HasContentForThisType(pObj->GetObjInventor(),pObj->GetObjIdentifier()) ) + mpWindow->SetPointer(Pointer(POINTER_FILL)); + else + mpWindow->SetPointer(Pointer(POINTER_ARROW)); + } } - else - mpWindow->SetPointer(Pointer(POINTER_ARROW)); - return FALSE; + return bReturn; } BOOL FuFormatPaintBrush::MouseButtonUp(const MouseEvent& rMEvt) { - SdFormatClipboard* pFormatClipboard = 0; - if(mpViewShell) - pFormatClipboard = mpViewShell->GetDocSh()->mpFormatClipboard; - if( pFormatClipboard && mpView && mpView->AreObjectsMarked() ) + if( mpItemSet.get() && mpView && mpView->AreObjectsMarked() ) { bool bNoCharacterFormats = false; bool bNoParagraphFormats = false; @@ -120,37 +202,97 @@ BOOL FuFormatPaintBrush::MouseButtonUp(const MouseEvent& rMEvt) else if( rMEvt.GetModifier() & KEY_MOD1 ) bNoParagraphFormats = true; } - pFormatClipboard->Paste( *mpView, bNoCharacterFormats, bNoParagraphFormats ); + + OutlinerView* pOLV = mpView->GetTextEditOutlinerView(); + if( pOLV ) + pOLV->MouseButtonUp(rMEvt); + + Paste( bNoCharacterFormats, bNoParagraphFormats ); if(mpViewShell) mpViewShell->GetViewFrame()->GetBindings().Invalidate(SID_FORMATPAINTBRUSH); + + if( mbPermanent ) + return TRUE; } - if(mpViewShell && pFormatClipboard && !pFormatClipboard->HasContent() ) - mpViewShell->Cancel(); + + implcancel(); return TRUE; } BOOL FuFormatPaintBrush::KeyInput(const KeyEvent& rKEvt) { - if( rKEvt.GetKeyCode().GetCode() == KEY_ESCAPE && mpViewShell ) + if( (rKEvt.GetKeyCode().GetCode() == KEY_ESCAPE) && mpViewShell ) { - SdFormatClipboard* pFormatClipboard = mpViewShell->GetDocSh()->mpFormatClipboard; - if(pFormatClipboard) - { - pFormatClipboard->Erase(); - mpViewShell->GetViewFrame()->GetBindings().Invalidate(SID_FORMATPAINTBRUSH); - mpViewShell->Cancel(); - - return TRUE; - } + implcancel(); + return TRUE; } return FuPoor::KeyInput(rKEvt); } void FuFormatPaintBrush::Activate() { + mbOldIsQuickTextEditMode = mpViewShell->GetFrameView()->IsQuickEdit(); + if( !mbOldIsQuickTextEditMode ) + { + mpViewShell->GetFrameView()->SetQuickEdit(TRUE); + mpView->SetQuickTextEditMode(TRUE); + } } void FuFormatPaintBrush::Deactivate() { + if( !mbOldIsQuickTextEditMode ) + { + mpViewShell->GetFrameView()->SetQuickEdit(FALSE); + mpView->SetQuickTextEditMode(FALSE); + } +} + +bool FuFormatPaintBrush::HasContentForThisType( UINT32 nObjectInventor, UINT16 nObjectIdentifier ) const +{ + if( mpItemSet.get() == 0 ) + return false; + if( !mpView || (!mpView->SupportsFormatPaintbrush( nObjectInventor, nObjectIdentifier) ) ) + return false; + return true; +} + +void FuFormatPaintBrush::Paste( bool bNoCharacterFormats, bool bNoParagraphFormats ) +{ + const SdrMarkList& rMarkList = mpView->GetMarkedObjectList(); + if(mpItemSet.get() && (rMarkList.GetMarkCount() == 1) ) + { + SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj(); + + if( mpDoc->IsUndoEnabled() ) + { + String sLabel( mpViewShell->GetViewShellBase().RetrieveLabelFromCommand( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:FormatPaintbrush" ) ) ) ); + mpDoc->BegUndo( sLabel ); + mpDoc->AddUndo(mpDoc->GetSdrUndoFactory().CreateUndoAttrObject(*pObj,FALSE,TRUE)); + } + + mpView->ApplyFormatPaintBrush( *mpItemSet.get(), bNoCharacterFormats, bNoParagraphFormats ); + + if( mpDoc->IsUndoEnabled() ) + { + mpDoc->EndUndo(); + } + } } + +/* static */ void FuFormatPaintBrush::GetMenuState( DrawViewShell& rDrawViewShell, SfxItemSet &rSet ) +{ + const SdrMarkList& rMarkList = rDrawViewShell.GetDrawView()->GetMarkedObjectList(); + const ULONG nMarkCount = rMarkList.GetMarkCount(); + + if( nMarkCount == 1 ) + { + SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj(); + if( pObj && rDrawViewShell.GetDrawView()->SupportsFormatPaintbrush(pObj->GetObjInventor(),pObj->GetObjIdentifier()) ) + return; + } + rSet.DisableItem( SID_FORMATPAINTBRUSH ); +} + + } // end of namespace sd diff --git a/sd/source/ui/func/fuhhconv.cxx b/sd/source/ui/func/fuhhconv.cxx index 0babfc9c2d38..42576f8d9d53 100644 --- a/sd/source/ui/func/fuhhconv.cxx +++ b/sd/source/ui/func/fuhhconv.cxx @@ -38,7 +38,7 @@ #include <com/sun/star/beans/XPropertySet.hpp> #include <cppuhelper/bootstrap.hxx> #include <vcl/msgbox.hxx> -#include <svtools/style.hxx> +#include <svl/style.hxx> #include <svx/eeitem.hxx> #include <svx/langitem.hxx> #include <svx/fontitem.hxx> diff --git a/sd/source/ui/func/fuinsert.cxx b/sd/source/ui/func/fuinsert.cxx index 12c94fbf9f8f..578830b37c25 100644 --- a/sd/source/ui/func/fuinsert.cxx +++ b/sd/source/ui/func/fuinsert.cxx @@ -44,13 +44,13 @@ #include <com/sun/star/drawing/FillStyle.hpp> #include <tools/urlobj.hxx> -#include <svtools/urihelper.hxx> +#include <svl/urihelper.hxx> #include <svtools/sores.hxx> #include <svtools/insdlg.hxx> #include <sfx2/request.hxx> -#include <svtools/globalnameitem.hxx> -#include <svtools/pathoptions.hxx> +#include <svl/globalnameitem.hxx> +#include <unotools/pathoptions.hxx> #include <svx/pfiledlg.hxx> #include <svx/impgrf.hxx> #include <svx/dialogs.hrc> @@ -64,7 +64,7 @@ #include <sot/clsids.hxx> #include <svtools/sfxecode.hxx> #include <svtools/transfer.hxx> -#include <svtools/urlbmk.hxx> +#include <svl/urlbmk.hxx> #include <svx/svdobj.hxx> #include <svx/svdograf.hxx> #include <svx/svdoole2.hxx> diff --git a/sd/source/ui/func/fuinsfil.cxx b/sd/source/ui/func/fuinsfil.cxx index 0dea41e10ca9..a6dad3779ab7 100644 --- a/sd/source/ui/func/fuinsfil.cxx +++ b/sd/source/ui/func/fuinsfil.cxx @@ -38,7 +38,7 @@ #ifndef _EDITENG_HXX #include <svx/editeng.hxx> #endif -#include <svtools/stritem.hxx> +#include <svl/stritem.hxx> #include <sfx2/request.hxx> #include <sfx2/app.hxx> #include <vcl/msgbox.hxx> @@ -48,7 +48,7 @@ #include <svx/svdoutl.hxx> #include <sfx2/filedlghelper.hxx> #include <sot/formats.hxx> -#include <svtools/urihelper.hxx> +#include <svl/urihelper.hxx> #include <svx/forbiddencharacterstable.hxx> #include <tools/urlobj.hxx> #include <sfx2/docfile.hxx> diff --git a/sd/source/ui/func/fuline.cxx b/sd/source/ui/func/fuline.cxx index 8e7d6c6b5b86..08fdf2eb24b7 100644 --- a/sd/source/ui/func/fuline.cxx +++ b/sd/source/ui/func/fuline.cxx @@ -38,8 +38,8 @@ #include <svx/tabline.hxx> #include <svx/xenum.hxx> #include <vcl/msgbox.hxx> -#include <svtools/intitem.hxx> -#include <svtools/stritem.hxx> +#include <svl/intitem.hxx> +#include <svl/stritem.hxx> #include <sfx2/request.hxx> #include <svx/xdef.hxx> #include <sfx2/bindings.hxx> @@ -98,7 +98,7 @@ void FuLine::DoExecute( SfxRequest& rReq ) mpView->GetAttributes( *pNewAttr ); SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); - SfxAbstractTabDialog * pDlg = pFact ? pFact->CreateSvxLineTabDialog(NULL,pNewAttr,mpDoc,RID_SVXDLG_LINE,pObj,bHasMarked) : 0; + SfxAbstractTabDialog * pDlg = pFact ? pFact->CreateSvxLineTabDialog(NULL,pNewAttr,mpDoc,pObj,bHasMarked) : 0; if( pDlg && (pDlg->Execute() == RET_OK) ) { mpView->SetAttributes (*(pDlg->GetOutputItemSet ())); diff --git a/sd/source/ui/func/fulinend.cxx b/sd/source/ui/func/fulinend.cxx index 6f8373147845..1eb3300d30df 100644 --- a/sd/source/ui/func/fulinend.cxx +++ b/sd/source/ui/func/fulinend.cxx @@ -140,7 +140,7 @@ void FuLineEnd::DoExecute( SfxRequest& ) } SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); - AbstractSvxNameDialog* pDlg = pFact ? pFact->CreateSvxNameDialog( NULL, aName, aDesc, RID_SVXDLG_NAME ) : 0; + AbstractSvxNameDialog* pDlg = pFact ? pFact->CreateSvxNameDialog( NULL, aName, aDesc ) : 0; if( pDlg ) { diff --git a/sd/source/ui/func/fuoaprms.cxx b/sd/source/ui/func/fuoaprms.cxx index 694f1ae6615a..5083023efdde 100644 --- a/sd/source/ui/func/fuoaprms.cxx +++ b/sd/source/ui/func/fuoaprms.cxx @@ -46,7 +46,7 @@ #ifndef _MSGBOX_HXX //autogen #include <vcl/msgbox.hxx> #endif -#include <svtools/aeitem.hxx> +#include <svl/aeitem.hxx> #include "svx/xtable.hxx" #include "strings.hrc" diff --git a/sd/source/ui/func/fuolbull.cxx b/sd/source/ui/func/fuolbull.cxx index 29bc28e91e17..a16e6dbb20dd 100644 --- a/sd/source/ui/func/fuolbull.cxx +++ b/sd/source/ui/func/fuolbull.cxx @@ -34,11 +34,11 @@ #include "fuolbull.hxx" #include <vcl/msgbox.hxx> -#include <svtools/intitem.hxx> +#include <svl/intitem.hxx> #include <svx/outliner.hxx> #include <svx/eeitem.hxx> #include <sfx2/request.hxx> -#include <svtools/intitem.hxx> +#include <svl/intitem.hxx> #include <svx/editdata.hxx> #include <svx/svxids.hrc> diff --git a/sd/source/ui/func/fupage.cxx b/sd/source/ui/func/fupage.cxx index 10653e514697..284b4da2be66 100644 --- a/sd/source/ui/func/fupage.cxx +++ b/sd/source/ui/func/fupage.cxx @@ -40,14 +40,14 @@ #include <svx/svxids.hrc> #include <svx/dialogs.hrc> -#include <svtools/itempool.hxx> +#include <svl/itempool.hxx> #ifndef _MSGBOX_HXX //autogen #include <vcl/msgbox.hxx> #endif #include <sfx2/request.hxx> -#include <svtools/stritem.hxx> +#include <svl/stritem.hxx> #include <vcl/prntypes.hxx> -#include <svtools/style.hxx> +#include <svl/style.hxx> #include <stlsheet.hxx> #ifndef _SVX_SVDORECT_HXX #include <svx/svdorect.hxx> @@ -59,7 +59,7 @@ #include <svx/frmdiritem.hxx> #include <svx/xbtmpit.hxx> #include <svx/xsetit.hxx> -#include <svtools/itempool.hxx> +#include <svl/itempool.hxx> #include <svx/ulspitem.hxx> #include <svx/lrspitem.hxx> diff --git a/sd/source/ui/func/fupoor.cxx b/sd/source/ui/func/fupoor.cxx index c6b8f9feaab2..936802ff34cb 100644 --- a/sd/source/ui/func/fupoor.cxx +++ b/sd/source/ui/func/fupoor.cxx @@ -35,7 +35,7 @@ #include "fupoor.hxx" #include <svx/svxids.hrc> -#include <svtools/aeitem.hxx> +#include <svl/aeitem.hxx> #include <svx/svdpagv.hxx> #include <svx/svdoole2.hxx> #include <svx/svdograf.hxx> diff --git a/sd/source/ui/func/fuprlout.cxx b/sd/source/ui/func/fuprlout.cxx index 6975aa66fba9..7fd48732ccc4 100644 --- a/sd/source/ui/func/fuprlout.cxx +++ b/sd/source/ui/func/fuprlout.cxx @@ -35,8 +35,8 @@ #include "fuprlout.hxx" #include <vcl/wrkwin.hxx> #include <sfx2/dispatch.hxx> -#include <svtools/smplhint.hxx> -#include <svtools/itempool.hxx> +#include <svl/smplhint.hxx> +#include <svl/itempool.hxx> #include <sot/storage.hxx> #include <vcl/msgbox.hxx> #include <svx/svdundo.hxx> diff --git a/sd/source/ui/func/fuprobjs.cxx b/sd/source/ui/func/fuprobjs.cxx index b1d43699e27b..d4f6dc71cc88 100644 --- a/sd/source/ui/func/fuprobjs.cxx +++ b/sd/source/ui/func/fuprobjs.cxx @@ -36,9 +36,9 @@ #ifndef _MSGBOX_HXX //autogen #include <vcl/msgbox.hxx> #endif -#include <svtools/style.hxx> +#include <svl/style.hxx> #include <svx/outliner.hxx> -#include <svtools/smplhint.hxx> +#include <svl/smplhint.hxx> #include "app.hrc" diff --git a/sd/source/ui/func/fuscale.cxx b/sd/source/ui/func/fuscale.cxx index 682dc1b4b719..b61836a74cca 100644 --- a/sd/source/ui/func/fuscale.cxx +++ b/sd/source/ui/func/fuscale.cxx @@ -139,7 +139,7 @@ void FuScale::DoExecute( SfxRequest& rReq ) SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); if(pFact) { - pDlg = pFact->CreateSvxZoomDialog(NULL, aNewAttr, RID_SVXDLG_ZOOM); + pDlg = pFact->CreateSvxZoomDialog(NULL, aNewAttr); } if( pDlg ) @@ -169,12 +169,11 @@ void FuScale::DoExecute( SfxRequest& rReq ) delete pDlg; - // SvxZoomType eZT = ((const SvxZoomItem &) aArgs.Get (RID_SVXDLG_ZOOM)).GetType (); - switch (((const SvxZoomItem &) aArgs.Get (RID_SVXDLG_ZOOM)).GetType ()) + switch (((const SvxZoomItem &) aArgs.Get (SID_ATTR_ZOOM)).GetType ()) { case SVX_ZOOM_PERCENT: { - nValue = ((const SvxZoomItem &) aArgs.Get (RID_SVXDLG_ZOOM)).GetValue (); + nValue = ((const SvxZoomItem &) aArgs.Get (SID_ATTR_ZOOM)).GetValue (); mpViewShell->SetZoom( nValue ); diff --git a/sd/source/ui/func/fusel.cxx b/sd/source/ui/func/fusel.cxx index 4e91ef79dc9a..fe97b7410ee7 100644 --- a/sd/source/ui/func/fusel.cxx +++ b/sd/source/ui/func/fusel.cxx @@ -40,15 +40,15 @@ #include <svx/polysc3d.hxx> #include "drawview.hxx" #include <svtools/imapobj.hxx> -#include <svtools/urihelper.hxx> +#include <svl/urihelper.hxx> #include <unotools/localfilehelper.hxx> #include <svx/svxids.hrc> #include <svx/xfillit0.hxx> #include <sfx2/app.hxx> #include <sfx2/viewfrm.hxx> -#include <svtools/aeitem.hxx> -#include <svtools/stritem.hxx> -#include <svtools/intitem.hxx> +#include <svl/aeitem.hxx> +#include <svl/stritem.hxx> +#include <svl/intitem.hxx> #include <sfx2/dispatch.hxx> #include <tools/urlobj.hxx> #include <sfx2/docfile.hxx> diff --git a/sd/source/ui/func/fusldlg.cxx b/sd/source/ui/func/fusldlg.cxx index 6b79046a9bf8..b10f539cf29e 100644 --- a/sd/source/ui/func/fusldlg.cxx +++ b/sd/source/ui/func/fusldlg.cxx @@ -33,7 +33,7 @@ #include "fusldlg.hxx" -#include <svtools/itemset.hxx> +#include <svl/itemset.hxx> #ifndef _MSGBOX_HXX //autogen #include <vcl/msgbox.hxx> #endif diff --git a/sd/source/ui/func/fusnapln.cxx b/sd/source/ui/func/fusnapln.cxx index 28bb58538d85..9f0214668f82 100644 --- a/sd/source/ui/func/fusnapln.cxx +++ b/sd/source/ui/func/fusnapln.cxx @@ -32,7 +32,7 @@ #include "precompiled_sd.hxx" #include "fusnapln.hxx" -#include <svtools/aeitem.hxx> +#include <svl/aeitem.hxx> #include <vcl/msgbox.hxx> #include <sfx2/request.hxx> diff --git a/sd/source/ui/func/futempl.cxx b/sd/source/ui/func/futempl.cxx index d9ebadd48ac7..e53d6d9d7789 100644 --- a/sd/source/ui/func/futempl.cxx +++ b/sd/source/ui/func/futempl.cxx @@ -42,7 +42,7 @@ #include <svx/bulitem.hxx> #include <svx/svxids.hrc> // fuer SID_OBJECT_SELECT #include <sfx2/bindings.hxx> -#include <svtools/aeitem.hxx> +#include <svl/aeitem.hxx> #include <sfx2/dispatch.hxx> #include <vcl/msgbox.hxx> #include <svx/eeitem.hxx> diff --git a/sd/source/ui/func/futext.cxx b/sd/source/ui/func/futext.cxx index 86cfb6be3a77..0f94366f1c56 100644 --- a/sd/source/ui/func/futext.cxx +++ b/sd/source/ui/func/futext.cxx @@ -39,14 +39,14 @@ #include <tools/urlobj.hxx> #include <vcl/help.hxx> #include <svx/editstat.hxx> -#include <svtools/aeitem.hxx> -#include <svtools/intitem.hxx> +#include <svl/aeitem.hxx> +#include <svl/intitem.hxx> #include <svx/svdotext.hxx> #ifndef _SVDOGROUP_HXX //autogen #include <svx/svdogrp.hxx> #endif #include <svx/flditem.hxx> -#include <svtools/style.hxx> +#include <svl/style.hxx> #include <svx/svdpagv.hxx> #include <sfx2/viewfrm.hxx> #include <sfx2/dispatch.hxx> diff --git a/sd/source/ui/func/futransf.cxx b/sd/source/ui/func/futransf.cxx index b5db742f70b4..a5782aadb4c8 100644 --- a/sd/source/ui/func/futransf.cxx +++ b/sd/source/ui/func/futransf.cxx @@ -94,7 +94,7 @@ void FuTransform::DoExecute( SfxRequest& rReq ) SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); if ( pFact ) { - std::auto_ptr< SfxAbstractTabDialog > pDlg( pFact->CreateCaptionDialog( NULL, mpView, RID_SVXDLG_CAPTION ) ); + std::auto_ptr< SfxAbstractTabDialog > pDlg( pFact->CreateCaptionDialog( NULL, mpView ) ); const USHORT* pRange = pDlg->GetInputRanges( *aNewAttr.GetPool() ); SfxItemSet aCombSet( *aNewAttr.GetPool(), pRange ); @@ -114,7 +114,7 @@ void FuTransform::DoExecute( SfxRequest& rReq ) SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); if(pFact) { - std::auto_ptr< SfxAbstractTabDialog > pDlg( pFact->CreateSvxTransformTabDialog( NULL, &aSet,mpView, RID_SVXDLG_TRANSFORM) ); + std::auto_ptr< SfxAbstractTabDialog > pDlg( pFact->CreateSvxTransformTabDialog( NULL, &aSet, mpView ) ); if( pDlg.get() && (pDlg->Execute() == RET_OK) ) { rReq.Done( *( pDlg->GetOutputItemSet() ) ); diff --git a/sd/source/ui/func/futxtatt.cxx b/sd/source/ui/func/futxtatt.cxx index e94638ecf225..8ab4d8d02a75 100644 --- a/sd/source/ui/func/futxtatt.cxx +++ b/sd/source/ui/func/futxtatt.cxx @@ -79,7 +79,7 @@ void FuTextAttrDlg::DoExecute( SfxRequest& rReq ) if( !pArgs ) { SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); - SfxAbstractTabDialog *pDlg = pFact->CreateTextTabDialog( NULL, &aNewAttr, RID_SVXDLG_TEXT, mpView ); + SfxAbstractTabDialog *pDlg = pFact->CreateTextTabDialog( NULL, &aNewAttr, mpView ); USHORT nResult = pDlg->Execute(); diff --git a/sd/source/ui/inc/AccessibleDocumentViewBase.hxx b/sd/source/ui/inc/AccessibleDocumentViewBase.hxx index c0def8ca27a4..e371da534b67 100644 --- a/sd/source/ui/inc/AccessibleDocumentViewBase.hxx +++ b/sd/source/ui/inc/AccessibleDocumentViewBase.hxx @@ -42,6 +42,7 @@ #include <com/sun/star/awt/XFocusListener.hpp> #include <com/sun/star/beans/XPropertyChangeListener.hpp> #include <com/sun/star/accessibility/XAccessible.hpp> +#include <com/sun/star/lang/IndexOutOfBoundsException.hpp> #include <tools/link.hxx> namespace sd { @@ -159,7 +160,8 @@ public: virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible> SAL_CALL getAccessibleChild (sal_Int32 nIndex) - throw (::com::sun::star::uno::RuntimeException); + throw (::com::sun::star::uno::RuntimeException, + ::com::sun::star::lang::IndexOutOfBoundsException); //===== XAccessibleComponent ============================================ diff --git a/sd/source/ui/inc/AccessibleDrawDocumentView.hxx b/sd/source/ui/inc/AccessibleDrawDocumentView.hxx index 74aef069d7f5..cc09d31464a9 100644 --- a/sd/source/ui/inc/AccessibleDrawDocumentView.hxx +++ b/sd/source/ui/inc/AccessibleDrawDocumentView.hxx @@ -33,7 +33,6 @@ #include "AccessibleDocumentViewBase.hxx" - namespace accessibility { @@ -78,7 +77,8 @@ public: virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible> SAL_CALL getAccessibleChild (sal_Int32 nIndex) - throw (::com::sun::star::uno::RuntimeException); + throw (::com::sun::star::uno::RuntimeException, + ::com::sun::star::lang::IndexOutOfBoundsException); //===== lang::XEventListener ============================================ diff --git a/sd/source/ui/inc/AccessibleOutlineEditSource.hxx b/sd/source/ui/inc/AccessibleOutlineEditSource.hxx index abe492991067..e408b70b755a 100644 --- a/sd/source/ui/inc/AccessibleOutlineEditSource.hxx +++ b/sd/source/ui/inc/AccessibleOutlineEditSource.hxx @@ -33,8 +33,8 @@ #include <memory> #include <vcl/svapp.hxx> -#include <svtools/brdcst.hxx> -#include <svtools/lstner.hxx> +#include <svl/brdcst.hxx> +#include <svl/lstner.hxx> #include <svx/unoedsrc.hxx> #include <svx/editdata.hxx> #include <svx/unoforou.hxx> diff --git a/sd/source/ui/inc/DrawDocShell.hxx b/sd/source/ui/inc/DrawDocShell.hxx index fb2d83ba4be9..6348f330e081 100644 --- a/sd/source/ui/inc/DrawDocShell.hxx +++ b/sd/source/ui/inc/DrawDocShell.hxx @@ -52,7 +52,6 @@ class SfxPrinter; struct SdrDocumentStreamInfo; struct SpellCallbackInfo; class AbstractSvxNameDialog; -class SdFormatClipboard; namespace sd { @@ -209,9 +208,6 @@ public: void ClearUndoBuffer(); -public: - SdFormatClipboard* mpFormatClipboard; - protected: SdDrawDocument* mpDoc; diff --git a/sd/source/ui/inc/EventMultiplexer.hxx b/sd/source/ui/inc/EventMultiplexer.hxx index 79e33452959c..5627612aec06 100644 --- a/sd/source/ui/inc/EventMultiplexer.hxx +++ b/sd/source/ui/inc/EventMultiplexer.hxx @@ -31,7 +31,7 @@ #ifndef SD_TOOLS_EVENT_MULTIPLEXER_HXX #define SD_TOOLS_EVENT_MULTIPLEXER_HXX -#include <svtools/lstner.hxx> +#include <svl/lstner.hxx> #include <set> #include <memory> diff --git a/sd/source/ui/inc/FormShellManager.hxx b/sd/source/ui/inc/FormShellManager.hxx index c919e5f95c91..9956d8dc2af9 100644 --- a/sd/source/ui/inc/FormShellManager.hxx +++ b/sd/source/ui/inc/FormShellManager.hxx @@ -34,7 +34,7 @@ #include <ViewShellManager.hxx> #include <tools/link.hxx> -#include <svtools/lstner.hxx> +#include <svl/lstner.hxx> class VclWindowEvent; class FmFormShell; diff --git a/sd/source/ui/inc/PreviewRenderer.hxx b/sd/source/ui/inc/PreviewRenderer.hxx index c508410045aa..7211a02da6f4 100644 --- a/sd/source/ui/inc/PreviewRenderer.hxx +++ b/sd/source/ui/inc/PreviewRenderer.hxx @@ -34,7 +34,7 @@ #include "drawview.hxx" #include <vcl/image.hxx> #include <vcl/virdev.hxx> -#include <svtools/listener.hxx> +#include <svl/listener.hxx> #include <memory> diff --git a/sd/source/ui/inc/ViewShellBase.hxx b/sd/source/ui/inc/ViewShellBase.hxx index 8187d308bfb8..383bd12fcdb5 100644 --- a/sd/source/ui/inc/ViewShellBase.hxx +++ b/sd/source/ui/inc/ViewShellBase.hxx @@ -259,6 +259,10 @@ public: CustomHandleManager& getCustomHandleManager() const; + /** returns the ui descriptive name for the given uno slot. The result is taken from the configuration + and not cached, so do not use it excessive (f.e. in status updates) */ + ::rtl::OUString RetrieveLabelFromCommand( const ::rtl::OUString& aCmdURL ) const;
+ protected: osl::Mutex maMutex; diff --git a/sd/source/ui/inc/ViewShellHint.hxx b/sd/source/ui/inc/ViewShellHint.hxx index 23ff29c7f8de..493d2c2e2a19 100644 --- a/sd/source/ui/inc/ViewShellHint.hxx +++ b/sd/source/ui/inc/ViewShellHint.hxx @@ -31,7 +31,7 @@ #ifndef SD_VIEW_SHELL_HINT_HXX #define SD_VIEW_SHELL_HINT_HXX -#include <svtools/hint.hxx> +#include <svl/hint.hxx> namespace sd { diff --git a/sd/source/ui/inc/WindowUpdater.hxx b/sd/source/ui/inc/WindowUpdater.hxx index 7b61c37adb45..a6c37a54991a 100644 --- a/sd/source/ui/inc/WindowUpdater.hxx +++ b/sd/source/ui/inc/WindowUpdater.hxx @@ -31,8 +31,8 @@ #ifndef SD_OUTPUT_DEVICE_UPDATER_HXX #define SD_OUTPUT_DEVICE_UPDATER_HXX -#include <svtools/lstner.hxx> -#include <svtools/ctloptions.hxx> +#include <svl/lstner.hxx> +#include <svl/ctloptions.hxx> #include "sddllapi.h" #ifndef INCLUDED_VECTOR @@ -65,7 +65,7 @@ class ViewShell; this document is reformatted when the monitored option changes.</p> */ class SD_DLLPUBLIC WindowUpdater - : public SfxListener + : public utl::ConfigurationListener { public: explicit WindowUpdater (void); @@ -116,7 +116,7 @@ public: /** Callback that waits for notifications of a <type>SvtCTLOptions</type> object. */ - virtual void Notify (SfxBroadcaster& rBC, const SfxHint& rHint); + virtual void ConfigurationChanged ( utl::ConfigurationBroadcaster*, sal_uInt32 nHint); private: /// Options to monitor for changes. diff --git a/sd/source/ui/inc/diactrl.hxx b/sd/source/ui/inc/diactrl.hxx index b6e1b2dc9fbd..df235a66c71d 100644 --- a/sd/source/ui/inc/diactrl.hxx +++ b/sd/source/ui/inc/diactrl.hxx @@ -32,7 +32,7 @@ #define _SD_DIACTRL_HXX #include "dlgctrls.hxx" -#include <svtools/intitem.hxx> +#include <svl/intitem.hxx> #include <sfx2/bindings.hxx> #include <svx/itemwin.hxx> #include <vcl/fixed.hxx> diff --git a/sd/source/ui/inc/docprev.hxx b/sd/source/ui/inc/docprev.hxx index 746df06794ea..80f219ddfc59 100644 --- a/sd/source/ui/inc/docprev.hxx +++ b/sd/source/ui/inc/docprev.hxx @@ -37,7 +37,7 @@ #include <rtl/ref.hxx> -#include <svtools/lstner.hxx> +#include <svl/lstner.hxx> #include <svtools/colorcfg.hxx> #include "fadedef.h" #include "sddllapi.h" diff --git a/sd/source/ui/inc/formatclipboard.hxx b/sd/source/ui/inc/formatclipboard.hxx deleted file mode 100644 index 67f77e2a406b..000000000000 --- a/sd/source/ui/inc/formatclipboard.hxx +++ /dev/null @@ -1,64 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile: formatclipboard.hxx,v $ - * $Revision: 1.4 $ - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef _SDFORMATCLIPBOARD_HXX -#define _SDFORMATCLIPBOARD_HXX - -#include "View.hxx" -// header for class SfxItemSet -#include <svtools/itemset.hxx> - -//----------------------------------------------------------------------------- -/** This class acts as data container and execution class for the format paintbrush feature in draw and impress. -*/ - -class SdFormatClipboard -{ -public: - SdFormatClipboard(); - virtual ~SdFormatClipboard(); - - bool HasContent() const; - bool CanCopyThisType( UINT32 nObjectInventor, UINT16 nObjectIdentifier ) const; - bool HasContentForThisType( UINT32 nObjectInventor, UINT16 nObjectIdentifier ) const; - - void Copy( ::sd::View& rDrawView, bool bPersistentCopy=false ); - void Paste( ::sd::View& rDrawView - , bool bNoCharacterFormats=false, bool bNoParagraphFormats=false ); - void Erase(); - -private: - SfxItemSet* m_pItemSet; - bool m_bPersistentCopy; - UINT32 m_nType_Inventor; - UINT16 m_nType_Identifier; -}; - -#endif diff --git a/sd/source/ui/inc/fuconuno.hxx b/sd/source/ui/inc/fuconuno.hxx index c5feb07dcab6..49e98cd36e73 100644 --- a/sd/source/ui/inc/fuconuno.hxx +++ b/sd/source/ui/inc/fuconuno.hxx @@ -31,7 +31,7 @@ #ifndef SD_FU_CONSTRUCT_UNO_CONTROL_HXX #define SD_FU_CONSTRUCT_UNO_CONTROL_HXX -#include <svtools/itemset.hxx> +#include <svl/itemset.hxx> #include "fuconstr.hxx" namespace sd { diff --git a/sd/source/ui/inc/fuformatpaintbrush.hxx b/sd/source/ui/inc/fuformatpaintbrush.hxx index 44b6548b50ce..d14664a5b66b 100644 --- a/sd/source/ui/inc/fuformatpaintbrush.hxx +++ b/sd/source/ui/inc/fuformatpaintbrush.hxx @@ -31,15 +31,17 @@ #ifndef SD_FU_FORMATPAINTBRUSH_HXX #define SD_FU_FORMATPAINTBRUSH_HXX -#include "fupoor.hxx" +#include "futext.hxx" // header for class SfxItemSet -#include <svtools/itemset.hxx> +#include <svl/itemset.hxx> +#include <boost/scoped_ptr.hpp> namespace sd { -class FuFormatPaintBrush - : public FuPoor +class DrawViewShell; + +class FuFormatPaintBrush : public FuText { public: TYPEINFO(); @@ -54,14 +56,22 @@ public: virtual void Activate(); virtual void Deactivate(); + static void GetMenuState( DrawViewShell& rDrawViewShell, SfxItemSet &rSet ); + static bool CanCopyThisType( UINT32 nObjectInventor, UINT16 nObjectIdentifier ); + private: - FuFormatPaintBrush ( - ViewShell* pViewSh, - ::sd::Window* pWin, - ::sd::View* pView, - SdDrawDocument* pDoc, - SfxRequest& rReq); + FuFormatPaintBrush ( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq); + + void DoExecute( SfxRequest& rReq ); + + bool HasContentForThisType( UINT32 nObjectInventor, UINT16 nObjectIdentifier ) const; + void Paste( bool, bool ); + + void implcancel(); + ::boost::shared_ptr<SfxItemSet> mpItemSet; + bool mbPermanent; + bool mbOldIsQuickTextEditMode; }; } // end of namespace sd diff --git a/sd/source/ui/inc/optsitem.hxx b/sd/source/ui/inc/optsitem.hxx index a67c91948617..a69381d784df 100644 --- a/sd/source/ui/inc/optsitem.hxx +++ b/sd/source/ui/inc/optsitem.hxx @@ -85,6 +85,7 @@ public: virtual ~SdOptionsItem(); virtual void Commit(); + virtual void Notify( const com::sun::star::uno::Sequence<rtl::OUString>& aPropertyNames); ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > GetProperties( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& rNames ); diff --git a/sd/source/ui/inc/sdtreelb.hxx b/sd/source/ui/inc/sdtreelb.hxx index 4fc2c12ad71b..182d2f68ac54 100644 --- a/sd/source/ui/inc/sdtreelb.hxx +++ b/sd/source/ui/inc/sdtreelb.hxx @@ -40,7 +40,7 @@ #include "sddllapi.h" #include <tools/string.hxx> #include <svtools/svtreebx.hxx> -#include <svtools/urlbmk.hxx> +#include <svl/urlbmk.hxx> #include <tools/ref.hxx> #include "sdxfer.hxx" diff --git a/sd/source/ui/inc/sdxfer.hxx b/sd/source/ui/inc/sdxfer.hxx index 6ad9be896829..59a3a192907b 100644 --- a/sd/source/ui/inc/sdxfer.hxx +++ b/sd/source/ui/inc/sdxfer.hxx @@ -34,7 +34,7 @@ #include <svtools/transfer.hxx> #include <vcl/graph.hxx> #include <sfx2/objsh.hxx> -#include <svtools/lstner.hxx> +#include <svl/lstner.hxx> // ------------------ // - SdTransferable - diff --git a/sd/source/ui/inc/unomodel.hxx b/sd/source/ui/inc/unomodel.hxx index a29397a363af..a4dc305d6aeb 100644 --- a/sd/source/ui/inc/unomodel.hxx +++ b/sd/source/ui/inc/unomodel.hxx @@ -52,7 +52,7 @@ #include <rtl/ref.hxx> -#include <svtools/lstner.hxx> +#include <svl/lstner.hxx> #include <sfx2/sfxbasemodel.hxx> #include <svx/fmdmod.hxx> diff --git a/sd/source/ui/notes/EditWindow.cxx b/sd/source/ui/notes/EditWindow.cxx index f86e9a358cbc..10c4b58fd999 100755 --- a/sd/source/ui/notes/EditWindow.cxx +++ b/sd/source/ui/notes/EditWindow.cxx @@ -41,12 +41,12 @@ #include <vcl/scrbar.hxx> #include <svx/eeitem.hxx> #include "sdresid.hxx" -#include <svtools/itempool.hxx> +#include <svl/itempool.hxx> #include <svx/fhgtitem.hxx> #include <vos/mutex.hxx> #include <vcl/svapp.hxx> -#include <svtools/linguprops.hxx> -#include <svtools/lingucfg.hxx> +#include <unotools/linguprops.hxx> +#include <unotools/lingucfg.hxx> #include <svx/fontitem.hxx> #include <svx/editstat.hxx> diff --git a/sd/source/ui/presenter/PresenterTextView.cxx b/sd/source/ui/presenter/PresenterTextView.cxx index 0317b7530e5c..8890c608f17f 100644 --- a/sd/source/ui/presenter/PresenterTextView.cxx +++ b/sd/source/ui/presenter/PresenterTextView.cxx @@ -35,10 +35,10 @@ #include <i18npool/mslangid.hxx> #include <cppcanvas/vclfactory.hxx> -#include <svtools/itempool.hxx> -#include <svtools/itemset.hxx> -#include <svtools/linguprops.hxx> -#include <svtools/lingucfg.hxx> +#include <svl/itempool.hxx> +#include <svl/itemset.hxx> +#include <unotools/linguprops.hxx> +#include <unotools/lingucfg.hxx> #include <svx/colritem.hxx> #include <svx/editeng.hxx> #include <svx/editstat.hxx> diff --git a/sd/source/ui/slideshow/showwin.cxx b/sd/source/ui/slideshow/showwin.cxx index 911d31d2518f..3fad355c915a 100644 --- a/sd/source/ui/slideshow/showwin.cxx +++ b/sd/source/ui/slideshow/showwin.cxx @@ -35,7 +35,7 @@ #include "showwindow.hxx" -#include <svtools/syslocale.hxx> +#include <unotools/syslocale.hxx> #include <sfx2/viewfrm.hxx> diff --git a/sd/source/ui/slideshow/slideshow.cxx b/sd/source/ui/slideshow/slideshow.cxx index 6d5e3e31ad80..f1cb2cf4afb9 100644 --- a/sd/source/ui/slideshow/slideshow.cxx +++ b/sd/source/ui/slideshow/slideshow.cxx @@ -44,7 +44,7 @@ #include <vcl/svapp.hxx> #include <vcl/wrkwin.hxx> -#include <svtools/itemprop.hxx> +#include <svl/itemprop.hxx> #include <sfx2/topfrm.hxx> #include <sfx2/viewfrm.hxx> diff --git a/sd/source/ui/slideshow/slideshowimpl.cxx b/sd/source/ui/slideshow/slideshowimpl.cxx index c0b4857f3f6b..e59f45b71e12 100644 --- a/sd/source/ui/slideshow/slideshowimpl.cxx +++ b/sd/source/ui/slideshow/slideshowimpl.cxx @@ -46,8 +46,8 @@ #include <com/sun/star/frame/XDispatch.hpp> #include <com/sun/star/frame/XLayoutManager.hpp> #include <vos/process.hxx> -#include <svtools/aeitem.hxx> -#include <svtools/urihelper.hxx> +#include <svl/aeitem.hxx> +#include <svl/urihelper.hxx> #include <toolkit/unohlp.hxx> @@ -169,7 +169,9 @@ public: bool nextSlide(); bool previousSlide(); - void displayCurrentSlide( const Reference< XSlideShow >& xShow ); + void displayCurrentSlide( + const Reference< XSlideShow >& xShow, + const bool bSkipAllMainSequenceEffects); sal_Int32 getNextSlideIndex() const; sal_Int32 getPreviousSlideIndex() const; @@ -466,15 +468,17 @@ bool AnimationSlideController::previousSlide() return jumpToSlideIndex( getPreviousSlideIndex() ); } -void AnimationSlideController::displayCurrentSlide( const Reference< XSlideShow >& xShow ) +void AnimationSlideController::displayCurrentSlide( + const Reference< XSlideShow >& xShow, + const bool bSkipAllMainSequenceEffects) { const sal_Int32 nCurrentSlideNumber = getCurrentSlideNumber(); if( xShow.is() && (nCurrentSlideNumber != -1 ) ) { - Sequence< PropertyValue > aProperties; Reference< XDrawPage > xSlide; Reference< XAnimationNode > xAnimNode; + ::std::vector<PropertyValue> aProperties; const sal_Int32 nNextSlideNumber = getNextSlideNumber(); if( getSlideAPI( nNextSlideNumber, xSlide, xAnimNode ) ) @@ -482,13 +486,40 @@ void AnimationSlideController::displayCurrentSlide( const Reference< XSlideShow Sequence< Any > aValue(2); aValue[0] <<= xSlide; aValue[1] <<= xAnimNode; - aProperties.realloc(1); - aProperties[0].Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "Prefetch" ) ); - aProperties[0].Value <<= aValue; + aProperties.push_back( + PropertyValue( + OUString( RTL_CONSTASCII_USTRINGPARAM( "Prefetch" ) ), + -1, + Any(aValue), + PropertyState_DIRECT_VALUE)); + } + if (bSkipAllMainSequenceEffects) + { + // Add one property that prevents the slide transition from being + // shown (to speed up the transition to the previous slide) and + // one to show all main sequence effects so that the user can + // continue to undo effects. + aProperties.push_back( + PropertyValue( + OUString( RTL_CONSTASCII_USTRINGPARAM("SkipAllMainSequenceEffects")), + -1, + Any(sal_True), + PropertyState_DIRECT_VALUE)); + aProperties.push_back( + PropertyValue( + OUString( RTL_CONSTASCII_USTRINGPARAM("SkipSlideTransition")), + -1, + Any(sal_True), + PropertyState_DIRECT_VALUE)); } + // Convert vector into uno Sequence. + Sequence< PropertyValue > aPropertySequence (aProperties.size()); + for (int nIndex=0,nCount=aProperties.size();nIndex<nCount; ++nIndex) + aPropertySequence[nIndex] = aProperties[nIndex]; + if( getSlideAPI( nCurrentSlideNumber, xSlide, xAnimNode ) ) - xShow->displaySlide( xSlide, xAnimNode, aProperties ); + xShow->displaySlide( xSlide, xAnimNode, aPropertySequence ); } } @@ -730,6 +761,9 @@ void SAL_CALL SlideshowImpl::disposing() setActiveXToolbarsVisible( sal_True ); + Application::EnableNoYieldMode(false); + Application::RemovePostYieldListener(LINK(this, SlideshowImpl, PostYieldListener)); + mbDisposed = true; } @@ -1235,9 +1269,12 @@ void SAL_CALL SlideshowImpl::removeSlideShowListener( const Reference< XSlideSho // --------------------------------------------------------- -void SlideshowImpl::slideEnded() +void SlideshowImpl::slideEnded(const bool bReverse) { - gotoNextSlide(); + if (bReverse) + gotoPreviousSlide(true); + else + gotoNextSlide(); } // --------------------------------------------------------- @@ -1387,14 +1424,14 @@ void SlideshowImpl::registerShapeEvents( Reference< XShapes >& xShapes ) throw( // --------------------------------------------------------- -void SlideshowImpl::displayCurrentSlide() +void SlideshowImpl::displayCurrentSlide (const bool bSkipAllMainSequenceEffects) { stopSound(); removeShapeEvents(); if( mpSlideController.get() && mxShow.is() ) { - mpSlideController->displayCurrentSlide( mxShow ); + mpSlideController->displayCurrentSlide( mxShow, bSkipAllMainSequenceEffects ); registerShapeEvents(mpSlideController->getCurrentSlideNumber()); update(); @@ -1822,11 +1859,34 @@ IMPL_LINK( SlideshowImpl, updateHdl, Timer*, EMPTYARG ) { mnUpdateEvent = 0; + return updateSlideShow(); +} + + + + +IMPL_LINK( SlideshowImpl, PostYieldListener, void*, EMPTYARG ) +{ + Application::EnableNoYieldMode(false); + Application::RemovePostYieldListener(LINK(this, SlideshowImpl, PostYieldListener)); + if (mbDisposed) + return 0; + return updateSlideShow(); +} + + + + +sal_Int32 SlideshowImpl::updateSlideShow (void) +{ // doing some nMagic const rtl::Reference<SlideshowImpl> this_(this); Reference< XSlideShow > xShow( mxShow ); - if( xShow.is() ) try + if ( ! xShow.is()) + return 0; + + try { // TODO(Q3): Evaluate under various systems and setups, // whether this is really necessary. Under WinXP and Matrox @@ -1841,32 +1901,37 @@ IMPL_LINK( SlideshowImpl, updateHdl, Timer*, EMPTYARG ) if( !xShow->update(fUpdate) ) fUpdate = -1.0; - if( mxShow.is() && ( fUpdate >= 0.0 ) ) + if (mxShow.is() && (fUpdate >= 0.0)) { -/* - if( fUpdate < 0.25 ) + if (::basegfx::fTools::equalZero(fUpdate)) { - mnUpdateEvent = Application::PostUserEvent(LINK(this, SlideshowImpl, updateHdl)); + // Use post yield listener for short update intervalls. + Application::EnableNoYieldMode(true); + Application::AddPostYieldListener(LINK(this, SlideshowImpl, PostYieldListener)); } else -*/ { // Avoid busy loop when the previous call to update() - // returns 0. The minimum value is small enough to allow - // high frame rates. Values larger than 0 are typically - // also larger then the small minimum value and thus are - // used to determine the frame rate. - const float MIN_UPDATE = 0.01f; // 10ms corresponds to 100 frames per second. - if( fUpdate < MIN_UPDATE ) - fUpdate = MIN_UPDATE; - else - { - const float MAX_UPDATE = 4.0f; // do not wait longer than 4 seconds for next refresh, because dilbert said so - if( fUpdate > MAX_UPDATE ) - fUpdate = MAX_UPDATE; - } - maUpdateTimer.SetTimeout( - ::std::max( 1UL, static_cast<ULONG>(fUpdate * 1000.0) ) ); + // returns a small positive number but not 0 (which is + // handled above). Also, make sure that calls to update() + // have a minimum frequency. + // => Allow up to 60 frames per second. Call at least once + // every 4 seconds. + const static sal_Int32 mnMaximumFrameCount (60); + const static double mnMinimumTimeout (1.0 / mnMaximumFrameCount); + const static double mnMaximumTimeout (4.0); + fUpdate = ::basegfx::clamp(fUpdate, mnMinimumTimeout, mnMaximumTimeout); + + // Make sure that the maximum frame count has not been set + // too high (only then conversion to milliseconds and long + // integer may lead to zero value.) + OSL_ASSERT(static_cast<ULONG>(fUpdate * 1000.0) > 0); + + Application::EnableNoYieldMode(false); + Application::RemovePostYieldListener(LINK(this, SlideshowImpl, PostYieldListener)); + + // Use a timer for the asynchronous callback. + maUpdateTimer.SetTimeout(static_cast<ULONG>(fUpdate * 1000.0)); maUpdateTimer.Start(); } } @@ -1875,11 +1940,10 @@ IMPL_LINK( SlideshowImpl, updateHdl, Timer*, EMPTYARG ) { static_cast<void>(e); DBG_ERROR( - (OString("sd::SlideshowImpl::updateHdl(), " - "exception caught: ") + - rtl::OUStringToOString( - comphelper::anyToString( cppu::getCaughtException() ), - RTL_TEXTENCODING_UTF8 )).getStr() ); + (OString("sd::SlideshowImpl::updateSlideShow(), exception caught: ") + + rtl::OUStringToOString( + comphelper::anyToString( cppu::getCaughtException() ), + RTL_TEXTENCODING_UTF8 )).getStr() ); } return 0; } @@ -1968,11 +2032,17 @@ bool SlideshowImpl::keyInput(const KeyEvent& rKEvt) break; case KEY_PAGEUP: + if(rKEvt.GetKeyCode().IsMod2()) + { + gotoPreviousSlide(); + break; + } + // warning, fall through! case KEY_LEFT: case KEY_UP: case KEY_P: case KEY_BACKSPACE: - gotoPreviousSlide(); + gotoPreviousEffect(); break; case KEY_HOME: @@ -2930,6 +3000,30 @@ void SAL_CALL SlideshowImpl::gotoNextEffect( ) throw (RuntimeException) // -------------------------------------------------------------------- +void SAL_CALL SlideshowImpl::gotoPreviousEffect( ) throw (RuntimeException) +{ + ::vos::OGuard aSolarGuard( Application::GetSolarMutex() ); + + if( mxShow.is() && mpSlideController.get() && mpShowWindow ) + { + if( mbIsPaused ) + resume(); + + const ShowWindowMode eMode = mpShowWindow->GetShowWindowMode(); + if( (eMode == SHOWWINDOWMODE_PAUSE) || (eMode == SHOWWINDOWMODE_BLANK) ) + { + mpShowWindow->RestartShow(); + } + else + { + mxShow->previousEffect(); + update(); + } + } +} + +// -------------------------------------------------------------------- + void SAL_CALL SlideshowImpl::gotoFirstSlide( ) throw (RuntimeException) { ::vos::OGuard aSolarGuard( Application::GetSolarMutex() ); @@ -3050,6 +3144,11 @@ void SAL_CALL SlideshowImpl::gotoNextSlide( ) throw (RuntimeException) void SAL_CALL SlideshowImpl::gotoPreviousSlide( ) throw (RuntimeException) { + gotoPreviousSlide(false); +} + +void SlideshowImpl::gotoPreviousSlide (const bool bSkipAllMainSequenceEffects) +{ ::vos::OGuard aSolarGuard( Application::GetSolarMutex() ); if( mxShow.is() && mpSlideController.get() ) try @@ -3070,8 +3169,22 @@ void SAL_CALL SlideshowImpl::gotoPreviousSlide( ) throw (RuntimeException) } else { - if( mpSlideController->previousSlide() ) - displayCurrentSlide(); + if( mpSlideController->previousSlide()) + displayCurrentSlide(bSkipAllMainSequenceEffects); + else if (bSkipAllMainSequenceEffects) + { + // We could not go to the previous slide (probably because + // the current slide is already the first one). We still + // have to call displayCurrentSlide because the calling + // slideshow can not determine whether there is a previous + // slide or not and has already prepared for a slide change. + // This slide change has to be completed now, even when + // changing to the same slide. + // Note that in this special case we do NOT pass + // bSkipAllMainSequenceEffects because we display the same + // slide as before and do not want to show all its effects. + displayCurrentSlide(false); + } } } catch( Exception& e ) @@ -3522,19 +3635,20 @@ void SAL_CALL SlideShowListenerProxy::slideAnimationsEnded( ) throw (::com::sun // --------------------------------------------------------- -void SlideShowListenerProxy::slideEnded() throw (RuntimeException) +void SlideShowListenerProxy::slideEnded(sal_Bool bReverse) throw (RuntimeException) { { ::osl::MutexGuard aGuard( m_aMutex ); if( maListeners.getLength() >= 0 ) - maListeners.forEach<XSlideShowListener>( boost::mem_fn( &XSlideShowListener::slideEnded ) ); + maListeners.forEach<XSlideShowListener>( + boost::bind( &XSlideShowListener::slideEnded, _1, bReverse) ); } { ::vos::OGuard aSolarGuard( Application::GetSolarMutex() ); if( mxController.is() ) - mxController->slideEnded(); + mxController->slideEnded(bReverse); } } diff --git a/sd/source/ui/slideshow/slideshowimpl.hxx b/sd/source/ui/slideshow/slideshowimpl.hxx index b9d5506ff2f3..96b24913c45e 100644 --- a/sd/source/ui/slideshow/slideshowimpl.hxx +++ b/sd/source/ui/slideshow/slideshowimpl.hxx @@ -62,8 +62,8 @@ #include <basegfx/tools/canvastools.hxx> #include <vcl/help.hxx> #include <tools/urlobj.hxx> -#include <svtools/pathoptions.hxx> -#include <svtools/saveopt.hxx> +#include <unotools/pathoptions.hxx> +#include <unotools/saveopt.hxx> #include <sfx2/bindings.hxx> #include <sfx2/dispatch.hxx> #include <sfx2/viewfrm.hxx> @@ -166,7 +166,7 @@ public: virtual void SAL_CALL slideTransitionStarted() throw (css::uno::RuntimeException); virtual void SAL_CALL slideTransitionEnded() throw (css::uno::RuntimeException); virtual void SAL_CALL slideAnimationsEnded() throw (css::uno::RuntimeException); - virtual void SAL_CALL slideEnded() throw (css::uno::RuntimeException); + virtual void SAL_CALL slideEnded(sal_Bool bReverse) throw (css::uno::RuntimeException); virtual void SAL_CALL hyperLinkClicked(const ::rtl::OUString & hyperLink) throw (css::uno::RuntimeException); // css::lang::XEventListener: @@ -208,6 +208,7 @@ public: virtual void SAL_CALL addSlideShowListener( const css::uno::Reference< css::presentation::XSlideShowListener >& Listener ) throw (css::uno::RuntimeException); virtual void SAL_CALL removeSlideShowListener( const css::uno::Reference< css::presentation::XSlideShowListener >& Listener ) throw (css::uno::RuntimeException); virtual void SAL_CALL gotoNextEffect( ) throw (css::uno::RuntimeException); + virtual void SAL_CALL gotoPreviousEffect( ) throw (css::uno::RuntimeException); virtual void SAL_CALL gotoFirstSlide( ) throw (css::uno::RuntimeException); virtual void SAL_CALL gotoNextSlide( ) throw (css::uno::RuntimeException); virtual void SAL_CALL gotoPreviousSlide( ) throw (css::uno::RuntimeException); @@ -237,7 +238,7 @@ public: virtual ::sal_Bool SAL_CALL hasElements( ) throw (::com::sun::star::uno::RuntimeException); // will be called from the SlideShowListenerProxy when this event is fired from the XSlideShow - void slideEnded(); + void slideEnded(const bool bReverse); void hyperLinkClicked(const ::rtl::OUString & hyperLink) throw (css::uno::RuntimeException); void click(const css::uno::Reference< css::drawing::XShape > & xShape, const css::awt::MouseEvent & aOriginalEvent); @@ -278,7 +279,7 @@ private: void createSlideList( bool bAll, bool bStartWithActualSlide, const String& rPresSlide ); - void displayCurrentSlide(); + void displayCurrentSlide (const bool bSkipAllMainSequenceEffects = false); void displaySlideNumber( sal_Int32 nSlide ); void displaySlideIndex( sal_Int32 nIndex ); @@ -297,6 +298,7 @@ private: void setActiveXToolbarsVisible( sal_Bool bVisible ); DECL_LINK( updateHdl, Timer* ); + DECL_LINK( PostYieldListener, void* ); DECL_LINK( ReadyForNextInputHdl, Timer* ); DECL_LINK( endPresentationHdl, void* ); DECL_LINK( ContextMenuSelectHdl, Menu * ); @@ -330,6 +332,14 @@ private: css::uno::Reference< css::presentation::XSlideShow > createSlideShow() const; void setAutoSaveState( bool bOn ); + void gotoPreviousSlide (const bool bSkipAllMainSequenceEffects); + + /** Called by PostYieldListener and updateHdl handlers this method is + responsible to call the slideshow update() method and, depending on + its return value, wait for a certain amount of time before another + call to update() is scheduled. + */ + sal_Int32 updateSlideShow (void); css::uno::Reference< css::presentation::XSlideShow > mxShow; comphelper::ImplementationReference< ::sd::SlideShowView, css::presentation::XSlideShowView > mxView; diff --git a/sd/source/ui/slideshow/slideshowviewimpl.hxx b/sd/source/ui/slideshow/slideshowviewimpl.hxx index 8eebe162b942..4d2ecbdef39c 100644 --- a/sd/source/ui/slideshow/slideshowviewimpl.hxx +++ b/sd/source/ui/slideshow/slideshowviewimpl.hxx @@ -56,8 +56,8 @@ #include <cppcanvas/spritecanvas.hxx> #include <vcl/help.hxx> #include <tools/urlobj.hxx> -#include <svtools/pathoptions.hxx> -#include <svtools/saveopt.hxx> +#include <unotools/pathoptions.hxx> +#include <unotools/saveopt.hxx> #include <sfx2/bindings.hxx> #include <sfx2/dispatch.hxx> #include <sfx2/viewfrm.hxx> diff --git a/sd/source/ui/slidesorter/cache/SlsQueueProcessor.cxx b/sd/source/ui/slidesorter/cache/SlsQueueProcessor.cxx index f634d437ba4b..09c633424c6d 100644 --- a/sd/source/ui/slidesorter/cache/SlsQueueProcessor.cxx +++ b/sd/source/ui/slidesorter/cache/SlsQueueProcessor.cxx @@ -161,11 +161,12 @@ void QueueProcessor::ProcessRequests (void) { OSL_ASSERT(mpCacheContext.get()!=NULL); - while ( ! mrQueue.IsEmpty() && ! mbIsPaused) + // Never process more than one request at a time in order to prevent the + // lock up of the edit view. + if ( ! mrQueue.IsEmpty() + && ! mbIsPaused + && mpCacheContext->IsIdle()) { - if ( ! mpCacheContext->IsIdle()) - break; - CacheKey aKey = NULL; RequestPriorityClass ePriorityClass (NOT_VISIBLE); { @@ -182,25 +183,12 @@ void QueueProcessor::ProcessRequests (void) if (aKey != NULL) ProcessOneRequest(aKey, ePriorityClass); - - // Requests of lower priority are processed one at a time. - { - ::osl::MutexGuard aGuard (mrQueue.GetMutex()); - if ( ! mrQueue.IsEmpty()) - if (mrQueue.GetFrontPriorityClass() > 0) - break; - } } // Schedule the processing of the next element(s). { ::osl::MutexGuard aGuard (mrQueue.GetMutex()); if ( ! mrQueue.IsEmpty()) - /* - if (bIsShowingFullScreenShow) - Start(mnTimeBetweenRequestsWhenNotIdle); - else - */ Start(mrQueue.GetFrontPriorityClass()); } } diff --git a/sd/source/ui/slidesorter/controller/SlideSorterController.cxx b/sd/source/ui/slidesorter/controller/SlideSorterController.cxx index f355ada7089f..5303b9dc6426 100644 --- a/sd/source/ui/slidesorter/controller/SlideSorterController.cxx +++ b/sd/source/ui/slidesorter/controller/SlideSorterController.cxx @@ -604,7 +604,7 @@ IMPL_LINK(SlideSorterController, WindowEventHandler, VclWindowEvent*, pEvent) case VCLEVENT_WINDOW_GETFOCUS: if (pActiveWindow != NULL && pWindow == pActiveWindow) - GetFocusManager().ShowFocus(); + GetFocusManager().ShowFocus(false); break; case VCLEVENT_WINDOW_LOSEFOCUS: diff --git a/sd/source/ui/slidesorter/controller/SlsFocusManager.cxx b/sd/source/ui/slidesorter/controller/SlsFocusManager.cxx index 009a24910d5a..1077184b7db7 100644 --- a/sd/source/ui/slidesorter/controller/SlsFocusManager.cxx +++ b/sd/source/ui/slidesorter/controller/SlsFocusManager.cxx @@ -133,17 +133,17 @@ void FocusManager::MoveFocus (FocusMoveDirection eDirection) } if (mbPageIsFocused) - ShowFocusIndicator(GetFocusedPageDescriptor()); + ShowFocusIndicator(GetFocusedPageDescriptor(), true); } } -void FocusManager::ShowFocus (void) +void FocusManager::ShowFocus (const bool bScrollToFocus) { mbPageIsFocused = true; - ShowFocusIndicator(GetFocusedPageDescriptor()); + ShowFocusIndicator(GetFocusedPageDescriptor(), bScrollToFocus); } @@ -254,20 +254,25 @@ void FocusManager::HideFocusIndicator (const model::SharedPageDescriptor& rpDesc -void FocusManager::ShowFocusIndicator (const model::SharedPageDescriptor& rpDescriptor) +void FocusManager::ShowFocusIndicator ( + const model::SharedPageDescriptor& rpDescriptor, + const bool bScrollToFocus) { if (rpDescriptor.get() != NULL) { rpDescriptor->SetFocus (); - // Scroll the focused page object into the visible area and repaint - // it, so that the focus indicator becomes visible. - view::SlideSorterView& rView (mrSlideSorter.GetView()); - mrSlideSorter.GetController().GetSelectionManager()->MakeRectangleVisible ( - rView.GetPageBoundingBox ( - GetFocusedPageDescriptor(), - view::SlideSorterView::CS_MODEL, - view::SlideSorterView::BBT_INFO)); + if (bScrollToFocus) + { + // Scroll the focused page object into the visible area and repaint + // it, so that the focus indicator becomes visible. + view::SlideSorterView& rView (mrSlideSorter.GetView()); + mrSlideSorter.GetController().GetSelectionManager()->MakeRectangleVisible ( + rView.GetPageBoundingBox ( + GetFocusedPageDescriptor(), + view::SlideSorterView::CS_MODEL, + view::SlideSorterView::BBT_INFO)); + } mrSlideSorter.GetView().RequestRepaint (rpDescriptor); NotifyFocusChangeListeners(); diff --git a/sd/source/ui/slidesorter/controller/SlsListener.hxx b/sd/source/ui/slidesorter/controller/SlsListener.hxx index f91c7337713a..6ace8ebdd370 100644 --- a/sd/source/ui/slidesorter/controller/SlsListener.hxx +++ b/sd/source/ui/slidesorter/controller/SlsListener.hxx @@ -43,7 +43,7 @@ #include <com/sun/star/frame/XFrameActionListener.hpp> #include <cppuhelper/compbase4.hxx> -#include <svtools/lstner.hxx> +#include <svl/lstner.hxx> #include <tools/link.hxx> #include <boost/shared_ptr.hpp> diff --git a/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx b/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx index ba8dbb278ca4..4aa35f91292f 100644 --- a/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx +++ b/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx @@ -88,10 +88,10 @@ #include <svx/svxdlg.hxx> #include <svx/dialogs.hrc> #include <vcl/msgbox.hxx> -#include <svtools/intitem.hxx> -#include <svtools/whiter.hxx> -#include <svtools/itempool.hxx> -#include <svtools/aeitem.hxx> +#include <svl/intitem.hxx> +#include <svl/whiter.hxx> +#include <svl/itempool.hxx> +#include <svl/aeitem.hxx> #include <com/sun/star/presentation/FadeEffect.hpp> #include <com/sun/star/drawing/XMasterPagesSupplier.hpp> #include <com/sun/star/drawing/XDrawPages.hpp> @@ -905,7 +905,7 @@ void SlotManager::RenameSlide (void) DBG_ASSERT(pFact, "Dialogdiet fail!"); AbstractSvxNameDialog* aNameDlg = pFact->CreateSvxNameDialog( mrSlideSorter.GetActiveWindow(), - aPageName, aDescr, RID_SVXDLG_NAME); + aPageName, aDescr); DBG_ASSERT(aNameDlg, "Dialogdiet fail!"); aNameDlg->SetText( aTitle ); aNameDlg->SetCheckNameHdl( LINK( this, SlotManager, RenameSlideHdl ), true ); @@ -1085,6 +1085,14 @@ void SlotManager::InsertSlide (SfxRequest& rRequest) rSelector.SelectPage (nInsertionIndex); } + // Is there a stored insertion position? + else if (mrSlideSorter.GetController().GetSelectionManager()->GetInsertionPosition() >= 0) + { + nInsertionIndex + = mrSlideSorter.GetController().GetSelectionManager()->GetInsertionPosition() - 1; + rSelector.SelectPage(nInsertionIndex); + } + // Select the last page when there is at least one page. else if (rSelector.GetPageCount() > 0) { diff --git a/sd/source/ui/slidesorter/inc/controller/SlsFocusManager.hxx b/sd/source/ui/slidesorter/inc/controller/SlsFocusManager.hxx index 00678c83058d..4384e1a66d9d 100644 --- a/sd/source/ui/slidesorter/inc/controller/SlsFocusManager.hxx +++ b/sd/source/ui/slidesorter/inc/controller/SlsFocusManager.hxx @@ -87,8 +87,11 @@ public: void MoveFocus (FocusMoveDirection eDirection); /** Show the focus indicator of the current slide. + @param bScrollToFocus + When <TRUE/> (the default) then the view is scrolled so that the + focus rectangle lies inside its visible area. */ - void ShowFocus (void); + void ShowFocus (const bool bScrollToFocus = true); /** Hide the focus indicator. */ @@ -215,8 +218,13 @@ private: made visible. @param pDescriptor When NULL is given then the call is ignored. + @param bScrollToFocus + When <TRUE/> (the default) then the view is scrolled so that the + focus rectangle lies inside its visible area. */ - void ShowFocusIndicator (const model::SharedPageDescriptor& rpDescriptor); + void ShowFocusIndicator ( + const model::SharedPageDescriptor& rpDescriptor, + const bool bScrollToFocus); /** Call all currently registered listeners that a focus change has happended. The focus may be hidden or shown or moved from one page diff --git a/sd/source/ui/slidesorter/view/SlideSorterView.cxx b/sd/source/ui/slidesorter/view/SlideSorterView.cxx index 3cd696e4bb26..e877b41d3738 100644 --- a/sd/source/ui/slidesorter/view/SlideSorterView.cxx +++ b/sd/source/ui/slidesorter/view/SlideSorterView.cxx @@ -60,7 +60,7 @@ #include "sdresid.hxx" #include "glob.hrc" -#include <svtools/itempool.hxx> +#include <svl/itempool.hxx> #include <svx/svdpagv.hxx> #include <svx/svdopage.hxx> #include <svx/xlndsit.hxx> @@ -72,10 +72,10 @@ #include <algorithm> #include <svx/sdr/contact/objectcontact.hxx> #include <svx/sdrpagewindow.hxx> -#include <svtools/itempool.hxx> +#include <svl/itempool.hxx> #ifndef _SFXITEMPOOL_HXX -#include <svtools/itempool.hxx> +#include <svl/itempool.hxx> #endif using namespace std; diff --git a/sd/source/ui/table/TableDesignPane.cxx b/sd/source/ui/table/TableDesignPane.cxx index 11cfdbb65ef0..9ab5a4a175d5 100644 --- a/sd/source/ui/table/TableDesignPane.cxx +++ b/sd/source/ui/table/TableDesignPane.cxx @@ -50,7 +50,7 @@ #include <vcl/bmpacc.hxx> //#include <vcl/toolbox.hxx> -#include <svtools/style.hxx> +#include <svl/style.hxx> #include <sfx2/viewfrm.hxx> #include <sfx2/bindings.hxx> @@ -457,6 +457,10 @@ void TableDesignPane::updateLayout() Point aPos( pValueSet->GetPosPixel() ); + // The following line may look like a no-op but without it the + // control is placed off-screen when RTL is active. + pValueSet->SetPosPixel(pValueSet->GetPosPixel()); + // shift show options section down const long nOptionsPos = aPos.Y() + aValueSetSize.Height(); for( sal_Int32 nId = FL_STYLE_OPTIONS; nId <= CB_BANDED_COLUMNS; ++nId ) diff --git a/sd/source/ui/table/tablefunction.cxx b/sd/source/ui/table/tablefunction.cxx index e2f923424831..1d1d38df82bf 100644 --- a/sd/source/ui/table/tablefunction.cxx +++ b/sd/source/ui/table/tablefunction.cxx @@ -57,12 +57,12 @@ #include <svx/svxdlg.hxx> #include <vcl/msgbox.hxx> -#include <svtools/itempool.hxx> +#include <svl/itempool.hxx> #include <sfx2/viewfrm.hxx> #include <sfx2/dispatch.hxx> #include <sfx2/bindings.hxx> #include <sfx2/request.hxx> -#include <svtools/style.hxx> +#include <svl/style.hxx> #include "framework/FrameworkHelper.hxx" #include "app.hrc" diff --git a/sd/source/ui/table/tableobjectbar.cxx b/sd/source/ui/table/tableobjectbar.cxx index 2eaf13ea470f..abae004cb73a 100644 --- a/sd/source/ui/table/tableobjectbar.cxx +++ b/sd/source/ui/table/tableobjectbar.cxx @@ -39,8 +39,8 @@ #include <sfx2/viewfrm.hxx> #include <sfx2/dispatch.hxx> -#include <svtools/whiter.hxx> -#include <svtools/itempool.hxx> +#include <svl/whiter.hxx> +#include <svl/itempool.hxx> #include <svx/svdomedia.hxx> #include <svx/sdr/contact/viewcontactofsdrmediaobj.hxx> #include <svx/svxdlg.hxx> diff --git a/sd/source/ui/toolpanel/LayoutMenu.cxx b/sd/source/ui/toolpanel/LayoutMenu.cxx index 7a39f1c42f15..b78042e2e9ae 100644 --- a/sd/source/ui/toolpanel/LayoutMenu.cxx +++ b/sd/source/ui/toolpanel/LayoutMenu.cxx @@ -61,9 +61,9 @@ #include <sfx2/objface.hxx> #include "sdresid.hxx" #include <vcl/image.hxx> -#include <svtools/languageoptions.hxx> +#include <svl/languageoptions.hxx> #include <sfx2/app.hxx> -#include "taskpane/TitledControl.hxx"
+#include "taskpane/TitledControl.hxx" #include <sfx2/dispatch.hxx> #include <sfx2/request.hxx> #include <comphelper/processfactory.hxx> @@ -808,7 +808,7 @@ SfxRequest LayoutMenu::CreateRequest ( void LayoutMenu::Fill (void) { - const bool bHighContrast = GetDisplayBackground().GetColor().IsDark() != 0; + const bool bHighContrast = GetSettings().GetStyleSettings().GetHighContrastMode(); SvtLanguageOptions aLanguageOptions; sal_Bool bVertical = aLanguageOptions.IsVerticalTextEnabled(); SdDrawDocument* pDocument = mrBase.GetDocument(); @@ -917,8 +917,13 @@ void LayoutMenu::Command (const CommandEvent& rEvent) if (GetShellManager() != NULL) GetShellManager()->MoveToTop(this); if (rEvent.IsMouseEvent()) - mrBase.GetViewFrame()->GetDispatcher()->ExecutePopup( - SdResId(RID_TASKPANE_LAYOUTMENU_POPUP)); + { + // Do not show the context menu when the mouse was not + // pressed over an item. + if (GetItemId(rEvent.GetMousePosPixel()) > 0) + mrBase.GetViewFrame()->GetDispatcher()->ExecutePopup( + SdResId(RID_TASKPANE_LAYOUTMENU_POPUP)); + } else { // When the command event was not caused by a mouse diff --git a/sd/source/ui/toolpanel/TitleBar.cxx b/sd/source/ui/toolpanel/TitleBar.cxx index c4dd6537c9ce..c0e605cac79e 100644 --- a/sd/source/ui/toolpanel/TitleBar.cxx +++ b/sd/source/ui/toolpanel/TitleBar.cxx @@ -47,7 +47,7 @@ #include <vcl/bitmapex.hxx> #include <tools/color.hxx> #include <svx/xdash.hxx> -#include <svtools/itemset.hxx> +#include <svl/itemset.hxx> #include <svx/xlndsit.hxx> #include <svx/xlineit0.hxx> #include <svx/svdobj.hxx> diff --git a/sd/source/ui/toolpanel/TitleToolBox.cxx b/sd/source/ui/toolpanel/TitleToolBox.cxx index b06ab615cbf2..d108724f03d4 100644 --- a/sd/source/ui/toolpanel/TitleToolBox.cxx +++ b/sd/source/ui/toolpanel/TitleToolBox.cxx @@ -77,7 +77,7 @@ void TitleToolBox::AddItem (ToolBoxId aId) case TBID_DOCUMENT_CLOSE: InsertItem (TBID_DOCUMENT_CLOSE, - GetSettings().GetStyleSettings().GetMenuBarColor().IsDark() + GetSettings().GetStyleSettings().GetHighContrastMode() ? maImageHC : maImage, 0 ); break; diff --git a/sd/source/ui/toolpanel/controls/MasterPageContainer.cxx b/sd/source/ui/toolpanel/controls/MasterPageContainer.cxx index 03795e0e2d71..f78bbdfa0308 100644 --- a/sd/source/ui/toolpanel/controls/MasterPageContainer.cxx +++ b/sd/source/ui/toolpanel/controls/MasterPageContainer.cxx @@ -60,8 +60,8 @@ #include "DrawDocShell.hxx" #include "drawdoc.hxx" #include "sdpage.hxx" -#include <svtools/itemset.hxx> -#include <svtools/eitem.hxx> +#include <svl/itemset.hxx> +#include <svl/eitem.hxx> #include "sdresid.hxx" #include "tools/TimerBasedTaskExecution.hxx" #include "pres.hxx" diff --git a/sd/source/ui/toolpanel/controls/MasterPageObserver.cxx b/sd/source/ui/toolpanel/controls/MasterPageObserver.cxx index 7e0c3b2887c0..cf0992596c64 100644 --- a/sd/source/ui/toolpanel/controls/MasterPageObserver.cxx +++ b/sd/source/ui/toolpanel/controls/MasterPageObserver.cxx @@ -39,7 +39,7 @@ #include <hash_map> #include <set> #include <vector> -#include <svtools/lstner.hxx> +#include <svl/lstner.hxx> #include <osl/doublecheckedlocking.h> #include <osl/getglobalmutex.hxx> diff --git a/sd/source/ui/toolpanel/controls/MasterPagesSelector.cxx b/sd/source/ui/toolpanel/controls/MasterPagesSelector.cxx index 9356dac3f7f9..9b419c9924ec 100644 --- a/sd/source/ui/toolpanel/controls/MasterPagesSelector.cxx +++ b/sd/source/ui/toolpanel/controls/MasterPagesSelector.cxx @@ -62,12 +62,12 @@ #include "drawview.hxx" #endif #include <vcl/image.hxx> -#include <svtools/languageoptions.hxx> +#include <svl/languageoptions.hxx> #include <sfx2/app.hxx> #include <sfx2/dispatch.hxx> #include <sfx2/mnumgr.hxx> -#include <svtools/itemset.hxx> -#include <svtools/eitem.hxx> +#include <svl/itemset.hxx> +#include <svl/eitem.hxx> #include <svx/dlgutil.hxx> #include <svx/svdpagv.hxx> #include <svx/svxids.hrc> @@ -76,7 +76,7 @@ #include "stlpool.hxx" #include "unmovss.hxx" #include <sfx2/request.hxx> -#include <svtools/itempool.hxx> +#include <svl/itempool.hxx> using namespace ::sd::toolpanel::controls; #define MasterPagesSelector diff --git a/sd/source/ui/unoidl/sddetect.cxx b/sd/source/ui/unoidl/sddetect.cxx index 71000d263cd7..a59b63a3df10 100644 --- a/sd/source/ui/unoidl/sddetect.cxx +++ b/sd/source/ui/unoidl/sddetect.cxx @@ -63,10 +63,10 @@ #include <rtl/ustring.h> #include <rtl/logfile.hxx> -#include <svtools/itemset.hxx> +#include <svl/itemset.hxx> #include <vcl/window.hxx> -#include <svtools/eitem.hxx> -#include <svtools/stritem.hxx> +#include <svl/eitem.hxx> +#include <svl/stritem.hxx> #include <tools/urlobj.hxx> #include <vos/mutex.hxx> #include <svtools/sfxecode.hxx> @@ -83,7 +83,7 @@ #include <svx/impgrf.hxx> #include <svtools/FilterConfigItem.hxx> #include <sot/storage.hxx> -#include <svtools/moduleoptions.hxx> +#include <unotools/moduleoptions.hxx> #include <com/sun/star/util/XArchiver.hpp> #include <comphelper/processfactory.hxx> diff --git a/sd/source/ui/unoidl/unoobj.cxx b/sd/source/ui/unoidl/unoobj.cxx index a1a8a4f4dabb..5fedbcd717b3 100644 --- a/sd/source/ui/unoidl/unoobj.cxx +++ b/sd/source/ui/unoidl/unoobj.cxx @@ -40,8 +40,8 @@ #include <rtl/ustrbuf.hxx> #include <comphelper/stl_types.hxx> #include <vos/mutex.hxx> -#include <svtools/itemprop.hxx> -#include <svtools/style.hxx> +#include <svl/itemprop.hxx> +#include <svl/style.hxx> #include <sfx2/viewfrm.hxx> #include <sfx2/app.hxx> diff --git a/sd/source/ui/unoidl/unopage.cxx b/sd/source/ui/unoidl/unopage.cxx index e3285e083817..685bb4a48144 100644 --- a/sd/source/ui/unoidl/unopage.cxx +++ b/sd/source/ui/unoidl/unopage.cxx @@ -54,7 +54,7 @@ #ifndef _SVX_SVXIDS_HRC #include <svx/svxids.hrc> #endif -#include <svtools/itemset.hxx> +#include <svl/itemset.hxx> #include <svx/svdmodel.hxx> #include <sdresid.hxx> #include <glob.hrc> @@ -68,7 +68,7 @@ #include <com/sun/star/style/XStyle.hpp> #include <svx/svdorect.hxx> #include <vos/mutex.hxx> -#include <svtools/style.hxx> +#include <svl/style.hxx> #include <rtl/uuid.h> #include <rtl/memory.h> @@ -1029,7 +1029,7 @@ Any SAL_CALL SdGenericDrawPage::getPropertyValue( const OUString& PropertyName ) } case WID_PAGE_LDBITMAP: { - BOOL bHC = Application::GetSettings().GetStyleSettings().GetWindowColor().IsDark(); + BOOL bHC = Application::GetSettings().GetStyleSettings().GetHighContrastMode(); Reference< awt::XBitmap > xBitmap( VCLUnoHelper::CreateBitmap( BitmapEx( SdResId( bHC ? BMP_PAGE_H : BMP_PAGE ) ) ) ); aAny <<= xBitmap; diff --git a/sd/source/ui/unoidl/unopage.hxx b/sd/source/ui/unoidl/unopage.hxx index a1d9e0436e98..5d4c76bd9e82 100644 --- a/sd/source/ui/unoidl/unopage.hxx +++ b/sd/source/ui/unoidl/unopage.hxx @@ -39,7 +39,7 @@ #include <com/sun/star/beans/XMultiPropertySet.hpp> #include <com/sun/star/office/XAnnotationAccess.hpp> -#include <svtools/itemprop.hxx> +#include <svl/itemprop.hxx> #ifndef _SVX_UNOPAGE_HXX #include <svx/unopage.hxx> diff --git a/sd/source/ui/unoidl/unopback.cxx b/sd/source/ui/unoidl/unopback.cxx index 0808221582f1..5150afb2d10f 100644 --- a/sd/source/ui/unoidl/unopback.cxx +++ b/sd/source/ui/unoidl/unopback.cxx @@ -33,7 +33,7 @@ #include <com/sun/star/drawing/BitmapMode.hpp> #include <vos/mutex.hxx> #include <vcl/svapp.hxx> -#include <svtools/itemset.hxx> +#include <svl/itemset.hxx> #include <comphelper/extract.hxx> #include <rtl/uuid.h> diff --git a/sd/source/ui/view/GraphicObjectBar.cxx b/sd/source/ui/view/GraphicObjectBar.cxx index 9e34bc4e3f39..32f5de8594ba 100644 --- a/sd/source/ui/view/GraphicObjectBar.cxx +++ b/sd/source/ui/view/GraphicObjectBar.cxx @@ -35,8 +35,8 @@ #include <limits.h> #include <vcl/msgbox.hxx> -#include <svtools/whiter.hxx> -#include <svtools/itempool.hxx> +#include <svl/whiter.hxx> +#include <svl/itempool.hxx> #include <sfx2/app.hxx> #include <sfx2/shell.hxx> #include <svx/svxids.hrc> @@ -44,7 +44,7 @@ #include <sfx2/basedlgs.hxx> #include <svx/svdograf.hxx> #include <svx/grfflt.hxx> -#include <svtools/aeitem.hxx> +#include <svl/aeitem.hxx> #include <svx/grafctrl.hxx> diff --git a/sd/source/ui/view/MediaObjectBar.cxx b/sd/source/ui/view/MediaObjectBar.cxx index c05c55c0d6de..510d4a6fccca 100644 --- a/sd/source/ui/view/MediaObjectBar.cxx +++ b/sd/source/ui/view/MediaObjectBar.cxx @@ -38,8 +38,8 @@ #include <sfx2/sfxsids.hrc> #include <sfx2/request.hxx> #include <sfx2/objface.hxx> -#include <svtools/whiter.hxx> -#include <svtools/itempool.hxx> +#include <svl/whiter.hxx> +#include <svl/itempool.hxx> #include <svx/svdomedia.hxx> #include <svx/sdr/contact/viewcontactofsdrmediaobj.hxx> diff --git a/sd/source/ui/view/Outliner.cxx b/sd/source/ui/view/Outliner.cxx index 233976585e58..a672ce978233 100644 --- a/sd/source/ui/view/Outliner.cxx +++ b/sd/source/ui/view/Outliner.cxx @@ -56,8 +56,8 @@ #include <svx/eeitem.hxx> #include <svx/forbiddencharacterstable.hxx> #include <svx/srchdlg.hxx> -#include <svtools/linguprops.hxx> -#include <svtools/lingucfg.hxx> +#include <unotools/linguprops.hxx> +#include <unotools/lingucfg.hxx> #include <svx/editeng.hxx> #include <vcl/metric.hxx> #include <sfx2/viewfrm.hxx> @@ -334,6 +334,9 @@ void Outliner::EndSpelling (void) { if (mbViewShellValid) { + // Keep old view shell alive until we release the outliner view. + ::boost::shared_ptr<ViewShell> pOldViewShell (mpViewShell); + ViewShellBase* pBase = PTR_CAST(ViewShellBase,SfxViewShell::Current()); if (pBase != NULL) mpViewShell = pBase->GetMainViewShell(); diff --git a/sd/source/ui/view/PrintManager.cxx b/sd/source/ui/view/PrintManager.cxx index 04e8df44385c..6d24fdf98e79 100644 --- a/sd/source/ui/view/PrintManager.cxx +++ b/sd/source/ui/view/PrintManager.cxx @@ -53,7 +53,7 @@ #include <sfx2/progress.hxx> #include <svtools/printdlg.hxx> #include <tools/multisel.hxx> -#include <svtools/misccfg.hxx> +#include <unotools/misccfg.hxx> #include <unotools/localedatawrapper.hxx> #include <svx/prtqry.hxx> #include "WindowUpdater.hxx" @@ -72,7 +72,7 @@ #include "printdlg.hrc" #include "prntopts.hrc" #include "app.hrc" -#include <svtools/intitem.hxx> +#include <svl/intitem.hxx> #include <svx/paperinf.hxx> #include <svx/xlnclit.hxx> #include "printdialog.hxx" @@ -369,7 +369,7 @@ USHORT PrintManager::Print (SfxProgress& rProgress, BOOL bIsAPI, PrintDialog* p if( pPrintOpts ) { - SfxMiscCfg* pMisc = SFX_APP()->GetMiscConfig(); + ::utl::MiscCfg aMisc; if( pPrintOpts->GetOptionsPrint().IsDate() ) { @@ -399,9 +399,9 @@ USHORT PrintManager::Print (SfxProgress& rProgress, BOOL bIsAPI, PrintDialog* p ePageKind = PK_NOTES; } - pPrintOpts->GetOptionsPrint().SetWarningPrinter( pMisc->IsNotFoundWarning() ); - pPrintOpts->GetOptionsPrint().SetWarningSize( pMisc->IsPaperSizeWarning() ); - pPrintOpts->GetOptionsPrint().SetWarningOrientation( pMisc->IsPaperOrientationWarning() ); + pPrintOpts->GetOptionsPrint().SetWarningPrinter( aMisc.IsNotFoundWarning() ); + pPrintOpts->GetOptionsPrint().SetWarningSize( aMisc.IsPaperSizeWarning() ); + pPrintOpts->GetOptionsPrint().SetWarningOrientation( aMisc.IsPaperOrientationWarning() ); UINT16 nQuality = pPrintOpts->GetOptionsPrint().GetOutputQuality(); ULONG nMode = DRAWMODE_DEFAULT; diff --git a/sd/source/ui/view/ToolBarManager.cxx b/sd/source/ui/view/ToolBarManager.cxx index 286132c304c0..487794816270 100644 --- a/sd/source/ui/view/ToolBarManager.cxx +++ b/sd/source/ui/view/ToolBarManager.cxx @@ -49,7 +49,7 @@ #include <sfx2/objsh.hxx> #include <sfx2/request.hxx> #include <sfx2/viewfrm.hxx> -#include <svtools/eitem.hxx> +#include <svl/eitem.hxx> #include <svx/dialogs.hrc> #include <svx/extrusionbar.hxx> #include <svx/fontworkbar.hxx> diff --git a/sd/source/ui/view/ViewShellBase.cxx b/sd/source/ui/view/ViewShellBase.cxx index 25fca9e0bae7..3e0f6297f8d6 100644 --- a/sd/source/ui/view/ViewShellBase.cxx +++ b/sd/source/ui/view/ViewShellBase.cxx @@ -31,6 +31,13 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sd.hxx" +#include <comphelper/processfactory.hxx> + +#include <com/sun/star/frame/UnknownModuleException.hpp>
+#include <com/sun/star/frame/XModuleManager.hpp>
+#include <com/sun/star/container/XNameAccess.hpp> +#include <com/sun/star/beans/PropertyValue.hpp> + #include "ViewShellBase.hxx" #include <algorithm> #include "EventMultiplexer.hxx" @@ -83,7 +90,7 @@ #include <sfx2/msg.hxx> #include <sfx2/objface.hxx> #include <sfx2/viewfrm.hxx> -#include <svtools/whiter.hxx> +#include <svl/whiter.hxx> #include <comphelper/processfactory.hxx> #include "fubullet.hxx" @@ -94,6 +101,11 @@ using namespace sd; using ::sd::framework::FrameworkHelper; using ::rtl::OUString; +using namespace com::sun::star::uno; +using namespace com::sun::star::frame; +using namespace com::sun::star::container; +using namespace com::sun::star::lang; +using namespace com::sun::star::beans; namespace { @@ -1210,6 +1222,47 @@ CustomHandleManager& ViewShellBase::getCustomHandleManager() const return *mpImpl->mpCustomHandleManager.get(); } +::rtl::OUString ViewShellBase::RetrieveLabelFromCommand( const ::rtl::OUString& aCmdURL ) const
+{
+ ::rtl::OUString aLabel;
+ + if ( aCmdURL.getLength() > 0 ) try
+ {
+ Reference< XMultiServiceFactory > xServiceManager( ::comphelper::getProcessServiceFactory(), UNO_QUERY_THROW ); +
+ Reference< XModuleManager > xModuleManager( xServiceManager->createInstance( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.ModuleManager") ) ), UNO_QUERY_THROW ); + Reference< XInterface > xIfac( GetMainViewShell()->GetViewFrame()->GetFrame()->GetFrameInterface(), UNO_QUERY_THROW ); +
+ ::rtl::OUString aModuleIdentifier( xModuleManager->identify( xIfac ) );
+
+ if( aModuleIdentifier.getLength() > 0 )
+ {
+ Reference< XNameAccess > xNameAccess( xServiceManager->createInstance( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.UICommandDescription" ) ) ), UNO_QUERY );
+ if( xNameAccess.is() )
+ {
+ Reference< ::com::sun::star::container::XNameAccess > m_xUICommandLabels( xNameAccess->getByName( aModuleIdentifier ), UNO_QUERY_THROW );
+ Sequence< PropertyValue > aPropSeq;
+ if( m_xUICommandLabels->getByName( aCmdURL ) >>= aPropSeq )
+ {
+ for( sal_Int32 i = 0; i < aPropSeq.getLength(); i++ )
+ {
+ if( aPropSeq[i].Name.equalsAscii( "Name" ))
+ {
+ aPropSeq[i].Value >>= aLabel;
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ catch ( Exception& )
+ {
+ }
+
+ return aLabel;
+}
+ //===== ViewShellBase::Implementation ========================================= diff --git a/sd/source/ui/view/ViewShellImplementation.cxx b/sd/source/ui/view/ViewShellImplementation.cxx index 3afef14deeed..75b728c7849b 100644 --- a/sd/source/ui/view/ViewShellImplementation.cxx +++ b/sd/source/ui/view/ViewShellImplementation.cxx @@ -60,7 +60,7 @@ #include <sfx2/bindings.hxx> #include <sfx2/dispatch.hxx> #include <sfx2/request.hxx> -#include <svtools/aeitem.hxx> +#include <svl/aeitem.hxx> #include <svx/imapdlg.hxx> #include <vcl/msgbox.hxx> #include <basic/sbstar.hxx> diff --git a/sd/source/ui/view/WindowUpdater.cxx b/sd/source/ui/view/WindowUpdater.cxx index 64e93aee785e..135c6974f64e 100644 --- a/sd/source/ui/view/WindowUpdater.cxx +++ b/sd/source/ui/view/WindowUpdater.cxx @@ -42,7 +42,7 @@ #endif #include <sfx2/childwin.hxx> #include <sfx2/viewfrm.hxx> -#include <svtools/smplhint.hxx> +#include <svl/smplhint.hxx> #include <algorithm> @@ -52,7 +52,7 @@ WindowUpdater::WindowUpdater (void) : mpViewShell (NULL), mpDocument (NULL) { - StartListening (maCTLOptions); + maCTLOptions.AddListener(this); } @@ -60,7 +60,7 @@ WindowUpdater::WindowUpdater (void) WindowUpdater::~WindowUpdater (void) throw () { - EndListening (maCTLOptions); + maCTLOptions.RemoveListener(this); } @@ -163,33 +163,29 @@ void WindowUpdater::UpdateWindow (OutputDevice* pDevice) const -void WindowUpdater::Notify (SfxBroadcaster&, const SfxHint& rHint) +void WindowUpdater::ConfigurationChanged( utl::ConfigurationBroadcaster*, sal_uInt32 ) { - const SfxSimpleHint& rSimpleHint = static_cast<const SfxSimpleHint&>(rHint); - if (rSimpleHint.GetId() == SFX_HINT_CTL_SETTINGS_CHANGED) - { - // #110094#-7 - // Clear the master page cache so that master pages will be redrawn. - //if (mpViewShell != NULL) - //{ - // SdView* pView = mpViewShell->GetView(); - // if (pView != NULL) - // pView->ReleaseMasterPagePaintCache (); - //} - // Set the current state at all registered output devices. - tWindowList::iterator aWindowIterator (maWindowList.begin()); - while (aWindowIterator != maWindowList.end()) - Update (*aWindowIterator++); - - // Reformat the document for the modified state to take effect. - if (mpDocument != NULL) - mpDocument->ReformatAllTextObjects(); - - // Invalidate the windows to make the modified state visible. - aWindowIterator = maWindowList.begin(); - while (aWindowIterator != maWindowList.end()) - (*aWindowIterator++)->Invalidate(); - } + // #110094#-7 + // Clear the master page cache so that master pages will be redrawn. + //if (mpViewShell != NULL) + //{ + // SdView* pView = mpViewShell->GetView(); + // if (pView != NULL) + // pView->ReleaseMasterPagePaintCache (); + //} + // Set the current state at all registered output devices. + tWindowList::iterator aWindowIterator (maWindowList.begin()); + while (aWindowIterator != maWindowList.end()) + Update (*aWindowIterator++); + + // Reformat the document for the modified state to take effect. + if (mpDocument != NULL) + mpDocument->ReformatAllTextObjects(); + + // Invalidate the windows to make the modified state visible. + aWindowIterator = maWindowList.begin(); + while (aWindowIterator != maWindowList.end()) + (*aWindowIterator++)->Invalidate(); } diff --git a/sd/source/ui/view/drawview.cxx b/sd/source/ui/view/drawview.cxx index 45a22dd9f56b..dfbd76e4a3b6 100644 --- a/sd/source/ui/view/drawview.cxx +++ b/sd/source/ui/view/drawview.cxx @@ -36,7 +36,7 @@ #endif #include <svx/svdpagv.hxx> #include <sfx2/request.hxx> -#include <svtools/style.hxx> +#include <svl/style.hxx> #include <svx/outliner.hxx> #ifndef _VIEW3D_HXX //autogen #include <svx/view3d.hxx> @@ -48,12 +48,12 @@ #include <svx/svdograf.hxx> #include <svx/svdogrp.hxx> #include <svx/svdorect.hxx> -#include <svtools/poolitem.hxx> +#include <svl/poolitem.hxx> #include <svx/eeitem.hxx> #include <svx/bulitem.hxx> -#include <svtools/itempool.hxx> +#include <svl/itempool.hxx> #include <svx/numitem.hxx> -#include <svtools/whiter.hxx> +#include <svl/whiter.hxx> #include <sfx2/viewfrm.hxx> #include <sfx2/objface.hxx> diff --git a/sd/source/ui/view/drbezob.cxx b/sd/source/ui/view/drbezob.cxx index a638af2638c3..463c7415e853 100644 --- a/sd/source/ui/view/drbezob.cxx +++ b/sd/source/ui/view/drbezob.cxx @@ -39,10 +39,10 @@ #include <sfx2/objface.hxx> #include <svx/svxids.hrc> -#include <svtools/eitem.hxx> +#include <svl/eitem.hxx> #include <sfx2/request.hxx> #include <svx/svdopath.hxx> -#include <svtools/aeitem.hxx> +#include <svl/aeitem.hxx> #include <svx/svdundo.hxx> #include <sfx2/dispatch.hxx> diff --git a/sd/source/ui/view/drtxtob.cxx b/sd/source/ui/view/drtxtob.cxx index 55980ff02050..5a2b458341c9 100644 --- a/sd/source/ui/view/drtxtob.cxx +++ b/sd/source/ui/view/drtxtob.cxx @@ -39,14 +39,14 @@ #include <svx/adjitem.hxx> #include <vcl/vclenum.hxx> #include <sfx2/app.hxx> -#include <svtools/whiter.hxx> -#include <svtools/itempool.hxx> -#include <svtools/style.hxx> -#include <svtools/languageoptions.hxx> +#include <svl/whiter.hxx> +#include <svl/itempool.hxx> +#include <svl/style.hxx> +#include <svl/languageoptions.hxx> #include <sfx2/tplpitem.hxx> #include <svx/escpitem.hxx> #include <svx/svdoutl.hxx> -#include <svtools/intitem.hxx> +#include <svl/intitem.hxx> #include <svx/scripttypeitem.hxx> #include <svx/outlobj.hxx> #include <svx/writingmodeitem.hxx> diff --git a/sd/source/ui/view/drtxtob1.cxx b/sd/source/ui/view/drtxtob1.cxx index 9c2733c933dd..2a29ecbc6d6c 100644 --- a/sd/source/ui/view/drtxtob1.cxx +++ b/sd/source/ui/view/drtxtob1.cxx @@ -46,9 +46,9 @@ #endif #include <vcl/vclenum.hxx> #include <sfx2/app.hxx> -#include <svtools/whiter.hxx> -#include <svtools/itempool.hxx> -#include <svtools/style.hxx> +#include <svl/whiter.hxx> +#include <svl/itempool.hxx> +#include <svl/style.hxx> #include <sfx2/tplpitem.hxx> #include <sfx2/request.hxx> #include <sfx2/viewfrm.hxx> @@ -65,14 +65,14 @@ #include <svx/outlobj.hxx> #include <svx/flstitem.hxx> #include <svx/editeng.hxx> -#include <svtools/intitem.hxx> +#include <svl/intitem.hxx> #ifndef _SVX_SRIPTTYPEITEM_HXX //autogen #include <svx/scripttypeitem.hxx> #endif #include <svx/svdoutl.hxx> #include <svx/writingmodeitem.hxx> #include <svx/frmdiritem.hxx> -#include <svtools/itemiter.hxx> +#include <svl/itemiter.hxx> #include "app.hrc" diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx index 27d5f6202369..12b81a01d3ba 100644 --- a/sd/source/ui/view/drviews2.cxx +++ b/sd/source/ui/view/drviews2.cxx @@ -52,7 +52,7 @@ #include <sfx2/dispatch.hxx> #include <svx/xfillit0.hxx> #include <svx/xflclit.hxx> -#include <svtools/aeitem.hxx> +#include <svl/aeitem.hxx> #include <svx/eeitem.hxx> #include <basic/sbstar.hxx> #include <svx/flditem.hxx> @@ -467,7 +467,7 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq) SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); DBG_ASSERT(pFact, "Dialogdiet fail!"); - AbstractSvxNameDialog* aNameDlg = pFact->CreateSvxNameDialog( GetActiveWindow(), aPageName, aDescr, RID_SVXDLG_NAME ); + AbstractSvxNameDialog* aNameDlg = pFact->CreateSvxNameDialog( GetActiveWindow(), aPageName, aDescr ); DBG_ASSERT(aNameDlg, "Dialogdiet fail!"); aNameDlg->SetText( aTitle ); aNameDlg->SetCheckNameHdl( LINK( this, DrawViewShell, RenameSlideHdl ), true ); diff --git a/sd/source/ui/view/drviews3.cxx b/sd/source/ui/view/drviews3.cxx index 87374cce8c04..54e0f37a1b19 100644 --- a/sd/source/ui/view/drviews3.cxx +++ b/sd/source/ui/view/drviews3.cxx @@ -51,13 +51,13 @@ #include <sfx2/request.hxx> #include <sfx2/dispatch.hxx> #include <tools/urlobj.hxx> -#include <svtools/aeitem.hxx> -#include <svtools/eitem.hxx> -#include <svtools/rectitem.hxx> -#include <svtools/stritem.hxx> +#include <svl/aeitem.hxx> +#include <svl/eitem.hxx> +#include <svl/rectitem.hxx> +#include <svl/stritem.hxx> #include <svx/svdoole2.hxx> -#include <svtools/itempool.hxx> -#include <svtools/ptitem.hxx> +#include <svl/itempool.hxx> +#include <svl/ptitem.hxx> #include <basic/sbstar.hxx> #include <basic/sberrors.hxx> #include <svx/fmshell.hxx> diff --git a/sd/source/ui/view/drviews4.cxx b/sd/source/ui/view/drviews4.cxx index 85706fb9cbb6..52a0a2e6b3cb 100644 --- a/sd/source/ui/view/drviews4.cxx +++ b/sd/source/ui/view/drviews4.cxx @@ -35,7 +35,7 @@ #include "DrawViewShell.hxx" #include <vcl/msgbox.hxx> -#include <svtools/urlbmk.hxx> +#include <svl/urlbmk.hxx> #include <svx/svdpagv.hxx> #include <svx/svdundo.hxx> #include <svx/fmglob.hxx> diff --git a/sd/source/ui/view/drviews6.cxx b/sd/source/ui/view/drviews6.cxx index 8c10effa061b..d89bb43a0098 100644 --- a/sd/source/ui/view/drviews6.cxx +++ b/sd/source/ui/view/drviews6.cxx @@ -81,12 +81,8 @@ #include "fusumry.hxx" #include "fucushow.hxx" #include "drawview.hxx" -#ifndef SD_FRAME_VIEW #include "FrameView.hxx" -#endif #include "Window.hxx" -#include "fuformatpaintbrush.hxx" -#include "formatclipboard.hxx" #include "DrawDocShell.hxx" #include "TaskPaneViewShell.hxx" #include "framework/FrameworkHelper.hxx" @@ -501,35 +497,6 @@ void DrawViewShell::FuTemp04(SfxRequest& rReq) USHORT nSId = rReq.GetSlot(); switch( nSId ) { - case SID_FORMATPAINTBRUSH: - { - SdFormatClipboard* pFormatClipboard = GetDocSh()->mpFormatClipboard; - if(pFormatClipboard) - { - if( pFormatClipboard->HasContent() ) - { - pFormatClipboard->Erase(); - GetViewFrame()->GetBindings().Invalidate(SID_FORMATPAINTBRUSH); - Cancel(); - rReq.Ignore (); - } - else - { - bool bPersistentCopy = false; - const SfxItemSet *pArgs = rReq.GetArgs(); - if( pArgs && pArgs->Count() >= 1 ) - { - bPersistentCopy = static_cast<bool>(((SfxBoolItem &)pArgs->Get( - SID_FORMATPAINTBRUSH)).GetValue()); - } - - pFormatClipboard->Copy( *mpDrawView, bPersistentCopy ); - SetCurrentFunction( FuFormatPaintBrush::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) ); - GetViewFrame()->GetBindings().Invalidate(SID_FORMATPAINTBRUSH); - } - } - } - break; case SID_FONTWORK: { if ( rReq.GetArgs() ) diff --git a/sd/source/ui/view/drviews7.cxx b/sd/source/ui/view/drviews7.cxx index 983033be7b8c..cc7fd3106fa2 100644 --- a/sd/source/ui/view/drviews7.cxx +++ b/sd/source/ui/view/drviews7.cxx @@ -46,11 +46,11 @@ #include <svx/svdpagv.hxx> #include <svx/clipfmtitem.hxx> #include <svx/fmshell.hxx> -#include <svtools/eitem.hxx> -#include <svtools/aeitem.hxx> -#include <svtools/stritem.hxx> -#include <svtools/visitem.hxx> -#include <svtools/whiter.hxx> +#include <svl/eitem.hxx> +#include <svl/aeitem.hxx> +#include <svl/stritem.hxx> +#include <svl/visitem.hxx> +#include <svl/whiter.hxx> #include <sfx2/dispatch.hxx> #include <svx/svdograf.hxx> #include <svx/unolingu.hxx> @@ -58,11 +58,11 @@ #include <svx/fontworkbar.hxx> // #UndoRedo# -#include <svtools/slstitm.hxx> +#include <svl/slstitm.hxx> #include <sfx2/app.hxx> #include <svtools/insdlg.hxx> -#include <svtools/moduleoptions.hxx> -#include <svtools/languageoptions.hxx> +#include <unotools/moduleoptions.hxx> +#include <svl/languageoptions.hxx> #include <comphelper/processfactory.hxx> #include <sfx2/request.hxx> @@ -87,7 +87,6 @@ #include "zoomlist.hxx" #include "slideshow.hxx" #include "drawview.hxx" -#include "formatclipboard.hxx" #include "ViewShellBase.hxx" #include "ViewShellManager.hxx" #include "LayerTabBar.hxx" @@ -95,6 +94,7 @@ #include "Window.hxx" #include "fuediglu.hxx" #include "fubullet.hxx" +#include "fuformatpaintbrush.hxx" using ::rtl::OUString; using namespace ::com::sun::star; @@ -249,19 +249,7 @@ void DrawViewShell::GetMenuState( SfxItemSet &rSet ) const ULONG nMarkCount = rMarkList.GetMarkCount(); //format paintbrush - { - SdFormatClipboard* pFormatClipboard = GetDocSh()->mpFormatClipboard; - bool bHasContent = pFormatClipboard && pFormatClipboard->HasContent(); - rSet.Put(SfxBoolItem(SID_FORMATPAINTBRUSH,bHasContent)); - if( ( nMarkCount!=1 && !bHasContent ) || mpDrawView->IsTextEdit() ) - rSet.DisableItem( SID_FORMATPAINTBRUSH ); - if( !bHasContent && nMarkCount==1 ) - { - SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj(); - if( !pFormatClipboard->CanCopyThisType(pObj->GetObjInventor(),pObj->GetObjIdentifier()) ) - rSet.DisableItem( SID_FORMATPAINTBRUSH ); - } - } + FuFormatPaintBrush::GetMenuState( *this, rSet ); // Stati der SfxChild-Windows (Animator, Fontwork etc.) SetChildWindowState( rSet ); diff --git a/sd/source/ui/view/drviews9.cxx b/sd/source/ui/view/drviews9.cxx index b5644418fdf2..0e39b4a82b33 100644 --- a/sd/source/ui/view/drviews9.cxx +++ b/sd/source/ui/view/drviews9.cxx @@ -47,10 +47,10 @@ #ifndef _SFX_DISPATCH_HXX //autogen #include <sfx2/dispatch.hxx> #endif -#include <svtools/intitem.hxx> +#include <svl/intitem.hxx> #include <sfx2/app.hxx> #include <sfx2/request.hxx> -#include <svtools/stritem.hxx> +#include <svl/stritem.hxx> #ifndef _SVXIDS_HXX #include <svx/svxids.hrc> #endif @@ -60,7 +60,7 @@ #include <svx/svdograf.hxx> #include <svx/svdoole2.hxx> #include <sot/storage.hxx> -#include <svtools/whiter.hxx> +#include <svl/whiter.hxx> #include <basic/sbstar.hxx> #include <sfx2/viewfrm.hxx> diff --git a/sd/source/ui/view/drviewsa.cxx b/sd/source/ui/view/drviewsa.cxx index 3c396db7207d..2eb4282bb6e5 100644 --- a/sd/source/ui/view/drviewsa.cxx +++ b/sd/source/ui/view/drviewsa.cxx @@ -42,14 +42,14 @@ #include <svx/zoomitem.hxx> #endif #include <svx/svdpagv.hxx> -#include <svtools/ptitem.hxx> -#include <svtools/stritem.hxx> +#include <svl/ptitem.hxx> +#include <svl/stritem.hxx> #include <sfx2/request.hxx> #include <sfx2/dispatch.hxx> #include <svx/svdopath.hxx> #include <sfx2/docfile.hxx> #include <svx/zoomslideritem.hxx> -#include <svtools/eitem.hxx> +#include <svl/eitem.hxx> #ifndef _SVX_DIALOGS_HRC #include <svx/dialogs.hrc> diff --git a/sd/source/ui/view/drviewsb.cxx b/sd/source/ui/view/drviewsb.cxx index 9a94cae21983..09e71dc547ac 100644 --- a/sd/source/ui/view/drviewsb.cxx +++ b/sd/source/ui/view/drviewsb.cxx @@ -55,7 +55,7 @@ #include <svx/fmshell.hxx> #include <svx/svxdlg.hxx> #include <svx/dialogs.hrc> -#include <svtools/useroptions.hxx> +#include <unotools/useroptions.hxx> #include "app.hrc" #include "strings.hrc" diff --git a/sd/source/ui/view/drviewsc.cxx b/sd/source/ui/view/drviewsc.cxx index d8dbc451f0c3..e9bad2064c10 100644 --- a/sd/source/ui/view/drviewsc.cxx +++ b/sd/source/ui/view/drviewsc.cxx @@ -53,7 +53,7 @@ #endif #include <sfx2/dispatch.hxx> #include <svx/svdoole2.hxx> -#include <svtools/style.hxx> +#include <svl/style.hxx> #include <svx/svdpagv.hxx> #include <svx/grafctrl.hxx> #include "stlsheet.hxx" @@ -127,7 +127,7 @@ void DrawViewShell::FuTemp03(SfxRequest& rReq) SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); OSL_ENSURE(pFact, "Dialogdiet fail!"); - AbstractSvxObjectNameDialog* pDlg = pFact->CreateSvxObjectNameDialog(NULL, aName, RID_SVXDLG_OBJECT_NAME); + AbstractSvxObjectNameDialog* pDlg = pFact->CreateSvxObjectNameDialog(NULL, aName); OSL_ENSURE(pDlg, "Dialogdiet fail!"); pDlg->SetCheckNameHdl(LINK(this, DrawViewShell, NameObjectHdl)); @@ -162,7 +162,7 @@ void DrawViewShell::FuTemp03(SfxRequest& rReq) SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); OSL_ENSURE(pFact, "Dialogdiet fail!"); - AbstractSvxObjectTitleDescDialog* pDlg = pFact->CreateSvxObjectTitleDescDialog(NULL, aTitle, aDescription, RID_SVXDLG_OBJECT_TITLE_DESC); + AbstractSvxObjectTitleDescDialog* pDlg = pFact->CreateSvxObjectTitleDescDialog(NULL, aTitle, aDescription); OSL_ENSURE(pDlg, "Dialogdiet fail!"); if(RET_OK == pDlg->Execute()) diff --git a/sd/source/ui/view/drviewsd.cxx b/sd/source/ui/view/drviewsd.cxx index 9838f185807f..0d90619ff76a 100644 --- a/sd/source/ui/view/drviewsd.cxx +++ b/sd/source/ui/view/drviewsd.cxx @@ -36,10 +36,10 @@ #ifndef _SVXIDS_HRC #include <svx/svxids.hrc> #endif -#include <svtools/aeitem.hxx> -#include <svtools/stritem.hxx> +#include <svl/aeitem.hxx> +#include <svl/stritem.hxx> #include <sfx2/docfile.hxx> -#include <svtools/intitem.hxx> +#include <svl/intitem.hxx> #include <sfx2/bindings.hxx> #include <sfx2/dispatch.hxx> #include <sfx2/request.hxx> diff --git a/sd/source/ui/view/drviewse.cxx b/sd/source/ui/view/drviewse.cxx index 0b3ecf1af6e7..1dbfa7211a76 100644 --- a/sd/source/ui/view/drviewse.cxx +++ b/sd/source/ui/view/drviewse.cxx @@ -40,10 +40,10 @@ #include "undo/undomanager.hxx" #include <vcl/waitobj.hxx> -#include <svtools/aeitem.hxx> +#include <svl/aeitem.hxx> #include <svx/editstat.hxx> #include <vcl/msgbox.hxx> -#include <svtools/urlbmk.hxx> +#include <svl/urlbmk.hxx> #include <svx/svdpagv.hxx> #include <svx/fmshell.hxx> #include <vcl/scrbar.hxx> @@ -51,7 +51,7 @@ #include <svx/svdundo.hxx> #include <svx/svdorect.hxx> #include <svx/svdograf.hxx> -#include <svtools/eitem.hxx> +#include <svl/eitem.hxx> #include <svx/eeitem.hxx> #include <sfx2/dispatch.hxx> #include <sfx2/viewfrm.hxx> @@ -64,11 +64,11 @@ #include <svx/svdouno.hxx> #include <svx/dataaccessdescriptor.hxx> #include <tools/urlobj.hxx> -#include <svtools/slstitm.hxx> +#include <svl/slstitm.hxx> #include <sfx2/ipclient.hxx> #include <toolkit/helper/vclunohelper.hxx> #include <avmedia/mediawindow.hxx> -#include <svtools/urihelper.hxx> +#include <svl/urihelper.hxx> #include <sfx2/topfrm.hxx> #include <sfx2/docfile.hxx> @@ -106,7 +106,7 @@ #include "anminfo.hxx" #include "optsitem.hxx" #include "Window.hxx" - +#include "fuformatpaintbrush.hxx" using ::rtl::OUString; using namespace ::com::sun::star; @@ -203,13 +203,22 @@ void DrawViewShell::FuPermanent(SfxRequest& rReq) if(HasCurrentFunction()) { - if(GetOldFunction() == GetCurrentFunction()) + if( (nSId == SID_FORMATPAINTBRUSH) && (GetCurrentFunction()->GetSlotID() == SID_TEXTEDIT) ) + { + // save text edit mode for format paintbrush! + SetOldFunction( GetCurrentFunction() ); + } + else { - SetOldFunction(0); + if(GetOldFunction() == GetCurrentFunction()) + { + SetOldFunction(0); + } } if ( nSId != SID_TEXTEDIT && nSId != SID_ATTR_CHAR && nSId != SID_TEXT_FITTOSIZE && nSId != SID_ATTR_CHAR_VERTICAL && nSId != SID_TEXT_FITTOSIZE_VERTICAL && + nSId != SID_FORMATPAINTBRUSH && mpDrawView->IsTextEdit() ) { mpDrawView->SdrEndTextEdit(); @@ -526,8 +535,18 @@ void DrawViewShell::FuPermanent(SfxRequest& rReq) } break; + case SID_FORMATPAINTBRUSH: + { + SetCurrentFunction( FuFormatPaintBrush::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) ); + rReq.Done(); + SfxBindings& rBind = GetViewFrame()->GetBindings(); + rBind.Invalidate( nSId ); + rBind.Update( nSId ); + break; + } + default: - break; + break; } if(HasOldFunction()) diff --git a/sd/source/ui/view/drviewsf.cxx b/sd/source/ui/view/drviewsf.cxx index 2b1b7518666c..3783f20a49ef 100644 --- a/sd/source/ui/view/drviewsf.cxx +++ b/sd/source/ui/view/drviewsf.cxx @@ -47,9 +47,9 @@ #include <svx/flditem.hxx> #endif #include <sfx2/viewfrm.hxx> -#include <svtools/whiter.hxx> -#include <svtools/eitem.hxx> -#include <svtools/itempool.hxx> +#include <svl/whiter.hxx> +#include <svl/eitem.hxx> +#include <svl/itempool.hxx> #include <sfx2/tplpitem.hxx> #ifndef _BINDING_HXX //autogen #include <sfx2/bindings.hxx> @@ -63,7 +63,7 @@ #include <tools/urlobj.hxx> #include <svx/fmshell.hxx> #include <sfx2/topfrm.hxx> -#include <svtools/cjkoptions.hxx> +#include <svl/cjkoptions.hxx> #ifndef SD_FRAME_VIEW #include "FrameView.hxx" diff --git a/sd/source/ui/view/drviewsh.cxx b/sd/source/ui/view/drviewsh.cxx index f4fa1d027fd9..7952106e34e0 100644 --- a/sd/source/ui/view/drviewsh.cxx +++ b/sd/source/ui/view/drviewsh.cxx @@ -32,8 +32,8 @@ #include "precompiled_sd.hxx" #include "DrawViewShell.hxx" -#include <svtools/aeitem.hxx> -#include <svtools/itemset.hxx> +#include <svl/aeitem.hxx> +#include <svl/itemset.hxx> #include <sfx2/request.hxx> #ifndef _SVXIDS_HRC #include <svx/svxids.hrc> diff --git a/sd/source/ui/view/drviewsi.cxx b/sd/source/ui/view/drviewsi.cxx index 703677d05415..4eb0b6671d82 100644 --- a/sd/source/ui/view/drviewsi.cxx +++ b/sd/source/ui/view/drviewsi.cxx @@ -34,7 +34,7 @@ #include "DrawViewShell.hxx" #include <svx/xtable.hxx> #include "sdattr.hxx" -#include <svtools/aeitem.hxx> +#include <svl/aeitem.hxx> #include <svx/eeitem.hxx> #include <sfx2/request.hxx> #include <svx/svditer.hxx> diff --git a/sd/source/ui/view/drviewsj.cxx b/sd/source/ui/view/drviewsj.cxx index cdc5fac18912..c21432b27846 100644 --- a/sd/source/ui/view/drviewsj.cxx +++ b/sd/source/ui/view/drviewsj.cxx @@ -33,7 +33,7 @@ #include "DrawViewShell.hxx" #include <com/sun/star/embed/EmbedMisc.hpp> -#include <svtools/aeitem.hxx> +#include <svl/aeitem.hxx> #ifndef _SVXIDS_HRC //autogen #include <svx/svxids.hrc> #endif diff --git a/sd/source/ui/view/outlnvs2.cxx b/sd/source/ui/view/outlnvs2.cxx index 99fbcb7f2eda..468ea50776f2 100644 --- a/sd/source/ui/view/outlnvs2.cxx +++ b/sd/source/ui/view/outlnvs2.cxx @@ -40,7 +40,7 @@ #include <sfx2/docfile.hxx> #include <sfx2/dispatch.hxx> #include <sfx2/request.hxx> -#include <svtools/eitem.hxx> +#include <svl/eitem.hxx> #ifndef _ZOOMITEM_HXX //autogen #include <svx/zoomitem.hxx> #endif @@ -49,7 +49,7 @@ #include <svx/flditem.hxx> #include <svx/editstat.hxx> #include "optsitem.hxx" -#include <svtools/useroptions.hxx> +#include <unotools/useroptions.hxx> #include <sfx2/viewfrm.hxx> #include "Outliner.hxx" diff --git a/sd/source/ui/view/outlnvsh.cxx b/sd/source/ui/view/outlnvsh.cxx index d14f6ed9dc34..43a8683cd039 100644 --- a/sd/source/ui/view/outlnvsh.cxx +++ b/sd/source/ui/view/outlnvsh.cxx @@ -55,9 +55,9 @@ #include <svx/svdotext.hxx> #include <sfx2/dispatch.hxx> #include <vcl/scrbar.hxx> -#include <svtools/whiter.hxx> +#include <svl/whiter.hxx> #include <svx/editstat.hxx> -#include <svtools/itempool.hxx> +#include <svl/itempool.hxx> #include <sfx2/tplpitem.hxx> #include <svx/svdorect.hxx> #include <sot/formats.hxx> @@ -67,7 +67,7 @@ #include <svx/unolingu.hxx> #include <comphelper/processfactory.hxx> #include <svx/outlobj.hxx> -#include <svtools/cjkoptions.hxx> +#include <svl/cjkoptions.hxx> #include <svtools/cliplistener.hxx> #include <sfx2/srchitem.hxx> #include <svx/editobj.hxx> diff --git a/sd/source/ui/view/outlview.cxx b/sd/source/ui/view/outlview.cxx index 1e5564427ac8..c500a95f2811 100644 --- a/sd/source/ui/view/outlview.cxx +++ b/sd/source/ui/view/outlview.cxx @@ -46,11 +46,11 @@ #include <sfx2/imagemgr.hxx> #include <sfx2/app.hxx> #include <sfx2/bindings.hxx> -#include <svtools/itempool.hxx> -#include <svtools/style.hxx> +#include <svl/itempool.hxx> +#include <svl/style.hxx> #include <svx/svdorect.hxx> #include <svx/svdundo.hxx> -#include <svtools/brdcst.hxx> +#include <svl/brdcst.hxx> #include <vcl/msgbox.hxx> #include <svx/adjitem.hxx> #include <svx/tstpitem.hxx> diff --git a/sd/source/ui/view/sdruler.cxx b/sd/source/ui/view/sdruler.cxx index 52e098caf7f3..8fc564c358f6 100644 --- a/sd/source/ui/view/sdruler.cxx +++ b/sd/source/ui/view/sdruler.cxx @@ -32,7 +32,7 @@ #include "precompiled_sd.hxx" #include "Ruler.hxx" -#include <svtools/ptitem.hxx> +#include <svl/ptitem.hxx> #include <svx/ruler.hxx> #ifndef _SVXIDS_HXX //autogen #include <svx/svxids.hrc> diff --git a/sd/source/ui/view/sdview2.cxx b/sd/source/ui/view/sdview2.cxx index 0a17724df1ed..49bbf3149c8b 100644 --- a/sd/source/ui/view/sdview2.cxx +++ b/sd/source/ui/view/sdview2.cxx @@ -52,8 +52,8 @@ #include <sfx2/childwin.hxx> #include <svx/svdundo.hxx> #include <svx/svdpagv.hxx> -#include <svtools/urlbmk.hxx> -#include <svtools/urlbmk.hxx> +#include <svl/urlbmk.hxx> +#include <svl/urlbmk.hxx> #include <svx/outliner.hxx> #include <svx/xflclit.hxx> #include <svx/dbexch.hrc> @@ -963,7 +963,7 @@ BOOL View::GetExchangeList( List*& rpExchangeList, List* pBookmarkList, USHORT n String aTitle( SdResId( STR_TITLE_NAMEGROUP ) ); String aDesc( SdResId( STR_DESC_NAMEGROUP ) ); SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); - AbstractSvxNameDialog* pDlg = pFact ? pFact->CreateSvxNameDialog( mpViewSh->GetActiveWindow(), *pNewName, aDesc, RID_SVXDLG_NAME ) : 0; + AbstractSvxNameDialog* pDlg = pFact ? pFact->CreateSvxNameDialog( mpViewSh->GetActiveWindow(), *pNewName, aDesc ) : 0; if( pDlg ) { pDlg->SetEditHelpId( HID_SD_NAMEDIALOG_OBJECT ); diff --git a/sd/source/ui/view/sdview3.cxx b/sd/source/ui/view/sdview3.cxx index 184949f4e683..cbc8758d2b53 100644 --- a/sd/source/ui/view/sdview3.cxx +++ b/sd/source/ui/view/sdview3.cxx @@ -36,11 +36,11 @@ #include <com/sun/star/embed/NoVisualAreaSizeException.hpp> #include <com/sun/star/lang/XComponent.hpp> #include <sot/filelist.hxx> -#include <svtools/pathoptions.hxx> +#include <unotools/pathoptions.hxx> #ifndef _EDITDATA_HXX #include <svx/editdata.hxx> #endif -#include <svtools/urlbmk.hxx> +#include <svl/urlbmk.hxx> #include <svx/xexch.hxx> #include <svx/xflclit.hxx> #include <svx/xlnclit.hxx> @@ -55,7 +55,7 @@ #include <svx/svdetc.hxx> #include <svx/svdundo.hxx> #include <sfx2/app.hxx> -#include <svtools/itempool.hxx> +#include <svl/itempool.hxx> #include <sot/clsids.hxx> #ifndef _FM_FMMODEL_HXX #include <svx/fmmodel.hxx> diff --git a/sd/source/ui/view/sdview4.cxx b/sd/source/ui/view/sdview4.cxx index 72534b476a73..9d301368418c 100644 --- a/sd/source/ui/view/sdview4.cxx +++ b/sd/source/ui/view/sdview4.cxx @@ -38,7 +38,7 @@ #include <sfx2/fcontnr.hxx> #include <sfx2/docfile.hxx> #include <vcl/msgbox.hxx> -#include <svtools/urlbmk.hxx> +#include <svl/urlbmk.hxx> #include <svx/svdpagv.hxx> #include <svx/xfillit.hxx> #include <svx/svdundo.hxx> diff --git a/sd/source/ui/view/viewshe2.cxx b/sd/source/ui/view/viewshe2.cxx index 0349388577eb..08a39c44d86a 100644 --- a/sd/source/ui/view/viewshe2.cxx +++ b/sd/source/ui/view/viewshe2.cxx @@ -59,7 +59,7 @@ #include <svx/fmshell.hxx> #include <sfx2/dispatch.hxx> #include <rtl/ustrbuf.hxx> -#include <svtools/moduleoptions.hxx> +#include <unotools/moduleoptions.hxx> #ifndef _SVX_DIALOGS_HRC #include <svx/dialogs.hrc> #endif diff --git a/sd/source/ui/view/viewshe3.cxx b/sd/source/ui/view/viewshe3.cxx index 38e2b6b88001..86e441939b0e 100644 --- a/sd/source/ui/view/viewshe3.cxx +++ b/sd/source/ui/view/viewshe3.cxx @@ -59,11 +59,10 @@ #include <svx/svdpagv.hxx> #include <svx/svdetc.hxx> #include <svx/outliner.hxx> -#include <svtools/misccfg.hxx> #include <svx/editstat.hxx> #include <tools/multisel.hxx> -#include <svtools/intitem.hxx> -#include <svtools/style.hxx> +#include <svl/intitem.hxx> +#include <svl/style.hxx> #include <unotools/localedatawrapper.hxx> #include <comphelper/processfactory.hxx> #include <rtl/ustrbuf.hxx> @@ -92,7 +91,7 @@ #include <svx/svxids.hrc> #endif #include <sfx2/request.hxx> -#include <svtools/aeitem.hxx> +#include <svl/aeitem.hxx> #include <basic/sbstar.hxx> using namespace ::com::sun::star; diff --git a/sd/source/ui/view/viewshel.cxx b/sd/source/ui/view/viewshel.cxx index 208d5426c8bd..7effb79a00b1 100644 --- a/sd/source/ui/view/viewshel.cxx +++ b/sd/source/ui/view/viewshel.cxx @@ -48,7 +48,7 @@ #ifndef _SCRBAR_HXX //autogen #include <vcl/scrbar.hxx> #endif -#include <svtools/eitem.hxx> +#include <svl/eitem.hxx> #include <svx/ruler.hxx> #ifndef _SVXIDS_HXX #include <svx/svxids.hrc> @@ -90,7 +90,7 @@ #include <svx/svdoutl.hxx> // #96090# -#include <svtools/slstitm.hxx> +#include <svl/slstitm.hxx> #include <sfx2/request.hxx> #include "SpellDialogChildWindow.hxx" diff --git a/sd/util/makefile.mk b/sd/util/makefile.mk index cf9a516094b7..6b1e6ebf1676 100644 --- a/sd/util/makefile.mk +++ b/sd/util/makefile.mk @@ -171,6 +171,7 @@ SHL2STDLIBS= \ $(VCLLIB) \ $(SOTLIB) \ $(TOOLSLIB) \ + $(UNOTOOLSLIB) \ $(UCBHELPERLIB) \ $(CPPUHELPERLIB) \ $(CPPULIB) \ @@ -249,7 +250,7 @@ DEF5NAME=$(SHL5TARGET) SHL5STDLIBS = $(ISDLIB) \ $(SVXCORELIB) \ - $(SVXMSFILTERLIB) \ + $(MSFILTERLIB) \ $(SFX2LIB) \ $(SVTOOLLIB) \ $(SOTLIB) \ diff --git a/sd/util/sdfilt.map b/sd/util/sdfilt.map index ac6b782f3145..62213393408d 100644 --- a/sd/util/sdfilt.map +++ b/sd/util/sdfilt.map @@ -2,7 +2,7 @@ PPTEXPORTER_1_0 { global: ExportPPT; ImportPPT; - + SaveVBA; local: *; }; diff --git a/slideshow/source/engine/activities/activitiesfactory.cxx b/slideshow/source/engine/activities/activitiesfactory.cxx index 39cd7d733110..398a813a62aa 100644 --- a/slideshow/source/engine/activities/activitiesfactory.cxx +++ b/slideshow/source/engine/activities/activitiesfactory.cxx @@ -289,11 +289,18 @@ public: BaseType::getNumberOfKeyTimes() ) ) ) ); } + using BaseType::isAutoReverse; + virtual void performEnd() { // xxx todo: good guess if (mpAnim) - (*mpAnim)( getPresentationValue( maEndValue ) ); + { + if (isAutoReverse()) + (*mpAnim)( getPresentationValue( maStartValue ) ); + else + (*mpAnim)( getPresentationValue( maEndValue ) ); + } } /// Disposable: diff --git a/slideshow/source/engine/animationnodes/animationaudionode.cxx b/slideshow/source/engine/animationnodes/animationaudionode.cxx index 634dc0342515..24c3a95382bf 100644 --- a/slideshow/source/engine/animationnodes/animationaudionode.cxx +++ b/slideshow/source/engine/animationnodes/animationaudionode.cxx @@ -94,14 +94,16 @@ void AnimationAudioNode::activate_st() // no node duration. Take inherent media time, then scheduleDeactivationEvent( makeDelay( boost::bind( &AnimationNode::deactivate, getSelf() ), - mpPlayer->getDuration() ) ); + mpPlayer->getDuration(), + "AnimationAudioNode::deactivate with delay") ); } } else { // deactivate ASAP: scheduleDeactivationEvent( - makeEvent( boost::bind( &AnimationNode::deactivate, getSelf() ) ) ); + makeEvent( boost::bind( &AnimationNode::deactivate, getSelf() ), + "AnimationAudioNode::deactivate without delay") ); } } @@ -127,7 +129,8 @@ void AnimationAudioNode::deactivate_st( NodeState /*eDestState*/ ) getContext().mrEventQueue.addEvent( makeEvent( boost::bind( &EventMultiplexer::notifyAudioStopped, boost::ref(getContext().mrEventMultiplexer), - getSelf() ) ) ); + getSelf() ), + "AnimationAudioNode::notifyAudioStopped") ); } bool AnimationAudioNode::hasPendingAnimation() const diff --git a/slideshow/source/engine/animationnodes/animationbasenode.cxx b/slideshow/source/engine/animationnodes/animationbasenode.cxx index 82868063fefa..19a6df2a8244 100644 --- a/slideshow/source/engine/animationnodes/animationbasenode.cxx +++ b/slideshow/source/engine/animationnodes/animationbasenode.cxx @@ -456,7 +456,8 @@ AnimationBaseNode::fillCommonParameters() const EventSharedPtr pEndEvent; if (pSelf) { pEndEvent = makeEvent( - boost::bind( &AnimationNode::deactivate, pSelf ) ); + boost::bind( &AnimationNode::deactivate, pSelf ), + "AnimationBaseNode::deactivate"); } // Calculate the minimum frame count that depends on the duration and diff --git a/slideshow/source/engine/animationnodes/animationcommandnode.cxx b/slideshow/source/engine/animationnodes/animationcommandnode.cxx index f9104f37a45a..2adbe2b9b75a 100644 --- a/slideshow/source/engine/animationnodes/animationcommandnode.cxx +++ b/slideshow/source/engine/animationnodes/animationcommandnode.cxx @@ -124,7 +124,8 @@ void AnimationCommandNode::activate_st() // deactivate ASAP: scheduleDeactivationEvent( - makeEvent( boost::bind( &AnimationNode::deactivate, getSelf() ) ) ); + makeEvent( boost::bind( &AnimationNode::deactivate, getSelf() ), + "AnimationCommandNode::deactivate" ) ); } bool AnimationCommandNode::hasPendingAnimation() const diff --git a/slideshow/source/engine/animationnodes/animationsetnode.cxx b/slideshow/source/engine/animationnodes/animationsetnode.cxx index f7669b7214d3..ba1f015cd4fe 100644 --- a/slideshow/source/engine/animationnodes/animationsetnode.cxx +++ b/slideshow/source/engine/animationnodes/animationsetnode.cxx @@ -80,7 +80,8 @@ AnimationActivitySharedPtr AnimationSetNode::createActivity() const pSelf, "cannot cast getSelf() to my type!" ); aParms.mpEndEvent = makeEvent( boost::bind( &AnimationSetNode::implScheduleDeactivationEvent, - pSelf ) ); + pSelf ), + "AnimationSetNode::implScheduleDeactivationEvent"); } switch (AnimationFactory::classifyAttributeName( attrName )) { diff --git a/slideshow/source/engine/animationnodes/basenode.cxx b/slideshow/source/engine/animationnodes/basenode.cxx index 9f74a75fd571..6ad15e43462f 100644 --- a/slideshow/source/engine/animationnodes/basenode.cxx +++ b/slideshow/source/engine/animationnodes/basenode.cxx @@ -50,6 +50,7 @@ #include "tools.hxx" #include "nodetools.hxx" #include "generateevent.hxx" +#include "debug.hxx" #include <boost/bind.hpp> #include <vector> @@ -312,6 +313,10 @@ public: mpNode->meCurrState = meToState; clear(); } + + // Uncomment the following line to write the node tree to file on + // every state change of one of its nodes. + // Debug_ShowNodeTree(mpNode->mpSelf); } void clear() { @@ -488,7 +493,9 @@ bool BaseNode::resolve() // schedule delayed activation event. Take iterate node // timeout into account mpCurrentEvent = makeDelay( - boost::bind( &AnimationNode::activate, mpSelf ), mnStartDelay ); + boost::bind( &AnimationNode::activate, mpSelf ), + mnStartDelay, + "AnimationNode::activate with delay"); maContext.mrEventQueue.addEvent( mpCurrentEvent ); } diff --git a/slideshow/source/engine/animationnodes/basenode.hxx b/slideshow/source/engine/animationnodes/basenode.hxx index 68ec92f0fea7..3a0b25e7ea94 100644 --- a/slideshow/source/engine/animationnodes/basenode.hxx +++ b/slideshow/source/engine/animationnodes/basenode.hxx @@ -137,6 +137,8 @@ public: // nop: virtual void notifyDeactivating( const AnimationNodeSharedPtr& rNotifier ); + bool isMainSequenceRootNode() const { return mbIsMainSequenceRootNode; } + protected: void scheduleDeactivationEvent( EventSharedPtr const& pEvent = EventSharedPtr() ); @@ -144,8 +146,6 @@ protected: SlideShowContext const& getContext() const { return maContext; } ::boost::shared_ptr<BaseNode> const& getSelf() const { return mpSelf; } - bool isMainSequenceRootNode() const { return mbIsMainSequenceRootNode; } - bool checkValidNode() const { ENSURE_OR_THROW( mpSelf, "no self ptr set!" ); bool const bRet = (meCurrState != INVALID); diff --git a/slideshow/source/engine/animationnodes/generateevent.cxx b/slideshow/source/engine/animationnodes/generateevent.cxx index 0983019dafef..015db5586834 100644 --- a/slideshow/source/engine/animationnodes/generateevent.cxx +++ b/slideshow/source/engine/animationnodes/generateevent.cxx @@ -111,7 +111,9 @@ EventSharedPtr generateEvent( case animations::EventTrigger::BEGIN_EVENT: // try to extract XAnimationNode event source if (aEvent.Source >>= xNode) { - pEvent = makeDelay( rFunctor, nDelay2 + nAdditionalDelay ); + pEvent = makeDelay( rFunctor, + nDelay2 + nAdditionalDelay, + "generateEvent, BEGIN_EVENT"); rContext.mrUserEventQueue.registerAnimationStartEvent( pEvent, xNode ); } @@ -123,7 +125,9 @@ EventSharedPtr generateEvent( case animations::EventTrigger::END_EVENT: // try to extract XAnimationNode event source if (aEvent.Source >>= xNode) { - pEvent = makeDelay( rFunctor, nDelay2 + nAdditionalDelay ); + pEvent = makeDelay( rFunctor, + nDelay2 + nAdditionalDelay, + "generateEvent, END_EVENT"); rContext.mrUserEventQueue.registerAnimationEndEvent( pEvent, xNode ); } @@ -137,7 +141,9 @@ EventSharedPtr generateEvent( if ((aEvent.Source >>= xShape) && (pShape = rContext.mpSubsettableShapeManager->lookupShape(xShape)).get()) { - pEvent = makeDelay( rFunctor, nDelay2 + nAdditionalDelay ); + pEvent = makeDelay( rFunctor, + nDelay2 + nAdditionalDelay, + "generateEvent, ON_CLICK"); rContext.mrUserEventQueue.registerShapeClickEvent( pEvent, pShape ); } @@ -151,7 +157,9 @@ EventSharedPtr generateEvent( if ((aEvent.Source >>= xShape) && (pShape = rContext.mpSubsettableShapeManager->lookupShape(xShape)).get()) { - pEvent = makeDelay( rFunctor, nDelay2 + nAdditionalDelay ); + pEvent = makeDelay( rFunctor, + nDelay2 + nAdditionalDelay, + "generateEvent, ON_DBL_CLICK"); rContext.mrUserEventQueue.registerShapeDoubleClickEvent( pEvent, pShape ); } @@ -165,7 +173,9 @@ EventSharedPtr generateEvent( if ((aEvent.Source >>= xShape) && (pShape = rContext.mpSubsettableShapeManager->lookupShape(xShape)).get()) { - pEvent = makeDelay( rFunctor, nDelay2 + nAdditionalDelay ); + pEvent = makeDelay( rFunctor, + nDelay2 + nAdditionalDelay, + "generateEvent, ON_MOUSE_ENTER"); rContext.mrUserEventQueue.registerMouseEnterEvent( pEvent, pShape ); } @@ -179,7 +189,9 @@ EventSharedPtr generateEvent( if ((aEvent.Source >>= xShape) && (pShape = rContext.mpSubsettableShapeManager->lookupShape(xShape)).get()) { - pEvent = makeDelay( rFunctor, nDelay2 + nAdditionalDelay ); + pEvent = makeDelay( rFunctor, + nDelay2 + nAdditionalDelay, + "generateEvent, ON_MOUSE_LEAVE"); rContext.mrUserEventQueue.registerMouseLeaveEvent( pEvent, pShape ); } @@ -193,13 +205,17 @@ EventSharedPtr generateEvent( "mapped to ON_NEXT!" ); // FALLTHROUGH intended case animations::EventTrigger::ON_NEXT: - pEvent = makeDelay( rFunctor, nDelay2 + nAdditionalDelay ); + pEvent = makeDelay( rFunctor, + nDelay2 + nAdditionalDelay, + "generateEvent, ON_NEXT"); rContext.mrUserEventQueue.registerNextEffectEvent( pEvent ); break; case animations::EventTrigger::ON_STOP_AUDIO: // try to extract XAnimationNode event source if (aEvent.Source >>= xNode) { - pEvent = makeDelay( rFunctor, nDelay2 + nAdditionalDelay ); + pEvent = makeDelay( rFunctor, + nDelay2 + nAdditionalDelay, + "generateEvent, ON_STOP_AUDIO"); rContext.mrUserEventQueue.registerAudioStoppedEvent( pEvent, xNode ); } @@ -218,7 +234,9 @@ EventSharedPtr generateEvent( "not yet implemented!" ); } else if (rEventDescription >>= nDelay1) { - pEvent = makeDelay( rFunctor, nDelay1 + nAdditionalDelay ); + pEvent = makeDelay( rFunctor, + nDelay1 + nAdditionalDelay, + "generateEvent with delay"); // schedule delay event rContext.mrEventQueue.addEvent( pEvent ); } diff --git a/slideshow/source/engine/animationnodes/paralleltimecontainer.cxx b/slideshow/source/engine/animationnodes/paralleltimecontainer.cxx index 0bd4c524586e..0581c78e9c47 100644 --- a/slideshow/source/engine/animationnodes/paralleltimecontainer.cxx +++ b/slideshow/source/engine/animationnodes/paralleltimecontainer.cxx @@ -53,7 +53,8 @@ void ParallelTimeContainer::activate_st() if (isDurationIndefinite() && maChildren.empty()) { // deactivate ASAP: scheduleDeactivationEvent( - makeEvent( boost::bind( &AnimationNode::deactivate, getSelf() ) ) ); + makeEvent( boost::bind( &AnimationNode::deactivate, getSelf() ), + "ParallelTimeContainer::deactivate") ); } else { // use default scheduleDeactivationEvent(); diff --git a/slideshow/source/engine/animationnodes/sequentialtimecontainer.cxx b/slideshow/source/engine/animationnodes/sequentialtimecontainer.cxx index 683fe7bd9707..79046f50251a 100644 --- a/slideshow/source/engine/animationnodes/sequentialtimecontainer.cxx +++ b/slideshow/source/engine/animationnodes/sequentialtimecontainer.cxx @@ -63,7 +63,9 @@ void SequentialTimeContainer::activate_st() { // deactivate ASAP: scheduleDeactivationEvent( - makeEvent( boost::bind< void >( boost::mem_fn( &AnimationNode::deactivate ), getSelf() ) ) ); + makeEvent( + boost::bind< void >( boost::mem_fn( &AnimationNode::deactivate ), getSelf() ), + "SequentialTimeContainer::deactivate") ); } else // use default scheduleDeactivationEvent(); @@ -88,8 +90,10 @@ void SequentialTimeContainer::skipEffect( if (isChildNode(pChildNode)) { // empty all events ignoring timings => until next effect getContext().mrEventQueue.forceEmpty(); - getContext().mrEventQueue.addEventForNextRound( - makeEvent( boost::bind<void>( boost::mem_fn( &AnimationNode::deactivate ), pChildNode ) ) ); + getContext().mrEventQueue.addEvent( + makeEvent( + boost::bind<void>( boost::mem_fn( &AnimationNode::deactivate ), pChildNode ), + "SequentialTimeContainer::deactivate, skipEffect with delay") ); } else OSL_ENSURE( false, "unknown notifier!" ); @@ -116,16 +120,19 @@ bool SequentialTimeContainer::resolveChild( mpCurrentSkipEvent = makeEvent( boost::bind( &SequentialTimeContainer::skipEffect, boost::dynamic_pointer_cast<SequentialTimeContainer>( getSelf() ), - pChildNode ) ); + pChildNode ), + "SequentialTimeContainer::skipEffect, resolveChild"); // event that will reresolve the resolved/activated child: mpCurrentRewindEvent = makeEvent( boost::bind( &SequentialTimeContainer::rewindEffect, boost::dynamic_pointer_cast<SequentialTimeContainer>( getSelf() ), - pChildNode ) ); + pChildNode ), + "SequentialTimeContainer::rewindEffect, resolveChild"); // deactivate child node when skip event occurs: getContext().mrUserEventQueue.registerSkipEffectEvent( - mpCurrentSkipEvent ); + mpCurrentSkipEvent, + mnFinishedChildren+1<maChildren.size()); // rewind to previous child: getContext().mrUserEventQueue.registerRewindEffectEvent( mpCurrentRewindEvent ); diff --git a/slideshow/source/engine/debug.cxx b/slideshow/source/engine/debug.cxx new file mode 100644 index 000000000000..75d1c30d5013 --- /dev/null +++ b/slideshow/source/engine/debug.cxx @@ -0,0 +1,327 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: layer.hxx,v $ + * $Revision: 1.3 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#include "precompiled_slideshow.hxx" + +#include "debug.hxx" + +#if OSL_DEBUG_LEVEL > 1 + +#include "animationnodes/basecontainernode.hxx" +#include "animationnodes/paralleltimecontainer.hxx" +#include "animationnodes/sequentialtimecontainer.hxx" +#include "animationnodes/animationtransitionfilternode.hxx" +#include "animationnodes/animationaudionode.hxx" +#include "animationnodes/animationcolornode.hxx" +#include "animationnodes/animationcommandnode.hxx" +#include "animationnodes/animationpathmotionnode.hxx" +#include "animationnodes/animationsetnode.hxx" +#include "animationnodes/animationtransformnode.hxx" +#include "animationnodes/propertyanimationnode.hxx" + +#include <com/sun/star/animations/XAnimationNode.hpp> +#include <com/sun/star/animations/Event.hpp> + +#include <cstdio> +#include <cstdarg> + +using ::rtl::OUString; +using namespace ::com::sun::star; + + +namespace slideshow { namespace internal { + +namespace { + +class NodeContainer : public BaseContainerNode +{ +public: + void ShowChildrenState (void) const; +}; + + + + +OUString DebugGetDescription (const AnimationNodeSharedPtr& rpNode) +{ + if (::boost::dynamic_pointer_cast<BaseContainerNode>(rpNode)) + { + // Node is a container. + if (::boost::dynamic_pointer_cast<ParallelTimeContainer>(rpNode)) + return OUString::createFromAscii("ParallelTimeContainer"); + else if (::boost::dynamic_pointer_cast<SequentialTimeContainer>(rpNode)) + return OUString::createFromAscii("SequentialTimeContainer"); + else + return OUString::createFromAscii("<unknown container>"); + } + else if (::boost::dynamic_pointer_cast<AnimationTransitionFilterNode>(rpNode)) + return OUString::createFromAscii("AnimationTransitionFilterNode"); + else if (::boost::dynamic_pointer_cast<AnimationAudioNode>(rpNode)) + return OUString::createFromAscii("AnimationAudioNode"); + else if (::boost::dynamic_pointer_cast<AnimationColorNode>(rpNode)) + return OUString::createFromAscii("AnimationColorNode"); + else if (::boost::dynamic_pointer_cast<AnimationCommandNode>(rpNode)) + return OUString::createFromAscii("AnimationCommandNode"); + else if (::boost::dynamic_pointer_cast<AnimationPathMotionNode>(rpNode)) + return OUString::createFromAscii("AnimationPathMotionNode"); + else if (::boost::dynamic_pointer_cast<AnimationSetNode>(rpNode)) + return OUString::createFromAscii("AnimationSetNode"); + else if (::boost::dynamic_pointer_cast<AnimationTransformNode>(rpNode)) + return OUString::createFromAscii("AnimationTransformNode"); + else if (::boost::dynamic_pointer_cast<PropertyAnimationNode>(rpNode)) + return OUString::createFromAscii("PropertyAnimationNode"); + else + return OUString::createFromAscii("<unknown node type>"); +} + + + + +void DebugShowState (const AnimationNodeSharedPtr& rpNode) +{ + if ( ! rpNode) + return; + + OUString sState; + OUString sStateColor; + switch (rpNode->getState()) + { + default: + case AnimationNode::INVALID: + sState = OUString::createFromAscii("Invalid"); + sStateColor = OUString::createFromAscii("firebrick1"); + break; + case AnimationNode::UNRESOLVED: + sState = OUString::createFromAscii("Unresolved"); + sStateColor = OUString::createFromAscii("dodgerblue4"); + break; + case AnimationNode::RESOLVED: + sState = OUString::createFromAscii("Resolved"); + sStateColor = OUString::createFromAscii("dodgerblue"); + break; + case AnimationNode::ACTIVE: + sState = OUString::createFromAscii("Active"); + sStateColor = OUString::createFromAscii("seagreen1"); + break; + case AnimationNode::FROZEN: + sState = OUString::createFromAscii("Frozen"); + sStateColor = OUString::createFromAscii("lightskyblue1"); + break; + case AnimationNode::ENDED: + sState = OUString::createFromAscii("Ended"); + sStateColor = OUString::createFromAscii("slategray3"); + break; + } + + const uno::Any aBegin (rpNode->getXAnimationNode()->getBegin()); + OUString sTrigger; + if (aBegin.hasValue()) + { + animations::Event aEvent; + double nTimeOffset; + const static char* sEventTriggers[] = { + "NONE", "ON_BEGIN", "ON_END", "BEGIN_EVENT", "END_EVENT", "ON_CLICK", + "ON_DBL_CLICK", "ON_MOUSE_ENTER", "ON_MOUSE_LEAVE", "ON_NEXT", "ON_PREV", + "ON_STOP_AUDIO", "REPEAT"}; + if (aBegin >>= aEvent) + { + sTrigger = OUString::createFromAscii(sEventTriggers[aEvent.Trigger]); + } + else if (aBegin >>= nTimeOffset) + { + sTrigger = OUString::valueOf(nTimeOffset); + } + else + { + sTrigger = OUString::createFromAscii("other"); + } + } + else + sTrigger = ::rtl::OUString::createFromAscii("void"); + + TRACE("Node state: n%x [label=\"%x / %x / %s\\n%s\\n%s\",style=filled,fillcolor=\"%s\"]\r", + rpNode.get(), + rpNode.get(), + rpNode->getXAnimationNode().get(), + ::rtl::OUStringToOString(sState, RTL_TEXTENCODING_ASCII_US).getStr(), + ::rtl::OUStringToOString(DebugGetDescription(rpNode), RTL_TEXTENCODING_ASCII_US).getStr(), + ::rtl::OUStringToOString(sTrigger, RTL_TEXTENCODING_ASCII_US).getStr(), + ::rtl::OUStringToOString(sStateColor, RTL_TEXTENCODING_ASCII_US).getStr()); + + BaseContainerNodeSharedPtr pContainer ( + ::boost::dynamic_pointer_cast<BaseContainerNode>(rpNode)); + if (pContainer) + ::boost::static_pointer_cast<NodeContainer>(rpNode)->ShowChildrenState(); +} + + + + +void NodeContainer::ShowChildrenState (void) const +{ + for (std::size_t nIndex=0; nIndex<maChildren.size(); ++nIndex) + { + TRACE("Node connection: n%x -> n%x", this, maChildren[nIndex].get()); + DebugShowState(maChildren[nIndex]); + } +} + + + + +AnimationNodeSharedPtr DebugGetTreeRoot (const BaseNodeSharedPtr& rpNode) +{ + BaseNodeSharedPtr pNode (rpNode); + if (pNode) + { + BaseNodeSharedPtr pParent (pNode->getParentNode()); + while (pParent) + { + pNode = pParent; + pParent = pNode->getParentNode(); + } + } + return pNode; +} + +} // end of anonymous namespace + + + + +void Debug_ShowNodeTree (const AnimationNodeSharedPtr& rpNode) +{ + DebugTraceScope aTraceScope ("NodeTree"); + + DebugShowState(DebugGetTreeRoot(::boost::dynamic_pointer_cast<BaseNode>(rpNode))); +} + + + + +//----- Tracing --------------------------------------------------------------- + +extern "C" { + + namespace { + + class TraceData + { + public: + TraceData (void) + : mnIndentation(0), + mpFile(fopen(TRACE_LOG_FILE_NAME, "w")), + maTime() + { + } + + int mnIndentation; + FILE* mpFile; + ::canvas::tools::ElapsedTime maTime; + }; + static TraceData gTraceData; + + inline void SAL_CALL DebugTrace ( + const int nIndentationOffset, + const sal_Char* sFormat, + va_list args) + { + if (gTraceData.mpFile != NULL) + { + // Write line head with current time and indentation. + // Adapt indentation. + if (nIndentationOffset < 0) + gTraceData.mnIndentation += nIndentationOffset; + fprintf(gTraceData.mpFile, "%10.8f ", gTraceData.maTime.getElapsedTime()); + for (int nIndentation=0; nIndentation<gTraceData.mnIndentation; ++nIndentation) + fprintf(gTraceData.mpFile, " "); + if (nIndentationOffset > 0) + gTraceData.mnIndentation += nIndentationOffset; + + // Write message. + vfprintf(gTraceData.mpFile, sFormat, args); + fprintf(gTraceData.mpFile, "\n"); + fflush(gTraceData.mpFile); + } + } + +} // end of anonymous namespace + + +} // end of extern "C" + +void SAL_CALL DebugTraceBegin (const sal_Char* sFormat, ...) +{ + va_list args; + va_start(args, sFormat); + DebugTrace(+1,sFormat, args); + va_end(args); +} + +void SAL_CALL DebugTraceEnd (const sal_Char* sFormat, ...) +{ + va_list args; + va_start(args, sFormat); + DebugTrace(-1,sFormat, args); + va_end(args); +} + +void SAL_CALL DebugTraceMessage (const sal_Char* sFormat, ...) +{ + va_list args; + va_start(args, sFormat); + DebugTrace(0,sFormat, args); + va_end(args); +} + + + +DebugTraceScope::DebugTraceScope (const sal_Char* sFormat, ...) + : msMessage(new sal_Char[mnBufferSize]) +{ + va_list args; + va_start(args, sFormat); + + msMessage[mnBufferSize-1] = 0; + _vsnprintf(msMessage, mnBufferSize-1, sFormat, args); + TRACE_BEGIN("[ %s", msMessage); + va_end(args); +} + +DebugTraceScope::~DebugTraceScope (void) +{ + TRACE_END("] %s", msMessage); + delete [] msMessage; +} + + +} } + +#endif // OSL_DEBUG_LEVEL > 1 diff --git a/slideshow/source/engine/effectrewinder.cxx b/slideshow/source/engine/effectrewinder.cxx new file mode 100644 index 000000000000..3f6ceb54bb8e --- /dev/null +++ b/slideshow/source/engine/effectrewinder.cxx @@ -0,0 +1,436 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: slideshowimpl.cxx,v $ + * $Revision: 1.10 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#include "precompiled_slideshow.hxx" + +#include "effectrewinder.hxx" +#include "eventqueue.hxx" +#include "usereventqueue.hxx" +#include "mouseeventhandler.hxx" +#include "animationnodes/basecontainernode.hxx" +#include "delayevent.hxx" + +#include <com/sun/star/awt/MouseEvent.hpp> +#include <com/sun/star/animations/Event.hpp> +#include <com/sun/star/animations/EventTrigger.hpp> +#include <com/sun/star/container/XEnumerationAccess.hpp> +#include <boost/function.hpp> +#include <boost/bind.hpp> +#include <boost/enable_shared_from_this.hpp> + +using ::com::sun::star::uno::Reference; +using namespace ::com::sun::star; + +namespace slideshow { namespace internal { + + +namespace { + +class RewinderEventHandler : public EventHandler +{ +public: + typedef ::boost::function<bool(void)> Action; + RewinderEventHandler (const Action& rAction) : maAction(rAction) {} + virtual ~RewinderEventHandler (void) {} +private: + const Action maAction; + virtual bool handleEvent (void) { return maAction(); } +}; + + + +class RewinderAnimationEventHandler : public AnimationEventHandler +{ +public: + typedef ::boost::function<bool(const AnimationNodeSharedPtr& rpNode)> Action; + RewinderAnimationEventHandler (const Action& rAction) : maAction(rAction) {} + virtual ~RewinderAnimationEventHandler (void) {} +private: + const Action maAction; + virtual bool handleAnimationEvent (const AnimationNodeSharedPtr& rpNode) + { return maAction(rpNode); } +}; + + + +} // end of anonymous namespace + + +//----- EffectRewinder -------------------------------------------------------------- + +EffectRewinder::EffectRewinder ( + EventMultiplexer& rEventMultiplexer, + EventQueue& rEventQueue, + UserEventQueue& rUserEventQueue) + : mrEventMultiplexer(rEventMultiplexer), + mrEventQueue(rEventQueue), + mrUserEventQueue(rUserEventQueue), + mpSlideStartHandler(), + mpSlideEndHandler(), + mpAnimationStartHandler(), + mnMainSequenceEffectCount(0), + mpAsynchronousRewindEvent(), + mxCurrentAnimationRootNode(), + mbNonUserTriggeredMainSequenceEffectSeen(false) +{ + initialize(); +} + + + + +void EffectRewinder::initialize (void) +{ + // Add some event handlers so that we are informed when + // a) an animation is started (we then check whether that belongs to a + // main sequence effect and if so, increase the respective counter), + // b,c) a slide was started or ended (in which case the effect counter + // is reset. + + mpAnimationStartHandler.reset( + new RewinderAnimationEventHandler( + ::boost::bind(&EffectRewinder::notifyAnimationStart, this, _1))); + mrEventMultiplexer.addAnimationStartHandler(mpAnimationStartHandler); + + mpSlideStartHandler.reset( + new RewinderEventHandler( + ::boost::bind(&EffectRewinder::resetEffectCount, this))); + mrEventMultiplexer.addSlideStartHandler(mpSlideStartHandler); + + mpSlideEndHandler.reset( + new RewinderEventHandler( + ::boost::bind(&EffectRewinder::resetEffectCount, this))); + mrEventMultiplexer.addSlideEndHandler(mpSlideEndHandler); +} + + + + +EffectRewinder::~EffectRewinder (void) +{ + dispose(); +} + + + + +void EffectRewinder::dispose (void) +{ + if (mpAsynchronousRewindEvent) + { + mpAsynchronousRewindEvent->dispose(); + mpAsynchronousRewindEvent.reset(); + } + + if (mpAnimationStartHandler) + { + mrEventMultiplexer.removeAnimationStartHandler(mpAnimationStartHandler); + mpAnimationStartHandler.reset(); + } + + if (mpSlideStartHandler) + { + mrEventMultiplexer.removeSlideStartHandler(mpSlideStartHandler); + mpSlideStartHandler.reset(); + } + + if (mpSlideEndHandler) + { + mrEventMultiplexer.removeSlideEndHandler(mpSlideEndHandler); + mpSlideEndHandler.reset(); + } +} + + + + +void EffectRewinder::setRootAnimationNode ( + const uno::Reference<animations::XAnimationNode>& xRootNode) +{ + mxCurrentAnimationRootNode = xRootNode; +} + + + + +bool EffectRewinder::rewind ( + const ::boost::shared_ptr<ScreenUpdater::UpdateLock>& rpPaintLock, + const ::boost::function<void(void)>& rSlideRewindFunctor, + const ::boost::function<void(void)>& rPreviousSlideFunctor) +{ + mpPaintLock = rpPaintLock; + + // Do not allow nested rewinds. + if (mpAsynchronousRewindEvent) + { + OSL_ASSERT( ! mpAsynchronousRewindEvent); + return false; + } + + // Abort (and skip over the rest of) any currently active animation. + mrUserEventQueue.callSkipEffectEventHandler(); + mrEventQueue.forceEmpty(); + + const int nSkipCount (mnMainSequenceEffectCount - 1); + if (nSkipCount < 0) + { + if ( ! rPreviousSlideFunctor) + { + OSL_ASSERT(rPreviousSlideFunctor); + return false; + } + + // No main sequence effects to rewind on the current slide. + // Go back to the previous slide. + mpAsynchronousRewindEvent = makeEvent( + ::boost::bind( + &EffectRewinder::asynchronousRewindToPreviousSlide, + this, + rPreviousSlideFunctor), + "EffectRewinder::asynchronousRewindToPreviousSlide"); + } + else + { + // The actual rewinding is done asynchronously so that we can safely + // call other methods. + mpAsynchronousRewindEvent = makeEvent( + ::boost::bind( + &EffectRewinder::asynchronousRewind, + this, + nSkipCount, + true, + rSlideRewindFunctor), + "EffectRewinder::asynchronousRewind"); + } + + if (mpAsynchronousRewindEvent) + mrEventQueue.addEvent(mpAsynchronousRewindEvent); + + return mpAsynchronousRewindEvent.get()!=NULL; +} + + + + +void EffectRewinder::skipAllMainSequenceEffects (void) +{ + // Do not allow nested rewinds. + if (mpAsynchronousRewindEvent) + { + OSL_ASSERT(!mpAsynchronousRewindEvent); + return; + } + + const int nTotalMainSequenceEffectCount (countMainSequenceEffects()); + mpAsynchronousRewindEvent = makeEvent( + ::boost::bind( + &EffectRewinder::asynchronousRewind, + this, + nTotalMainSequenceEffectCount, + false, + ::boost::function<void(void)>()), + "EffectRewinder::asynchronousRewind"); + mrEventQueue.addEvent(mpAsynchronousRewindEvent); +} + + + + +sal_Int32 EffectRewinder::countMainSequenceEffects (void) +{ + // Determine the number of main sequence effects. + sal_Int32 nMainSequenceNodeCount (0); + + ::std::queue<uno::Reference<animations::XAnimationNode> > aNodeQueue; + aNodeQueue.push(mxCurrentAnimationRootNode); + while ( ! aNodeQueue.empty()) + { + const uno::Reference<animations::XAnimationNode> xNode (aNodeQueue.front()); + aNodeQueue.pop(); + + // Does the current node belong to the main sequence? + if (xNode.is()) + { + animations::Event aEvent; + if (xNode->getBegin() >>= aEvent) + if (aEvent.Trigger == animations::EventTrigger::ON_NEXT) + ++nMainSequenceNodeCount; + } + + // If the current node is a container then prepare its children for investigation. + uno::Reference<container::XEnumerationAccess> xEnumerationAccess (xNode, uno::UNO_QUERY); + if (xEnumerationAccess.is()) + { + uno::Reference<container::XEnumeration> xEnumeration ( + xEnumerationAccess->createEnumeration()); + if (xEnumeration.is()) + while (xEnumeration->hasMoreElements()) + { + aNodeQueue.push( + uno::Reference<animations::XAnimationNode>( + xEnumeration->nextElement(), uno::UNO_QUERY)); + } + } + } + + return nMainSequenceNodeCount; + + // // Skip all main sequence nodes. + // SkipSomeMainSequenceEffects(nMainSequenceNodeCount); +} + + + + +void EffectRewinder::skipSomeMainSequenceEffects (sal_Int32 nSkipCount) +{ + while (--nSkipCount >= 0) + skipSingleMainSequenceEffects(); +} + + + + +void EffectRewinder::skipSingleMainSequenceEffects (void) +{ + // This basically just starts the next effect and then skips over its + // animation. + mrEventMultiplexer.notifyNextEffect(); + mrEventQueue.forceEmpty(); + mrUserEventQueue.callSkipEffectEventHandler(); + mrEventQueue.forceEmpty(); +} + + + + +bool EffectRewinder::resetEffectCount (void) +{ + mnMainSequenceEffectCount = 0; + return false; +} + + + + +bool EffectRewinder::notifyAnimationStart (const AnimationNodeSharedPtr& rpNode) +{ + // This notification is only relevant for us when the rpNode belongs to + // the main sequence. + BaseNodeSharedPtr pBaseNode (::boost::dynamic_pointer_cast<BaseNode>(rpNode)); + if ( ! pBaseNode) + return false; + + BaseContainerNodeSharedPtr pParent (pBaseNode->getParentNode()); + if ( ! (pParent && pParent->isMainSequenceRootNode())) + return false; + + // This notification is only relevant for us when the effect is user + // triggered. + bool bIsUserTriggered (false); + + Reference<animations::XAnimationNode> xNode (rpNode->getXAnimationNode()); + if (xNode.is()) + { + animations::Event aEvent; + if ((xNode->getBegin() >>= aEvent)) + bIsUserTriggered = (aEvent.Trigger == animations::EventTrigger::ON_NEXT); + } + + if (bIsUserTriggered) + ++mnMainSequenceEffectCount; + else + mbNonUserTriggeredMainSequenceEffectSeen = true; + + return false; +} + + + + +void EffectRewinder::asynchronousRewind ( + sal_Int32 nEffectCount, + const bool bRedisplayCurrentSlide, + const boost::function<void(void)>& rSlideRewindFunctor) +{ + OSL_ASSERT(mpAsynchronousRewindEvent); + + if (bRedisplayCurrentSlide) + { + mpPaintLock->Activate(); + // Re-display the current slide. + if (rSlideRewindFunctor) + rSlideRewindFunctor(); + mpAsynchronousRewindEvent = makeEvent( + ::boost::bind( + &EffectRewinder::asynchronousRewind, + this, + nEffectCount, + false, + rSlideRewindFunctor), + "EffectRewinder::asynchronousRewind"); + mrEventQueue.addEvent(mpAsynchronousRewindEvent); + } + else + { + // Process initial events and skip any animations that are started + // when the slide is shown. + mbNonUserTriggeredMainSequenceEffectSeen = false; + mrEventQueue.forceEmpty(); + if (mbNonUserTriggeredMainSequenceEffectSeen) + { + mrUserEventQueue.callSkipEffectEventHandler(); + mrEventQueue.forceEmpty(); + } + + while (--nEffectCount >= 0) + skipSingleMainSequenceEffects(); + + mpAsynchronousRewindEvent.reset(); + mpPaintLock.reset(); + } +} + + + + +void EffectRewinder::asynchronousRewindToPreviousSlide ( + const ::boost::function<void(void)>& rSlideRewindFunctor) +{ + OSL_ASSERT(mpAsynchronousRewindEvent); + + mpAsynchronousRewindEvent.reset(); + rSlideRewindFunctor(); +} + + + + +} } // end of namespace ::slideshow::internal diff --git a/slideshow/source/engine/effectrewinder.hxx b/slideshow/source/engine/effectrewinder.hxx new file mode 100644 index 000000000000..804696c99c92 --- /dev/null +++ b/slideshow/source/engine/effectrewinder.hxx @@ -0,0 +1,185 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: slideshowimpl.cxx,v $ + * $Revision: 1.10 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef INCLUDED_SLIDESHOW_EFFECT_REWINDER_HXX +#define INCLUDED_SLIDESHOW_EFFECT_REWINDER_HXX + +#include "animationnode.hxx" +#include "eventhandler.hxx" +#include "animationeventhandler.hxx" +#include "event.hxx" +#include "screenupdater.hxx" + +#include <com/sun/star/presentation/XSlideShow.hpp> +#include <boost/scoped_ptr.hpp> +#include <boost/function.hpp> +#include <vector> + +namespace css = ::com::sun::star; + +namespace slideshow { namespace internal { + +class EventMultiplexer; +class EventQueue; +class UserEventQueue; + +/** Rewind single effects of the main effect sequence. A rewind is + initiated by calling the Rewind() method. Part of the processing is + done asynchronously. Multiple EventQueue::update() calls may be + necessary to finish a rewind. + + Remember to call SetRootAnimationNode() when switching to a different + slide so that the EffectRewinder can determine the number of main + sequence effects. +*/ +class EffectRewinder +{ +public: + EffectRewinder ( + EventMultiplexer& rEventMultiplexer, + EventQueue& rEventQueue, + UserEventQueue& rUserEventQueue); + ~EffectRewinder (void); + + /** Call Dispose() before the ownder of an EffectRewinder object dies so + that the EffectRewinder can release all references to the owner. + + */ + void dispose (void); + + /** Store the root node of the animation tree. It is used in + CountMainSequenceEffects() to count the number of main sequence + effects (or effect groups.) + */ + void setRootAnimationNode ( + const css::uno::Reference<css::animations::XAnimationNode>& xRootNode); + + /** Rewind one effect of the main effect sequence. When the current + slide has not effects or no main sequence effect has yet been played + then switch to the previous slide and replay all of its main + sequence effects. + The caller has to pass two functors that redisplay the current slide + or switch to the previous slide so that it does not have to expose + its internals to us. Only one of the two functors is called. + @param rpPaintLock + This paint lock is released after the whole asynchronous + procoess of rewinding the current effect is completed. It + prevents intermediate repaints that would show partial replay + of effects. + @param rSlideRewindFunctor + This functor is called when the current slide is to be + redisplayed. When it is called then the other functor is not + called. + @param rPreviousSlideFunctor + This functor is called to switch to the previous slide. When it + is called then the other functor is not called. + */ + bool rewind ( + const ::boost::shared_ptr<ScreenUpdater::UpdateLock>& rpPaintLock, + const ::boost::function<void(void)>& rSlideRewindFunctor, + const ::boost::function<void(void)>& rPreviousSlideFunctor); + + /** Call this method after gotoPreviousEffect() triggered a slide change + to the previous slide. + */ + void skipAllMainSequenceEffects (void); + +private: + EventMultiplexer& mrEventMultiplexer; + EventQueue& mrEventQueue; + UserEventQueue& mrUserEventQueue; + + EventHandlerSharedPtr mpSlideStartHandler; + EventHandlerSharedPtr mpSlideEndHandler; + AnimationEventHandlerSharedPtr mpAnimationStartHandler; + + /** The number off main sequence effects so far. + */ + sal_Int32 mnMainSequenceEffectCount; + + /** This is the currently scheduled event that executes the asynchronous + part of the effect rewinding. It is also used as flag that prevents + nested rewinds. + */ + EventSharedPtr mpAsynchronousRewindEvent; + + css::uno::Reference<css::animations::XAnimationNode> mxCurrentAnimationRootNode; + ::boost::shared_ptr<ScreenUpdater::UpdateLock> mpPaintLock; + + bool mbNonUserTriggeredMainSequenceEffectSeen; + + void initialize (void); + + bool resetEffectCount (void); + /** Called by listeners when an animation (not necessarily of a main + sequence effect) starts. + */ + bool notifyAnimationStart (const AnimationNodeSharedPtr& rpNode); + + /** Count the number of effects (or effect groups) in the main effect + sequence. + */ + sal_Int32 countMainSequenceEffects (void); + + /** Skip the next main sequence effect. + */ + void skipSingleMainSequenceEffects (void); + + /** Skip the specified number of main sequence effects. + */ + void skipSomeMainSequenceEffects (const sal_Int32 nSkipCount); + + /** Rewind the last effect of the main effect sequence by replaying all + previous effects. + @param nEffectCount + The number of main sequence effects to replay. + @param bRedisplayCurrentSlide + When <TRUE/> then the current slide is redisplayed before the + effects are replayed. + @param rSlideRewindFunctor + This functor is used to redisplay the current slide. + */ + void asynchronousRewind ( + sal_Int32 nEffectCount, + const bool bRedisplayCurrentSlide, + const boost::function<void(void)>& rSlideRewindFunctor); + + /** Go to the previous slide and replay all of its main sequence effects + (or effect groups). + @param rPreviousSlideFunctor + This functor is used to go to the previous slide. + */ + void asynchronousRewindToPreviousSlide ( + const ::boost::function<void(void)>& rPreviousSlideFunctor); +}; + +} } // end of namespace ::slideshow::internal + +#endif diff --git a/slideshow/source/engine/eventmultiplexer.cxx b/slideshow/source/engine/eventmultiplexer.cxx index 181a787301b7..d62a7946d3c7 100644 --- a/slideshow/source/engine/eventmultiplexer.cxx +++ b/slideshow/source/engine/eventmultiplexer.cxx @@ -369,7 +369,8 @@ void SAL_CALL EventMultiplexerListener::mousePressed( mpEventQueue->addEvent( makeEvent( boost::bind( &EventMultiplexerImpl::mousePressed, mpEventMultiplexer, - e ) ) ); + e ), + "EventMultiplexerImpl::mousePressed") ); } void SAL_CALL EventMultiplexerListener::mouseReleased( @@ -383,7 +384,8 @@ void SAL_CALL EventMultiplexerListener::mouseReleased( mpEventQueue->addEvent( makeEvent( boost::bind( &EventMultiplexerImpl::mouseReleased, mpEventMultiplexer, - e ) ) ); + e ), + "EventMultiplexerImpl::mouseReleased") ); } void SAL_CALL EventMultiplexerListener::mouseEntered( @@ -410,7 +412,8 @@ void SAL_CALL EventMultiplexerListener::mouseDragged( mpEventQueue->addEvent( makeEvent( boost::bind( &EventMultiplexerImpl::mouseDragged, mpEventMultiplexer, - e )) ); + e ), + "EventMultiplexerImpl::mouseDragged") ); } void SAL_CALL EventMultiplexerListener::mouseMoved( @@ -424,7 +427,8 @@ void SAL_CALL EventMultiplexerListener::mouseMoved( mpEventQueue->addEvent( makeEvent( boost::bind( &EventMultiplexerImpl::mouseMoved, mpEventMultiplexer, - e )) ); + e ), + "EventMultiplexerImpl::mouseMoved") ); } @@ -448,7 +452,15 @@ void EventMultiplexerImpl::forEachView( XSlideShowViewFunc pViewMethod ) for( UnoViewVector::const_iterator aIter( mrViewContainer.begin() ), aEnd( mrViewContainer.end() ); aIter != aEnd; ++aIter ) { - ((*aIter)->getUnoView().get()->*pViewMethod)( mxListener.get() ); + uno::Reference<presentation::XSlideShowView> xView ((*aIter)->getUnoView()); + if (xView.is()) + { + (xView.get()->*pViewMethod)( mxListener.get() ); + } + else + { + OSL_ASSERT(xView.is()); + } } } } @@ -520,7 +532,8 @@ void EventMultiplexerImpl::scheduleTick() EventSharedPtr pEvent( makeDelay( boost::bind( &EventMultiplexerImpl::tick, this ), - mnTimeout )); + mnTimeout, + "EventMultiplexerImpl::tick with delay")); // store weak reference to generated event, to notice when // the event queue gets cleansed (we then have to diff --git a/slideshow/source/engine/eventqueue.cxx b/slideshow/source/engine/eventqueue.cxx index 9d7b7ed65eb1..44e1cad2f45e 100644 --- a/slideshow/source/engine/eventqueue.cxx +++ b/slideshow/source/engine/eventqueue.cxx @@ -35,6 +35,7 @@ #include <canvas/debug.hxx> #include <tools/diagnose_ex.h> #include <canvas/verbosetrace.hxx> +#include "debug.hxx" #include <comphelper/anytostring.hxx> #include <cppuhelper/exc_hlp.hxx> @@ -66,6 +67,7 @@ namespace slideshow : maMutex(), maEvents(), maNextEvents(), + maNextNextEvents(), mpTimer( pPresTimer ) { } @@ -103,6 +105,13 @@ namespace slideshow { ::osl::MutexGuard aGuard( maMutex ); +#if OSL_DEBUG_LEVEL > 1 && defined (SLIDESHOW_ADD_DESCRIPTIONS_TO_EVENTS) + OSL_TRACE("adding at %f event [%s] at %x with delay %f\r", + mpTimer->getElapsedTime(), + OUStringToOString(rEvent->GetDescription(), RTL_TEXTENCODING_UTF8).getStr(), + rEvent.get(), + rEvent->getActivationTime(0.0)); +#endif ENSURE_OR_RETURN( rEvent, "EventQueue::addEvent: event ptr NULL" ); @@ -124,6 +133,14 @@ namespace slideshow { ::osl::MutexGuard aGuard( maMutex ); +#if OSL_DEBUG_LEVEL > 1 && defined (SLIDESHOW_ADD_DESCRIPTIONS_TO_EVENTS) + OSL_TRACE("adding at %f event [%s] at %x for next round with delay %f\r", + mpTimer->getElapsedTime(), + OUStringToOString(rEvent->GetDescription(), RTL_TEXTENCODING_UTF8).getStr(), + rEvent.get(), + rEvent->getActivationTime(0.0)); +#endif + ENSURE_OR_RETURN( rEvent.get() != NULL, "EventQueue::addEvent: event ptr NULL" ); maNextEvents.push_back( @@ -132,6 +149,30 @@ namespace slideshow return true; } + bool EventQueue::addEventWhenQueueIsEmpty (const EventSharedPtr& rpEvent) + { + ::osl::MutexGuard aGuard( maMutex ); + +#if OSL_DEBUG_LEVEL > 1 && defined (SLIDESHOW_ADD_DESCRIPTIONS_TO_EVENTS) + OSL_TRACE("adding at %f event [%s] at %x for execution when queue is empty with delay %f\r", + mpTimer->getElapsedTime(), + OUStringToOString(rpEvent->GetDescription(), RTL_TEXTENCODING_UTF8).getStr(), + rpEvent.get(), + rpEvent->getActivationTime(0.0)); +#endif + + ENSURE_OR_RETURN( + rpEvent.get() != NULL, + "EventQueue::addEvent: event ptr NULL"); + + maNextNextEvents.push( + EventEntry( + rpEvent, + rpEvent->getActivationTime(mpTimer->getElapsedTime()))); + + return true; + } + void EventQueue::forceEmpty() { ::osl::MutexGuard aGuard( maMutex ); @@ -163,6 +204,17 @@ namespace slideshow const double nCurrTime( mpTimer->getElapsedTime() ); + // When maEvents does not contain any events that are due now + // then process one event from maNextNextEvents. + if (!maNextNextEvents.empty() + && !bFireAllEvents + && (maEvents.empty() || maEvents.top().nTime > nCurrTime)) + { + const EventEntry aEvent (maNextNextEvents.top()); + maNextNextEvents.pop(); + maEvents.push(aEvent); + } + // process ready/elapsed events. Note that the 'perceived' // current time remains constant for this loop, thus we're // processing only those events which where ready when we @@ -189,6 +241,14 @@ namespace slideshow event.pEvent.get(), event.pEvent->getActivationTime(0.0) ); #endif +#if OSL_DEBUG_LEVEL > 1 && defined (SLIDESHOW_ADD_DESCRIPTIONS_TO_EVENTS) + OSL_TRACE("firing at %f event [%s] at %x with delay %f\r", + mpTimer->getElapsedTime(), + OUStringToOString(event.pEvent->GetDescription(), + RTL_TEXTENCODING_UTF8).getStr(), + event.pEvent.get(), + event.pEvent->getActivationTime(0.0)); +#endif event.pEvent->fire(); } @@ -243,7 +303,7 @@ namespace slideshow { ::osl::MutexGuard aGuard( maMutex ); - return maEvents.empty(); + return maEvents.empty() && maNextEvents.empty() && maNextNextEvents.empty(); } double EventQueue::nextTimeout() const @@ -251,9 +311,16 @@ namespace slideshow ::osl::MutexGuard aGuard( maMutex ); // return time for next entry (if any) - return isEmpty() ? - ::std::numeric_limits<double>::max() : - maEvents.top().nTime - mpTimer->getElapsedTime(); + double nTimeout (::std::numeric_limits<double>::max()); + const double nCurrentTime (mpTimer->getElapsedTime()); + if ( ! maEvents.empty()) + nTimeout = maEvents.top().nTime - nCurrentTime; + if ( ! maNextEvents.empty()) + nTimeout = ::std::min(nTimeout, maNextEvents.front().nTime - nCurrentTime); + if ( ! maNextNextEvents.empty()) + nTimeout = ::std::min(nTimeout, maNextNextEvents.top().nTime - nCurrentTime); + + return nTimeout; } void EventQueue::clear() @@ -263,6 +330,9 @@ namespace slideshow // TODO(P1): Maybe a plain vector and vector.swap will // be faster here. Profile. maEvents = ImplQueueType(); + + maNextEvents.clear(); + maNextNextEvents = ImplQueueType(); } } } diff --git a/slideshow/source/engine/makefile.mk b/slideshow/source/engine/makefile.mk index b064ad7b94cb..84afa7fb657e 100644 --- a/slideshow/source/engine/makefile.mk +++ b/slideshow/source/engine/makefile.mk @@ -72,6 +72,7 @@ SLOFILES = $(SLO)$/activitiesqueue.obj \ $(SLO)$/attributemap.obj \ $(SLO)$/color.obj \ $(SLO)$/delayevent.obj \ + $(SLO)$/effectrewinder.obj \ $(SLO)$/eventmultiplexer.obj \ $(SLO)$/eventqueue.obj \ $(SLO)$/expressionnodefactory.obj \ @@ -89,7 +90,8 @@ SLOFILES = $(SLO)$/activitiesqueue.obj \ $(SLO)$/unoviewcontainer.obj \ $(SLO)$/usereventqueue.obj \ $(SLO)$/waitsymbol.obj \ - $(SLO)$/wakeupevent.obj + $(SLO)$/wakeupevent.obj \ + $(SLO)$/debug.obj .IF "$(debug)"!="" || "$(DEBUG)"!="" SLOFILES += $(SLO)$/sp_debug.obj diff --git a/slideshow/source/engine/rehearsetimingsactivity.cxx b/slideshow/source/engine/rehearsetimingsactivity.cxx index f8e9cf2f8e6c..90efe8b5aedd 100644 --- a/slideshow/source/engine/rehearsetimingsactivity.cxx +++ b/slideshow/source/engine/rehearsetimingsactivity.cxx @@ -72,6 +72,9 @@ public: WakeupEvent( boost::shared_ptr< ::canvas::tools::ElapsedTime > const& pTimeBase, ActivitySharedPtr const& rActivity, ActivitiesQueue & rActivityQueue ) : +#if OSL_DEBUG_LEVEL > 1 + Event(::rtl::OUString::createFromAscii("WakeupEvent")), +#endif maTimer(pTimeBase), mnNextTime(0.0), mpActivity(rActivity), diff --git a/slideshow/source/engine/screenupdater.cxx b/slideshow/source/engine/screenupdater.cxx index bf512dfca5db..940d45337919 100644 --- a/slideshow/source/engine/screenupdater.cxx +++ b/slideshow/source/engine/screenupdater.cxx @@ -36,6 +36,19 @@ #include <vector> #include <algorithm> +namespace { + class UpdateLock : public ::slideshow::internal::ScreenUpdater::UpdateLock + { + public: + UpdateLock (::slideshow::internal::ScreenUpdater& rUpdater, const bool bStartLocked); + virtual ~UpdateLock (void); + virtual void Activate (void); + private: + ::slideshow::internal::ScreenUpdater& mrUpdater; + bool mbIsActivated; + }; +} + namespace slideshow { namespace internal @@ -64,12 +77,16 @@ namespace internal /// True, if at least one notifyUpdate() call had bViewClobbered set bool mbViewClobbered; + /// The screen is updated only when mnLockCount==0 + sal_Int32 mnLockCount; + explicit ImplScreenUpdater( UnoViewContainer const& rViewContainer ) : maUpdaters(), maViewUpdateRequests(), mrViewContainer(rViewContainer), mbUpdateAllRequest(false), - mbViewClobbered(false) + mbViewClobbered(false), + mnLockCount(0) {} }; @@ -100,6 +117,9 @@ namespace internal void ScreenUpdater::commitUpdates() { + if (mpImpl->mnLockCount > 0) + return; + // cases: // // (a) no update necessary at all @@ -178,6 +198,9 @@ namespace internal void ScreenUpdater::requestImmediateUpdate() { + if (mpImpl->mnLockCount > 0) + return; + // TODO(F2): This will interfere with other updates, since it // happens out-of-sync with main animation loop. Might cause // artifacts. @@ -186,5 +209,63 @@ namespace internal boost::mem_fn(&View::updateScreen) ); } + void ScreenUpdater::lockUpdates (void) + { + ++mpImpl->mnLockCount; + OSL_ASSERT(mpImpl->mnLockCount>0); + } + + void ScreenUpdater::unlockUpdates (void) + { + OSL_ASSERT(mpImpl->mnLockCount>0); + if (mpImpl->mnLockCount > 0) + { + --mpImpl->mnLockCount; + if (mpImpl->mnLockCount) + commitUpdates(); + } + } + + ::boost::shared_ptr<ScreenUpdater::UpdateLock> ScreenUpdater::createLock (const bool bStartLocked) + { + return ::boost::shared_ptr<ScreenUpdater::UpdateLock>(new ::UpdateLock(*this, bStartLocked)); + } + + } // namespace internal } // namespace slideshow + +namespace { + +UpdateLock::UpdateLock ( + ::slideshow::internal::ScreenUpdater& rUpdater, + const bool bStartLocked) + : mrUpdater(rUpdater), + mbIsActivated(false) +{ + if (bStartLocked) + Activate(); +} + + + + +UpdateLock::~UpdateLock (void) +{ + if (mbIsActivated) + mrUpdater.unlockUpdates(); +} + + + + +void UpdateLock::Activate (void) +{ + if ( ! mbIsActivated) + { + mbIsActivated = true; + mrUpdater.lockUpdates(); + } +} + +} diff --git a/slideshow/source/engine/shapes/drawshape.cxx b/slideshow/source/engine/shapes/drawshape.cxx index e588a8fb4e58..899804fe1896 100644 --- a/slideshow/source/engine/shapes/drawshape.cxx +++ b/slideshow/source/engine/shapes/drawshape.cxx @@ -262,7 +262,8 @@ namespace slideshow void DrawShape::updateStateIds() const { - // update the states, we've just redrawn + // Update the states, we've just redrawn or created a new + // attribute layer. if( mpAttributeLayer ) { mnAttributeTransformationState = mpAttributeLayer->getTransformationState(); @@ -1277,6 +1278,9 @@ namespace slideshow // create new layer, with last as its new child mpAttributeLayer.reset( new ShapeAttributeLayer( mpAttributeLayer ) ); + // Update the local state ids to reflect those of the new layer. + updateStateIds(); + return mpAttributeLayer; } diff --git a/slideshow/source/engine/shapes/viewmediashape.cxx b/slideshow/source/engine/shapes/viewmediashape.cxx index a02c795d4943..03fdff737e7c 100644 --- a/slideshow/source/engine/shapes/viewmediashape.cxx +++ b/slideshow/source/engine/shapes/viewmediashape.cxx @@ -71,6 +71,7 @@ #include "viewmediashape.hxx" #include "mediashape.hxx" #include "tools.hxx" +#include "unoview.hxx" using namespace ::com::sun::star; @@ -88,12 +89,19 @@ namespace slideshow mxShape( rxShape ), mxPlayer(), mxPlayerWindow(), - mxComponentContext( rxContext ) + mxComponentContext( rxContext ), + mbIsSoundEnabled(true) { ENSURE_OR_THROW( mxShape.is(), "ViewMediaShape::ViewMediaShape(): Invalid Shape" ); ENSURE_OR_THROW( mpViewLayer, "ViewMediaShape::ViewMediaShape(): Invalid View" ); ENSURE_OR_THROW( mpViewLayer->getCanvas(), "ViewMediaShape::ViewMediaShape(): Invalid ViewLayer canvas" ); ENSURE_OR_THROW( mxComponentContext.is(), "ViewMediaShape::ViewMediaShape(): Invalid component context" ); + + UnoViewSharedPtr pUnoView (::boost::dynamic_pointer_cast<UnoView>(rViewLayer)); + if (pUnoView) + { + mbIsSoundEnabled = pUnoView->isSoundEnabled(); + } } // --------------------------------------------------------------------- @@ -352,7 +360,7 @@ namespace slideshow getPropertyValue( bMute, rxProps, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Mute" ))); - mxPlayer->setMute( bMute ); + mxPlayer->setMute( bMute || !mbIsSoundEnabled); sal_Int16 nVolumeDB(0); getPropertyValue( nVolumeDB, diff --git a/slideshow/source/engine/shapes/viewmediashape.hxx b/slideshow/source/engine/shapes/viewmediashape.hxx index 09f4d4fa53ef..f28fe3d74f75 100644 --- a/slideshow/source/engine/shapes/viewmediashape.hxx +++ b/slideshow/source/engine/shapes/viewmediashape.hxx @@ -166,6 +166,7 @@ namespace slideshow ::com::sun::star::uno::Reference< ::com::sun::star::media::XPlayer > mxPlayer; ::com::sun::star::uno::Reference< ::com::sun::star::media::XPlayerWindow > mxPlayerWindow; ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext> mxComponentContext; + bool mbIsSoundEnabled; }; typedef ::boost::shared_ptr< ViewMediaShape > ViewMediaShapeSharedPtr; diff --git a/slideshow/source/engine/slide/layermanager.cxx b/slideshow/source/engine/slide/layermanager.cxx index ceff661890bf..251cff3a73b3 100644 --- a/slideshow/source/engine/slide/layermanager.cxx +++ b/slideshow/source/engine/slide/layermanager.cxx @@ -67,11 +67,11 @@ namespace slideshow { LayerSharedPtr pCurrLayer; ViewLayerSharedPtr pCurrViewLayer; - LayerShapeSet::const_iterator aIter( maAllShapes.begin() ); - const LayerShapeSet::const_iterator aEnd ( maAllShapes.end() ); + LayerShapeMap::const_iterator aIter( maAllShapes.begin() ); + const LayerShapeMap::const_iterator aEnd ( maAllShapes.end() ); while( aIter != aEnd ) { - LayerSharedPtr pLayer = aIter->mpLayer.lock(); + LayerSharedPtr pLayer = aIter->second.lock(); if( pLayer && pLayer != pCurrLayer ) { pCurrLayer = pLayer; @@ -79,7 +79,7 @@ namespace slideshow } if( pCurrViewLayer ) - shapeFunc(aIter->mpShape,pCurrViewLayer); + shapeFunc(aIter->first,pCurrViewLayer); ++aIter; } @@ -164,9 +164,18 @@ namespace slideshow std::for_each(maAllShapes.begin(), maAllShapes.end(), boost::bind( &Shape::clearAllViewLayers, - boost::bind( &ShapeEntry::getShape, + boost::bind( std::select1st<LayerShapeMap::value_type>(), _1 ))); + for (LayerShapeMap::iterator + iShape (maAllShapes.begin()), + iEnd (maAllShapes.end()); + iShape!=iEnd; + ++iShape) + { + iShape->second.reset(); + } + if( bMoreThanOneLayer ) maLayers.erase(maLayers.begin()+1, maLayers.end()); @@ -265,8 +274,7 @@ namespace slideshow std::for_each( maAllShapes.begin(), maAllShapes.end(), boost::bind(&Shape::render, - boost::bind(&ShapeEntry::getShape, - _1)) ); + boost::bind( ::std::select1st<LayerShapeMap::value_type>(), _1)) ); } void LayerManager::addShape( const ShapeSharedPtr& rShape ) @@ -287,13 +295,11 @@ namespace slideshow implAddShape( rShape ); } - void LayerManager::putShape2BackgroundLayer( const ShapeEntry& rShapeEntry ) + void LayerManager::putShape2BackgroundLayer( LayerShapeMap::value_type& rShapeEntry ) { LayerSharedPtr& rBgLayer( maLayers.front() ); - rBgLayer->setShapeViews(rShapeEntry.mpShape); - // changing a part of the ShapeEntry irrelevant for the - // set sort order - const_cast<ShapeEntry&>(rShapeEntry).mpLayer = rBgLayer; + rBgLayer->setShapeViews(rShapeEntry.first); + rShapeEntry.second = rBgLayer; } void LayerManager::implAddShape( const ShapeSharedPtr& rShape ) @@ -301,16 +307,16 @@ namespace slideshow OSL_ASSERT( !maLayers.empty() ); // always at least background layer ENSURE_OR_THROW( rShape, "LayerManager::implAddShape(): invalid Shape" ); - ShapeEntry aShapeEntry(rShape); + LayerShapeMap::value_type aValue (rShape, LayerWeakPtr()); - OSL_ASSERT( maAllShapes.find(aShapeEntry) == maAllShapes.end() ); // shape must not be added already + OSL_ASSERT( maAllShapes.find(rShape) == maAllShapes.end() ); // shape must not be added already mbLayerAssociationDirty = true; if( mbDisableAnimationZOrder ) putShape2BackgroundLayer( - *maAllShapes.insert(aShapeEntry).first ); + *maAllShapes.insert(aValue).first ); else - maAllShapes.insert(aShapeEntry); + maAllShapes.insert(aValue); // update shape, it's just added and not yet painted if( rShape->isVisible() ) @@ -323,8 +329,7 @@ namespace slideshow if( maXShapeHash.erase( rShape->getXShape() ) == 0 ) return false; // shape not in map - OSL_ASSERT( maAllShapes.find( - ShapeEntry(rShape)) != maAllShapes.end() ); + OSL_ASSERT( maAllShapes.find(rShape) != maAllShapes.end() ); implRemoveShape( rShape ); @@ -336,9 +341,7 @@ namespace slideshow OSL_ASSERT( !maLayers.empty() ); // always at least background layer ENSURE_OR_THROW( rShape, "LayerManager::implRemoveShape(): invalid Shape" ); - const LayerShapeSet::iterator aShapeEntry( - maAllShapes.find( - ShapeEntry(rShape)) ); + const LayerShapeMap::iterator aShapeEntry( maAllShapes.find(rShape) ); if( aShapeEntry == maAllShapes.end() ) return; @@ -354,7 +357,7 @@ namespace slideshow (rShape->isVisible() && !rShape->isBackgroundDetached()) ) { - LayerSharedPtr pLayer = aShapeEntry->mpLayer.lock(); + LayerSharedPtr pLayer = aShapeEntry->second.lock(); if( pLayer ) { // store area early, once the shape is removed from @@ -419,8 +422,7 @@ namespace slideshow if( rOrigShape->revokeSubset( rSubsetShape ) ) { - OSL_ASSERT( maAllShapes.find( - ShapeEntry(rSubsetShape)) != maAllShapes.end() ); + OSL_ASSERT( maAllShapes.find(rSubsetShape) != maAllShapes.end() ); implRemoveShape( rSubsetShape ); @@ -584,11 +586,11 @@ namespace slideshow bool bIsCurrLayerUpdating(false); Layer::EndUpdater aEndUpdater; LayerSharedPtr pCurrLayer; - LayerShapeSet::const_iterator aIter( maAllShapes.begin() ); - const LayerShapeSet::const_iterator aEnd ( maAllShapes.end() ); + LayerShapeMap::const_iterator aIter( maAllShapes.begin() ); + const LayerShapeMap::const_iterator aEnd ( maAllShapes.end() ); while( aIter != aEnd ) { - LayerSharedPtr pLayer = aIter->mpLayer.lock(); + LayerSharedPtr pLayer = aIter->second.lock(); if( pLayer != pCurrLayer ) { pCurrLayer = pLayer; @@ -599,10 +601,10 @@ namespace slideshow } if( bIsCurrLayerUpdating && - !aIter->mpShape->isBackgroundDetached() && - pCurrLayer->isInsideUpdateArea(aIter->mpShape) ) + !aIter->first->isBackgroundDetached() && + pCurrLayer->isInsideUpdateArea(aIter->first) ) { - if( !aIter->mpShape->render() ) + if( !aIter->first->render() ) bRet = false; } @@ -694,8 +696,8 @@ namespace slideshow bool bRet( true ); ViewLayerSharedPtr pTmpLayer( new DummyLayer( rTargetCanvas ) ); - LayerShapeSet::const_iterator aIter( maAllShapes.begin() ); - const LayerShapeSet::const_iterator aEnd ( maAllShapes.end() ); + LayerShapeMap::const_iterator aIter( maAllShapes.begin() ); + const LayerShapeMap::const_iterator aEnd ( maAllShapes.end() ); while( aIter != aEnd ) { try @@ -705,11 +707,11 @@ namespace slideshow // ViewLayer. Since we add the shapes in the // maShapeSet order (which is also the render order), // this is equivalent to a subsequent render() call) - aIter->mpShape->addViewLayer( pTmpLayer, - true ); + aIter->first->addViewLayer( pTmpLayer, + true ); // and remove again, this is only temporary - aIter->mpShape->removeViewLayer( pTmpLayer ); + aIter->first->removeViewLayer( pTmpLayer ); } catch( uno::Exception& ) { @@ -735,21 +737,19 @@ namespace slideshow OSL_ASSERT( !maLayers.empty() ); // always at least background layer ENSURE_OR_THROW( rShape, "LayerManager::addUpdateArea(): invalid Shape" ); - const LayerShapeSet::const_iterator aShapeEntry( - maAllShapes.find( - ShapeEntry(rShape)) ); + const LayerShapeMap::const_iterator aShapeEntry( maAllShapes.find(rShape) ); if( aShapeEntry == maAllShapes.end() ) return; - LayerSharedPtr pLayer = aShapeEntry->mpLayer.lock(); + LayerSharedPtr pLayer = aShapeEntry->second.lock(); if( pLayer ) pLayer->addUpdateRange( rShape->getUpdateArea() ); } void LayerManager::commitLayerChanges( std::size_t nCurrLayerIndex, - LayerShapeSet::const_iterator aFirstLayerShape, - LayerShapeSet::const_iterator aEndLayerShapes ) + LayerShapeMap::const_iterator aFirstLayerShape, + LayerShapeMap::const_iterator aEndLayerShapes ) { const bool bLayerExists( maLayers.size() > nCurrLayerIndex ); if( bLayerExists ) @@ -768,8 +768,8 @@ namespace slideshow // render and remove from update set while( aFirstLayerShape != aEndLayerShapes ) { - maUpdateShapes.erase(aFirstLayerShape->mpShape); - aFirstLayerShape->mpShape->render(); + maUpdateShapes.erase(aFirstLayerShape->first); + aFirstLayerShape->first->render(); ++aFirstLayerShape; } } @@ -825,13 +825,13 @@ namespace slideshow std::size_t nCurrLayerIndex(0); bool bIsBackgroundLayer(true); bool bLastWasBackgroundDetached(false); // last shape sprite state - LayerShapeSet::iterator aCurrShapeEntry( maAllShapes.begin() ); - LayerShapeSet::iterator aCurrLayerFirstShapeEntry( maAllShapes.begin() ); - const LayerShapeSet::iterator aEndShapeEntry ( maAllShapes.end() ); + LayerShapeMap::iterator aCurrShapeEntry( maAllShapes.begin() ); + LayerShapeMap::iterator aCurrLayerFirstShapeEntry( maAllShapes.begin() ); + const LayerShapeMap::iterator aEndShapeEntry ( maAllShapes.end() ); ShapeUpdateSet aUpdatedShapes; // shapes that need update while( aCurrShapeEntry != aEndShapeEntry ) { - const ShapeSharedPtr pCurrShape( aCurrShapeEntry->mpShape ); + const ShapeSharedPtr pCurrShape( aCurrShapeEntry->first ); const bool bThisIsBackgroundDetached( pCurrShape->isBackgroundDetached() ); @@ -851,7 +851,7 @@ namespace slideshow bIsBackgroundLayer = false; if( aWeakLayers.size() <= nCurrLayerIndex || - aWeakLayers.at(nCurrLayerIndex) != aCurrShapeEntry->mpLayer ) + aWeakLayers.at(nCurrLayerIndex) != aCurrShapeEntry->second ) { // no more layers left, or shape was not // member of this layer - create a new one @@ -868,7 +868,7 @@ namespace slideshow // above invalidates iterators LayerSharedPtr& rCurrLayer( maLayers.at(nCurrLayerIndex) ); LayerWeakPtr& rCurrWeakLayer( aWeakLayers.at(nCurrLayerIndex) ); - if( rCurrWeakLayer != aCurrShapeEntry->mpLayer ) + if( rCurrWeakLayer != aCurrShapeEntry->second ) { // mismatch: shape is not contained in current // layer - move shape to that layer, then. @@ -879,7 +879,7 @@ namespace slideshow // non-sprite shape if( !bThisIsBackgroundDetached && pCurrShape->isVisible() ) { - LayerSharedPtr pOldLayer( aCurrShapeEntry->mpLayer.lock() ); + LayerSharedPtr pOldLayer( aCurrShapeEntry->second.lock() ); if( pOldLayer ) { // old layer still valid? then we need to @@ -894,10 +894,7 @@ namespace slideshow maUpdateShapes.insert( pCurrShape ); } - // std::set iterators are const for a reason - but - // here, we need modify an aspect of the - // ShapeEntry that has no influence on sort order - const_cast<ShapeEntry&>(*aCurrShapeEntry).mpLayer = rCurrWeakLayer; + aCurrShapeEntry->second = rCurrWeakLayer; } // update layerbounds regardless of the fact that the diff --git a/slideshow/source/engine/slide/layermanager.hxx b/slideshow/source/engine/slide/layermanager.hxx index 2fb72af1be18..5a1512bb4f7e 100644 --- a/slideshow/source/engine/slide/layermanager.hxx +++ b/slideshow/source/engine/slide/layermanager.hxx @@ -254,33 +254,18 @@ namespace slideshow hash< ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > > > XShapeHash; - /** Element of all-shapes set - */ - struct ShapeEntry + class ShapeComparator { - /// Shape this entry stands for - ShapeSharedPtr mpShape; - - /// Layer this shape is currently displayed on - LayerWeakPtr mpLayer; - - explicit ShapeEntry( ShapeSharedPtr const& rShape ) : - mpShape(rShape), - mpLayer() - {} - - ShapeSharedPtr const& getShape() const { return mpShape; } - - bool operator<( const ShapeEntry& rRHS ) const + public: + bool operator() (const ShapeSharedPtr& rpS1, const ShapeSharedPtr& rpS2 ) const { - return Shape::lessThanShape::compare(mpShape.get(), - rRHS.mpShape.get()); + return Shape::lessThanShape::compare(rpS1.get(), rpS2.get()); } }; - /** Set of all shapes */ - typedef ::std::set< ShapeEntry > LayerShapeSet; + private: + typedef ::std::map< ShapeSharedPtr, LayerWeakPtr, ShapeComparator > LayerShapeMap; typedef ::std::set< ShapeSharedPtr > ShapeUpdateSet; @@ -309,12 +294,12 @@ namespace slideshow denoting one-behind-the-last shape of nCurrLayerIndex */ void commitLayerChanges( std::size_t nCurrLayerIndex, - LayerShapeSet::const_iterator aFirstLayerShape, - LayerShapeSet::const_iterator aEndLayerShapes ); + LayerShapeMap::const_iterator aFirstLayerShape, + LayerShapeMap::const_iterator aEndLayerShapes ); /** Init Shape layers with background layer. */ - void putShape2BackgroundLayer( const ShapeEntry& rShapeEntry ); + void putShape2BackgroundLayer( LayerShapeMap::value_type& rShapeEntry ); /** Commits any pending layer reorg, due to shapes either entering or leaving animation mode @@ -364,7 +349,7 @@ namespace slideshow for buffering animation enable/disable changes, and shape update requests. */ - LayerShapeSet maAllShapes; + LayerShapeMap maAllShapes; /** Set of shapes that have requested an update diff --git a/slideshow/source/engine/slideshowimpl.cxx b/slideshow/source/engine/slideshowimpl.cxx index d8dc7931add1..109e64ca63c1 100644 --- a/slideshow/source/engine/slideshowimpl.cxx +++ b/slideshow/source/engine/slideshowimpl.cxx @@ -71,6 +71,7 @@ #include <com/sun/star/animations/TransitionType.hpp> #include <com/sun/star/animations/TransitionSubType.hpp> #include <com/sun/star/presentation/XSlideShow.hpp> +#include <com/sun/star/presentation/XSlideShowListener.hpp> #include <com/sun/star/lang/XServiceInfo.hpp> #include <com/sun/star/lang/XServiceName.hpp> #include <com/sun/star/loader/CannotActivateFactoryException.hpp> @@ -93,6 +94,7 @@ #include "slidebitmap.hxx" #include "rehearsetimingsactivity.hxx" #include "waitsymbol.hxx" +#include "effectrewinder.hxx" #include "framerate.hxx" #include <boost/noncopyable.hpp> @@ -109,6 +111,73 @@ using namespace ::slideshow::internal; namespace { +/** During animations the update() method tells its caller to call it as + soon as possible. This gives us more time to render the next frame and + still maintain a steady frame rate. This class is responsible for + synchronizing the display of new frames and thus keeping the frame rate + steady. +*/ +class FrameSynchronization +{ +public: + /** Create new object with a predefined duration between two frames. + @param nFrameDuration + The preferred duration between the display of two frames in + seconds. + */ + FrameSynchronization (const double nFrameDuration); + + /** Set the current time as the time at which the current frame is + displayed. From this the target time of the next frame is derived. + */ + void MarkCurrentFrame (void); + + /** When there is time left until the next frame is due then wait. + Otherwise return without delay. + */ + void Synchronize (void); + + /** Activate frame synchronization when an animation is active and + frames are to be displayed in a steady rate. While active + Synchronize() will wait until the frame duration time has passed. + */ + void Activate (void); + + /** Deactivate frame sychronization when no animation is active and the + time between frames depends on user actions and other external + sources. While deactivated Synchronize() will return without delay. + */ + void Deactivate (void); + + /** Return the current time of the timer. It is not synchronized with + any other timer so its absolute values are of no concern. Typically + used during debugging to measure durations. + */ + double GetCurrentTime (void) const; + +private: + /** The timer that is used for synchronization is independent from the + one used by SlideShowImpl: it is not paused or modified by + animations. + */ + canvas::tools::ElapsedTime maTimer; + /** Time between the display of frames. Enforced only when mbIsActive + is <TRUE/>. + */ + const double mnFrameDuration; + /** Time (of maTimer) when the next frame shall be displayed. + Synchronize() will wait until this time. + */ + double mnNextFrameTargetTime; + /** Synchronize() will wait only when this flag is <TRUE/>. Otherwise + it returns immediately. + */ + bool mbIsActive; +}; + + + + /****************************************************************************** SlideShowImpl @@ -196,7 +265,7 @@ public: This method notifies the end of the third phase. */ - void notifySlideEnded(); + void notifySlideEnded (const bool bReverse); /** Notification from eventmultiplexer that a hyperlink has been clicked. @@ -211,6 +280,7 @@ public: private: // XSlideShow: virtual sal_Bool SAL_CALL nextEffect() throw (uno::RuntimeException); + virtual sal_Bool SAL_CALL previousEffect() throw (uno::RuntimeException); virtual sal_Bool SAL_CALL startShapeActivity( uno::Reference<drawing::XShape> const& xShape ) throw (uno::RuntimeException); @@ -261,6 +331,12 @@ private: virtual bool requestCursor( sal_Int16 nCursorShape ); virtual void resetCursor(); + /** This is somewhat similar to displaySlide when called for the current + slide. It has been simplified to take advantage of that no slide + change takes place. Furthermore it does not show the slide + transition. + */ + void redisplayCurrentSlide (void); protected: // WeakComponentImplHelperBase @@ -316,12 +392,32 @@ private: const SlideSharedPtr& rEnteringSlide, const EventSharedPtr& rTransitionEndEvent ); - /// Display/hide wait symbol on all views - void setWaitState( bool bOn ); + /** Request/release the wait symbol. The wait symbol is displayed when + there are more requests then releases. Locking the wait symbol + helps to avoid intermediate repaints. + + Do not call this method directly. Use WaitSymbolLock instead. + */ + void requestWaitSymbol (void); + void releaseWaitSymbol (void); + + class WaitSymbolLock {public: + WaitSymbolLock(SlideShowImpl& rSlideShowImpl) : mrSlideShowImpl(rSlideShowImpl) + { mrSlideShowImpl.requestWaitSymbol(); } + ~WaitSymbolLock(void) + { mrSlideShowImpl.releaseWaitSymbol(); } + private: SlideShowImpl& mrSlideShowImpl; + }; + /// Filter requested cursor shape against hard slideshow cursors (wait, etc.) sal_Int16 calcActiveCursor( sal_Int16 nCursorShape ) const; + /** This method is called asynchronously to finish the rewinding of an + effect to the previous slide that was initiated earlier. + */ + void rewindEffectToPreviousSlide (void); + /// all registered views UnoViewContainer maViewContainer; @@ -368,7 +464,7 @@ private: sal_Int16 mnCurrentCursor; - bool mbWaitState; + sal_Int32 mnWaitSymbolRequestCount; bool mbAutomaticAdvancementMode; bool mbImageAnimationsAllowed; bool mbNoSlideTransitions; @@ -377,6 +473,9 @@ private: bool mbShowPaused; bool mbSlideShowIdle; bool mbDisableAnimationZOrder; + + EffectRewinder maEffectRewinder; + FrameSynchronization maFrameSynchronization; }; @@ -411,10 +510,14 @@ struct SlideShowImpl::SeparateListenerImpl : public EventHandler, // directly, but queue an event. handleEvent() // might be called from e.g. // showNext(), and notifySlideAnimationsEnded() must not be called - // in recursion. - mrEventQueue.addEvent( - makeEvent( boost::bind( &SlideShowImpl::notifySlideAnimationsEnded, - boost::ref(mrShow) ))); + // in recursion. Note that the event is scheduled for the next + // frame so that its expensive execution does not come in between + // sprite hiding and shape redraw (at the end of the animation of a + // shape), which would cause a flicker. + mrEventQueue.addEventForNextRound( + makeEvent( + boost::bind( &SlideShowImpl::notifySlideAnimationsEnded, boost::ref(mrShow) ), + "SlideShowImpl::notifySlideAnimationsEnded")); return true; } @@ -468,7 +571,7 @@ SlideShowImpl::SlideShowImpl( mxPrefetchSlide(), mxPrefetchAnimationNode(), mnCurrentCursor(awt::SystemPointer::ARROW), - mbWaitState(false), + mnWaitSymbolRequestCount(0), mbAutomaticAdvancementMode(false), mbImageAnimationsAllowed( true ), mbNoSlideTransitions( false ), @@ -476,7 +579,10 @@ SlideShowImpl::SlideShowImpl( mbForceManualAdvance( false ), mbShowPaused( false ), mbSlideShowIdle( true ), - mbDisableAnimationZOrder( false ) + mbDisableAnimationZOrder( false ), + maEffectRewinder(maEventMultiplexer, maEventQueue, maUserEventQueue), + maFrameSynchronization(1.0 / FrameRate::PreferredFramesPerSecond) + { // keep care not constructing any UNO references to this inside ctor, // shift that code to create()! @@ -516,6 +622,8 @@ void SlideShowImpl::disposing() { osl::MutexGuard const guard( m_aMutex ); + maEffectRewinder.dispose(); + // stop slide transition sound, if any: stopSlideTransitionSound(); @@ -616,7 +724,7 @@ ActivitySharedPtr SlideShowImpl::createSlideTransition( const uno::Reference< drawing::XDrawPage >& xDrawPage, const SlideSharedPtr& rLeavingSlide, const SlideSharedPtr& rEnteringSlide, - const EventSharedPtr& rTransitionEndEvent ) + const EventSharedPtr& rTransitionEndEvent) { ENSURE_OR_THROW( !maViewContainer.empty(), "createSlideTransition(): No views" ); @@ -736,7 +844,8 @@ ActivitySharedPtr SlideShowImpl::createSlideTransition( &::slideshow::internal::Animation::prefetch, pTransition, AnimatableShapeSharedPtr(), - ShapeAttributeLayerSharedPtr()))); + ShapeAttributeLayerSharedPtr()), + "Animation::prefetch")); return ActivitySharedPtr( ActivitiesFactory::createSimpleActivity( @@ -787,20 +896,43 @@ SlideSharedPtr SlideShowImpl::makeSlide( return pSlide; } -void SlideShowImpl::setWaitState( bool bOn ) +void SlideShowImpl::requestWaitSymbol (void) { - mbWaitState = bOn; - if( !mpWaitSymbol ) // fallback to cursor - requestCursor(awt::SystemPointer::WAIT); - else if( mbWaitState ) - mpWaitSymbol->show(); - else - mpWaitSymbol->hide(); + ++mnWaitSymbolRequestCount; + OSL_ASSERT(mnWaitSymbolRequestCount>0); + + if (mnWaitSymbolRequestCount == 1) + { + if( !mpWaitSymbol ) + { + // fall back to cursor + requestCursor(calcActiveCursor(mnCurrentCursor)); + } + else + mpWaitSymbol->show(); + } +} + +void SlideShowImpl::releaseWaitSymbol (void) +{ + --mnWaitSymbolRequestCount; + OSL_ASSERT(mnWaitSymbolRequestCount>=0); + + if (mnWaitSymbolRequestCount == 0) + { + if( !mpWaitSymbol ) + { + // fall back to cursor + requestCursor(calcActiveCursor(mnCurrentCursor)); + } + else + mpWaitSymbol->hide(); + } } sal_Int16 SlideShowImpl::calcActiveCursor( sal_Int16 nCursorShape ) const { - if( mbWaitState && !mpWaitSymbol ) // enforce wait cursor + if( mnWaitSymbolRequestCount>0 && !mpWaitSymbol ) // enforce wait cursor nCursorShape = awt::SystemPointer::WAIT; else if( !mbMouseVisible ) // enforce INVISIBLE nCursorShape = awt::SystemPointer::INVISIBLE; @@ -844,10 +976,19 @@ void SlideShowImpl::stopShow() } } -struct SlideShowImpl::PrefetchPropertiesFunc + + +class SlideShowImpl::PrefetchPropertiesFunc { - SlideShowImpl *const that; - PrefetchPropertiesFunc( SlideShowImpl * that_ ) : that(that_) {} +public: + PrefetchPropertiesFunc( SlideShowImpl * that_, + bool& rbSkipAllMainSequenceEffects, + bool& rbSkipSlideTransition) + : mpSlideShowImpl(that_), + mrbSkipAllMainSequenceEffects(rbSkipAllMainSequenceEffects), + mrbSkipSlideTransition(rbSkipSlideTransition) + {} + void operator()( beans::PropertyValue const& rProperty ) const { if (rProperty.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("Prefetch") )) @@ -855,16 +996,30 @@ struct SlideShowImpl::PrefetchPropertiesFunc uno::Sequence<uno::Any> seq; if ((rProperty.Value >>= seq) && seq.getLength() == 2) { - seq[0] >>= that->mxPrefetchSlide; - seq[1] >>= that->mxPrefetchAnimationNode; + seq[0] >>= mpSlideShowImpl->mxPrefetchSlide; + seq[1] >>= mpSlideShowImpl->mxPrefetchAnimationNode; } } + else if (rProperty.Name.equalsAsciiL( + RTL_CONSTASCII_STRINGPARAM("SkipAllMainSequenceEffects") )) + { + rProperty.Value >>= mrbSkipAllMainSequenceEffects; + } + else if (rProperty.Name.equalsAsciiL( + RTL_CONSTASCII_STRINGPARAM("SkipSlideTransition") )) + { + rProperty.Value >>= mrbSkipSlideTransition; + } else { OSL_ENSURE( false, rtl::OUStringToOString( rProperty.Name, RTL_TEXTENCODING_UTF8 ).getStr() ); } } +private: + SlideShowImpl *const mpSlideShowImpl; + bool& mrbSkipAllMainSequenceEffects; + bool& mrbSkipSlideTransition; }; void SlideShowImpl::displaySlide( @@ -878,6 +1033,8 @@ void SlideShowImpl::displaySlide( if (isDisposed()) return; + maEffectRewinder.setRootAnimationNode(xRootNode); + // precondition: must only be called from the main thread! DBG_TESTSOLARMUTEX(); @@ -890,9 +1047,11 @@ void SlideShowImpl::displaySlide( // shape animations (drawing layer and // GIF) will not be stopped. + bool bSkipAllMainSequenceEffects (false); + bool bSkipSlideTransition (false); std::for_each( rProperties.getConstArray(), rProperties.getConstArray() + rProperties.getLength(), - PrefetchPropertiesFunc(this) ); + PrefetchPropertiesFunc(this, bSkipAllMainSequenceEffects, bSkipSlideTransition) ); OSL_ENSURE( !maViewContainer.empty(), "### no views!" ); if (maViewContainer.empty()) @@ -900,9 +1059,7 @@ void SlideShowImpl::displaySlide( // this here might take some time { - comphelper::ScopeGuard const scopeGuard( - boost::bind( &SlideShowImpl::setWaitState, this, false ) ); - setWaitState(true); + WaitSymbolLock aLock (*this); mpPreviousSlide = mpCurrentSlide; mpCurrentSlide.reset(); @@ -944,15 +1101,26 @@ void SlideShowImpl::displaySlide( // create slide transition, and add proper end event // (which then starts the slide effects // via CURRENT_SLIDE.show()) - ActivitySharedPtr const pSlideChangeActivity( - createSlideTransition( mpCurrentSlide->getXDrawPage(), - mpPreviousSlide, - mpCurrentSlide, - makeEvent( - boost::bind( - &SlideShowImpl::notifySlideTransitionEnded, - this, - false )))); + ActivitySharedPtr pSlideChangeActivity ( + createSlideTransition( + mpCurrentSlide->getXDrawPage(), + mpPreviousSlide, + mpCurrentSlide, + makeEvent( + boost::bind( + &SlideShowImpl::notifySlideTransitionEnded, + this, + false ), + "SlideShowImpl::notifySlideTransitionEnded"))); + + if (bSkipSlideTransition) + { + // The transition activity was created for the side effects + // (like sound transitions). Because we want to skip the + // acutual transition animation we do not need the activity + // anymore. + pSlideChangeActivity.reset(); + } if (pSlideChangeActivity) { @@ -968,7 +1136,8 @@ void SlideShowImpl::displaySlide( boost::bind( &SlideShowImpl::notifySlideTransitionEnded, this, - true ))); + true ), + "SlideShowImpl::notifySlideTransitionEnded")); } } } // finally @@ -976,6 +1145,42 @@ void SlideShowImpl::displaySlide( maEventMultiplexer.notifySlideTransitionStarted(); maListenerContainer.forEach<presentation::XSlideShowListener>( boost::mem_fn( &presentation::XSlideShowListener::slideTransitionStarted ) ); + + // We are currently rewinding an effect. This lead us from the next + // slide to this one. To complete this we have to play back all main + // sequence effects on this slide. + if (bSkipAllMainSequenceEffects) + maEffectRewinder.skipAllMainSequenceEffects(); +} + +void SlideShowImpl::redisplayCurrentSlide (void) +{ + osl::MutexGuard const guard( m_aMutex ); + + if (isDisposed()) + return; + + // precondition: must only be called from the main thread! + DBG_TESTSOLARMUTEX(); + stopShow(); + + OSL_ENSURE( !maViewContainer.empty(), "### no views!" ); + if (maViewContainer.empty()) + return; + + // No transition effect on this slide - schedule slide + // effect start event right away. + maEventQueue.addEvent( + makeEvent( + boost::bind( + &SlideShowImpl::notifySlideTransitionEnded, + this, + true ), + "SlideShowImpl::notifySlideTransitionEnded")); + + maEventMultiplexer.notifySlideTransitionStarted(); + maListenerContainer.forEach<presentation::XSlideShowListener>( + boost::mem_fn( &presentation::XSlideShowListener::slideTransitionStarted ) ); } sal_Bool SlideShowImpl::nextEffect() throw (uno::RuntimeException) @@ -994,6 +1199,50 @@ sal_Bool SlideShowImpl::nextEffect() throw (uno::RuntimeException) return maEventMultiplexer.notifyNextEffect(); } + +sal_Bool SlideShowImpl::previousEffect() throw (uno::RuntimeException) +{ + osl::MutexGuard const guard( m_aMutex ); + + if (isDisposed()) + return false; + + // precondition: must only be called from the main thread! + DBG_TESTSOLARMUTEX(); + + if (mbShowPaused) + return true; + else + { + return maEffectRewinder.rewind( + maScreenUpdater.createLock(false), + ::boost::bind<void>(::boost::mem_fn(&SlideShowImpl::redisplayCurrentSlide), this), + ::boost::bind<void>(::boost::mem_fn(&SlideShowImpl::rewindEffectToPreviousSlide), this)); + } +} + +void SlideShowImpl::rewindEffectToPreviousSlide (void) +{ + // Show the wait symbol now and prevent it from showing temporary slide + // content while effects are played back. + WaitSymbolLock aLock (*this); + + // A previous call to EffectRewinder::Rewind could not rewind the current + // effect because there are no effects on the current slide or none has + // yet been displayed. Go to the previous slide. + notifySlideEnded(true); + + // Process pending events once more in order to have the following + // screen update show the last effect. Not sure whether this should be + // necessary. + maEventQueue.forceEmpty(); + + // We have to call the screen updater before the wait symbol is turned + // off. Otherwise the wait symbol would force the display of an + // intermediate state of the slide (before the effects are replayed.) + maScreenUpdater.commitUpdates(); +} + sal_Bool SlideShowImpl::startShapeActivity( uno::Reference<drawing::XShape> const& /*xShape*/ ) throw (uno::RuntimeException) @@ -1290,6 +1539,34 @@ sal_Bool SlideShowImpl::setProperty( beans::PropertyValue const& rProperty ) return (rProperty.Value >>= mbNoSlideTransitions); } + if (rProperty.Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("IsSoundEnabled"))) + { + uno::Sequence<uno::Any> aValues; + uno::Reference<presentation::XSlideShowView> xView; + sal_Bool bValue (false); + if ((rProperty.Value >>= aValues) + && aValues.getLength()==2 + && (aValues[0] >>= xView) + && (aValues[1] >>= bValue)) + { + // Look up the view. + for (UnoViewVector::const_iterator + iView (maViewContainer.begin()), + iEnd (maViewContainer.end()); + iView!=iEnd; + ++iView) + { + if (*iView && (*iView)->getUnoView()==xView) + { + // Store the flag at the view so that media shapes have + // access to it. + (*iView)->setIsSoundEnabled(bValue); + return true; + } + } + } + } + return false; } @@ -1471,25 +1748,24 @@ sal_Bool SlideShowImpl::update( double & nNextTimeout ) // TODO(F2): re-evaluate whether that timer lagging makes // sense. - // hold timer, while processing the queues (ensures - // same time for all activities and events) + // hold timer, while processing the queues: + // 1. when there is more than one active activity this ensures the + // same time for all activities and events + // 2. processing of events may lead to creation of further events + // that have zero delay. While the timer is stopped these events + // are processed in the same run. { comphelper::ScopeGuard scopeGuard( boost::bind( &canvas::tools::ElapsedTime::releaseTimer, boost::cref(mpPresTimer) ) ); - - // no need to hold timer for only one active animation - - // it's only meant to keep multiple ones in sync - if( maActivitiesQueue.size() > 1 ) - mpPresTimer->holdTimer(); - else - scopeGuard.dismiss(); // we're not holding the timer + mpPresTimer->holdTimer(); // process queues maEventQueue.process(); maActivitiesQueue.process(); // commit frame to screen + maFrameSynchronization.Synchronize(); maScreenUpdater.commitUpdates(); // TODO(Q3): remove need to call dequeued() from @@ -1533,7 +1809,13 @@ sal_Bool SlideShowImpl::update( double & nNextTimeout ) { // Activity queue is not empty. Tell caller that we would // like to render another frame. - nNextTimeout = 1.0 / FrameRate::PreferredFramesPerSecond; + + // Return a zero time-out to signal our caller to call us + // back as soon as possible. The actual timing, waiting the + // appropriate amount of time between frames, is then done + // by the maFrameSynchronization object. + nNextTimeout = 0; + maFrameSynchronization.Activate(); } else { @@ -1547,6 +1829,10 @@ sal_Bool SlideShowImpl::update( double & nNextTimeout ) // ensure positive value: nNextTimeout = std::max( 0.0, maEventQueue.nextTimeout() ); + + // There is no active animation so the frame rate does not + // need to be synchronized. + maFrameSynchronization.Deactivate(); } mbSlideShowIdle = false; @@ -1668,7 +1954,7 @@ void SlideShowImpl::notifySlideAnimationsEnded() // schedule a slide end event, with automatic mode's // delay aNotificationEvents = makeInterruptableDelay( - boost::bind<void>( boost::mem_fn(&SlideShowImpl::notifySlideEnded), this ), + boost::bind<void>( boost::mem_fn(&SlideShowImpl::notifySlideEnded), this, false ), maEventMultiplexer.getAutomaticTimeout() ); } else @@ -1693,7 +1979,7 @@ void SlideShowImpl::notifySlideAnimationsEnded() bHasAutomaticNextSlide ) { aNotificationEvents = makeInterruptableDelay( - boost::bind<void>( boost::mem_fn(&SlideShowImpl::notifySlideEnded), this ), + boost::bind<void>( boost::mem_fn(&SlideShowImpl::notifySlideEnded), this, false ), nAutomaticNextSlideTimeout); // TODO(F2): Provide a mechanism to let the user override @@ -1710,7 +1996,8 @@ void SlideShowImpl::notifySlideAnimationsEnded() // timeout involved. aNotificationEvents.mpImmediateEvent = makeEvent( boost::bind<void>( - boost::mem_fn(&SlideShowImpl::notifySlideEnded), this ) ); + boost::mem_fn(&SlideShowImpl::notifySlideEnded), this, false ), + "SlideShowImpl::notifySlideEnded"); } } @@ -1731,9 +2018,7 @@ void SlideShowImpl::notifySlideAnimationsEnded() // change setup time a lot). Show the wait cursor, this // indeed might take some seconds. { - comphelper::ScopeGuard const scopeGuard( - boost::bind( &SlideShowImpl::setWaitState, this, false ) ); - setWaitState(true); + WaitSymbolLock aLock (*this); if (! matches( mpPrefetchSlide, mxPrefetchSlide, mxPrefetchAnimationNode )) @@ -1755,13 +2040,13 @@ void SlideShowImpl::notifySlideAnimationsEnded() boost::mem_fn( &presentation::XSlideShowListener::slideAnimationsEnded ) ); } -void SlideShowImpl::notifySlideEnded() +void SlideShowImpl::notifySlideEnded (const bool bReverse) { osl::MutexGuard const guard( m_aMutex ); OSL_ENSURE( !isDisposed(), "### already disposed!" ); - if (mpRehearseTimingsActivity) + if (mpRehearseTimingsActivity && !bReverse) { const double time = mpRehearseTimingsActivity->stop(); if (mpRehearseTimingsActivity->hasBeenClicked()) @@ -1782,7 +2067,8 @@ void SlideShowImpl::notifySlideEnded() } } - maEventMultiplexer.notifySlideEndEvent(); + if (bReverse) + maEventMultiplexer.notifySlideEndEvent(); stopShow(); // MUST call that: results in // maUserEventQueue.clear(). What's more, @@ -1794,7 +2080,10 @@ void SlideShowImpl::notifySlideEnded() // GIF) will not be stopped. maListenerContainer.forEach<presentation::XSlideShowListener>( - boost::mem_fn( &presentation::XSlideShowListener::slideEnded ) ); + boost::bind<void>( + ::boost::mem_fn(&presentation::XSlideShowListener::slideEnded), + _1, + sal_Bool(bReverse))); } bool SlideShowImpl::notifyHyperLinkClicked( rtl::OUString const& hyperLink ) @@ -1840,6 +2129,66 @@ bool SlideShowImpl::handleAnimationEvent( const AnimationNodeSharedPtr& rNode ) return true; } + +//===== FrameSynchronization ================================================== + +FrameSynchronization::FrameSynchronization (const double nFrameDuration) + : maTimer(), + mnFrameDuration(nFrameDuration), + mnNextFrameTargetTime(0), + mbIsActive(false) +{ + MarkCurrentFrame(); +} + + + + +void FrameSynchronization::MarkCurrentFrame (void) +{ + mnNextFrameTargetTime = maTimer.getElapsedTime() + mnFrameDuration; +} + + + + +void FrameSynchronization::Synchronize (void) +{ + if (mbIsActive) + { + // Do busy waiting for now. + while (maTimer.getElapsedTime() < mnNextFrameTargetTime) + ; + } + + MarkCurrentFrame(); +} + + + + +void FrameSynchronization::Activate (void) +{ + mbIsActive = true; +} + + + + +void FrameSynchronization::Deactivate (void) +{ + mbIsActive = false; +} + + + + +double FrameSynchronization::GetCurrentTime (void) const +{ + return maTimer.getElapsedTime(); +} + + } // anon namespace namespace sdecl = comphelper::service_decl; diff --git a/slideshow/source/engine/slideview.cxx b/slideshow/source/engine/slideview.cxx index 9d48612457b3..dcca4a51b4d7 100644 --- a/slideshow/source/engine/slideview.cxx +++ b/slideshow/source/engine/slideview.cxx @@ -715,6 +715,8 @@ private: // UnoView: virtual void _dispose(); virtual uno::Reference<presentation::XSlideShowView> getUnoView()const; + virtual void setIsSoundEnabled (const bool bValue); + virtual bool isSoundEnabled (void) const; // XEventListener: virtual void SAL_CALL disposing( lang::EventObject const& evt ) @@ -755,6 +757,7 @@ private: basegfx::B2DHomMatrix maViewTransform; basegfx::B2DSize maUserSize; + bool mbIsSoundEnabled; }; @@ -770,7 +773,8 @@ SlideView::SlideView( const uno::Reference<presentation::XSlideShowView>& xView, maViewLayers(), maClip(), maViewTransform(), - maUserSize( 1.0, 1.0 ) // default size: one-by-one rectangle + maUserSize( 1.0, 1.0 ), // default size: one-by-one rectangle + mbIsSoundEnabled(true) { // take care not constructing any UNO references to this _inside_ // ctor, shift that code to createSlideView()! @@ -1001,6 +1005,16 @@ uno::Reference<presentation::XSlideShowView> SlideView::getUnoView() const return mxView; } +void SlideView::setIsSoundEnabled (const bool bValue) +{ + mbIsSoundEnabled = bValue; +} + +bool SlideView::isSoundEnabled (void) const +{ + return mbIsSoundEnabled; +} + void SlideView::_dispose() { dispose(); @@ -1071,7 +1085,8 @@ void SlideView::modified( const lang::EventObject& /*aEvent*/ ) makeEvent( boost::bind( (bool (EventMultiplexer::*)( const uno::Reference<presentation::XSlideShowView>&)) &EventMultiplexer::notifyViewChanged, - boost::ref(mrEventMultiplexer), mxView ))); + boost::ref(mrEventMultiplexer), mxView ), + "EventMultiplexer::notifyViewChanged")); } // XPaintListener @@ -1086,7 +1101,8 @@ void SlideView::windowPaint( const awt::PaintEvent& /*e*/ ) // this might not be the main thread! mrEventQueue.addEvent( makeEvent( boost::bind( &EventMultiplexer::notifyViewClobbered, - boost::ref(mrEventMultiplexer), mxView ) ) ); + boost::ref(mrEventMultiplexer), mxView ), + "EventMultiplexer::notifyViewClobbered") ); } void SlideView::updateCanvas() diff --git a/slideshow/source/engine/usereventqueue.cxx b/slideshow/source/engine/usereventqueue.cxx index ac7f39174118..4415599f84d8 100644 --- a/slideshow/source/engine/usereventqueue.cxx +++ b/slideshow/source/engine/usereventqueue.cxx @@ -306,26 +306,45 @@ public: EventMultiplexer & rEventMultiplexer ) : ClickEventHandler(rEventQueue), mrEventQueue(rEventQueue), - mrEventMultiplexer(rEventMultiplexer) {} + mrEventMultiplexer(rEventMultiplexer), + mbSkipTriggersNextEffect(true) {} + + /** Remember to trigger (or not to trigger) the next effect after the + current effect is skiped. + */ + void setSkipTriggersNextEffect (const bool bSkipTriggersNextEffect) + { mbSkipTriggersNextEffect = bSkipTriggersNextEffect; } + + /// Skip the current effect but do not triggere the next effect. + void skipEffect (void) { handleEvent_impl(false); } private: virtual bool handleEvent_impl() { + return handleEvent_impl(true); + } + + bool handleEvent_impl (bool bNotifyNextEffect) + { // fire all events, so animation nodes can register their // next effect listeners: if(fireAllEvents( maEvents, mrEventQueue )) { - // then simulate a next effect event: - // this skip effect handler is triggered upon next effect - // events (multiplexer prio=-1)! - // Posting a notifyNextEffect() here is only safe - // (we don't run into busy loop), because we assume that - // someone has registerered above for next effects - // (multiplexer prio=0) at the user event queue. - return mrEventQueue.addEventForNextRound( - makeEvent( boost::bind( - &EventMultiplexer::notifyNextEffect, - boost::ref(mrEventMultiplexer) ) ) ); + if (mbSkipTriggersNextEffect && bNotifyNextEffect) + { + // then simulate a next effect event: this skip effect + // handler is triggered upon next effect events (multiplexer + // prio=-1)! Posting a notifyNextEffect() here is only safe + // (we don't run into busy loop), because we assume that + // someone has registerered above for next effects + // (multiplexer prio=0) at the user event queue. + return mrEventQueue.addEventWhenQueueIsEmpty( + makeEvent( boost::bind( &EventMultiplexer::notifyNextEffect, + boost::ref(mrEventMultiplexer) ), + "EventMultiplexer::notifyNextEffect") ); + } + else + return true; } return false; } @@ -333,6 +352,7 @@ private: private: EventQueue & mrEventQueue; EventMultiplexer & mrEventMultiplexer; + bool mbSkipTriggersNextEffect; }; class RewindEffectEventHandler : public MouseEventHandler_, @@ -772,6 +792,7 @@ void UserEventQueue::setAdvanceOnClick( bool bAdvanceOnClick ) mpClickEventHandler->setAdvanceOnClick( bAdvanceOnClick ); } + void UserEventQueue::registerSlideStartEvent( const EventSharedPtr& rEvent ) { registerEvent( mpStartEventHandler, @@ -888,7 +909,9 @@ void UserEventQueue::registerNextEffectEvent( const EventSharedPtr& rEvent ) mbAdvanceOnClick ) ); } -void UserEventQueue::registerSkipEffectEvent( EventSharedPtr const & pEvent ) +void UserEventQueue::registerSkipEffectEvent( + EventSharedPtr const & pEvent, + const bool bSkipTriggersNextEffect) { if(!mpSkipEffectEventHandler) { @@ -905,6 +928,7 @@ void UserEventQueue::registerSkipEffectEvent( EventSharedPtr const & pEvent ) // we're called here) mpSkipEffectEventHandler->setAdvanceOnClick( mbAdvanceOnClick ); } + mpSkipEffectEventHandler->setSkipTriggersNextEffect(bSkipTriggersNextEffect); mpSkipEffectEventHandler->addEvent( pEvent ); } @@ -973,6 +997,14 @@ void UserEventQueue::registerMouseLeaveEvent( const EventSharedPtr& rEvent, 0.0 /* default prio */ ) ); } +void UserEventQueue::callSkipEffectEventHandler (void) +{ + ::boost::shared_ptr<SkipEffectEventHandler> pHandler ( + ::boost::dynamic_pointer_cast<SkipEffectEventHandler>(mpSkipEffectEventHandler)); + if (pHandler) + pHandler->skipEffect(); +} + } // namespace internal } // namespace presentation diff --git a/slideshow/source/engine/wakeupevent.cxx b/slideshow/source/engine/wakeupevent.cxx index 0b30510f9cb3..d2e13d188e14 100644 --- a/slideshow/source/engine/wakeupevent.cxx +++ b/slideshow/source/engine/wakeupevent.cxx @@ -45,6 +45,9 @@ namespace slideshow WakeupEvent::WakeupEvent( boost::shared_ptr<canvas::tools::ElapsedTime> const & pTimeBase, ActivitiesQueue& rActivityQueue ) : +#if OSL_DEBUG_LEVEL > 1 + Event(::rtl::OUString::createFromAscii("WakeupEvent")), +#endif maTimer(pTimeBase), mnNextTime(0.0), mpActivity(), diff --git a/slideshow/source/inc/debug.hxx b/slideshow/source/inc/debug.hxx new file mode 100644 index 000000000000..53c031231370 --- /dev/null +++ b/slideshow/source/inc/debug.hxx @@ -0,0 +1,80 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: layer.hxx,v $ + * $Revision: 1.3 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef INCLUDED_SLIDESHOW_DEBUG_HXX +#define INCLUDED_SLIDESHOW_DEBUG_HXX + +#include <osl/diagnose.h> + +#if OSL_DEBUG_LEVEL > 1 + +#include "animationnode.hxx" + + +namespace slideshow { namespace internal { + +void Debug_ShowNodeTree (const AnimationNodeSharedPtr& rpNode); + +// Change this to a valid filename. The file is created anew with every +// office start (and execution of at least one TRACE... command.) +#define TRACE_LOG_FILE_NAME "d:\\tmp\\log.txt" + +class DebugTraceScope +{ +public: + DebugTraceScope (const sal_Char* sFormat, ...); + ~DebugTraceScope (void); +private: + static const sal_Int32 mnBufferSize = 512; + sal_Char* msMessage; +}; + +void SAL_CALL DebugTraceBegin (const sal_Char* sFormat, ...); +void SAL_CALL DebugTraceEnd (const sal_Char* sFormat, ...); +void SAL_CALL DebugTraceMessage (const sal_Char* sFormat, ...); + +} } // end of namespace ::slideshow::internal + + +#define TRACE_BEGIN DebugTraceBegin +#define TRACE_END DebugTraceEnd +#define TRACE DebugTraceMessage +#define TRACE_SCOPE DebugTraceScope aTraceScope + +#else // OSL_DEBUG_LEVEL > 1 + +#define TRACE_BEGIN 1 ? ((void)0) : DebugTraceBegin +#define TRACE_END 1 ? ((void)0) : DebugTraceEnd +#define TRACE 1 ? ((void)0) : DebugTraceMessage +#define TRACE_SCOPE + +#endif // OSL_DEBUG_LEVEL > 1 + +#endif diff --git a/slideshow/source/inc/delayevent.hxx b/slideshow/source/inc/delayevent.hxx index 10960e395feb..1c4e09faa7da 100644 --- a/slideshow/source/inc/delayevent.hxx +++ b/slideshow/source/inc/delayevent.hxx @@ -33,6 +33,7 @@ #include <boost/function.hpp> #include "event.hxx" +#include "debug.hxx" #include <boost/noncopyable.hpp> namespace slideshow { @@ -46,16 +47,23 @@ public: typedef ::boost::function0<void> FunctorT; template <typename FuncT> - Delay( FuncT const& func, double nTimeout ) - : mnTimeout(nTimeout), maFunc(func), mbWasFired(false) {} + Delay( FuncT const& func, + double nTimeout +#if OSL_DEBUG_LEVEL > 1 + , const ::rtl::OUString& rsDescription + ) : Event(rsDescription), +#else + ) : +#endif + mnTimeout(nTimeout), maFunc(func), mbWasFired(false) {} -#if defined(VERBOSE) && defined(DBG_UTIL) Delay( const boost::function0<void>& func, - double nTimeout, - char const* const ) : + double nTimeout +#if OSL_DEBUG_LEVEL > 1 + , const ::rtl::OUString& rsDescription + ) : Event(rsDescription), #else - Delay( const boost::function0<void>& func, - double nTimeout ) : + ) : #endif mnTimeout(nTimeout), maFunc(func), @@ -74,7 +82,7 @@ private: bool mbWasFired; }; -#if OSL_DEBUG_LEVEL < 1 +#if OSL_DEBUG_LEVEL <= 1 /** Generate delay event @@ -87,7 +95,7 @@ private: @return generated delay event */ template <typename FuncT> -inline EventSharedPtr makeDelay( FuncT const& func, double nTimeout ) +inline EventSharedPtr makeDelay_( FuncT const& func, double nTimeout ) { return EventSharedPtr( new Delay( func, nTimeout ) ); } @@ -100,19 +108,25 @@ inline EventSharedPtr makeDelay( FuncT const& func, double nTimeout ) @return generated immediate event. */ template <typename FuncT> -inline EventSharedPtr makeEvent( FuncT const& func ) +inline EventSharedPtr makeEvent_( FuncT const& func ) { return EventSharedPtr( new Delay( func, 0.0 ) ); } + +// Strip away description. +#define makeDelay(f, t, d) makeDelay_(f, t) +#define makeEvent(f, d) makeEvent_(f) + #else // OSL_DEBUG_LEVEL > 1 class Delay_ : public Delay { public: template <typename FuncT> Delay_( FuncT const& func, double nTimeout, - char const* from_function, char const* from_file, int from_line ) - : Delay(func, nTimeout), + char const* from_function, char const* from_file, int from_line, + const ::rtl::OUString& rsDescription) + : Delay(func, nTimeout, rsDescription), FROM_FUNCTION(from_function), FROM_FILE(from_file), FROM_LINE(from_line) {} @@ -124,18 +138,21 @@ public: template <typename FuncT> inline EventSharedPtr makeDelay_( FuncT const& func, double nTimeout, - char const* from_function, char const* from_file, int from_line ) + char const* from_function, char const* from_file, int from_line, + const ::rtl::OUString& rsDescription) { return EventSharedPtr( new Delay_( func, nTimeout, - from_function, from_file, from_line ) ); + from_function, from_file, from_line, rsDescription) ); } -#define makeDelay(f, t) makeDelay_(f, t, \ -BOOST_CURRENT_FUNCTION, __FILE__, __LINE__) -#define makeEvent(f) makeDelay_(f, 0.0, \ -BOOST_CURRENT_FUNCTION, __FILE__, __LINE__) +#define makeDelay(f, t, d) makeDelay_(f, t, \ + BOOST_CURRENT_FUNCTION, __FILE__, __LINE__, \ + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(d))) +#define makeEvent(f, d) makeDelay_(f, 0.0, \ + BOOST_CURRENT_FUNCTION, __FILE__, __LINE__, \ + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(d))) -#endif // OSL_DEBUG_LEVEL < 1 +#endif // OSL_DEBUG_LEVEL <= 1 } // namespace internal } // namespace presentation diff --git a/slideshow/source/inc/event.hxx b/slideshow/source/inc/event.hxx index 80e825cc8049..6e41e5c30123 100644 --- a/slideshow/source/inc/event.hxx +++ b/slideshow/source/inc/event.hxx @@ -31,7 +31,8 @@ #define INCLUDED_SLIDESHOW_EVENT_HXX #include "disposable.hxx" - +#include "debug.hxx" +#include <rtl/ustring.hxx> #include <boost/shared_ptr.hpp> #include <vector> @@ -43,6 +44,10 @@ namespace internal { class Event : public Disposable { public: +#if OSL_DEBUG_LEVEL > 1 + Event (const ::rtl::OUString& rsDescription) : msDescription(rsDescription) {}; +#endif + /** Execute the event. @return true, if event was successfully executed. @@ -72,6 +77,13 @@ public: event is to be fired. */ virtual double getActivationTime( double nCurrentTime ) const = 0; + +#if OSL_DEBUG_LEVEL > 1 + ::rtl::OUString GetDescription (void) const { return msDescription; } + +private: + const ::rtl::OUString msDescription; +#endif }; typedef ::boost::shared_ptr< Event > EventSharedPtr; diff --git a/slideshow/source/inc/eventqueue.hxx b/slideshow/source/inc/eventqueue.hxx index 5963552d9c60..35adcf69c068 100644 --- a/slideshow/source/inc/eventqueue.hxx +++ b/slideshow/source/inc/eventqueue.hxx @@ -72,6 +72,13 @@ namespace slideshow */ bool addEventForNextRound( const EventSharedPtr& event ); + /** Another way to control the order of asynchronous event + exeqution. Use this method to schedule events that are to + be executed after all regular events that have no delay, + even when they schedule new regular events without delay. + */ + bool addEventWhenQueueIsEmpty (const EventSharedPtr& rpEvent); + /** Process the event queue. This method executes all events whose timeout has @@ -138,6 +145,7 @@ namespace slideshow ImplQueueType maEvents; typedef ::std::vector<EventEntry> EventEntryVector; EventEntryVector maNextEvents; + ImplQueueType maNextNextEvents; void process_( bool bFireAllEvents ); // perform timing of events via relative time diff --git a/slideshow/source/inc/interruptabledelayevent.hxx b/slideshow/source/inc/interruptabledelayevent.hxx index 96795dfa51d4..485c96bc8c2c 100644 --- a/slideshow/source/inc/interruptabledelayevent.hxx +++ b/slideshow/source/inc/interruptabledelayevent.hxx @@ -49,6 +49,9 @@ namespace slideshow public: DelayFacade( const EventSharedPtr& rEvent, double nTimeout ) : +#if OSL_DEBUG_LEVEL > 1 + Event(::rtl::OUString::createFromAscii("DelayFacade")), +#endif mpEvent( rEvent ), mnTimeout( nTimeout ) { @@ -138,7 +141,7 @@ namespace slideshow { InterruptableEventPair aRes; - aRes.mpImmediateEvent = makeEvent( rFunctor ); + aRes.mpImmediateEvent = makeEvent( rFunctor, "makeInterruptableDelay"); aRes.mpTimeoutEvent.reset( new DelayFacade( aRes.mpImmediateEvent, nTimeout ) ); diff --git a/slideshow/source/inc/screenupdater.hxx b/slideshow/source/inc/screenupdater.hxx index 07837d6bfc4c..33d6c5d7263f 100644 --- a/slideshow/source/inc/screenupdater.hxx +++ b/slideshow/source/inc/screenupdater.hxx @@ -111,9 +111,30 @@ namespace slideshow */ void requestImmediateUpdate(); + class UpdateLock {public: virtual void Activate (void) = 0; }; + + /** Call this method to create a lock instead of calling + lockUpdates() and unlockUpdates() directly. + @param bStartLocked + When <TRUE/> then the UpdateLock is created already + locked. When <FALSE/> then Activate() has to be called in order + to lock the lock. + */ + ::boost::shared_ptr<UpdateLock> createLock (const bool bStartLocked); + + /** Lock updates to prevent intermediate repaints. + */ + void lockUpdates (void); + + /** When called as often as lockUpdates() then commitUpdates() + is called. + */ + void unlockUpdates (void); + private: struct ImplScreenUpdater; boost::scoped_ptr<ImplScreenUpdater> mpImpl; + }; } } diff --git a/slideshow/source/inc/unoview.hxx b/slideshow/source/inc/unoview.hxx index 471cdae98a70..6dfc99da5a65 100644 --- a/slideshow/source/inc/unoview.hxx +++ b/slideshow/source/inc/unoview.hxx @@ -68,6 +68,16 @@ namespace slideshow with a different calling convention under Windows). */ virtual void _dispose() = 0; + + /** Return whether the sound play back is enabled. + */ + virtual bool isSoundEnabled (void) const = 0; + + /** Tell the view whether it may play sounds. Disabling this + can be used to prevent different views to play the same + sounds at the same time. + */ + virtual void setIsSoundEnabled (const bool bValue) = 0; }; typedef ::boost::shared_ptr< UnoView > UnoViewSharedPtr; diff --git a/slideshow/source/inc/usereventqueue.hxx b/slideshow/source/inc/usereventqueue.hxx index d0ab3b8c1ce5..26be68e1ffa0 100644 --- a/slideshow/source/inc/usereventqueue.hxx +++ b/slideshow/source/inc/usereventqueue.hxx @@ -188,8 +188,16 @@ public: Then, all registered events are fired and removed from this queue. After firing, a next effect event is issued to this queue to start the next effect. + @param pEvent + The event to execute when skipping the current effect. + @param bSkipTriggersNextEffect + When <TRUE/> then after skipping the current effect the next + effect is triggered. When <FALSE/> then the next effect is not + triggered. */ - void registerSkipEffectEvent( EventSharedPtr const& pEvent ); + void registerSkipEffectEvent( + EventSharedPtr const& pEvent, + const bool bSkipTriggersNextEffect); /** Registes an event that is fired when the current effects(s) are rewound, .e.g. when the right mouse button is pressed. @@ -263,6 +271,12 @@ public: void registerMouseLeaveEvent( const EventSharedPtr& rEvent, const ShapeSharedPtr& rShape ); + /** Typically skipping the current effect is triggered by mouse clicks + or key presses that trigger the next effect. This method allows the + skipping of effects to be triggered programatically. + */ + void callSkipEffectEventHandler (void); + private: /** Generically register an event on one of the handlers. diff --git a/slideshow/test/makefile.mk b/slideshow/test/makefile.mk index cde95f49163a..b6bd1cc2889c 100644 --- a/slideshow/test/makefile.mk +++ b/slideshow/test/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -32,7 +32,7 @@ PRJ=.. PRJNAME=slideshow -PRJINC=$(PRJ)$/source +PRJINC=$(PRJ)$/source TARGET=tests TARGETTYPE=GUI @@ -50,13 +50,14 @@ SHL1OBJS= \ $(SLO)$/views.obj \ $(SLO)$/slidetest.obj \ $(SLO)$/testshape.obj \ - $(SLO)$/testview.obj + $(SLO)$/testview.obj SHL1TARGET= tests SHL1STDLIBS= $(SALLIB) \ $(BASEGFXLIB) \ $(CPPUHELPERLIB) \ $(CPPULIB) \ + $(TESTSHL2LIB) \ $(CPPUNITLIB) \ $(UNOTOOLSLIB) \ $(VCLLIB) @@ -70,7 +71,7 @@ SHL1STDLIBS= $(SALLIB) \ SHL1IMPLIB= i$(SHL1TARGET) DEF1NAME =$(SHL1TARGET) -SHL1VERSIONMAP = export.map +SHL1VERSIONMAP = export.map # END target1 ---------------------------------------------------------- # BEGIN target2 -------------------------------------------------------- @@ -96,9 +97,9 @@ APP2DEF= $(MISC)$/$(TARGET).def #------------------------------- All object files ---------------------------- # do this here, so we get right dependencies -SLOFILES=$(SHL1OBJS) +SLOFILES=$(SHL1OBJS) # --- Targets ------------------------------------------------------ .INCLUDE : target.mk -.INCLUDE : _cppunit.mk +.INCLUDE : _cppunit.mk diff --git a/slideshow/test/slidetest.cxx b/slideshow/test/slidetest.cxx index 96ed6f07fb90..633ee324359e 100644 --- a/slideshow/test/slidetest.cxx +++ b/slideshow/test/slidetest.cxx @@ -28,7 +28,7 @@ * ************************************************************************/ -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #include <cppuhelper/compbase1.hxx> #include <comphelper/broadcasthelper.hxx> diff --git a/slideshow/test/testshape.cxx b/slideshow/test/testshape.cxx index 00f9868bcae4..9482b9d31500 100644 --- a/slideshow/test/testshape.cxx +++ b/slideshow/test/testshape.cxx @@ -28,7 +28,7 @@ * ************************************************************************/ -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #include <cppuhelper/compbase1.hxx> #include <cppuhelper/basemutex.hxx> #include <comphelper/make_shared_from_uno.hxx> diff --git a/slideshow/test/testview.cxx b/slideshow/test/testview.cxx index 57024438ef43..5f4c44f2a50d 100644 --- a/slideshow/test/testview.cxx +++ b/slideshow/test/testview.cxx @@ -28,7 +28,7 @@ * ************************************************************************/ -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #include <cppuhelper/compbase1.hxx> #include <cppuhelper/basemutex.hxx> #include <comphelper/make_shared_from_uno.hxx> diff --git a/slideshow/test/views.cxx b/slideshow/test/views.cxx index 20a6a06a976a..e53a14e1fa33 100644 --- a/slideshow/test/views.cxx +++ b/slideshow/test/views.cxx @@ -28,7 +28,7 @@ * ************************************************************************/ -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #include <cppuhelper/compbase1.hxx> #include <comphelper/broadcasthelper.hxx> |