xref: /aoo41x/main/sw/source/core/inc/UndoDelete.hxx (revision dec99bbd)
11d2dbeb0SAndrew Rist /**************************************************************
21d2dbeb0SAndrew Rist  *
31d2dbeb0SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
41d2dbeb0SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
51d2dbeb0SAndrew Rist  * distributed with this work for additional information
61d2dbeb0SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
71d2dbeb0SAndrew Rist  * to you under the Apache License, Version 2.0 (the
81d2dbeb0SAndrew Rist  * "License"); you may not use this file except in compliance
91d2dbeb0SAndrew Rist  * with the License.  You may obtain a copy of the License at
101d2dbeb0SAndrew Rist  *
111d2dbeb0SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
121d2dbeb0SAndrew Rist  *
131d2dbeb0SAndrew Rist  * Unless required by applicable law or agreed to in writing,
141d2dbeb0SAndrew Rist  * software distributed under the License is distributed on an
151d2dbeb0SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
161d2dbeb0SAndrew Rist  * KIND, either express or implied.  See the License for the
171d2dbeb0SAndrew Rist  * specific language governing permissions and limitations
181d2dbeb0SAndrew Rist  * under the License.
191d2dbeb0SAndrew Rist  *
201d2dbeb0SAndrew Rist  *************************************************************/
211d2dbeb0SAndrew Rist 
221d2dbeb0SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef SW_UNDO_DELETE_HXX
25cdf0e10cSrcweir #define SW_UNDO_DELETE_HXX
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <undobj.hxx>
28cdf0e10cSrcweir 
29cdf0e10cSrcweir #include <tools/mempool.hxx>
30cdf0e10cSrcweir 
31cdf0e10cSrcweir 
32cdf0e10cSrcweir class SwRedlineSaveDatas;
33cdf0e10cSrcweir class SwTxtNode;
34cdf0e10cSrcweir 
35cdf0e10cSrcweir namespace sfx2 {
36cdf0e10cSrcweir     class MetadatableUndo;
37cdf0e10cSrcweir }
38cdf0e10cSrcweir 
39cdf0e10cSrcweir 
40cdf0e10cSrcweir class SwUndoDelete
41cdf0e10cSrcweir     : public SwUndo
42cdf0e10cSrcweir     , private SwUndRng
43cdf0e10cSrcweir     , private SwUndoSaveCntnt
44cdf0e10cSrcweir {
45cdf0e10cSrcweir     SwNodeIndex* pMvStt;            // Position of Nodes in UndoNodes-Array
46cdf0e10cSrcweir     String *pSttStr, *pEndStr;
47cdf0e10cSrcweir     SwRedlineData* pRedlData;
48cdf0e10cSrcweir     SwRedlineSaveDatas* pRedlSaveData;
49cdf0e10cSrcweir     ::boost::shared_ptr< ::sfx2::MetadatableUndo > m_pMetadataUndoStart;
50cdf0e10cSrcweir     ::boost::shared_ptr< ::sfx2::MetadatableUndo > m_pMetadataUndoEnd;
51cdf0e10cSrcweir 
52cdf0e10cSrcweir     String sTableName;
53cdf0e10cSrcweir 
54cdf0e10cSrcweir     sal_uLong nNode;
55cdf0e10cSrcweir     sal_uLong nNdDiff;           // difference of Nodes before/after Delete
56cdf0e10cSrcweir     sal_uLong nSectDiff;         // diff. of Nodes before/after Move w/ SectionNodes
57cdf0e10cSrcweir     sal_uLong nReplaceDummy;     // diff. to a temporary dummy object
58cdf0e10cSrcweir     sal_uInt16 nSetPos;
59cdf0e10cSrcweir 
60cdf0e10cSrcweir     sal_Bool bGroup : 1;         // TRUE: is already Grouped; see CanGrouping()
61cdf0e10cSrcweir     sal_Bool bBackSp : 1;        // TRUE: if Grouped and preceding content deleted
62cdf0e10cSrcweir     sal_Bool bJoinNext: 1;       // TRUE: if range is selected forwards
63cdf0e10cSrcweir     sal_Bool bTblDelLastNd : 1;  // TRUE: TextNode following Table inserted/deleted
64cdf0e10cSrcweir     sal_Bool bDelFullPara : 1;   // TRUE: entire Nodes were deleted
65cdf0e10cSrcweir     sal_Bool bResetPgDesc : 1;   // TRUE: reset PgDsc on following node
66cdf0e10cSrcweir     sal_Bool bResetPgBrk : 1;    // TRUE: reset PgBreak on following node
67cdf0e10cSrcweir     sal_Bool bFromTableCopy : 1; // TRUE: called by SwUndoTblCpyTbl
68cdf0e10cSrcweir 
69cdf0e10cSrcweir     sal_Bool SaveCntnt( const SwPosition* pStt, const SwPosition* pEnd,
70cdf0e10cSrcweir                     SwTxtNode* pSttTxtNd, SwTxtNode* pEndTxtNd );
71cdf0e10cSrcweir public:
72*dec99bbdSOliver-Rainer Wittmann     SwUndoDelete(
73*dec99bbdSOliver-Rainer Wittmann         SwPaM&,
74*dec99bbdSOliver-Rainer Wittmann         sal_Bool bFullPara = sal_False,
75*dec99bbdSOliver-Rainer Wittmann         sal_Bool bCalledByTblCpy = sal_False );
76cdf0e10cSrcweir     virtual ~SwUndoDelete();
77cdf0e10cSrcweir 
78cdf0e10cSrcweir     virtual void UndoImpl( ::sw::UndoRedoContext & );
79cdf0e10cSrcweir     virtual void RedoImpl( ::sw::UndoRedoContext & );
80cdf0e10cSrcweir     virtual void RepeatImpl( ::sw::RepeatContext & );
81cdf0e10cSrcweir 
82cdf0e10cSrcweir     // #111827#
83cdf0e10cSrcweir     /**
84cdf0e10cSrcweir        Returns rewriter for this undo object.
85cdf0e10cSrcweir 
86cdf0e10cSrcweir        The rewriter consists of the following rule:
87cdf0e10cSrcweir 
88cdf0e10cSrcweir            $1 -> '<deleted text>'
89cdf0e10cSrcweir 
90cdf0e10cSrcweir        <deleted text> is shortened to nUndoStringLength characters.
91cdf0e10cSrcweir 
92cdf0e10cSrcweir        @return rewriter for this undo object
93cdf0e10cSrcweir     */
94cdf0e10cSrcweir     virtual SwRewriter GetRewriter() const;
95cdf0e10cSrcweir 
96cdf0e10cSrcweir     sal_Bool CanGrouping( SwDoc*, const SwPaM& );
97cdf0e10cSrcweir 
SetTblDelLastNd()98cdf0e10cSrcweir     void SetTblDelLastNd()      { bTblDelLastNd = sal_True; }
99cdf0e10cSrcweir 
100cdf0e10cSrcweir     // for PageDesc/PageBreak Attributes of a table
SetPgBrkFlags(sal_Bool bPageBreak,sal_Bool bPageDesc)101cdf0e10cSrcweir     void SetPgBrkFlags( sal_Bool bPageBreak, sal_Bool bPageDesc )
102cdf0e10cSrcweir         { bResetPgDesc = bPageDesc; bResetPgBrk = bPageBreak; }
103cdf0e10cSrcweir 
104cdf0e10cSrcweir     void SetTableName(const String & rName);
105cdf0e10cSrcweir 
106cdf0e10cSrcweir     // SwUndoTblCpyTbl needs this information:
IsDelFullPara() const107cdf0e10cSrcweir     sal_Bool IsDelFullPara() const { return bDelFullPara; }
108cdf0e10cSrcweir 
109cdf0e10cSrcweir     DECL_FIXEDMEMPOOL_NEWDEL(SwUndoDelete)
110cdf0e10cSrcweir };
111cdf0e10cSrcweir 
112cdf0e10cSrcweir #endif // SW_UNDO_DELETE_HXX
113cdf0e10cSrcweir 
114