1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 29*cdf0e10cSrcweir #include "precompiled_sw.hxx" 30*cdf0e10cSrcweir 31*cdf0e10cSrcweir 32*cdf0e10cSrcweir 33*cdf0e10cSrcweir 34*cdf0e10cSrcweir #ifndef _CMDID_H 35*cdf0e10cSrcweir #include <cmdid.h> 36*cdf0e10cSrcweir #endif 37*cdf0e10cSrcweir #include <hintids.hxx> 38*cdf0e10cSrcweir #include <tools/urlobj.hxx> 39*cdf0e10cSrcweir #include <vcl/msgbox.hxx> 40*cdf0e10cSrcweir #include <svl/stritem.hxx> 41*cdf0e10cSrcweir #include <svl/whiter.hxx> 42*cdf0e10cSrcweir #include <svl/urihelper.hxx> 43*cdf0e10cSrcweir #include <sfx2/dispatch.hxx> 44*cdf0e10cSrcweir #include <editeng/sizeitem.hxx> 45*cdf0e10cSrcweir #include <editeng/protitem.hxx> 46*cdf0e10cSrcweir #include <sfx2/request.hxx> 47*cdf0e10cSrcweir #include <svl/srchitem.hxx> 48*cdf0e10cSrcweir #include <svx/htmlmode.hxx> 49*cdf0e10cSrcweir #include <svx/sdgluitm.hxx> 50*cdf0e10cSrcweir #include <svx/sdgcoitm.hxx> 51*cdf0e10cSrcweir #include <svx/sdggaitm.hxx> 52*cdf0e10cSrcweir #include <svx/sdgtritm.hxx> 53*cdf0e10cSrcweir #include <svx/sdginitm.hxx> 54*cdf0e10cSrcweir #include <svx/sdgmoitm.hxx> 55*cdf0e10cSrcweir #include <editeng/brshitem.hxx> 56*cdf0e10cSrcweir #include <svx/grfflt.hxx> 57*cdf0e10cSrcweir #include <fmturl.hxx> 58*cdf0e10cSrcweir #include <view.hxx> 59*cdf0e10cSrcweir #include <wrtsh.hxx> 60*cdf0e10cSrcweir #include <viewopt.hxx> 61*cdf0e10cSrcweir #include <swmodule.hxx> 62*cdf0e10cSrcweir #include <frmatr.hxx> 63*cdf0e10cSrcweir #include <swundo.hxx> 64*cdf0e10cSrcweir #include <uitool.hxx> 65*cdf0e10cSrcweir #include <docsh.hxx> 66*cdf0e10cSrcweir #include <mediash.hxx> 67*cdf0e10cSrcweir #include <frmmgr.hxx> 68*cdf0e10cSrcweir #include <frmdlg.hxx> 69*cdf0e10cSrcweir #include <frmfmt.hxx> 70*cdf0e10cSrcweir #include <grfatr.hxx> 71*cdf0e10cSrcweir #include <usrpref.hxx> 72*cdf0e10cSrcweir #include <edtwin.hxx> 73*cdf0e10cSrcweir #include <swwait.hxx> 74*cdf0e10cSrcweir #ifndef _SHELLS_HRC 75*cdf0e10cSrcweir #include <shells.hrc> 76*cdf0e10cSrcweir #endif 77*cdf0e10cSrcweir #ifndef _POPUP_HRC 78*cdf0e10cSrcweir #include <popup.hrc> 79*cdf0e10cSrcweir #endif 80*cdf0e10cSrcweir 81*cdf0e10cSrcweir #include <sfx2/objface.hxx> 82*cdf0e10cSrcweir #include <svx/svdomedia.hxx> 83*cdf0e10cSrcweir #include <svx/sdr/contact/viewcontactofsdrmediaobj.hxx> 84*cdf0e10cSrcweir #include <avmedia/mediaitem.hxx> 85*cdf0e10cSrcweir 86*cdf0e10cSrcweir #define SwMediaShell 87*cdf0e10cSrcweir #include <sfx2/msg.hxx> 88*cdf0e10cSrcweir #include "swslots.hxx" 89*cdf0e10cSrcweir #include "swabstdlg.hxx" 90*cdf0e10cSrcweir 91*cdf0e10cSrcweir SFX_IMPL_INTERFACE(SwMediaShell, SwBaseShell, SW_RES(STR_SHELLNAME_MEDIA)) 92*cdf0e10cSrcweir { 93*cdf0e10cSrcweir SFX_POPUPMENU_REGISTRATION(SW_RES(MN_MEDIA_POPUPMENU)); 94*cdf0e10cSrcweir SFX_OBJECTBAR_REGISTRATION(SFX_OBJECTBAR_OBJECT, SW_RES(RID_MEDIA_TOOLBOX)); 95*cdf0e10cSrcweir } 96*cdf0e10cSrcweir 97*cdf0e10cSrcweir // ------------------------------------------------------------------------------ 98*cdf0e10cSrcweir 99*cdf0e10cSrcweir void SwMediaShell::ExecMedia(SfxRequest &rReq) 100*cdf0e10cSrcweir { 101*cdf0e10cSrcweir SwWrtShell* pSh = &GetShell(); 102*cdf0e10cSrcweir SdrView* pSdrView = pSh->GetDrawView(); 103*cdf0e10cSrcweir 104*cdf0e10cSrcweir if( pSdrView ) 105*cdf0e10cSrcweir { 106*cdf0e10cSrcweir const SfxItemSet* pArgs = rReq.GetArgs(); 107*cdf0e10cSrcweir sal_uInt16 nSlotId = rReq.GetSlot(); 108*cdf0e10cSrcweir sal_Bool bChanged = pSdrView->GetModel()->IsChanged(); 109*cdf0e10cSrcweir 110*cdf0e10cSrcweir pSdrView->GetModel()->SetChanged( sal_False ); 111*cdf0e10cSrcweir 112*cdf0e10cSrcweir switch( nSlotId ) 113*cdf0e10cSrcweir { 114*cdf0e10cSrcweir case SID_DELETE: 115*cdf0e10cSrcweir { 116*cdf0e10cSrcweir if( pSh->IsObjSelected() ) 117*cdf0e10cSrcweir { 118*cdf0e10cSrcweir pSh->SetModified(); 119*cdf0e10cSrcweir pSh->DelSelectedObj(); 120*cdf0e10cSrcweir 121*cdf0e10cSrcweir if( pSh->IsSelFrmMode() ) 122*cdf0e10cSrcweir pSh->LeaveSelFrmMode(); 123*cdf0e10cSrcweir 124*cdf0e10cSrcweir GetView().AttrChangedNotify( pSh ); 125*cdf0e10cSrcweir } 126*cdf0e10cSrcweir } 127*cdf0e10cSrcweir break; 128*cdf0e10cSrcweir 129*cdf0e10cSrcweir case( SID_AVMEDIA_TOOLBOX ): 130*cdf0e10cSrcweir { 131*cdf0e10cSrcweir if( pSh->IsObjSelected() ) 132*cdf0e10cSrcweir { 133*cdf0e10cSrcweir const SfxPoolItem* pItem; 134*cdf0e10cSrcweir 135*cdf0e10cSrcweir if( !pArgs || ( SFX_ITEM_SET != pArgs->GetItemState( SID_AVMEDIA_TOOLBOX, sal_False, &pItem ) ) ) 136*cdf0e10cSrcweir pItem = NULL; 137*cdf0e10cSrcweir 138*cdf0e10cSrcweir if( pItem ) 139*cdf0e10cSrcweir { 140*cdf0e10cSrcweir SdrMarkList* pMarkList = new SdrMarkList( pSdrView->GetMarkedObjectList() ); 141*cdf0e10cSrcweir 142*cdf0e10cSrcweir if( 1 == pMarkList->GetMarkCount() ) 143*cdf0e10cSrcweir { 144*cdf0e10cSrcweir SdrObject* pObj = pMarkList->GetMark( 0 )->GetMarkedSdrObj(); 145*cdf0e10cSrcweir 146*cdf0e10cSrcweir if( pObj && pObj->ISA( SdrMediaObj ) ) 147*cdf0e10cSrcweir { 148*cdf0e10cSrcweir static_cast< sdr::contact::ViewContactOfSdrMediaObj& >( pObj->GetViewContact() ).executeMediaItem( 149*cdf0e10cSrcweir static_cast< const ::avmedia::MediaItem& >( *pItem ) ); 150*cdf0e10cSrcweir } 151*cdf0e10cSrcweir } 152*cdf0e10cSrcweir 153*cdf0e10cSrcweir delete pMarkList; 154*cdf0e10cSrcweir } 155*cdf0e10cSrcweir } 156*cdf0e10cSrcweir } 157*cdf0e10cSrcweir break; 158*cdf0e10cSrcweir 159*cdf0e10cSrcweir default: 160*cdf0e10cSrcweir break; 161*cdf0e10cSrcweir } 162*cdf0e10cSrcweir 163*cdf0e10cSrcweir if( pSdrView->GetModel()->IsChanged() ) 164*cdf0e10cSrcweir GetShell().SetModified(); 165*cdf0e10cSrcweir else if( bChanged ) 166*cdf0e10cSrcweir pSdrView->GetModel()->SetChanged(sal_True); 167*cdf0e10cSrcweir } 168*cdf0e10cSrcweir } 169*cdf0e10cSrcweir 170*cdf0e10cSrcweir // ------------------------------------------------------------------------------ 171*cdf0e10cSrcweir 172*cdf0e10cSrcweir void SwMediaShell::GetMediaState(SfxItemSet &rSet) 173*cdf0e10cSrcweir { 174*cdf0e10cSrcweir SfxWhichIter aIter( rSet ); 175*cdf0e10cSrcweir sal_uInt16 nWhich = aIter.FirstWhich(); 176*cdf0e10cSrcweir 177*cdf0e10cSrcweir while( nWhich ) 178*cdf0e10cSrcweir { 179*cdf0e10cSrcweir if( SID_AVMEDIA_TOOLBOX == nWhich ) 180*cdf0e10cSrcweir { 181*cdf0e10cSrcweir SwWrtShell& rSh = GetShell(); 182*cdf0e10cSrcweir SdrView* pView = rSh.GetDrawView(); 183*cdf0e10cSrcweir bool bDisable = true; 184*cdf0e10cSrcweir 185*cdf0e10cSrcweir if( pView ) 186*cdf0e10cSrcweir { 187*cdf0e10cSrcweir SdrMarkList* pMarkList = new SdrMarkList( pView->GetMarkedObjectList() ); 188*cdf0e10cSrcweir 189*cdf0e10cSrcweir if( 1 == pMarkList->GetMarkCount() ) 190*cdf0e10cSrcweir { 191*cdf0e10cSrcweir SdrObject* pObj = pMarkList->GetMark( 0 )->GetMarkedSdrObj(); 192*cdf0e10cSrcweir 193*cdf0e10cSrcweir if( pObj && pObj->ISA( SdrMediaObj ) ) 194*cdf0e10cSrcweir { 195*cdf0e10cSrcweir ::avmedia::MediaItem aItem( SID_AVMEDIA_TOOLBOX ); 196*cdf0e10cSrcweir 197*cdf0e10cSrcweir static_cast< sdr::contact::ViewContactOfSdrMediaObj& >( pObj->GetViewContact() ).updateMediaItem( aItem ); 198*cdf0e10cSrcweir rSet.Put( aItem ); 199*cdf0e10cSrcweir bDisable = false; 200*cdf0e10cSrcweir } 201*cdf0e10cSrcweir } 202*cdf0e10cSrcweir 203*cdf0e10cSrcweir if( bDisable ) 204*cdf0e10cSrcweir rSet.DisableItem( SID_AVMEDIA_TOOLBOX ); 205*cdf0e10cSrcweir 206*cdf0e10cSrcweir delete pMarkList; 207*cdf0e10cSrcweir } 208*cdf0e10cSrcweir } 209*cdf0e10cSrcweir 210*cdf0e10cSrcweir nWhich = aIter.NextWhich(); 211*cdf0e10cSrcweir } 212*cdf0e10cSrcweir } 213*cdf0e10cSrcweir 214*cdf0e10cSrcweir // ------------------------------------------------------------------------------ 215*cdf0e10cSrcweir 216*cdf0e10cSrcweir SwMediaShell::SwMediaShell(SwView &_rView) : 217*cdf0e10cSrcweir SwBaseShell(_rView) 218*cdf0e10cSrcweir 219*cdf0e10cSrcweir { 220*cdf0e10cSrcweir SetName(String::CreateFromAscii("Media Playback")); 221*cdf0e10cSrcweir SetHelpId(SW_MEDIASHELL); 222*cdf0e10cSrcweir } 223