xref: /trunk/main/sw/source/core/inc/UndoSection.hxx (revision cdf0e10c)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 #ifndef SW_UNDO_SECTION_HXX
29 #define SW_UNDO_SECTION_HXX
30 
31 #include <undobj.hxx>
32 
33 #include <memory>
34 
35 #include <swdllapi.h>
36 
37 
38 class SfxItemSet;
39 class SwTxtNode;
40 class SwSectionData;
41 class SwSectionFmt;
42 class SwTOXBase;
43 
44 
45 //------------ Undo of Insert-/Delete-Section ----------------------
46 
47 class SwUndoInsSection : public SwUndo, private SwUndRng
48 {
49 private:
50     const ::std::auto_ptr<SwSectionData> m_pSectionData;
51     const ::std::auto_ptr<SwTOXBase> m_pTOXBase; /// set iff section is TOX
52     const ::std::auto_ptr<SfxItemSet> m_pAttrSet;
53     ::std::auto_ptr<SwHistory> m_pHistory;
54     ::std::auto_ptr<SwRedlineData> m_pRedlData;
55     sal_uLong m_nSectionNodePos;
56     bool m_bSplitAtStart : 1;
57     bool m_bSplitAtEnd : 1;
58     bool m_bUpdateFtn : 1;
59 
60     void Join( SwDoc& rDoc, sal_uLong nNode );
61 
62 public:
63     SwUndoInsSection(SwPaM const&, SwSectionData const&,
64         SfxItemSet const*const pSet, SwTOXBase const*const pTOXBase);
65 
66     virtual ~SwUndoInsSection();
67 
68     virtual void UndoImpl( ::sw::UndoRedoContext & );
69     virtual void RedoImpl( ::sw::UndoRedoContext & );
70     virtual void RepeatImpl( ::sw::RepeatContext & );
71 
72     void SetSectNdPos(sal_uLong const nPos)     { m_nSectionNodePos = nPos; }
73     void SaveSplitNode(SwTxtNode *const pTxtNd, bool const bAtStart);
74     void SetUpdtFtnFlag(bool const bFlag)   { m_bUpdateFtn = bFlag; }
75 };
76 
77 SW_DLLPRIVATE SwUndo * MakeUndoDelSection(SwSectionFmt const&);
78 
79 SW_DLLPRIVATE SwUndo * MakeUndoUpdateSection(SwSectionFmt const&, bool const);
80 
81 #endif // SW_UNDO_SECTION_HXX
82 
83