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 #include <com/sun/star/awt/SystemPointer.hpp>
24*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/PosSize.hpp>
25*b1cdbd2cSJim Jagielski 
26*b1cdbd2cSJim Jagielski #include "macavf_window.hxx"
27*b1cdbd2cSJim Jagielski #include "macavf_player.hxx"
28*b1cdbd2cSJim Jagielski 
29*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
30*b1cdbd2cSJim Jagielski 
31*b1cdbd2cSJim Jagielski 
32*b1cdbd2cSJim Jagielski namespace avmedia { namespace macavf {
33*b1cdbd2cSJim Jagielski 
34*b1cdbd2cSJim Jagielski // ---------------
35*b1cdbd2cSJim Jagielski // - Window -
36*b1cdbd2cSJim Jagielski // ---------------
37*b1cdbd2cSJim Jagielski 
Window(const uno::Reference<lang::XMultiServiceFactory> & i_rxMgr,Player & i_rPlayer,NSView * i_pParentView)38*b1cdbd2cSJim Jagielski Window::Window( const uno::Reference< lang::XMultiServiceFactory >& i_rxMgr, Player& i_rPlayer, NSView* i_pParentView )
39*b1cdbd2cSJim Jagielski :   mxMgr( i_rxMgr )
40*b1cdbd2cSJim Jagielski ,   maListeners( maMutex )
41*b1cdbd2cSJim Jagielski ,   meZoomLevel( media::ZoomLevel_NOT_AVAILABLE )
42*b1cdbd2cSJim Jagielski ,   mrPlayer( i_rPlayer )
43*b1cdbd2cSJim Jagielski ,   mnPointerType( awt::SystemPointer::ARROW )
44*b1cdbd2cSJim Jagielski ,   mpView( i_pParentView )
45*b1cdbd2cSJim Jagielski ,   mpPlayerLayer( NULL )
46*b1cdbd2cSJim Jagielski {
47*b1cdbd2cSJim Jagielski     OSL_TRACE ("Constructing an avmedia::macavf::Window");
48*b1cdbd2cSJim Jagielski     if( !mpView ) // sanity check
49*b1cdbd2cSJim Jagielski         return;
50*b1cdbd2cSJim Jagielski 
51*b1cdbd2cSJim Jagielski     // check the media asset for video content
52*b1cdbd2cSJim Jagielski     AVPlayer* pAVPlayer = mrPlayer.getAVPlayer();
53*b1cdbd2cSJim Jagielski     AVAsset* pMovie = [[pAVPlayer currentItem] asset];
54*b1cdbd2cSJim Jagielski     const int nVideoCount = [pMovie tracksWithMediaType:AVMediaTypeVideo].count;
55*b1cdbd2cSJim Jagielski     const int nAudioCount = [pMovie tracksWithMediaType:AVMediaTypeAudio].count;
56*b1cdbd2cSJim Jagielski     OSL_TRACE( "Found %d video and %d audio tracks.", nVideoCount, nAudioCount );
57*b1cdbd2cSJim Jagielski     (void)nAudioCount;
58*b1cdbd2cSJim Jagielski     if( nVideoCount <= 0 )
59*b1cdbd2cSJim Jagielski         return;
60*b1cdbd2cSJim Jagielski 
61*b1cdbd2cSJim Jagielski     // setup the AVPlayerLayer
62*b1cdbd2cSJim Jagielski     [pAVPlayer retain];
63*b1cdbd2cSJim Jagielski     [pAVPlayer pause];
64*b1cdbd2cSJim Jagielski     mpPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:pAVPlayer];
65*b1cdbd2cSJim Jagielski     [mpPlayerLayer retain];
66*b1cdbd2cSJim Jagielski     [mpPlayerLayer setFrame:[mpView frame]];
67*b1cdbd2cSJim Jagielski     [mpPlayerLayer setHidden:YES];
68*b1cdbd2cSJim Jagielski     [mpPlayerLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];
69*b1cdbd2cSJim Jagielski     [mpPlayerLayer addObserver:getObserver() forKeyPath:@"readyForDisplay" options:0 context:this];
70*b1cdbd2cSJim Jagielski 
71*b1cdbd2cSJim Jagielski     // setup the target view
72*b1cdbd2cSJim Jagielski     [mpView setWantsLayer:YES];
73*b1cdbd2cSJim Jagielski     [mpView.layer addSublayer:mpPlayerLayer];
74*b1cdbd2cSJim Jagielski }
75*b1cdbd2cSJim Jagielski 
76*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
77*b1cdbd2cSJim Jagielski 
~Window()78*b1cdbd2cSJim Jagielski Window::~Window()
79*b1cdbd2cSJim Jagielski {
80*b1cdbd2cSJim Jagielski     [mpPlayerLayer removeObserver:getObserver() forKeyPath:@"readyForDisplay"];
81*b1cdbd2cSJim Jagielski     [mpPlayerLayer release];
82*b1cdbd2cSJim Jagielski }
83*b1cdbd2cSJim Jagielski 
84*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
85*b1cdbd2cSJim Jagielski 
create(const::com::sun::star::uno::Sequence<::com::sun::star::uno::Any> & aArguments)86*b1cdbd2cSJim Jagielski bool Window::create( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments )
87*b1cdbd2cSJim Jagielski {
88*b1cdbd2cSJim Jagielski     return true;
89*b1cdbd2cSJim Jagielski }
90*b1cdbd2cSJim Jagielski 
91*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
92*b1cdbd2cSJim Jagielski 
handleObservation(NSString * pKeyPath)93*b1cdbd2cSJim Jagielski bool Window::handleObservation( NSString* pKeyPath )
94*b1cdbd2cSJim Jagielski {
95*b1cdbd2cSJim Jagielski     OSL_TRACE( "AVPlayer::handleObservation key=\"%s\"", [pKeyPath UTF8String]);
96*b1cdbd2cSJim Jagielski     const BOOL bReadyForDisplay = [mpPlayerLayer isReadyForDisplay];
97*b1cdbd2cSJim Jagielski     [mpPlayerLayer setHidden:!bReadyForDisplay];
98*b1cdbd2cSJim Jagielski     return true;
99*b1cdbd2cSJim Jagielski }
100*b1cdbd2cSJim Jagielski 
101*b1cdbd2cSJim Jagielski // XPlayerWindow
102*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
103*b1cdbd2cSJim Jagielski 
update()104*b1cdbd2cSJim Jagielski void SAL_CALL Window::update()
105*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
106*b1cdbd2cSJim Jagielski {}
107*b1cdbd2cSJim Jagielski 
108*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
109*b1cdbd2cSJim Jagielski 
setZoomLevel(media::ZoomLevel eZoomLevel)110*b1cdbd2cSJim Jagielski sal_Bool SAL_CALL Window::setZoomLevel( media::ZoomLevel eZoomLevel )
111*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
112*b1cdbd2cSJim Jagielski {
113*b1cdbd2cSJim Jagielski     return false;
114*b1cdbd2cSJim Jagielski }
115*b1cdbd2cSJim Jagielski 
116*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
117*b1cdbd2cSJim Jagielski 
getZoomLevel()118*b1cdbd2cSJim Jagielski media::ZoomLevel SAL_CALL Window::getZoomLevel(  )
119*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
120*b1cdbd2cSJim Jagielski {
121*b1cdbd2cSJim Jagielski     return meZoomLevel;
122*b1cdbd2cSJim Jagielski }
123*b1cdbd2cSJim Jagielski 
124*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
125*b1cdbd2cSJim Jagielski 
setPointerType(sal_Int32 nPointerType)126*b1cdbd2cSJim Jagielski void SAL_CALL Window::setPointerType( sal_Int32 nPointerType )
127*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
128*b1cdbd2cSJim Jagielski {
129*b1cdbd2cSJim Jagielski     mnPointerType = nPointerType;
130*b1cdbd2cSJim Jagielski }
131*b1cdbd2cSJim Jagielski 
132*b1cdbd2cSJim Jagielski // XWindow
133*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
134*b1cdbd2cSJim Jagielski 
setPosSize(sal_Int32 X,sal_Int32 Y,sal_Int32 Width,sal_Int32 Height,sal_Int16 Flags)135*b1cdbd2cSJim Jagielski void SAL_CALL Window::setPosSize( sal_Int32 X, sal_Int32 Y, sal_Int32 Width, sal_Int32 Height, sal_Int16 Flags )
136*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
137*b1cdbd2cSJim Jagielski {
138*b1cdbd2cSJim Jagielski     OSL_TRACE( "AVWindow::setPosSize( %dx%d%+d%+d)", (int)Width,(int)Height,(int)X,(int)Y);//######
139*b1cdbd2cSJim Jagielski     if( !mpView )
140*b1cdbd2cSJim Jagielski         return;
141*b1cdbd2cSJim Jagielski     NSRect aRect = [mpView frame];
142*b1cdbd2cSJim Jagielski     // NOTE: if( (Flags & awt::PosSize::WIDTH) )
143*b1cdbd2cSJim Jagielski     aRect.size.width = Width;
144*b1cdbd2cSJim Jagielski     // NOTE: if( (Flags & awt::PosSize::HEIGHT) )
145*b1cdbd2cSJim Jagielski     aRect.size.height = Height;
146*b1cdbd2cSJim Jagielski 
147*b1cdbd2cSJim Jagielski     [mpView setFrameSize: aRect.size];
148*b1cdbd2cSJim Jagielski     [mpPlayerLayer setFrame: [mpView frame]];
149*b1cdbd2cSJim Jagielski }
150*b1cdbd2cSJim Jagielski 
151*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
152*b1cdbd2cSJim Jagielski 
getPosSize()153*b1cdbd2cSJim Jagielski awt::Rectangle SAL_CALL Window::getPosSize()
154*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
155*b1cdbd2cSJim Jagielski {
156*b1cdbd2cSJim Jagielski     awt::Rectangle aRet;
157*b1cdbd2cSJim Jagielski 
158*b1cdbd2cSJim Jagielski     NSRect aRect = [mpView frame];
159*b1cdbd2cSJim Jagielski     aRet.X = aRet.Y = 0;
160*b1cdbd2cSJim Jagielski     aRet.Width = aRect.size.width;
161*b1cdbd2cSJim Jagielski     aRet.Height = aRect.size.height;
162*b1cdbd2cSJim Jagielski 
163*b1cdbd2cSJim Jagielski     return aRet;
164*b1cdbd2cSJim Jagielski }
165*b1cdbd2cSJim Jagielski 
166*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
167*b1cdbd2cSJim Jagielski 
setVisible(sal_Bool bVisible)168*b1cdbd2cSJim Jagielski void SAL_CALL Window::setVisible( sal_Bool bVisible )
169*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
170*b1cdbd2cSJim Jagielski {
171*b1cdbd2cSJim Jagielski     OSL_TRACE ("Window::setVisible(%d)", bVisible);
172*b1cdbd2cSJim Jagielski }
173*b1cdbd2cSJim Jagielski 
174*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
175*b1cdbd2cSJim Jagielski 
setEnable(sal_Bool bEnable)176*b1cdbd2cSJim Jagielski void SAL_CALL Window::setEnable( sal_Bool bEnable )
177*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
178*b1cdbd2cSJim Jagielski {
179*b1cdbd2cSJim Jagielski     OSL_TRACE ("Window::setEnable(%d)", bEnable);
180*b1cdbd2cSJim Jagielski }
181*b1cdbd2cSJim Jagielski 
182*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
183*b1cdbd2cSJim Jagielski 
setFocus()184*b1cdbd2cSJim Jagielski void SAL_CALL Window::setFocus()
185*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
186*b1cdbd2cSJim Jagielski {
187*b1cdbd2cSJim Jagielski     OSL_TRACE ("Window::setFocus");
188*b1cdbd2cSJim Jagielski }
189*b1cdbd2cSJim Jagielski 
190*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
191*b1cdbd2cSJim Jagielski 
addWindowListener(const uno::Reference<awt::XWindowListener> & xListener)192*b1cdbd2cSJim Jagielski void SAL_CALL Window::addWindowListener( const uno::Reference< awt::XWindowListener >& xListener )
193*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
194*b1cdbd2cSJim Jagielski {
195*b1cdbd2cSJim Jagielski     maListeners.addInterface( getCppuType( &xListener ), xListener );
196*b1cdbd2cSJim Jagielski }
197*b1cdbd2cSJim Jagielski 
198*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
199*b1cdbd2cSJim Jagielski 
removeWindowListener(const uno::Reference<awt::XWindowListener> & xListener)200*b1cdbd2cSJim Jagielski void SAL_CALL Window::removeWindowListener( const uno::Reference< awt::XWindowListener >& xListener )
201*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
202*b1cdbd2cSJim Jagielski {
203*b1cdbd2cSJim Jagielski     maListeners.removeInterface( getCppuType( &xListener ), xListener );
204*b1cdbd2cSJim Jagielski }
205*b1cdbd2cSJim Jagielski 
206*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
207*b1cdbd2cSJim Jagielski 
addFocusListener(const uno::Reference<awt::XFocusListener> & xListener)208*b1cdbd2cSJim Jagielski void SAL_CALL Window::addFocusListener( const uno::Reference< awt::XFocusListener >& xListener )
209*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
210*b1cdbd2cSJim Jagielski {
211*b1cdbd2cSJim Jagielski     maListeners.addInterface( getCppuType( &xListener ), xListener );
212*b1cdbd2cSJim Jagielski }
213*b1cdbd2cSJim Jagielski 
214*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
215*b1cdbd2cSJim Jagielski 
removeFocusListener(const uno::Reference<awt::XFocusListener> & xListener)216*b1cdbd2cSJim Jagielski void SAL_CALL Window::removeFocusListener( const uno::Reference< awt::XFocusListener >& xListener )
217*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
218*b1cdbd2cSJim Jagielski {
219*b1cdbd2cSJim Jagielski     maListeners.removeInterface( getCppuType( &xListener ), xListener );
220*b1cdbd2cSJim Jagielski }
221*b1cdbd2cSJim Jagielski 
222*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
223*b1cdbd2cSJim Jagielski 
addKeyListener(const uno::Reference<awt::XKeyListener> & xListener)224*b1cdbd2cSJim Jagielski void SAL_CALL Window::addKeyListener( const uno::Reference< awt::XKeyListener >& xListener )
225*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
226*b1cdbd2cSJim Jagielski {
227*b1cdbd2cSJim Jagielski     maListeners.addInterface( getCppuType( &xListener ), xListener );
228*b1cdbd2cSJim Jagielski }
229*b1cdbd2cSJim Jagielski 
230*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
231*b1cdbd2cSJim Jagielski 
removeKeyListener(const uno::Reference<awt::XKeyListener> & xListener)232*b1cdbd2cSJim Jagielski void SAL_CALL Window::removeKeyListener( const uno::Reference< awt::XKeyListener >& xListener )
233*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
234*b1cdbd2cSJim Jagielski {
235*b1cdbd2cSJim Jagielski     maListeners.removeInterface( getCppuType( &xListener ), xListener );
236*b1cdbd2cSJim Jagielski }
237*b1cdbd2cSJim Jagielski 
238*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
239*b1cdbd2cSJim Jagielski 
addMouseListener(const uno::Reference<awt::XMouseListener> & xListener)240*b1cdbd2cSJim Jagielski void SAL_CALL Window::addMouseListener( const uno::Reference< awt::XMouseListener >& xListener )
241*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
242*b1cdbd2cSJim Jagielski {
243*b1cdbd2cSJim Jagielski     maListeners.addInterface( getCppuType( &xListener ), xListener );
244*b1cdbd2cSJim Jagielski }
245*b1cdbd2cSJim Jagielski 
246*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
247*b1cdbd2cSJim Jagielski 
removeMouseListener(const uno::Reference<awt::XMouseListener> & xListener)248*b1cdbd2cSJim Jagielski void SAL_CALL Window::removeMouseListener( const uno::Reference< awt::XMouseListener >& xListener )
249*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
250*b1cdbd2cSJim Jagielski {
251*b1cdbd2cSJim Jagielski     maListeners.removeInterface( getCppuType( &xListener ), xListener );
252*b1cdbd2cSJim Jagielski }
253*b1cdbd2cSJim Jagielski 
254*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
255*b1cdbd2cSJim Jagielski 
addMouseMotionListener(const uno::Reference<awt::XMouseMotionListener> & xListener)256*b1cdbd2cSJim Jagielski void SAL_CALL Window::addMouseMotionListener( const uno::Reference< awt::XMouseMotionListener >& xListener )
257*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
258*b1cdbd2cSJim Jagielski {
259*b1cdbd2cSJim Jagielski     maListeners.addInterface( getCppuType( &xListener ), xListener );
260*b1cdbd2cSJim Jagielski }
261*b1cdbd2cSJim Jagielski 
262*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
263*b1cdbd2cSJim Jagielski 
removeMouseMotionListener(const uno::Reference<awt::XMouseMotionListener> & xListener)264*b1cdbd2cSJim Jagielski void SAL_CALL Window::removeMouseMotionListener( const uno::Reference< awt::XMouseMotionListener >& xListener )
265*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
266*b1cdbd2cSJim Jagielski {
267*b1cdbd2cSJim Jagielski     maListeners.removeInterface( getCppuType( &xListener ), xListener );
268*b1cdbd2cSJim Jagielski }
269*b1cdbd2cSJim Jagielski 
270*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
271*b1cdbd2cSJim Jagielski 
addPaintListener(const uno::Reference<awt::XPaintListener> & xListener)272*b1cdbd2cSJim Jagielski void SAL_CALL Window::addPaintListener( const uno::Reference< awt::XPaintListener >& xListener )
273*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
274*b1cdbd2cSJim Jagielski {
275*b1cdbd2cSJim Jagielski     maListeners.addInterface( getCppuType( &xListener ), xListener );
276*b1cdbd2cSJim Jagielski }
277*b1cdbd2cSJim Jagielski 
278*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
279*b1cdbd2cSJim Jagielski 
removePaintListener(const uno::Reference<awt::XPaintListener> & xListener)280*b1cdbd2cSJim Jagielski void SAL_CALL Window::removePaintListener( const uno::Reference< awt::XPaintListener >& xListener )
281*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
282*b1cdbd2cSJim Jagielski {
283*b1cdbd2cSJim Jagielski     maListeners.removeInterface( getCppuType( &xListener ), xListener );
284*b1cdbd2cSJim Jagielski }
285*b1cdbd2cSJim Jagielski 
286*b1cdbd2cSJim Jagielski 
287*b1cdbd2cSJim Jagielski // XComponent
288*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
289*b1cdbd2cSJim Jagielski 
dispose()290*b1cdbd2cSJim Jagielski void SAL_CALL Window::dispose(  )
291*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
292*b1cdbd2cSJim Jagielski {
293*b1cdbd2cSJim Jagielski }
294*b1cdbd2cSJim Jagielski 
295*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
296*b1cdbd2cSJim Jagielski 
addEventListener(const uno::Reference<lang::XEventListener> & xListener)297*b1cdbd2cSJim Jagielski void SAL_CALL Window::addEventListener( const uno::Reference< lang::XEventListener >& xListener )
298*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
299*b1cdbd2cSJim Jagielski {
300*b1cdbd2cSJim Jagielski     maListeners.addInterface( getCppuType( &xListener ), xListener );
301*b1cdbd2cSJim Jagielski }
302*b1cdbd2cSJim Jagielski 
303*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
304*b1cdbd2cSJim Jagielski 
removeEventListener(const uno::Reference<lang::XEventListener> & xListener)305*b1cdbd2cSJim Jagielski void SAL_CALL Window::removeEventListener( const uno::Reference< lang::XEventListener >& xListener )
306*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
307*b1cdbd2cSJim Jagielski {
308*b1cdbd2cSJim Jagielski     maListeners.removeInterface( getCppuType( &xListener ), xListener );
309*b1cdbd2cSJim Jagielski }
310*b1cdbd2cSJim Jagielski 
311*b1cdbd2cSJim Jagielski // XServiceInfo
312*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
313*b1cdbd2cSJim Jagielski 
getImplementationName()314*b1cdbd2cSJim Jagielski ::rtl::OUString SAL_CALL Window::getImplementationName(  )
315*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
316*b1cdbd2cSJim Jagielski {
317*b1cdbd2cSJim Jagielski     return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( AVMEDIA_MACAVF_WINDOW_IMPLEMENTATIONNAME ) );
318*b1cdbd2cSJim Jagielski }
319*b1cdbd2cSJim Jagielski 
320*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
321*b1cdbd2cSJim Jagielski 
supportsService(const::rtl::OUString & ServiceName)322*b1cdbd2cSJim Jagielski sal_Bool SAL_CALL Window::supportsService( const ::rtl::OUString& ServiceName )
323*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
324*b1cdbd2cSJim Jagielski {
325*b1cdbd2cSJim Jagielski     return ServiceName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM ( AVMEDIA_MACAVF_WINDOW_SERVICENAME ) );
326*b1cdbd2cSJim Jagielski }
327*b1cdbd2cSJim Jagielski 
328*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------------
329*b1cdbd2cSJim Jagielski 
getSupportedServiceNames()330*b1cdbd2cSJim Jagielski uno::Sequence< ::rtl::OUString > SAL_CALL Window::getSupportedServiceNames(  )
331*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
332*b1cdbd2cSJim Jagielski {
333*b1cdbd2cSJim Jagielski     uno::Sequence< ::rtl::OUString > aRet(1);
334*b1cdbd2cSJim Jagielski     aRet[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( AVMEDIA_MACAVF_WINDOW_SERVICENAME ) );
335*b1cdbd2cSJim Jagielski 
336*b1cdbd2cSJim Jagielski     return aRet;
337*b1cdbd2cSJim Jagielski }
338*b1cdbd2cSJim Jagielski 
339*b1cdbd2cSJim Jagielski } // namespace macavf
340*b1cdbd2cSJim Jagielski } // namespace avmedia
341*b1cdbd2cSJim Jagielski 
342