Diffstat (limited to 'noncore/graphics/drawpad/drawpadcanvas.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/graphics/drawpad/drawpadcanvas.cpp | 50 |
1 files changed, 38 insertions, 12 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 | |||
@@ -47,10 +47,14 @@ public: | |||
47 | private: | 47 | private: |
48 | enum State { | 48 | enum State { |
49 | Unknown, | 49 | Unknown, |
50 | InTitle, | ||
51 | InDate, | ||
50 | InData | 52 | InData |
51 | }; | 53 | }; |
52 | 54 | ||
53 | State m_state; | 55 | State m_state; |
56 | QString m_title; | ||
57 | QDateTime m_date; | ||
54 | ulong m_dataLenght; | 58 | ulong m_dataLenght; |
55 | QString m_dataFormat; | 59 | QString m_dataFormat; |
56 | QList<Page> m_pages; | 60 | QList<Page> m_pages; |
@@ -76,7 +80,14 @@ bool DrawPadCanvasXmlHandler::startElement(const QString& namespaceURI, const QS | |||
76 | Q_CONST_UNUSED(namespaceURI) | 80 | Q_CONST_UNUSED(namespaceURI) |
77 | Q_CONST_UNUSED(localName) | 81 | Q_CONST_UNUSED(localName) |
78 | 82 | ||
79 | if (qName.compare("data") == 0) { | 83 | if (qName == "image") { |
84 | m_title = QString(); | ||
85 | m_date = QDateTime(QDate(1970, 1, 1)); | ||
86 | } else if (qName == "title") { | ||
87 | m_state = InTitle; | ||
88 | } else if (qName == "date") { | ||
89 | m_state = InDate; | ||
90 | } else if (qName == "data") { | ||
80 | m_state = InData; | 91 | m_state = InData; |
81 | m_dataLenght = atts.value("length").toULong(); | 92 | m_dataLenght = atts.value("length").toULong(); |
82 | m_dataFormat = atts.value("format"); | 93 | m_dataFormat = atts.value("format"); |
@@ -95,16 +106,24 @@ bool DrawPadCanvasXmlHandler::endElement(const QString& namespaceURI, const QStr | |||
95 | Q_CONST_UNUSED(namespaceURI) | 106 | Q_CONST_UNUSED(namespaceURI) |
96 | Q_CONST_UNUSED(localName) | 107 | Q_CONST_UNUSED(localName) |
97 | 108 | ||
98 | if (qName.compare("data") == 0) { | 109 | if (qName == "title") { |
110 | m_state = Unknown; | ||
111 | } else if (qName == "date") { | ||
112 | m_state = Unknown; | ||
113 | } else if (qName == "data") { | ||
99 | m_state = Unknown; | 114 | m_state = Unknown; |
100 | } | 115 | } |
101 | 116 | ||
102 | return true; | 117 | return true; |
103 | } | 118 | } |
104 | 119 | ||
105 | bool DrawPadCanvasXmlHandler::characters(const QString& ch) | 120 | bool DrawPadCanvasXmlHandler::characters(const QString& ch) |
106 | { | 121 | { |
107 | if (m_state == InData) { | 122 | if (m_state == InTitle) { |
123 | m_title = ch; | ||
124 | } else if (m_state == InDate) { | ||
125 | m_date = m_date.addSecs(ch.toInt()); | ||
126 | } else if (m_state == InData) { | ||
108 | QByteArray byteArray(ch.length() / 2); | 127 | QByteArray byteArray(ch.length() / 2); |
109 | 128 | ||
110 | for (int i = 0; i < (int)ch.length() / 2; i++) { | 129 | for (int i = 0; i < (int)ch.length() / 2; i++) { |
@@ -145,7 +164,8 @@ bool DrawPadCanvasXmlHandler::characters(const QString& ch) | |||
145 | image.loadFromData((const uchar*)byteArray.data(), m_dataLenght, m_dataFormat); | 164 | image.loadFromData((const uchar*)byteArray.data(), m_dataLenght, m_dataFormat); |
146 | } | 165 | } |
147 | 166 | ||
148 | Page* page = new Page(image.width(), image.height()); | 167 | Page* page = new Page(m_title, image.width(), image.height()); |
168 | page->setLastModified(m_date); | ||
149 | page->convertFromImage(image); | 169 | page->convertFromImage(image); |
150 | m_pages.append(page); | 170 | m_pages.append(page); |
151 | } | 171 | } |
@@ -182,7 +202,7 @@ void DrawPadCanvas::load(QIODevice* ioDevice) | |||
182 | m_pages = drawPadCanvasXmlHandler.pages(); | 202 | m_pages = drawPadCanvasXmlHandler.pages(); |
183 | 203 | ||
184 | if (m_pages.isEmpty()) { | 204 | if (m_pages.isEmpty()) { |
185 | m_pages.append(new Page(contentsRect().size())); | 205 | m_pages.append(new Page("", contentsRect().size())); |
186 | m_pages.current()->fill(Qt::white); | 206 | m_pages.current()->fill(Qt::white); |
187 | } | 207 | } |
188 | 208 | ||
@@ -198,7 +218,7 @@ void DrawPadCanvas::load(QIODevice* ioDevice) | |||
198 | 218 | ||
199 | void DrawPadCanvas::initialPage() | 219 | void DrawPadCanvas::initialPage() |
200 | { | 220 | { |
201 | m_pages.append(new Page(236, 232)); | 221 | m_pages.append(new Page("", 236, 232)); |
202 | m_pages.current()->fill(Qt::white); | 222 | m_pages.current()->fill(Qt::white); |
203 | 223 | ||
204 | m_pageBackups.clear(); | 224 | m_pageBackups.clear(); |
@@ -223,6 +243,10 @@ void DrawPadCanvas::save(QIODevice* ioDevice) | |||
223 | 243 | ||
224 | for (bufferIterator.toFirst(); bufferIterator.current() != 0; ++bufferIterator) { | 244 | for (bufferIterator.toFirst(); bufferIterator.current() != 0; ++bufferIterator) { |
225 | textStream << " <image>" << endl; | 245 | textStream << " <image>" << endl; |
246 | textStream << " <title>" << bufferIterator.current()->title() << "</title>" << endl; | ||
247 | |||
248 | int intDate = QDateTime(QDate(1970, 1, 1)).secsTo(bufferIterator.current()->lastModified()); | ||
249 | textStream << " <date>" << intDate << "</date>" << endl; | ||
226 | 250 | ||
227 | QImage image = bufferIterator.current()->convertToImage(); | 251 | QImage image = bufferIterator.current()->convertToImage(); |
228 | QByteArray byteArray; | 252 | QByteArray byteArray; |
@@ -341,7 +365,9 @@ void DrawPadCanvas::selectPage(Page* page) | |||
341 | 365 | ||
342 | void DrawPadCanvas::backupPage() | 366 | void DrawPadCanvas::backupPage() |
343 | { | 367 | { |
344 | QPixmap* currentBackup = m_pageBackups.current(); | 368 | m_pages.current()->setLastModified(QDateTime::currentDateTime()); |
369 | |||
370 | Page* currentBackup = m_pageBackups.current(); | ||
345 | while (m_pageBackups.last() != currentBackup) { | 371 | while (m_pageBackups.last() != currentBackup) { |
346 | m_pageBackups.removeLast(); | 372 | m_pageBackups.removeLast(); |
347 | } | 373 | } |
@@ -359,7 +385,7 @@ void DrawPadCanvas::deleteAll() | |||
359 | { | 385 | { |
360 | m_pages.clear(); | 386 | m_pages.clear(); |
361 | 387 | ||
362 | m_pages.append(new Page(contentsRect().size())); | 388 | m_pages.append(new Page("", contentsRect().size())); |
363 | m_pages.current()->fill(Qt::white); | 389 | m_pages.current()->fill(Qt::white); |
364 | 390 | ||
365 | m_pageBackups.clear(); | 391 | m_pageBackups.clear(); |
@@ -372,9 +398,9 @@ void DrawPadCanvas::deleteAll() | |||
372 | emit pageBackupsChanged(); | 398 | emit pageBackupsChanged(); |
373 | } | 399 | } |
374 | 400 | ||
375 | void DrawPadCanvas::newPage(uint width, uint height, const QColor& color) | 401 | void DrawPadCanvas::newPage(QString title, uint width, uint height, const QColor& color) |
376 | { | 402 | { |
377 | m_pages.insert(m_pages.at() + 1, new Page(width, height)); | 403 | m_pages.insert(m_pages.at() + 1, new Page(title, width, height)); |
378 | m_pages.current()->fill(color); | 404 | m_pages.current()->fill(color); |
379 | 405 | ||
380 | m_pageBackups.clear(); | 406 | m_pageBackups.clear(); |
@@ -405,7 +431,7 @@ void DrawPadCanvas::deletePage() | |||
405 | m_pages.remove(m_pages.current()); | 431 | m_pages.remove(m_pages.current()); |
406 | 432 | ||
407 | if (m_pages.isEmpty()) { | 433 | if (m_pages.isEmpty()) { |
408 | m_pages.append(new Page(contentsRect().size())); | 434 | m_pages.append(new Page("", contentsRect().size())); |
409 | m_pages.current()->fill(Qt::white); | 435 | m_pages.current()->fill(Qt::white); |
410 | } | 436 | } |
411 | 437 | ||