| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| // MARKER(update_precomp.py): autogen include statement, do not remove |
| #include "precompiled_sd.hxx" |
| |
| #ifndef _SVDLAYER |
| #include <svx/svdlayer.hxx> |
| #endif |
| #include <sfx2/dispatch.hxx> |
| #include <sfx2/viewfrm.hxx> |
| |
| |
| #include "strings.hrc" |
| #include "glob.hxx" |
| #include "glob.hrc" // STR_BCKGRND, STR_BCKGRNDOBJ |
| #include "app.hrc" // SID_SWITCHPAGE |
| |
| #include "unmodpg.hxx" |
| #include "sdpage.hxx" |
| #include "sdresid.hxx" |
| #include "drawdoc.hxx" |
| |
| |
| TYPEINIT1(ModifyPageUndoAction, SdUndoAction); |
| |
| |
| /************************************************************************* |
| |* |
| |* Konstruktor |
| |* |
| \************************************************************************/ |
| |
| ModifyPageUndoAction::ModifyPageUndoAction( |
| SdDrawDocument* pTheDoc, |
| SdPage* pThePage, |
| String aTheNewName, |
| AutoLayout eTheNewAutoLayout, |
| sal_Bool bTheNewBckgrndVisible, |
| sal_Bool bTheNewBckgrndObjsVisible) |
| : SdUndoAction(pTheDoc) |
| { |
| DBG_ASSERT(pThePage, "Undo ohne Seite ???"); |
| |
| mpPage = pThePage; |
| maNewName = aTheNewName; |
| meNewAutoLayout = eTheNewAutoLayout; |
| mbNewBckgrndVisible = bTheNewBckgrndVisible; |
| mbNewBckgrndObjsVisible = bTheNewBckgrndObjsVisible; |
| |
| meOldAutoLayout = mpPage->GetAutoLayout(); |
| |
| if (!mpPage->IsMasterPage()) |
| { |
| maOldName = mpPage->GetName(); |
| SdrLayerAdmin& rLayerAdmin = mpDoc->GetLayerAdmin(); |
| sal_uInt8 aBckgrnd = rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRND)), sal_False); |
| sal_uInt8 aBckgrndObj = rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRNDOBJ)), sal_False); |
| SetOfByte aVisibleLayers = mpPage->TRG_GetMasterPageVisibleLayers(); |
| |
| mbOldBckgrndVisible = aVisibleLayers.IsSet(aBckgrnd); |
| mbOldBckgrndObjsVisible = aVisibleLayers.IsSet(aBckgrndObj); |
| } |
| |
| maComment = String(SdResId(STR_UNDO_MODIFY_PAGE)); |
| } |
| |
| /************************************************************************* |
| |* |
| |* Undo() |
| |* |
| \************************************************************************/ |
| #include <svx/svdviter.hxx> |
| #include <svx/svdview.hxx> |
| void ModifyPageUndoAction::Undo() |
| { |
| // #94637# invalidate Selection, there could be objects deleted in tis UNDO |
| // which are no longer allowed to be selected then. |
| SdrViewIter aIter(mpPage); |
| SdrView* pView = aIter.FirstView(); |
| |
| while(pView) |
| { |
| if(pView->AreObjectsMarked()) |
| pView->UnmarkAll(); |
| pView = aIter.NextView(); |
| } |
| |
| mpPage->SetAutoLayout( meOldAutoLayout ); |
| |
| if (!mpPage->IsMasterPage()) |
| { |
| if (mpPage->GetName() != maOldName) |
| { |
| mpPage->SetName(maOldName); |
| |
| if (mpPage->GetPageKind() == PK_STANDARD) |
| { |
| SdPage* pNotesPage = (SdPage*)mpDoc->GetPage(mpPage->GetPageNum() + 1); |
| pNotesPage->SetName(maOldName); |
| } |
| } |
| |
| SdrLayerAdmin& rLayerAdmin = mpDoc->GetLayerAdmin(); |
| sal_uInt8 aBckgrnd = rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRND)), sal_False); |
| sal_uInt8 aBckgrndObj = rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRNDOBJ)), sal_False); |
| SetOfByte aVisibleLayers; |
| aVisibleLayers.Set(aBckgrnd, mbOldBckgrndVisible); |
| aVisibleLayers.Set(aBckgrndObj, mbOldBckgrndObjsVisible); |
| mpPage->TRG_SetMasterPageVisibleLayers(aVisibleLayers); |
| } |
| |
| // Redisplay |
| SfxViewFrame::Current()->GetDispatcher()->Execute( |
| SID_SWITCHPAGE, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD ); |
| } |
| |
| /************************************************************************* |
| |* |
| |* Redo() |
| |* |
| \************************************************************************/ |
| |
| void ModifyPageUndoAction::Redo() |
| { |
| // #94637# invalidate Selection, there could be objects deleted in tis UNDO |
| // which are no longer allowed to be selected then. |
| SdrViewIter aIter(mpPage); |
| SdrView* pView = aIter.FirstView(); |
| |
| while(pView) |
| { |
| if(pView->AreObjectsMarked()) |
| pView->UnmarkAll(); |
| pView = aIter.NextView(); |
| } |
| |
| mpPage->meAutoLayout = meNewAutoLayout; |
| |
| if (!mpPage->IsMasterPage()) |
| { |
| if (mpPage->GetName() != maNewName) |
| { |
| mpPage->SetName(maNewName); |
| |
| if (mpPage->GetPageKind() == PK_STANDARD) |
| { |
| SdPage* pNotesPage = (SdPage*)mpDoc->GetPage(mpPage->GetPageNum() + 1); |
| pNotesPage->SetName(maNewName); |
| } |
| } |
| |
| SdrLayerAdmin& rLayerAdmin = mpDoc->GetLayerAdmin(); |
| sal_uInt8 aBckgrnd = rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRND)), sal_False); |
| sal_uInt8 aBckgrndObj = rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRNDOBJ)), sal_False); |
| SetOfByte aVisibleLayers; |
| aVisibleLayers.Set(aBckgrnd, mbNewBckgrndVisible); |
| aVisibleLayers.Set(aBckgrndObj, mbNewBckgrndObjsVisible); |
| mpPage->TRG_SetMasterPageVisibleLayers(aVisibleLayers); |
| } |
| |
| // Redisplay |
| SfxViewFrame::Current()->GetDispatcher()->Execute( |
| SID_SWITCHPAGE, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD ); |
| } |
| |
| /************************************************************************* |
| |* |
| |* Destruktor |
| |* |
| \************************************************************************/ |
| |
| ModifyPageUndoAction::~ModifyPageUndoAction() |
| { |
| } |
| |
| /************************************************************************* |
| |* |
| |* Kommentar liefern |
| |* |
| \************************************************************************/ |
| |
| String ModifyPageUndoAction::GetComment() const |
| { |
| return maComment; |
| } |
| |
| // -------------------------------------------------------------------- |
| |
| RenameLayoutTemplateUndoAction::RenameLayoutTemplateUndoAction( SdDrawDocument* pDocument, const String& rOldLayoutName, const String& rNewLayoutName ) |
| : SdUndoAction(pDocument) |
| , maOldName( rOldLayoutName ) |
| , maNewName( rNewLayoutName ) |
| , maComment(SdResId(STR_TITLE_RENAMESLIDE)) |
| { |
| sal_uInt16 nPos = maOldName.SearchAscii( SD_LT_SEPARATOR ); |
| if( nPos != (sal_uInt16)-1 ) |
| maOldName.Erase(nPos); |
| } |
| |
| void RenameLayoutTemplateUndoAction::Undo() |
| { |
| String aLayoutName( maNewName ); |
| aLayoutName.AppendAscii( RTL_CONSTASCII_STRINGPARAM( SD_LT_SEPARATOR )); |
| aLayoutName.Append( String(SdResId(STR_LAYOUT_OUTLINE))) ; |
| |
| mpDoc->RenameLayoutTemplate( aLayoutName, maOldName ); |
| } |
| |
| void RenameLayoutTemplateUndoAction::Redo() |
| { |
| String aLayoutName( maOldName ); |
| aLayoutName.AppendAscii( RTL_CONSTASCII_STRINGPARAM( SD_LT_SEPARATOR )); |
| aLayoutName.Append( String(SdResId(STR_LAYOUT_OUTLINE))) ; |
| |
| mpDoc->RenameLayoutTemplate( aLayoutName, maNewName ); |
| } |
| |
| String RenameLayoutTemplateUndoAction::GetComment() const |
| { |
| return maComment; |
| } |
| |