Diffstat (limited to 'noncore/graphics/drawpad/drawpadcanvas.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/graphics/drawpad/drawpadcanvas.cpp | 48 |
1 files changed, 37 insertions, 11 deletions
diff --git a/noncore/graphics/drawpad/drawpadcanvas.cpp b/noncore/graphics/drawpad/drawpadcanvas.cpp index bcb6877..dcf0871 100644 --- a/noncore/graphics/drawpad/drawpadcanvas.cpp +++ b/noncore/graphics/drawpad/drawpadcanvas.cpp @@ -48,8 +48,12 @@ private: enum State { Unknown, + InTitle, + InDate, InData }; State m_state; + QString m_title; + QDateTime m_date; ulong m_dataLenght; QString m_dataFormat; @@ -77,5 +81,12 @@ bool DrawPadCanvasXmlHandler::startElement(const QString& namespaceURI, const QS Q_CONST_UNUSED(localName) - if (qName.compare("data") == 0) { + if (qName == "image") { + m_title = QString(); + m_date = QDateTime(QDate(1970, 1, 1)); + } else if (qName == "title") { + m_state = InTitle; + } else if (qName == "date") { + m_state = InDate; + } else if (qName == "data") { m_state = InData; m_dataLenght = atts.value("length").toULong(); @@ -96,5 +107,9 @@ bool DrawPadCanvasXmlHandler::endElement(const QString& namespaceURI, const QStr Q_CONST_UNUSED(localName) - if (qName.compare("data") == 0) { + if (qName == "title") { + m_state = Unknown; + } else if (qName == "date") { + m_state = Unknown; + } else if (qName == "data") { m_state = Unknown; } @@ -105,5 +120,9 @@ bool DrawPadCanvasXmlHandler::endElement(const QString& namespaceURI, const QStr bool DrawPadCanvasXmlHandler::characters(const QString& ch) { - if (m_state == InData) { + if (m_state == InTitle) { + m_title = ch; + } else if (m_state == InDate) { + m_date = m_date.addSecs(ch.toInt()); + } else if (m_state == InData) { QByteArray byteArray(ch.length() / 2); @@ -146,5 +165,6 @@ bool DrawPadCanvasXmlHandler::characters(const QString& ch) } - Page* page = new Page(image.width(), image.height()); + Page* page = new Page(m_title, image.width(), image.height()); + page->setLastModified(m_date); page->convertFromImage(image); m_pages.append(page); @@ -183,5 +203,5 @@ void DrawPadCanvas::load(QIODevice* ioDevice) if (m_pages.isEmpty()) { - m_pages.append(new Page(contentsRect().size())); + m_pages.append(new Page("", contentsRect().size())); m_pages.current()->fill(Qt::white); } @@ -199,5 +219,5 @@ void DrawPadCanvas::load(QIODevice* ioDevice) void DrawPadCanvas::initialPage() { - m_pages.append(new Page(236, 232)); + m_pages.append(new Page("", 236, 232)); m_pages.current()->fill(Qt::white); @@ -224,4 +244,8 @@ void DrawPadCanvas::save(QIODevice* ioDevice) for (bufferIterator.toFirst(); bufferIterator.current() != 0; ++bufferIterator) { 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(); @@ -342,5 +366,7 @@ void DrawPadCanvas::selectPage(Page* page) void DrawPadCanvas::backupPage() { - QPixmap* currentBackup = m_pageBackups.current(); + m_pages.current()->setLastModified(QDateTime::currentDateTime()); + + Page* currentBackup = m_pageBackups.current(); while (m_pageBackups.last() != currentBackup) { m_pageBackups.removeLast(); @@ -360,5 +386,5 @@ void DrawPadCanvas::deleteAll() m_pages.clear(); - m_pages.append(new Page(contentsRect().size())); + m_pages.append(new Page("", contentsRect().size())); m_pages.current()->fill(Qt::white); @@ -373,7 +399,7 @@ void DrawPadCanvas::deleteAll() } -void DrawPadCanvas::newPage(uint width, uint height, const QColor& color) +void DrawPadCanvas::newPage(QString title, uint width, uint height, const QColor& color) { - m_pages.insert(m_pages.at() + 1, new Page(width, height)); + m_pages.insert(m_pages.at() + 1, new Page(title, width, height)); m_pages.current()->fill(color); @@ -406,5 +432,5 @@ void DrawPadCanvas::deletePage() if (m_pages.isEmpty()) { - m_pages.append(new Page(contentsRect().size())); + m_pages.append(new Page("", contentsRect().size())); m_pages.current()->fill(Qt::white); } |