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 : #include <tools/resid.hxx>
21 :
22 : #include <poolfmt.hxx>
23 : #include <charfmt.hxx>
24 : #include <frmfmt.hxx>
25 : #include <SwUndoFmt.hxx>
26 : #include <SwRewriter.hxx>
27 : #include <swundo.hxx>
28 : #include <undobj.hxx>
29 : #include <fmtcol.hxx>
30 : #include <doc.hxx>
31 : #include <IDocumentUndoRedo.hxx>
32 : #include <comcore.hrc>
33 :
34 255 : SwUndoFormatCreate::SwUndoFormatCreate
35 : (SwUndoId nUndoId, SwFormat * _pNew, SwFormat * _pDerivedFrom, SwDoc * _pDoc)
36 : : SwUndo(nUndoId), pNew(_pNew),
37 255 : pDoc(_pDoc), pNewSet(NULL), nId(0), bAuto(false)
38 : {
39 255 : if (_pDerivedFrom)
40 255 : sDerivedFrom = _pDerivedFrom->GetName();
41 255 : }
42 :
43 255 : SwUndoFormatCreate::~SwUndoFormatCreate()
44 : {
45 255 : }
46 :
47 0 : void SwUndoFormatCreate::UndoImpl(::sw::UndoRedoContext &)
48 : {
49 0 : if (pNew)
50 : {
51 0 : if (sNewName.isEmpty() && pNew)
52 0 : sNewName = pNew->GetName();
53 :
54 0 : if (!sNewName.isEmpty())
55 0 : pNew = Find(sNewName);
56 :
57 0 : if (pNew)
58 : {
59 0 : pNewSet = new SfxItemSet(pNew->GetAttrSet());
60 0 : nId = pNew->GetPoolFormatId() & COLL_GET_RANGE_BITS;
61 0 : bAuto = pNew->IsAuto();
62 :
63 0 : Delete();
64 : }
65 : }
66 0 : }
67 :
68 0 : void SwUndoFormatCreate::RedoImpl(::sw::UndoRedoContext &)
69 : {
70 0 : SwFormat * pDerivedFrom = Find(sDerivedFrom);
71 0 : SwFormat * pFormat = Create(pDerivedFrom);
72 :
73 0 : if (pFormat && pNewSet)
74 : {
75 0 : pFormat->SetAuto(bAuto);
76 0 : pDoc->ChgFormat(*pFormat, *pNewSet);
77 0 : pFormat->SetPoolFormatId((pFormat->GetPoolFormatId()
78 : & ~COLL_GET_RANGE_BITS)
79 0 : | nId);
80 :
81 0 : pNew = pFormat;
82 : }
83 : else
84 0 : pNew = NULL;
85 0 : }
86 :
87 255 : SwRewriter SwUndoFormatCreate::GetRewriter() const
88 : {
89 255 : if (sNewName.isEmpty() && pNew)
90 255 : sNewName = pNew->GetName();
91 :
92 255 : SwRewriter aRewriter;
93 :
94 255 : aRewriter.AddRule(UndoArg1, sNewName);
95 :
96 255 : return aRewriter;
97 : }
98 :
99 2946 : SwUndoFormatDelete::SwUndoFormatDelete
100 : (SwUndoId nUndoId, SwFormat * _pOld, SwDoc * _pDoc)
101 : : SwUndo(nUndoId),
102 : pDoc(_pDoc), sOldName(_pOld->GetName()),
103 2946 : aOldSet(_pOld->GetAttrSet())
104 : {
105 2946 : sDerivedFrom = _pOld->DerivedFrom()->GetName();
106 2946 : nId = _pOld->GetPoolFormatId() & COLL_GET_RANGE_BITS;
107 2946 : bAuto = _pOld->IsAuto();
108 2946 : }
109 :
110 2945 : SwUndoFormatDelete::~SwUndoFormatDelete()
111 : {
112 2945 : }
113 :
114 0 : void SwUndoFormatDelete::UndoImpl(::sw::UndoRedoContext &)
115 : {
116 0 : SwFormat * pDerivedFrom = Find(sDerivedFrom);
117 :
118 0 : SwFormat * pFormat = Create(pDerivedFrom);
119 :
120 0 : if (pFormat)
121 : {
122 0 : pDoc->ChgFormat(*pFormat, aOldSet);
123 0 : pFormat->SetAuto(bAuto);
124 0 : pFormat->SetPoolFormatId((pFormat->GetPoolFormatId() &
125 : ~COLL_GET_RANGE_BITS)
126 0 : | nId);
127 : }
128 0 : }
129 :
130 0 : void SwUndoFormatDelete::RedoImpl(::sw::UndoRedoContext &)
131 : {
132 0 : SwFormat * pOld = Find(sOldName);
133 :
134 0 : if (pOld)
135 : {
136 0 : Delete(pOld);
137 : }
138 0 : }
139 :
140 2946 : SwRewriter SwUndoFormatDelete::GetRewriter() const
141 : {
142 2946 : SwRewriter aRewriter;
143 :
144 2946 : aRewriter.AddRule(UndoArg1, sOldName);
145 :
146 2946 : return aRewriter;
147 : }
148 :
149 4 : SwUndoRenameFormat::SwUndoRenameFormat(SwUndoId nUndoId,
150 : const OUString & _sOldName,
151 : const OUString & _sNewName,
152 : SwDoc * _pDoc)
153 : : SwUndo(nUndoId), sOldName(_sOldName),
154 4 : sNewName(_sNewName), pDoc(_pDoc)
155 : {
156 4 : }
157 :
158 4 : SwUndoRenameFormat::~SwUndoRenameFormat()
159 : {
160 4 : }
161 :
162 0 : void SwUndoRenameFormat::UndoImpl(::sw::UndoRedoContext &)
163 : {
164 0 : SwFormat * pFormat = Find(sNewName);
165 :
166 0 : if (pFormat)
167 : {
168 0 : pDoc->RenameFormat(*pFormat, sOldName, true);
169 : }
170 0 : }
171 :
172 0 : void SwUndoRenameFormat::RedoImpl(::sw::UndoRedoContext &)
173 : {
174 0 : SwFormat * pFormat = Find(sOldName);
175 :
176 0 : if (pFormat)
177 : {
178 0 : pDoc->RenameFormat(*pFormat, sNewName, true);
179 : }
180 0 : }
181 :
182 4 : SwRewriter SwUndoRenameFormat::GetRewriter() const
183 : {
184 4 : SwRewriter aRewriter;
185 :
186 4 : aRewriter.AddRule(UndoArg1, sOldName);
187 4 : aRewriter.AddRule(UndoArg2, SW_RES(STR_YIELDS));
188 4 : aRewriter.AddRule(UndoArg3, sNewName);
189 :
190 4 : return aRewriter;
191 : }
192 :
193 10 : SwUndoTextFormatCollCreate::SwUndoTextFormatCollCreate
194 : (SwTextFormatColl * _pNew, SwTextFormatColl * _pDerivedFrom, SwDoc * _pDoc)
195 10 : : SwUndoFormatCreate(UNDO_TXTFMTCOL_CREATE, _pNew, _pDerivedFrom, _pDoc)
196 : {
197 10 : }
198 :
199 0 : SwFormat * SwUndoTextFormatCollCreate::Create(SwFormat * pDerivedFrom)
200 : {
201 0 : return pDoc->MakeTextFormatColl(sNewName, static_cast<SwTextFormatColl *>(pDerivedFrom), true);
202 : }
203 :
204 0 : void SwUndoTextFormatCollCreate::Delete()
205 : {
206 0 : pDoc->DelTextFormatColl(static_cast<SwTextFormatColl *>(pNew), true);
207 0 : }
208 :
209 0 : SwFormat * SwUndoTextFormatCollCreate::Find(const OUString & rName) const
210 : {
211 0 : return pDoc->FindTextFormatCollByName(rName);
212 : }
213 :
214 0 : SwUndoTextFormatCollDelete::SwUndoTextFormatCollDelete(SwTextFormatColl * _pOld,
215 : SwDoc * _pDoc)
216 0 : : SwUndoFormatDelete(UNDO_TXTFMTCOL_DELETE, _pOld, _pDoc)
217 : {
218 0 : }
219 :
220 0 : SwFormat * SwUndoTextFormatCollDelete::Create(SwFormat * pDerivedFrom)
221 : {
222 0 : return pDoc->MakeTextFormatColl(sOldName, static_cast<SwTextFormatColl *>(pDerivedFrom), true);
223 : }
224 :
225 0 : void SwUndoTextFormatCollDelete::Delete(SwFormat * pOld)
226 : {
227 0 : pDoc->DelTextFormatColl(static_cast<SwTextFormatColl *>(pOld), true);
228 0 : }
229 :
230 0 : SwFormat * SwUndoTextFormatCollDelete::Find(const OUString & rName) const
231 : {
232 0 : return pDoc->FindTextFormatCollByName(rName);
233 : }
234 :
235 2 : SwUndoCondTextFormatCollCreate::SwUndoCondTextFormatCollCreate(SwConditionTextFormatColl *_pNew,
236 : SwTextFormatColl *_pDerivedFrom, SwDoc *_pDoc)
237 2 : : SwUndoTextFormatCollCreate(_pNew, _pDerivedFrom, _pDoc)
238 : {
239 2 : }
240 :
241 0 : SwFormat * SwUndoCondTextFormatCollCreate::Create(SwFormat * pDerivedFrom)
242 : {
243 0 : return pDoc->MakeCondTextFormatColl(sNewName, static_cast<SwTextFormatColl *>(pDerivedFrom), true);
244 : }
245 :
246 0 : SwUndoCondTextFormatCollDelete::SwUndoCondTextFormatCollDelete(SwTextFormatColl * _pOld,
247 : SwDoc * _pDoc)
248 0 : : SwUndoTextFormatCollDelete(_pOld, _pDoc)
249 : {
250 0 : }
251 :
252 0 : SwFormat * SwUndoCondTextFormatCollDelete::Create(SwFormat * pDerivedFrom)
253 : {
254 0 : return pDoc->MakeCondTextFormatColl(sOldName, static_cast<SwTextFormatColl *>(pDerivedFrom), true);
255 : }
256 :
257 2 : SwUndoRenameFormatColl::SwUndoRenameFormatColl(const OUString & sInitOldName,
258 : const OUString & sInitNewName,
259 : SwDoc * _pDoc)
260 2 : : SwUndoRenameFormat(UNDO_TXTFMTCOL_RENAME, sInitOldName, sInitNewName, _pDoc)
261 : {
262 2 : }
263 :
264 0 : SwFormat * SwUndoRenameFormatColl::Find(const OUString & rName) const
265 : {
266 0 : return pDoc->FindTextFormatCollByName(rName);
267 : }
268 :
269 223 : SwUndoCharFormatCreate::SwUndoCharFormatCreate(SwCharFormat * pNewFormat,
270 : SwCharFormat * pDerivedFrom,
271 : SwDoc * pDocument)
272 223 : : SwUndoFormatCreate(UNDO_CHARFMT_CREATE, pNewFormat, pDerivedFrom, pDocument)
273 : {
274 223 : }
275 :
276 0 : SwFormat * SwUndoCharFormatCreate::Create(SwFormat * pDerivedFrom)
277 : {
278 0 : return pDoc->MakeCharFormat(sNewName, static_cast<SwCharFormat *>(pDerivedFrom), true);
279 : }
280 :
281 0 : void SwUndoCharFormatCreate::Delete()
282 : {
283 0 : pDoc->DelCharFormat(static_cast<SwCharFormat *>(pNew), true);
284 0 : }
285 :
286 0 : SwFormat * SwUndoCharFormatCreate::Find(const OUString & rName) const
287 : {
288 0 : return pDoc->FindCharFormatByName(rName);
289 : }
290 :
291 1 : SwUndoCharFormatDelete::SwUndoCharFormatDelete(SwCharFormat * pOld, SwDoc * pDocument)
292 1 : : SwUndoFormatDelete(UNDO_CHARFMT_DELETE, pOld, pDocument)
293 : {
294 1 : }
295 :
296 0 : SwFormat * SwUndoCharFormatDelete::Create(SwFormat * pDerivedFrom)
297 : {
298 0 : return pDoc->MakeCharFormat(sOldName, static_cast<SwCharFormat *>(pDerivedFrom), true);
299 : }
300 :
301 0 : void SwUndoCharFormatDelete::Delete(SwFormat * pFormat)
302 : {
303 0 : pDoc->DelCharFormat(static_cast<SwCharFormat *>(pFormat), true);
304 0 : }
305 :
306 0 : SwFormat * SwUndoCharFormatDelete::Find(const OUString & rName) const
307 : {
308 0 : return pDoc->FindCharFormatByName(rName);
309 : }
310 :
311 2 : SwUndoRenameCharFormat::SwUndoRenameCharFormat(const OUString & sInitOldName,
312 : const OUString & sInitNewName,
313 : SwDoc * pDocument)
314 2 : : SwUndoRenameFormat(UNDO_CHARFMT_RENAME, sInitOldName, sInitNewName, pDocument)
315 : {
316 2 : }
317 :
318 0 : SwFormat * SwUndoRenameCharFormat::Find(const OUString & rName) const
319 : {
320 0 : return pDoc->FindCharFormatByName(rName);
321 : }
322 :
323 22 : SwUndoFrameFormatCreate::SwUndoFrameFormatCreate(SwFrameFormat * pNewFormat,
324 : SwFrameFormat * pDerivedFrom,
325 : SwDoc * pDocument)
326 : : SwUndoFormatCreate(UNDO_FRMFMT_CREATE, pNewFormat, pDerivedFrom, pDocument),
327 22 : bAuto(pNewFormat->IsAuto())
328 : {
329 22 : }
330 :
331 0 : SwFormat * SwUndoFrameFormatCreate::Create(SwFormat * pDerivedFrom)
332 : {
333 0 : return pDoc->MakeFrameFormat(sNewName, static_cast<SwFrameFormat *>(pDerivedFrom), true, bAuto);
334 : }
335 :
336 0 : void SwUndoFrameFormatCreate::Delete()
337 : {
338 0 : pDoc->DelFrameFormat(static_cast<SwFrameFormat *>(pNew), true);
339 0 : }
340 :
341 0 : SwFormat * SwUndoFrameFormatCreate::Find(const OUString & rName) const
342 : {
343 0 : return pDoc->FindFrameFormatByName(rName);
344 : }
345 :
346 2945 : SwUndoFrameFormatDelete::SwUndoFrameFormatDelete(SwFrameFormat * pOld, SwDoc * pDocument)
347 2945 : : SwUndoFormatDelete(UNDO_FRMFMT_DELETE, pOld, pDocument)
348 : {
349 2945 : }
350 :
351 0 : SwFormat * SwUndoFrameFormatDelete::Create(SwFormat * pDerivedFrom)
352 : {
353 0 : return pDoc->MakeFrameFormat(sOldName, static_cast<SwFrameFormat *>(pDerivedFrom), true);
354 : }
355 :
356 0 : void SwUndoFrameFormatDelete::Delete(SwFormat * pFormat)
357 : {
358 0 : pDoc->DelFrameFormat(static_cast<SwFrameFormat *>(pFormat), true);
359 0 : }
360 :
361 0 : SwFormat * SwUndoFrameFormatDelete::Find(const OUString & rName) const
362 : {
363 0 : return pDoc->FindFrameFormatByName(rName);
364 : }
365 :
366 0 : SwUndoRenameFrameFormat::SwUndoRenameFrameFormat(const OUString & sInitOldName,
367 : const OUString & sInitNewName,
368 : SwDoc * pDocument)
369 0 : : SwUndoRenameFormat(UNDO_FRMFMT_RENAME, sInitOldName, sInitNewName, pDocument)
370 : {
371 0 : }
372 :
373 0 : SwFormat * SwUndoRenameFrameFormat::Find(const OUString & rName) const
374 : {
375 0 : return pDoc->FindFrameFormatByName(rName);
376 : }
377 :
378 12 : SwUndoNumruleCreate::SwUndoNumruleCreate(const SwNumRule * _pNew,
379 : SwDoc * _pDoc)
380 : : SwUndo(UNDO_NUMRULE_CREATE), pNew(_pNew), aNew(*_pNew), pDoc(_pDoc),
381 12 : bInitialized(false)
382 : {
383 12 : }
384 :
385 0 : void SwUndoNumruleCreate::UndoImpl(::sw::UndoRedoContext &)
386 : {
387 0 : if (! bInitialized)
388 : {
389 0 : aNew = *pNew;
390 0 : bInitialized = true;
391 : }
392 :
393 0 : pDoc->DelNumRule(aNew.GetName(), true);
394 0 : }
395 :
396 0 : void SwUndoNumruleCreate::RedoImpl(::sw::UndoRedoContext &)
397 : {
398 0 : pDoc->MakeNumRule(aNew.GetName(), &aNew, true);
399 0 : }
400 :
401 12 : SwRewriter SwUndoNumruleCreate::GetRewriter() const
402 : {
403 12 : SwRewriter aResult;
404 :
405 12 : if (! bInitialized)
406 : {
407 12 : aNew = *pNew;
408 12 : bInitialized = true;
409 : }
410 :
411 12 : aResult.AddRule(UndoArg1, aNew.GetName());
412 :
413 12 : return aResult;
414 : }
415 :
416 0 : SwUndoNumruleDelete::SwUndoNumruleDelete(const SwNumRule & rRule,
417 : SwDoc * _pDoc)
418 0 : : SwUndo(UNDO_NUMRULE_DELETE), aOld(rRule), pDoc(_pDoc)
419 : {
420 0 : }
421 :
422 0 : void SwUndoNumruleDelete::UndoImpl(::sw::UndoRedoContext &)
423 : {
424 0 : pDoc->MakeNumRule(aOld.GetName(), &aOld, true);
425 0 : }
426 :
427 0 : void SwUndoNumruleDelete::RedoImpl(::sw::UndoRedoContext &)
428 : {
429 0 : pDoc->DelNumRule(aOld.GetName(), true);
430 0 : }
431 :
432 0 : SwRewriter SwUndoNumruleDelete::GetRewriter() const
433 : {
434 0 : SwRewriter aResult;
435 :
436 0 : aResult.AddRule(UndoArg1, aOld.GetName());
437 :
438 0 : return aResult;
439 : }
440 :
441 0 : SwUndoNumruleRename::SwUndoNumruleRename(const OUString & _aOldName,
442 : const OUString & _aNewName,
443 : SwDoc * _pDoc)
444 : : SwUndo(UNDO_NUMRULE_RENAME), aOldName(_aOldName), aNewName(_aNewName),
445 0 : pDoc(_pDoc)
446 : {
447 0 : }
448 :
449 0 : void SwUndoNumruleRename::UndoImpl(::sw::UndoRedoContext &)
450 : {
451 0 : pDoc->RenameNumRule(aNewName, aOldName, true);
452 0 : }
453 :
454 0 : void SwUndoNumruleRename::RedoImpl(::sw::UndoRedoContext &)
455 : {
456 0 : pDoc->RenameNumRule(aOldName, aNewName, true);
457 0 : }
458 :
459 0 : SwRewriter SwUndoNumruleRename::GetRewriter() const
460 : {
461 0 : SwRewriter aRewriter;
462 :
463 0 : aRewriter.AddRule(UndoArg1, aOldName);
464 0 : aRewriter.AddRule(UndoArg2, SW_RESSTR(STR_YIELDS));
465 0 : aRewriter.AddRule(UndoArg3, aNewName);
466 :
467 0 : return aRewriter;
468 177 : }
469 :
470 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|