summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArmin Le Grand <Armin.Le.Grand@Sun.COM>2009-12-21 20:40:13 +0100
committerArmin Le Grand <Armin.Le.Grand@Sun.COM>2009-12-21 20:40:13 +0100
commitaa009b1d9a3a8b691e01e9c28db0adcae84cbafc (patch)
tree980567c28bd94ea0f35a36c588a3cfc44a7f9f02
parent2546b368921c771c4336e6db18543497389eaab7 (diff)
parenteb86211c1db0bb492669e7ac8302b89254ed4793 (diff)
aw078: resync to DEV300m68for integration
-rw-r--r--sd/inc/helpids.h2
-rw-r--r--sd/inc/pch/precompiled_sd.hxx97
-rw-r--r--sd/inc/sdattr.hxx6
-rw-r--r--sd/inc/sdmod.hxx2
-rw-r--r--sd/inc/sdundo.hxx2
-rw-r--r--sd/inc/stlfamily.hxx2
-rw-r--r--sd/inc/stlsheet.hxx2
-rw-r--r--sd/inc/undo/undomanager.hxx2
-rwxr-xr-x[-rw-r--r--]sd/prj/build.lst2
-rw-r--r--sd/sdi/ViewShellBase.sdi4
-rw-r--r--sd/sdi/_docsh.sdi2
-rw-r--r--sd/sdi/_drvwsh.sdi2
-rw-r--r--sd/sdi/docshell.sdi2
-rw-r--r--sd/sdi/grdocsh.sdi2
-rw-r--r--sd/sdi/makefile.mk14
-rw-r--r--sd/sdi/sdgslots.sdi9
-rw-r--r--sd/sdi/sdslots.sdi9
-rw-r--r--sd/sdi/svxitems.sdi93
-rw-r--r--sd/source/core/CustomAnimationPreset.cxx2
-rw-r--r--sd/source/core/TransitionPreset.cxx2
-rw-r--r--sd/source/core/anminfo.cxx4
-rw-r--r--sd/source/core/drawdoc.cxx18
-rw-r--r--sd/source/core/drawdoc2.cxx2
-rw-r--r--sd/source/core/drawdoc3.cxx4
-rw-r--r--sd/source/core/drawdoc4.cxx4
-rw-r--r--sd/source/core/sdpage.cxx38
-rw-r--r--sd/source/core/sdpage2.cxx4
-rw-r--r--sd/source/core/stlfamily.cxx2
-rw-r--r--sd/source/core/stlpool.cxx8
-rw-r--r--sd/source/core/stlsheet.cxx4
-rw-r--r--sd/source/core/typemap.cxx12
-rw-r--r--sd/source/filter/cgm/sdcgmfilter.cxx2
-rw-r--r--sd/source/filter/eppt/eppt.cxx159
-rw-r--r--sd/source/filter/eppt/eppt.hxx5
-rw-r--r--sd/source/filter/eppt/epptso.cxx49
-rw-r--r--sd/source/filter/eppt/escherex.hxx2
-rw-r--r--sd/source/filter/eppt/pptexanimations.hxx2
-rw-r--r--sd/source/filter/grf/sdgrffilter.cxx2
-rw-r--r--sd/source/filter/html/buttonset.cxx2
-rw-r--r--sd/source/filter/html/htmlex.cxx8
-rw-r--r--sd/source/filter/html/htmlex.hxx2
-rw-r--r--sd/source/filter/html/pubdlg.cxx14
-rw-r--r--sd/source/filter/ppt/pptatom.hxx1
-rw-r--r--sd/source/filter/ppt/pptin.cxx14
-rw-r--r--sd/source/filter/ppt/pptin.hxx4
-rw-r--r--sd/source/filter/ppt/pptinanimations.hxx4
-rw-r--r--sd/source/filter/sdfilter.cxx2
-rw-r--r--sd/source/filter/sdpptwrp.cxx40
-rw-r--r--sd/source/filter/xml/sdtransform.cxx8
-rw-r--r--sd/source/filter/xml/sdxmlwrp.cxx6
-rw-r--r--sd/source/ui/accessibility/AccessibleDocumentViewBase.cxx8
-rw-r--r--sd/source/ui/accessibility/AccessibleDrawDocumentView.cxx11
-rw-r--r--sd/source/ui/animations/AnimationSchemesPane.cxx2
-rw-r--r--sd/source/ui/animations/CustomAnimationCreateDialog.cxx2
-rw-r--r--sd/source/ui/animations/CustomAnimationDialog.cxx2
-rw-r--r--sd/source/ui/animations/SlideTransitionPane.cxx2
-rw-r--r--sd/source/ui/annotations/annotationmanager.cxx12
-rw-r--r--sd/source/ui/annotations/annotationwindow.cxx10
-rw-r--r--sd/source/ui/app/optsitem.cxx6
-rw-r--r--sd/source/ui/app/res_bmp.src2
-rw-r--r--sd/source/ui/app/sddll.cxx2
-rw-r--r--sd/source/ui/app/sddll1.cxx2
-rw-r--r--sd/source/ui/app/sdmod.cxx20
-rw-r--r--sd/source/ui/app/sdmod1.cxx6
-rw-r--r--sd/source/ui/app/sdmod2.cxx10
-rw-r--r--sd/source/ui/app/sdpopup.cxx4
-rw-r--r--sd/source/ui/app/sdxfer.cxx4
-rw-r--r--sd/source/ui/app/tbxww.cxx4
-rw-r--r--sd/source/ui/app/tmplctrl.cxx4
-rw-r--r--sd/source/ui/dlg/LayerDialogContent.cxx2
-rw-r--r--sd/source/ui/dlg/PaneDockingWindow.cxx2
-rw-r--r--sd/source/ui/dlg/animobjs.cxx6
-rw-r--r--sd/source/ui/dlg/celltempl.cxx4
-rw-r--r--sd/source/ui/dlg/dlgass.cxx6
-rw-r--r--sd/source/ui/dlg/dlgassim.cxx2
-rw-r--r--sd/source/ui/dlg/dlgassim.hxx2
-rw-r--r--sd/source/ui/dlg/dlgchar.cxx2
-rw-r--r--sd/source/ui/dlg/dlgfield.cxx6
-rw-r--r--sd/source/ui/dlg/dlgolbul.cxx6
-rw-r--r--sd/source/ui/dlg/dlgpage.cxx4
-rw-r--r--sd/source/ui/dlg/dlgsnap.cxx4
-rw-r--r--sd/source/ui/dlg/docprev.cxx6
-rw-r--r--sd/source/ui/dlg/gluectrl.cxx2
-rw-r--r--sd/source/ui/dlg/ins_paste.cxx4
-rw-r--r--sd/source/ui/dlg/layeroptionsdlg.cxx2
-rw-r--r--sd/source/ui/dlg/morphdlg.cxx4
-rw-r--r--sd/source/ui/dlg/navigatr.cxx8
-rw-r--r--sd/source/ui/dlg/paragr.cxx6
-rw-r--r--sd/source/ui/dlg/present.cxx2
-rw-r--r--sd/source/ui/dlg/prltempl.cxx6
-rw-r--r--sd/source/ui/dlg/prntopts.cxx2
-rw-r--r--sd/source/ui/dlg/sdpreslt.cxx2
-rw-r--r--sd/source/ui/dlg/sdtreelb.cxx2
-rw-r--r--sd/source/ui/dlg/tabtempl.cxx6
-rw-r--r--sd/source/ui/dlg/tpaction.cxx6
-rw-r--r--sd/source/ui/dlg/tpoption.cxx2
-rw-r--r--sd/source/ui/dlg/unchss.cxx6
-rw-r--r--sd/source/ui/docshell/docshel2.cxx2
-rw-r--r--sd/source/ui/docshell/docshel3.cxx2
-rw-r--r--sd/source/ui/docshell/docshel4.cxx12
-rw-r--r--sd/source/ui/docshell/docshell.cxx18
-rw-r--r--sd/source/ui/docshell/formatclipboard.cxx237
-rw-r--r--sd/source/ui/docshell/makefile.mk1
-rw-r--r--sd/source/ui/framework/tools/FrameworkHelper.cxx2
-rw-r--r--sd/source/ui/func/bulmaper.cxx4
-rw-r--r--sd/source/ui/func/fuarea.cxx5
-rw-r--r--sd/source/ui/func/fubullet.cxx6
-rw-r--r--sd/source/ui/func/fucon3d.cxx2
-rw-r--r--sd/source/ui/func/fuconarc.cxx4
-rw-r--r--sd/source/ui/func/fuconbez.cxx4
-rw-r--r--sd/source/ui/func/fuconcs.cxx6
-rw-r--r--sd/source/ui/func/fuconrec.cxx4
-rw-r--r--sd/source/ui/func/fuconstr.cxx2
-rw-r--r--sd/source/ui/func/fuconuno.cxx4
-rw-r--r--sd/source/ui/func/fudraw.cxx2
-rw-r--r--sd/source/ui/func/fuediglu.cxx2
-rw-r--r--sd/source/ui/func/fuformatpaintbrush.cxx248
-rw-r--r--sd/source/ui/func/fuhhconv.cxx2
-rw-r--r--sd/source/ui/func/fuinsert.cxx8
-rw-r--r--sd/source/ui/func/fuinsfil.cxx4
-rw-r--r--sd/source/ui/func/fuline.cxx6
-rw-r--r--sd/source/ui/func/fulinend.cxx2
-rw-r--r--sd/source/ui/func/fuoaprms.cxx2
-rw-r--r--sd/source/ui/func/fuolbull.cxx4
-rw-r--r--sd/source/ui/func/fupage.cxx8
-rw-r--r--sd/source/ui/func/fupoor.cxx2
-rw-r--r--sd/source/ui/func/fuprlout.cxx4
-rw-r--r--sd/source/ui/func/fuprobjs.cxx4
-rw-r--r--sd/source/ui/func/fuscale.cxx7
-rw-r--r--sd/source/ui/func/fusel.cxx8
-rw-r--r--sd/source/ui/func/fusldlg.cxx2
-rw-r--r--sd/source/ui/func/fusnapln.cxx2
-rw-r--r--sd/source/ui/func/futempl.cxx2
-rw-r--r--sd/source/ui/func/futext.cxx6
-rw-r--r--sd/source/ui/func/futransf.cxx4
-rw-r--r--sd/source/ui/func/futxtatt.cxx2
-rw-r--r--sd/source/ui/inc/AccessibleDocumentViewBase.hxx4
-rw-r--r--sd/source/ui/inc/AccessibleDrawDocumentView.hxx4
-rw-r--r--sd/source/ui/inc/AccessibleOutlineEditSource.hxx4
-rw-r--r--sd/source/ui/inc/DrawDocShell.hxx4
-rw-r--r--sd/source/ui/inc/EventMultiplexer.hxx2
-rw-r--r--sd/source/ui/inc/FormShellManager.hxx2
-rw-r--r--sd/source/ui/inc/PreviewRenderer.hxx2
-rw-r--r--sd/source/ui/inc/ViewShellBase.hxx4
-rw-r--r--sd/source/ui/inc/ViewShellHint.hxx2
-rw-r--r--sd/source/ui/inc/WindowUpdater.hxx8
-rw-r--r--sd/source/ui/inc/diactrl.hxx2
-rw-r--r--sd/source/ui/inc/docprev.hxx2
-rw-r--r--sd/source/ui/inc/formatclipboard.hxx64
-rw-r--r--sd/source/ui/inc/fuconuno.hxx2
-rw-r--r--sd/source/ui/inc/fuformatpaintbrush.hxx30
-rw-r--r--sd/source/ui/inc/optsitem.hxx1
-rw-r--r--sd/source/ui/inc/sdtreelb.hxx2
-rw-r--r--sd/source/ui/inc/sdxfer.hxx2
-rw-r--r--sd/source/ui/inc/unomodel.hxx2
-rwxr-xr-xsd/source/ui/notes/EditWindow.cxx6
-rw-r--r--sd/source/ui/presenter/PresenterTextView.cxx8
-rw-r--r--sd/source/ui/slideshow/showwin.cxx2
-rw-r--r--sd/source/ui/slideshow/slideshow.cxx2
-rw-r--r--sd/source/ui/slideshow/slideshowimpl.cxx204
-rw-r--r--sd/source/ui/slideshow/slideshowimpl.hxx20
-rw-r--r--sd/source/ui/slideshow/slideshowviewimpl.hxx4
-rw-r--r--sd/source/ui/slidesorter/cache/SlsQueueProcessor.cxx22
-rw-r--r--sd/source/ui/slidesorter/controller/SlideSorterController.cxx2
-rw-r--r--sd/source/ui/slidesorter/controller/SlsFocusManager.cxx29
-rw-r--r--sd/source/ui/slidesorter/controller/SlsListener.hxx2
-rw-r--r--sd/source/ui/slidesorter/controller/SlsSlotManager.cxx18
-rw-r--r--sd/source/ui/slidesorter/inc/controller/SlsFocusManager.hxx12
-rw-r--r--sd/source/ui/slidesorter/view/SlideSorterView.cxx6
-rw-r--r--sd/source/ui/table/TableDesignPane.cxx6
-rw-r--r--sd/source/ui/table/tablefunction.cxx4
-rw-r--r--sd/source/ui/table/tableobjectbar.cxx4
-rw-r--r--sd/source/ui/toolpanel/LayoutMenu.cxx15
-rw-r--r--sd/source/ui/toolpanel/TitleBar.cxx2
-rw-r--r--sd/source/ui/toolpanel/TitleToolBox.cxx2
-rw-r--r--sd/source/ui/toolpanel/controls/MasterPageContainer.cxx4
-rw-r--r--sd/source/ui/toolpanel/controls/MasterPageObserver.cxx2
-rw-r--r--sd/source/ui/toolpanel/controls/MasterPagesSelector.cxx8
-rw-r--r--sd/source/ui/unoidl/sddetect.cxx8
-rw-r--r--sd/source/ui/unoidl/unoobj.cxx4
-rw-r--r--sd/source/ui/unoidl/unopage.cxx6
-rw-r--r--sd/source/ui/unoidl/unopage.hxx2
-rw-r--r--sd/source/ui/unoidl/unopback.cxx2
-rw-r--r--sd/source/ui/view/GraphicObjectBar.cxx6
-rw-r--r--sd/source/ui/view/MediaObjectBar.cxx4
-rw-r--r--sd/source/ui/view/Outliner.cxx7
-rw-r--r--sd/source/ui/view/PrintManager.cxx12
-rw-r--r--sd/source/ui/view/ToolBarManager.cxx2
-rw-r--r--sd/source/ui/view/ViewShellBase.cxx55
-rw-r--r--sd/source/ui/view/ViewShellImplementation.cxx2
-rw-r--r--sd/source/ui/view/WindowUpdater.cxx54
-rw-r--r--sd/source/ui/view/drawview.cxx8
-rw-r--r--sd/source/ui/view/drbezob.cxx4
-rw-r--r--sd/source/ui/view/drtxtob.cxx10
-rw-r--r--sd/source/ui/view/drtxtob1.cxx10
-rw-r--r--sd/source/ui/view/drviews2.cxx4
-rw-r--r--sd/source/ui/view/drviews3.cxx12
-rw-r--r--sd/source/ui/view/drviews4.cxx2
-rw-r--r--sd/source/ui/view/drviews6.cxx33
-rw-r--r--sd/source/ui/view/drviews7.cxx32
-rw-r--r--sd/source/ui/view/drviews9.cxx6
-rw-r--r--sd/source/ui/view/drviewsa.cxx6
-rw-r--r--sd/source/ui/view/drviewsb.cxx2
-rw-r--r--sd/source/ui/view/drviewsc.cxx6
-rw-r--r--sd/source/ui/view/drviewsd.cxx6
-rw-r--r--sd/source/ui/view/drviewse.cxx37
-rw-r--r--sd/source/ui/view/drviewsf.cxx8
-rw-r--r--sd/source/ui/view/drviewsh.cxx4
-rw-r--r--sd/source/ui/view/drviewsi.cxx2
-rw-r--r--sd/source/ui/view/drviewsj.cxx2
-rw-r--r--sd/source/ui/view/outlnvs2.cxx4
-rw-r--r--sd/source/ui/view/outlnvsh.cxx6
-rw-r--r--sd/source/ui/view/outlview.cxx6
-rw-r--r--sd/source/ui/view/sdruler.cxx2
-rw-r--r--sd/source/ui/view/sdview2.cxx6
-rw-r--r--sd/source/ui/view/sdview3.cxx6
-rw-r--r--sd/source/ui/view/sdview4.cxx2
-rw-r--r--sd/source/ui/view/viewshe2.cxx2
-rw-r--r--sd/source/ui/view/viewshe3.cxx7
-rw-r--r--sd/source/ui/view/viewshel.cxx4
-rw-r--r--sd/util/makefile.mk3
-rw-r--r--sd/util/sdfilt.map2
-rw-r--r--slideshow/source/engine/activities/activitiesfactory.cxx9
-rw-r--r--slideshow/source/engine/animationnodes/animationaudionode.cxx9
-rw-r--r--slideshow/source/engine/animationnodes/animationbasenode.cxx3
-rw-r--r--slideshow/source/engine/animationnodes/animationcommandnode.cxx3
-rw-r--r--slideshow/source/engine/animationnodes/animationsetnode.cxx3
-rw-r--r--slideshow/source/engine/animationnodes/basenode.cxx9
-rw-r--r--slideshow/source/engine/animationnodes/basenode.hxx4
-rw-r--r--slideshow/source/engine/animationnodes/generateevent.cxx36
-rw-r--r--slideshow/source/engine/animationnodes/paralleltimecontainer.cxx3
-rw-r--r--slideshow/source/engine/animationnodes/sequentialtimecontainer.cxx19
-rw-r--r--slideshow/source/engine/debug.cxx327
-rw-r--r--slideshow/source/engine/effectrewinder.cxx436
-rw-r--r--slideshow/source/engine/effectrewinder.hxx185
-rw-r--r--slideshow/source/engine/eventmultiplexer.cxx25
-rw-r--r--slideshow/source/engine/eventqueue.cxx78
-rw-r--r--slideshow/source/engine/makefile.mk4
-rw-r--r--slideshow/source/engine/rehearsetimingsactivity.cxx3
-rw-r--r--slideshow/source/engine/screenupdater.cxx83
-rw-r--r--slideshow/source/engine/shapes/drawshape.cxx6
-rw-r--r--slideshow/source/engine/shapes/viewmediashape.cxx12
-rw-r--r--slideshow/source/engine/shapes/viewmediashape.hxx1
-rw-r--r--slideshow/source/engine/slide/layermanager.cxx105
-rw-r--r--slideshow/source/engine/slide/layermanager.hxx35
-rw-r--r--slideshow/source/engine/slideshowimpl.cxx469
-rw-r--r--slideshow/source/engine/slideview.cxx22
-rw-r--r--slideshow/source/engine/usereventqueue.cxx58
-rw-r--r--slideshow/source/engine/wakeupevent.cxx3
-rw-r--r--slideshow/source/inc/debug.hxx80
-rw-r--r--slideshow/source/inc/delayevent.hxx55
-rw-r--r--slideshow/source/inc/event.hxx14
-rw-r--r--slideshow/source/inc/eventqueue.hxx8
-rw-r--r--slideshow/source/inc/interruptabledelayevent.hxx5
-rw-r--r--slideshow/source/inc/screenupdater.hxx21
-rw-r--r--slideshow/source/inc/unoview.hxx10
-rw-r--r--slideshow/source/inc/usereventqueue.hxx16
-rw-r--r--slideshow/test/makefile.mk13
-rw-r--r--slideshow/test/slidetest.cxx2
-rw-r--r--slideshow/test/testshape.cxx2
-rw-r--r--slideshow/test/testview.cxx2
-rw-r--r--slideshow/test/views.cxx2
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>