1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef SW_UNDO_MOVE_HXX
25 #define SW_UNDO_MOVE_HXX
26 
27 #include <undobj.hxx>
28 
29 
30 class SwUndoSplitNode: public SwUndo
31 {
32     SwHistory* pHistory;
33     SwRedlineData* pRedlData;
34     sal_uLong nNode;
35     xub_StrLen nCntnt;
36     sal_Bool bTblFlag : 1;
37     sal_Bool bChkTblStt : 1;
38 
39 public:
40     SwUndoSplitNode( SwDoc* pDoc, const SwPosition& rPos, sal_Bool bChkTbl );
41 
42     virtual ~SwUndoSplitNode();
43 
44     virtual void UndoImpl( ::sw::UndoRedoContext & );
45     virtual void RedoImpl( ::sw::UndoRedoContext & );
46     virtual void RepeatImpl( ::sw::RepeatContext & );
47 
SetTblFlag()48     void SetTblFlag()       { bTblFlag = sal_True; }
49 };
50 
51 
52 class SwUndoMove : public SwUndo, private SwUndRng, private SwUndoSaveCntnt
53 {
54     // nDest.. - destination range of move (after move!)
55     // nIns..  - source Position of move (after move!)
56     // nMv..   - destination position of move (before move!); for REDO
57     sal_uLong nDestSttNode, nDestEndNode, nInsPosNode, nMvDestNode;
58     xub_StrLen nDestSttCntnt, nDestEndCntnt, nInsPosCntnt, nMvDestCntnt;
59 
60     sal_uInt16 nFtnStt; // StartPos of Footnotes in History
61 
62     sal_Bool bJoinNext : 1,
63          bJoinPrev : 1,
64          bMoveRange : 1;
65 
66     bool bMoveRedlines; // use DOC_MOVEREDLINES when calling SwDoc::Move
67 
68     void DelFtn( const SwPaM& );
69 
70 public:
71     SwUndoMove( const SwPaM&, const SwPosition& );
72     SwUndoMove( SwDoc* pDoc, const SwNodeRange&, const SwNodeIndex& );
73 
74     virtual void UndoImpl( ::sw::UndoRedoContext & );
75     virtual void RedoImpl( ::sw::UndoRedoContext & );
76 
77     /// set the destination range after the move
78     void SetDestRange( const SwPaM&, const SwPosition&, sal_Bool, sal_Bool );
79     void SetDestRange( const SwNodeIndex& rStt, const SwNodeIndex& rEnd,
80                         const SwNodeIndex& rInsPos );
81 
IsMoveRange() const82     sal_Bool IsMoveRange() const        { return bMoveRange; }
GetEndNode() const83     sal_uLong GetEndNode() const        { return nEndNode; }
GetDestSttNode() const84     sal_uLong GetDestSttNode() const    { return nDestSttNode; }
GetDestSttCntnt() const85     xub_StrLen GetDestSttCntnt() const  { return nDestSttCntnt; }
86 
SetMoveRedlines(bool b)87     void SetMoveRedlines( bool b )       { bMoveRedlines = b; }
88 
89 };
90 
91 #endif // SW_UNDO_MOVE_HXX
92 
93