writerperfect/source/writer/exp/txtparai.cxx | 46 +++++++++++++++++++++++++++ 1 file changed, 46 insertions(+)
New commits: commit 9480ff6a2b6057410940ff5c40828d5746898a0e Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Thu Aug 17 10:58:33 2017 +0200 EPUB export: implement link support Not only the link but the text of it was also unhandled, add code for both. Change-Id: Ic3a26db64a10d44f1f94b7358ed9103bb68bbe95 Reviewed-on: https://gerrit.libreoffice.org/41245 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Miklos Vajna <vmik...@collabora.co.uk> diff --git a/writerperfect/source/writer/exp/txtparai.cxx b/writerperfect/source/writer/exp/txtparai.cxx index 02e4f78c1ef5..72cc401ceb91 100644 --- a/writerperfect/source/writer/exp/txtparai.cxx +++ b/writerperfect/source/writer/exp/txtparai.cxx @@ -50,6 +50,50 @@ void XMLSpanContext::characters(const OUString &rChars) mrImport.GetGenerator().insertText(librevenge::RVNGString(sCharU8.getStr())); } +/// Handler for <text:a>. +class XMLHyperlinkContext : public XMLImportContext +{ +public: + XMLHyperlinkContext(XMLImport &rImport); + + void SAL_CALL startElement(const OUString &rName, const css::uno::Reference<css::xml::sax::XAttributeList> &xAttribs) override; + void SAL_CALL endElement(const OUString &rName) override; + void SAL_CALL characters(const OUString &rChars) override; +}; + +XMLHyperlinkContext::XMLHyperlinkContext(XMLImport &rImport) + : XMLImportContext(rImport) +{ +} + +void XMLHyperlinkContext::startElement(const OUString &/*rName*/, const css::uno::Reference<css::xml::sax::XAttributeList> &xAttribs) +{ + librevenge::RVNGPropertyList aPropertyList; + for (sal_Int16 i = 0; i < xAttribs->getLength(); ++i) + { + const OUString &rAttributeName = xAttribs->getNameByIndex(i); + if (rAttributeName == "xlink:href") + { + OString sName = OUStringToOString(rAttributeName, RTL_TEXTENCODING_UTF8); + OString sValue = OUStringToOString(xAttribs->getValueByIndex(i), RTL_TEXTENCODING_UTF8); + aPropertyList.insert(sName.getStr(), sValue.getStr()); + } + } + + mrImport.GetGenerator().openLink(aPropertyList); +} + +void XMLHyperlinkContext::endElement(const OUString &/*rName*/) +{ + mrImport.GetGenerator().closeLink(); +} + +void XMLHyperlinkContext::characters(const OUString &rChars) +{ + OString sCharU8 = OUStringToOString(rChars, RTL_TEXTENCODING_UTF8); + mrImport.GetGenerator().insertText(librevenge::RVNGString(sCharU8.getStr())); +} + XMLParaContext::XMLParaContext(XMLImport &rImport) : XMLImportContext(rImport) { @@ -59,6 +103,8 @@ XMLImportContext *XMLParaContext::CreateChildContext(const OUString &rName, cons { if (rName == "text:span") return new XMLSpanContext(mrImport); + if (rName == "text:a") + return new XMLHyperlinkContext(mrImport); return nullptr; } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits