summaryrefslogtreecommitdiff
authorleseb <leseb>2002-06-19 06:08:54 (UTC)
committer leseb <leseb>2002-06-19 06:08:54 (UTC)
commitb83e9d1f794fdd6089beda10697243bb087e3d0a (patch) (unidiff)
treebdd278f80903fcc9463c3623645967fef8e787fa
parent3e7ae42a203c31d44e0c24a29a9a63772ef56046 (diff)
downloadopie-b83e9d1f794fdd6089beda10697243bb087e3d0a.zip
opie-b83e9d1f794fdd6089beda10697243bb087e3d0a.tar.gz
opie-b83e9d1f794fdd6089beda10697243bb087e3d0a.tar.bz2
99 undo actions
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/graphics/drawpad/drawpadcanvas.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/noncore/graphics/drawpad/drawpadcanvas.cpp b/noncore/graphics/drawpad/drawpadcanvas.cpp
index 4547b41..ae1b554 100644
--- a/noncore/graphics/drawpad/drawpadcanvas.cpp
+++ b/noncore/graphics/drawpad/drawpadcanvas.cpp
@@ -1,160 +1,162 @@
1/*************************************************************************** 1/***************************************************************************
2 * * 2 * *
3 * DrawPad - a drawing program for Opie Environment * 3 * DrawPad - a drawing program for Opie Environment *
4 * * 4 * *
5 * (C) 2002 by S. Prud'homme <prudhomme@laposte.net> * 5 * (C) 2002 by S. Prud'homme <prudhomme@laposte.net> *
6 * * 6 * *
7 * This program is free software; you can redistribute it and/or modify * 7 * This program is free software; you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by * 8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation; either version 2 of the License, or * 9 * the Free Software Foundation; either version 2 of the License, or *
10 * (at your option) any later version. * 10 * (at your option) any later version. *
11 * * 11 * *
12 ***************************************************************************/ 12 ***************************************************************************/
13 13
14#include "drawpadcanvas.h" 14#include "drawpadcanvas.h"
15 15
16#include "drawpad.h" 16#include "drawpad.h"
17#include "page.h" 17#include "page.h"
18#include "tool.h" 18#include "tool.h"
19 19
20#include <qpe/applnk.h> 20#include <qpe/applnk.h>
21#include <qpe/filemanager.h> 21#include <qpe/filemanager.h>
22#include <qpe/mimetype.h> 22#include <qpe/mimetype.h>
23 23
24#include <qbuffer.h> 24#include <qbuffer.h>
25#include <qimage.h> 25#include <qimage.h>
26#include <qpainter.h> 26#include <qpainter.h>
27#include <qtextcodec.h> 27#include <qtextcodec.h>
28#include <qtextstream.h> 28#include <qtextstream.h>
29#include <qxml.h> 29#include <qxml.h>
30 30
31#include <zlib.h> 31#include <zlib.h>
32 32
33const int PAGE_BACKUPS = 99;
34
33class DrawPadCanvasXmlHandler: public QXmlDefaultHandler 35class DrawPadCanvasXmlHandler: public QXmlDefaultHandler
34{ 36{
35public: 37public:
36 DrawPadCanvasXmlHandler(); 38 DrawPadCanvasXmlHandler();
37 ~DrawPadCanvasXmlHandler(); 39 ~DrawPadCanvasXmlHandler();
38 40
39 QList<Page> pages(); 41 QList<Page> pages();
40 42
41 bool startElement(const QString& namespaceURI, const QString& localName, 43 bool startElement(const QString& namespaceURI, const QString& localName,
42 const QString& qName, const QXmlAttributes& atts); 44 const QString& qName, const QXmlAttributes& atts);
43 bool endElement(const QString& namespaceURI, const QString& localName, 45 bool endElement(const QString& namespaceURI, const QString& localName,
44 const QString& qName); 46 const QString& qName);
45 bool characters(const QString& ch); 47 bool characters(const QString& ch);
46 48
47private: 49private:
48 enum State { 50 enum State {
49 Unknown, 51 Unknown,
50 InTitle, 52 InTitle,
51 InDate, 53 InDate,
52 InData 54 InData
53 }; 55 };
54 56
55 State m_state; 57 State m_state;
56 QString m_title; 58 QString m_title;
57 QDateTime m_date; 59 QDateTime m_date;
58 ulong m_dataLenght; 60 ulong m_dataLenght;
59 QString m_dataFormat; 61 QString m_dataFormat;
60 QList<Page> m_pages; 62 QList<Page> m_pages;
61}; 63};
62 64
63DrawPadCanvasXmlHandler::DrawPadCanvasXmlHandler() 65DrawPadCanvasXmlHandler::DrawPadCanvasXmlHandler()
64{ 66{
65 m_state = Unknown; 67 m_state = Unknown;
66} 68}
67 69
68DrawPadCanvasXmlHandler::~DrawPadCanvasXmlHandler() 70DrawPadCanvasXmlHandler::~DrawPadCanvasXmlHandler()
69{ 71{
70} 72}
71 73
72QList<Page> DrawPadCanvasXmlHandler::pages() 74QList<Page> DrawPadCanvasXmlHandler::pages()
73{ 75{
74 return m_pages; 76 return m_pages;
75} 77}
76 78
77bool DrawPadCanvasXmlHandler::startElement(const QString& namespaceURI, const QString& localName, 79bool DrawPadCanvasXmlHandler::startElement(const QString& namespaceURI, const QString& localName,
78 const QString& qName, const QXmlAttributes& atts) 80 const QString& qName, const QXmlAttributes& atts)
79{ 81{
80 Q_CONST_UNUSED(namespaceURI) 82 Q_CONST_UNUSED(namespaceURI)
81 Q_CONST_UNUSED(localName) 83 Q_CONST_UNUSED(localName)
82 84
83 if (qName == "image") { 85 if (qName == "image") {
84 m_title = QString(); 86 m_title = QString();
85 m_date = QDateTime::currentDateTime(); 87 m_date = QDateTime::currentDateTime();
86 } else if (qName == "title") { 88 } else if (qName == "title") {
87 m_state = InTitle; 89 m_state = InTitle;
88 } else if (qName == "date") { 90 } else if (qName == "date") {
89 m_state = InDate; 91 m_state = InDate;
90 } else if (qName == "data") { 92 } else if (qName == "data") {
91 m_state = InData; 93 m_state = InData;
92 m_dataLenght = atts.value("length").toULong(); 94 m_dataLenght = atts.value("length").toULong();
93 m_dataFormat = atts.value("format"); 95 m_dataFormat = atts.value("format");
94 96
95 if (m_dataFormat.isEmpty()) { 97 if (m_dataFormat.isEmpty()) {
96 m_dataFormat = "XPM"; 98 m_dataFormat = "XPM";
97 } 99 }
98 } 100 }
99 101
100 return true; 102 return true;
101} 103}
102 104
103bool DrawPadCanvasXmlHandler::endElement(const QString& namespaceURI, const QString& localName, 105bool DrawPadCanvasXmlHandler::endElement(const QString& namespaceURI, const QString& localName,
104 const QString& qName) 106 const QString& qName)
105{ 107{
106 Q_CONST_UNUSED(namespaceURI) 108 Q_CONST_UNUSED(namespaceURI)
107 Q_CONST_UNUSED(localName) 109 Q_CONST_UNUSED(localName)
108 110
109 if (qName == "title") { 111 if (qName == "title") {
110 m_state = Unknown; 112 m_state = Unknown;
111 } else if (qName == "date") { 113 } else if (qName == "date") {
112 m_state = Unknown; 114 m_state = Unknown;
113 } else if (qName == "data") { 115 } else if (qName == "data") {
114 m_state = Unknown; 116 m_state = Unknown;
115 } 117 }
116 118
117 return true; 119 return true;
118} 120}
119 121
120bool DrawPadCanvasXmlHandler::characters(const QString& ch) 122bool DrawPadCanvasXmlHandler::characters(const QString& ch)
121{ 123{
122 if (m_state == InTitle) { 124 if (m_state == InTitle) {
123 m_title = ch; 125 m_title = ch;
124 } else if (m_state == InDate) { 126 } else if (m_state == InDate) {
125 m_date = QDateTime(QDate(1970, 1, 1)).addSecs(ch.toInt()); 127 m_date = QDateTime(QDate(1970, 1, 1)).addSecs(ch.toInt());
126 } else if (m_state == InData) { 128 } else if (m_state == InData) {
127 QByteArray byteArray(ch.length() / 2); 129 QByteArray byteArray(ch.length() / 2);
128 130
129 for (int i = 0; i < (int)ch.length() / 2; i++) { 131 for (int i = 0; i < (int)ch.length() / 2; i++) {
130 char h = ch[2 * i].latin1(); 132 char h = ch[2 * i].latin1();
131 char l = ch[2 * i + 1].latin1(); 133 char l = ch[2 * i + 1].latin1();
132 uchar r = 0; 134 uchar r = 0;
133 135
134 if (h <= '9') { 136 if (h <= '9') {
135 r += h - '0'; 137 r += h - '0';
136 } else { 138 } else {
137 r += h - 'a' + 10; 139 r += h - 'a' + 10;
138 } 140 }
139 141
140 r = r << 4; 142 r = r << 4;
141 143
142 if (l <= '9') { 144 if (l <= '9') {
143 r += l - '0'; 145 r += l - '0';
144 } else { 146 } else {
145 r += l - 'a' + 10; 147 r += l - 'a' + 10;
146 } 148 }
147 149
148 byteArray[i] = r; 150 byteArray[i] = r;
149 } 151 }
150 152
151 153
152 QImage image; 154 QImage image;
153 155
154 if (m_dataFormat == "XPM") { 156 if (m_dataFormat == "XPM") {
155 if (m_dataLenght < ch.length() * 5) { 157 if (m_dataLenght < ch.length() * 5) {
156 m_dataLenght = ch.length() * 5; 158 m_dataLenght = ch.length() * 5;
157 } 159 }
158 160
159 QByteArray byteArrayUnzipped(m_dataLenght); 161 QByteArray byteArrayUnzipped(m_dataLenght);
160 ::uncompress((uchar*)byteArrayUnzipped.data(), &m_dataLenght, (uchar*)byteArray.data(), byteArray.size()); 162 ::uncompress((uchar*)byteArrayUnzipped.data(), &m_dataLenght, (uchar*)byteArray.data(), byteArray.size());
@@ -247,257 +249,257 @@ void DrawPadCanvas::save(QIODevice* ioDevice)
247 249
248 int intDate = QDateTime(QDate(1970, 1, 1)).secsTo(bufferIterator.current()->lastModified()); 250 int intDate = QDateTime(QDate(1970, 1, 1)).secsTo(bufferIterator.current()->lastModified());
249 textStream << " <date>" << intDate << "</date>" << endl; 251 textStream << " <date>" << intDate << "</date>" << endl;
250 252
251 QImage image = bufferIterator.current()->convertToImage(); 253 QImage image = bufferIterator.current()->convertToImage();
252 QByteArray byteArray; 254 QByteArray byteArray;
253 QBuffer buffer(byteArray); 255 QBuffer buffer(byteArray);
254 QImageIO imageIO(&buffer, "PNG"); 256 QImageIO imageIO(&buffer, "PNG");
255 257
256 buffer.open(IO_WriteOnly); 258 buffer.open(IO_WriteOnly);
257 imageIO.setImage(image); 259 imageIO.setImage(image);
258 imageIO.write(); 260 imageIO.write();
259 buffer.close(); 261 buffer.close();
260 262
261 textStream << " <data length=\"" << byteArray.size() << "\" format=\"PNG\">"; 263 textStream << " <data length=\"" << byteArray.size() << "\" format=\"PNG\">";
262 264
263 static const char hexchars[] = "0123456789abcdef"; 265 static const char hexchars[] = "0123456789abcdef";
264 266
265 for (int i = 0; i < (int)byteArray.size(); i++ ) { 267 for (int i = 0; i < (int)byteArray.size(); i++ ) {
266 uchar s = (uchar)byteArray[i]; 268 uchar s = (uchar)byteArray[i];
267 textStream << hexchars[s >> 4]; 269 textStream << hexchars[s >> 4];
268 textStream << hexchars[s & 0x0f]; 270 textStream << hexchars[s & 0x0f];
269 } 271 }
270 272
271 textStream << "</data>" << endl; 273 textStream << "</data>" << endl;
272 textStream << " </image>" << endl; 274 textStream << " </image>" << endl;
273 } 275 }
274 276
275 textStream << " </images>" << endl; 277 textStream << " </images>" << endl;
276 textStream << "</drawpad>"; 278 textStream << "</drawpad>";
277} 279}
278 280
279void DrawPadCanvas::importPage(const QString& fileName) 281void DrawPadCanvas::importPage(const QString& fileName)
280{ 282{
281 Page* importedPage = new Page(); 283 Page* importedPage = new Page();
282 284
283 importedPage->load(fileName); 285 importedPage->load(fileName);
284 m_pages.insert(m_pages.at() + 1, importedPage); 286 m_pages.insert(m_pages.at() + 1, importedPage);
285 287
286 m_pageBackups.clear(); 288 m_pageBackups.clear();
287 m_pageBackups.append(new Page(*(m_pages.current()))); 289 m_pageBackups.append(new Page(*(m_pages.current())));
288 290
289 resizeContents(m_pages.current()->width(), m_pages.current()->height()); 291 resizeContents(m_pages.current()->width(), m_pages.current()->height());
290 viewport()->update(); 292 viewport()->update();
291 293
292 emit pagesChanged(); 294 emit pagesChanged();
293 emit pageBackupsChanged(); 295 emit pageBackupsChanged();
294} 296}
295 297
296void DrawPadCanvas::exportPage(uint fromPage, uint toPage, const QString& name,const QString& format) 298void DrawPadCanvas::exportPage(uint fromPage, uint toPage, const QString& name,const QString& format)
297{ 299{
298 if (fromPage == toPage) { 300 if (fromPage == toPage) {
299 DocLnk docLnk; 301 DocLnk docLnk;
300 MimeType mimeType(format); 302 MimeType mimeType(format);
301 303
302 docLnk.setName(name); 304 docLnk.setName(name);
303 docLnk.setType(mimeType.id()); 305 docLnk.setType(mimeType.id());
304 306
305 FileManager fileManager; 307 FileManager fileManager;
306 QIODevice* ioDevice = fileManager.saveFile(docLnk); 308 QIODevice* ioDevice = fileManager.saveFile(docLnk);
307 QImageIO imageIO(ioDevice, format); 309 QImageIO imageIO(ioDevice, format);
308 310
309 QImage image = m_pages.current()->convertToImage(); 311 QImage image = m_pages.current()->convertToImage();
310 imageIO.setImage(image); 312 imageIO.setImage(image);
311 imageIO.write(); 313 imageIO.write();
312 delete ioDevice; 314 delete ioDevice;
313 } else { 315 } else {
314 for (uint i = fromPage; i <= toPage; i++) { 316 for (uint i = fromPage; i <= toPage; i++) {
315 DocLnk docLnk; 317 DocLnk docLnk;
316 MimeType mimeType(format); 318 MimeType mimeType(format);
317 319
318 docLnk.setName(name + QString::number(i)); 320 docLnk.setName(name + QString::number(i));
319 docLnk.setType(mimeType.id()); 321 docLnk.setType(mimeType.id());
320 322
321 FileManager fileManager; 323 FileManager fileManager;
322 QIODevice* ioDevice = fileManager.saveFile(docLnk); 324 QIODevice* ioDevice = fileManager.saveFile(docLnk);
323 QImageIO imageIO(ioDevice, format); 325 QImageIO imageIO(ioDevice, format);
324 326
325 QImage image = m_pages.at(i - 1)->convertToImage(); 327 QImage image = m_pages.at(i - 1)->convertToImage();
326 imageIO.setImage(image); 328 imageIO.setImage(image);
327 imageIO.write(); 329 imageIO.write();
328 delete ioDevice; 330 delete ioDevice;
329 } 331 }
330 } 332 }
331} 333}
332 334
333Page* DrawPadCanvas::currentPage() 335Page* DrawPadCanvas::currentPage()
334{ 336{
335 return m_pages.current(); 337 return m_pages.current();
336} 338}
337 339
338QList<Page> DrawPadCanvas::pages() 340QList<Page> DrawPadCanvas::pages()
339{ 341{
340 return m_pages; 342 return m_pages;
341} 343}
342 344
343uint DrawPadCanvas::pagePosition() 345uint DrawPadCanvas::pagePosition()
344{ 346{
345 return (m_pages.at() + 1); 347 return (m_pages.at() + 1);
346} 348}
347 349
348uint DrawPadCanvas::pageCount() 350uint DrawPadCanvas::pageCount()
349{ 351{
350 return m_pages.count(); 352 return m_pages.count();
351} 353}
352 354
353void DrawPadCanvas::selectPage(Page* page) 355void DrawPadCanvas::selectPage(Page* page)
354{ 356{
355 m_pages.findRef(page); 357 m_pages.findRef(page);
356 m_pageBackups.clear(); 358 m_pageBackups.clear();
357 m_pageBackups.append(new Page(*(m_pages.current()))); 359 m_pageBackups.append(new Page(*(m_pages.current())));
358 360
359 resizeContents(m_pages.current()->width(), m_pages.current()->height()); 361 resizeContents(m_pages.current()->width(), m_pages.current()->height());
360 viewport()->update(); 362 viewport()->update();
361 363
362 emit pagesChanged(); 364 emit pagesChanged();
363 emit pageBackupsChanged(); 365 emit pageBackupsChanged();
364} 366}
365 367
366void DrawPadCanvas::backupPage() 368void DrawPadCanvas::backupPage()
367{ 369{
368 m_pages.current()->setLastModified(QDateTime::currentDateTime()); 370 m_pages.current()->setLastModified(QDateTime::currentDateTime());
369 371
370 Page* currentBackup = m_pageBackups.current(); 372 Page* currentBackup = m_pageBackups.current();
371 while (m_pageBackups.last() != currentBackup) { 373 while (m_pageBackups.last() != currentBackup) {
372 m_pageBackups.removeLast(); 374 m_pageBackups.removeLast();
373 } 375 }
374 376
375 while (m_pageBackups.count() >= (5 + 1)) { 377 while (m_pageBackups.count() >= (PAGE_BACKUPS + 1)) {
376 m_pageBackups.removeFirst(); 378 m_pageBackups.removeFirst();
377 } 379 }
378 380
379 m_pageBackups.append(new Page(*(m_pages.current()))); 381 m_pageBackups.append(new Page(*(m_pages.current())));
380 382
381 emit pageBackupsChanged(); 383 emit pageBackupsChanged();
382} 384}
383 385
384void DrawPadCanvas::deleteAll() 386void DrawPadCanvas::deleteAll()
385{ 387{
386 m_pages.clear(); 388 m_pages.clear();
387 389
388 m_pages.append(new Page("", contentsRect().size())); 390 m_pages.append(new Page("", contentsRect().size()));
389 m_pages.current()->fill(Qt::white); 391 m_pages.current()->fill(Qt::white);
390 392
391 m_pageBackups.clear(); 393 m_pageBackups.clear();
392 m_pageBackups.append(new Page(*(m_pages.current()))); 394 m_pageBackups.append(new Page(*(m_pages.current())));
393 395
394 resizeContents(m_pages.current()->width(), m_pages.current()->height()); 396 resizeContents(m_pages.current()->width(), m_pages.current()->height());
395 viewport()->update(); 397 viewport()->update();
396 398
397 emit pagesChanged(); 399 emit pagesChanged();
398 emit pageBackupsChanged(); 400 emit pageBackupsChanged();
399} 401}
400 402
401void DrawPadCanvas::newPage(QString title, uint width, uint height, const QColor& color) 403void DrawPadCanvas::newPage(QString title, uint width, uint height, const QColor& color)
402{ 404{
403 m_pages.insert(m_pages.at() + 1, new Page(title, width, height)); 405 m_pages.insert(m_pages.at() + 1, new Page(title, width, height));
404 m_pages.current()->fill(color); 406 m_pages.current()->fill(color);
405 407
406 m_pageBackups.clear(); 408 m_pageBackups.clear();
407 m_pageBackups.append(new Page(*(m_pages.current()))); 409 m_pageBackups.append(new Page(*(m_pages.current())));
408 410
409 resizeContents(m_pages.current()->width(), m_pages.current()->height()); 411 resizeContents(m_pages.current()->width(), m_pages.current()->height());
410 viewport()->update(); 412 viewport()->update();
411 413
412 emit pagesChanged(); 414 emit pagesChanged();
413 emit pageBackupsChanged(); 415 emit pageBackupsChanged();
414} 416}
415 417
416void DrawPadCanvas::clearPage() 418void DrawPadCanvas::clearPage()
417{ 419{
418 m_pages.current()->fill(Qt::white); 420 m_pages.current()->fill(Qt::white);
419 421
420 m_pageBackups.clear(); 422 m_pageBackups.clear();
421 m_pageBackups.append(new Page(*(m_pages.current()))); 423 m_pageBackups.append(new Page(*(m_pages.current())));
422 424
423 resizeContents(m_pages.current()->width(), m_pages.current()->height()); 425 resizeContents(m_pages.current()->width(), m_pages.current()->height());
424 viewport()->update(); 426 viewport()->update();
425 427
426 emit pageBackupsChanged(); 428 emit pageBackupsChanged();
427} 429}
428 430
429void DrawPadCanvas::deletePage() 431void DrawPadCanvas::deletePage()
430{ 432{
431 m_pages.remove(m_pages.current()); 433 m_pages.remove(m_pages.current());
432 434
433 if (m_pages.isEmpty()) { 435 if (m_pages.isEmpty()) {
434 m_pages.append(new Page("", contentsRect().size())); 436 m_pages.append(new Page("", contentsRect().size()));
435 m_pages.current()->fill(Qt::white); 437 m_pages.current()->fill(Qt::white);
436 } 438 }
437 439
438 m_pageBackups.clear(); 440 m_pageBackups.clear();
439 m_pageBackups.append(new Page(*(m_pages.current()))); 441 m_pageBackups.append(new Page(*(m_pages.current())));
440 442
441 resizeContents(m_pages.current()->width(), m_pages.current()->height()); 443 resizeContents(m_pages.current()->width(), m_pages.current()->height());
442 viewport()->update(); 444 viewport()->update();
443 445
444 emit pagesChanged(); 446 emit pagesChanged();
445 emit pageBackupsChanged(); 447 emit pageBackupsChanged();
446} 448}
447 449
448void DrawPadCanvas::movePageUp() 450void DrawPadCanvas::movePageUp()
449{ 451{
450 int index = m_pages.at(); 452 int index = m_pages.at();
451 Page* page = m_pages.take(); 453 Page* page = m_pages.take();
452 m_pages.insert(index - 1, page); 454 m_pages.insert(index - 1, page);
453 455
454 emit pagesChanged(); 456 emit pagesChanged();
455} 457}
456 458
457void DrawPadCanvas::movePageDown() 459void DrawPadCanvas::movePageDown()
458{ 460{
459 int index = m_pages.at(); 461 int index = m_pages.at();
460 Page* page = m_pages.take(); 462 Page* page = m_pages.take();
461 m_pages.insert(index + 1, page); 463 m_pages.insert(index + 1, page);
462 464
463 emit pagesChanged(); 465 emit pagesChanged();
464} 466}
465 467
466bool DrawPadCanvas::undoEnabled() 468bool DrawPadCanvas::undoEnabled()
467{ 469{
468 return (m_pageBackups.current() != m_pageBackups.getFirst()); 470 return (m_pageBackups.current() != m_pageBackups.getFirst());
469} 471}
470 472
471bool DrawPadCanvas::redoEnabled() 473bool DrawPadCanvas::redoEnabled()
472{ 474{
473 return (m_pageBackups.current() != m_pageBackups.getLast()); 475 return (m_pageBackups.current() != m_pageBackups.getLast());
474} 476}
475 477
476bool DrawPadCanvas::goPreviousPageEnabled() 478bool DrawPadCanvas::goPreviousPageEnabled()
477{ 479{
478 return (m_pages.current() != m_pages.getFirst()); 480 return (m_pages.current() != m_pages.getFirst());
479} 481}
480 482
481bool DrawPadCanvas::goNextPageEnabled() 483bool DrawPadCanvas::goNextPageEnabled()
482{ 484{
483 return (m_pages.current() != m_pages.getLast()); 485 return (m_pages.current() != m_pages.getLast());
484} 486}
485 487
486void DrawPadCanvas::undo() 488void DrawPadCanvas::undo()
487{ 489{
488 *(m_pages.current()) = *(m_pageBackups.prev()); 490 *(m_pages.current()) = *(m_pageBackups.prev());
489 491
490 viewport()->update(); 492 viewport()->update();
491 493
492 emit pageBackupsChanged(); 494 emit pageBackupsChanged();
493} 495}
494 496
495void DrawPadCanvas::redo() 497void DrawPadCanvas::redo()
496{ 498{
497 *(m_pages.current()) = *(m_pageBackups.next()); 499 *(m_pages.current()) = *(m_pageBackups.next());
498 500
499 viewport()->update(); 501 viewport()->update();
500 502
501 emit pageBackupsChanged(); 503 emit pageBackupsChanged();
502} 504}
503 505