1*b3f79822SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*b3f79822SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*b3f79822SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*b3f79822SAndrew Rist * distributed with this work for additional information 6*b3f79822SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*b3f79822SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*b3f79822SAndrew Rist * "License"); you may not use this file except in compliance 9*b3f79822SAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 11*b3f79822SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 13*b3f79822SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*b3f79822SAndrew Rist * software distributed under the License is distributed on an 15*b3f79822SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b3f79822SAndrew Rist * KIND, either express or implied. See the License for the 17*b3f79822SAndrew Rist * specific language governing permissions and limitations 18*b3f79822SAndrew Rist * under the License. 19cdf0e10cSrcweir * 20*b3f79822SAndrew Rist *************************************************************/ 21*b3f79822SAndrew Rist 22*b3f79822SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 25cdf0e10cSrcweir #include "precompiled_sc.hxx" 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include <sfx2/opengrf.hxx> 28cdf0e10cSrcweir #include <svx/svdograf.hxx> 29cdf0e10cSrcweir #include <svx/svdomedia.hxx> 30cdf0e10cSrcweir #include <svx/svdpage.hxx> 31cdf0e10cSrcweir #include <svx/svdpagv.hxx> 32cdf0e10cSrcweir #include <svx/svdview.hxx> 33cdf0e10cSrcweir #include <svtools/filter.hxx> 34cdf0e10cSrcweir #include <svl/stritem.hxx> 35cdf0e10cSrcweir #include <vcl/msgbox.hxx> 36cdf0e10cSrcweir #include <tools/urlobj.hxx> 37cdf0e10cSrcweir #include <avmedia/mediawindow.hxx> 38cdf0e10cSrcweir #include <vcl/svapp.hxx> 39cdf0e10cSrcweir 40cdf0e10cSrcweir #include "fuinsert.hxx" 41cdf0e10cSrcweir #include "tabvwsh.hxx" 42cdf0e10cSrcweir #include "drwlayer.hxx" 43cdf0e10cSrcweir #include "drawview.hxx" 44cdf0e10cSrcweir #include "document.hxx" 45cdf0e10cSrcweir #include "scresid.hxx" 46cdf0e10cSrcweir #include "progress.hxx" 47cdf0e10cSrcweir #include "sc.hrc" 48cdf0e10cSrcweir 49cdf0e10cSrcweir 50cdf0e10cSrcweir 51cdf0e10cSrcweir ////======================================================================== 52cdf0e10cSrcweir //// class ImportProgress 53cdf0e10cSrcweir //// 54cdf0e10cSrcweir //// Bemerkung: 55cdf0e10cSrcweir //// Diese Klasse stellt lediglich den Handler fuer den ImportProgress des 56cdf0e10cSrcweir //// Grafikfilters bereit. 57cdf0e10cSrcweir ////======================================================================== 58cdf0e10cSrcweir // 59cdf0e10cSrcweir //class ImportProgress 60cdf0e10cSrcweir //{ 61cdf0e10cSrcweir //public: 62cdf0e10cSrcweir // ImportProgress( GraphicFilter& rFilter ); 63cdf0e10cSrcweir // ~ImportProgress(); 64cdf0e10cSrcweir // 65cdf0e10cSrcweir // DECL_LINK( Update, GraphicFilter* ); 66cdf0e10cSrcweir // 67cdf0e10cSrcweir //private: 68cdf0e10cSrcweir // ScProgress aProgress; 69cdf0e10cSrcweir //}; 70cdf0e10cSrcweir // 71cdf0e10cSrcweir ////------------------------------------------------------------------------ 72cdf0e10cSrcweir // 73cdf0e10cSrcweir //ImportProgress::ImportProgress( GraphicFilter& rFilter ) 74cdf0e10cSrcweir // : aProgress( NULL, // SfxViewFrame*, NULL == alle Docs locken 75cdf0e10cSrcweir // String( ScResId(STR_INSERTGRAPHIC) ), 76cdf0e10cSrcweir // 100 ) 77cdf0e10cSrcweir //{ 78cdf0e10cSrcweir // rFilter.SetUpdatePercentHdl( LINK( this, ImportProgress, Update) ); 79cdf0e10cSrcweir //} 80cdf0e10cSrcweir // 81cdf0e10cSrcweir ////------------------------------------------------------------------------ 82cdf0e10cSrcweir // 83cdf0e10cSrcweir //__EXPORT ImportProgress::~ImportProgress() 84cdf0e10cSrcweir //{ 85cdf0e10cSrcweir // aProgress.SetState( 100 ); 86cdf0e10cSrcweir //} 87cdf0e10cSrcweir // 88cdf0e10cSrcweir ////------------------------------------------------------------------------ 89cdf0e10cSrcweir // 90cdf0e10cSrcweir //IMPL_LINK( ImportProgress, Update, GraphicFilter*, pGraphicFilter ) 91cdf0e10cSrcweir //{ 92cdf0e10cSrcweir // aProgress.SetState( pGraphicFilter->GetPercent() ); 93cdf0e10cSrcweir // return 0; 94cdf0e10cSrcweir //} 95cdf0e10cSrcweir 96cdf0e10cSrcweir 97cdf0e10cSrcweir //------------------------------------------------------------------------ 98cdf0e10cSrcweir 99cdf0e10cSrcweir void SC_DLLPUBLIC ScLimitSizeOnDrawPage( Size& rSize, Point& rPos, const Size& rPage ) 100cdf0e10cSrcweir { 101cdf0e10cSrcweir if ( !rPage.Width() || !rPage.Height() ) 102cdf0e10cSrcweir return; 103cdf0e10cSrcweir 104cdf0e10cSrcweir Size aPageSize = rPage; 105cdf0e10cSrcweir sal_Bool bNegative = aPageSize.Width() < 0; 106cdf0e10cSrcweir if ( bNegative ) 107cdf0e10cSrcweir { 108cdf0e10cSrcweir // make everything positive temporarily 109cdf0e10cSrcweir aPageSize.Width() = -aPageSize.Width(); 110cdf0e10cSrcweir rPos.X() = -rPos.X() - rSize.Width(); 111cdf0e10cSrcweir } 112cdf0e10cSrcweir 113cdf0e10cSrcweir if ( rSize.Width() > aPageSize.Width() || rSize.Height() > aPageSize.Height() ) 114cdf0e10cSrcweir { 115cdf0e10cSrcweir double fX = aPageSize.Width() / (double) rSize.Width(); 116cdf0e10cSrcweir double fY = aPageSize.Height() / (double) rSize.Height(); 117cdf0e10cSrcweir 118cdf0e10cSrcweir if ( fX < fY ) 119cdf0e10cSrcweir { 120cdf0e10cSrcweir rSize.Width() = aPageSize.Width(); 121cdf0e10cSrcweir rSize.Height() = (long) ( rSize.Height() * fX ); 122cdf0e10cSrcweir } 123cdf0e10cSrcweir else 124cdf0e10cSrcweir { 125cdf0e10cSrcweir rSize.Height() = aPageSize.Height(); 126cdf0e10cSrcweir rSize.Width() = (long) ( rSize.Width() * fY ); 127cdf0e10cSrcweir } 128cdf0e10cSrcweir 129cdf0e10cSrcweir if (!rSize.Width()) 130cdf0e10cSrcweir rSize.Width() = 1; 131cdf0e10cSrcweir if (!rSize.Height()) 132cdf0e10cSrcweir rSize.Height() = 1; 133cdf0e10cSrcweir } 134cdf0e10cSrcweir 135cdf0e10cSrcweir if ( rPos.X() + rSize.Width() > aPageSize.Width() ) 136cdf0e10cSrcweir rPos.X() = aPageSize.Width() - rSize.Width(); 137cdf0e10cSrcweir if ( rPos.Y() + rSize.Height() > aPageSize.Height() ) 138cdf0e10cSrcweir rPos.Y() = aPageSize.Height() - rSize.Height(); 139cdf0e10cSrcweir 140cdf0e10cSrcweir if ( bNegative ) 141cdf0e10cSrcweir rPos.X() = -rPos.X() - rSize.Width(); // back to real position 142cdf0e10cSrcweir } 143cdf0e10cSrcweir 144cdf0e10cSrcweir //------------------------------------------------------------------------ 145cdf0e10cSrcweir 146cdf0e10cSrcweir void lcl_InsertGraphic( const Graphic& rGraphic, 147cdf0e10cSrcweir const String& rFileName, const String& rFilterName, sal_Bool bAsLink, sal_Bool bApi, 148cdf0e10cSrcweir ScTabViewShell* pViewSh, Window* pWindow, SdrView* pView ) 149cdf0e10cSrcweir { 150cdf0e10cSrcweir // #74778# set the size so the graphic has its original pixel size 151cdf0e10cSrcweir // at 100% view scale (as in SetMarkedOriginalSize), 152cdf0e10cSrcweir // instead of respecting the current view scale 153cdf0e10cSrcweir 154cdf0e10cSrcweir ScDrawView* pDrawView = pViewSh->GetScDrawView(); 155cdf0e10cSrcweir MapMode aSourceMap = rGraphic.GetPrefMapMode(); 156cdf0e10cSrcweir MapMode aDestMap( MAP_100TH_MM ); 157cdf0e10cSrcweir if ( aSourceMap.GetMapUnit() == MAP_PIXEL && pDrawView ) 158cdf0e10cSrcweir { 159cdf0e10cSrcweir Fraction aScaleX, aScaleY; 160cdf0e10cSrcweir pDrawView->CalcNormScale( aScaleX, aScaleY ); 161cdf0e10cSrcweir aDestMap.SetScaleX(aScaleX); 162cdf0e10cSrcweir aDestMap.SetScaleY(aScaleY); 163cdf0e10cSrcweir } 164cdf0e10cSrcweir Size aLogicSize = pWindow->LogicToLogic( 165cdf0e10cSrcweir rGraphic.GetPrefSize(), &aSourceMap, &aDestMap ); 166cdf0e10cSrcweir 167cdf0e10cSrcweir // Limit size 168cdf0e10cSrcweir 169cdf0e10cSrcweir SdrPageView* pPV = pView->GetSdrPageView(); 170cdf0e10cSrcweir SdrPage* pPage = pPV->GetPage(); 171cdf0e10cSrcweir Point aInsertPos = pViewSh->GetInsertPos(); 172cdf0e10cSrcweir 173cdf0e10cSrcweir ScViewData* pData = pViewSh->GetViewData(); 174cdf0e10cSrcweir if ( pData->GetDocument()->IsNegativePage( pData->GetTabNo() ) ) 175cdf0e10cSrcweir aInsertPos.X() -= aLogicSize.Width(); // move position to left edge 176cdf0e10cSrcweir 177cdf0e10cSrcweir ScLimitSizeOnDrawPage( aLogicSize, aInsertPos, pPage->GetSize() ); 178cdf0e10cSrcweir 179cdf0e10cSrcweir Rectangle aRect ( aInsertPos, aLogicSize ); 180cdf0e10cSrcweir 181cdf0e10cSrcweir SdrGrafObj* pObj = new SdrGrafObj( rGraphic, aRect ); 182cdf0e10cSrcweir 183cdf0e10cSrcweir // #118522# calling SetGraphicLink here doesn't work 184cdf0e10cSrcweir 185cdf0e10cSrcweir // #49961# Path is no longer used as name for the graphics object 186cdf0e10cSrcweir 187cdf0e10cSrcweir ScDrawLayer* pLayer = (ScDrawLayer*) pView->GetModel(); 188cdf0e10cSrcweir String aName = pLayer->GetNewGraphicName(); // "Grafik x" 189cdf0e10cSrcweir pObj->SetName(aName); 190cdf0e10cSrcweir 191cdf0e10cSrcweir // don't select if from (dispatch) API, to allow subsequent cell operations 192cdf0e10cSrcweir sal_uLong nInsOptions = bApi ? SDRINSERT_DONTMARK : 0; 193cdf0e10cSrcweir pView->InsertObjectAtView( pObj, *pPV, nInsOptions ); 194cdf0e10cSrcweir 195cdf0e10cSrcweir // #118522# SetGraphicLink has to be used after inserting the object, 196cdf0e10cSrcweir // otherwise an empty graphic is swapped in and the contact stuff crashes. 197cdf0e10cSrcweir // See #i37444#. 198cdf0e10cSrcweir if ( bAsLink ) 199cdf0e10cSrcweir pObj->SetGraphicLink( rFileName, rFilterName ); 200cdf0e10cSrcweir } 201cdf0e10cSrcweir 202cdf0e10cSrcweir //------------------------------------------------------------------------ 203cdf0e10cSrcweir 204cdf0e10cSrcweir void lcl_InsertMedia( const ::rtl::OUString& rMediaURL, bool bApi, 205cdf0e10cSrcweir ScTabViewShell* pViewSh, Window* pWindow, SdrView* pView, 206cdf0e10cSrcweir const Size& rPrefSize ) 207cdf0e10cSrcweir { 208cdf0e10cSrcweir SdrPageView* pPV = pView->GetSdrPageView(); 209cdf0e10cSrcweir SdrPage* pPage = pPV->GetPage(); 210cdf0e10cSrcweir ScViewData* pData = pViewSh->GetViewData(); 211cdf0e10cSrcweir Point aInsertPos( pViewSh->GetInsertPos() ); 212cdf0e10cSrcweir Size aSize; 213cdf0e10cSrcweir 214cdf0e10cSrcweir if( rPrefSize.Width() && rPrefSize.Height() ) 215cdf0e10cSrcweir { 216cdf0e10cSrcweir if( pWindow ) 217cdf0e10cSrcweir aSize = pWindow->PixelToLogic( rPrefSize, MAP_100TH_MM ); 218cdf0e10cSrcweir else 219cdf0e10cSrcweir aSize = Application::GetDefaultDevice()->PixelToLogic( rPrefSize, MAP_100TH_MM ); 220cdf0e10cSrcweir } 221cdf0e10cSrcweir else 222cdf0e10cSrcweir aSize = Size( 5000, 5000 ); 223cdf0e10cSrcweir 224cdf0e10cSrcweir ScLimitSizeOnDrawPage( aSize, aInsertPos, pPage->GetSize() ); 225cdf0e10cSrcweir 226cdf0e10cSrcweir if( pData->GetDocument()->IsNegativePage( pData->GetTabNo() ) ) 227cdf0e10cSrcweir aInsertPos.X() -= aSize.Width(); 228cdf0e10cSrcweir 229cdf0e10cSrcweir SdrMediaObj* pObj = new SdrMediaObj( Rectangle( aInsertPos, aSize ) ); 230cdf0e10cSrcweir 231cdf0e10cSrcweir pObj->setURL( rMediaURL ); 232cdf0e10cSrcweir pView->InsertObjectAtView( pObj, *pPV, bApi ? SDRINSERT_DONTMARK : 0 ); 233cdf0e10cSrcweir } 234cdf0e10cSrcweir 235cdf0e10cSrcweir /************************************************************************* 236cdf0e10cSrcweir |* 237cdf0e10cSrcweir |* FuInsertGraphic::Konstruktor 238cdf0e10cSrcweir |* 239cdf0e10cSrcweir \************************************************************************/ 240cdf0e10cSrcweir 241cdf0e10cSrcweir #ifdef _MSC_VER 242cdf0e10cSrcweir #pragma optimize("",off) 243cdf0e10cSrcweir #endif 244cdf0e10cSrcweir 245cdf0e10cSrcweir FuInsertGraphic::FuInsertGraphic( ScTabViewShell* pViewSh, 246cdf0e10cSrcweir Window* pWin, 247cdf0e10cSrcweir ScDrawView* pViewP, 248cdf0e10cSrcweir SdrModel* pDoc, 249cdf0e10cSrcweir SfxRequest& rReq ) 250cdf0e10cSrcweir : FuPoor(pViewSh, pWin, pViewP, pDoc, rReq) 251cdf0e10cSrcweir { 252cdf0e10cSrcweir const SfxItemSet* pReqArgs = rReq.GetArgs(); 253cdf0e10cSrcweir const SfxPoolItem* pItem; 254cdf0e10cSrcweir if ( pReqArgs && 255cdf0e10cSrcweir pReqArgs->GetItemState( SID_INSERT_GRAPHIC, sal_True, &pItem ) == SFX_ITEM_SET ) 256cdf0e10cSrcweir { 257cdf0e10cSrcweir String aFileName = ((const SfxStringItem*)pItem)->GetValue(); 258cdf0e10cSrcweir 259cdf0e10cSrcweir String aFilterName; 260cdf0e10cSrcweir if ( pReqArgs->GetItemState( FN_PARAM_FILTER, sal_True, &pItem ) == SFX_ITEM_SET ) 261cdf0e10cSrcweir aFilterName = ((const SfxStringItem*)pItem)->GetValue(); 262cdf0e10cSrcweir 263cdf0e10cSrcweir sal_Bool bAsLink = sal_False; 264cdf0e10cSrcweir if ( pReqArgs->GetItemState( FN_PARAM_1, sal_True, &pItem ) == SFX_ITEM_SET ) 265cdf0e10cSrcweir bAsLink = ((const SfxBoolItem*)pItem)->GetValue(); 266cdf0e10cSrcweir 267cdf0e10cSrcweir Graphic aGraphic; 268cdf0e10cSrcweir int nError = GraphicFilter::LoadGraphic( aFileName, aFilterName, aGraphic, GraphicFilter::GetGraphicFilter() ); 269cdf0e10cSrcweir if ( nError == GRFILTER_OK ) 270cdf0e10cSrcweir { 271cdf0e10cSrcweir lcl_InsertGraphic( aGraphic, aFileName, aFilterName, bAsLink, sal_True, pViewSh, pWindow, pView ); 272cdf0e10cSrcweir } 273cdf0e10cSrcweir } 274cdf0e10cSrcweir else 275cdf0e10cSrcweir { 276cdf0e10cSrcweir SvxOpenGraphicDialog aDlg(ScResId(STR_INSERTGRAPHIC)); 277cdf0e10cSrcweir 278cdf0e10cSrcweir if( aDlg.Execute() == GRFILTER_OK ) 279cdf0e10cSrcweir { 280cdf0e10cSrcweir Graphic aGraphic; 281cdf0e10cSrcweir int nError = aDlg.GetGraphic(aGraphic); 282cdf0e10cSrcweir if( nError == GRFILTER_OK ) 283cdf0e10cSrcweir { 284cdf0e10cSrcweir String aFileName = aDlg.GetPath(); 285cdf0e10cSrcweir String aFilterName = aDlg.GetCurrentFilter(); 286cdf0e10cSrcweir sal_Bool bAsLink = aDlg.IsAsLink(); 287cdf0e10cSrcweir 288cdf0e10cSrcweir lcl_InsertGraphic( aGraphic, aFileName, aFilterName, bAsLink, sal_False, pViewSh, pWindow, pView ); 289cdf0e10cSrcweir 290cdf0e10cSrcweir // append items for recording 291cdf0e10cSrcweir rReq.AppendItem( SfxStringItem( SID_INSERT_GRAPHIC, aFileName ) ); 292cdf0e10cSrcweir rReq.AppendItem( SfxStringItem( FN_PARAM_FILTER, aFilterName ) ); 293cdf0e10cSrcweir rReq.AppendItem( SfxBoolItem( FN_PARAM_1, bAsLink ) ); 294cdf0e10cSrcweir rReq.Done(); 295cdf0e10cSrcweir } 296cdf0e10cSrcweir else 297cdf0e10cSrcweir { 298cdf0e10cSrcweir // error is handled in SvxOpenGraphicDialog::GetGraphic 299cdf0e10cSrcweir 300cdf0e10cSrcweir #if 0 301cdf0e10cSrcweir sal_uInt16 nRes = 0; 302cdf0e10cSrcweir switch ( nError ) 303cdf0e10cSrcweir { 304cdf0e10cSrcweir case GRFILTER_OPENERROR: nRes = SCSTR_GRFILTER_OPENERROR; break; 305cdf0e10cSrcweir case GRFILTER_IOERROR: nRes = SCSTR_GRFILTER_IOERROR; break; 306cdf0e10cSrcweir case GRFILTER_FORMATERROR: nRes = SCSTR_GRFILTER_FORMATERROR; break; 307cdf0e10cSrcweir case GRFILTER_VERSIONERROR: nRes = SCSTR_GRFILTER_VERSIONERROR; break; 308cdf0e10cSrcweir case GRFILTER_FILTERERROR: nRes = SCSTR_GRFILTER_FILTERERROR; break; 309cdf0e10cSrcweir case GRFILTER_TOOBIG: nRes = SCSTR_GRFILTER_TOOBIG; break; 310cdf0e10cSrcweir } 311cdf0e10cSrcweir if ( nRes ) 312cdf0e10cSrcweir { 313cdf0e10cSrcweir InfoBox aInfoBox( pWindow, String(ScResId(nRes)) ); 314cdf0e10cSrcweir aInfoBox.Execute(); 315cdf0e10cSrcweir } 316cdf0e10cSrcweir else 317cdf0e10cSrcweir { 318cdf0e10cSrcweir sal_uLong nStreamError = GetGrfFilter()->GetLastError().nStreamError; 319cdf0e10cSrcweir if( ERRCODE_NONE != nStreamError ) 320cdf0e10cSrcweir ErrorHandler::HandleError( nStreamError ); 321cdf0e10cSrcweir } 322cdf0e10cSrcweir #endif 323cdf0e10cSrcweir } 324cdf0e10cSrcweir } 325cdf0e10cSrcweir } 326cdf0e10cSrcweir } 327cdf0e10cSrcweir 328cdf0e10cSrcweir /************************************************************************* 329cdf0e10cSrcweir |* 330cdf0e10cSrcweir |* FuInsertGraphic::Destruktor 331cdf0e10cSrcweir |* 332cdf0e10cSrcweir \************************************************************************/ 333cdf0e10cSrcweir 334cdf0e10cSrcweir FuInsertGraphic::~FuInsertGraphic() 335cdf0e10cSrcweir { 336cdf0e10cSrcweir } 337cdf0e10cSrcweir 338cdf0e10cSrcweir /************************************************************************* 339cdf0e10cSrcweir |* 340cdf0e10cSrcweir |* FuInsertGraphic::Function aktivieren 341cdf0e10cSrcweir |* 342cdf0e10cSrcweir \************************************************************************/ 343cdf0e10cSrcweir 344cdf0e10cSrcweir void FuInsertGraphic::Activate() 345cdf0e10cSrcweir { 346cdf0e10cSrcweir FuPoor::Activate(); 347cdf0e10cSrcweir } 348cdf0e10cSrcweir 349cdf0e10cSrcweir /************************************************************************* 350cdf0e10cSrcweir |* 351cdf0e10cSrcweir |* FuInsertGraphic::Function deaktivieren 352cdf0e10cSrcweir |* 353cdf0e10cSrcweir \************************************************************************/ 354cdf0e10cSrcweir 355cdf0e10cSrcweir void FuInsertGraphic::Deactivate() 356cdf0e10cSrcweir { 357cdf0e10cSrcweir FuPoor::Deactivate(); 358cdf0e10cSrcweir } 359cdf0e10cSrcweir 360cdf0e10cSrcweir /************************************************************************* 361cdf0e10cSrcweir |* 362cdf0e10cSrcweir |* FuInsertMedia::Konstruktor 363cdf0e10cSrcweir |* 364cdf0e10cSrcweir \************************************************************************/ 365cdf0e10cSrcweir 366cdf0e10cSrcweir FuInsertMedia::FuInsertMedia( ScTabViewShell* pViewSh, 367cdf0e10cSrcweir Window* pWin, 368cdf0e10cSrcweir ScDrawView* pViewP, 369cdf0e10cSrcweir SdrModel* pDoc, 370cdf0e10cSrcweir SfxRequest& rReq ) : 371cdf0e10cSrcweir FuPoor(pViewSh, pWin, pViewP, pDoc, rReq) 372cdf0e10cSrcweir { 373cdf0e10cSrcweir ::rtl::OUString aURL; 374cdf0e10cSrcweir const SfxItemSet* pReqArgs = rReq.GetArgs(); 375cdf0e10cSrcweir bool bAPI = false; 376cdf0e10cSrcweir 377cdf0e10cSrcweir if( pReqArgs ) 378cdf0e10cSrcweir { 379cdf0e10cSrcweir const SfxStringItem* pStringItem = PTR_CAST( SfxStringItem, &pReqArgs->Get( rReq.GetSlot() ) ); 380cdf0e10cSrcweir 381cdf0e10cSrcweir if( pStringItem ) 382cdf0e10cSrcweir { 383cdf0e10cSrcweir aURL = pStringItem->GetValue(); 384cdf0e10cSrcweir bAPI = aURL.getLength(); 385cdf0e10cSrcweir } 386cdf0e10cSrcweir } 387cdf0e10cSrcweir 388cdf0e10cSrcweir if( bAPI || ::avmedia::MediaWindow::executeMediaURLDialog( pWindow, aURL ) ) 389cdf0e10cSrcweir { 390cdf0e10cSrcweir Size aPrefSize; 391cdf0e10cSrcweir 392cdf0e10cSrcweir if( pWin ) 393cdf0e10cSrcweir pWin->EnterWait(); 394cdf0e10cSrcweir 395cdf0e10cSrcweir if( !::avmedia::MediaWindow::isMediaURL( aURL, true, &aPrefSize ) ) 396cdf0e10cSrcweir { 397cdf0e10cSrcweir if( pWin ) 398cdf0e10cSrcweir pWin->LeaveWait(); 399cdf0e10cSrcweir 400cdf0e10cSrcweir if( !bAPI ) 401cdf0e10cSrcweir ::avmedia::MediaWindow::executeFormatErrorBox( pWindow ); 402cdf0e10cSrcweir } 403cdf0e10cSrcweir else 404cdf0e10cSrcweir { 405cdf0e10cSrcweir lcl_InsertMedia( aURL, bAPI, pViewSh, pWindow, pView, aPrefSize ); 406cdf0e10cSrcweir 407cdf0e10cSrcweir if( pWin ) 408cdf0e10cSrcweir pWin->LeaveWait(); 409cdf0e10cSrcweir } 410cdf0e10cSrcweir } 411cdf0e10cSrcweir } 412cdf0e10cSrcweir 413cdf0e10cSrcweir /************************************************************************* 414cdf0e10cSrcweir |* 415cdf0e10cSrcweir |* FuInsertMedia::Destruktor 416cdf0e10cSrcweir |* 417cdf0e10cSrcweir \************************************************************************/ 418cdf0e10cSrcweir 419cdf0e10cSrcweir FuInsertMedia::~FuInsertMedia() 420cdf0e10cSrcweir { 421cdf0e10cSrcweir } 422cdf0e10cSrcweir 423cdf0e10cSrcweir /************************************************************************* 424cdf0e10cSrcweir |* 425cdf0e10cSrcweir |* FuInsertMedia::Function aktivieren 426cdf0e10cSrcweir |* 427cdf0e10cSrcweir \************************************************************************/ 428cdf0e10cSrcweir 429cdf0e10cSrcweir void FuInsertMedia::Activate() 430cdf0e10cSrcweir { 431cdf0e10cSrcweir FuPoor::Activate(); 432cdf0e10cSrcweir } 433cdf0e10cSrcweir 434cdf0e10cSrcweir /************************************************************************* 435cdf0e10cSrcweir |* 436cdf0e10cSrcweir |* FuInsertMedia::Function deaktivieren 437cdf0e10cSrcweir |* 438cdf0e10cSrcweir \************************************************************************/ 439cdf0e10cSrcweir 440cdf0e10cSrcweir void FuInsertMedia::Deactivate() 441cdf0e10cSrcweir { 442cdf0e10cSrcweir FuPoor::Deactivate(); 443cdf0e10cSrcweir } 444