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 10cdf0e10cSrcweir * 11*f39251c4SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 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. 19cdf0e10cSrcweir * 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 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 54cdf0e10cSrcweir MediaPlayer::~MediaPlayer() 55cdf0e10cSrcweir { 56cdf0e10cSrcweir } 57cdf0e10cSrcweir 58cdf0e10cSrcweir // ----------------------------------------------------------------------------- 59cdf0e10cSrcweir 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 81cdf0e10cSrcweir MediaFloater::~MediaFloater() 82cdf0e10cSrcweir { 83cdf0e10cSrcweir delete mpMediaWindow; 84cdf0e10cSrcweir mpMediaWindow = NULL; 85cdf0e10cSrcweir } 86cdf0e10cSrcweir 87cdf0e10cSrcweir // ----------------------------------------------------------------------------- 88cdf0e10cSrcweir 89cdf0e10cSrcweir void MediaFloater::implInit() 90cdf0e10cSrcweir { 91cdf0e10cSrcweir } 92cdf0e10cSrcweir 93cdf0e10cSrcweir // ------------------------------------------------------------------------- 94cdf0e10cSrcweir 95cdf0e10cSrcweir void MediaFloater::Resize() 96cdf0e10cSrcweir { 97cdf0e10cSrcweir SfxDockingWindow::Resize(); 98cdf0e10cSrcweir 99cdf0e10cSrcweir if( mpMediaWindow ) 100cdf0e10cSrcweir mpMediaWindow->setPosSize( Rectangle( Point(), GetOutputSizePixel() ) ); 101cdf0e10cSrcweir } 102cdf0e10cSrcweir 103cdf0e10cSrcweir // ----------------------------------------------------------------------------- 104cdf0e10cSrcweir 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 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 143cdf0e10cSrcweir const ::rtl::OUString& MediaFloater::getURL() const 144cdf0e10cSrcweir { 145cdf0e10cSrcweir static const ::rtl::OUString aEmptyStr; 146cdf0e10cSrcweir return( mpMediaWindow ? mpMediaWindow->getURL() : aEmptyStr ); 147cdf0e10cSrcweir } 148cdf0e10cSrcweir 149cdf0e10cSrcweir // ----------------------------------------------------------------------------- 150cdf0e10cSrcweir 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