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