1 /**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied. See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21
22
23
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_sdext.hxx"
26
27 #include "PresenterCurrentSlideObserver.hxx"
28
29 using namespace ::com::sun::star;
30 using namespace ::com::sun::star::uno;
31 using ::rtl::OUString;
32
33 namespace sdext { namespace presenter {
34
35 //===== PresenterCurrentSlideObserver =========================================
36
PresenterCurrentSlideObserver(const::rtl::Reference<PresenterController> & rxPresenterController,const Reference<presentation::XSlideShowController> & rxSlideShowController)37 PresenterCurrentSlideObserver::PresenterCurrentSlideObserver (
38 const ::rtl::Reference<PresenterController>& rxPresenterController,
39 const Reference<presentation::XSlideShowController>& rxSlideShowController)
40 : PresenterCurrentSlideObserverInterfaceBase(m_aMutex),
41 mpPresenterController(rxPresenterController),
42 mxSlideShowController(rxSlideShowController)
43 {
44 if( mpPresenterController.is() )
45 {
46 mpPresenterController->addEventListener(this);
47 }
48
49 if( mxSlideShowController.is() )
50 {
51 // Listen for events from the slide show controller.
52 mxSlideShowController->addSlideShowListener(static_cast<XSlideShowListener*>(this));
53 }
54 }
55
~PresenterCurrentSlideObserver(void)56 PresenterCurrentSlideObserver::~PresenterCurrentSlideObserver (void)
57 {
58 }
59
disposing(void)60 void SAL_CALL PresenterCurrentSlideObserver::disposing (void)
61 {
62 // Disconnect form the slide show controller.
63 if(mxSlideShowController.is())
64 {
65 mxSlideShowController->removeSlideShowListener(static_cast<XSlideShowListener*>(this));
66 mxSlideShowController = NULL;
67 }
68 }
69
70 //----- XSlideShowListener ----------------------------------------------------
71
beginEvent(const Reference<animations::XAnimationNode> & rNode)72 void SAL_CALL PresenterCurrentSlideObserver::beginEvent (
73 const Reference<animations::XAnimationNode>& rNode)
74 {
75 (void)rNode;
76 }
77
endEvent(const Reference<animations::XAnimationNode> & rNode)78 void SAL_CALL PresenterCurrentSlideObserver::endEvent (
79 const Reference<animations::XAnimationNode>& rNode)
80 {
81 (void)rNode;
82 }
83
repeat(const css::uno::Reference<css::animations::XAnimationNode> & rNode,sal_Int32)84 void SAL_CALL PresenterCurrentSlideObserver::repeat (
85 const css::uno::Reference<css::animations::XAnimationNode>& rNode,
86 sal_Int32)
87 {
88 (void)rNode;
89 }
90
paused(void)91 void SAL_CALL PresenterCurrentSlideObserver::paused (void)
92 {
93 }
94
resumed(void)95 void SAL_CALL PresenterCurrentSlideObserver::resumed (void)
96 {
97 }
98
slideEnded(sal_Bool bReverse)99 void SAL_CALL PresenterCurrentSlideObserver::slideEnded (sal_Bool bReverse)
100 {
101 // Determine whether the new current slide (the one after the one that
102 // just ended) is the slide past the last slide in the presentation,
103 // i.e. the one that says something like "click to end presentation...".
104 if (mxSlideShowController.is() && !bReverse)
105 if (mxSlideShowController->getNextSlideIndex() < 0)
106 if( mpPresenterController.is() )
107 mpPresenterController->UpdateCurrentSlide(+1);
108 }
109
hyperLinkClicked(const rtl::OUString &)110 void SAL_CALL PresenterCurrentSlideObserver::hyperLinkClicked (const rtl::OUString &)
111 {
112 }
113
slideTransitionStarted(void)114 void SAL_CALL PresenterCurrentSlideObserver::slideTransitionStarted (void)
115 {
116 if( mpPresenterController.is() )
117 mpPresenterController->UpdateCurrentSlide(0);
118 }
119
slideTransitionEnded(void)120 void SAL_CALL PresenterCurrentSlideObserver::slideTransitionEnded (void)
121 {
122 }
123
slideAnimationsEnded(void)124 void SAL_CALL PresenterCurrentSlideObserver::slideAnimationsEnded (void)
125 {
126 }
127
128 //----- XEventListener --------------------------------------------------------
129
disposing(const lang::EventObject & rEvent)130 void SAL_CALL PresenterCurrentSlideObserver::disposing (
131 const lang::EventObject& rEvent)
132 {
133 if (rEvent.Source == Reference<XInterface>(static_cast<XWeak*>(mpPresenterController.get())))
134 dispose();
135 else if (rEvent.Source == mxSlideShowController)
136 mxSlideShowController = NULL;
137 }
138
139 } } // end of namespace ::sdext::presenter
140