summaryrefslogtreecommitdiff
path: root/noncore/graphics/drawpad/page.cpp
authorleseb <leseb>2002-07-10 21:59:27 (UTC)
committer leseb <leseb>2002-07-10 21:59:27 (UTC)
commitf568737c20bea96fb79d85681a72e142ec05d66f (patch) (side-by-side diff)
tree80d08b351bbdeec5be93885a4c18ba0207ef990a /noncore/graphics/drawpad/page.cpp
parent01b04adb73c8bc49938b71a4bebe6fb6a5477f75 (diff)
downloadopie-f568737c20bea96fb79d85681a72e142ec05d66f.zip
opie-f568737c20bea96fb79d85681a72e142ec05d66f.tar.gz
opie-f568737c20bea96fb79d85681a72e142ec05d66f.tar.bz2
Undo/redo reimplemented
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 @@
#include "page.h"
+const int PAGE_BACKUPS = 99;
+
Page::Page()
- : QPixmap()
{
+ m_title = "";
m_lastModified = QDateTime::currentDateTime();
+ m_pPixmap = new QPixmap();
+
+ m_backHistory.setAutoDelete(true);
+ m_forwardHistory.setAutoDelete(true);
}
Page::Page(QString title, int w, int h)
- : QPixmap(w, h)
{
m_title = title;
m_lastModified = QDateTime::currentDateTime();
+ m_pPixmap = new QPixmap(w, h);
+
+ m_backHistory.setAutoDelete(true);
+ m_forwardHistory.setAutoDelete(true);
}
Page::Page(QString title, const QSize& size)
- : QPixmap(size)
{
m_title = title;
m_lastModified = QDateTime::currentDateTime();
+ m_pPixmap = new QPixmap(size);
+
+ m_backHistory.setAutoDelete(true);
+ m_forwardHistory.setAutoDelete(true);
}
Page::~Page()
{
+ delete m_pPixmap;
}
QString Page::title() const
@@ -47,6 +60,12 @@ QDateTime Page::lastModified() const
return m_lastModified;
}
+QPixmap* Page::pixmap() const
+
+{
+ return m_pPixmap;
+}
+
void Page::setTitle(QString title)
{
m_title = title;
@@ -57,3 +76,38 @@ void Page::setLastModified(QDateTime lastModified)
m_lastModified = lastModified;
}
+bool Page::undoEnabled()
+{
+ return (!m_backHistory.isEmpty());
+}
+
+bool Page::redoEnabled()
+{
+ return (!m_forwardHistory.isEmpty());
+}
+
+void Page::backup()
+{
+ setLastModified(QDateTime::currentDateTime());
+
+ while (m_backHistory.count() >= (PAGE_BACKUPS + 1)) {
+ m_backHistory.removeFirst();
+ }
+
+ m_backHistory.append(new QPixmap(*m_pPixmap));
+ m_forwardHistory.clear();
+}
+
+void Page::undo()
+{
+ m_forwardHistory.append(new QPixmap(*m_pPixmap));
+ m_pPixmap = new QPixmap(*(m_backHistory.last()));
+ m_backHistory.removeLast();
+}
+
+void Page::redo()
+{
+ m_backHistory.append(new QPixmap(*m_pPixmap));
+ m_pPixmap = new QPixmap(*(m_forwardHistory.last()));
+ m_forwardHistory.removeLast();
+}