Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #ifndef INCLUDED_SVX_SOURCE_TABLE_TABLEUNDO_HXX
21 : #define INCLUDED_SVX_SOURCE_TABLE_TABLEUNDO_HXX
22 :
23 : #include <com/sun/star/container/XIndexAccess.hpp>
24 : #include <com/sun/star/table/CellContentType.hpp>
25 :
26 : #include "svx/svdotable.hxx"
27 : #include "svx/svdobj.hxx"
28 : #include "svx/svdundo.hxx"
29 :
30 : #include "celltypes.hxx"
31 :
32 : namespace sdr { namespace properties {
33 : class TextProperties;
34 : } }
35 :
36 : class OutlinerParaObject;
37 :
38 :
39 :
40 : namespace sdr { namespace table {
41 :
42 : class CellUndo : public SdrUndoAction, public sdr::ObjectUser
43 : {
44 : public:
45 : CellUndo( const SdrObjectWeakRef& xObjRef, const CellRef& xCell );
46 : virtual ~CellUndo();
47 :
48 : virtual void Undo() SAL_OVERRIDE;
49 : virtual void Redo() SAL_OVERRIDE;
50 : virtual bool Merge( SfxUndoAction *pNextAction ) SAL_OVERRIDE;
51 :
52 : void dispose();
53 : virtual void ObjectInDestruction(const SdrObject& rObject) SAL_OVERRIDE;
54 :
55 : private:
56 0 : struct Data
57 : {
58 : sdr::properties::TextProperties* mpProperties;
59 : OutlinerParaObject* mpOutlinerParaObject;
60 :
61 : ::com::sun::star::table::CellContentType mnCellContentType;
62 :
63 : OUString msFormula;
64 : double mfValue;
65 : ::sal_Int32 mnError;
66 : bool mbMerged;
67 : ::sal_Int32 mnRowSpan;
68 : ::sal_Int32 mnColSpan;
69 :
70 0 : Data()
71 : : mpProperties(NULL)
72 : , mpOutlinerParaObject(NULL)
73 : , mnCellContentType(css::table::CellContentType_EMPTY)
74 : , mfValue(0)
75 : , mnError(0)
76 : , mbMerged(false)
77 : , mnRowSpan(0)
78 0 : , mnColSpan(0)
79 : {
80 0 : }
81 : };
82 :
83 : void setDataToCell( const Data& rData );
84 : void getDataFromCell( Data& rData );
85 :
86 : SdrObjectWeakRef mxObjRef;
87 : CellRef mxCell;
88 : Data maUndoData;
89 : Data maRedoData;
90 : bool mbUndo;
91 : };
92 :
93 :
94 :
95 : class InsertRowUndo : public SdrUndoAction
96 : {
97 : public:
98 : InsertRowUndo( const TableModelRef& xTable, sal_Int32 nIndex, RowVector& aNewRows );
99 : virtual ~InsertRowUndo();
100 :
101 : virtual void Undo() SAL_OVERRIDE;
102 : virtual void Redo() SAL_OVERRIDE;
103 :
104 : private:
105 : TableModelRef mxTable;
106 : sal_Int32 mnIndex;
107 : RowVector maRows;
108 : bool mbUndo;
109 : };
110 :
111 :
112 :
113 : class RemoveRowUndo : public SdrUndoAction
114 : {
115 : public:
116 : RemoveRowUndo( const TableModelRef& xTable, sal_Int32 nIndex, RowVector& aRemovedRows );
117 : virtual ~RemoveRowUndo();
118 :
119 : virtual void Undo() SAL_OVERRIDE;
120 : virtual void Redo() SAL_OVERRIDE;
121 :
122 : private:
123 : TableModelRef mxTable;
124 : sal_Int32 mnIndex;
125 : RowVector maRows;
126 : bool mbUndo;
127 : };
128 :
129 :
130 :
131 : class InsertColUndo : public SdrUndoAction
132 : {
133 : public:
134 : InsertColUndo( const TableModelRef& xTable, sal_Int32 nIndex, ColumnVector& aNewCols, CellVector& aCells );
135 : virtual ~InsertColUndo();
136 :
137 : virtual void Undo() SAL_OVERRIDE;
138 : virtual void Redo() SAL_OVERRIDE;
139 :
140 : private:
141 : TableModelRef mxTable;
142 : sal_Int32 mnIndex;
143 : ColumnVector maColumns;
144 : CellVector maCells;
145 : bool mbUndo;
146 : };
147 :
148 :
149 :
150 : class RemoveColUndo : public SdrUndoAction
151 : {
152 : public:
153 : RemoveColUndo( const TableModelRef& xTable, sal_Int32 nIndex, ColumnVector& aNewCols, CellVector& aCells );
154 : virtual ~RemoveColUndo();
155 :
156 : virtual void Undo() SAL_OVERRIDE;
157 : virtual void Redo() SAL_OVERRIDE;
158 :
159 : private:
160 : TableModelRef mxTable;
161 : sal_Int32 mnIndex;
162 : ColumnVector maColumns;
163 : CellVector maCells;
164 : bool mbUndo;
165 : };
166 :
167 :
168 :
169 : class TableColumnUndo : public SdrUndoAction
170 : {
171 : public:
172 : TableColumnUndo( const TableColumnRef& xCol );
173 : virtual ~TableColumnUndo();
174 :
175 : virtual void Undo() SAL_OVERRIDE;
176 : virtual void Redo() SAL_OVERRIDE;
177 : virtual bool Merge( SfxUndoAction *pNextAction ) SAL_OVERRIDE;
178 :
179 : private:
180 152 : struct Data
181 : {
182 : sal_Int32 mnColumn;
183 : sal_Int32 mnWidth;
184 : bool mbOptimalWidth;
185 : bool mbIsVisible;
186 : bool mbIsStartOfNewPage;
187 : OUString maName;
188 : };
189 :
190 : void setData( const Data& rData );
191 : void getData( Data& rData );
192 :
193 : TableColumnRef mxCol;
194 : Data maUndoData;
195 : Data maRedoData;
196 : bool mbHasRedoData;
197 : };
198 :
199 :
200 :
201 : class TableRowUndo : public SdrUndoAction
202 : {
203 : public:
204 : TableRowUndo( const TableRowRef& xRow );
205 : virtual ~TableRowUndo();
206 :
207 : virtual void Undo() SAL_OVERRIDE;
208 : virtual void Redo() SAL_OVERRIDE;
209 : virtual bool Merge( SfxUndoAction *pNextAction ) SAL_OVERRIDE;
210 :
211 : private:
212 296 : struct Data
213 : {
214 : CellVector maCells;
215 : sal_Int32 mnRow;
216 : sal_Int32 mnHeight;
217 : bool mbOptimalHeight;
218 : bool mbIsVisible;
219 : bool mbIsStartOfNewPage;
220 : OUString maName;
221 : };
222 :
223 : void setData( const Data& rData );
224 : void getData( Data& rData );
225 :
226 : TableRowRef mxRow;
227 : Data maUndoData;
228 : Data maRedoData;
229 : bool mbHasRedoData;
230 : };
231 :
232 :
233 :
234 0 : class TableStyleUndo : public SdrUndoAction
235 : {
236 : public:
237 : TableStyleUndo( const SdrTableObj& rTableObj );
238 :
239 : virtual void Undo() SAL_OVERRIDE;
240 : virtual void Redo() SAL_OVERRIDE;
241 :
242 : private:
243 : SdrObjectWeakRef mxObjRef;
244 :
245 0 : struct Data
246 : {
247 : TableStyleSettings maSettings;
248 : ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > mxTableStyle;
249 : };
250 :
251 : void setData( const Data& rData );
252 : void getData( Data& rData );
253 :
254 : Data maUndoData;
255 : Data maRedoData;
256 : bool mbHasRedoData;
257 : };
258 :
259 : } }
260 :
261 : #endif
262 :
263 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|