15b190011SAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
35b190011SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
45b190011SAndrew Rist * or more contributor license agreements. See the NOTICE file
55b190011SAndrew Rist * distributed with this work for additional information
65b190011SAndrew Rist * regarding copyright ownership. The ASF licenses this file
75b190011SAndrew Rist * to you under the Apache License, Version 2.0 (the
85b190011SAndrew Rist * "License"); you may not use this file except in compliance
95b190011SAndrew Rist * with the License. You may obtain a copy of the License at
105b190011SAndrew Rist *
115b190011SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
125b190011SAndrew Rist *
135b190011SAndrew Rist * Unless required by applicable law or agreed to in writing,
145b190011SAndrew Rist * software distributed under the License is distributed on an
155b190011SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
165b190011SAndrew Rist * KIND, either express or implied. See the License for the
175b190011SAndrew Rist * specific language governing permissions and limitations
185b190011SAndrew Rist * under the License.
195b190011SAndrew Rist *
205b190011SAndrew Rist *************************************************************/
215b190011SAndrew Rist
225b190011SAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_sd.hxx"
26cdf0e10cSrcweir #include <com/sun/star/ui/dialogs/XExecutableDialog.hpp>
27cdf0e10cSrcweir #include <comphelper/processfactory.hxx>
28cdf0e10cSrcweir #include <svx/svdlayer.hxx>
29cdf0e10cSrcweir #ifndef _SVXIDS_HXX
30cdf0e10cSrcweir #include <svx/svxids.hrc>
31cdf0e10cSrcweir #endif
32cdf0e10cSrcweir #include <sfx2/msgpool.hxx>
33cdf0e10cSrcweir #include <svx/hyprlink.hxx>
34cdf0e10cSrcweir #include <sfx2/viewfrm.hxx>
35cdf0e10cSrcweir #include <svx/hlnkitem.hxx>
36cdf0e10cSrcweir #include <tools/urlobj.hxx>
37cdf0e10cSrcweir #include <editeng/eeitem.hxx>
38cdf0e10cSrcweir #ifndef _FLDITEM_HXX
39cdf0e10cSrcweir #include <editeng/flditem.hxx>
40cdf0e10cSrcweir #endif
41cdf0e10cSrcweir #include <vcl/msgbox.hxx>
42cdf0e10cSrcweir #include <sfx2/request.hxx>
43cdf0e10cSrcweir #include <sfx2/dispatch.hxx>
44cdf0e10cSrcweir #include <svx/svdorect.hxx>
45cdf0e10cSrcweir #include <sfx2/docfile.hxx>
46cdf0e10cSrcweir #include <basic/sbstar.hxx>
47cdf0e10cSrcweir #include <basic/sberrors.hxx>
48cdf0e10cSrcweir #include <svx/fmshell.hxx>
49cdf0e10cSrcweir #include <svx/svxdlg.hxx>
50cdf0e10cSrcweir #include <svx/dialogs.hrc>
51cdf0e10cSrcweir #include <unotools/useroptions.hxx>
52cdf0e10cSrcweir
53cdf0e10cSrcweir #include "app.hrc"
54cdf0e10cSrcweir #include "strings.hrc"
55cdf0e10cSrcweir #include "res_bmp.hrc"
56cdf0e10cSrcweir #include "glob.hrc"
57cdf0e10cSrcweir #include "Outliner.hxx"
58cdf0e10cSrcweir #include "Window.hxx"
59cdf0e10cSrcweir #include "app.hxx"
60cdf0e10cSrcweir #include "sdattr.hxx"
61cdf0e10cSrcweir #include "drawdoc.hxx"
62cdf0e10cSrcweir #include "DrawDocShell.hxx"
63cdf0e10cSrcweir #include "sdresid.hxx"
64cdf0e10cSrcweir #include "sdpage.hxx"
65cdf0e10cSrcweir #include "DrawViewShell.hxx"
66cdf0e10cSrcweir #include "drawview.hxx"
67cdf0e10cSrcweir #include "unmodpg.hxx"
68cdf0e10cSrcweir #include "undolayer.hxx"
69cdf0e10cSrcweir #include "ViewShellBase.hxx"
70cdf0e10cSrcweir #include "FormShellManager.hxx"
71cdf0e10cSrcweir #include "LayerTabBar.hxx"
72cdf0e10cSrcweir #include "sdabstdlg.hxx"
73cdf0e10cSrcweir #include "SlideSorterViewShell.hxx"
74cdf0e10cSrcweir #include "SlideSorter.hxx"
75cdf0e10cSrcweir #include "controller/SlideSorterController.hxx"
76cdf0e10cSrcweir
77cdf0e10cSrcweir #define RET_DELETE 100
78cdf0e10cSrcweir
79cdf0e10cSrcweir namespace sd {
80cdf0e10cSrcweir
81cdf0e10cSrcweir /*************************************************************************
82cdf0e10cSrcweir |*
83cdf0e10cSrcweir |* SfxRequests fuer temporaere Funktionen
84cdf0e10cSrcweir |*
85cdf0e10cSrcweir \************************************************************************/
86cdf0e10cSrcweir
FuTemp02(SfxRequest & rReq)87cdf0e10cSrcweir void DrawViewShell::FuTemp02(SfxRequest& rReq)
88cdf0e10cSrcweir {
89cdf0e10cSrcweir sal_uInt16 nSId = rReq.GetSlot();
90cdf0e10cSrcweir switch( nSId )
91cdf0e10cSrcweir {
92cdf0e10cSrcweir case SID_INSERTLAYER:
93cdf0e10cSrcweir {
94cdf0e10cSrcweir if ( mpDrawView->IsTextEdit() )
95cdf0e10cSrcweir {
96cdf0e10cSrcweir mpDrawView->SdrEndTextEdit();
97cdf0e10cSrcweir }
98cdf0e10cSrcweir
99cdf0e10cSrcweir SdrLayerAdmin& rLayerAdmin = GetDoc()->GetLayerAdmin();
100cdf0e10cSrcweir sal_uInt16 nLayerCnt = rLayerAdmin.GetLayerCount();
101cdf0e10cSrcweir sal_uInt16 nLayer = nLayerCnt - 2 + 1;
102cdf0e10cSrcweir String aLayerName ( SdResId(STR_LAYER) ), aLayerTitle, aLayerDesc;
103cdf0e10cSrcweir aLayerName += String::CreateFromInt32( (sal_Int32)nLayer );
104cdf0e10cSrcweir sal_Bool bIsVisible = sal_False;
105cdf0e10cSrcweir sal_Bool bIsLocked = sal_False;
106cdf0e10cSrcweir sal_Bool bIsPrintable = sal_False;
107cdf0e10cSrcweir
108cdf0e10cSrcweir const SfxItemSet* pArgs = rReq.GetArgs();
109cdf0e10cSrcweir
110cdf0e10cSrcweir if (! pArgs)
111cdf0e10cSrcweir {
112cdf0e10cSrcweir SfxItemSet aNewAttr( GetDoc()->GetPool(), ATTR_LAYER_START, ATTR_LAYER_END );
113cdf0e10cSrcweir
114cdf0e10cSrcweir aNewAttr.Put( SdAttrLayerName( aLayerName ) );
115cdf0e10cSrcweir aNewAttr.Put( SdAttrLayerTitle() );
116cdf0e10cSrcweir aNewAttr.Put( SdAttrLayerDesc() );
117cdf0e10cSrcweir aNewAttr.Put( SdAttrLayerVisible() );
118cdf0e10cSrcweir aNewAttr.Put( SdAttrLayerPrintable() );
119cdf0e10cSrcweir aNewAttr.Put( SdAttrLayerLocked() );
120cdf0e10cSrcweir aNewAttr.Put( SdAttrLayerThisPage() );
121cdf0e10cSrcweir
122cdf0e10cSrcweir SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
123cdf0e10cSrcweir AbstractSdInsertLayerDlg* pDlg = pFact ? pFact->CreateSdInsertLayerDlg(NULL, aNewAttr, true, String( SdResId( STR_INSERTLAYER ) ) ) : 0;
124cdf0e10cSrcweir if( pDlg )
125cdf0e10cSrcweir {
126cdf0e10cSrcweir pDlg->SetHelpId( SD_MOD()->GetSlotPool()->GetSlot( SID_INSERTLAYER )->GetCommand() );
127cdf0e10cSrcweir
128cdf0e10cSrcweir // Ueberpruefung auf schon vorhandene Namen
129cdf0e10cSrcweir sal_Bool bLoop = sal_True;
130cdf0e10cSrcweir while( bLoop && pDlg->Execute() == RET_OK )
131cdf0e10cSrcweir {
132cdf0e10cSrcweir pDlg->GetAttr( aNewAttr );
133cdf0e10cSrcweir aLayerName = ((SdAttrLayerName &) aNewAttr.Get (ATTR_LAYER_NAME)).GetValue ();
134cdf0e10cSrcweir
135cdf0e10cSrcweir if( rLayerAdmin.GetLayer( aLayerName, sal_False )
136cdf0e10cSrcweir || aLayerName.Len()==0 )
137cdf0e10cSrcweir {
138cdf0e10cSrcweir // Name ist schon vorhanden
139cdf0e10cSrcweir WarningBox aWarningBox (
140cdf0e10cSrcweir GetParentWindow(),
141cdf0e10cSrcweir WinBits( WB_OK ),
142cdf0e10cSrcweir String(SdResId( STR_WARN_NAME_DUPLICATE)));
143cdf0e10cSrcweir aWarningBox.Execute();
144cdf0e10cSrcweir }
145cdf0e10cSrcweir else
146cdf0e10cSrcweir bLoop = sal_False;
147cdf0e10cSrcweir }
148cdf0e10cSrcweir if( bLoop ) // wurde abgebrochen
149cdf0e10cSrcweir {
150cdf0e10cSrcweir delete pDlg;
151cdf0e10cSrcweir
152cdf0e10cSrcweir Cancel();
153cdf0e10cSrcweir rReq.Ignore ();
154cdf0e10cSrcweir break;
155cdf0e10cSrcweir }
156cdf0e10cSrcweir else
157cdf0e10cSrcweir {
158cdf0e10cSrcweir //pDlg->GetAttr( aNewAttr );
159cdf0e10cSrcweir //aLayerName = ((SdAttrLayerName &) aNewAttr.Get (ATTR_LAYER_NAME)).GetValue ();
160cdf0e10cSrcweir aLayerTitle = ((SdAttrLayerTitle &) aNewAttr.Get (ATTR_LAYER_TITLE)).GetValue ();
161cdf0e10cSrcweir aLayerDesc = ((SdAttrLayerDesc &) aNewAttr.Get (ATTR_LAYER_DESC)).GetValue ();
162cdf0e10cSrcweir bIsVisible = ((SdAttrLayerVisible &) aNewAttr.Get (ATTR_LAYER_VISIBLE)).GetValue ();
163cdf0e10cSrcweir bIsLocked = ((SdAttrLayerLocked &) aNewAttr.Get (ATTR_LAYER_LOCKED)).GetValue () ;
164cdf0e10cSrcweir bIsPrintable = ((SdAttrLayerPrintable &) aNewAttr.Get (ATTR_LAYER_PRINTABLE)).GetValue () ;
165cdf0e10cSrcweir
166cdf0e10cSrcweir delete pDlg;
167cdf0e10cSrcweir }
168cdf0e10cSrcweir }
169cdf0e10cSrcweir }
170cdf0e10cSrcweir else if (pArgs->Count () != 4)
171cdf0e10cSrcweir {
172cdf0e10cSrcweir StarBASIC::FatalError (SbERR_WRONG_ARGS);
173cdf0e10cSrcweir Cancel();
174cdf0e10cSrcweir rReq.Ignore ();
175cdf0e10cSrcweir break;
176cdf0e10cSrcweir }
177cdf0e10cSrcweir else
178cdf0e10cSrcweir {
179cdf0e10cSrcweir SFX_REQUEST_ARG (rReq, pLayerName, SfxStringItem, ID_VAL_LAYERNAME, sal_False);
180cdf0e10cSrcweir SFX_REQUEST_ARG (rReq, pIsVisible, SfxBoolItem, ID_VAL_ISVISIBLE, sal_False);
181cdf0e10cSrcweir SFX_REQUEST_ARG (rReq, pIsLocked, SfxBoolItem, ID_VAL_ISLOCKED, sal_False);
182cdf0e10cSrcweir SFX_REQUEST_ARG (rReq, pIsPrintable, SfxBoolItem, ID_VAL_ISPRINTABLE, sal_False);
183cdf0e10cSrcweir
184cdf0e10cSrcweir aLayerName = pLayerName->GetValue ();
185cdf0e10cSrcweir bIsVisible = pIsVisible->GetValue ();
186cdf0e10cSrcweir bIsLocked = pIsLocked->GetValue ();
187cdf0e10cSrcweir bIsPrintable = pIsPrintable->GetValue ();
188cdf0e10cSrcweir }
189cdf0e10cSrcweir
190cdf0e10cSrcweir String aPrevLayer = mpDrawView->GetActiveLayer();
191cdf0e10cSrcweir String aName;
192cdf0e10cSrcweir SdrLayer* pLayer;
193cdf0e10cSrcweir sal_uInt16 nPrevLayer = 0;
194cdf0e10cSrcweir nLayerCnt = rLayerAdmin.GetLayerCount();
195cdf0e10cSrcweir
196cdf0e10cSrcweir for ( nLayer = 0; nLayer < nLayerCnt; nLayer++ )
197cdf0e10cSrcweir {
198cdf0e10cSrcweir pLayer = rLayerAdmin.GetLayer(nLayer);
199cdf0e10cSrcweir aName = pLayer->GetName();
200cdf0e10cSrcweir
201cdf0e10cSrcweir if ( aPrevLayer == aName )
202cdf0e10cSrcweir {
203cdf0e10cSrcweir // nPrevLayer = nLayer;
204cdf0e10cSrcweir nPrevLayer = Max(nLayer, (sal_uInt16) 4);
205cdf0e10cSrcweir }
206cdf0e10cSrcweir }
207cdf0e10cSrcweir
208cdf0e10cSrcweir mpDrawView->InsertNewLayer(aLayerName, nPrevLayer + 1);
209cdf0e10cSrcweir pLayer = rLayerAdmin.GetLayer(aLayerName, sal_False);
210cdf0e10cSrcweir if( pLayer )
211cdf0e10cSrcweir {
212cdf0e10cSrcweir pLayer->SetTitle( aLayerTitle );
213cdf0e10cSrcweir pLayer->SetDescription( aLayerDesc );
214cdf0e10cSrcweir }
215cdf0e10cSrcweir
216cdf0e10cSrcweir mpDrawView->SetLayerVisible( aLayerName, bIsVisible );
217cdf0e10cSrcweir mpDrawView->SetLayerLocked( aLayerName, bIsLocked);
218cdf0e10cSrcweir mpDrawView->SetLayerPrintable(aLayerName, bIsPrintable);
219cdf0e10cSrcweir
220cdf0e10cSrcweir mpDrawView->SetActiveLayer(aLayerName);
221cdf0e10cSrcweir
222cdf0e10cSrcweir ResetActualLayer();
223cdf0e10cSrcweir
224cdf0e10cSrcweir GetDoc()->SetChanged(sal_True);
225cdf0e10cSrcweir
226cdf0e10cSrcweir GetViewFrame()->GetDispatcher()->Execute(SID_SWITCHLAYER,
227cdf0e10cSrcweir SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD);
228cdf0e10cSrcweir
229cdf0e10cSrcweir Cancel();
230cdf0e10cSrcweir rReq.Done ();
231cdf0e10cSrcweir }
232cdf0e10cSrcweir break;
233cdf0e10cSrcweir
234cdf0e10cSrcweir case SID_MODIFYLAYER:
235cdf0e10cSrcweir {
236*2d19362eSArmin Le Grand if(!GetLayerTabControl()) // #87182#
237*2d19362eSArmin Le Grand {
238*2d19362eSArmin Le Grand OSL_ENSURE(false, "No LayerTabBar (!)");
239*2d19362eSArmin Le Grand Cancel();
240*2d19362eSArmin Le Grand rReq.Ignore();
241*2d19362eSArmin Le Grand break;
242*2d19362eSArmin Le Grand }
243*2d19362eSArmin Le Grand
244cdf0e10cSrcweir if ( mpDrawView->IsTextEdit() )
245cdf0e10cSrcweir {
246cdf0e10cSrcweir mpDrawView->SdrEndTextEdit();
247cdf0e10cSrcweir }
248cdf0e10cSrcweir
249cdf0e10cSrcweir SdrLayerAdmin& rLayerAdmin = GetDoc()->GetLayerAdmin();
250cdf0e10cSrcweir sal_uInt16 nCurPage = GetLayerTabControl()->GetCurPageId();
251cdf0e10cSrcweir String aLayerName( GetLayerTabControl()->GetPageText(nCurPage) );
252cdf0e10cSrcweir SdrLayer* pLayer = rLayerAdmin.GetLayer(aLayerName, sal_False);
253cdf0e10cSrcweir
254cdf0e10cSrcweir String aLayerTitle( pLayer->GetTitle() );
255cdf0e10cSrcweir String aLayerDesc( pLayer->GetDescription() );
256cdf0e10cSrcweir
257cdf0e10cSrcweir String aOldLayerName( aLayerName );
258cdf0e10cSrcweir String aOldLayerTitle( aLayerTitle );
259cdf0e10cSrcweir String aOldLayerDesc( aLayerDesc );
260cdf0e10cSrcweir
261cdf0e10cSrcweir sal_Bool bIsVisible, bIsLocked, bIsPrintable;
262cdf0e10cSrcweir sal_Bool bOldIsVisible = bIsVisible = mpDrawView->IsLayerVisible(aLayerName);
263cdf0e10cSrcweir sal_Bool bOldIsLocked = bIsLocked = mpDrawView->IsLayerLocked(aLayerName);
264cdf0e10cSrcweir sal_Bool bOldIsPrintable = bIsPrintable = mpDrawView->IsLayerPrintable(aLayerName);
265cdf0e10cSrcweir
266cdf0e10cSrcweir
267cdf0e10cSrcweir const SfxItemSet* pArgs = rReq.GetArgs();
268cdf0e10cSrcweir // darf der Layer geloescht werden ?
269cdf0e10cSrcweir bool bDelete = true;
270cdf0e10cSrcweir
271cdf0e10cSrcweir String aLayoutLayer ( SdResId(STR_LAYER_LAYOUT) );
272cdf0e10cSrcweir String aControlsLayer ( SdResId(STR_LAYER_CONTROLS) );
273cdf0e10cSrcweir String aMeasureLinesLayer ( SdResId(STR_LAYER_MEASURELINES) );
274cdf0e10cSrcweir String aBackgroundLayer( SdResId(STR_LAYER_BCKGRND) );
275cdf0e10cSrcweir String aBackgroundObjLayer( SdResId(STR_LAYER_BCKGRNDOBJ) );
276cdf0e10cSrcweir
277cdf0e10cSrcweir if( aLayerName == aLayoutLayer || aLayerName == aControlsLayer ||
278cdf0e10cSrcweir aLayerName == aMeasureLinesLayer ||
279cdf0e10cSrcweir aLayerName == aBackgroundLayer || aLayerName == aBackgroundObjLayer )
280cdf0e10cSrcweir {
281cdf0e10cSrcweir bDelete = false;
282cdf0e10cSrcweir }
283cdf0e10cSrcweir
284cdf0e10cSrcweir if (! pArgs)
285cdf0e10cSrcweir {
286cdf0e10cSrcweir SfxItemSet aNewAttr( GetDoc()->GetPool(), ATTR_LAYER_START, ATTR_LAYER_END );
287cdf0e10cSrcweir
288cdf0e10cSrcweir aNewAttr.Put( SdAttrLayerName( aLayerName ) );
289cdf0e10cSrcweir aNewAttr.Put( SdAttrLayerTitle( aLayerTitle ) );
290cdf0e10cSrcweir aNewAttr.Put( SdAttrLayerDesc( aLayerDesc ) );
291cdf0e10cSrcweir aNewAttr.Put( SdAttrLayerVisible( bIsVisible ) );
292cdf0e10cSrcweir aNewAttr.Put( SdAttrLayerLocked( bIsLocked ) );
293cdf0e10cSrcweir aNewAttr.Put( SdAttrLayerPrintable( bIsPrintable ) );
294cdf0e10cSrcweir aNewAttr.Put( SdAttrLayerThisPage() );
295cdf0e10cSrcweir
296cdf0e10cSrcweir SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
297cdf0e10cSrcweir AbstractSdInsertLayerDlg* pDlg = pFact ? pFact->CreateSdInsertLayerDlg(NULL, aNewAttr, bDelete, String( SdResId( STR_MODIFYLAYER ) ) ) : 0;
298cdf0e10cSrcweir if( pDlg )
299cdf0e10cSrcweir {
300cdf0e10cSrcweir pDlg->SetHelpId( SD_MOD()->GetSlotPool()->GetSlot( SID_MODIFYLAYER )->GetCommand() );
301cdf0e10cSrcweir
302cdf0e10cSrcweir // Ueberpruefung auf schon vorhandene Namen
303cdf0e10cSrcweir sal_Bool bLoop = sal_True;
304cdf0e10cSrcweir sal_uInt16 nRet = 0;
305cdf0e10cSrcweir while( bLoop && ( (nRet = pDlg->Execute()) == RET_OK ) )
306cdf0e10cSrcweir {
307cdf0e10cSrcweir pDlg->GetAttr( aNewAttr );
308cdf0e10cSrcweir aLayerName = ((SdAttrLayerName &) aNewAttr.Get (ATTR_LAYER_NAME)).GetValue ();
309cdf0e10cSrcweir
310cdf0e10cSrcweir if( (rLayerAdmin.GetLayer( aLayerName, sal_False ) &&
311cdf0e10cSrcweir aLayerName != aOldLayerName) || aLayerName.Len()==0 )
312cdf0e10cSrcweir {
313cdf0e10cSrcweir // Name ist schon vorhanden
314cdf0e10cSrcweir WarningBox aWarningBox (
315cdf0e10cSrcweir GetParentWindow(),
316cdf0e10cSrcweir WinBits( WB_OK ),
317cdf0e10cSrcweir String( SdResId( STR_WARN_NAME_DUPLICATE)));
318cdf0e10cSrcweir aWarningBox.Execute();
319cdf0e10cSrcweir }
320cdf0e10cSrcweir else
321cdf0e10cSrcweir bLoop = sal_False;
322cdf0e10cSrcweir }
323cdf0e10cSrcweir switch (nRet)
324cdf0e10cSrcweir {
325cdf0e10cSrcweir case RET_OK :
326cdf0e10cSrcweir aLayerTitle = ((SdAttrLayerTitle &) aNewAttr.Get (ATTR_LAYER_TITLE)).GetValue ();
327cdf0e10cSrcweir aLayerDesc = ((SdAttrLayerDesc &) aNewAttr.Get (ATTR_LAYER_DESC)).GetValue ();
328cdf0e10cSrcweir bIsVisible = ((const SdAttrLayerVisible &) aNewAttr.Get (ATTR_LAYER_VISIBLE)).GetValue ();
329cdf0e10cSrcweir bIsLocked = ((const SdAttrLayerLocked &) aNewAttr.Get (ATTR_LAYER_LOCKED)).GetValue ();
330cdf0e10cSrcweir bIsPrintable = ((const SdAttrLayerLocked &) aNewAttr.Get (ATTR_LAYER_PRINTABLE)).GetValue ();
331cdf0e10cSrcweir
332cdf0e10cSrcweir delete pDlg;
333cdf0e10cSrcweir break;
334cdf0e10cSrcweir
335cdf0e10cSrcweir default :
336cdf0e10cSrcweir delete pDlg;
337cdf0e10cSrcweir rReq.Ignore ();
338cdf0e10cSrcweir Cancel ();
339cdf0e10cSrcweir return;
340cdf0e10cSrcweir }
341cdf0e10cSrcweir }
342cdf0e10cSrcweir }
343cdf0e10cSrcweir else if (pArgs->Count () == 4)
344cdf0e10cSrcweir {
345cdf0e10cSrcweir SFX_REQUEST_ARG (rReq, pLayerName, SfxStringItem, ID_VAL_LAYERNAME, sal_False);
346cdf0e10cSrcweir SFX_REQUEST_ARG (rReq, pIsVisible, SfxBoolItem, ID_VAL_ISVISIBLE, sal_False);
347cdf0e10cSrcweir SFX_REQUEST_ARG (rReq, pIsLocked, SfxBoolItem, ID_VAL_ISLOCKED, sal_False);
348cdf0e10cSrcweir SFX_REQUEST_ARG (rReq, pIsPrintable, SfxBoolItem, ID_VAL_ISPRINTABLE, sal_False);
349cdf0e10cSrcweir
350cdf0e10cSrcweir aLayerName = pLayerName->GetValue ();
351cdf0e10cSrcweir bIsVisible = pIsVisible->GetValue ();
352cdf0e10cSrcweir bIsLocked = pIsLocked->GetValue ();
353cdf0e10cSrcweir bIsPrintable = pIsPrintable->GetValue ();
354cdf0e10cSrcweir }
355cdf0e10cSrcweir else
356cdf0e10cSrcweir {
357cdf0e10cSrcweir StarBASIC::FatalError (SbERR_WRONG_ARGS);
358cdf0e10cSrcweir Cancel ();
359cdf0e10cSrcweir rReq.Ignore ();
360cdf0e10cSrcweir break;
361cdf0e10cSrcweir }
362cdf0e10cSrcweir
363cdf0e10cSrcweir ::svl::IUndoManager* pManager = GetDoc()->GetDocSh()->GetUndoManager();
364cdf0e10cSrcweir SdLayerModifyUndoAction* pAction = new SdLayerModifyUndoAction(
365cdf0e10cSrcweir GetDoc(),
366cdf0e10cSrcweir pLayer,
367cdf0e10cSrcweir // old values
368cdf0e10cSrcweir aOldLayerName,
369cdf0e10cSrcweir aOldLayerTitle,
370cdf0e10cSrcweir aOldLayerDesc,
371cdf0e10cSrcweir bOldIsVisible,
372cdf0e10cSrcweir bOldIsLocked,
373cdf0e10cSrcweir bOldIsPrintable,
374cdf0e10cSrcweir // new values
375cdf0e10cSrcweir aLayerName,
376cdf0e10cSrcweir aLayerTitle,
377cdf0e10cSrcweir aLayerDesc,
378cdf0e10cSrcweir bIsVisible,
379cdf0e10cSrcweir bIsLocked,
380cdf0e10cSrcweir bIsPrintable
381cdf0e10cSrcweir );
382cdf0e10cSrcweir pManager->AddUndoAction( pAction );
383cdf0e10cSrcweir
384cdf0e10cSrcweir ModifyLayer( pLayer, aLayerName, aLayerTitle, aLayerDesc, bIsVisible, bIsLocked, bIsPrintable );
385cdf0e10cSrcweir
386cdf0e10cSrcweir Cancel();
387cdf0e10cSrcweir rReq.Done ();
388cdf0e10cSrcweir }
389cdf0e10cSrcweir break;
390cdf0e10cSrcweir
391cdf0e10cSrcweir case SID_RENAMELAYER:
392cdf0e10cSrcweir {
393cdf0e10cSrcweir if ( mpDrawView->IsTextEdit() )
394cdf0e10cSrcweir {
395cdf0e10cSrcweir mpDrawView->SdrEndTextEdit();
396cdf0e10cSrcweir }
397cdf0e10cSrcweir
398*2d19362eSArmin Le Grand if(GetLayerTabControl()) // #87182#
399*2d19362eSArmin Le Grand {
400*2d19362eSArmin Le Grand GetLayerTabControl()->StartEditMode(GetLayerTabControl()->GetCurPageId());
401*2d19362eSArmin Le Grand }
402*2d19362eSArmin Le Grand else
403*2d19362eSArmin Le Grand {
404*2d19362eSArmin Le Grand OSL_ENSURE(false, "No LayerTabBar (!)");
405*2d19362eSArmin Le Grand }
406cdf0e10cSrcweir
407cdf0e10cSrcweir Cancel();
408cdf0e10cSrcweir rReq.Ignore ();
409cdf0e10cSrcweir }
410cdf0e10cSrcweir break;
411cdf0e10cSrcweir
412cdf0e10cSrcweir case SID_EDIT_HYPERLINK :
413cdf0e10cSrcweir {
414cdf0e10cSrcweir GetViewFrame()->GetDispatcher()->Execute( SID_HYPERLINK_DIALOG );
415cdf0e10cSrcweir
416cdf0e10cSrcweir Cancel();
417cdf0e10cSrcweir rReq.Done ();
418cdf0e10cSrcweir }
419cdf0e10cSrcweir break;
420cdf0e10cSrcweir
421cdf0e10cSrcweir case SID_OPEN_HYPERLINK:
422cdf0e10cSrcweir {
423cdf0e10cSrcweir OutlinerView* pOutView = mpDrawView->GetTextEditOutlinerView();
424cdf0e10cSrcweir if ( pOutView )
425cdf0e10cSrcweir {
426cdf0e10cSrcweir const SvxFieldItem* pFieldItem = pOutView->GetFieldAtSelection();
427cdf0e10cSrcweir if ( pFieldItem )
428cdf0e10cSrcweir {
429cdf0e10cSrcweir const SvxFieldData* pField = pFieldItem->GetField();
430cdf0e10cSrcweir if( pField && pField->ISA( SvxURLField ) )
431cdf0e10cSrcweir {
432cdf0e10cSrcweir const SvxURLField* pURLField = static_cast< const SvxURLField* >( pField );
433cdf0e10cSrcweir
434cdf0e10cSrcweir SfxStringItem aUrl( SID_FILE_NAME, pURLField->GetURL() );
435cdf0e10cSrcweir SfxStringItem aTarget( SID_TARGETNAME, pURLField->GetTargetFrame() );
436cdf0e10cSrcweir
437cdf0e10cSrcweir String aReferName;
438cdf0e10cSrcweir SfxViewFrame* pFrame = GetViewFrame();
439cdf0e10cSrcweir SfxMedium* pMed = pFrame->GetObjectShell()->GetMedium();
440cdf0e10cSrcweir if (pMed)
441cdf0e10cSrcweir aReferName = pMed->GetName();
442cdf0e10cSrcweir
443cdf0e10cSrcweir SfxFrameItem aFrm( SID_DOCFRAME, pFrame );
444cdf0e10cSrcweir SfxStringItem aReferer( SID_REFERER, aReferName );
445cdf0e10cSrcweir
446cdf0e10cSrcweir SfxBoolItem aNewView( SID_OPEN_NEW_VIEW, sal_False );
447cdf0e10cSrcweir SfxBoolItem aBrowsing( SID_BROWSE, sal_True );
448cdf0e10cSrcweir
449cdf0e10cSrcweir SfxViewFrame* pViewFrm = SfxViewFrame::Current();
450cdf0e10cSrcweir if (pViewFrm)
451cdf0e10cSrcweir pViewFrm->GetDispatcher()->Execute( SID_OPENDOC,
452cdf0e10cSrcweir SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD,
453cdf0e10cSrcweir &aUrl, &aTarget,
454cdf0e10cSrcweir &aFrm, &aReferer,
455cdf0e10cSrcweir &aNewView, &aBrowsing,
456cdf0e10cSrcweir 0L );
457cdf0e10cSrcweir }
458cdf0e10cSrcweir }
459cdf0e10cSrcweir }
460cdf0e10cSrcweir Cancel();
461cdf0e10cSrcweir rReq.Done ();
462cdf0e10cSrcweir }
463cdf0e10cSrcweir break;
464cdf0e10cSrcweir
465cdf0e10cSrcweir case SID_HYPERLINK_SETLINK:
466cdf0e10cSrcweir {
467cdf0e10cSrcweir const SfxItemSet* pReqArgs = rReq.GetArgs();
468cdf0e10cSrcweir
469cdf0e10cSrcweir if (pReqArgs)
470cdf0e10cSrcweir {
471cdf0e10cSrcweir SvxHyperlinkItem* pHLItem =
472cdf0e10cSrcweir (SvxHyperlinkItem*) &pReqArgs->Get(SID_HYPERLINK_SETLINK);
473cdf0e10cSrcweir
474cdf0e10cSrcweir if (pHLItem->GetInsertMode() == HLINK_FIELD)
475cdf0e10cSrcweir {
476cdf0e10cSrcweir InsertURLField(pHLItem->GetURL(), pHLItem->GetName(),
477cdf0e10cSrcweir pHLItem->GetTargetFrame(), NULL);
478cdf0e10cSrcweir }
479cdf0e10cSrcweir else if (pHLItem->GetInsertMode() == HLINK_BUTTON)
480cdf0e10cSrcweir {
481cdf0e10cSrcweir InsertURLButton(pHLItem->GetURL(), pHLItem->GetName(),
482cdf0e10cSrcweir pHLItem->GetTargetFrame(), NULL);
483cdf0e10cSrcweir }
484cdf0e10cSrcweir else if (pHLItem->GetInsertMode() == HLINK_DEFAULT)
485cdf0e10cSrcweir {
486cdf0e10cSrcweir OutlinerView* pOlView = mpDrawView->GetTextEditOutlinerView();
487cdf0e10cSrcweir
488cdf0e10cSrcweir if (pOlView)
489cdf0e10cSrcweir {
490cdf0e10cSrcweir InsertURLField(pHLItem->GetURL(), pHLItem->GetName(),
491cdf0e10cSrcweir pHLItem->GetTargetFrame(), NULL);
492cdf0e10cSrcweir }
493cdf0e10cSrcweir else
494cdf0e10cSrcweir {
495cdf0e10cSrcweir InsertURLButton(pHLItem->GetURL(), pHLItem->GetName(),
496cdf0e10cSrcweir pHLItem->GetTargetFrame(), NULL);
497cdf0e10cSrcweir }
498cdf0e10cSrcweir }
499cdf0e10cSrcweir }
500cdf0e10cSrcweir
501cdf0e10cSrcweir Cancel();
502cdf0e10cSrcweir rReq.Ignore ();
503cdf0e10cSrcweir }
504cdf0e10cSrcweir break;
505cdf0e10cSrcweir
506cdf0e10cSrcweir case SID_INSERT_FLD_DATE_FIX:
507cdf0e10cSrcweir case SID_INSERT_FLD_DATE_VAR:
508cdf0e10cSrcweir case SID_INSERT_FLD_TIME_FIX:
509cdf0e10cSrcweir case SID_INSERT_FLD_TIME_VAR:
510cdf0e10cSrcweir case SID_INSERT_FLD_AUTHOR:
511cdf0e10cSrcweir case SID_INSERT_FLD_PAGE:
512cdf0e10cSrcweir case SID_INSERT_FLD_PAGES:
513cdf0e10cSrcweir case SID_INSERT_FLD_FILE:
514cdf0e10cSrcweir {
515cdf0e10cSrcweir sal_uInt16 nMul = 1;
516cdf0e10cSrcweir SvxFieldItem* pFieldItem = 0;
517cdf0e10cSrcweir
518cdf0e10cSrcweir switch( nSId )
519cdf0e10cSrcweir {
520cdf0e10cSrcweir case SID_INSERT_FLD_DATE_FIX:
521cdf0e10cSrcweir pFieldItem = new SvxFieldItem(
522cdf0e10cSrcweir SvxDateField( Date(), SVXDATETYPE_FIX ), EE_FEATURE_FIELD );
523cdf0e10cSrcweir break;
524cdf0e10cSrcweir
525cdf0e10cSrcweir case SID_INSERT_FLD_DATE_VAR:
526cdf0e10cSrcweir pFieldItem = new SvxFieldItem( SvxDateField(), EE_FEATURE_FIELD );
527cdf0e10cSrcweir break;
528cdf0e10cSrcweir
529cdf0e10cSrcweir case SID_INSERT_FLD_TIME_FIX:
530cdf0e10cSrcweir pFieldItem = new SvxFieldItem(
531cdf0e10cSrcweir SvxExtTimeField( Time(), SVXTIMETYPE_FIX ), EE_FEATURE_FIELD );
532cdf0e10cSrcweir break;
533cdf0e10cSrcweir
534cdf0e10cSrcweir case SID_INSERT_FLD_TIME_VAR:
535cdf0e10cSrcweir pFieldItem = new SvxFieldItem( SvxExtTimeField(), EE_FEATURE_FIELD );
536cdf0e10cSrcweir break;
537cdf0e10cSrcweir
538cdf0e10cSrcweir case SID_INSERT_FLD_AUTHOR:
539cdf0e10cSrcweir {
540cdf0e10cSrcweir SvtUserOptions aUserOptions;
541cdf0e10cSrcweir pFieldItem = new SvxFieldItem(
542cdf0e10cSrcweir SvxAuthorField(
543cdf0e10cSrcweir aUserOptions.GetFirstName(), aUserOptions.GetLastName(), aUserOptions.GetID() ), EE_FEATURE_FIELD );
544cdf0e10cSrcweir }
545cdf0e10cSrcweir break;
546cdf0e10cSrcweir
547cdf0e10cSrcweir case SID_INSERT_FLD_PAGE:
548cdf0e10cSrcweir {
549cdf0e10cSrcweir pFieldItem = new SvxFieldItem( SvxPageField(), EE_FEATURE_FIELD );
550cdf0e10cSrcweir nMul = 3;
551cdf0e10cSrcweir }
552cdf0e10cSrcweir break;
553cdf0e10cSrcweir
554cdf0e10cSrcweir case SID_INSERT_FLD_PAGES:
555cdf0e10cSrcweir {
556cdf0e10cSrcweir pFieldItem = new SvxFieldItem( SvxPagesField(), EE_FEATURE_FIELD );
557cdf0e10cSrcweir nMul = 3;
558cdf0e10cSrcweir }
559cdf0e10cSrcweir break;
560cdf0e10cSrcweir
561cdf0e10cSrcweir case SID_INSERT_FLD_FILE:
562cdf0e10cSrcweir {
563cdf0e10cSrcweir String aName;
564cdf0e10cSrcweir if( GetDocSh()->HasName() )
565cdf0e10cSrcweir aName = GetDocSh()->GetMedium()->GetName();
566cdf0e10cSrcweir //else
567cdf0e10cSrcweir // aName = GetDocSh()->GetName();
568cdf0e10cSrcweir pFieldItem = new SvxFieldItem( SvxExtFileField( aName ), EE_FEATURE_FIELD );
569cdf0e10cSrcweir }
570cdf0e10cSrcweir break;
571cdf0e10cSrcweir }
572cdf0e10cSrcweir
573cdf0e10cSrcweir OutlinerView* pOLV = mpDrawView->GetTextEditOutlinerView();
574cdf0e10cSrcweir
575cdf0e10cSrcweir if( pOLV )
576cdf0e10cSrcweir {
577cdf0e10cSrcweir const SvxFieldItem* pOldFldItem = pOLV->GetFieldAtSelection();
578cdf0e10cSrcweir
579cdf0e10cSrcweir if( pOldFldItem && ( pOldFldItem->GetField()->ISA( SvxURLField ) ||
580cdf0e10cSrcweir pOldFldItem->GetField()->ISA( SvxDateField ) ||
581cdf0e10cSrcweir pOldFldItem->GetField()->ISA( SvxTimeField ) ||
582cdf0e10cSrcweir pOldFldItem->GetField()->ISA( SvxExtTimeField ) ||
583cdf0e10cSrcweir pOldFldItem->GetField()->ISA( SvxExtFileField ) ||
584cdf0e10cSrcweir pOldFldItem->GetField()->ISA( SvxAuthorField ) ||
585cdf0e10cSrcweir pOldFldItem->GetField()->ISA( SvxPageField ) ) )
586cdf0e10cSrcweir {
587cdf0e10cSrcweir // Feld selektieren, so dass es beim Insert geloescht wird
588cdf0e10cSrcweir ESelection aSel = pOLV->GetSelection();
589cdf0e10cSrcweir if( aSel.nStartPos == aSel.nEndPos )
590cdf0e10cSrcweir aSel.nEndPos++;
591cdf0e10cSrcweir pOLV->SetSelection( aSel );
592cdf0e10cSrcweir }
593cdf0e10cSrcweir
594cdf0e10cSrcweir if( pFieldItem )
595cdf0e10cSrcweir pOLV->InsertField( *pFieldItem );
596cdf0e10cSrcweir }
597cdf0e10cSrcweir else
598cdf0e10cSrcweir {
599cdf0e10cSrcweir Outliner* pOutl = GetDoc()->GetInternalOutliner();
600cdf0e10cSrcweir pOutl->Init( OUTLINERMODE_TEXTOBJECT );
601cdf0e10cSrcweir sal_uInt16 nOutlMode = pOutl->GetMode();
602cdf0e10cSrcweir pOutl->SetStyleSheet( 0, NULL );
603cdf0e10cSrcweir pOutl->QuickInsertField( *pFieldItem, ESelection() );
604cdf0e10cSrcweir OutlinerParaObject* pOutlParaObject = pOutl->CreateParaObject();
605cdf0e10cSrcweir
606cdf0e10cSrcweir SdrRectObj* pRectObj = new SdrRectObj( OBJ_TEXT );
607cdf0e10cSrcweir pRectObj->SetMergedItem(SdrTextAutoGrowWidthItem(sal_True));
608cdf0e10cSrcweir
609cdf0e10cSrcweir pOutl->UpdateFields();
610cdf0e10cSrcweir pOutl->SetUpdateMode( sal_True );
611cdf0e10cSrcweir Size aSize( pOutl->CalcTextSize() );
612cdf0e10cSrcweir aSize.Width() *= nMul;
613cdf0e10cSrcweir pOutl->SetUpdateMode( sal_False );
614cdf0e10cSrcweir
615cdf0e10cSrcweir Point aPos;
616cdf0e10cSrcweir Rectangle aRect( aPos, GetActiveWindow()->GetOutputSizePixel() );
617cdf0e10cSrcweir aPos = aRect.Center();
618cdf0e10cSrcweir aPos = GetActiveWindow()->PixelToLogic(aPos);
619cdf0e10cSrcweir aPos.X() -= aSize.Width() / 2;
620cdf0e10cSrcweir aPos.Y() -= aSize.Height() / 2;
621cdf0e10cSrcweir
622cdf0e10cSrcweir Rectangle aLogicRect(aPos, aSize);
623cdf0e10cSrcweir pRectObj->SetLogicRect(aLogicRect);
624cdf0e10cSrcweir pRectObj->SetOutlinerParaObject( pOutlParaObject );
625cdf0e10cSrcweir mpDrawView->InsertObjectAtView(pRectObj, *mpDrawView->GetSdrPageView());
626cdf0e10cSrcweir pOutl->Init( nOutlMode );
627cdf0e10cSrcweir }
628cdf0e10cSrcweir
629cdf0e10cSrcweir delete pFieldItem;
630cdf0e10cSrcweir
631cdf0e10cSrcweir Cancel();
632cdf0e10cSrcweir rReq.Ignore ();
633cdf0e10cSrcweir }
634cdf0e10cSrcweir break;
635cdf0e10cSrcweir
636cdf0e10cSrcweir case SID_MODIFY_FIELD:
637cdf0e10cSrcweir {
638cdf0e10cSrcweir OutlinerView* pOLV = mpDrawView->GetTextEditOutlinerView();
639cdf0e10cSrcweir
640cdf0e10cSrcweir if( pOLV )
641cdf0e10cSrcweir {
642cdf0e10cSrcweir const SvxFieldItem* pFldItem = pOLV->GetFieldAtSelection();
643cdf0e10cSrcweir
644cdf0e10cSrcweir if( pFldItem && (pFldItem->GetField()->ISA( SvxDateField ) ||
645cdf0e10cSrcweir pFldItem->GetField()->ISA( SvxAuthorField ) ||
646cdf0e10cSrcweir pFldItem->GetField()->ISA( SvxExtFileField ) ||
647cdf0e10cSrcweir pFldItem->GetField()->ISA( SvxExtTimeField ) ) )
648cdf0e10cSrcweir {
649cdf0e10cSrcweir // Dialog...
650cdf0e10cSrcweir SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
651cdf0e10cSrcweir AbstractSdModifyFieldDlg* pDlg = pFact ? pFact->CreateSdModifyFieldDlg(GetActiveWindow(), pFldItem->GetField(), pOLV->GetAttribs() ) : 0;
652cdf0e10cSrcweir if( pDlg && pDlg->Execute() == RET_OK )
653cdf0e10cSrcweir {
654cdf0e10cSrcweir // #108538#
655cdf0e10cSrcweir // To make a correct SetAttribs() call at the utlinerView
656cdf0e10cSrcweir // it is necessary to split the actions here
657cdf0e10cSrcweir SvxFieldData* pField = pDlg->GetField();
658cdf0e10cSrcweir ESelection aSel = pOLV->GetSelection();
659cdf0e10cSrcweir sal_Bool bSelectionWasModified(sal_False);
660cdf0e10cSrcweir
661cdf0e10cSrcweir if( pField )
662cdf0e10cSrcweir {
663cdf0e10cSrcweir SvxFieldItem aFieldItem( *pField, EE_FEATURE_FIELD );
664cdf0e10cSrcweir
665cdf0e10cSrcweir if( aSel.nStartPos == aSel.nEndPos )
666cdf0e10cSrcweir {
667cdf0e10cSrcweir bSelectionWasModified = sal_True;
668cdf0e10cSrcweir aSel.nEndPos++;
669cdf0e10cSrcweir pOLV->SetSelection( aSel );
670cdf0e10cSrcweir }
671cdf0e10cSrcweir
672cdf0e10cSrcweir pOLV->InsertField( aFieldItem );
673cdf0e10cSrcweir
674cdf0e10cSrcweir // #108538# select again for eventual SetAttribs call
675cdf0e10cSrcweir pOLV->SetSelection( aSel );
676cdf0e10cSrcweir }
677cdf0e10cSrcweir
678cdf0e10cSrcweir SfxItemSet aSet( pDlg->GetItemSet() );
679cdf0e10cSrcweir
680cdf0e10cSrcweir if( aSet.Count() )
681cdf0e10cSrcweir {
682cdf0e10cSrcweir pOLV->SetAttribs( aSet );
683cdf0e10cSrcweir
684cdf0e10cSrcweir ::Outliner* pOutliner = pOLV->GetOutliner();
685cdf0e10cSrcweir if( pOutliner )
686cdf0e10cSrcweir pOutliner->UpdateFields();
687cdf0e10cSrcweir }
688cdf0e10cSrcweir
689cdf0e10cSrcweir if(pField)
690cdf0e10cSrcweir {
691cdf0e10cSrcweir // #108538# restore selection to original
692cdf0e10cSrcweir if(bSelectionWasModified)
693cdf0e10cSrcweir {
694cdf0e10cSrcweir aSel.nEndPos--;
695cdf0e10cSrcweir pOLV->SetSelection( aSel );
696cdf0e10cSrcweir }
697cdf0e10cSrcweir
698cdf0e10cSrcweir delete pField;
699cdf0e10cSrcweir }
700cdf0e10cSrcweir }
701cdf0e10cSrcweir delete pDlg;
702cdf0e10cSrcweir }
703cdf0e10cSrcweir }
704cdf0e10cSrcweir
705cdf0e10cSrcweir Cancel();
706cdf0e10cSrcweir rReq.Ignore ();
707cdf0e10cSrcweir }
708cdf0e10cSrcweir break;
709cdf0e10cSrcweir
710cdf0e10cSrcweir case SID_OPEN_XML_FILTERSETTINGS:
711cdf0e10cSrcweir {
712cdf0e10cSrcweir try
713cdf0e10cSrcweir {
714cdf0e10cSrcweir com::sun::star::uno::Reference < ::com::sun::star::ui::dialogs::XExecutableDialog > xDialog(::comphelper::getProcessServiceFactory()->createInstance(rtl::OUString::createFromAscii("com.sun.star.comp.ui.XSLTFilterDialog")), com::sun::star::uno::UNO_QUERY);
715cdf0e10cSrcweir if( xDialog.is() )
716cdf0e10cSrcweir {
717cdf0e10cSrcweir xDialog->execute();
718cdf0e10cSrcweir }
719cdf0e10cSrcweir }
720cdf0e10cSrcweir catch( ::com::sun::star::uno::RuntimeException& )
721cdf0e10cSrcweir {
722cdf0e10cSrcweir }
723cdf0e10cSrcweir
724cdf0e10cSrcweir Cancel();
725cdf0e10cSrcweir rReq.Ignore ();
726cdf0e10cSrcweir }
727cdf0e10cSrcweir break;
728cdf0e10cSrcweir
729cdf0e10cSrcweir default:
730cdf0e10cSrcweir {
731cdf0e10cSrcweir // switch Anweisung wegen CLOOKS aufgeteilt. Alle case-Anweisungen die
732cdf0e10cSrcweir // eine Fu???? -Funktion aufrufen, sind in die Methode FuTemp03 (drviewsb)
733cdf0e10cSrcweir // gewandert.
734cdf0e10cSrcweir FuTemp03(rReq);
735cdf0e10cSrcweir }
736cdf0e10cSrcweir break;
737cdf0e10cSrcweir };
738cdf0e10cSrcweir };
739cdf0e10cSrcweir
RenameSlide(sal_uInt16 nPageId,const String & rName)740cdf0e10cSrcweir bool DrawViewShell::RenameSlide( sal_uInt16 nPageId, const String & rName )
741cdf0e10cSrcweir {
742cdf0e10cSrcweir sal_Bool bOutDummy;
743cdf0e10cSrcweir if( GetDoc()->GetPageByName( rName, bOutDummy ) != SDRPAGE_NOTFOUND )
744cdf0e10cSrcweir return false;
745cdf0e10cSrcweir
746cdf0e10cSrcweir SdPage* pPageToRename = NULL;
747cdf0e10cSrcweir PageKind ePageKind = GetPageKind();
748cdf0e10cSrcweir
749cdf0e10cSrcweir if( GetEditMode() == EM_PAGE )
750cdf0e10cSrcweir {
751cdf0e10cSrcweir pPageToRename = GetDoc()->GetSdPage( nPageId - 1, ePageKind );
752cdf0e10cSrcweir
753cdf0e10cSrcweir // Undo
754cdf0e10cSrcweir SdPage* pUndoPage = pPageToRename;
755cdf0e10cSrcweir SdrLayerAdmin & rLayerAdmin = GetDoc()->GetLayerAdmin();
756cdf0e10cSrcweir sal_uInt8 nBackground = rLayerAdmin.GetLayerID( String( SdResId( STR_LAYER_BCKGRND )), sal_False );
757cdf0e10cSrcweir sal_uInt8 nBgObj = rLayerAdmin.GetLayerID( String( SdResId( STR_LAYER_BCKGRNDOBJ )), sal_False );
758cdf0e10cSrcweir SetOfByte aVisibleLayers = mpActualPage->TRG_GetMasterPageVisibleLayers();
759cdf0e10cSrcweir
760cdf0e10cSrcweir // (#67720#)
761cdf0e10cSrcweir ::svl::IUndoManager* pManager = GetDoc()->GetDocSh()->GetUndoManager();
762cdf0e10cSrcweir ModifyPageUndoAction* pAction = new ModifyPageUndoAction(
763cdf0e10cSrcweir GetDoc(), pUndoPage, rName, pUndoPage->GetAutoLayout(),
764cdf0e10cSrcweir aVisibleLayers.IsSet( nBackground ),
765cdf0e10cSrcweir aVisibleLayers.IsSet( nBgObj ));
766cdf0e10cSrcweir pManager->AddUndoAction( pAction );
767cdf0e10cSrcweir
768cdf0e10cSrcweir // rename
769cdf0e10cSrcweir pPageToRename->SetName( rName );
770cdf0e10cSrcweir
771cdf0e10cSrcweir if( ePageKind == PK_STANDARD )
772cdf0e10cSrcweir {
773cdf0e10cSrcweir // also rename notes-page
774cdf0e10cSrcweir SdPage* pNotesPage = GetDoc()->GetSdPage( nPageId - 1, PK_NOTES );
775cdf0e10cSrcweir pNotesPage->SetName( rName );
776cdf0e10cSrcweir }
777cdf0e10cSrcweir }
778cdf0e10cSrcweir else
779cdf0e10cSrcweir {
780cdf0e10cSrcweir // rename MasterPage -> rename LayoutTemplate
781cdf0e10cSrcweir pPageToRename = GetDoc()->GetMasterSdPage( nPageId - 1, ePageKind );
782cdf0e10cSrcweir GetDoc()->RenameLayoutTemplate( pPageToRename->GetLayoutName(), rName );
783cdf0e10cSrcweir }
784cdf0e10cSrcweir
785cdf0e10cSrcweir bool bSuccess = ( sal_False != rName.Equals( pPageToRename->GetName()));
786cdf0e10cSrcweir
787cdf0e10cSrcweir if( bSuccess )
788cdf0e10cSrcweir {
789cdf0e10cSrcweir // user edited page names may be changed by the page so update control
790cdf0e10cSrcweir maTabControl.SetPageText( nPageId, rName );
791cdf0e10cSrcweir
792cdf0e10cSrcweir // set document to modified state
793cdf0e10cSrcweir GetDoc()->SetChanged( sal_True );
794cdf0e10cSrcweir
795cdf0e10cSrcweir // inform navigator about change
796cdf0e10cSrcweir SfxBoolItem aItem( SID_NAVIGATOR_INIT, sal_True );
797cdf0e10cSrcweir GetViewFrame()->GetDispatcher()->Execute(
798cdf0e10cSrcweir SID_NAVIGATOR_INIT, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD, &aItem, 0L );
799cdf0e10cSrcweir
800cdf0e10cSrcweir // Tell the slide sorter about the name change (necessary for
801cdf0e10cSrcweir // accessibility.)
802cdf0e10cSrcweir slidesorter::SlideSorterViewShell* pSlideSorterViewShell
803cdf0e10cSrcweir = slidesorter::SlideSorterViewShell::GetSlideSorter(GetViewShellBase());
804cdf0e10cSrcweir if (pSlideSorterViewShell != NULL)
805cdf0e10cSrcweir {
806cdf0e10cSrcweir pSlideSorterViewShell->GetSlideSorter().GetController().PageNameHasChanged(
807cdf0e10cSrcweir nPageId-1, rName);
808cdf0e10cSrcweir }
809cdf0e10cSrcweir }
810cdf0e10cSrcweir
811cdf0e10cSrcweir return bSuccess;
812cdf0e10cSrcweir }
813cdf0e10cSrcweir
814cdf0e10cSrcweir
815cdf0e10cSrcweir
816cdf0e10cSrcweir
IMPL_LINK(DrawViewShell,RenameSlideHdl,AbstractSvxNameDialog *,pDialog)817cdf0e10cSrcweir IMPL_LINK( DrawViewShell, RenameSlideHdl, AbstractSvxNameDialog*, pDialog )
818cdf0e10cSrcweir {
819cdf0e10cSrcweir if( ! pDialog )
820cdf0e10cSrcweir return 0;
821cdf0e10cSrcweir
822cdf0e10cSrcweir String aNewName;
823cdf0e10cSrcweir pDialog->GetName( aNewName );
824cdf0e10cSrcweir
825cdf0e10cSrcweir SdPage* pCurrentPage = GetDoc()->GetSdPage( maTabControl.GetCurPageId() - 1, GetPageKind() );
826cdf0e10cSrcweir
827cdf0e10cSrcweir return pCurrentPage && ( aNewName.Equals( pCurrentPage->GetName() ) || GetDocSh()->IsNewPageNameValid( aNewName ) );
828cdf0e10cSrcweir }
829cdf0e10cSrcweir
830cdf0e10cSrcweir
831cdf0e10cSrcweir
832cdf0e10cSrcweir
ModifyLayer(SdrLayer * pLayer,const String & rLayerName,const String & rLayerTitle,const String & rLayerDesc,bool bIsVisible,bool bIsLocked,bool bIsPrintable)833cdf0e10cSrcweir void DrawViewShell::ModifyLayer (
834cdf0e10cSrcweir SdrLayer* pLayer,
835cdf0e10cSrcweir const String& rLayerName,
836cdf0e10cSrcweir const String& rLayerTitle,
837cdf0e10cSrcweir const String& rLayerDesc,
838cdf0e10cSrcweir bool bIsVisible,
839cdf0e10cSrcweir bool bIsLocked,
840cdf0e10cSrcweir bool bIsPrintable)
841cdf0e10cSrcweir {
842*2d19362eSArmin Le Grand if(!GetLayerTabControl()) // #87182#
843*2d19362eSArmin Le Grand {
844*2d19362eSArmin Le Grand OSL_ENSURE(false, "No LayerTabBar (!)");
845*2d19362eSArmin Le Grand return;
846*2d19362eSArmin Le Grand }
847*2d19362eSArmin Le Grand
848cdf0e10cSrcweir if( pLayer )
849cdf0e10cSrcweir {
850cdf0e10cSrcweir const sal_uInt16 nPageCount = GetLayerTabControl()->GetPageCount();
851cdf0e10cSrcweir sal_uInt16 nCurPage = 0;
852cdf0e10cSrcweir sal_uInt16 nPos;
853cdf0e10cSrcweir for( nPos = 0; nPos < nPageCount; nPos++ )
854cdf0e10cSrcweir {
855cdf0e10cSrcweir sal_uInt16 nId = GetLayerTabControl()->GetPageId( nPos );
856cdf0e10cSrcweir if( pLayer->GetName() == GetLayerTabControl()->GetPageText( nId ) )
857cdf0e10cSrcweir {
858cdf0e10cSrcweir nCurPage = nId;
859cdf0e10cSrcweir break;
860cdf0e10cSrcweir }
861cdf0e10cSrcweir }
862cdf0e10cSrcweir
863cdf0e10cSrcweir pLayer->SetName( rLayerName );
864cdf0e10cSrcweir pLayer->SetTitle( rLayerTitle );
865cdf0e10cSrcweir pLayer->SetDescription( rLayerDesc );
866cdf0e10cSrcweir mpDrawView->SetLayerVisible( rLayerName, bIsVisible );
867cdf0e10cSrcweir mpDrawView->SetLayerLocked( rLayerName, bIsLocked);
868cdf0e10cSrcweir mpDrawView->SetLayerPrintable(rLayerName, bIsPrintable);
869cdf0e10cSrcweir
870cdf0e10cSrcweir GetDoc()->SetChanged(sal_True);
871cdf0e10cSrcweir
872cdf0e10cSrcweir GetLayerTabControl()->SetPageText(nCurPage, rLayerName);
873cdf0e10cSrcweir
874cdf0e10cSrcweir TabBarPageBits nBits = 0;
875cdf0e10cSrcweir
876cdf0e10cSrcweir if (!bIsVisible)
877cdf0e10cSrcweir {
878cdf0e10cSrcweir // Unsichtbare Layer werden anders dargestellt
879cdf0e10cSrcweir nBits = TPB_SPECIAL;
880cdf0e10cSrcweir }
881cdf0e10cSrcweir
882cdf0e10cSrcweir GetLayerTabControl()->SetPageBits(nCurPage, nBits);
883cdf0e10cSrcweir
884cdf0e10cSrcweir GetViewFrame()->GetDispatcher()->Execute(
885cdf0e10cSrcweir SID_SWITCHLAYER,
886cdf0e10cSrcweir SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD);
887cdf0e10cSrcweir
888cdf0e10cSrcweir // Call Invalidate at the form shell.
889cdf0e10cSrcweir FmFormShell* pFormShell = GetViewShellBase().GetFormShellManager()->GetFormShell();
890cdf0e10cSrcweir if (pFormShell != NULL)
891cdf0e10cSrcweir pFormShell->Invalidate();
892cdf0e10cSrcweir }
893cdf0e10cSrcweir }
894cdf0e10cSrcweir
895cdf0e10cSrcweir } // end of namespace sd
896