xref: /aoo4110/main/slideshow/test/demoshow.cxx (revision b1cdbd2c)
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