1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 29*cdf0e10cSrcweir #include "precompiled_sd.hxx" 30*cdf0e10cSrcweir 31*cdf0e10cSrcweir #ifndef _SVDLAYER 32*cdf0e10cSrcweir #include <svx/svdlayer.hxx> 33*cdf0e10cSrcweir #endif 34*cdf0e10cSrcweir #include <sfx2/dispatch.hxx> 35*cdf0e10cSrcweir #include <sfx2/viewfrm.hxx> 36*cdf0e10cSrcweir 37*cdf0e10cSrcweir 38*cdf0e10cSrcweir #include "strings.hrc" 39*cdf0e10cSrcweir #include "glob.hxx" 40*cdf0e10cSrcweir #include "glob.hrc" // STR_BCKGRND, STR_BCKGRNDOBJ 41*cdf0e10cSrcweir #include "app.hrc" // SID_SWITCHPAGE 42*cdf0e10cSrcweir 43*cdf0e10cSrcweir #include "unmodpg.hxx" 44*cdf0e10cSrcweir #include "sdpage.hxx" 45*cdf0e10cSrcweir #include "sdresid.hxx" 46*cdf0e10cSrcweir #include "drawdoc.hxx" 47*cdf0e10cSrcweir 48*cdf0e10cSrcweir 49*cdf0e10cSrcweir TYPEINIT1(ModifyPageUndoAction, SdUndoAction); 50*cdf0e10cSrcweir 51*cdf0e10cSrcweir 52*cdf0e10cSrcweir /************************************************************************* 53*cdf0e10cSrcweir |* 54*cdf0e10cSrcweir |* Konstruktor 55*cdf0e10cSrcweir |* 56*cdf0e10cSrcweir \************************************************************************/ 57*cdf0e10cSrcweir 58*cdf0e10cSrcweir ModifyPageUndoAction::ModifyPageUndoAction( 59*cdf0e10cSrcweir SdDrawDocument* pTheDoc, 60*cdf0e10cSrcweir SdPage* pThePage, 61*cdf0e10cSrcweir String aTheNewName, 62*cdf0e10cSrcweir AutoLayout eTheNewAutoLayout, 63*cdf0e10cSrcweir sal_Bool bTheNewBckgrndVisible, 64*cdf0e10cSrcweir sal_Bool bTheNewBckgrndObjsVisible) 65*cdf0e10cSrcweir : SdUndoAction(pTheDoc) 66*cdf0e10cSrcweir { 67*cdf0e10cSrcweir DBG_ASSERT(pThePage, "Undo ohne Seite ???"); 68*cdf0e10cSrcweir 69*cdf0e10cSrcweir mpPage = pThePage; 70*cdf0e10cSrcweir maNewName = aTheNewName; 71*cdf0e10cSrcweir meNewAutoLayout = eTheNewAutoLayout; 72*cdf0e10cSrcweir mbNewBckgrndVisible = bTheNewBckgrndVisible; 73*cdf0e10cSrcweir mbNewBckgrndObjsVisible = bTheNewBckgrndObjsVisible; 74*cdf0e10cSrcweir 75*cdf0e10cSrcweir meOldAutoLayout = mpPage->GetAutoLayout(); 76*cdf0e10cSrcweir 77*cdf0e10cSrcweir if (!mpPage->IsMasterPage()) 78*cdf0e10cSrcweir { 79*cdf0e10cSrcweir maOldName = mpPage->GetName(); 80*cdf0e10cSrcweir SdrLayerAdmin& rLayerAdmin = mpDoc->GetLayerAdmin(); 81*cdf0e10cSrcweir sal_uInt8 aBckgrnd = rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRND)), sal_False); 82*cdf0e10cSrcweir sal_uInt8 aBckgrndObj = rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRNDOBJ)), sal_False); 83*cdf0e10cSrcweir SetOfByte aVisibleLayers = mpPage->TRG_GetMasterPageVisibleLayers(); 84*cdf0e10cSrcweir 85*cdf0e10cSrcweir mbOldBckgrndVisible = aVisibleLayers.IsSet(aBckgrnd); 86*cdf0e10cSrcweir mbOldBckgrndObjsVisible = aVisibleLayers.IsSet(aBckgrndObj); 87*cdf0e10cSrcweir } 88*cdf0e10cSrcweir 89*cdf0e10cSrcweir maComment = String(SdResId(STR_UNDO_MODIFY_PAGE)); 90*cdf0e10cSrcweir } 91*cdf0e10cSrcweir 92*cdf0e10cSrcweir /************************************************************************* 93*cdf0e10cSrcweir |* 94*cdf0e10cSrcweir |* Undo() 95*cdf0e10cSrcweir |* 96*cdf0e10cSrcweir \************************************************************************/ 97*cdf0e10cSrcweir #include <svx/svdviter.hxx> 98*cdf0e10cSrcweir #include <svx/svdview.hxx> 99*cdf0e10cSrcweir void ModifyPageUndoAction::Undo() 100*cdf0e10cSrcweir { 101*cdf0e10cSrcweir // #94637# invalidate Selection, there could be objects deleted in tis UNDO 102*cdf0e10cSrcweir // which are no longer allowed to be selected then. 103*cdf0e10cSrcweir SdrViewIter aIter(mpPage); 104*cdf0e10cSrcweir SdrView* pView = aIter.FirstView(); 105*cdf0e10cSrcweir 106*cdf0e10cSrcweir while(pView) 107*cdf0e10cSrcweir { 108*cdf0e10cSrcweir if(pView->AreObjectsMarked()) 109*cdf0e10cSrcweir pView->UnmarkAll(); 110*cdf0e10cSrcweir pView = aIter.NextView(); 111*cdf0e10cSrcweir } 112*cdf0e10cSrcweir 113*cdf0e10cSrcweir mpPage->SetAutoLayout( meOldAutoLayout ); 114*cdf0e10cSrcweir 115*cdf0e10cSrcweir if (!mpPage->IsMasterPage()) 116*cdf0e10cSrcweir { 117*cdf0e10cSrcweir if (mpPage->GetName() != maOldName) 118*cdf0e10cSrcweir { 119*cdf0e10cSrcweir mpPage->SetName(maOldName); 120*cdf0e10cSrcweir 121*cdf0e10cSrcweir if (mpPage->GetPageKind() == PK_STANDARD) 122*cdf0e10cSrcweir { 123*cdf0e10cSrcweir SdPage* pNotesPage = (SdPage*)mpDoc->GetPage(mpPage->GetPageNum() + 1); 124*cdf0e10cSrcweir pNotesPage->SetName(maOldName); 125*cdf0e10cSrcweir } 126*cdf0e10cSrcweir } 127*cdf0e10cSrcweir 128*cdf0e10cSrcweir SdrLayerAdmin& rLayerAdmin = mpDoc->GetLayerAdmin(); 129*cdf0e10cSrcweir sal_uInt8 aBckgrnd = rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRND)), sal_False); 130*cdf0e10cSrcweir sal_uInt8 aBckgrndObj = rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRNDOBJ)), sal_False); 131*cdf0e10cSrcweir SetOfByte aVisibleLayers; 132*cdf0e10cSrcweir aVisibleLayers.Set(aBckgrnd, mbOldBckgrndVisible); 133*cdf0e10cSrcweir aVisibleLayers.Set(aBckgrndObj, mbOldBckgrndObjsVisible); 134*cdf0e10cSrcweir mpPage->TRG_SetMasterPageVisibleLayers(aVisibleLayers); 135*cdf0e10cSrcweir } 136*cdf0e10cSrcweir 137*cdf0e10cSrcweir // Redisplay 138*cdf0e10cSrcweir SfxViewFrame::Current()->GetDispatcher()->Execute( 139*cdf0e10cSrcweir SID_SWITCHPAGE, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD ); 140*cdf0e10cSrcweir } 141*cdf0e10cSrcweir 142*cdf0e10cSrcweir /************************************************************************* 143*cdf0e10cSrcweir |* 144*cdf0e10cSrcweir |* Redo() 145*cdf0e10cSrcweir |* 146*cdf0e10cSrcweir \************************************************************************/ 147*cdf0e10cSrcweir 148*cdf0e10cSrcweir void ModifyPageUndoAction::Redo() 149*cdf0e10cSrcweir { 150*cdf0e10cSrcweir // #94637# invalidate Selection, there could be objects deleted in tis UNDO 151*cdf0e10cSrcweir // which are no longer allowed to be selected then. 152*cdf0e10cSrcweir SdrViewIter aIter(mpPage); 153*cdf0e10cSrcweir SdrView* pView = aIter.FirstView(); 154*cdf0e10cSrcweir 155*cdf0e10cSrcweir while(pView) 156*cdf0e10cSrcweir { 157*cdf0e10cSrcweir if(pView->AreObjectsMarked()) 158*cdf0e10cSrcweir pView->UnmarkAll(); 159*cdf0e10cSrcweir pView = aIter.NextView(); 160*cdf0e10cSrcweir } 161*cdf0e10cSrcweir 162*cdf0e10cSrcweir mpPage->meAutoLayout = meNewAutoLayout; 163*cdf0e10cSrcweir 164*cdf0e10cSrcweir if (!mpPage->IsMasterPage()) 165*cdf0e10cSrcweir { 166*cdf0e10cSrcweir if (mpPage->GetName() != maNewName) 167*cdf0e10cSrcweir { 168*cdf0e10cSrcweir mpPage->SetName(maNewName); 169*cdf0e10cSrcweir 170*cdf0e10cSrcweir if (mpPage->GetPageKind() == PK_STANDARD) 171*cdf0e10cSrcweir { 172*cdf0e10cSrcweir SdPage* pNotesPage = (SdPage*)mpDoc->GetPage(mpPage->GetPageNum() + 1); 173*cdf0e10cSrcweir pNotesPage->SetName(maNewName); 174*cdf0e10cSrcweir } 175*cdf0e10cSrcweir } 176*cdf0e10cSrcweir 177*cdf0e10cSrcweir SdrLayerAdmin& rLayerAdmin = mpDoc->GetLayerAdmin(); 178*cdf0e10cSrcweir sal_uInt8 aBckgrnd = rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRND)), sal_False); 179*cdf0e10cSrcweir sal_uInt8 aBckgrndObj = rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRNDOBJ)), sal_False); 180*cdf0e10cSrcweir SetOfByte aVisibleLayers; 181*cdf0e10cSrcweir aVisibleLayers.Set(aBckgrnd, mbNewBckgrndVisible); 182*cdf0e10cSrcweir aVisibleLayers.Set(aBckgrndObj, mbNewBckgrndObjsVisible); 183*cdf0e10cSrcweir mpPage->TRG_SetMasterPageVisibleLayers(aVisibleLayers); 184*cdf0e10cSrcweir } 185*cdf0e10cSrcweir 186*cdf0e10cSrcweir // Redisplay 187*cdf0e10cSrcweir SfxViewFrame::Current()->GetDispatcher()->Execute( 188*cdf0e10cSrcweir SID_SWITCHPAGE, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD ); 189*cdf0e10cSrcweir } 190*cdf0e10cSrcweir 191*cdf0e10cSrcweir /************************************************************************* 192*cdf0e10cSrcweir |* 193*cdf0e10cSrcweir |* Destruktor 194*cdf0e10cSrcweir |* 195*cdf0e10cSrcweir \************************************************************************/ 196*cdf0e10cSrcweir 197*cdf0e10cSrcweir ModifyPageUndoAction::~ModifyPageUndoAction() 198*cdf0e10cSrcweir { 199*cdf0e10cSrcweir } 200*cdf0e10cSrcweir 201*cdf0e10cSrcweir /************************************************************************* 202*cdf0e10cSrcweir |* 203*cdf0e10cSrcweir |* Kommentar liefern 204*cdf0e10cSrcweir |* 205*cdf0e10cSrcweir \************************************************************************/ 206*cdf0e10cSrcweir 207*cdf0e10cSrcweir String ModifyPageUndoAction::GetComment() const 208*cdf0e10cSrcweir { 209*cdf0e10cSrcweir return maComment; 210*cdf0e10cSrcweir } 211*cdf0e10cSrcweir 212*cdf0e10cSrcweir // -------------------------------------------------------------------- 213*cdf0e10cSrcweir 214*cdf0e10cSrcweir RenameLayoutTemplateUndoAction::RenameLayoutTemplateUndoAction( SdDrawDocument* pDocument, const String& rOldLayoutName, const String& rNewLayoutName ) 215*cdf0e10cSrcweir : SdUndoAction(pDocument) 216*cdf0e10cSrcweir , maOldName( rOldLayoutName ) 217*cdf0e10cSrcweir , maNewName( rNewLayoutName ) 218*cdf0e10cSrcweir , maComment(SdResId(STR_TITLE_RENAMESLIDE)) 219*cdf0e10cSrcweir { 220*cdf0e10cSrcweir sal_uInt16 nPos = maOldName.SearchAscii( SD_LT_SEPARATOR ); 221*cdf0e10cSrcweir if( nPos != (sal_uInt16)-1 ) 222*cdf0e10cSrcweir maOldName.Erase(nPos); 223*cdf0e10cSrcweir } 224*cdf0e10cSrcweir 225*cdf0e10cSrcweir void RenameLayoutTemplateUndoAction::Undo() 226*cdf0e10cSrcweir { 227*cdf0e10cSrcweir String aLayoutName( maNewName ); 228*cdf0e10cSrcweir aLayoutName.AppendAscii( RTL_CONSTASCII_STRINGPARAM( SD_LT_SEPARATOR )); 229*cdf0e10cSrcweir aLayoutName.Append( String(SdResId(STR_LAYOUT_OUTLINE))) ; 230*cdf0e10cSrcweir 231*cdf0e10cSrcweir mpDoc->RenameLayoutTemplate( aLayoutName, maOldName ); 232*cdf0e10cSrcweir } 233*cdf0e10cSrcweir 234*cdf0e10cSrcweir void RenameLayoutTemplateUndoAction::Redo() 235*cdf0e10cSrcweir { 236*cdf0e10cSrcweir String aLayoutName( maOldName ); 237*cdf0e10cSrcweir aLayoutName.AppendAscii( RTL_CONSTASCII_STRINGPARAM( SD_LT_SEPARATOR )); 238*cdf0e10cSrcweir aLayoutName.Append( String(SdResId(STR_LAYOUT_OUTLINE))) ; 239*cdf0e10cSrcweir 240*cdf0e10cSrcweir mpDoc->RenameLayoutTemplate( aLayoutName, maNewName ); 241*cdf0e10cSrcweir } 242*cdf0e10cSrcweir 243*cdf0e10cSrcweir String RenameLayoutTemplateUndoAction::GetComment() const 244*cdf0e10cSrcweir { 245*cdf0e10cSrcweir return maComment; 246*cdf0e10cSrcweir } 247*cdf0e10cSrcweir 248