1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielski #include <sal/main.h>
25*b1cdbd2cSJim Jagielski #include <rtl/ref.hxx>
26*b1cdbd2cSJim Jagielski #include <rtl/bootstrap.hxx>
27*b1cdbd2cSJim Jagielski
28*b1cdbd2cSJim Jagielski #include <cppuhelper/bootstrap.hxx>
29*b1cdbd2cSJim Jagielski #include <cppuhelper/servicefactory.hxx>
30*b1cdbd2cSJim Jagielski #include <cppuhelper/interfacecontainer.hxx>
31*b1cdbd2cSJim Jagielski #include <cppuhelper/compbase1.hxx>
32*b1cdbd2cSJim Jagielski #include <cppuhelper/compbase2.hxx>
33*b1cdbd2cSJim Jagielski
34*b1cdbd2cSJim Jagielski #include <comphelper/processfactory.hxx>
35*b1cdbd2cSJim Jagielski #include <comphelper/broadcasthelper.hxx>
36*b1cdbd2cSJim Jagielski #include <comphelper/anytostring.hxx>
37*b1cdbd2cSJim Jagielski #include <cppuhelper/exc_hlp.hxx>
38*b1cdbd2cSJim Jagielski
39*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XMultiServiceFactory.hpp>
40*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/XPropertySet.hpp>
41*b1cdbd2cSJim Jagielski #include <com/sun/star/rendering/XCanvas.hpp>
42*b1cdbd2cSJim Jagielski #include <com/sun/star/rendering/XSpriteCanvas.hpp>
43*b1cdbd2cSJim Jagielski #include <com/sun/star/presentation/XSlideShow.hpp>
44*b1cdbd2cSJim Jagielski #include <com/sun/star/presentation/XSlideShowView.hpp>
45*b1cdbd2cSJim Jagielski #include "com/sun/star/animations/TransitionType.hpp"
46*b1cdbd2cSJim Jagielski #include "com/sun/star/animations/TransitionSubType.hpp"
47*b1cdbd2cSJim Jagielski
48*b1cdbd2cSJim Jagielski #include <ucbhelper/contentbroker.hxx>
49*b1cdbd2cSJim Jagielski #include <ucbhelper/configurationkeys.hxx>
50*b1cdbd2cSJim Jagielski
51*b1cdbd2cSJim Jagielski #include <basegfx/matrix/b2dhommatrix.hxx>
52*b1cdbd2cSJim Jagielski #include <basegfx/tools/canvastools.hxx>
53*b1cdbd2cSJim Jagielski #include <basegfx/range/b2drectangle.hxx>
54*b1cdbd2cSJim Jagielski #include <basegfx/polygon/b2dpolygon.hxx>
55*b1cdbd2cSJim Jagielski #include <basegfx/polygon/b2dpolygontools.hxx>
56*b1cdbd2cSJim Jagielski
57*b1cdbd2cSJim Jagielski #include <cppcanvas/vclfactory.hxx>
58*b1cdbd2cSJim Jagielski #include <cppcanvas/basegfxfactory.hxx>
59*b1cdbd2cSJim Jagielski #include <cppcanvas/polypolygon.hxx>
60*b1cdbd2cSJim Jagielski
61*b1cdbd2cSJim Jagielski #include <canvas/canvastools.hxx>
62*b1cdbd2cSJim Jagielski
63*b1cdbd2cSJim Jagielski #include <vcl/dialog.hxx>
64*b1cdbd2cSJim Jagielski #include <vcl/timer.hxx>
65*b1cdbd2cSJim Jagielski #include <vcl/window.hxx>
66*b1cdbd2cSJim Jagielski #include <vcl/svapp.hxx>
67*b1cdbd2cSJim Jagielski
68*b1cdbd2cSJim Jagielski #include <stdio.h>
69*b1cdbd2cSJim Jagielski #include <unistd.h>
70*b1cdbd2cSJim Jagielski
71*b1cdbd2cSJim Jagielski
72*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
73*b1cdbd2cSJim Jagielski
74*b1cdbd2cSJim Jagielski namespace {
75*b1cdbd2cSJim Jagielski
76*b1cdbd2cSJim Jagielski typedef ::cppu::WeakComponentImplHelper1< presentation::XSlideShowView > ViewBase;
77*b1cdbd2cSJim Jagielski class View : public ::comphelper::OBaseMutex,
78*b1cdbd2cSJim Jagielski public ViewBase
79*b1cdbd2cSJim Jagielski {
80*b1cdbd2cSJim Jagielski public:
View(const uno::Reference<rendering::XSpriteCanvas> & rCanvas)81*b1cdbd2cSJim Jagielski explicit View( const uno::Reference< rendering::XSpriteCanvas >& rCanvas ) :
82*b1cdbd2cSJim Jagielski ViewBase( m_aMutex ),
83*b1cdbd2cSJim Jagielski mxCanvas( rCanvas ),
84*b1cdbd2cSJim Jagielski maPaintListeners( m_aMutex ),
85*b1cdbd2cSJim Jagielski maTransformationListeners( m_aMutex ),
86*b1cdbd2cSJim Jagielski maMouseListeners( m_aMutex ),
87*b1cdbd2cSJim Jagielski maMouseMotionListeners( m_aMutex ),
88*b1cdbd2cSJim Jagielski maTransform(),
89*b1cdbd2cSJim Jagielski maSize()
90*b1cdbd2cSJim Jagielski {
91*b1cdbd2cSJim Jagielski }
92*b1cdbd2cSJim Jagielski
resize(const::Size & rNewSize)93*b1cdbd2cSJim Jagielski void resize( const ::Size& rNewSize )
94*b1cdbd2cSJim Jagielski {
95*b1cdbd2cSJim Jagielski maSize = rNewSize;
96*b1cdbd2cSJim Jagielski const sal_Int32 nSize( std::min( rNewSize.Width(), rNewSize.Height() ) - 10);
97*b1cdbd2cSJim Jagielski maTransform = basegfx::tools::createScaleTranslateB2DHomMatrix(
98*b1cdbd2cSJim Jagielski nSize, nSize, (rNewSize.Width() - nSize) / 2, (rNewSize.Height() - nSize) / 2);
99*b1cdbd2cSJim Jagielski
100*b1cdbd2cSJim Jagielski lang::EventObject aEvent( *this );
101*b1cdbd2cSJim Jagielski maTransformationListeners.notifyEach( &util::XModifyListener::modified,
102*b1cdbd2cSJim Jagielski aEvent );
103*b1cdbd2cSJim Jagielski }
104*b1cdbd2cSJim Jagielski
repaint()105*b1cdbd2cSJim Jagielski void repaint()
106*b1cdbd2cSJim Jagielski {
107*b1cdbd2cSJim Jagielski awt::PaintEvent aEvent( *this,
108*b1cdbd2cSJim Jagielski awt::Rectangle(),
109*b1cdbd2cSJim Jagielski 0 );
110*b1cdbd2cSJim Jagielski maPaintListeners.notifyEach( &awt::XPaintListener::windowPaint,
111*b1cdbd2cSJim Jagielski aEvent );
112*b1cdbd2cSJim Jagielski }
113*b1cdbd2cSJim Jagielski
114*b1cdbd2cSJim Jagielski private:
~View()115*b1cdbd2cSJim Jagielski virtual ~View() {}
116*b1cdbd2cSJim Jagielski
getCanvas()117*b1cdbd2cSJim Jagielski virtual uno::Reference< rendering::XSpriteCanvas > SAL_CALL getCanvas( ) throw (uno::RuntimeException)
118*b1cdbd2cSJim Jagielski {
119*b1cdbd2cSJim Jagielski return mxCanvas;
120*b1cdbd2cSJim Jagielski }
121*b1cdbd2cSJim Jagielski
clear()122*b1cdbd2cSJim Jagielski virtual void SAL_CALL clear( ) throw (uno::RuntimeException)
123*b1cdbd2cSJim Jagielski {
124*b1cdbd2cSJim Jagielski ::basegfx::B2DPolygon aPoly( ::basegfx::tools::createPolygonFromRect(
125*b1cdbd2cSJim Jagielski ::basegfx::B2DRectangle(0.0,0.0,
126*b1cdbd2cSJim Jagielski maSize.Width(),
127*b1cdbd2cSJim Jagielski maSize.Height() )));
128*b1cdbd2cSJim Jagielski ::cppcanvas::SpriteCanvasSharedPtr pCanvas(
129*b1cdbd2cSJim Jagielski ::cppcanvas::VCLFactory::getInstance().createSpriteCanvas( mxCanvas ));
130*b1cdbd2cSJim Jagielski if( !pCanvas )
131*b1cdbd2cSJim Jagielski return;
132*b1cdbd2cSJim Jagielski
133*b1cdbd2cSJim Jagielski ::cppcanvas::PolyPolygonSharedPtr pPolyPoly(
134*b1cdbd2cSJim Jagielski ::cppcanvas::BaseGfxFactory::getInstance().createPolyPolygon( pCanvas,
135*b1cdbd2cSJim Jagielski aPoly ) );
136*b1cdbd2cSJim Jagielski if( !pPolyPoly )
137*b1cdbd2cSJim Jagielski return;
138*b1cdbd2cSJim Jagielski
139*b1cdbd2cSJim Jagielski if( pPolyPoly )
140*b1cdbd2cSJim Jagielski {
141*b1cdbd2cSJim Jagielski pPolyPoly->setRGBAFillColor( 0x808080FFU );
142*b1cdbd2cSJim Jagielski pPolyPoly->draw();
143*b1cdbd2cSJim Jagielski }
144*b1cdbd2cSJim Jagielski }
145*b1cdbd2cSJim Jagielski
getTransformation()146*b1cdbd2cSJim Jagielski virtual geometry::AffineMatrix2D SAL_CALL getTransformation( ) throw (uno::RuntimeException)
147*b1cdbd2cSJim Jagielski {
148*b1cdbd2cSJim Jagielski geometry::AffineMatrix2D aRes;
149*b1cdbd2cSJim Jagielski return basegfx::unotools::affineMatrixFromHomMatrix( aRes,
150*b1cdbd2cSJim Jagielski maTransform );
151*b1cdbd2cSJim Jagielski }
152*b1cdbd2cSJim Jagielski
addTransformationChangedListener(const uno::Reference<util::XModifyListener> & xListener)153*b1cdbd2cSJim Jagielski virtual void SAL_CALL addTransformationChangedListener( const uno::Reference< util::XModifyListener >& xListener ) throw (uno::RuntimeException)
154*b1cdbd2cSJim Jagielski {
155*b1cdbd2cSJim Jagielski maTransformationListeners.addInterface( xListener );
156*b1cdbd2cSJim Jagielski }
157*b1cdbd2cSJim Jagielski
removeTransformationChangedListener(const uno::Reference<util::XModifyListener> & xListener)158*b1cdbd2cSJim Jagielski virtual void SAL_CALL removeTransformationChangedListener( const uno::Reference< util::XModifyListener >& xListener ) throw (uno::RuntimeException)
159*b1cdbd2cSJim Jagielski {
160*b1cdbd2cSJim Jagielski maTransformationListeners.removeInterface( xListener );
161*b1cdbd2cSJim Jagielski }
162*b1cdbd2cSJim Jagielski
addPaintListener(const uno::Reference<awt::XPaintListener> & xListener)163*b1cdbd2cSJim Jagielski virtual void SAL_CALL addPaintListener( const uno::Reference< awt::XPaintListener >& xListener ) throw (uno::RuntimeException)
164*b1cdbd2cSJim Jagielski {
165*b1cdbd2cSJim Jagielski maPaintListeners.addInterface( xListener );
166*b1cdbd2cSJim Jagielski }
167*b1cdbd2cSJim Jagielski
removePaintListener(const uno::Reference<awt::XPaintListener> & xListener)168*b1cdbd2cSJim Jagielski virtual void SAL_CALL removePaintListener( const uno::Reference< awt::XPaintListener >& xListener ) throw (uno::RuntimeException)
169*b1cdbd2cSJim Jagielski {
170*b1cdbd2cSJim Jagielski maPaintListeners.removeInterface( xListener );
171*b1cdbd2cSJim Jagielski }
172*b1cdbd2cSJim Jagielski
addMouseListener(const uno::Reference<awt::XMouseListener> & xListener)173*b1cdbd2cSJim Jagielski virtual void SAL_CALL addMouseListener( const uno::Reference< awt::XMouseListener >& xListener ) throw (uno::RuntimeException)
174*b1cdbd2cSJim Jagielski {
175*b1cdbd2cSJim Jagielski maMouseListeners.addInterface( xListener );
176*b1cdbd2cSJim Jagielski }
177*b1cdbd2cSJim Jagielski
removeMouseListener(const uno::Reference<awt::XMouseListener> & xListener)178*b1cdbd2cSJim Jagielski virtual void SAL_CALL removeMouseListener( const uno::Reference< awt::XMouseListener >& xListener ) throw (uno::RuntimeException)
179*b1cdbd2cSJim Jagielski {
180*b1cdbd2cSJim Jagielski maMouseListeners.removeInterface( xListener );
181*b1cdbd2cSJim Jagielski }
182*b1cdbd2cSJim Jagielski
addMouseMotionListener(const uno::Reference<awt::XMouseMotionListener> & xListener)183*b1cdbd2cSJim Jagielski virtual void SAL_CALL addMouseMotionListener( const uno::Reference< awt::XMouseMotionListener >& xListener ) throw (uno::RuntimeException)
184*b1cdbd2cSJim Jagielski {
185*b1cdbd2cSJim Jagielski maMouseMotionListeners.addInterface( xListener );
186*b1cdbd2cSJim Jagielski }
187*b1cdbd2cSJim Jagielski
removeMouseMotionListener(const uno::Reference<awt::XMouseMotionListener> & xListener)188*b1cdbd2cSJim Jagielski virtual void SAL_CALL removeMouseMotionListener( const uno::Reference< awt::XMouseMotionListener >& xListener ) throw (uno::RuntimeException)
189*b1cdbd2cSJim Jagielski {
190*b1cdbd2cSJim Jagielski maMouseMotionListeners.removeInterface( xListener );
191*b1cdbd2cSJim Jagielski }
192*b1cdbd2cSJim Jagielski
setMouseCursor(::sal_Int16)193*b1cdbd2cSJim Jagielski virtual void SAL_CALL setMouseCursor( ::sal_Int16 /*nPointerShape*/ ) throw (uno::RuntimeException)
194*b1cdbd2cSJim Jagielski {
195*b1cdbd2cSJim Jagielski }
196*b1cdbd2cSJim Jagielski
197*b1cdbd2cSJim Jagielski uno::Reference< rendering::XSpriteCanvas > mxCanvas;
198*b1cdbd2cSJim Jagielski ::cppu::OInterfaceContainerHelper maPaintListeners;
199*b1cdbd2cSJim Jagielski ::cppu::OInterfaceContainerHelper maTransformationListeners;
200*b1cdbd2cSJim Jagielski ::cppu::OInterfaceContainerHelper maMouseListeners;
201*b1cdbd2cSJim Jagielski ::cppu::OInterfaceContainerHelper maMouseMotionListeners;
202*b1cdbd2cSJim Jagielski basegfx::B2DHomMatrix maTransform;
203*b1cdbd2cSJim Jagielski Size maSize;
204*b1cdbd2cSJim Jagielski };
205*b1cdbd2cSJim Jagielski
206*b1cdbd2cSJim Jagielski typedef ::cppu::WeakComponentImplHelper2< drawing::XDrawPage,
207*b1cdbd2cSJim Jagielski beans::XPropertySet > SlideBase;
208*b1cdbd2cSJim Jagielski class DummySlide : public ::comphelper::OBaseMutex,
209*b1cdbd2cSJim Jagielski public SlideBase
210*b1cdbd2cSJim Jagielski {
211*b1cdbd2cSJim Jagielski public:
DummySlide()212*b1cdbd2cSJim Jagielski DummySlide() : SlideBase( m_aMutex ) {}
213*b1cdbd2cSJim Jagielski
214*b1cdbd2cSJim Jagielski private:
215*b1cdbd2cSJim Jagielski // XDrawPage
add(const uno::Reference<drawing::XShape> &)216*b1cdbd2cSJim Jagielski virtual void SAL_CALL add( const uno::Reference< drawing::XShape >& /*xShape*/ ) throw (uno::RuntimeException)
217*b1cdbd2cSJim Jagielski {
218*b1cdbd2cSJim Jagielski }
219*b1cdbd2cSJim Jagielski
remove(const uno::Reference<drawing::XShape> &)220*b1cdbd2cSJim Jagielski virtual void SAL_CALL remove( const uno::Reference< drawing::XShape >& /*xShape*/ ) throw (uno::RuntimeException)
221*b1cdbd2cSJim Jagielski {
222*b1cdbd2cSJim Jagielski }
223*b1cdbd2cSJim Jagielski
getCount()224*b1cdbd2cSJim Jagielski virtual ::sal_Int32 SAL_CALL getCount( ) throw (uno::RuntimeException)
225*b1cdbd2cSJim Jagielski {
226*b1cdbd2cSJim Jagielski return 0;
227*b1cdbd2cSJim Jagielski }
228*b1cdbd2cSJim Jagielski
getByIndex(::sal_Int32)229*b1cdbd2cSJim Jagielski virtual uno::Any SAL_CALL getByIndex( ::sal_Int32 /*Index*/ ) throw (lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException)
230*b1cdbd2cSJim Jagielski {
231*b1cdbd2cSJim Jagielski return uno::Any();
232*b1cdbd2cSJim Jagielski }
233*b1cdbd2cSJim Jagielski
getElementType()234*b1cdbd2cSJim Jagielski virtual uno::Type SAL_CALL getElementType( ) throw (uno::RuntimeException)
235*b1cdbd2cSJim Jagielski {
236*b1cdbd2cSJim Jagielski return uno::Type();
237*b1cdbd2cSJim Jagielski }
238*b1cdbd2cSJim Jagielski
hasElements()239*b1cdbd2cSJim Jagielski virtual ::sal_Bool SAL_CALL hasElements( ) throw (uno::RuntimeException)
240*b1cdbd2cSJim Jagielski {
241*b1cdbd2cSJim Jagielski return false;
242*b1cdbd2cSJim Jagielski }
243*b1cdbd2cSJim Jagielski
244*b1cdbd2cSJim Jagielski // XPropertySet
getPropertySetInfo()245*b1cdbd2cSJim Jagielski virtual uno::Reference< beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw (uno::RuntimeException)
246*b1cdbd2cSJim Jagielski {
247*b1cdbd2cSJim Jagielski return uno::Reference< beans::XPropertySetInfo >();
248*b1cdbd2cSJim Jagielski }
249*b1cdbd2cSJim Jagielski
setPropertyValue(const::rtl::OUString &,const uno::Any &)250*b1cdbd2cSJim Jagielski virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& /*aPropertyName*/,
251*b1cdbd2cSJim Jagielski const uno::Any& /*aValue*/ ) throw (beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException)
252*b1cdbd2cSJim Jagielski {
253*b1cdbd2cSJim Jagielski }
254*b1cdbd2cSJim Jagielski
getPropertyValue(const::rtl::OUString & PropertyName)255*b1cdbd2cSJim Jagielski virtual uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
256*b1cdbd2cSJim Jagielski {
257*b1cdbd2cSJim Jagielski typedef ::canvas::tools::ValueMap< sal_Int16 > PropMapT;
258*b1cdbd2cSJim Jagielski
259*b1cdbd2cSJim Jagielski // fixed PropertyValue map
260*b1cdbd2cSJim Jagielski static PropMapT::MapEntry lcl_propertyMap[] =
261*b1cdbd2cSJim Jagielski {
262*b1cdbd2cSJim Jagielski {"Height", 100},
263*b1cdbd2cSJim Jagielski {"MinimalFrameNumber", 50},
264*b1cdbd2cSJim Jagielski {"TransitionDuration", 10},
265*b1cdbd2cSJim Jagielski {"TransitionSubtype", animations::TransitionSubType::FROMTOPLEFT},
266*b1cdbd2cSJim Jagielski {"TransitionType", animations::TransitionType::PUSHWIPE},
267*b1cdbd2cSJim Jagielski {"Width", 100}
268*b1cdbd2cSJim Jagielski };
269*b1cdbd2cSJim Jagielski
270*b1cdbd2cSJim Jagielski static PropMapT aMap( lcl_propertyMap,
271*b1cdbd2cSJim Jagielski sizeof(lcl_propertyMap)/sizeof(*lcl_propertyMap),
272*b1cdbd2cSJim Jagielski true );
273*b1cdbd2cSJim Jagielski
274*b1cdbd2cSJim Jagielski sal_Int16 aRes;
275*b1cdbd2cSJim Jagielski if( !aMap.lookup( PropertyName, aRes ))
276*b1cdbd2cSJim Jagielski return uno::Any();
277*b1cdbd2cSJim Jagielski
278*b1cdbd2cSJim Jagielski return uno::makeAny(aRes);
279*b1cdbd2cSJim Jagielski }
280*b1cdbd2cSJim Jagielski
addPropertyChangeListener(const::rtl::OUString &,const uno::Reference<beans::XPropertyChangeListener> &)281*b1cdbd2cSJim Jagielski virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& /*aPropertyName*/,
282*b1cdbd2cSJim Jagielski const uno::Reference< beans::XPropertyChangeListener >& /*xListener*/ ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
283*b1cdbd2cSJim Jagielski {
284*b1cdbd2cSJim Jagielski }
285*b1cdbd2cSJim Jagielski
removePropertyChangeListener(const::rtl::OUString &,const uno::Reference<beans::XPropertyChangeListener> &)286*b1cdbd2cSJim Jagielski virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& /*aPropertyName*/,
287*b1cdbd2cSJim Jagielski const uno::Reference< beans::XPropertyChangeListener >& /*aListener*/ ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
288*b1cdbd2cSJim Jagielski {
289*b1cdbd2cSJim Jagielski }
290*b1cdbd2cSJim Jagielski
addVetoableChangeListener(const::rtl::OUString &,const uno::Reference<beans::XVetoableChangeListener> &)291*b1cdbd2cSJim Jagielski virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& /*PropertyName*/,
292*b1cdbd2cSJim Jagielski const uno::Reference< beans::XVetoableChangeListener >& /*aListener*/ ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
293*b1cdbd2cSJim Jagielski {
294*b1cdbd2cSJim Jagielski }
295*b1cdbd2cSJim Jagielski
removeVetoableChangeListener(const::rtl::OUString &,const uno::Reference<beans::XVetoableChangeListener> &)296*b1cdbd2cSJim Jagielski virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& /*PropertyName*/,
297*b1cdbd2cSJim Jagielski const uno::Reference< beans::XVetoableChangeListener >& /*aListener*/ ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
298*b1cdbd2cSJim Jagielski {
299*b1cdbd2cSJim Jagielski }
300*b1cdbd2cSJim Jagielski };
301*b1cdbd2cSJim Jagielski
302*b1cdbd2cSJim Jagielski
303*b1cdbd2cSJim Jagielski class DemoApp : public Application
304*b1cdbd2cSJim Jagielski {
305*b1cdbd2cSJim Jagielski public:
306*b1cdbd2cSJim Jagielski virtual void Main();
307*b1cdbd2cSJim Jagielski virtual sal_uInt16 Exception( sal_uInt16 nError );
308*b1cdbd2cSJim Jagielski };
309*b1cdbd2cSJim Jagielski
310*b1cdbd2cSJim Jagielski class ChildWindow : public Window
311*b1cdbd2cSJim Jagielski {
312*b1cdbd2cSJim Jagielski public:
313*b1cdbd2cSJim Jagielski ChildWindow( Window* pParent );
314*b1cdbd2cSJim Jagielski virtual ~ChildWindow();
315*b1cdbd2cSJim Jagielski virtual void Paint( const Rectangle& rRect );
316*b1cdbd2cSJim Jagielski virtual void Resize();
317*b1cdbd2cSJim Jagielski
setShow(const uno::Reference<presentation::XSlideShow> & rShow)318*b1cdbd2cSJim Jagielski void setShow( const uno::Reference< presentation::XSlideShow >& rShow ) { mxShow = rShow; init(); }
319*b1cdbd2cSJim Jagielski
320*b1cdbd2cSJim Jagielski private:
321*b1cdbd2cSJim Jagielski void init();
322*b1cdbd2cSJim Jagielski
323*b1cdbd2cSJim Jagielski rtl::Reference< View > mpView;
324*b1cdbd2cSJim Jagielski uno::Reference< presentation::XSlideShow > mxShow;
325*b1cdbd2cSJim Jagielski };
326*b1cdbd2cSJim Jagielski
ChildWindow(Window * pParent)327*b1cdbd2cSJim Jagielski ChildWindow::ChildWindow( Window* pParent ) :
328*b1cdbd2cSJim Jagielski Window(pParent, WB_CLIPCHILDREN | WB_BORDER| WB_3DLOOK ),
329*b1cdbd2cSJim Jagielski mpView(),
330*b1cdbd2cSJim Jagielski mxShow()
331*b1cdbd2cSJim Jagielski {
332*b1cdbd2cSJim Jagielski EnablePaint( true );
333*b1cdbd2cSJim Jagielski Show();
334*b1cdbd2cSJim Jagielski }
335*b1cdbd2cSJim Jagielski
~ChildWindow()336*b1cdbd2cSJim Jagielski ChildWindow::~ChildWindow()
337*b1cdbd2cSJim Jagielski {
338*b1cdbd2cSJim Jagielski if( mxShow.is() && mpView.is() )
339*b1cdbd2cSJim Jagielski mxShow->removeView( mpView.get() );
340*b1cdbd2cSJim Jagielski }
341*b1cdbd2cSJim Jagielski
init()342*b1cdbd2cSJim Jagielski void ChildWindow::init()
343*b1cdbd2cSJim Jagielski {
344*b1cdbd2cSJim Jagielski try
345*b1cdbd2cSJim Jagielski {
346*b1cdbd2cSJim Jagielski if( !mpView.is() )
347*b1cdbd2cSJim Jagielski {
348*b1cdbd2cSJim Jagielski uno::Reference< rendering::XCanvas > xCanvas( GetCanvas(),
349*b1cdbd2cSJim Jagielski uno::UNO_QUERY_THROW );
350*b1cdbd2cSJim Jagielski uno::Reference< rendering::XSpriteCanvas > xSpriteCanvas( xCanvas,
351*b1cdbd2cSJim Jagielski uno::UNO_QUERY_THROW );
352*b1cdbd2cSJim Jagielski mpView = new View( xSpriteCanvas );
353*b1cdbd2cSJim Jagielski mpView->resize( GetSizePixel() );
354*b1cdbd2cSJim Jagielski
355*b1cdbd2cSJim Jagielski if( mxShow.is() )
356*b1cdbd2cSJim Jagielski mxShow->addView( mpView.get() );
357*b1cdbd2cSJim Jagielski }
358*b1cdbd2cSJim Jagielski }
359*b1cdbd2cSJim Jagielski catch (const uno::Exception &e)
360*b1cdbd2cSJim Jagielski {
361*b1cdbd2cSJim Jagielski OSL_TRACE( "Exception '%s' thrown\n" ,
362*b1cdbd2cSJim Jagielski (const sal_Char*)::rtl::OUStringToOString( e.Message,
363*b1cdbd2cSJim Jagielski RTL_TEXTENCODING_UTF8 ));
364*b1cdbd2cSJim Jagielski }
365*b1cdbd2cSJim Jagielski }
366*b1cdbd2cSJim Jagielski
Paint(const Rectangle &)367*b1cdbd2cSJim Jagielski void ChildWindow::Paint( const Rectangle& /*rRect*/ )
368*b1cdbd2cSJim Jagielski {
369*b1cdbd2cSJim Jagielski try
370*b1cdbd2cSJim Jagielski {
371*b1cdbd2cSJim Jagielski if( mpView.is() )
372*b1cdbd2cSJim Jagielski mpView->repaint();
373*b1cdbd2cSJim Jagielski }
374*b1cdbd2cSJim Jagielski catch (const uno::Exception &e)
375*b1cdbd2cSJim Jagielski {
376*b1cdbd2cSJim Jagielski OSL_TRACE( "Exception '%s' thrown\n" ,
377*b1cdbd2cSJim Jagielski (const sal_Char*)::rtl::OUStringToOString( e.Message,
378*b1cdbd2cSJim Jagielski RTL_TEXTENCODING_UTF8 ));
379*b1cdbd2cSJim Jagielski }
380*b1cdbd2cSJim Jagielski }
381*b1cdbd2cSJim Jagielski
Resize()382*b1cdbd2cSJim Jagielski void ChildWindow::Resize()
383*b1cdbd2cSJim Jagielski {
384*b1cdbd2cSJim Jagielski if( mpView.is() )
385*b1cdbd2cSJim Jagielski mpView->resize( GetSizePixel() );
386*b1cdbd2cSJim Jagielski }
387*b1cdbd2cSJim Jagielski
388*b1cdbd2cSJim Jagielski class DemoWindow : public Dialog
389*b1cdbd2cSJim Jagielski {
390*b1cdbd2cSJim Jagielski public:
391*b1cdbd2cSJim Jagielski DemoWindow();
392*b1cdbd2cSJim Jagielski virtual void Paint( const Rectangle& rRect );
393*b1cdbd2cSJim Jagielski virtual void Resize();
394*b1cdbd2cSJim Jagielski
395*b1cdbd2cSJim Jagielski private:
396*b1cdbd2cSJim Jagielski void init();
397*b1cdbd2cSJim Jagielski DECL_LINK( updateHdl, Timer* );
398*b1cdbd2cSJim Jagielski
399*b1cdbd2cSJim Jagielski ChildWindow maLeftChild;
400*b1cdbd2cSJim Jagielski ChildWindow maRightTopChild;
401*b1cdbd2cSJim Jagielski ChildWindow maRightBottomChild;
402*b1cdbd2cSJim Jagielski uno::Reference< presentation::XSlideShow > mxShow;
403*b1cdbd2cSJim Jagielski AutoTimer maUpdateTimer;
404*b1cdbd2cSJim Jagielski bool mbSlideDisplayed;
405*b1cdbd2cSJim Jagielski };
406*b1cdbd2cSJim Jagielski
DemoWindow()407*b1cdbd2cSJim Jagielski DemoWindow::DemoWindow() :
408*b1cdbd2cSJim Jagielski Dialog((Window*)NULL),
409*b1cdbd2cSJim Jagielski maLeftChild( this ),
410*b1cdbd2cSJim Jagielski maRightTopChild( this ),
411*b1cdbd2cSJim Jagielski maRightBottomChild( this ),
412*b1cdbd2cSJim Jagielski mxShow(),
413*b1cdbd2cSJim Jagielski maUpdateTimer(),
414*b1cdbd2cSJim Jagielski mbSlideDisplayed( false )
415*b1cdbd2cSJim Jagielski {
416*b1cdbd2cSJim Jagielski SetText( rtl::OUString::createFromAscii( "Slideshow Demo" ) );
417*b1cdbd2cSJim Jagielski SetSizePixel( Size( 640, 480 ) );
418*b1cdbd2cSJim Jagielski EnablePaint( true );
419*b1cdbd2cSJim Jagielski
420*b1cdbd2cSJim Jagielski maLeftChild.SetPosSizePixel( Point(), Size(320,480) );
421*b1cdbd2cSJim Jagielski maRightTopChild.SetPosSizePixel( Point(320,0), Size(320,240) );
422*b1cdbd2cSJim Jagielski maRightBottomChild.SetPosSizePixel( Point(320,240), Size(320,240) );
423*b1cdbd2cSJim Jagielski Show();
424*b1cdbd2cSJim Jagielski
425*b1cdbd2cSJim Jagielski maUpdateTimer.SetTimeoutHdl(LINK(this, DemoWindow, updateHdl));
426*b1cdbd2cSJim Jagielski maUpdateTimer.SetTimeout( (sal_uLong)30 );
427*b1cdbd2cSJim Jagielski maUpdateTimer.Start();
428*b1cdbd2cSJim Jagielski }
429*b1cdbd2cSJim Jagielski
init()430*b1cdbd2cSJim Jagielski void DemoWindow::init()
431*b1cdbd2cSJim Jagielski {
432*b1cdbd2cSJim Jagielski try
433*b1cdbd2cSJim Jagielski {
434*b1cdbd2cSJim Jagielski if( !mxShow.is() )
435*b1cdbd2cSJim Jagielski {
436*b1cdbd2cSJim Jagielski uno::Reference< lang::XMultiServiceFactory > xFactory(
437*b1cdbd2cSJim Jagielski ::comphelper::getProcessServiceFactory(),
438*b1cdbd2cSJim Jagielski uno::UNO_QUERY_THROW );
439*b1cdbd2cSJim Jagielski
440*b1cdbd2cSJim Jagielski uno::Reference< uno::XInterface > xInt( xFactory->createInstance(
441*b1cdbd2cSJim Jagielski ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.SlideShow")) ));
442*b1cdbd2cSJim Jagielski
443*b1cdbd2cSJim Jagielski mxShow.set( xInt,
444*b1cdbd2cSJim Jagielski uno::UNO_QUERY_THROW );
445*b1cdbd2cSJim Jagielski
446*b1cdbd2cSJim Jagielski maLeftChild.setShow( mxShow );
447*b1cdbd2cSJim Jagielski maRightTopChild.setShow( mxShow );
448*b1cdbd2cSJim Jagielski maRightBottomChild.setShow( mxShow );
449*b1cdbd2cSJim Jagielski }
450*b1cdbd2cSJim Jagielski
451*b1cdbd2cSJim Jagielski if( mxShow.is() && !mbSlideDisplayed )
452*b1cdbd2cSJim Jagielski {
453*b1cdbd2cSJim Jagielski uno::Reference< drawing::XDrawPage > xSlide( new DummySlide );
454*b1cdbd2cSJim Jagielski mxShow->displaySlide( xSlide,
455*b1cdbd2cSJim Jagielski uno::Reference< animations::XAnimationNode >(),
456*b1cdbd2cSJim Jagielski uno::Sequence< beans::PropertyValue >() );
457*b1cdbd2cSJim Jagielski mxShow->setProperty( beans::PropertyValue(
458*b1cdbd2cSJim Jagielski rtl::OUString::createFromAscii("RehearseTimings"),
459*b1cdbd2cSJim Jagielski 0,
460*b1cdbd2cSJim Jagielski uno::makeAny( sal_True ),
461*b1cdbd2cSJim Jagielski beans::PropertyState_DIRECT_VALUE ));
462*b1cdbd2cSJim Jagielski mbSlideDisplayed = true;
463*b1cdbd2cSJim Jagielski }
464*b1cdbd2cSJim Jagielski }
465*b1cdbd2cSJim Jagielski catch (const uno::Exception &e)
466*b1cdbd2cSJim Jagielski {
467*b1cdbd2cSJim Jagielski OSL_TRACE( "Exception '%s' thrown\n" ,
468*b1cdbd2cSJim Jagielski (const sal_Char*)::rtl::OUStringToOString( e.Message,
469*b1cdbd2cSJim Jagielski RTL_TEXTENCODING_UTF8 ));
470*b1cdbd2cSJim Jagielski }
471*b1cdbd2cSJim Jagielski }
472*b1cdbd2cSJim Jagielski
IMPL_LINK(DemoWindow,updateHdl,Timer *,EMPTYARG)473*b1cdbd2cSJim Jagielski IMPL_LINK( DemoWindow, updateHdl, Timer*, EMPTYARG )
474*b1cdbd2cSJim Jagielski {
475*b1cdbd2cSJim Jagielski init();
476*b1cdbd2cSJim Jagielski
477*b1cdbd2cSJim Jagielski double nTimeout;
478*b1cdbd2cSJim Jagielski if( mxShow.is() )
479*b1cdbd2cSJim Jagielski mxShow->update(nTimeout);
480*b1cdbd2cSJim Jagielski
481*b1cdbd2cSJim Jagielski return 0;
482*b1cdbd2cSJim Jagielski }
483*b1cdbd2cSJim Jagielski
Paint(const Rectangle &)484*b1cdbd2cSJim Jagielski void DemoWindow::Paint( const Rectangle& /*rRect*/ )
485*b1cdbd2cSJim Jagielski {
486*b1cdbd2cSJim Jagielski init();
487*b1cdbd2cSJim Jagielski }
488*b1cdbd2cSJim Jagielski
Resize()489*b1cdbd2cSJim Jagielski void DemoWindow::Resize()
490*b1cdbd2cSJim Jagielski {
491*b1cdbd2cSJim Jagielski // TODO
492*b1cdbd2cSJim Jagielski }
493*b1cdbd2cSJim Jagielski
Exception(sal_uInt16 nError)494*b1cdbd2cSJim Jagielski sal_uInt16 DemoApp::Exception( sal_uInt16 nError )
495*b1cdbd2cSJim Jagielski {
496*b1cdbd2cSJim Jagielski switch( nError & EXC_MAJORTYPE )
497*b1cdbd2cSJim Jagielski {
498*b1cdbd2cSJim Jagielski case EXC_RSCNOTLOADED:
499*b1cdbd2cSJim Jagielski Abort( String::CreateFromAscii( "Error: could not load language resources.\nPlease check your installation.\n" ) );
500*b1cdbd2cSJim Jagielski break;
501*b1cdbd2cSJim Jagielski }
502*b1cdbd2cSJim Jagielski return 0;
503*b1cdbd2cSJim Jagielski }
504*b1cdbd2cSJim Jagielski
Main()505*b1cdbd2cSJim Jagielski void DemoApp::Main()
506*b1cdbd2cSJim Jagielski {
507*b1cdbd2cSJim Jagielski bool bHelp = false;
508*b1cdbd2cSJim Jagielski
509*b1cdbd2cSJim Jagielski for( sal_uInt16 i = 0; i < GetCommandLineParamCount(); i++ )
510*b1cdbd2cSJim Jagielski {
511*b1cdbd2cSJim Jagielski ::rtl::OUString aParam = GetCommandLineParam( i );
512*b1cdbd2cSJim Jagielski
513*b1cdbd2cSJim Jagielski if( aParam.equalsAscii( "--help" ) ||
514*b1cdbd2cSJim Jagielski aParam.equalsAscii( "-h" ) )
515*b1cdbd2cSJim Jagielski bHelp = true;
516*b1cdbd2cSJim Jagielski }
517*b1cdbd2cSJim Jagielski
518*b1cdbd2cSJim Jagielski if( bHelp )
519*b1cdbd2cSJim Jagielski {
520*b1cdbd2cSJim Jagielski printf( "demoshow - life Slideshow testbed\n" );
521*b1cdbd2cSJim Jagielski return;
522*b1cdbd2cSJim Jagielski }
523*b1cdbd2cSJim Jagielski
524*b1cdbd2cSJim Jagielski // bootstrap UNO
525*b1cdbd2cSJim Jagielski uno::Reference< lang::XMultiServiceFactory > xFactory;
526*b1cdbd2cSJim Jagielski try
527*b1cdbd2cSJim Jagielski {
528*b1cdbd2cSJim Jagielski uno::Reference< uno::XComponentContext > xCtx = ::cppu::defaultBootstrap_InitialComponentContext();
529*b1cdbd2cSJim Jagielski xFactory = uno::Reference< lang::XMultiServiceFactory >( xCtx->getServiceManager(),
530*b1cdbd2cSJim Jagielski uno::UNO_QUERY );
531*b1cdbd2cSJim Jagielski if( xFactory.is() )
532*b1cdbd2cSJim Jagielski ::comphelper::setProcessServiceFactory( xFactory );
533*b1cdbd2cSJim Jagielski }
534*b1cdbd2cSJim Jagielski catch( uno::RuntimeException& )
535*b1cdbd2cSJim Jagielski {
536*b1cdbd2cSJim Jagielski throw;
537*b1cdbd2cSJim Jagielski }
538*b1cdbd2cSJim Jagielski catch( uno::Exception& )
539*b1cdbd2cSJim Jagielski {
540*b1cdbd2cSJim Jagielski OSL_ENSURE( false,
541*b1cdbd2cSJim Jagielski rtl::OUStringToOString(
542*b1cdbd2cSJim Jagielski comphelper::anyToString( cppu::getCaughtException() ),
543*b1cdbd2cSJim Jagielski RTL_TEXTENCODING_UTF8 ).getStr() );
544*b1cdbd2cSJim Jagielski }
545*b1cdbd2cSJim Jagielski
546*b1cdbd2cSJim Jagielski if( !xFactory.is() )
547*b1cdbd2cSJim Jagielski {
548*b1cdbd2cSJim Jagielski OSL_TRACE( "Could not bootstrap UNO, installation must be in disorder. Exiting.\n" );
549*b1cdbd2cSJim Jagielski exit( 1 );
550*b1cdbd2cSJim Jagielski }
551*b1cdbd2cSJim Jagielski
552*b1cdbd2cSJim Jagielski // Create UCB.
553*b1cdbd2cSJim Jagielski uno::Sequence< uno::Any > aArgs( 2 );
554*b1cdbd2cSJim Jagielski aArgs[ 0 ] <<= rtl::OUString::createFromAscii( UCB_CONFIGURATION_KEY1_LOCAL );
555*b1cdbd2cSJim Jagielski aArgs[ 1 ] <<= rtl::OUString::createFromAscii( UCB_CONFIGURATION_KEY2_OFFICE );
556*b1cdbd2cSJim Jagielski ::ucbhelper::ContentBroker::initialize( xFactory, aArgs );
557*b1cdbd2cSJim Jagielski
558*b1cdbd2cSJim Jagielski DemoWindow pWindow;
559*b1cdbd2cSJim Jagielski pWindow.Execute();
560*b1cdbd2cSJim Jagielski
561*b1cdbd2cSJim Jagielski // clean up UCB
562*b1cdbd2cSJim Jagielski ::ucbhelper::ContentBroker::deinitialize();
563*b1cdbd2cSJim Jagielski }
564*b1cdbd2cSJim Jagielski }
565*b1cdbd2cSJim Jagielski
566*b1cdbd2cSJim Jagielski DemoApp aApp;
567