Diffstat (limited to 'noncore/graphics/drawpad/drawpadcanvas.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/graphics/drawpad/drawpadcanvas.cpp | 146 |
1 files changed, 37 insertions, 109 deletions
diff --git a/noncore/graphics/drawpad/drawpadcanvas.cpp b/noncore/graphics/drawpad/drawpadcanvas.cpp index 05dd408..025bebb 100644 --- a/noncore/graphics/drawpad/drawpadcanvas.cpp +++ b/noncore/graphics/drawpad/drawpadcanvas.cpp @@ -29,6 +29,4 @@ #include <qxml.h> -const int PAGE_BACKUPS = 99; - class DrawPadCanvasXmlHandler: public QXmlDefaultHandler { @@ -150,5 +148,5 @@ bool DrawPadCanvasXmlHandler::characters(const QString& ch) Page* page = new Page(m_title, image.width(), image.height()); page->setLastModified(m_date); - page->convertFromImage(image); + page->pixmap()->convertFromImage(image); m_pages.append(page); } @@ -162,5 +160,4 @@ DrawPadCanvas::DrawPadCanvas(DrawPad* drawPad, QWidget* parent, const char* name m_pDrawPad = drawPad; m_pages.setAutoDelete(true); - m_pageBackups.setAutoDelete(true); viewport()->setBackgroundMode(QWidget::NoBackground); @@ -187,15 +184,11 @@ void DrawPadCanvas::load(QIODevice* ioDevice) if (m_pages.isEmpty()) { m_pages.append(new Page("", contentsRect().size())); - m_pages.current()->fill(Qt::white); + m_pages.current()->pixmap()->fill(Qt::white); } - m_pageBackups.clear(); - m_pageBackups.append(new Page(*(m_pages.current()))); - - resizeContents(m_pages.current()->width(), m_pages.current()->height()); + resizeContents(m_pages.current()->pixmap()->width(), m_pages.current()->pixmap()->height()); viewport()->update(); emit pagesChanged(); - emit pageBackupsChanged(); } @@ -203,14 +196,10 @@ void DrawPadCanvas::initialPage() { m_pages.append(new Page("", 236, 232)); - m_pages.current()->fill(Qt::white); - - m_pageBackups.clear(); - m_pageBackups.append(new Page(*(m_pages.current()))); + m_pages.current()->pixmap()->fill(Qt::white); - resizeContents(m_pages.current()->width(), m_pages.current()->height()); + resizeContents(m_pages.current()->pixmap()->width(), m_pages.current()->pixmap()->height()); viewport()->update(); emit pagesChanged(); - emit pageBackupsChanged(); } @@ -228,9 +217,9 @@ void DrawPadCanvas::save(QIODevice* ioDevice) textStream << " <image>" << endl; textStream << " <title>" << bufferIterator.current()->title() << "</title>" << endl; - + int intDate = QDateTime(QDate(1970, 1, 1)).secsTo(bufferIterator.current()->lastModified()); textStream << " <date>" << intDate << "</date>" << endl; - QImage image = bufferIterator.current()->convertToImage(); + QImage image = bufferIterator.current()->pixmap()->convertToImage(); QByteArray byteArray; QBuffer buffer(byteArray); @@ -264,15 +253,11 @@ void DrawPadCanvas::importPage(const QString& fileName) Page* importedPage = new Page(); - importedPage->load(fileName); + importedPage->pixmap()->load(fileName); m_pages.insert(m_pages.at() + 1, importedPage); - m_pageBackups.clear(); - m_pageBackups.append(new Page(*(m_pages.current()))); - - resizeContents(m_pages.current()->width(), m_pages.current()->height()); + resizeContents(m_pages.current()->pixmap()->width(), m_pages.current()->pixmap()->height()); viewport()->update(); emit pagesChanged(); - emit pageBackupsChanged(); } @@ -290,5 +275,5 @@ void DrawPadCanvas::exportPage(uint fromPage, uint toPage, const QString& name,c QImageIO imageIO(ioDevice, format); - QImage image = m_pages.current()->convertToImage(); + QImage image = m_pages.current()->pixmap()->convertToImage(); imageIO.setImage(image); imageIO.write(); @@ -306,5 +291,5 @@ void DrawPadCanvas::exportPage(uint fromPage, uint toPage, const QString& name,c QImageIO imageIO(ioDevice, format); - QImage image = m_pages.at(i - 1)->convertToImage(); + QImage image = m_pages.at(i - 1)->pixmap()->convertToImage(); imageIO.setImage(image); imageIO.write(); @@ -337,43 +322,26 @@ void DrawPadCanvas::selectPage(Page* page) { m_pages.findRef(page); - m_pageBackups.clear(); - m_pageBackups.append(new Page(*(m_pages.current()))); - resizeContents(m_pages.current()->width(), m_pages.current()->height()); + resizeContents(m_pages.current()->pixmap()->width(), m_pages.current()->pixmap()->height()); viewport()->update(); emit pagesChanged(); - emit pageBackupsChanged(); } -void DrawPadCanvas::selectPage(uint pagePosition) +void DrawPadCanvas::backupPage() { - m_pages.at(pagePosition - 1); - m_pageBackups.clear(); - m_pageBackups.append(new Page(*(m_pages.current()))); - - resizeContents(m_pages.current()->width(), m_pages.current()->height()); - viewport()->update(); + m_pages.current()->backup(); emit pagesChanged(); - emit pageBackupsChanged(); } -void DrawPadCanvas::backupPage() +void DrawPadCanvas::selectPage(uint pagePosition) { - m_pages.current()->setLastModified(QDateTime::currentDateTime()); - - Page* currentBackup = m_pageBackups.current(); - while (m_pageBackups.last() != currentBackup) { - m_pageBackups.removeLast(); - } - - while (m_pageBackups.count() >= (PAGE_BACKUPS + 1)) { - m_pageBackups.removeFirst(); - } + m_pages.at(pagePosition - 1); - m_pageBackups.append(new Page(*(m_pages.current()))); + resizeContents(m_pages.current()->pixmap()->width(), m_pages.current()->pixmap()->height()); + viewport()->update(); - emit pageBackupsChanged(); + emit pagesChanged(); } @@ -383,14 +351,10 @@ void DrawPadCanvas::deleteAll() m_pages.append(new Page("", contentsRect().size())); - m_pages.current()->fill(Qt::white); + m_pages.current()->pixmap()->fill(Qt::white); - m_pageBackups.clear(); - m_pageBackups.append(new Page(*(m_pages.current()))); - - resizeContents(m_pages.current()->width(), m_pages.current()->height()); + resizeContents(m_pages.current()->pixmap()->width(), m_pages.current()->pixmap()->height()); viewport()->update(); emit pagesChanged(); - emit pageBackupsChanged(); } @@ -398,27 +362,18 @@ void DrawPadCanvas::newPage(QString title, uint width, uint height, const QColor { m_pages.insert(m_pages.at() + 1, new Page(title, width, height)); - m_pages.current()->fill(color); - - m_pageBackups.clear(); - m_pageBackups.append(new Page(*(m_pages.current()))); + m_pages.current()->pixmap()->fill(color); - resizeContents(m_pages.current()->width(), m_pages.current()->height()); + resizeContents(m_pages.current()->pixmap()->width(), m_pages.current()->pixmap()->height()); viewport()->update(); emit pagesChanged(); - emit pageBackupsChanged(); } void DrawPadCanvas::clearPage() { - m_pages.current()->fill(Qt::white); + m_pages.current()->pixmap()->fill(Qt::white); - m_pageBackups.clear(); - m_pageBackups.append(new Page(*(m_pages.current()))); - - resizeContents(m_pages.current()->width(), m_pages.current()->height()); + resizeContents(m_pages.current()->pixmap()->width(), m_pages.current()->pixmap()->height()); viewport()->update(); - - emit pageBackupsChanged(); } @@ -429,15 +384,11 @@ void DrawPadCanvas::deletePage() if (m_pages.isEmpty()) { m_pages.append(new Page("", contentsRect().size())); - m_pages.current()->fill(Qt::white); + m_pages.current()->pixmap()->fill(Qt::white); } - m_pageBackups.clear(); - m_pageBackups.append(new Page(*(m_pages.current()))); - - resizeContents(m_pages.current()->width(), m_pages.current()->height()); + resizeContents(m_pages.current()->pixmap()->width(), m_pages.current()->pixmap()->height()); viewport()->update(); emit pagesChanged(); - emit pageBackupsChanged(); } @@ -460,14 +411,4 @@ void DrawPadCanvas::movePageDown() } -bool DrawPadCanvas::undoEnabled() -{ - return (m_pageBackups.current() != m_pageBackups.getFirst()); -} - -bool DrawPadCanvas::redoEnabled() -{ - return (m_pageBackups.current() != m_pageBackups.getLast()); -} - bool DrawPadCanvas::goPreviousPageEnabled() { @@ -482,18 +423,18 @@ bool DrawPadCanvas::goNextPageEnabled() void DrawPadCanvas::undo() { - *(m_pages.current()) = *(m_pageBackups.prev()); + m_pages.current()->undo(); viewport()->update(); - emit pageBackupsChanged(); + emit pagesChanged(); } void DrawPadCanvas::redo() { - *(m_pages.current()) = *(m_pageBackups.next()); + m_pages.current()->redo(); viewport()->update(); - emit pageBackupsChanged(); + emit pagesChanged(); } @@ -501,12 +442,9 @@ void DrawPadCanvas::goFirstPage() { m_pages.first(); - m_pageBackups.clear(); - m_pageBackups.append(new Page(*(m_pages.current()))); - resizeContents(m_pages.current()->width(), m_pages.current()->height()); + resizeContents(m_pages.current()->pixmap()->width(), m_pages.current()->pixmap()->height()); viewport()->update(); emit pagesChanged(); - emit pageBackupsChanged(); } @@ -514,12 +452,9 @@ void DrawPadCanvas::goPreviousPage() { m_pages.prev(); - m_pageBackups.clear(); - m_pageBackups.append(new Page(*(m_pages.current()))); - resizeContents(m_pages.current()->width(), m_pages.current()->height()); + resizeContents(m_pages.current()->pixmap()->width(), m_pages.current()->pixmap()->height()); viewport()->update(); emit pagesChanged(); - emit pageBackupsChanged(); } @@ -527,12 +462,8 @@ void DrawPadCanvas::goNextPage() { m_pages.next(); - m_pageBackups.clear(); - m_pageBackups.append(new Page(*(m_pages.current()))); - - resizeContents(m_pages.current()->width(), m_pages.current()->height()); + resizeContents(m_pages.current()->pixmap()->width(), m_pages.current()->pixmap()->height()); viewport()->update(); emit pagesChanged(); - emit pageBackupsChanged(); } @@ -540,12 +471,9 @@ void DrawPadCanvas::goLastPage() { m_pages.last(); - m_pageBackups.clear(); - m_pageBackups.append(new Page(*(m_pages.current()))); - resizeContents(m_pages.current()->width(), m_pages.current()->height()); + resizeContents(m_pages.current()->pixmap()->width(), m_pages.current()->pixmap()->height()); viewport()->update(); emit pagesChanged(); - emit pageBackupsChanged(); } @@ -568,8 +496,8 @@ void DrawPadCanvas::drawContents(QPainter* p, int cx, int cy, int cw, int ch) { QRect clipRect(cx, cy, cw, ch); - QRect pixmapRect(0, 0, m_pages.current()->width(), m_pages.current()->height()); + QRect pixmapRect(0, 0, m_pages.current()->pixmap()->width(), m_pages.current()->pixmap()->height()); QRect drawRect = pixmapRect.intersect(clipRect); - p->drawPixmap(drawRect.topLeft(), *(m_pages.current()), drawRect); + p->drawPixmap(drawRect.topLeft(), *(m_pages.current()->pixmap()), drawRect); if (drawRect.right() < clipRect.right()) { |