1/* This file is part of the KDE project
2 Copyright 2006-2007 Stefan Nikolaus <stefan.nikolaus@kdemail.net>
3 Copyright 2004 Ariya Hidayat <ariya@kde.org>
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; only
8 version 2 of the License.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details.
14
15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 Boston, MA 02110-1301, USA.
19*/
20
21// Local
22#include "Damages.h"
23
24#include <QPoint>
25
26#include "Cell.h"
27#include "Sheet.h"
28#include "Region.h"
29
30using namespace Calligra::Sheets;
31
32class WorkbookDamage::Private
33{
34public:
35 Calligra::Sheets::Map* map;
36 Changes changes;
37};
38
39class SheetDamage::Private
40{
41public:
42 Calligra::Sheets::Sheet* sheet;
43 Changes changes;
44};
45
46class CellDamage::Private
47{
48public:
49 Calligra::Sheets::Sheet* sheet;
50 Region region;
51 Changes changes;
52};
53
54class SelectionDamage::Private
55{
56public:
57 Region region;
58};
59
60CellDamage::CellDamage(const Calligra::Sheets::Cell& cell, Changes changes)
61 : d(new Private)
62{
63 d->sheet = cell.sheet();
64 if (Region::isValid(QPoint(cell.column(), cell.row())))
65 d->region = Region(cell.column(), cell.row(), d->sheet);
66 d->changes = changes;
67}
68
69CellDamage::CellDamage(Calligra::Sheets::Sheet* sheet, const Region& region, Changes changes)
70 : d(new Private)
71{
72 d->sheet = sheet;
73 d->region = region;
74 d->changes = changes;
75}
76
77CellDamage::~CellDamage()
78{
79 delete d;
80}
81
82Sheet* CellDamage::sheet() const
83{
84 return d->sheet;
85}
86
87const Calligra::Sheets::Region& CellDamage::region() const
88{
89 return d->region;
90}
91
92CellDamage::Changes CellDamage::changes() const
93{
94 return d->changes;
95}
96
97
98SheetDamage::SheetDamage(Calligra::Sheets::Sheet* sheet, Changes changes)
99 : d(new Private)
100{
101 d->sheet = sheet;
102 d->changes = changes;
103}
104
105SheetDamage::~SheetDamage()
106{
107 delete d;
108}
109
110Sheet* SheetDamage::sheet() const
111{
112 return d->sheet;
113}
114
115SheetDamage::Changes SheetDamage::changes() const
116{
117 return d->changes;
118}
119
120
121WorkbookDamage::WorkbookDamage(Calligra::Sheets::Map* map, Changes changes)
122 : d(new Private)
123{
124 d->map = map;
125 d->changes = changes;
126}
127
128WorkbookDamage::~WorkbookDamage()
129{
130 delete d;
131}
132
133Map* WorkbookDamage::map() const
134{
135 return d->map;
136}
137
138WorkbookDamage::Changes WorkbookDamage::changes() const
139{
140 return d->changes;
141}
142
143
144SelectionDamage::SelectionDamage(const Region& region)
145 : d(new Private)
146{
147 d->region = region;
148}
149
150SelectionDamage::~SelectionDamage()
151{
152 delete d;
153}
154
155const Calligra::Sheets::Region& SelectionDamage::region() const
156{
157 return d->region;
158}
159
160
161/***************************************************************************
162 kDebug support
163****************************************************************************/
164
165QDebug operator<<(QDebug str, const Calligra::Sheets::Damage& d)
166{
167 switch (d.type()) {
168 case Damage::Nothing: return str << "NoDamage";
169 case Damage::Document: return str << "Document";
170 case Damage::Workbook: return str << "Workbook";
171 case Damage::Sheet: return str << "Sheet";
172 case Damage::Range: return str << "Range";
173 case Damage::Cell: return str << "Cell";
174 case Damage::Selection: return str << "Selection";
175 }
176 return str;
177}
178
179QDebug operator<<(QDebug str, const Calligra::Sheets::CellDamage& d)
180{
181 str << "CellDamage: " << d.region().name(d.sheet());
182 if (d.changes() & CellDamage::Appearance) str << " Appearance";
183 if (d.changes() & CellDamage::Binding) str << " Binding";
184 if (d.changes() & CellDamage::Formula) str << " Formula";
185 if (d.changes() & CellDamage::Value) str << " Value";
186 return str;
187}
188
189QDebug operator<<(QDebug str, const Calligra::Sheets::SheetDamage& d)
190{
191 str << "SheetDamage: " << (d.sheet() ? d.sheet()->sheetName() : "NULL POINTER!");
192 switch (d.changes()) {
193 case SheetDamage::None: return str << " None";
194 case SheetDamage::ContentChanged: return str << " Content";
195 case SheetDamage::PropertiesChanged: return str << " Properties";
196 case SheetDamage::Hidden: return str << " Hidden";
197 case SheetDamage::Shown: return str << " Shown";
198 case SheetDamage::Name: return str << "Name";
199 case SheetDamage::ColumnsChanged: return str << "Columns";
200 case SheetDamage::RowsChanged: return str << "Rows";
201 }
202 return str;
203}
204
205QDebug operator<<(QDebug str, const Calligra::Sheets::SelectionDamage& d)
206{
207 str << "SelectionDamage: " << d.region().name();
208 return str;
209}
210