diff options
-rw-r--r-- | icon-themes/galaxy/sd/cmd/transition-none.png | bin | 0 -> 1086 bytes | |||
-rw-r--r-- | icon-themes/galaxy/sd/cmd/transition-random-bars.png | bin | 0 -> 1248 bytes | |||
-rw-r--r-- | icon-themes/galaxy/sd/cmd/transition-uncover.png | bin | 0 -> 1411 bytes | |||
-rw-r--r-- | icon-themes/galaxy/sd/cmd/transition-wheel.png | bin | 0 -> 1521 bytes | |||
-rw-r--r-- | icon-themes/galaxy/sd/cmd/transition-wipe.png | bin | 0 -> 1449 bytes | |||
-rw-r--r-- | officecfg/registry/data/org/openoffice/Office/UI/Effects.xcu | 945 | ||||
-rw-r--r-- | officecfg/registry/schema/org/openoffice/Office/UI/Effects.xcs | 47 | ||||
-rw-r--r-- | sd/inc/TransitionPreset.hxx | 11 | ||||
-rw-r--r-- | sd/source/core/TransitionPreset.cxx | 87 | ||||
-rw-r--r-- | sd/source/ui/animations/SlideTransitionPane.cxx | 216 | ||||
-rw-r--r-- | sd/source/ui/animations/SlideTransitionPane.hxx | 14 | ||||
-rw-r--r-- | sd/source/ui/dlg/dlgass.cxx | 28 | ||||
-rw-r--r-- | sd/source/ui/dlg/dlgctrls.cxx | 93 | ||||
-rw-r--r-- | sd/source/ui/inc/dlgctrls.hxx | 5 | ||||
-rw-r--r-- | sd/uiconfig/simpress/ui/assistentdialog.ui | 33 | ||||
-rw-r--r-- | sd/uiconfig/simpress/ui/slidetransitionspanel.ui | 32 |
16 files changed, 1229 insertions, 282 deletions
diff --git a/icon-themes/galaxy/sd/cmd/transition-none.png b/icon-themes/galaxy/sd/cmd/transition-none.png Binary files differnew file mode 100644 index 000000000000..71b14a1d42bf --- /dev/null +++ b/icon-themes/galaxy/sd/cmd/transition-none.png diff --git a/icon-themes/galaxy/sd/cmd/transition-random-bars.png b/icon-themes/galaxy/sd/cmd/transition-random-bars.png Binary files differnew file mode 100644 index 000000000000..e27b13c3a114 --- /dev/null +++ b/icon-themes/galaxy/sd/cmd/transition-random-bars.png diff --git a/icon-themes/galaxy/sd/cmd/transition-uncover.png b/icon-themes/galaxy/sd/cmd/transition-uncover.png Binary files differnew file mode 100644 index 000000000000..f799ef8cd3b3 --- /dev/null +++ b/icon-themes/galaxy/sd/cmd/transition-uncover.png diff --git a/icon-themes/galaxy/sd/cmd/transition-wheel.png b/icon-themes/galaxy/sd/cmd/transition-wheel.png Binary files differnew file mode 100644 index 000000000000..b674a007cfad --- /dev/null +++ b/icon-themes/galaxy/sd/cmd/transition-wheel.png diff --git a/icon-themes/galaxy/sd/cmd/transition-wipe.png b/icon-themes/galaxy/sd/cmd/transition-wipe.png Binary files differnew file mode 100644 index 000000000000..6f5cbfbe2b8b --- /dev/null +++ b/icon-themes/galaxy/sd/cmd/transition-wipe.png diff --git a/officecfg/registry/data/org/openoffice/Office/UI/Effects.xcu b/officecfg/registry/data/org/openoffice/Office/UI/Effects.xcu index 84376c424382..a7a1bfd1df9b 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/Effects.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/Effects.xcu @@ -1314,370 +1314,1025 @@ </prop> </node> </node> - <node oor:name="Transitions"> - <node oor:name="venetian-blinds-horizontal" oor:op="replace"> + <!-- Transitions are organised into groups, sets and variants. Is that enough levels? Is this + terminology good? + + A group is a collection of transition sets that have some common high-level property, like + being "subtle" or "exciting". + + A set is a collection of transition variants that differ only by the direction, or some + similar property, of the transition, but the actual transition is otherwise mostly the same + in all variants, i.e. it is produced by the same code with just different parameters. + + In theory, we could use the css::animations::TransitionType and TransitionSubtype for the + set/variant typology, but unfortunately the "3D" transitions added in 2007 don't follow + that scheme; there the same transition type is used for wildly differing transitions. + --> + <node oor:name="TransitionGroups"> + <node oor:name="subtle" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Venetian Blinds Horizontal</value> + <value xml:lang="en-US">Subtle</value> </prop> </node> - <node oor:name="venetian-blinds-vertical" oor:op="replace"> + <node oor:name="exciting" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Venetian Blinds Vertical</value> + <value xml:lang="en-US">Exciting</value> </prop> </node> - <node oor:name="box-in" oor:op="replace"> + </node> + <node oor:name="TransitionSets"> + <node oor:name="venetian-blinds" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>subtle</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Box In</value> + <value xml:lang="en-US">Venetian Blinds</value> </prop> </node> - <node oor:name="box-out" oor:op="replace"> + <node oor:name="venetian-blinds-3d" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>exciting</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Box Out</value> + <value xml:lang="en-US">3D Venetian Blinds</value> </prop> </node> - <node oor:name="checkerboard-across" oor:op="replace"> + <node oor:name="box" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>subtle</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Checkerboard Across</value> + <value xml:lang="en-US">Box</value> </prop> </node> - <node oor:name="checkerboard-down" oor:op="replace"> + <node oor:name="checkerboard" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>subtle</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Checkerboard Down</value> + <value xml:lang="en-US">Checkerboard</value> </prop> </node> - <node oor:name="comb-horizontal" oor:op="replace"> + <node oor:name="comb" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>subtle</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Comb Horizontal</value> + <value xml:lang="en-US">Comb</value> </prop> </node> - <node oor:name="comb-vertical" oor:op="replace"> + <node oor:name="cover" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>subtle</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Comb Vertical</value> + <value xml:lang="en-US">Cover</value> </prop> </node> - <node oor:name="cover-down" oor:op="replace"> + <node oor:name="uncover" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>subtle</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Cover Down</value> + <value xml:lang="en-US">Uncover</value> </prop> </node> - <node oor:name="cover-left" oor:op="replace"> + <node oor:name="wipe" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>subtle</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Cover Left</value> + <value xml:lang="en-US">Wipe</value> </prop> </node> - <node oor:name="cover-right" oor:op="replace"> + <node oor:name="wedge" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>subtle</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Cover Right</value> + <value xml:lang="en-US">Wedge</value> </prop> </node> - <node oor:name="cover-up" oor:op="replace"> + <node oor:name="wheel" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>subtle</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Cover Up</value> + <value xml:lang="en-US">Wheel</value> </prop> </node> - <node oor:name="cover-left-down" oor:op="replace"> + <node oor:name="push" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>subtle</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Cover Left-Down</value> + <value xml:lang="en-US">Push</value> </prop> </node> - <node oor:name="cover-left-up" oor:op="replace"> + <node oor:name="cut" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>subtle</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Cover Left-Up</value> + <value xml:lang="en-US">Cut</value> </prop> </node> - <node oor:name="cover-right-down" oor:op="replace"> + <node oor:name="fade" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>subtle</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Cover Right-Down</value> + <value xml:lang="en-US">Fade</value> </prop> </node> - <node oor:name="cover-right-up" oor:op="replace"> + <node oor:name="random-bars" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>subtle</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Cover Right-Up</value> + <value xml:lang="en-US">Random Bars</value> </prop> </node> - <node oor:name="cut" oor:op="replace"> + <node oor:name="shape" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>subtle</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Cut</value> + <value xml:lang="en-US">Shape</value> </prop> </node> - <node oor:name="cut-through-black" oor:op="replace"> + <node oor:name="split" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>subtle</value> + </prop> + <prop oor:name="Label" oor:type="xs:string"> + <value xml:lang="en-US">Split</value> + </prop> + </node> + <node oor:name="diagonal-squares" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>subtle</value> + </prop> + <prop oor:name="Label" oor:type="xs:string"> + <value xml:lang="en-US">Diagonal Squares</value> + </prop> + </node> + <node oor:name="random" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>subtle</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Cut Through Black</value> + <value xml:lang="en-US">Random</value> </prop> </node> <node oor:name="dissolve" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>subtle</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">Dissolve</value> </prop> </node> - <node oor:name="fade-smoothly" oor:op="replace"> + <node oor:name="finedissolve" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>exciting</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Fade Smoothly</value> + <value xml:lang="en-US">Fine Dissolve</value> </prop> </node> - <node oor:name="fade-through-black" oor:op="replace"> + <node oor:name="newsflash" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>exciting</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Fade Through Black</value> + <value xml:lang="en-US">Newsflash</value> </prop> </node> - <node oor:name="zoom-rotate-in" oor:op="replace"> + <node oor:name="tile-flip" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>exciting</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Newsflash</value> + <value xml:lang="en-US">Flipping Tiles</value> </prop> </node> - <node oor:name="push-down" oor:op="replace"> + <node oor:name="cube-turning" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>exciting</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Push Down</value> + <value xml:lang="en-US">Cube Turning</value> </prop> </node> - <node oor:name="push-left" oor:op="replace"> + <node oor:name="revolving-circles" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>exciting</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Push Left</value> + <value xml:lang="en-US">Revolving Circles</value> </prop> </node> - <node oor:name="push-right" oor:op="replace"> + <node oor:name="turning-helix" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>exciting</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Push Right</value> + <value xml:lang="en-US">Turning Helix</value> </prop> </node> - <node oor:name="push-up" oor:op="replace"> + <node oor:name="fall" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>exciting</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Push Up</value> + <value xml:lang="en-US">Fall</value> </prop> </node> - <node oor:name="random-bars-horizontal" oor:op="replace"> + <node oor:name="turn-around" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>exciting</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Random Bars Horizontal</value> + <value xml:lang="en-US">Turn Around</value> </prop> </node> - <node oor:name="random-bars-vertical" oor:op="replace"> + <node oor:name="turn-down" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>exciting</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Random Bars Vertical</value> + <value xml:lang="en-US">Turn Down</value> </prop> </node> - <node oor:name="shape-circle" oor:op="replace"> + <node oor:name="iris" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>exciting</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Shape Circle</value> + <value xml:lang="en-US">Iris</value> </prop> </node> - <node oor:name="shape-diamond" oor:op="replace"> + <node oor:name="rochade" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>exciting</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Shape Diamond</value> + <value xml:lang="en-US">Rochade</value> </prop> </node> - <node oor:name="shape-plus" oor:op="replace"> + <node oor:name="static" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>exciting</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Shape Plus</value> + <value xml:lang="en-US">Static</value> </prop> </node> - <node oor:name="split-horizontal-in" oor:op="replace"> + <node oor:name="vortex" oor:op="replace"> + <prop oor:name="Group" oor:type="xs:string"> + <value>exciting</value> + </prop> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Split Horizontal In</value> + <value xml:lang="en-US">Vortex</value> </prop> </node> - <node oor:name="split-horizontal-out" oor:op="replace"> + </node> + <node oor:name="TransitionVariants"> + <node oor:name="plain" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Split Horizontal Out</value> + <value xml:lang="en-US">Plain</value> </prop> </node> - <node oor:name="split-vertical-in" oor:op="replace"> + <node oor:name="smoothly" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Split Vertical In</value> + <value xml:lang="en-US">Smoothly</value> </prop> </node> - <node oor:name="split-vertical-out" oor:op="replace"> + <node oor:name="through-black" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Split Vertical Out</value> + <value xml:lang="en-US">Through Black</value> </prop> </node> - <node oor:name="diagonal-squares-left-down" oor:op="replace"> + <node oor:name="left-right" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Diagonal Squares Left-Down</value> + <value xml:lang="en-US">Left to Right</value> </prop> </node> - <node oor:name="diagonal-squares-left-up" oor:op="replace"> + <node oor:name="top-left-bottom-right" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Diagonal Squares Left-Up</value> + <value xml:lang="en-US">Top Left to Bottom Right</value> </prop> </node> - <node oor:name="diagonal-squares-right-down" oor:op="replace"> + <node oor:name="top-bottom" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Diagonal Squares Right-Down</value> + <value xml:lang="en-US">Top to Bottom</value> </prop> </node> - <node oor:name="diagonal-squares-right-up" oor:op="replace"> + <node oor:name="top-right-bottom-left" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Diagonal Squares Right-Up</value> + <value xml:lang="en-US">Top Right to Bottom Left</value> </prop> </node> - <node oor:name="uncover-down" oor:op="replace"> + <node oor:name="right-left" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Uncover Down</value> + <value xml:lang="en-US">Right to Left</value> </prop> </node> - <node oor:name="uncover-left" oor:op="replace"> + <node oor:name="bottom-right-top-left" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Uncover Left</value> + <value xml:lang="en-US">Bottom Right to Top Left</value> </prop> </node> - <node oor:name="uncover-right" oor:op="replace"> + <node oor:name="bottom-top" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Uncover Right</value> + <value xml:lang="en-US">Bottom to Top</value> </prop> </node> - <node oor:name="uncover-up" oor:op="replace"> + <node oor:name="bottom-left-top-right" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Uncover Up</value> + <value xml:lang="en-US">Bottom Left to Top Right</value> </prop> </node> - <node oor:name="uncover-left-down" oor:op="replace"> + <node oor:name="vertical" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Uncover Left-Down</value> + <value xml:lang="en-US">Vertical</value> </prop> </node> - <node oor:name="uncover-left-up" oor:op="replace"> + <node oor:name="horizontal" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Uncover Left-Up</value> + <value xml:lang="en-US">Horizontal</value> </prop> </node> - <node oor:name="uncover-right-down" oor:op="replace"> + <node oor:name="in" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Uncover Right-Down</value> + <value xml:lang="en-US">In</value> </prop> </node> - <node oor:name="uncover-right-up" oor:op="replace"> + <node oor:name="out" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Uncover Right-Up</value> + <value xml:lang="en-US">Out</value> </prop> </node> - <node oor:name="wedge" oor:op="replace"> + <node oor:name="across" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Wedge</value> + <value xml:lang="en-US">Across</value> </prop> </node> - <node oor:name="wheel-clockwise-1-spoke" oor:op="replace"> + <node oor:name="down" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Wheel Clockwise, 1 Spoke</value> + <value xml:lang="en-US">Down</value> </prop> </node> - <node oor:name="wheel-clockwise-2-spokes" oor:op="replace"> + <node oor:name="up" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Wheel Clockwise, 2 Spokes</value> + <value xml:lang="en-US">Up</value> </prop> </node> - <node oor:name="wheel-clockwise-3-spokes" oor:op="replace"> + <node oor:name="right" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Wheel Clockwise, 3 Spokes</value> + <value xml:lang="en-US">Right</value> </prop> </node> - <node oor:name="wheel-clockwise-4-spokes" oor:op="replace"> + <node oor:name="left" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Wheel Clockwise, 4 Spokes</value> + <value xml:lang="en-US">Left</value> </prop> </node> - <node oor:name="wheel-clockwise-8-spokes" oor:op="replace"> + <node oor:name="circle" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Wheel Clockwise, 8 Spokes</value> + <value xml:lang="en-US">Circle</value> </prop> </node> - <node oor:name="wipe-down" oor:op="replace"> + <node oor:name="diamond" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Wipe Down</value> + <value xml:lang="en-US">Diamond</value> </prop> </node> - <node oor:name="wipe-left" oor:op="replace"> + <node oor:name="plus" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Wipe Left</value> + <value xml:lang="en-US">Plus</value> </prop> </node> - <node oor:name="wipe-right" oor:op="replace"> + <node oor:name="horizontal-in" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Wipe Right</value> + <value xml:lang="en-US">Horizontal In</value> </prop> </node> - <node oor:name="wipe-up" oor:op="replace"> + <node oor:name="horizontal-out" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Wipe Up</value> + <value xml:lang="en-US">Horizontal Out</value> </prop> </node> - <node oor:name="random-transition" oor:op="replace"> + <node oor:name="vertical-in" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Random Transition</value> + <value xml:lang="en-US">Vertical In</value> </prop> </node> - <node oor:name="tile-flip" oor:op="replace"> + <node oor:name="vertical-out" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Flipping tiles</value> + <value xml:lang="en-US">Vertical Out</value> </prop> </node> - <node oor:name="outside-cube" oor:op="replace"> + <node oor:name="cw-1-spoke" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Outside turning cube</value> + <value xml:lang="en-US">Clockwise 1 Spoke</value> </prop> </node> - <node oor:name="revolving-circles" oor:op="replace"> + <node oor:name="cw-2-spoke" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Revolving circles</value> + <value xml:lang="en-US">Clockwise 2 Spokes</value> </prop> </node> - <node oor:name="turning-helix" oor:op="replace"> + <node oor:name="cw-3-spoke" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Turning helix</value> + <value xml:lang="en-US">Clockwise 3 Spokes</value> </prop> </node> - <node oor:name="inside-cube" oor:op="replace"> + <node oor:name="cw-4-spoke" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Inside turning cube</value> + <value xml:lang="en-US">Clockwise 4 Spokes</value> </prop> </node> - <node oor:name="fall" oor:op="replace"> + <node oor:name="cw-8-spoke" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Fall</value> + <value xml:lang="en-US">Clockwise 8 Spokes</value> </prop> </node> - <node oor:name="turn-around" oor:op="replace"> + <node oor:name="ccw-1-spoke" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Turn around</value> + <value xml:lang="en-US">Counterclockwise 1 Spoke</value> </prop> </node> - <node oor:name="iris" oor:op="replace"> + <node oor:name="ccw-2-spoke" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Iris</value> + <value xml:lang="en-US">Counterclockwise 2 Spokes</value> </prop> </node> - <node oor:name="turn-down" oor:op="replace"> + <node oor:name="ccw-3-spoke" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Turn down</value> + <value xml:lang="en-US">Counterclockwise 3 Spokes</value> </prop> </node> - <node oor:name="rochade" oor:op="replace"> + <node oor:name="ccw-4-spoke" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Rochade</value> + <value xml:lang="en-US">Counterclockwise 4 Spokes</value> </prop> </node> - <node oor:name="venetian3dv" oor:op="replace"> + <node oor:name="ccw-8-spoke" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Venetian Blinds 3D Vertical</value> + <value xml:lang="en-US">Counterclockwise 8 Spokes</value> </prop> </node> - <node oor:name="venetian3dh" oor:op="replace"> + <node oor:name="inside" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Venetian Blinds 3D Horizontal</value> + <value xml:lang="en-US">Inside</value> </prop> </node> - <node oor:name="static" oor:op="replace"> + <node oor:name="outside" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Static</value> + <value xml:lang="en-US">Outside</value> + </prop> + </node> + </node> + <node oor:name="Transitions"> + <node oor:name="venetian-blinds-horizontal" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>venetian-blinds</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>horizontal</value> + </prop> + </node> + <node oor:name="venetian-blinds-vertical" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>venetian-blinds</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>vertical</value> + </prop> + </node> + <node oor:name="box-in" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>box</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>in</value> + </prop> + </node> + <node oor:name="box-out" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>box</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>out</value> + </prop> + </node> + <node oor:name="checkerboard-across" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>checkerboard</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>across</value> + </prop> + </node> + <node oor:name="checkerboard-down" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>checkerboard</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>down</value> + </prop> + </node> + <node oor:name="comb-horizontal" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>comb</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>horizontal</value> + </prop> + </node> + <node oor:name="comb-vertical" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>comb</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>vertical</value> + </prop> + </node> + <node oor:name="cover-down" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>cover</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>top-bottom</value> + </prop> + </node> + <node oor:name="cover-left" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>cover</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>right-left</value> + </prop> + </node> + <node oor:name="cover-right" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>cover</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>left-right</value> + </prop> + </node> + <node oor:name="cover-up" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>cover</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>bottom-top</value> + </prop> + </node> + <node oor:name="cover-left-down" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>cover</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>top-left-bottom-right</value> + </prop> + </node> + <node oor:name="cover-left-up" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>cover</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>bottom-left-top-right</value> + </prop> + </node> + <node oor:name="cover-right-down" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>cover</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>top-left-bottom-right</value> + </prop> + </node> + <node oor:name="cover-right-up" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>cover</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>bottom-left-top-right</value> + </prop> + </node> + <node oor:name="cut" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>cut</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>plain</value> + </prop> + </node> + <node oor:name="cut-through-black" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>cut</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>through-black</value> + </prop> + </node> + <node oor:name="dissolve" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>dissolve</value> </prop> </node> <node oor:name="finedissolve" oor:op="replace"> - <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Fine Dissolve</value> + <prop oor:name="Set" oor:type="xs:string"> + <value>finedissolve</value> + </prop> + </node> + <node oor:name="fade-smoothly" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>fade</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>smoothly</value> + </prop> + </node> + <node oor:name="fade-through-black" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>fade</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>through-black</value> + </prop> + </node> + <node oor:name="zoom-rotate-in" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>newsflash</value> + </prop> + </node> + <node oor:name="push-down" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>push</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>top-bottom</value> + </prop> + </node> + <node oor:name="push-left" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>push</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>right-left</value> + </prop> + </node> + <node oor:name="push-right" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>push</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>left-right</value> + </prop> + </node> + <node oor:name="push-up" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>push</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>bottom-top</value> + </prop> + </node> + <node oor:name="random-bars-horizontal" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>random-bars</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>horizontal</value> + </prop> + </node> + <node oor:name="random-bars-vertical" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>random-bars</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>vertical</value> + </prop> + </node> + <node oor:name="shape-circle" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>shape</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>circle</value> + </prop> + </node> + <node oor:name="shape-diamond" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>shape</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>diamond</value> + </prop> + </node> + <node oor:name="shape-plus" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>shape</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>plus</value> + </prop> + </node> + <node oor:name="split-horizontal-in" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>split</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>horizontal-in</value> + </prop> + </node> + <node oor:name="split-horizontal-out" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>split</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>horizontal-out</value> + </prop> + </node> + <node oor:name="split-vertical-in" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>split</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>vertical-in</value> + </prop> + </node> + <node oor:name="split-vertical-out" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>split</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>vertical-out</value> + </prop> + </node> + <node oor:name="diagonal-squares-left-down" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>diagonal-squares</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>top-left-bottom-right</value> + </prop> + </node> + <node oor:name="diagonal-squares-left-up" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>diagonal-squares</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>bottom-left-top-right</value> + </prop> + </node> + <node oor:name="diagonal-squares-right-down" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>diagonal-squares</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>top-left-bottom-right</value> + </prop> + </node> + <node oor:name="diagonal-squares-right-up" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>diagonal-squares</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>bottom-left-top-right</value> + </prop> + </node> + <node oor:name="uncover-down" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>uncover</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>top-bottom</value> + </prop> + </node> + <node oor:name="uncover-left" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>uncover</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>right-left</value> + </prop> + </node> + <node oor:name="uncover-right" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>uncover</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>left-right</value> + </prop> + </node> + <node oor:name="uncover-up" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>uncover</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>bottom-top</value> + </prop> + </node> + <node oor:name="uncover-left-down" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>uncover</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>top-right-bottom-left</value> + </prop> + </node> + <node oor:name="uncover-left-up" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>uncover</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>bottom-right-top-left</value> + </prop> + </node> + <node oor:name="uncover-right-down" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>uncover</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>top-right-bottom-left</value> + </prop> + </node> + <node oor:name="uncover-right-up" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>uncover</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>bottom-left-top-right</value> + </prop> + </node> + <node oor:name="wedge" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>wedge</value> + </prop> + </node> + <node oor:name="wheel-clockwise-1-spoke" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>wheel</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>cw-1-spoke</value> + </prop> + </node> + <node oor:name="wheel-clockwise-2-spokes" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>wheel</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>cw-2-spoke</value> + </prop> + </node> + <node oor:name="wheel-clockwise-3-spokes" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>wheel</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>cw-3-spoke</value> + </prop> + </node> + <node oor:name="wheel-clockwise-4-spokes" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>wheel</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>cw-4-spoke</value> + </prop> + </node> + <node oor:name="wheel-clockwise-8-spokes" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>wheel</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>cw-8-spoke</value> + </prop> + </node> + <node oor:name="wipe-down" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>wipe</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>top-bottom</value> + </prop> + </node> + <node oor:name="wipe-left" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>wipe</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>right-left</value> + </prop> + </node> + <node oor:name="wipe-right" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>wipe</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>left-right</value> + </prop> + </node> + <node oor:name="wipe-up" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>wipe</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>bottom-top</value> + </prop> + </node> + <node oor:name="random-transition" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>random</value> + </prop> + </node> + <node oor:name="tile-flip" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>tile-flip</value> + </prop> + </node> + <node oor:name="outside-cube" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>cube-turning</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>outside</value> + </prop> + </node> + <node oor:name="inside-cube" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>cube-turning</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>inside</value> + </prop> + </node> + <node oor:name="revolving-circles" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>revolving-circles</value> + </prop> + </node> + <node oor:name="turning-helix" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>turning-helix</value> + </prop> + </node> + <node oor:name="fall" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>fall</value> + </prop> + </node> + <node oor:name="turn-around" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>turn-around</value> + </prop> + </node> + <node oor:name="iris" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>iris</value> + </prop> + </node> + <node oor:name="turn-down" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>turn-down</value> + </prop> + </node> + <node oor:name="rochade" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>rochade</value> + </prop> + </node> + <node oor:name="venetian3dv" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>venetian-blinds-3d</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>vertical</value> + </prop> + </node> + <node oor:name="venetian3dh" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>venetian-blinds-3d</value> + </prop> + <prop oor:name="Variant" oor:type="xs:string"> + <value>horizontal</value> + </prop> + </node> + <node oor:name="static" oor:op="replace"> + <prop oor:name="Set" oor:type="xs:string"> + <value>static</value> </prop> </node> <node oor:name="vortex" oor:op="replace"> - <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Vortex</value> + <prop oor:name="Set" oor:type="xs:string"> + <value>vortex</value> </prop> </node> </node> diff --git a/officecfg/registry/schema/org/openoffice/Office/UI/Effects.xcs b/officecfg/registry/schema/org/openoffice/Office/UI/Effects.xcs index 2faf88ea2d13..0104a9d88fc7 100644 --- a/officecfg/registry/schema/org/openoffice/Office/UI/Effects.xcs +++ b/officecfg/registry/schema/org/openoffice/Office/UI/Effects.xcs @@ -32,6 +32,36 @@ </info> </prop> </group> + <group oor:name="TransitionType"> + <info> + <desc>Provides a mapping between transition ids and their hierarchical representation on the user interface.</desc> + </info> + <prop oor:name="Set" oor:type="xs:string" oor:localized="false"> + <info> + <desc>A localized text that describes the set of similar looking transitions the transition belongs to.</desc> + </info> + </prop> + <prop oor:name="Variant" oor:type="xs:string" oor:localized="false"> + <info> + <desc>A localized text that identifies the variant inside a set of similar looking transitions the transition belongs to.</desc> + </info> + </prop> + </group> + <group oor:name="TransitionSetType"> + <info> + <desc>Provides a mapping between transition sets and their textual representation on the user interface.</desc> + </info> + <prop oor:name="Label" oor:type="xs:string" oor:localized="true"> + <info> + <desc>A localized text that describes the animation effect.</desc> + </info> + </prop> + <prop oor:name="Group" oor:type="xs:string" oor:localized="false"> + <info> + <desc>A localized text that describes the top-level group of transitions the transition belongs to.</desc> + </info> + </prop> + </group> <group oor:name="PresetCategory"> <info> <desc>Maps a custom animation effect node to an effect category.</desc> @@ -58,7 +88,22 @@ <desc>Contains preset ids for effects and identifiers that are used by the user interface."</desc> </info> </set> - <set oor:name="Transitions" oor:node-type="LabelType"> + <set oor:name="TransitionGroups" oor:node-type="LabelType"> + <info> + <desc>Contains transition grouping ids for transitions and identifiers that are used by the user interface."</desc> + </info> + </set> + <set oor:name="TransitionSets" oor:node-type="TransitionSetType"> + <info> + <desc>Contains transition set ids for transitions and identifiers that are used by the user interface."</desc> + </info> + </set> + <set oor:name="TransitionVariants" oor:node-type="LabelType"> + <info> + <desc>Contains transition variants ids for transitions and identifiers that are used by the user interface."</desc> + </info> + </set> + <set oor:name="Transitions" oor:node-type="TransitionType"> <info> <desc>Contains transition ids for transitions and identifiers that are used by the user interface."</desc> </info> diff --git a/sd/inc/TransitionPreset.hxx b/sd/inc/TransitionPreset.hxx index 95416a259af3..eb31d0c6f7a9 100644 --- a/sd/inc/TransitionPreset.hxx +++ b/sd/inc/TransitionPreset.hxx @@ -53,8 +53,11 @@ public: bool getDirection() const { return mbDirection; } sal_Int32 getFadeColor() const { return mnFadeColor; } - const OUString& getUIName() const { return maUIName; } const OUString& getPresetId() const { return maPresetId; } + const OUString& getGroupId() const { return maGroupId; } + const OUString& getSetId() const { return maSetId; } + const OUString& getSetLabel() const { return maSetLabel; } + const OUString& getVariantLabel() const { return maVariantLabel; } private: TransitionPreset( const css::uno::Reference< css::animations::XAnimationNode >& xNode ); @@ -64,11 +67,13 @@ private: bool mbDirection; sal_Int32 mnFadeColor; OUString maPresetId; - OUString maUIName; + OUString maGroupId; + OUString maSetId; + OUString maSetLabel; + OUString maVariantLabel; static bool importTransitionsFile( TransitionPresetList& rList, css::uno::Reference< css::lang::XMultiServiceFactory >& xServiceFactory, - UStringMap& rTransitionNameMap, const OUString& aFilename ); }; diff --git a/sd/source/core/TransitionPreset.cxx b/sd/source/core/TransitionPreset.cxx index 6b63d2f12c22..2d55ee6ece40 100644 --- a/sd/source/core/TransitionPreset.cxx +++ b/sd/source/core/TransitionPreset.cxx @@ -32,6 +32,7 @@ #include <comphelper/getexpandeduri.hxx> #include <comphelper/processfactory.hxx> #include <unotools/pathoptions.hxx> +#include <officecfg/Office/UI/Effects.hxx> #include <tools/stream.hxx> #include <rtl/uri.hxx> @@ -89,9 +90,15 @@ TransitionPreset::TransitionPreset( const css::uno::Reference< css::animations:: bool TransitionPreset::importTransitionsFile( TransitionPresetList& rList, Reference< XMultiServiceFactory >& xServiceFactory, - UStringMap& rTransitionNameMap, const OUString& aURL ) { + SAL_INFO("sd.transitions", "Importing " << aURL); + + Reference< container::XNameAccess > xTransitionSets( officecfg::Office::UI::Effects::UserInterface::TransitionSets::get() ); + Reference< container::XNameAccess > xTransitionGroups( officecfg::Office::UI::Effects::UserInterface::TransitionGroups::get() ); + Reference< container::XNameAccess > xTransitionVariants( officecfg::Office::UI::Effects::UserInterface::TransitionVariants::get() ); + Reference< container::XNameAccess > xTransitions( officecfg::Office::UI::Effects::UserInterface::Transitions::get() ); + // import transition presets Reference< XAnimationNode > xAnimationNode; @@ -105,26 +112,75 @@ bool TransitionPreset::importTransitionsFile( TransitionPresetList& rList, Reference< XAnimationNode > xChildNode( xEnumeration->nextElement(), UNO_QUERY_THROW ); if( xChildNode->getType() == AnimationNodeType::PAR ) { - // create it TransitionPresetPtr pPreset( new TransitionPreset( xChildNode ) ); - // name it OUString aPresetId( pPreset->getPresetId() ); + if( !aPresetId.isEmpty() ) { - UStringMap::const_iterator aIter( rTransitionNameMap.find( aPresetId ) ); - if( aIter != rTransitionNameMap.end() ) - pPreset->maUIName = (*aIter).second; - - // add it - rList.push_back( pPreset ); + Reference< container::XNameAccess > xTransitionNode; + + if (xTransitions->hasByName( aPresetId ) && + (xTransitions->getByName( aPresetId ) >>= xTransitionNode) && + xTransitionNode.is() ) + { + OUString sSet; + OUString sVariant; + + xTransitionNode->getByName( "Set" ) >>= sSet; + xTransitionNode->getByName( "Variant" ) >>= sVariant; + + Reference< container::XNameAccess > xSetNode; + + xTransitionSets->getByName( sSet ) >>= xSetNode; + if( xSetNode.is() ) + { + pPreset->maSetId = sSet; + xSetNode->getByName( "Label" ) >>= sSet; + pPreset->maSetLabel = sSet; + + OUString sGroup; + + xSetNode->getByName( "Group" ) >>= sGroup; + + Reference< container::XNameAccess > xGroupNode; + xTransitionGroups->getByName( sGroup ) >>= xGroupNode; + + if( xGroupNode.is() ) + { + pPreset->maGroupId = sGroup; + xGroupNode->getByName( "Label" ) >>= sGroup; + if( !sVariant.isEmpty() ) + { + Reference< container::XNameAccess > xVariantNode; + xTransitionVariants->getByName( sVariant ) >>= xVariantNode; + if( xVariantNode.is() ) + { + xVariantNode->getByName( "Label" ) >>= sVariant; + pPreset->maVariantLabel = sVariant; + } + } + + pPreset->maSetLabel = sSet; + SAL_INFO("sd.transitions", aPresetId << ": " << sGroup << "/" << sSet << (sVariant.isEmpty() ? OUString("") : OUString("/" + sVariant))); + + rList.push_back( pPreset ); + } + else + SAL_WARN("sd.transitions", "group node " << sGroup << " not found"); + } + else + SAL_WARN("sd.transitions", "set node " << sSet << " not found"); + } + else + SAL_WARN("sd.transitions", "transition node " << aPresetId << " not found"); } } else - { - OSL_FAIL( "sd::TransitionPreset::importTransitionPresetList(), malformed xml configuration file, giving up!" ); - break; - } + { + SAL_WARN("sd.transitions", " malformed xml configuration file " << aURL ); + break; + } } } catch( Exception& ) { return false; @@ -154,10 +210,6 @@ bool TransitionPreset::importTransitionPresetList( TransitionPresetList& rList ) Reference< XMultiServiceFactory > xConfigProvider = configuration::theDefaultProvider::get( xContext ); - UStringMap aTransitionNameMap; - const OUString aTransitionPath("/org.openoffice.Office.UI.Effects/UserInterface/Transitions" ); - implImportLabels( xConfigProvider, aTransitionPath, aTransitionNameMap ); - // read path to transition effects files from config Any propValue = uno::makeAny( beans::PropertyValue("nodepath", -1, @@ -178,7 +230,6 @@ bool TransitionPreset::importTransitionPresetList( TransitionPresetList& rList ) bRet |= importTransitionsFile( rList, xServiceFactory, - aTransitionNameMap, aURL ); } diff --git a/sd/source/ui/animations/SlideTransitionPane.cxx b/sd/source/ui/animations/SlideTransitionPane.cxx index e7022c07755f..fa7f3aebac63 100644 --- a/sd/source/ui/animations/SlideTransitionPane.cxx +++ b/sd/source/ui/animations/SlideTransitionPane.cxx @@ -60,7 +60,6 @@ using ::com::sun::star::uno::RuntimeException; using ::sd::framework::FrameworkHelper; -// ::sd::impl::TransitionEffect namespace sd { namespace impl @@ -265,55 +264,6 @@ void lcl_CreateUndoForPages( pManager->LeaveListAction(); } -sal_Int32 lcl_getTransitionEffectIndex( - SdDrawDocument * pDoc, - const ::sd::impl::TransitionEffect & rTransition ) -{ - // first entry: "<none>" - sal_Int32 nResultIndex = LISTBOX_ENTRY_NOTFOUND; - - if( pDoc ) - { - sal_Int32 nCurrentIndex = 0; - const ::sd::TransitionPresetList & rPresetList = ::sd::TransitionPreset::getTransitionPresetList(); - ::sd::TransitionPresetList::const_iterator aIt( rPresetList.begin()); - const ::sd::TransitionPresetList::const_iterator aEndIt( rPresetList.end()); - for( ; aIt != aEndIt; ++aIt, ++nCurrentIndex ) - { - if( rTransition.operator==( *(*aIt) )) - { - nResultIndex = nCurrentIndex; - break; - } - } - } - - return nResultIndex; -} - -::sd::TransitionPresetPtr lcl_getTransitionPresetByUIName( - SdDrawDocument * pDoc, - const OUString & rUIName ) -{ - ::sd::TransitionPresetPtr pResult; - if( pDoc ) - { - const ::sd::TransitionPresetList& rPresetList = ::sd::TransitionPreset::getTransitionPresetList(); - ::sd::TransitionPresetList::const_iterator aIter( rPresetList.begin() ); - const ::sd::TransitionPresetList::const_iterator aEnd( rPresetList.end() ); - for( ; aIter != aEnd; ++aIter ) - { - if( (*aIter)->getUIName().equals( rUIName )) - { - pResult = *aIter; - break; - } - } - } - - return pResult; -} - struct lcl_EqualsSoundFileName : public ::std::unary_function< OUString, bool > { explicit lcl_EqualsSoundFileName( const OUString & rStr ) : @@ -424,6 +374,8 @@ SlideTransitionPane::SlideTransitionPane( maLateInitTimer() { get(mpLB_SLIDE_TRANSITIONS, "transitions_list"); + get(mpFT_VARIANT, "variant_label"); + get(mpLB_VARIANT, "variant_list"); get(mpFT_SPEED, "speed_label"); get(mpLB_SPEED, "speed_list"); get(mpFT_SOUND, "sound_label"); @@ -439,6 +391,8 @@ SlideTransitionPane::SlideTransitionPane( mpLB_SLIDE_TRANSITIONS->set_width_request(mpLB_SLIDE_TRANSITIONS->approximate_char_width() * 16); mpLB_SLIDE_TRANSITIONS->SetDropDownLineCount(4); + mpLB_VARIANT->SetDropDownLineCount(4); + if( pDoc ) mxModel.set( pDoc->getUnoModel(), uno::UNO_QUERY ); // TODO: get correct view @@ -446,7 +400,8 @@ SlideTransitionPane::SlideTransitionPane( mxView.set( mxModel->getCurrentController(), uno::UNO_QUERY ); // fill list box of slide transitions - mpLB_SLIDE_TRANSITIONS->InsertEntry( SD_RESSTR( STR_SLIDETRANSITION_NONE ) ); + mpLB_SLIDE_TRANSITIONS->InsertEntry( SD_RESSTR( STR_SLIDETRANSITION_NONE ), Image( BitmapEx( "sd/cmd/transition-none.png" ) ) ); + m_aTransitionLBToSet.push_back( "" ); // set defaults mpCB_AUTO_PREVIEW->Check(); // automatic preview on @@ -460,6 +415,7 @@ SlideTransitionPane::SlideTransitionPane( mpLB_SLIDE_TRANSITIONS->SetSelectHdl( LINK( this, SlideTransitionPane, TransitionSelected )); + mpLB_VARIANT->SetSelectHdl( LINK( this, SlideTransitionPane, VariantListBoxSelected )); mpLB_SPEED->SetSelectHdl( LINK( this, SlideTransitionPane, SpeedListBoxSelected )); mpLB_SOUND->SetSelectHdl( LINK( this, SlideTransitionPane, SoundListBoxSelected )); mpCB_LOOP_SOUND->SetClickHdl( LINK( this, SlideTransitionPane, LoopSoundBoxChecked )); @@ -487,6 +443,8 @@ void SlideTransitionPane::dispose() maLateInitTimer.Stop(); removeListener(); mpLB_SLIDE_TRANSITIONS.clear(); + mpFT_VARIANT.clear(); + mpLB_VARIANT.clear(); mpFT_SPEED.clear(); mpLB_SPEED.clear(); mpFT_SOUND.clear(); @@ -568,16 +526,16 @@ void SlideTransitionPane::updateControls() impl::TransitionEffect aEffect( *pFirstPage ); // merge with other pages - ::sd::slidesorter::SlideSorterViewShell::PageSelection::const_iterator aIt( + ::sd::slidesorter::SlideSorterViewShell::PageSelection::const_iterator aPageIt( pSelectedPages->begin()); - ::sd::slidesorter::SlideSorterViewShell::PageSelection::const_iterator aEndIt( + ::sd::slidesorter::SlideSorterViewShell::PageSelection::const_iterator aPageEndIt( pSelectedPages->end()); // start with second page (note aIt != aEndIt, because ! aSelectedPages.empty()) - for( ++aIt ;aIt != aEndIt; ++aIt ) + for( ++aPageIt; aPageIt != aPageEndIt; ++aPageIt ) { - if( *aIt ) - aEffect.compareWith( *(*aIt) ); + if( *aPageIt ) + aEffect.compareWith( *(*aPageIt) ); } // detect current slide effect @@ -591,16 +549,50 @@ void SlideTransitionPane::updateControls() mpLB_SLIDE_TRANSITIONS->SelectEntryPos( 0 ); else { - sal_Int32 nEntry = lcl_getTransitionEffectIndex( mpDrawDoc, aEffect ); + int nEntry = LISTBOX_ENTRY_NOTFOUND; + const sd::TransitionPresetList& rPresetList = sd::TransitionPreset::getTransitionPresetList(); + sd::TransitionPresetPtr pFound; + + for( auto aIt: rPresetList ) + { + if( aEffect.operator==( *aIt )) + { + pFound = aIt; + // This function can be called before LateInit, with m_aSetToTransitionLBIndex + // not set up properly. In that case nEntry will stay as + // LISTBOX_ENTRY_NOTFOUND. But in that case we will be called soon again, I think. + if( m_aSetToTransitionLBIndex.find( aIt->getSetId() ) != m_aSetToTransitionLBIndex.end() ) + nEntry = m_aSetToTransitionLBIndex[aIt->getSetId()]; + break; + } + } + + mpLB_VARIANT->Clear(); if( nEntry == LISTBOX_ENTRY_NOTFOUND ) + { mpLB_SLIDE_TRANSITIONS->SetNoSelection(); + mpLB_VARIANT->Enable( false ); + } else { - // first entry in list is "none", so add 1 after translation - if( m_aPresetIndexes.find( nEntry ) != m_aPresetIndexes.end()) - mpLB_SLIDE_TRANSITIONS->SelectEntryPos( m_aPresetIndexes[ nEntry ] + 1 ); + // Fill in the variant listbox + for( auto aIt: rPresetList ) + { + if( aIt->getSetId().equals( pFound->getSetId() ) ) + { + if( !aIt->getVariantLabel().isEmpty() ) + { + mpLB_VARIANT->InsertEntry( aIt->getVariantLabel() ); + if( aEffect.operator==( *aIt )) + mpLB_VARIANT->SelectEntryPos( mpLB_VARIANT->GetEntryCount()-1 ); + } + } + } + if( mpLB_VARIANT->GetEntryCount() == 0 ) + mpLB_VARIANT->Enable( false ); else - mpLB_SLIDE_TRANSITIONS->SetNoSelection(); + mpLB_VARIANT->Enable(); + mpLB_SLIDE_TRANSITIONS->SelectEntryPos( nEntry ); } } } @@ -673,6 +665,7 @@ void SlideTransitionPane::updateControls() void SlideTransitionPane::updateControlState() { mpLB_SLIDE_TRANSITIONS->Enable( mbHasSelection ); + mpLB_VARIANT->Enable( mbHasSelection && mpLB_VARIANT->GetEntryCount() > 0 ); mpLB_SPEED->Enable( mbHasSelection ); mpLB_SOUND->Enable( mbHasSelection ); mpCB_LOOP_SOUND->Enable( mbHasSelection && (mpLB_SOUND->GetSelectEntryPos() > 2)); @@ -775,15 +768,28 @@ impl::TransitionEffect SlideTransitionPane::getTransitionEffectFromControls() co if( mpLB_SLIDE_TRANSITIONS->IsEnabled() && mpLB_SLIDE_TRANSITIONS->GetSelectEntryCount() > 0 ) { - TransitionPresetPtr pPreset = lcl_getTransitionPresetByUIName( - mpDrawDoc, OUString( mpLB_SLIDE_TRANSITIONS->GetSelectEntry())); + const sd::TransitionPresetList& rPresetList = sd::TransitionPreset::getTransitionPresetList(); - if( pPreset.get()) + int nVariant = 0; + bool bFound = false; + for( auto aIter: rPresetList ) { - aResult = impl::TransitionEffect( *pPreset ); - aResult.setAllAmbiguous(); + if( aIter->getSetId().equals(m_aTransitionLBToSet[mpLB_SLIDE_TRANSITIONS->GetSelectEntryPos()]) ) + { + if( mpLB_VARIANT->GetSelectEntryPos() == nVariant) + { + aResult = impl::TransitionEffect( *aIter ); + aResult.setAllAmbiguous(); + bFound = true; + break; + } + else + { + nVariant++; + } + } } - else + if( !bFound ) { aResult.mnType = 0; } @@ -1000,6 +1006,32 @@ IMPL_LINK_NOARG_TYPED(SlideTransitionPane, PlayButtonClicked, Button*, void) IMPL_LINK_NOARG_TYPED(SlideTransitionPane, TransitionSelected, ListBox&, void) { + mpLB_VARIANT->Clear(); + + if( mpLB_SLIDE_TRANSITIONS->GetSelectEntryPos() == LISTBOX_ENTRY_NOTFOUND) + return; + + if( mpLB_SLIDE_TRANSITIONS->GetSelectEntryPos() > 0) + { + const sd::TransitionPresetList& rPresetList = sd::TransitionPreset::getTransitionPresetList(); + + for( auto aIt: rPresetList ) + { + if( m_aSetToTransitionLBIndex[aIt->getSetId()] == mpLB_SLIDE_TRANSITIONS->GetSelectEntryPos() ) + mpLB_VARIANT->InsertEntry( aIt->getVariantLabel() ); + } + } + + if( mpLB_VARIANT->GetEntryCount() == 0 ) + { + mpLB_VARIANT->Enable( false ); + } + else + { + mpLB_VARIANT->Enable(); + mpLB_VARIANT->SelectEntryPos( 0 ); + } + applyToSelectedPages(); } @@ -1014,6 +1046,11 @@ IMPL_LINK_NOARG_TYPED(SlideTransitionPane, AdvanceTimeModified, Edit&, void) applyToSelectedPages(); } +IMPL_LINK_NOARG_TYPED(SlideTransitionPane, VariantListBoxSelected, ListBox&, void) +{ + applyToSelectedPages(); +} + IMPL_LINK_NOARG_TYPED(SlideTransitionPane, SpeedListBoxSelected, ListBox&, void) { applyToSelectedPages(); @@ -1048,21 +1085,42 @@ IMPL_LINK_NOARG_TYPED(SlideTransitionPane, AutoPreviewClicked, Button*, void) IMPL_LINK_NOARG_TYPED(SlideTransitionPane, LateInitCallback, Timer *, void) { const TransitionPresetList& rPresetList = TransitionPreset::getTransitionPresetList(); - TransitionPresetList::const_iterator aIter( rPresetList.begin() ); - const TransitionPresetList::const_iterator aEnd( rPresetList.end() ); - sal_uInt16 nIndex = 0; - ::std::size_t nUIIndex = 0; - while( aIter != aEnd ) + + for( auto aIter: rPresetList ) { - TransitionPresetPtr pPreset = (*aIter++); - const OUString aUIName( pPreset->getUIName() ); - if( !aUIName.isEmpty() ) + TransitionPresetPtr pPreset = aIter; + const OUString sLabel( pPreset->getSetLabel() ); + if( !sLabel.isEmpty() ) { - mpLB_SLIDE_TRANSITIONS->InsertEntry( aUIName ); - m_aPresetIndexes[ nIndex ] = (sal_uInt16)nUIIndex; - ++nUIIndex; + if( m_aNumVariants.find( pPreset->getSetId() ) == m_aNumVariants.end() ) + { + OUString sImageName("sd/cmd/transition-" + pPreset->getSetId() + ".png"); + + mpLB_SLIDE_TRANSITIONS->InsertEntry( sLabel, Image( BitmapEx( sImageName) ) ); + + m_aTransitionLBToSet.push_back( pPreset->getSetId() ); + + assert( m_aTransitionLBToSet.size() == static_cast<size_t>( mpLB_SLIDE_TRANSITIONS->GetEntryCount() ) ); + + m_aNumVariants[ pPreset->getSetId() ] = 1; + m_aSetToTransitionLBIndex[ aIter->getSetId() ] = mpLB_SLIDE_TRANSITIONS->GetEntryCount() - 1; + } + else + { + m_aNumVariants[ pPreset->getSetId() ]++; + } } - ++nIndex; + } + + for( int i = 0; i < mpLB_SLIDE_TRANSITIONS->GetEntryCount(); ++i ) + SAL_INFO("sd.transitions", i << ":" << mpLB_SLIDE_TRANSITIONS->GetEntry( i ) << " (" << m_aTransitionLBToSet[i] << ")"); + + for( auto aIter: rPresetList ) + { + SAL_INFO("sd.transitions", + aIter->getPresetId() << ": " << + m_aSetToTransitionLBIndex[ aIter->getSetId() ] << + " (" << mpLB_SLIDE_TRANSITIONS->GetEntry( m_aSetToTransitionLBIndex[ aIter->getSetId() ] ) << ")" ); } updateSoundList(); diff --git a/sd/source/ui/animations/SlideTransitionPane.hxx b/sd/source/ui/animations/SlideTransitionPane.hxx index 69e714d7be6d..814995ec9c2e 100644 --- a/sd/source/ui/animations/SlideTransitionPane.hxx +++ b/sd/source/ui/animations/SlideTransitionPane.hxx @@ -22,6 +22,7 @@ #include "EventMultiplexer.hxx" #include "SlideSorterViewShell.hxx" +#include "TransitionPreset.hxx" #include <vcl/ctrl.hxx> #include <vcl/lstbox.hxx> @@ -92,6 +93,7 @@ private: DECL_LINK_TYPED( TransitionSelected, ListBox&, void ); DECL_LINK_TYPED( AdvanceSlideRadioButtonToggled, RadioButton&, void ); DECL_LINK_TYPED( AdvanceTimeModified, Edit&, void ); + DECL_LINK_TYPED( VariantListBoxSelected, ListBox&, void ); DECL_LINK_TYPED( SpeedListBoxSelected, ListBox&, void ); DECL_LINK_TYPED( SoundListBoxSelected, ListBox&, void ); DECL_LINK_TYPED( LoopSoundBoxChecked, Button*, void ); @@ -102,6 +104,8 @@ private: SdDrawDocument * mpDrawDoc; VclPtr<ListBox> mpLB_SLIDE_TRANSITIONS; + VclPtr<FixedText> mpFT_VARIANT; + VclPtr<ListBox> mpLB_VARIANT; VclPtr<FixedText> mpFT_SPEED; VclPtr<ListBox> mpLB_SPEED; VclPtr<FixedText> mpFT_SOUND; @@ -125,8 +129,14 @@ private: tSoundListType maSoundList; mutable OUString maCurrentSoundFile; - typedef ::std::map< sal_uInt16, sal_uInt16 > tPresetIndexesType; - tPresetIndexesType m_aPresetIndexes; + // Map from TransitionSets (as in Effects.xcu) to mpLB_SLIDE_TRANSITIONS entry index. + std::map< OUString, int > m_aSetToTransitionLBIndex; + + // The reverse mapping: TransitionSets id of each entry in mpLB_SLIDE_TRANSITIONS. + std::vector< OUString > m_aTransitionLBToSet; + + // How many variants each transition set has + std::map< OUString, int > m_aNumVariants; Timer maLateInitTimer; }; diff --git a/sd/source/ui/dlg/dlgass.cxx b/sd/source/ui/dlg/dlgass.cxx index 2e35e9bf41c2..46202abab5b0 100644 --- a/sd/source/ui/dlg/dlgass.cxx +++ b/sd/source/ui/dlg/dlgass.cxx @@ -241,6 +241,8 @@ public: DECL_LINK_TYPED( PresTypeHdl, Button*, void ); DECL_LINK_TYPED( UpdateUserDataHdl, Edit&, void ); DECL_LINK_TYPED( SelectEffectHdl, ListBox&, void); + DECL_LINK_TYPED( SelectVariantHdl, ListBox&, void); + DECL_LINK_TYPED( SelectSpeedHdl, ListBox&, void); DECL_LINK_TYPED( OpenButtonHdl, Button *, void ); OUString maCreateStr; @@ -288,7 +290,9 @@ public: VclPtr<FixedText> mpPage3EffectFL; VclPtr<FixedText> mpPage3EffectFT; VclPtr<FadeEffectLB> mpPage3EffectLB; + VclPtr<FixedText> mpPage3VariantFT; VclPtr<FixedText> mpPage3SpeedFT; + VclPtr<ListBox> mpPage3VariantLB; VclPtr<ListBox> mpPage3SpeedLB; VclPtr<FixedText> mpPage3PresTypeFL; VclPtr<RadioButton> mpPage3PresTypeLiveRB; @@ -477,6 +481,8 @@ AssistentDlgImpl::AssistentDlgImpl( vcl::Window* pWindow, const Link<ListBox&,vo assDlg->get(mpPage3EffectFL, "page3EffectLabel"); assDlg->get(mpPage3EffectFT, "effectLabel"); assDlg->get(mpPage3EffectLB, "effectCombobox"); + assDlg->get(mpPage3VariantFT, "variantLabel"); + assDlg->get(mpPage3VariantLB, "variantCombobox"); assDlg->get(mpPage3SpeedFT, "speedLabel"); assDlg->get(mpPage3SpeedLB, "speedCombobox"); assDlg->get(mpPage3PresTypeFL, "presTypeLabel"); @@ -496,6 +502,8 @@ AssistentDlgImpl::AssistentDlgImpl( vcl::Window* pWindow, const Link<ListBox&,vo maAssistentFunc.InsertControl(3, mpPage3EffectFL ); maAssistentFunc.InsertControl(3, mpPage3EffectFT ); maAssistentFunc.InsertControl(3, mpPage3EffectLB ); + maAssistentFunc.InsertControl(3, mpPage3VariantFT ); + maAssistentFunc.InsertControl(3, mpPage3VariantLB ); maAssistentFunc.InsertControl(3, mpPage3SpeedFT ); maAssistentFunc.InsertControl(3, mpPage3SpeedLB ); maAssistentFunc.InsertControl(3, mpPage3PresTypeFL ); @@ -511,11 +519,14 @@ AssistentDlgImpl::AssistentDlgImpl( vcl::Window* pWindow, const Link<ListBox&,vo mpPage3EffectLB->SetSelectHdl( LINK(this,AssistentDlgImpl,SelectEffectHdl )); mpPage3EffectLB->SetDropDownLineCount( 12 ); + mpPage3VariantLB->SetSelectHdl( LINK(this,AssistentDlgImpl,SelectVariantHdl )); + mpPage3VariantLB->SetDropDownLineCount( 4 ); + mpPage3SpeedLB->InsertEntry( SD_RESSTR(STR_SLOW) ); mpPage3SpeedLB->InsertEntry( SD_RESSTR(STR_MEDIUM) ); mpPage3SpeedLB->InsertEntry( SD_RESSTR(STR_FAST) ); mpPage3SpeedLB->SetDropDownLineCount( 3 ); - mpPage3SpeedLB->SetSelectHdl( LINK(this,AssistentDlgImpl,SelectEffectHdl )); + mpPage3SpeedLB->SetSelectHdl( LINK(this,AssistentDlgImpl,SelectSpeedHdl )); mpPage3SpeedLB->SelectEntryPos( 1 ); mpPage3PresTypeLiveRB->Check(); @@ -964,7 +975,7 @@ SfxObjectShellLock AssistentDlgImpl::GetDocument() SdPage* pPage = pDoc->GetSdPage( nPgRelNum, PK_STANDARD ); if( mpPage5PageListCT->IsPageChecked(nPgAbsNum) ) { - mpPage3EffectLB->applySelected(pPage); + mpPage3EffectLB->applySelected(pPage, *mpPage3VariantLB); const sal_Int32 nPos = mpPage3SpeedLB->GetSelectEntryPos(); pPage->setTransitionDuration( (nPos == 0) ? 3.0 : (nPos == 1) ? 2.0 : 1.0 ); if(bKiosk) @@ -1096,6 +1107,17 @@ IMPL_LINK_TYPED( AssistentDlgImpl, SelectRegionHdl, ListBox&, rLB, void ) IMPL_LINK_NOARG_TYPED(AssistentDlgImpl, SelectEffectHdl, ListBox&, void) { maEffectPrevIdle.Start(); + mpPage3EffectLB->FillVariantLB(*mpPage3VariantLB); +} + +IMPL_LINK_NOARG_TYPED(AssistentDlgImpl, SelectVariantHdl, ListBox&, void) +{ + maEffectPrevIdle.Start(); +} + +IMPL_LINK_NOARG_TYPED(AssistentDlgImpl, SelectSpeedHdl, ListBox&, void) +{ + maEffectPrevIdle.Start(); } IMPL_LINK_NOARG_TYPED( AssistentDlgImpl, OpenButtonHdl, Button*, void ) @@ -1118,7 +1140,7 @@ IMPL_LINK_NOARG_TYPED(AssistentDlgImpl, EffectPreviewIdleHdl, Idle *, void) { SdPage* pPage = pDoc->GetSdPage( mnShowPage, PK_STANDARD ); if( pPage ) - mpPage3EffectLB->applySelected(pPage); + mpPage3EffectLB->applySelected(pPage, *mpPage3VariantLB); } } mpPreview->startPreview(); diff --git a/sd/source/ui/dlg/dlgctrls.cxx b/sd/source/ui/dlg/dlgctrls.cxx index 9137f37d3388..ff6141410a6d 100644 --- a/sd/source/ui/dlg/dlgctrls.cxx +++ b/sd/source/ui/dlg/dlgctrls.cxx @@ -19,6 +19,9 @@ #include <vcl/builderfactory.hxx> +#include <map> +#include <set> + #include "strings.hrc" #include "dlgctrls.hxx" #include "sdresid.hxx" @@ -29,6 +32,12 @@ using namespace ::sd; struct FadeEffectLBImpl { + // The set id of each entry + std::vector< OUString > maSet; + + // How many variants each transition set has + std::map< OUString, int > maNumVariants; + std::vector< TransitionPresetPtr > maPresets; }; @@ -51,27 +60,56 @@ void FadeEffectLB::dispose() void FadeEffectLB::Fill() { - TransitionPresetPtr pPreset; - InsertEntry( SD_RESSTR( STR_EFFECT_NONE ) ); - mpImpl->maPresets.push_back( pPreset ); + mpImpl->maPresets.push_back( TransitionPresetPtr() ); + mpImpl->maSet.push_back( "" ); const TransitionPresetList& rPresetList = TransitionPreset::getTransitionPresetList(); - TransitionPresetList::const_iterator aIter; - for( aIter = rPresetList.begin(); aIter != rPresetList.end(); ++aIter ) + + for( auto aIter = rPresetList.begin(); aIter != rPresetList.end(); ++aIter ) { - pPreset = (*aIter); - const OUString aUIName( pPreset->getUIName() ); - if( !aUIName.isEmpty() ) + TransitionPresetPtr pPreset = *aIter; + const OUString sLabel( pPreset->getSetLabel() ); + if( !sLabel.isEmpty() ) { - InsertEntry( aUIName ); + if( mpImpl->maNumVariants.find( pPreset->getSetId() ) == mpImpl->maNumVariants.end() ) + { + InsertEntry( sLabel ); + mpImpl->maSet.push_back( pPreset->getSetId() ); + mpImpl->maNumVariants[pPreset->getSetId()] = 1; + } + else + { + mpImpl->maNumVariants[pPreset->getSetId()]++; + } mpImpl->maPresets.push_back( pPreset ); } } + assert( static_cast<size_t>( GetEntryCount() ) == mpImpl->maSet.size() ); + assert( mpImpl->maPresets.size() == 1 + TransitionPreset::getTransitionPresetList().size() ); + SelectEntryPos(0); } +void FadeEffectLB::FillVariantLB(ListBox& rVariantLB) +{ + rVariantLB.Clear(); + for( auto aIter = mpImpl->maPresets.begin(); aIter != mpImpl->maPresets.end(); ++aIter ) + { + TransitionPresetPtr pPreset = *aIter; + if( !pPreset ) + continue; + const OUString sLabel( pPreset->getSetLabel() ); + if( !sLabel.isEmpty() && mpImpl->maSet[GetSelectEntryPos()].equals( pPreset->getSetId() ) ) + { + rVariantLB.InsertEntry( pPreset->getVariantLabel() ); + } + } + if( rVariantLB.GetEntryCount() > 0 ) + rVariantLB.SelectEntryPos( 0 ); +} + VCL_BUILDER_DECL_FACTORY(FadeEffectLB) { WinBits nBits = WB_CLIPCHILDREN|WB_LEFT|WB_VCENTER|WB_3DLOOK; @@ -84,24 +122,35 @@ VCL_BUILDER_DECL_FACTORY(FadeEffectLB) rRet = VclPtr<FadeEffectLB>::Create(pParent, nBits); } -void FadeEffectLB::applySelected( SdPage* pSlide ) const +void FadeEffectLB::applySelected( SdPage* pSlide, ListBox& rVariantLB ) const { - const sal_Int32 nPos = GetSelectEntryPos(); + if( !pSlide ) + return; - if( pSlide && (static_cast<size_t>(nPos) < mpImpl->maPresets.size() ) ) + if( GetSelectEntryPos() == 0 ) { - TransitionPresetPtr pPreset( mpImpl->maPresets[nPos] ); + pSlide->setTransitionType( 0 ); + pSlide->setTransitionSubtype( 0 ); + pSlide->setTransitionDirection( true ); + pSlide->setTransitionFadeColor( 0 ); + return; + } - if( pPreset.get() ) - { - pPreset->apply( pSlide ); - } - else + int nMatch = 0; + for( auto aIter = mpImpl->maPresets.begin(); aIter != mpImpl->maPresets.end(); ++aIter ) + { + TransitionPresetPtr pPreset = *aIter; + if( !pPreset ) + continue; + const OUString sLabel( pPreset->getSetLabel() ); + if( !sLabel.isEmpty() && mpImpl->maSet[GetSelectEntryPos()].equals( pPreset->getSetId() ) ) { - pSlide->setTransitionType( 0 ); - pSlide->setTransitionSubtype( 0 ); - pSlide->setTransitionDirection( true ); - pSlide->setTransitionFadeColor( 0 ); + if( nMatch == rVariantLB.GetSelectEntryPos() ) + { + pPreset->apply( pSlide ); + break; + } + nMatch++; } } } diff --git a/sd/source/ui/inc/dlgctrls.hxx b/sd/source/ui/inc/dlgctrls.hxx index 583c131e40d2..a8ae4ac905c2 100644 --- a/sd/source/ui/inc/dlgctrls.hxx +++ b/sd/source/ui/inc/dlgctrls.hxx @@ -40,8 +40,9 @@ public: virtual void dispose() override; void Fill(); -/* void selectEffectFromPage( SdPage* pPage ); */ - void applySelected( SdPage* pSlide ) const; + void FillVariantLB(ListBox& rVariantLB); + + void applySelected( SdPage* pSlide, ListBox& rVariantLB ) const; FadeEffectLBImpl* mpImpl; }; diff --git a/sd/uiconfig/simpress/ui/assistentdialog.ui b/sd/uiconfig/simpress/ui/assistentdialog.ui index bdb15ae8174d..e91c0d7b1e67 100644 --- a/sd/uiconfig/simpress/ui/assistentdialog.ui +++ b/sd/uiconfig/simpress/ui/assistentdialog.ui @@ -711,6 +711,22 @@ </packing> </child> <child> + <object class="GtkLabel" id="variantLabel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">start</property> + <property name="label" translatable="yes">_Variant:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">variantCombobox</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">1</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> <object class="GtkLabel" id="speedLabel"> <property name="visible">True</property> <property name="can_focus">False</property> @@ -721,7 +737,7 @@ </object> <packing> <property name="left_attach">0</property> - <property name="top_attach">1</property> + <property name="top_attach">2</property> <property name="width">1</property> <property name="height">1</property> </packing> @@ -740,7 +756,7 @@ </packing> </child> <child> - <object class="GtkComboBox" id="speedCombobox"> + <object class="GtkComboBox" id="variantCombobox"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="hexpand">True</property> @@ -752,6 +768,19 @@ <property name="height">1</property> </packing> </child> + <child> + <object class="GtkComboBox" id="speedCombobox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">2</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> </object> </child> </object> diff --git a/sd/uiconfig/simpress/ui/slidetransitionspanel.ui b/sd/uiconfig/simpress/ui/slidetransitionspanel.ui index 3870b74a0903..aed73b8fe587 100644 --- a/sd/uiconfig/simpress/ui/slidetransitionspanel.ui +++ b/sd/uiconfig/simpress/ui/slidetransitionspanel.ui @@ -78,10 +78,11 @@ <property name="can_focus">False</property> <property name="halign">end</property> <property name="label" translatable="yes">Speed:</property> + <property name="xalign">0</property> </object> <packing> <property name="left_attach">0</property> - <property name="top_attach">0</property> + <property name="top_attach">1</property> </packing> </child> <child> @@ -97,7 +98,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="top_attach">0</property> + <property name="top_attach">1</property> </packing> </child> <child> @@ -109,7 +110,7 @@ </object> <packing> <property name="left_attach">0</property> - <property name="top_attach">1</property> + <property name="top_attach">2</property> </packing> </child> <child> @@ -125,7 +126,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="top_attach">1</property> + <property name="top_attach">2</property> </packing> </child> <child> @@ -139,7 +140,28 @@ </object> <packing> <property name="left_attach">1</property> - <property name="top_attach">2</property> + <property name="top_attach">3</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="variant_label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Variant</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + </packing> + </child> + <child> + <object class="GtkComboBox" id="variant_list"> + <property name="visible">True</property> + <property name="can_focus">False</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">0</property> </packing> </child> <child> |