diff options
author | Miklos Vajna <vmiklos@collabora.com> | 2022-02-15 10:00:33 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2022-02-15 11:49:23 +0100 |
commit | 22d09d65c0e61cac1fa27af6a04a23e16f97c907 (patch) | |
tree | 497c84cf2abfad08341dd7a2fb32bff1cc65354f /sw | |
parent | c4f6fee3bea0d8618b5815e60304ff9359ccd21c (diff) |
sw HTML export: extract a SetupFilterFromPropertyValues()
From the two SetupFilterOptions() overloads, which meant that some
options were only possible to set from FilterOptions, and others were
only possible to set via UNO property values.
Change-Id: Ib7cdbb082e93b9ff105afe72f295994733b4525a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129955
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/filter/html/wrthtml.cxx | 120 | ||||
-rw-r--r-- | sw/source/filter/html/wrthtml.hxx | 2 |
2 files changed, 94 insertions, 28 deletions
diff --git a/sw/source/filter/html/wrthtml.cxx b/sw/source/filter/html/wrthtml.cxx index 2808da051611..af92e3d46330 100644 --- a/sw/source/filter/html/wrthtml.cxx +++ b/sw/source/filter/html/wrthtml.cxx @@ -194,7 +194,53 @@ void SwHTMLWriter::SetupFilterOptions(SfxMedium& rMedium) const OUString sFilterOptions = static_cast<const SfxStringItem*>(pItem)->GetValue(); SetupFilterOptions(sFilterOptions); - comphelper::SequenceAsHashMap aStoreMap(rMedium.GetArgs()); + SetupFilterFromPropertyValues(rMedium.GetArgs()); +} + +void SwHTMLWriter::SetupFilterOptions(const OUString& rFilterOptions) +{ + comphelper::SequenceAsHashMap aStoreMap; + if (rFilterOptions.indexOf("SkipImages") >= 0) + { + aStoreMap["SkipImages"] <<= true; + } + else if (rFilterOptions.indexOf("SkipHeaderFooter") >= 0) + { + aStoreMap["SkipHeaderFooter"] <<= true; + } + else if (rFilterOptions.indexOf("EmbedImages") >= 0) + { + aStoreMap["EmbedImages"] <<= true; + } + + // this option can be "on" together with any of above + if (rFilterOptions.indexOf("NoLineLimit") >= 0) + { + aStoreMap["NoLineLimit"] <<= true; + } + + const uno::Sequence<OUString> aOptionSeq + = comphelper::string::convertCommaSeparated(rFilterOptions); + static const OUStringLiteral aXhtmlNsKey(u"xhtmlns="); + for (const auto& rOption : aOptionSeq) + { + if (rOption == "XHTML") + { + aStoreMap["XHTML"] <<= true; + } + else if (rOption.startsWith(aXhtmlNsKey)) + { + aStoreMap["XhtmlNs"] <<= rOption.copy(aXhtmlNsKey.getLength()); + } + } + + SetupFilterFromPropertyValues(aStoreMap.getAsConstPropertyValueList()); +} + +void SwHTMLWriter::SetupFilterFromPropertyValues( + const css::uno::Sequence<css::beans::PropertyValue>& rPropertyValues) +{ + comphelper::SequenceAsHashMap aStoreMap(rPropertyValues); auto it = aStoreMap.find("RTFOLEMimeType"); if (it != aStoreMap.end()) { @@ -214,47 +260,65 @@ void SwHTMLWriter::SetupFilterOptions(SfxMedium& rMedium) it->second >>= nVal; m_nShapeDPI.emplace(nVal); } -} -void SwHTMLWriter::SetupFilterOptions(const OUString& rFilterOptions) -{ - if (rFilterOptions.indexOf("SkipImages") >= 0) + it = aStoreMap.find("SkipImages"); + if (it != aStoreMap.end()) { - mbSkipImages = true; + bool bVal{}; + it->second >>= bVal; + mbSkipImages = bVal; } - else if (rFilterOptions.indexOf("SkipHeaderFooter") >= 0) + + it = aStoreMap.find("SkipHeaderFooter"); + if (it != aStoreMap.end()) { - mbSkipHeaderFooter = true; + bool bVal{}; + it->second >>= bVal; + mbSkipHeaderFooter = bVal; } - else if (rFilterOptions.indexOf("EmbedImages") >= 0) + + it = aStoreMap.find("EmbedImages"); + if (it != aStoreMap.end()) { - mbEmbedImages = true; + bool bVal{}; + it->second >>= bVal; + mbEmbedImages = bVal; } - // this option can be "on" together with any of above - if (rFilterOptions.indexOf("NoLineLimit") >= 0) + it = aStoreMap.find("NoLineLimit"); + if (it != aStoreMap.end()) { - m_nWishLineLen = -1; + bool bVal{}; + it->second >>= bVal; + if (bVal) + { + m_nWishLineLen = -1; + } } - const uno::Sequence<OUString> aOptionSeq = comphelper::string::convertCommaSeparated(rFilterOptions); - static const OUStringLiteral aXhtmlNsKey(u"xhtmlns="); - for (const auto& rOption : aOptionSeq) + it = aStoreMap.find("XHTML"); + if (it != aStoreMap.end()) { - if (rOption == "XHTML") - mbXHTML = true; - else if (rOption.startsWith(aXhtmlNsKey)) + bool bVal{}; + it->second >>= bVal; + mbXHTML = bVal; + } + + it = aStoreMap.find("XhtmlNs"); + if (it != aStoreMap.end()) + { + OUString aVal; + it->second >>= aVal; + + maNamespace = aVal.toUtf8(); + if (maNamespace == "reqif-xhtml") { - maNamespace = rOption.copy(aXhtmlNsKey.getLength()).toUtf8(); - if (maNamespace == "reqif-xhtml") - { - mbReqIF = true; - // XHTML is always just a fragment inside ReqIF. - mbSkipHeaderFooter = true; - } - // XHTML namespace implies XHTML. - mbXHTML = true; + mbReqIF = true; + // XHTML is always just a fragment inside ReqIF. + mbSkipHeaderFooter = true; } + // XHTML namespace implies XHTML. + mbXHTML = true; } } diff --git a/sw/source/filter/html/wrthtml.hxx b/sw/source/filter/html/wrthtml.hxx index bf6806b1ae95..c5cd5dbe0780 100644 --- a/sw/source/filter/html/wrthtml.hxx +++ b/sw/source/filter/html/wrthtml.hxx @@ -276,6 +276,8 @@ class SW_DLLPUBLIC SwHTMLWriter : public Writer protected: ErrCode WriteStream() override; void SetupFilterOptions(SfxMedium& rMedium) override; + void SetupFilterFromPropertyValues( + const css::uno::Sequence<css::beans::PropertyValue>& rPropertyValues); public: std::vector<OUString> m_aImgMapNames; // written image maps |