xref: /aoo41x/main/sw/source/core/undo/unfmco.cxx (revision 808c4840)
1efeef26fSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3efeef26fSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4efeef26fSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5efeef26fSAndrew Rist  * distributed with this work for additional information
6efeef26fSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7efeef26fSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8efeef26fSAndrew Rist  * "License"); you may not use this file except in compliance
9efeef26fSAndrew Rist  * with the License.  You may obtain a copy of the License at
10efeef26fSAndrew Rist  *
11efeef26fSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12efeef26fSAndrew Rist  *
13efeef26fSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14efeef26fSAndrew Rist  * software distributed under the License is distributed on an
15efeef26fSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16efeef26fSAndrew Rist  * KIND, either express or implied.  See the License for the
17efeef26fSAndrew Rist  * specific language governing permissions and limitations
18efeef26fSAndrew Rist  * under the License.
19efeef26fSAndrew Rist  *
20efeef26fSAndrew Rist  *************************************************************/
21efeef26fSAndrew Rist 
22efeef26fSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_sw.hxx"
26cdf0e10cSrcweir 
27cdf0e10cSrcweir 
28cdf0e10cSrcweir 
29cdf0e10cSrcweir #include "doc.hxx"
30cdf0e10cSrcweir #include "swundo.hxx"			// fuer die UndoIds
31cdf0e10cSrcweir #include "pam.hxx"
32cdf0e10cSrcweir #include "ndtxt.hxx"
33cdf0e10cSrcweir 
34cdf0e10cSrcweir #include <UndoCore.hxx>
35cdf0e10cSrcweir #include "rolbck.hxx"
36cdf0e10cSrcweir 
37cdf0e10cSrcweir 
38cdf0e10cSrcweir //--------------------------------------------------
39cdf0e10cSrcweir 
40cdf0e10cSrcweir 
41cdf0e10cSrcweir // --> OD 2008-04-15 #refactorlists#
SwUndoFmtColl(const SwPaM & rRange,SwFmtColl * pColl,const bool bReset,const bool bResetListAttrs)42cdf0e10cSrcweir SwUndoFmtColl::SwUndoFmtColl( const SwPaM& rRange,
43cdf0e10cSrcweir                               SwFmtColl* pColl,
44cdf0e10cSrcweir                               const bool bReset,
45cdf0e10cSrcweir                               const bool bResetListAttrs )
46cdf0e10cSrcweir     : SwUndo( UNDO_SETFMTCOLL ),
47cdf0e10cSrcweir       SwUndRng( rRange ),
48cdf0e10cSrcweir       pHistory( new SwHistory ),
49cdf0e10cSrcweir       pFmtColl( pColl ),
50cdf0e10cSrcweir       mbReset( bReset ),
51cdf0e10cSrcweir       mbResetListAttrs( bResetListAttrs )
52cdf0e10cSrcweir // <--
53cdf0e10cSrcweir {
54cdf0e10cSrcweir     // --> FME 2004-08-06 #i31191#
55cdf0e10cSrcweir     if ( pColl )
56cdf0e10cSrcweir         aFmtName = pColl->GetName();
57cdf0e10cSrcweir     // <--
58cdf0e10cSrcweir }
59cdf0e10cSrcweir 
60cdf0e10cSrcweir 
~SwUndoFmtColl()61cdf0e10cSrcweir SwUndoFmtColl::~SwUndoFmtColl()
62cdf0e10cSrcweir {
63cdf0e10cSrcweir 	delete pHistory;
64cdf0e10cSrcweir }
65cdf0e10cSrcweir 
66cdf0e10cSrcweir 
UndoImpl(::sw::UndoRedoContext & rContext)67cdf0e10cSrcweir void SwUndoFmtColl::UndoImpl(::sw::UndoRedoContext & rContext)
68cdf0e10cSrcweir {
69cdf0e10cSrcweir     // restore old values
70cdf0e10cSrcweir     pHistory->TmpRollback(& rContext.GetDoc(), 0);
71cdf0e10cSrcweir 	pHistory->SetTmpEnd( pHistory->Count() );
72cdf0e10cSrcweir 
73cdf0e10cSrcweir 	// create cursor for undo range
74cdf0e10cSrcweir     AddUndoRedoPaM(rContext);
75cdf0e10cSrcweir }
76cdf0e10cSrcweir 
77cdf0e10cSrcweir 
RedoImpl(::sw::UndoRedoContext & rContext)78cdf0e10cSrcweir void SwUndoFmtColl::RedoImpl(::sw::UndoRedoContext & rContext)
79cdf0e10cSrcweir {
80cdf0e10cSrcweir     SwPaM & rPam = AddUndoRedoPaM(rContext);
81cdf0e10cSrcweir 
82cdf0e10cSrcweir     DoSetFmtColl(rContext.GetDoc(), rPam);
83cdf0e10cSrcweir }
84cdf0e10cSrcweir 
RepeatImpl(::sw::RepeatContext & rContext)85cdf0e10cSrcweir void SwUndoFmtColl::RepeatImpl(::sw::RepeatContext & rContext)
86cdf0e10cSrcweir {
87cdf0e10cSrcweir     DoSetFmtColl(rContext.GetDoc(), rContext.GetRepeatPaM());
88cdf0e10cSrcweir }
89cdf0e10cSrcweir 
DoSetFmtColl(SwDoc & rDoc,SwPaM & rPaM)90cdf0e10cSrcweir void SwUndoFmtColl::DoSetFmtColl(SwDoc & rDoc, SwPaM & rPaM)
91cdf0e10cSrcweir {
92cdf0e10cSrcweir 	// es kann nur eine TextFmtColl auf einen Bereich angewendet werden,
93cdf0e10cSrcweir 	// also erfrage auch nur in dem Array
94cdf0e10cSrcweir     sal_uInt16 const nPos = rDoc.GetTxtFmtColls()->GetPos(
95cdf0e10cSrcweir 													 (SwTxtFmtColl*)pFmtColl );
96cdf0e10cSrcweir     // does the format still exist?
97*808c4840SOliver-Rainer Wittmann     if ( USHRT_MAX != nPos )
98cdf0e10cSrcweir     {
99*808c4840SOliver-Rainer Wittmann         rDoc.SetTxtFmtColl(
100*808c4840SOliver-Rainer Wittmann             rPaM,
101*808c4840SOliver-Rainer Wittmann             (SwTxtFmtColl*) pFmtColl,
102*808c4840SOliver-Rainer Wittmann             mbReset,
103*808c4840SOliver-Rainer Wittmann             mbResetListAttrs );
104cdf0e10cSrcweir     }
105cdf0e10cSrcweir }
106cdf0e10cSrcweir 
GetRewriter() const107cdf0e10cSrcweir SwRewriter SwUndoFmtColl::GetRewriter() const
108cdf0e10cSrcweir {
109cdf0e10cSrcweir     SwRewriter aResult;
110cdf0e10cSrcweir 
111cdf0e10cSrcweir     // --> FME 2004-08-06 #i31191# Use stored format name instead of
112cdf0e10cSrcweir     // pFmtColl->GetName(), because pFmtColl does not have to be available
113cdf0e10cSrcweir     // anymore.
114cdf0e10cSrcweir     aResult.AddRule(UNDO_ARG1, aFmtName );
115cdf0e10cSrcweir     // <--
116cdf0e10cSrcweir 
117cdf0e10cSrcweir     return aResult;
118cdf0e10cSrcweir }
119cdf0e10cSrcweir 
120