diff options
Diffstat (limited to 'sd/source/ui/dlg/unchss.cxx')
-rw-r--r-- | sd/source/ui/dlg/unchss.cxx | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/sd/source/ui/dlg/unchss.cxx b/sd/source/ui/dlg/unchss.cxx new file mode 100644 index 000000000000..e04b4547fc66 --- /dev/null +++ b/sd/source/ui/dlg/unchss.cxx @@ -0,0 +1,178 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_sd.hxx" + + +#include <svl/itemset.hxx> +#include <svl/style.hxx> +#include <svl/smplhint.hxx> +#include <svx/svdobj.hxx> + +#include "unchss.hxx" + +#include "strings.hrc" +#include "glob.hxx" +#include "sdresid.hxx" +#include "drawdoc.hxx" +#include "stlsheet.hxx" +#include "glob.hrc" + + +TYPEINIT1(StyleSheetUndoAction, SdUndoAction); + + + +/************************************************************************* +|* +|* Konstruktor +|* +\************************************************************************/ + +StyleSheetUndoAction::StyleSheetUndoAction(SdDrawDocument* pTheDoc, + SfxStyleSheet* pTheStyleSheet, + const SfxItemSet* pTheNewItemSet) : + SdUndoAction(pTheDoc) +{ + DBG_ASSERT(pTheStyleSheet, "Undo ohne StyleSheet ???"); + pStyleSheet = pTheStyleSheet; + + // ItemSets anlegen; Vorsicht, das neue koennte aus einem anderen Pool + // stammen, also mitsamt seinen Items clonen + pNewSet = new SfxItemSet((SfxItemPool&)SdrObject::GetGlobalDrawObjectItemPool(), pTheNewItemSet->GetRanges()); + pTheDoc->MigrateItemSet( pTheNewItemSet, pNewSet, pTheDoc ); + + pOldSet = new SfxItemSet((SfxItemPool&)SdrObject::GetGlobalDrawObjectItemPool(),pStyleSheet->GetItemSet().GetRanges()); + pTheDoc->MigrateItemSet( &pStyleSheet->GetItemSet(), pOldSet, pTheDoc ); + + aComment = String(SdResId(STR_UNDO_CHANGE_PRES_OBJECT)); + String aName(pStyleSheet->GetName()); + + // Layoutnamen und Separator loeschen + String aSep( RTL_CONSTASCII_USTRINGPARAM( SD_LT_SEPARATOR ) ); + USHORT nPos = aName.Search(aSep); + if( nPos != STRING_NOTFOUND ) + aName.Erase(0, nPos + aSep.Len()); + + if (aName == String(SdResId(STR_LAYOUT_TITLE))) + { + aName = String(SdResId(STR_PSEUDOSHEET_TITLE)); + } + else if (aName == String(SdResId(STR_LAYOUT_SUBTITLE))) + { + aName = String(SdResId(STR_PSEUDOSHEET_SUBTITLE)); + } + else if (aName == String(SdResId(STR_LAYOUT_BACKGROUND))) + { + aName = String(SdResId(STR_PSEUDOSHEET_BACKGROUND)); + } + else if (aName == String(SdResId(STR_LAYOUT_BACKGROUNDOBJECTS))) + { + aName = String(SdResId(STR_PSEUDOSHEET_BACKGROUNDOBJECTS)); + } + else if (aName == String(SdResId(STR_LAYOUT_NOTES))) + { + aName = String(SdResId(STR_PSEUDOSHEET_NOTES)); + } + else + { + String aOutlineStr(SdResId(STR_PSEUDOSHEET_OUTLINE)); + nPos = aName.Search(aOutlineStr); + if (nPos != STRING_NOTFOUND) + { + String aNumStr(aName.Copy(aOutlineStr.Len())); + aName = String(SdResId(STR_LAYOUT_OUTLINE)); + aName += aNumStr; + } + } + + // Platzhalter durch Vorlagennamen ersetzen + nPos = aComment.Search(sal_Unicode('$')); + aComment.Erase(nPos, 1); + aComment.Insert(aName, nPos); +} + + +/************************************************************************* +|* +|* Undo() +|* +\************************************************************************/ + +void StyleSheetUndoAction::Undo() +{ + SfxItemSet aNewSet( mpDoc->GetItemPool(), pOldSet->GetRanges() ); + mpDoc->MigrateItemSet( pOldSet, &aNewSet, mpDoc ); + + pStyleSheet->GetItemSet().Set(aNewSet); + if( pStyleSheet->GetFamily() == SD_STYLE_FAMILY_PSEUDO ) + ( (SdStyleSheet*)pStyleSheet )->GetRealStyleSheet()->Broadcast(SfxSimpleHint(SFX_HINT_DATACHANGED)); + else + pStyleSheet->Broadcast(SfxSimpleHint(SFX_HINT_DATACHANGED)); +} + +/************************************************************************* +|* +|* Redo() +|* +\************************************************************************/ + +void StyleSheetUndoAction::Redo() +{ + SfxItemSet aNewSet( mpDoc->GetItemPool(), pOldSet->GetRanges() ); + mpDoc->MigrateItemSet( pNewSet, &aNewSet, mpDoc ); + + pStyleSheet->GetItemSet().Set(aNewSet); + if( pStyleSheet->GetFamily() == SD_STYLE_FAMILY_PSEUDO ) + ( (SdStyleSheet*)pStyleSheet )->GetRealStyleSheet()->Broadcast(SfxSimpleHint(SFX_HINT_DATACHANGED)); + else + pStyleSheet->Broadcast(SfxSimpleHint(SFX_HINT_DATACHANGED)); +} + +/************************************************************************* +|* +|* Destruktor +|* +\************************************************************************/ + +StyleSheetUndoAction::~StyleSheetUndoAction() +{ + delete pNewSet; + delete pOldSet; +} + +/************************************************************************* +|* +|* Kommentar liefern +|* +\************************************************************************/ + +String StyleSheetUndoAction::GetComment() const +{ + return aComment; +} |