include/sfx2/classificationhelper.hxx | 5 + include/svx/ClassificationCommon.hxx | 37 +++++++++++++ sd/source/ui/view/drviews2.cxx | 6 ++ svx/Library_svx.mk | 1 svx/source/dialog/ClassificationCommon.cxx | 79 +++++++++++++++++++++++++++++ sw/source/core/edit/edfcol.cxx | 9 ++- 6 files changed, 134 insertions(+), 3 deletions(-)
New commits: commit 40918d0321f9e9a958fa80f309213e199cf21bce Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> Date: Fri Nov 3 21:57:18 2017 +0900 TSCP: add a full text. value of the header/footer as doc. property Change-Id: I4742066c34802017790c1c21ec04a7760d4fe1f7 Reviewed-on: https://gerrit.libreoffice.org/44279 Reviewed-by: Tomaž Vajngerl <qui...@gmail.com> Tested-by: Tomaž Vajngerl <qui...@gmail.com> diff --git a/include/sfx2/classificationhelper.hxx b/include/sfx2/classificationhelper.hxx index 6467976c952b..0ea432ffbe99 100644 --- a/include/sfx2/classificationhelper.hxx +++ b/include/sfx2/classificationhelper.hxx @@ -182,6 +182,11 @@ public: { return aKey.startsWith(makeIntellectualPropertyPartKey()); } + + OUString makeFullTextualRepresentationKey() const + { + return getPolicyKey() + "FullTexturalRepresentation"; + } }; } diff --git a/include/svx/ClassificationCommon.hxx b/include/svx/ClassificationCommon.hxx new file mode 100644 index 000000000000..04e0494cc7ad --- /dev/null +++ b/include/svx/ClassificationCommon.hxx @@ -0,0 +1,37 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + */ + +#ifndef INCLUDED_SVX_CLASSIFICATIONCOMMON_HXX +#define INCLUDED_SVX_CLASSIFICATIONCOMMON_HXX + +#include <sal/config.h> +#include <svx/svxdllapi.h> +#include <svx/ClassificationField.hxx> +#include <vector> +#include <sfx2/classificationhelper.hxx> +#include <com/sun/star/beans/XPropertyContainer.hpp> + +namespace svx { +namespace classification { + +SVX_DLLPUBLIC OUString convertClassificationResultToString(std::vector<svx::ClassificationResult> const & rResults); + +SVX_DLLPUBLIC bool addOrInsertDocumentProperty(css::uno::Reference<css::beans::XPropertyContainer> const & rxPropertyContainer, + OUString const & rsKey, OUString const & rsValue); + +SVX_DLLPUBLIC void insertFullTextualRepresentationAsDocumentProperty(css::uno::Reference<css::beans::XPropertyContainer> const & rxPropertyContainer, + sfx::ClassificationKeyCreator const & rKeyCreator, + std::vector<svx::ClassificationResult> const & rResults); + +}} // end svx::classification namespace + +#endif // INCLUDED_SVX_CLASSIFICATIONCOMMON_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx index d01957dcf10c..8a0c20a41889 100644 --- a/sd/source/ui/view/drviews2.cxx +++ b/sd/source/ui/view/drviews2.cxx @@ -59,6 +59,7 @@ #include <svx/SpellDialogChildWindow.hxx> #include <svx/compressgraphicdialog.hxx> #include <svx/ClassificationDialog.hxx> +#include <svx/ClassificationCommon.hxx> #include <svx/dialogs.hrc> #include <svx/bmpmask.hxx> #include <svx/colrctrl.hxx> @@ -473,8 +474,13 @@ public: aHelper.SetBACName(rResult.msName, SfxClassificationHelper::getPolicyType()); } + // Initialize key creator sfx::ClassificationKeyCreator aKeyCreator(SfxClassificationHelper::getPolicyType()); + // Insert full text as document property + svx::classification::insertFullTextualRepresentationAsDocumentProperty(xPropertyContainer, aKeyCreator, rResults); + + // Insert Object into master page Outliner* pOutliner = m_rDrawViewShell.GetDoc()->GetInternalOutliner(); OutlinerMode eOutlinerMode = pOutliner->GetMode(); pOutliner->Init(OutlinerMode::TextObject); diff --git a/svx/Library_svx.mk b/svx/Library_svx.mk index c04dfc8e6dc4..6bdbadaf2e3b 100644 --- a/svx/Library_svx.mk +++ b/svx/Library_svx.mk @@ -117,6 +117,7 @@ $(eval $(call gb_Library_add_exception_objects,svx,\ svx/source/dialog/crashreportdlg \ svx/source/dialog/crashreportui) \ svx/source/dialog/ctredlin \ + svx/source/dialog/ClassificationCommon \ svx/source/dialog/ClassificationDialog \ svx/source/dialog/ClassificationEditView \ svx/source/dialog/databaseregistrationui \ diff --git a/svx/source/dialog/ClassificationCommon.cxx b/svx/source/dialog/ClassificationCommon.cxx new file mode 100644 index 000000000000..60cfcf520ab4 --- /dev/null +++ b/svx/source/dialog/ClassificationCommon.cxx @@ -0,0 +1,79 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + */ + +#include <svx/ClassificationCommon.hxx> + +#include <com/sun/star/beans/PropertyAttribute.hpp> + +using namespace css; + +namespace svx { +namespace classification { + +OUString convertClassificationResultToString(std::vector<svx::ClassificationResult> const & rResults) +{ + OUString sRepresentation = ""; + + for (svx::ClassificationResult const & rResult : rResults) + { + switch (rResult.meType) + { + case svx::ClassificationType::CATEGORY: + case svx::ClassificationType::INTELLECTUAL_PROPERTY_PART: + case svx::ClassificationType::MARKING: + case svx::ClassificationType::TEXT: + sRepresentation += rResult.msName; + break; + + case svx::ClassificationType::PARAGRAPH: + sRepresentation += " "; + break; + } + } + return sRepresentation; +} + +bool lcl_containsProperty(const uno::Sequence<beans::Property> & rProperties, const OUString& rName) +{ + return std::find_if(rProperties.begin(), rProperties.end(), [&](const beans::Property& rProperty) + { + return rProperty.Name == rName; + }) != rProperties.end(); +} + +bool addOrInsertDocumentProperty(uno::Reference<beans::XPropertyContainer> const & rxPropertyContainer, OUString const & rsKey, OUString const & rsValue) +{ + uno::Reference<beans::XPropertySet> xPropertySet(rxPropertyContainer, uno::UNO_QUERY); + + try + { + if (lcl_containsProperty(xPropertySet->getPropertySetInfo()->getProperties(), rsKey)) + xPropertySet->setPropertyValue(rsKey, uno::makeAny(rsValue)); + else + rxPropertyContainer->addProperty(rsKey, beans::PropertyAttribute::REMOVABLE, uno::makeAny(rsValue)); + } + catch (const uno::Exception& /*rException*/) + { + return false; + } + return true; +} + +void insertFullTextualRepresentationAsDocumentProperty(uno::Reference<beans::XPropertyContainer> const & rxPropertyContainer, + sfx::ClassificationKeyCreator const & rKeyCreator, + std::vector<svx::ClassificationResult> const & rResults) +{ + OUString sString = svx::classification::convertClassificationResultToString(rResults); + addOrInsertDocumentProperty(rxPropertyContainer, rKeyCreator.makeFullTextualRepresentationKey(), sString); +} + +}} // end svx::classification namespace + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/core/edit/edfcol.cxx b/sw/source/core/edit/edfcol.cxx index fe2700004fe5..30abe8ff5801 100644 --- a/sw/source/core/edit/edfcol.cxx +++ b/sw/source/core/edit/edfcol.cxx @@ -54,6 +54,7 @@ #include <editeng/formatbreakitem.hxx> #include <editeng/unoprnms.hxx> #include <sfx2/classificationhelper.hxx> +#include <svx/ClassificationCommon.hxx> #include <svl/cryptosign.hxx> #include <vcl/svapp.hxx> @@ -85,7 +86,6 @@ #include <UndoParagraphSignature.hxx> #include <txtatr.hxx> -#include <officecfg/Office/Common.hxx> #include <com/sun/star/beans/PropertyAttribute.hpp> #define WATERMARK_NAME "PowerPlusWaterMarkObject" @@ -681,6 +681,11 @@ void SwEditShell::ApplyAdvancedClassification(std::vector<svx::ClassificationRes } } + sfx::ClassificationKeyCreator aCreator(SfxClassificationHelper::getPolicyType()); + + // Insert full text as document property + svx::classification::insertFullTextualRepresentationAsDocumentProperty(xPropertyContainer, aCreator, rResults); + for (const OUString& rPageStyleName : aUsedPageStyles) { uno::Reference<beans::XPropertySet> xPageStyle(xStyleFamily->getByName(rPageStyleName), uno::UNO_QUERY); @@ -706,8 +711,6 @@ void SwEditShell::ApplyAdvancedClassification(std::vector<svx::ClassificationRes sal_Int32 nParagraph = -1; - sfx::ClassificationKeyCreator aCreator(SfxClassificationHelper::getPolicyType()); - for (svx::ClassificationResult const & rResult : rResults) { switch(rResult.meType)
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits