src/lib/VSDXMetaData.cpp | 22 ++++++++++++++++++++++ src/lib/VSDXMetaData.h | 1 + src/lib/tokens.txt | 1 + src/test/data/fdo86664.vsdx |binary src/test/importtest.cpp | 1 + 5 files changed, 25 insertions(+)
New commits: commit e6a780adb90eb5122f03d4baeae3990972304bf5 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Mon Dec 22 10:40:25 2014 +0100 VSDX: import <dc:subject> Change-Id: I8685be2883d3fa9719aafd0f1c1e928f863fb2ce diff --git a/src/lib/VSDXMetaData.cpp b/src/lib/VSDXMetaData.cpp index fafa998..697d003 100644 --- a/src/lib/VSDXMetaData.cpp +++ b/src/lib/VSDXMetaData.cpp @@ -38,6 +38,24 @@ void libvisio::VSDXMetaData::readTitle(xmlTextReaderPtr reader) m_metaData.insert("dc:title", title); } +void libvisio::VSDXMetaData::readSubject(xmlTextReaderPtr reader) +{ + int ret = 1; + int tokenId = XML_TOKEN_INVALID; + int tokenType = -1; + librevenge::RVNGString subject; + do + { + ret = xmlTextReaderRead(reader); + tokenId = getElementToken(reader); + tokenType = xmlTextReaderNodeType(reader); + if (xmlTextReaderNodeType(reader) == XML_READER_TYPE_TEXT) + subject.append((const char *)xmlTextReaderConstValue(reader)); + } + while ((XML_DC_SUBJECT != tokenId || XML_READER_TYPE_END_ELEMENT != tokenType) && 1 == ret); + m_metaData.insert("dc:subject", subject); +} + void libvisio::VSDXMetaData::readCreated(xmlTextReaderPtr reader) { int ret = 1; @@ -94,6 +112,10 @@ void libvisio::VSDXMetaData::readCoreProperties(xmlTextReaderPtr reader) if (tokenType == XML_READER_TYPE_ELEMENT) readTitle(reader); break; + case XML_DC_SUBJECT: + if (tokenType == XML_READER_TYPE_ELEMENT) + readSubject(reader); + break; case XML_DCTERMS_CREATED: if (tokenType == XML_READER_TYPE_ELEMENT) readCreated(reader); diff --git a/src/lib/VSDXMetaData.h b/src/lib/VSDXMetaData.h index 5ef98b8..f8a8f9c 100644 --- a/src/lib/VSDXMetaData.h +++ b/src/lib/VSDXMetaData.h @@ -31,6 +31,7 @@ private: int getElementToken(xmlTextReaderPtr reader); void readCoreProperties(xmlTextReaderPtr reader); void readTitle(xmlTextReaderPtr reader); + void readSubject(xmlTextReaderPtr reader); void readCreated(xmlTextReaderPtr reader); void readModified(xmlTextReaderPtr reader); diff --git a/src/lib/tokens.txt b/src/lib/tokens.txt index 5bf651d..8e0db55 100644 --- a/src/lib/tokens.txt +++ b/src/lib/tokens.txt @@ -227,6 +227,7 @@ XForm XForm1D Y cp:coreProperties +dc:subject dc:title dcterms:created dcterms:modified diff --git a/src/test/data/fdo86664.vsdx b/src/test/data/fdo86664.vsdx index bad6caa..1aafa80 100644 Binary files a/src/test/data/fdo86664.vsdx and b/src/test/data/fdo86664.vsdx differ diff --git a/src/test/importtest.cpp b/src/test/importtest.cpp index 0e83ed2..00ee34e 100644 --- a/src/test/importtest.cpp +++ b/src/test/importtest.cpp @@ -140,6 +140,7 @@ void ImportTest::testVsdxMetadataTitle() m_doc = parse("fdo86664.vsdx", m_buffer); // The setDocumentMetaData() call was missing, so the node did not exist. assertXPath(m_doc, "/document/setDocumentMetaData", "title", "mytitle"); + assertXPath(m_doc, "/document/setDocumentMetaData", "subject", "mysubject"); // Test <dcterms:created> and <dcterms:modified>. assertXPath(m_doc, "/document/setDocumentMetaData", "creation-date", "2014-11-24T10:35:17Z"); assertXPath(m_doc, "/document/setDocumentMetaData", "date", "2014-11-24T10:41:22Z"); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits