1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
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 .
20 #ifndef INCLUDED_SVX_SOURCE_TABLE_TABLEUNDO_HXX
21 #define INCLUDED_SVX_SOURCE_TABLE_TABLEUNDO_HXX
23 #include <com/sun/star/container/XIndexAccess.hpp>
25 #include <svx/svdotable.hxx>
26 #include <svx/svdobj.hxx>
27 #include <svx/svdundo.hxx>
28 #include <svx/sdrobjectuser.hxx>
30 #include <celltypes.hxx>
32 namespace sdr::properties
{
36 class OutlinerParaObject
;
39 namespace sdr::table
{
41 class CellUndo
: public SdrUndoAction
, public sdr::ObjectUser
44 CellUndo( const tools::WeakReference
<SdrObject
>& xObjRef
, const CellRef
& xCell
);
45 virtual ~CellUndo() override
;
47 virtual void Undo() override
;
48 virtual void Redo() override
;
49 virtual bool Merge( SfxUndoAction
*pNextAction
) override
;
52 virtual void ObjectInDestruction(const SdrObject
& rObject
) override
;
57 sdr::properties::TextProperties
* mpProperties
;
58 OutlinerParaObject
* mpOutlinerParaObject
;
64 ::sal_Int32 mnRowSpan
;
65 ::sal_Int32 mnColSpan
;
68 : mpProperties(nullptr)
69 , mpOutlinerParaObject(nullptr)
79 void setDataToCell( const Data
& rData
);
80 void getDataFromCell( Data
& rData
);
82 tools::WeakReference
<SdrObject
> mxObjRef
;
90 class InsertRowUndo
: public SdrUndoAction
93 InsertRowUndo( const TableModelRef
& xTable
, sal_Int32 nIndex
, RowVector
& aNewRows
);
94 virtual ~InsertRowUndo() override
;
96 virtual void Undo() override
;
97 virtual void Redo() override
;
100 TableModelRef mxTable
;
107 class RemoveRowUndo
: public SdrUndoAction
110 RemoveRowUndo( const TableModelRef
& xTable
, sal_Int32 nIndex
, RowVector
& aRemovedRows
);
111 virtual ~RemoveRowUndo() override
;
113 virtual void Undo() override
;
114 virtual void Redo() override
;
117 TableModelRef mxTable
;
124 class InsertColUndo
: public SdrUndoAction
127 InsertColUndo( const TableModelRef
& xTable
, sal_Int32 nIndex
, ColumnVector
& aNewCols
, CellVector
& aCells
);
128 virtual ~InsertColUndo() override
;
130 virtual void Undo() override
;
131 virtual void Redo() override
;
134 TableModelRef mxTable
;
136 ColumnVector maColumns
;
142 class RemoveColUndo
: public SdrUndoAction
145 RemoveColUndo( const TableModelRef
& xTable
, sal_Int32 nIndex
, ColumnVector
& aNewCols
, CellVector
& aCells
);
146 virtual ~RemoveColUndo() override
;
148 virtual void Undo() override
;
149 virtual void Redo() override
;
152 TableModelRef mxTable
;
154 ColumnVector maColumns
;
160 class TableColumnUndo
: public SdrUndoAction
163 explicit TableColumnUndo( const TableColumnRef
& xCol
);
164 virtual ~TableColumnUndo() override
;
166 virtual void Undo() override
;
167 virtual void Redo() override
;
168 virtual bool Merge( SfxUndoAction
*pNextAction
) override
;
177 bool mbIsStartOfNewPage
;
183 , mbOptimalWidth(false)
185 , mbIsStartOfNewPage(false)
190 void setData( const Data
& rData
);
191 void getData( Data
& rData
);
193 TableColumnRef mxCol
;
200 class TableRowUndo
: public SdrUndoAction
203 explicit TableRowUndo( const TableRowRef
& xRow
);
204 virtual ~TableRowUndo() override
;
206 virtual void Undo() override
;
207 virtual void Redo() override
;
208 virtual bool Merge( SfxUndoAction
*pNextAction
) override
;
215 bool mbOptimalHeight
;
217 bool mbIsStartOfNewPage
;
221 void setData( const Data
& rData
);
222 void getData( Data
& rData
);
230 class TableStyleUndo
: public SdrUndoAction
233 explicit TableStyleUndo( const SdrTableObj
& rTableObj
);
235 virtual void Undo() override
;
236 virtual void Redo() override
;
239 tools::WeakReference
<SdrTableObj
> mxObjRef
;
243 TableStyleSettings maSettings
;
244 css::uno::Reference
< css::container::XIndexAccess
> mxTableStyle
;
247 void setData( const Data
& rData
);
248 void getData( Data
& rData
);
259 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */