summaryrefslogtreecommitdiff
path: root/noncore/graphics/drawpad/page.cpp
Unidiff
Diffstat (limited to 'noncore/graphics/drawpad/page.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/graphics/drawpad/page.cpp60
1 files changed, 57 insertions, 3 deletions
diff --git a/noncore/graphics/drawpad/page.cpp b/noncore/graphics/drawpad/page.cpp
index 601d1c3..fbf3d01 100644
--- a/noncore/graphics/drawpad/page.cpp
+++ b/noncore/graphics/drawpad/page.cpp
@@ -13,28 +13,41 @@
13 13
14#include "page.h" 14#include "page.h"
15 15
16const int PAGE_BACKUPS = 99;
17
16Page::Page() 18Page::Page()
17 : QPixmap()
18{ 19{
20 m_title = "";
19 m_lastModified = QDateTime::currentDateTime(); 21 m_lastModified = QDateTime::currentDateTime();
22 m_pPixmap = new QPixmap();
23
24 m_backHistory.setAutoDelete(true);
25 m_forwardHistory.setAutoDelete(true);
20} 26}
21 27
22Page::Page(QString title, int w, int h) 28Page::Page(QString title, int w, int h)
23 : QPixmap(w, h)
24{ 29{
25 m_title = title; 30 m_title = title;
26 m_lastModified = QDateTime::currentDateTime(); 31 m_lastModified = QDateTime::currentDateTime();
32 m_pPixmap = new QPixmap(w, h);
33
34 m_backHistory.setAutoDelete(true);
35 m_forwardHistory.setAutoDelete(true);
27} 36}
28 37
29Page::Page(QString title, const QSize& size) 38Page::Page(QString title, const QSize& size)
30 : QPixmap(size)
31{ 39{
32 m_title = title; 40 m_title = title;
33 m_lastModified = QDateTime::currentDateTime(); 41 m_lastModified = QDateTime::currentDateTime();
42 m_pPixmap = new QPixmap(size);
43
44 m_backHistory.setAutoDelete(true);
45 m_forwardHistory.setAutoDelete(true);
34} 46}
35 47
36Page::~Page() 48Page::~Page()
37{ 49{
50 delete m_pPixmap;
38} 51}
39 52
40QString Page::title() const 53QString Page::title() const
@@ -47,6 +60,12 @@ QDateTime Page::lastModified() const
47 return m_lastModified; 60 return m_lastModified;
48} 61}
49 62
63QPixmap* Page::pixmap() const
64
65{
66 return m_pPixmap;
67}
68
50void Page::setTitle(QString title) 69void Page::setTitle(QString title)
51{ 70{
52 m_title = title; 71 m_title = title;
@@ -57,3 +76,38 @@ void Page::setLastModified(QDateTime lastModified)
57 m_lastModified = lastModified; 76 m_lastModified = lastModified;
58} 77}
59 78
79bool Page::undoEnabled()
80{
81 return (!m_backHistory.isEmpty());
82}
83
84bool Page::redoEnabled()
85{
86 return (!m_forwardHistory.isEmpty());
87}
88
89void Page::backup()
90{
91 setLastModified(QDateTime::currentDateTime());
92
93 while (m_backHistory.count() >= (PAGE_BACKUPS + 1)) {
94 m_backHistory.removeFirst();
95 }
96
97 m_backHistory.append(new QPixmap(*m_pPixmap));
98 m_forwardHistory.clear();
99}
100
101void Page::undo()
102{
103 m_forwardHistory.append(new QPixmap(*m_pPixmap));
104 m_pPixmap = new QPixmap(*(m_backHistory.last()));
105 m_backHistory.removeLast();
106}
107
108void Page::redo()
109{
110 m_backHistory.append(new QPixmap(*m_pPixmap));
111 m_pPixmap = new QPixmap(*(m_forwardHistory.last()));
112 m_forwardHistory.removeLast();
113}