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