1*f39251c4SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*f39251c4SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*f39251c4SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*f39251c4SAndrew Rist  * distributed with this work for additional information
6*f39251c4SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*f39251c4SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*f39251c4SAndrew Rist  * "License"); you may not use this file except in compliance
9*f39251c4SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*f39251c4SAndrew Rist  *
11*f39251c4SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*f39251c4SAndrew Rist  *
13*f39251c4SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*f39251c4SAndrew Rist  * software distributed under the License is distributed on an
15*f39251c4SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*f39251c4SAndrew Rist  * KIND, either express or implied.  See the License for the
17*f39251c4SAndrew Rist  * specific language governing permissions and limitations
18*f39251c4SAndrew Rist  * under the License.
19*f39251c4SAndrew Rist  *
20*f39251c4SAndrew Rist  *************************************************************/
21*f39251c4SAndrew Rist 
22*f39251c4SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #include <avmedia/mediaplayer.hxx>
25cdf0e10cSrcweir #include <avmedia/mediawindow.hxx>
26cdf0e10cSrcweir #include <avmedia/mediaitem.hxx>
27cdf0e10cSrcweir #include "mediamisc.hxx"
28cdf0e10cSrcweir #include "mediacontrol.hrc"
29cdf0e10cSrcweir #include "helpids.hrc"
30cdf0e10cSrcweir 
31cdf0e10cSrcweir #include <svl/stritem.hxx>
32cdf0e10cSrcweir #include <sfx2/app.hxx>
33cdf0e10cSrcweir #include <sfx2/sfxsids.hrc>
34cdf0e10cSrcweir #include <sfx2/bindings.hxx>
35cdf0e10cSrcweir #include <sfx2/dispatch.hxx>
36cdf0e10cSrcweir 
37cdf0e10cSrcweir namespace avmedia
38cdf0e10cSrcweir {
39cdf0e10cSrcweir 
40cdf0e10cSrcweir // ---------------
41cdf0e10cSrcweir // - MediaPlayer -
42cdf0e10cSrcweir // ---------------
43cdf0e10cSrcweir 
MediaPlayer(Window * _pParent,sal_uInt16 nId,SfxBindings * _pBindings,SfxChildWinInfo * pInfo)44cdf0e10cSrcweir MediaPlayer::MediaPlayer( Window* _pParent, sal_uInt16 nId, SfxBindings* _pBindings, SfxChildWinInfo* pInfo ) :
45cdf0e10cSrcweir 	SfxChildWindow( _pParent, nId )
46cdf0e10cSrcweir {
47cdf0e10cSrcweir 	pWindow = new MediaFloater( _pBindings, this, _pParent );
48cdf0e10cSrcweir 	eChildAlignment = SFX_ALIGN_NOALIGNMENT;
49cdf0e10cSrcweir 	static_cast< MediaFloater* >( pWindow )->Initialize( pInfo );
50cdf0e10cSrcweir };
51cdf0e10cSrcweir 
52cdf0e10cSrcweir // -----------------------------------------------------------------------------
53cdf0e10cSrcweir 
~MediaPlayer()54cdf0e10cSrcweir MediaPlayer::~MediaPlayer()
55cdf0e10cSrcweir {
56cdf0e10cSrcweir }
57cdf0e10cSrcweir 
58cdf0e10cSrcweir // -----------------------------------------------------------------------------
59cdf0e10cSrcweir 
SFX_IMPL_DOCKINGWINDOW(MediaPlayer,SID_AVMEDIA_PLAYER)60cdf0e10cSrcweir SFX_IMPL_DOCKINGWINDOW( MediaPlayer, SID_AVMEDIA_PLAYER )
61cdf0e10cSrcweir 
62cdf0e10cSrcweir // ----------------
63cdf0e10cSrcweir // - MediaFloater -
64cdf0e10cSrcweir // ----------------
65cdf0e10cSrcweir 
66cdf0e10cSrcweir MediaFloater::MediaFloater( SfxBindings* _pBindings, SfxChildWindow* pCW, Window* pParent ) :
67cdf0e10cSrcweir 	SfxDockingWindow( _pBindings, pCW, pParent, WB_CLOSEABLE | WB_MOVEABLE | WB_SIZEABLE | WB_DOCKABLE ),
68cdf0e10cSrcweir 	mpMediaWindow( new MediaWindow( this, true ) )
69cdf0e10cSrcweir {
70cdf0e10cSrcweir 	const Size aSize( 378, 256 );
71cdf0e10cSrcweir 
72cdf0e10cSrcweir 	SetPosSizePixel( Point( 0, 0 ), aSize );
73cdf0e10cSrcweir 	SetMinOutputSizePixel( aSize );
74cdf0e10cSrcweir 	SetText( String( AVMEDIA_RESID( AVMEDIA_STR_MEDIAPLAYER ) ) );
75cdf0e10cSrcweir     implInit();
76cdf0e10cSrcweir 	mpMediaWindow->show();
77cdf0e10cSrcweir }
78cdf0e10cSrcweir 
79cdf0e10cSrcweir // -----------------------------------------------------------------------------
80cdf0e10cSrcweir 
~MediaFloater()81cdf0e10cSrcweir MediaFloater::~MediaFloater()
82cdf0e10cSrcweir {
83cdf0e10cSrcweir 	delete mpMediaWindow;
84cdf0e10cSrcweir 	mpMediaWindow = NULL;
85cdf0e10cSrcweir }
86cdf0e10cSrcweir 
87cdf0e10cSrcweir // -----------------------------------------------------------------------------
88cdf0e10cSrcweir 
implInit()89cdf0e10cSrcweir void MediaFloater::implInit()
90cdf0e10cSrcweir {
91cdf0e10cSrcweir }
92cdf0e10cSrcweir 
93cdf0e10cSrcweir // -------------------------------------------------------------------------
94cdf0e10cSrcweir 
Resize()95cdf0e10cSrcweir void MediaFloater::Resize()
96cdf0e10cSrcweir {
97cdf0e10cSrcweir 	SfxDockingWindow::Resize();
98cdf0e10cSrcweir 
99cdf0e10cSrcweir 	if( mpMediaWindow )
100cdf0e10cSrcweir 	    mpMediaWindow->setPosSize( Rectangle( Point(), GetOutputSizePixel() ) );
101cdf0e10cSrcweir }
102cdf0e10cSrcweir 
103cdf0e10cSrcweir // -----------------------------------------------------------------------------
104cdf0e10cSrcweir 
ToggleFloatingMode()105cdf0e10cSrcweir void MediaFloater::ToggleFloatingMode()
106cdf0e10cSrcweir {
107cdf0e10cSrcweir 	::avmedia::MediaItem aRestoreItem;
108cdf0e10cSrcweir 
109cdf0e10cSrcweir 	mpMediaWindow->updateMediaItem( aRestoreItem );
110cdf0e10cSrcweir 	delete mpMediaWindow;
111cdf0e10cSrcweir 	mpMediaWindow = NULL;
112cdf0e10cSrcweir 
113cdf0e10cSrcweir 	SfxDockingWindow::ToggleFloatingMode();
114cdf0e10cSrcweir 
115cdf0e10cSrcweir 	mpMediaWindow = new MediaWindow( this, true );
116cdf0e10cSrcweir 
117cdf0e10cSrcweir 	mpMediaWindow->setPosSize( Rectangle( Point(), GetOutputSizePixel() ) );
118cdf0e10cSrcweir 	mpMediaWindow->executeMediaItem( aRestoreItem );
119cdf0e10cSrcweir 
120cdf0e10cSrcweir 	Window* pWindow = mpMediaWindow->getWindow();
121cdf0e10cSrcweir 
122cdf0e10cSrcweir 	if( pWindow )
123cdf0e10cSrcweir 	    pWindow->SetHelpId( HID_AVMEDIA_PLAYERWINDOW );
124cdf0e10cSrcweir 
125cdf0e10cSrcweir 	mpMediaWindow->show();
126cdf0e10cSrcweir }
127cdf0e10cSrcweir 
128cdf0e10cSrcweir // -----------------------------------------------------------------------------
129cdf0e10cSrcweir 
setURL(const::rtl::OUString & rURL,bool bPlayImmediately)130cdf0e10cSrcweir void MediaFloater::setURL( const ::rtl::OUString& rURL, bool bPlayImmediately )
131cdf0e10cSrcweir {
132cdf0e10cSrcweir 	if( mpMediaWindow )
133cdf0e10cSrcweir 	{
134cdf0e10cSrcweir 	    mpMediaWindow->setURL( rURL );
135cdf0e10cSrcweir 
136cdf0e10cSrcweir 	    if( mpMediaWindow->isValid() && bPlayImmediately )
137cdf0e10cSrcweir 		    mpMediaWindow->start();
138cdf0e10cSrcweir     }
139cdf0e10cSrcweir }
140cdf0e10cSrcweir 
141cdf0e10cSrcweir // -----------------------------------------------------------------------------
142cdf0e10cSrcweir 
getURL() const143cdf0e10cSrcweir const ::rtl::OUString& MediaFloater::getURL() const
144cdf0e10cSrcweir {
145cdf0e10cSrcweir     static const ::rtl::OUString aEmptyStr;
146cdf0e10cSrcweir 	return( mpMediaWindow ? mpMediaWindow->getURL() : aEmptyStr );
147cdf0e10cSrcweir }
148cdf0e10cSrcweir 
149cdf0e10cSrcweir // -----------------------------------------------------------------------------
150cdf0e10cSrcweir 
dispatchCurrentURL()151cdf0e10cSrcweir void MediaFloater::dispatchCurrentURL()
152cdf0e10cSrcweir {
153cdf0e10cSrcweir 	SfxDispatcher* pDispatcher = GetBindings().GetDispatcher();
154cdf0e10cSrcweir 
155cdf0e10cSrcweir 	if( pDispatcher )
156cdf0e10cSrcweir 	{
157cdf0e10cSrcweir 		const SfxStringItem aMediaURLItem( SID_INSERT_AVMEDIA, getURL() );
158cdf0e10cSrcweir 		pDispatcher->Execute( SID_INSERT_AVMEDIA, SFX_CALLMODE_RECORD, &aMediaURLItem, 0L );
159cdf0e10cSrcweir 	}
160cdf0e10cSrcweir }
161cdf0e10cSrcweir 
162cdf0e10cSrcweir }
163