sw/source/core/edit/edfcol.cxx | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-)
New commits: commit 807bf0680dfe32d62cf251c7eef63e8f1fc4a828 Author: Ashod Nakashian <ashod.nakash...@collabora.co.uk> Date: Sun Oct 1 19:32:28 2017 -0400 TSCP: refactor RDF reading for metadata fields Change-Id: Ia24500f490d24e28446057bd840d8e6084bf3336 Reviewed-on: https://gerrit.libreoffice.org/43018 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Ashod Nakashian <ashnak...@gmail.com> diff --git a/sw/source/core/edit/edfcol.cxx b/sw/source/core/edit/edfcol.cxx index d99374f4bfa9..d41fbf5522ec 100644 --- a/sw/source/core/edit/edfcol.cxx +++ b/sw/source/core/edit/edfcol.cxx @@ -227,14 +227,23 @@ OString lcl_getParagraphBodyText(const uno::Reference<text::XTextContent>& xText return strBuf.makeStringAndClear().trim().toUtf8(); } +/// Returns RDF (key, value) pair associated with the field, if any. +std::pair<OUString, OUString> lcl_getFieldRDF(const uno::Reference<frame::XModel>& xModel, + const uno::Reference<css::text::XTextField>& xField, + const OUString& rRDFName) +{ + const css::uno::Reference<css::rdf::XResource> xSubject(xField, uno::UNO_QUERY); + std::map<OUString, OUString> aStatements = SwRDFHelper::getStatements(xModel, MetaNS, xSubject); + const auto it = aStatements.find(rRDFName); + return it != aStatements.end() ? std::make_pair(it->first, it->second) : std::make_pair(OUString(), OUString()); +} + /// Returns true iff the field in question is paragraph signature. /// Note: must have associated RDF, since signatures are othewise just metadata fields. bool lcl_IsParagraphSignatureField(const uno::Reference<frame::XModel>& xModel, const uno::Reference<css::text::XTextField>& xField) { - const css::uno::Reference<css::rdf::XResource> xSubject(xField, uno::UNO_QUERY); - std::map<OUString, OUString> aStatements = SwRDFHelper::getStatements(xModel, MetaNS, xSubject); - return aStatements.find(ParagraphSignatureRDFName) != aStatements.end(); + return lcl_getFieldRDF(xModel, xField, ParagraphSignatureRDFName).first == ParagraphSignatureRDFName; } /// Validate and return validation result and signature field display text. @@ -329,10 +338,8 @@ bool lcl_IsParagraphClassificationField(const uno::Reference<frame::XModel>& xMo const uno::Reference<css::text::XTextField>& xField, const OUString& sKey = OUString()) { - const css::uno::Reference<css::rdf::XResource> xSubject(xField, uno::UNO_QUERY); - std::map<OUString, OUString> aStatements = SwRDFHelper::getStatements(xModel, MetaNS, xSubject); - const auto it = aStatements.find(ParagraphClassificationRDFName); - return it != aStatements.end() && (sKey.isEmpty() || it->second == sKey); + const std::pair<OUString, OUString> rdfPair = lcl_getFieldRDF(xModel, xField, ParagraphClassificationRDFName); + return rdfPair.first == ParagraphClassificationRDFName && (sKey.isEmpty() || rdfPair.second == sKey); } uno::Reference<text::XTextField> lcl_FindParagraphClassificationField(const uno::Reference<frame::XModel>& xModel, _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits