Kaydet (Commit) 9480ff6a authored tarafından Miklos Vajna's avatar Miklos Vajna

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/41245Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarMiklos Vajna <vmiklos@collabora.co.uk>
üst d21b119d
......@@ -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;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment