xref: /AOO41X/main/sc/source/ui/drawfunc/fuins1.cxx (revision b3f79822e811ac3493b185030a72c3c5a51f32d8)
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