1*190118d0SAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3*190118d0SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4*190118d0SAndrew Rist * or more contributor license agreements. See the NOTICE file
5*190118d0SAndrew Rist * distributed with this work for additional information
6*190118d0SAndrew Rist * regarding copyright ownership. The ASF licenses this file
7*190118d0SAndrew Rist * to you under the Apache License, Version 2.0 (the
8*190118d0SAndrew Rist * "License"); you may not use this file except in compliance
9*190118d0SAndrew Rist * with the License. You may obtain a copy of the License at
10*190118d0SAndrew Rist *
11*190118d0SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12*190118d0SAndrew Rist *
13*190118d0SAndrew Rist * Unless required by applicable law or agreed to in writing,
14*190118d0SAndrew Rist * software distributed under the License is distributed on an
15*190118d0SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*190118d0SAndrew Rist * KIND, either express or implied. See the License for the
17*190118d0SAndrew Rist * specific language governing permissions and limitations
18*190118d0SAndrew Rist * under the License.
19*190118d0SAndrew Rist *
20*190118d0SAndrew Rist *************************************************************/
21*190118d0SAndrew Rist
22*190118d0SAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_editeng.hxx"
26cdf0e10cSrcweir
27cdf0e10cSrcweir #include <svl/intitem.hxx>
28cdf0e10cSrcweir #include <editeng/editeng.hxx>
29cdf0e10cSrcweir #include <editeng/editview.hxx>
30cdf0e10cSrcweir #include <editeng/editdata.hxx>
31cdf0e10cSrcweir #include <editeng/eerdll.hxx>
32cdf0e10cSrcweir #include <editeng/lrspitem.hxx>
33cdf0e10cSrcweir #include <editeng/fhgtitem.hxx>
34cdf0e10cSrcweir
35cdf0e10cSrcweir #define _OUTLINER_CXX
36cdf0e10cSrcweir #include <editeng/outliner.hxx>
37cdf0e10cSrcweir #include <outlundo.hxx>
38cdf0e10cSrcweir
39cdf0e10cSrcweir
OutlinerUndoBase(sal_uInt16 _nId,Outliner * pOutliner)40cdf0e10cSrcweir OutlinerUndoBase::OutlinerUndoBase( sal_uInt16 _nId, Outliner* pOutliner )
41cdf0e10cSrcweir : EditUndo( _nId, NULL )
42cdf0e10cSrcweir {
43cdf0e10cSrcweir DBG_ASSERT( pOutliner, "Undo: Outliner?!" );
44cdf0e10cSrcweir mpOutliner = pOutliner;
45cdf0e10cSrcweir }
46cdf0e10cSrcweir
OutlinerUndoChangeParaFlags(Outliner * pOutliner,sal_uInt16 nPara,sal_uInt16 nOldFlags,sal_uInt16 nNewFlags)47cdf0e10cSrcweir OutlinerUndoChangeParaFlags::OutlinerUndoChangeParaFlags( Outliner* pOutliner, sal_uInt16 nPara, sal_uInt16 nOldFlags, sal_uInt16 nNewFlags )
48cdf0e10cSrcweir : OutlinerUndoBase( OLUNDO_DEPTH, pOutliner )
49cdf0e10cSrcweir {
50cdf0e10cSrcweir mnPara = nPara;
51cdf0e10cSrcweir mnOldFlags = nOldFlags;
52cdf0e10cSrcweir mnNewFlags = nNewFlags;
53cdf0e10cSrcweir }
54cdf0e10cSrcweir
Undo()55cdf0e10cSrcweir void OutlinerUndoChangeParaFlags::Undo()
56cdf0e10cSrcweir {
57cdf0e10cSrcweir ImplChangeFlags( mnOldFlags );
58cdf0e10cSrcweir }
59cdf0e10cSrcweir
Redo()60cdf0e10cSrcweir void OutlinerUndoChangeParaFlags::Redo()
61cdf0e10cSrcweir {
62cdf0e10cSrcweir ImplChangeFlags( mnNewFlags );
63cdf0e10cSrcweir }
64cdf0e10cSrcweir
ImplChangeFlags(sal_uInt16 nFlags)65cdf0e10cSrcweir void OutlinerUndoChangeParaFlags::ImplChangeFlags( sal_uInt16 nFlags )
66cdf0e10cSrcweir {
67cdf0e10cSrcweir Outliner* pOutliner = GetOutliner();
68cdf0e10cSrcweir Paragraph* pPara = pOutliner->GetParagraph( mnPara );
69cdf0e10cSrcweir if( pPara )
70cdf0e10cSrcweir {
71cdf0e10cSrcweir pOutliner->nDepthChangedHdlPrevDepth = pPara->GetDepth();
72cdf0e10cSrcweir pOutliner->mnDepthChangeHdlPrevFlags = pPara->nFlags;
73cdf0e10cSrcweir pOutliner->pHdlParagraph = pPara;
74cdf0e10cSrcweir
75cdf0e10cSrcweir pPara->nFlags = nFlags;
76cdf0e10cSrcweir pOutliner->DepthChangedHdl();
77cdf0e10cSrcweir }
78cdf0e10cSrcweir }
79cdf0e10cSrcweir
OutlinerUndoChangeParaNumberingRestart(Outliner * pOutliner,sal_uInt16 nPara,sal_Int16 nOldNumberingStartValue,sal_Int16 nNewNumberingStartValue,sal_Bool bOldParaIsNumberingRestart,sal_Bool bNewParaIsNumberingRestart)80cdf0e10cSrcweir OutlinerUndoChangeParaNumberingRestart::OutlinerUndoChangeParaNumberingRestart( Outliner* pOutliner, sal_uInt16 nPara,
81cdf0e10cSrcweir sal_Int16 nOldNumberingStartValue, sal_Int16 nNewNumberingStartValue,
82cdf0e10cSrcweir sal_Bool bOldParaIsNumberingRestart, sal_Bool bNewParaIsNumberingRestart )
83cdf0e10cSrcweir : OutlinerUndoBase( OLUNDO_DEPTH, pOutliner )
84cdf0e10cSrcweir {
85cdf0e10cSrcweir mnPara = nPara;
86cdf0e10cSrcweir
87cdf0e10cSrcweir maUndoData.mnNumberingStartValue = nOldNumberingStartValue;
88cdf0e10cSrcweir maUndoData.mbParaIsNumberingRestart = bOldParaIsNumberingRestart;
89cdf0e10cSrcweir maRedoData.mnNumberingStartValue = nNewNumberingStartValue;
90cdf0e10cSrcweir maRedoData.mbParaIsNumberingRestart = bNewParaIsNumberingRestart;
91cdf0e10cSrcweir }
92cdf0e10cSrcweir
Undo()93cdf0e10cSrcweir void OutlinerUndoChangeParaNumberingRestart::Undo()
94cdf0e10cSrcweir {
95cdf0e10cSrcweir ImplApplyData( maUndoData );
96cdf0e10cSrcweir }
97cdf0e10cSrcweir
Redo()98cdf0e10cSrcweir void OutlinerUndoChangeParaNumberingRestart::Redo()
99cdf0e10cSrcweir {
100cdf0e10cSrcweir ImplApplyData( maRedoData );
101cdf0e10cSrcweir }
102cdf0e10cSrcweir
ImplApplyData(const ParaRestartData & rData)103cdf0e10cSrcweir void OutlinerUndoChangeParaNumberingRestart::ImplApplyData( const ParaRestartData& rData )
104cdf0e10cSrcweir {
105cdf0e10cSrcweir Outliner* pOutliner = GetOutliner();
106cdf0e10cSrcweir pOutliner->SetNumberingStartValue( mnPara, rData.mnNumberingStartValue );
107cdf0e10cSrcweir pOutliner->SetParaIsNumberingRestart( mnPara, rData.mbParaIsNumberingRestart );
108cdf0e10cSrcweir }
109cdf0e10cSrcweir
OutlinerUndoChangeDepth(Outliner * pOutliner,sal_uInt16 nPara,sal_Int16 nOldDepth,sal_Int16 nNewDepth)110cdf0e10cSrcweir OutlinerUndoChangeDepth::OutlinerUndoChangeDepth( Outliner* pOutliner, sal_uInt16 nPara, sal_Int16 nOldDepth, sal_Int16 nNewDepth )
111cdf0e10cSrcweir : OutlinerUndoBase( OLUNDO_DEPTH, pOutliner )
112cdf0e10cSrcweir {
113cdf0e10cSrcweir mnPara = nPara;
114cdf0e10cSrcweir mnOldDepth = nOldDepth;
115cdf0e10cSrcweir mnNewDepth = nNewDepth;
116cdf0e10cSrcweir }
117cdf0e10cSrcweir
Undo()118cdf0e10cSrcweir void OutlinerUndoChangeDepth::Undo()
119cdf0e10cSrcweir {
120cdf0e10cSrcweir GetOutliner()->ImplInitDepth( mnPara, mnOldDepth, sal_False );
121cdf0e10cSrcweir }
122cdf0e10cSrcweir
Redo()123cdf0e10cSrcweir void OutlinerUndoChangeDepth::Redo()
124cdf0e10cSrcweir {
125cdf0e10cSrcweir GetOutliner()->ImplInitDepth( mnPara, mnNewDepth, sal_False );
126cdf0e10cSrcweir }
127cdf0e10cSrcweir
Repeat()128cdf0e10cSrcweir void OutlinerUndoChangeDepth::Repeat()
129cdf0e10cSrcweir {
130cdf0e10cSrcweir DBG_ERROR( "Repeat not implemented!" );
131cdf0e10cSrcweir }
132cdf0e10cSrcweir
133cdf0e10cSrcweir
OutlinerUndoCheckPara(Outliner * pOutliner,sal_uInt16 nPara)134cdf0e10cSrcweir OutlinerUndoCheckPara::OutlinerUndoCheckPara( Outliner* pOutliner, sal_uInt16 nPara )
135cdf0e10cSrcweir : OutlinerUndoBase( OLUNDO_DEPTH, pOutliner )
136cdf0e10cSrcweir {
137cdf0e10cSrcweir mnPara = nPara;
138cdf0e10cSrcweir }
139cdf0e10cSrcweir
Undo()140cdf0e10cSrcweir void OutlinerUndoCheckPara::Undo()
141cdf0e10cSrcweir {
142cdf0e10cSrcweir Paragraph* pPara = GetOutliner()->GetParagraph( mnPara );
143cdf0e10cSrcweir pPara->Invalidate();
144cdf0e10cSrcweir GetOutliner()->ImplCalcBulletText( mnPara, sal_False, sal_False );
145cdf0e10cSrcweir }
146cdf0e10cSrcweir
Redo()147cdf0e10cSrcweir void OutlinerUndoCheckPara::Redo()
148cdf0e10cSrcweir {
149cdf0e10cSrcweir Paragraph* pPara = GetOutliner()->GetParagraph( mnPara );
150cdf0e10cSrcweir pPara->Invalidate();
151cdf0e10cSrcweir GetOutliner()->ImplCalcBulletText( mnPara, sal_False, sal_False );
152cdf0e10cSrcweir }
153cdf0e10cSrcweir
Repeat()154cdf0e10cSrcweir void OutlinerUndoCheckPara::Repeat()
155cdf0e10cSrcweir {
156cdf0e10cSrcweir DBG_ERROR( "Repeat not implemented!" );
157cdf0e10cSrcweir }
158cdf0e10cSrcweir
159cdf0e10cSrcweir DBG_NAME(OLUndoExpand);
160cdf0e10cSrcweir
OLUndoExpand(Outliner * pOut,sal_uInt16 _nId)161cdf0e10cSrcweir OLUndoExpand::OLUndoExpand(Outliner* pOut, sal_uInt16 _nId )
162cdf0e10cSrcweir : EditUndo( _nId, 0 )
163cdf0e10cSrcweir {
164cdf0e10cSrcweir DBG_CTOR(OLUndoExpand,0);
165cdf0e10cSrcweir DBG_ASSERT(pOut,"Undo:No Outliner");
166cdf0e10cSrcweir pOutliner = pOut;
167cdf0e10cSrcweir nCount = 0;
168cdf0e10cSrcweir pParas = 0;
169cdf0e10cSrcweir }
170cdf0e10cSrcweir
171cdf0e10cSrcweir
~OLUndoExpand()172cdf0e10cSrcweir OLUndoExpand::~OLUndoExpand()
173cdf0e10cSrcweir {
174cdf0e10cSrcweir DBG_DTOR(OLUndoExpand,0);
175cdf0e10cSrcweir delete pParas;
176cdf0e10cSrcweir }
177cdf0e10cSrcweir
178cdf0e10cSrcweir
Restore(sal_Bool bUndo)179cdf0e10cSrcweir void OLUndoExpand::Restore( sal_Bool bUndo )
180cdf0e10cSrcweir {
181cdf0e10cSrcweir DBG_CHKTHIS(OLUndoExpand,0);
182cdf0e10cSrcweir DBG_ASSERT(pOutliner,"Undo:No Outliner");
183cdf0e10cSrcweir DBG_ASSERT(pOutliner->pEditEngine,"Outliner already deleted");
184cdf0e10cSrcweir Paragraph* pPara;
185cdf0e10cSrcweir
186cdf0e10cSrcweir sal_Bool bExpand = sal_False;
187cdf0e10cSrcweir sal_uInt16 _nId = GetId();
188cdf0e10cSrcweir if((_nId == OLUNDO_EXPAND && !bUndo) || (_nId == OLUNDO_COLLAPSE && bUndo))
189cdf0e10cSrcweir bExpand = sal_True;
190cdf0e10cSrcweir if( !pParas )
191cdf0e10cSrcweir {
192cdf0e10cSrcweir pPara = pOutliner->GetParagraph( (sal_uLong)nCount );
193cdf0e10cSrcweir if( bExpand )
194cdf0e10cSrcweir pOutliner->Expand( pPara );
195cdf0e10cSrcweir else
196cdf0e10cSrcweir pOutliner->Collapse( pPara );
197cdf0e10cSrcweir }
198cdf0e10cSrcweir else
199cdf0e10cSrcweir {
200cdf0e10cSrcweir for( sal_uInt16 nIdx = 0; nIdx < nCount; nIdx++ )
201cdf0e10cSrcweir {
202cdf0e10cSrcweir pPara = pOutliner->GetParagraph( (sal_uLong)(pParas[nIdx]) );
203cdf0e10cSrcweir if( bExpand )
204cdf0e10cSrcweir pOutliner->Expand( pPara );
205cdf0e10cSrcweir else
206cdf0e10cSrcweir pOutliner->Collapse( pPara );
207cdf0e10cSrcweir }
208cdf0e10cSrcweir }
209cdf0e10cSrcweir }
210cdf0e10cSrcweir
211cdf0e10cSrcweir
Undo()212cdf0e10cSrcweir void OLUndoExpand::Undo()
213cdf0e10cSrcweir {
214cdf0e10cSrcweir DBG_CHKTHIS(OLUndoExpand,0);
215cdf0e10cSrcweir Restore( sal_True );
216cdf0e10cSrcweir }
217cdf0e10cSrcweir
218cdf0e10cSrcweir
Redo()219cdf0e10cSrcweir void OLUndoExpand::Redo()
220cdf0e10cSrcweir {
221cdf0e10cSrcweir DBG_CHKTHIS(OLUndoExpand,0);
222cdf0e10cSrcweir Restore( sal_False );
223cdf0e10cSrcweir }
224cdf0e10cSrcweir
225cdf0e10cSrcweir
Repeat()226cdf0e10cSrcweir void OLUndoExpand::Repeat()
227cdf0e10cSrcweir {
228cdf0e10cSrcweir DBG_CHKTHIS(OLUndoExpand,0);
229cdf0e10cSrcweir DBG_ERROR("Not implemented");
230cdf0e10cSrcweir }
231