[Libreoffice-commits] core.git: include/sfx2 sd/source sw/source

Tomaž Vajngerl tomaz.vajngerl at collabora.co.uk
Wed Nov 1 10:15:31 UTC 2017


 include/sfx2/classificationhelper.hxx |   68 ++++++++++++++++++++++++++++++++++
 sd/source/ui/view/drviews2.cxx        |   26 ++++++-------
 sw/source/core/edit/edfcol.cxx        |   45 +++++++++++-----------
 3 files changed, 102 insertions(+), 37 deletions(-)

New commits:
commit 2d928a87788644f7c6d46b70ab03bc13a8bf89d3
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
Date:   Sun Oct 29 13:30:10 2017 +0900

    TSCP: simplify key creation and detection
    
    Change-Id: I5f87e77cf529d1c4d37ea55b8858c374a66ea9e4
    Reviewed-on: https://gerrit.libreoffice.org/44018
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>

diff --git a/include/sfx2/classificationhelper.hxx b/include/sfx2/classificationhelper.hxx
index 2672c51c167e..a389ec7e4ac0 100644
--- a/include/sfx2/classificationhelper.hxx
+++ b/include/sfx2/classificationhelper.hxx
@@ -106,6 +106,74 @@ public:
     static SfxClassificationPolicyType getPolicyType();
 };
 
+namespace sfx
+{
+class ClassificationKeyCreator
+{
+private:
+    SfxClassificationPolicyType m_ePolicyType;
+    sal_Int32 m_nTextNumber;
+
+    OUString getPolicyKey() const
+    {
+        return SfxClassificationHelper::policyTypeToString(m_ePolicyType);
+    }
+public:
+    ClassificationKeyCreator(SfxClassificationPolicyType ePolicyType)
+        : m_ePolicyType(ePolicyType)
+        , m_nTextNumber(1)
+    {}
+
+    OUString makeMarkingTextKey() const
+    {
+        return getPolicyKey() + "Marking:Text";
+    }
+
+    OUString makeNumberedMarkingTextKey()
+    {
+        OUString sKey = makeMarkingTextKey() + ":" + OUString::number(m_nTextNumber);
+        m_nTextNumber++;
+        return sKey;
+    }
+
+    bool isMarkingTextKey(OUString const & aKey) const
+    {
+        return aKey.startsWith(makeMarkingTextKey());
+    }
+
+    OUString makeCategoryKey() const
+    {
+        return getPolicyKey() + "BusinessAuthorizationCategory:Name";
+    }
+
+    bool isCategoryKey(OUString const & aKey) const
+    {
+        return aKey.startsWith(makeCategoryKey());
+    }
+
+    OUString makeMarkingKey() const
+    {
+        return getPolicyKey() + "Extension:Marking";
+    }
+
+    bool isMarkingKey(OUString const & aKey) const
+    {
+        return aKey.startsWith(makeMarkingKey());
+    }
+
+    OUString makeIntellectualPropertyPartKey() const
+    {
+        return getPolicyKey() + "Extension:IntellectualPropertyPart";
+    }
+
+    bool isIntellectualPropertyPartKey(OUString const & aKey) const
+    {
+        return aKey.startsWith(makeIntellectualPropertyPartKey());
+    }
+};
+
+}
+
 #endif
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx
index 167ed9e56a6e..4d1eca41992b 100644
--- a/sd/source/ui/view/drviews2.cxx
+++ b/sd/source/ui/view/drviews2.cxx
@@ -292,7 +292,7 @@ private:
 
     void iterateSectionsAndCollect(std::vector<editeng::Section> const & rSections, EditTextObject const & rEditText)
     {
-        OUString sPolicy = SfxClassificationHelper::policyTypeToString(SfxClassificationHelper::getPolicyType());
+        sfx::ClassificationKeyCreator aKeyCreator(SfxClassificationHelper::getPolicyType());
         uno::Reference<document::XDocumentProperties> xDocumentProperties = SfxObjectShell::Current()->getDocProperties();
         uno::Reference<beans::XPropertyContainer> xPropertyContainer = xDocumentProperties->getUserDefinedProperties();
 
@@ -316,22 +316,22 @@ private:
             {
                 const auto* pCustomPropertyField = dynamic_cast<const editeng::CustomPropertyField*>(pFieldItem->GetField());
                 OUString aKey = pCustomPropertyField->GetKey();
-                if (aKey.startsWith(sPolicy + "Marking:Text:"))
+                if (aKeyCreator.isMarkingTextKey(aKey))
                 {
                     OUString aValue = lcl_getProperty(xPropertyContainer, aKey);
                     m_aResults.push_back({ svx::ClassificationType::TEXT, aValue, sBlank });
                 }
-                else if (aKey.startsWith(sPolicy + "BusinessAuthorizationCategory:Name"))
+                else if (aKeyCreator.isCategoryKey(aKey))
                 {
                     OUString aValue = lcl_getProperty(xPropertyContainer, aKey);
                     m_aResults.push_back({ svx::ClassificationType::CATEGORY, aValue, sBlank });
                 }
-                else if (aKey.startsWith(sPolicy + "Extension:Marking"))
+                else if (aKeyCreator.isMarkingKey(aKey))
                 {
                     OUString aValue = lcl_getProperty(xPropertyContainer, aKey);
                     m_aResults.push_back({ svx::ClassificationType::MARKING, aValue, sBlank });
                 }
-                else if (aKey.startsWith(sPolicy + "Extension:IntellectualPropertyPart"))
+                else if (aKeyCreator.isIntellectualPropertyPartKey(aKey))
                 {
                     OUString aValue = lcl_getProperty(xPropertyContainer, aKey);
                     m_aResults.push_back({ svx::ClassificationType::INTELLECTUAL_PROPERTY_PART, aValue, sBlank });
@@ -403,8 +403,8 @@ private:
     /// Delete the previous existing classification object(s) - if they exists
     void deleteExistingObjects()
     {
-        OUString sPolicy = SfxClassificationHelper::policyTypeToString(SfxClassificationHelper::getPolicyType());
-        OUString sKey = sPolicy + "BusinessAuthorizationCategory:Name";
+        sfx::ClassificationKeyCreator aKeyCreator(SfxClassificationHelper::getPolicyType());
+        OUString sKey = aKeyCreator.makeCategoryKey();
 
         const sal_uInt16 nCount = m_rDrawViewShell.GetDoc()->GetMasterSdPageCount(PageKind::Standard);
 
@@ -471,8 +471,7 @@ public:
                 aHelper.SetBACName(rResult.msString, SfxClassificationHelper::getPolicyType());
         }
 
-        OUString sPolicy = SfxClassificationHelper::policyTypeToString(SfxClassificationHelper::getPolicyType());
-        sal_Int32 nTextNumber = 1;
+        sfx::ClassificationKeyCreator aKeyCreator(SfxClassificationHelper::getPolicyType());
 
         Outliner* pOutliner = m_rDrawViewShell.GetDoc()->GetInternalOutliner();
         OutlinerMode eOutlinerMode = pOutliner->GetMode();
@@ -489,8 +488,7 @@ public:
             {
                 case svx::ClassificationType::TEXT:
                 {
-                    OUString sKey = sPolicy + "Marking:Text:" + OUString::number(nTextNumber);
-                    nTextNumber++;
+                    OUString sKey = aKeyCreator.makeNumberedMarkingTextKey();
                     addOrInsertDocumentProperty(xPropertyContainer, sKey, rResult.msString);
                     pOutliner->QuickInsertField(SvxFieldItem(editeng::CustomPropertyField(sKey), EE_FEATURE_FIELD), aPosition);
                 }
@@ -498,14 +496,14 @@ public:
 
                 case svx::ClassificationType::CATEGORY:
                 {
-                    OUString sKey = sPolicy + "BusinessAuthorizationCategory:Name";
+                    OUString sKey = aKeyCreator.makeCategoryKey();
                     pOutliner->QuickInsertField(SvxFieldItem(editeng::CustomPropertyField(sKey), EE_FEATURE_FIELD), aPosition);
                 }
                 break;
 
                 case svx::ClassificationType::MARKING:
                 {
-                    OUString sKey = sPolicy + "Extension:Marking";
+                    OUString sKey = aKeyCreator.makeMarkingKey();
                     addOrInsertDocumentProperty(xPropertyContainer, sKey, rResult.msString);
                     pOutliner->QuickInsertField(SvxFieldItem(editeng::CustomPropertyField(sKey), EE_FEATURE_FIELD), aPosition);
                 }
@@ -513,7 +511,7 @@ public:
 
                 case svx::ClassificationType::INTELLECTUAL_PROPERTY_PART:
                 {
-                    OUString sKey = sPolicy + "Extension:IntellectualPropertyPart";
+                    OUString sKey = aKeyCreator.makeIntellectualPropertyPartKey();
                     addOrInsertDocumentProperty(xPropertyContainer, sKey, rResult.msString);
                     pOutliner->QuickInsertField(SvxFieldItem(editeng::CustomPropertyField(sKey), EE_FEATURE_FIELD), aPosition);
                 }
diff --git a/sw/source/core/edit/edfcol.cxx b/sw/source/core/edit/edfcol.cxx
index 0162cfaab48e..3b9a466e660e 100644
--- a/sw/source/core/edit/edfcol.cxx
+++ b/sw/source/core/edit/edfcol.cxx
@@ -681,21 +681,20 @@ void SwEditShell::ApplyAdvancedClassification(std::vector<svx::ClassificationRes
         uno::Reference<text::XText> xFooterText;
         xPageStyle->getPropertyValue(UNO_NAME_FOOTER_TEXT) >>= xFooterText;
 
-        sal_Int32 nTextNumber = 1;
-
         uno::Reference<text::XParagraphCursor> xHeaderParagraphCursor(xHeaderText->createTextCursor(), uno::UNO_QUERY);
         uno::Reference<text::XParagraphCursor> xFooterParagraphCursor(xFooterText->createTextCursor(), uno::UNO_QUERY);
 
         sal_Int32 nParagraph = -1;
 
+        sfx::ClassificationKeyCreator aCreator(SfxClassificationHelper::getPolicyType());
+
         for (svx::ClassificationResult const & rResult : rResults)
         {
             switch(rResult.meType)
             {
                 case svx::ClassificationType::TEXT:
                 {
-                    OUString sKey = sPolicy + "Marking:Text:" + OUString::number(nTextNumber);
-                    nTextNumber++;
+                    OUString sKey = aCreator.makeNumberedMarkingTextKey();
 
                     addOrInsertDocumentProperty(xPropertyContainer, sKey, rResult.msString);
                     insertFieldToDocument(xMultiServiceFactory, xHeaderText, xHeaderParagraphCursor, sKey);
@@ -705,7 +704,7 @@ void SwEditShell::ApplyAdvancedClassification(std::vector<svx::ClassificationRes
 
                 case svx::ClassificationType::CATEGORY:
                 {
-                    OUString sKey = sPolicy + "BusinessAuthorizationCategory:Name";
+                    OUString sKey = aCreator.makeCategoryKey();
                     insertFieldToDocument(xMultiServiceFactory, xHeaderText, xHeaderParagraphCursor, sKey);
                     insertFieldToDocument(xMultiServiceFactory, xFooterText, xFooterParagraphCursor, sKey);
                 }
@@ -713,7 +712,7 @@ void SwEditShell::ApplyAdvancedClassification(std::vector<svx::ClassificationRes
 
                 case svx::ClassificationType::MARKING:
                 {
-                    OUString sKey = sPolicy + "Extension:Marking";
+                    OUString sKey = aCreator.makeMarkingKey();
                     addOrInsertDocumentProperty(xPropertyContainer, sKey, rResult.msString);
                     insertFieldToDocument(xMultiServiceFactory, xHeaderText, xHeaderParagraphCursor, sKey);
                     insertFieldToDocument(xMultiServiceFactory, xFooterText, xFooterParagraphCursor, sKey);
@@ -722,7 +721,7 @@ void SwEditShell::ApplyAdvancedClassification(std::vector<svx::ClassificationRes
 
                 case svx::ClassificationType::INTELLECTUAL_PROPERTY_PART:
                 {
-                    OUString sKey = sPolicy + "Extension:IntellectualPropertyPart";
+                    OUString sKey = aCreator.makeIntellectualPropertyPartKey();
                     addOrInsertDocumentProperty(xPropertyContainer, sKey, rResult.msString);
                     insertFieldToDocument(xMultiServiceFactory, xHeaderText, xHeaderParagraphCursor, sKey);
                     insertFieldToDocument(xMultiServiceFactory, xFooterText, xFooterParagraphCursor, sKey);
@@ -795,7 +794,7 @@ std::vector<svx::ClassificationResult> SwEditShell::CollectAdvancedClassificatio
     uno::Reference<document::XDocumentProperties> xDocumentProperties = SfxObjectShell::Current()->getDocProperties();
     uno::Reference<beans::XPropertyContainer> xPropertyContainer = xDocumentProperties->getUserDefinedProperties();
 
-    OUString sPolicy = SfxClassificationHelper::policyTypeToString(SfxClassificationHelper::getPolicyType());
+    sfx::ClassificationKeyCreator aCreator(SfxClassificationHelper::getPolicyType());
 
     const OUString sBlank("");
 
@@ -830,25 +829,25 @@ std::vector<svx::ClassificationResult> SwEditShell::CollectAdvancedClassificatio
             uno::Reference<beans::XPropertySet> xPropertySet(xTextField, uno::UNO_QUERY);
             xPropertySet->getPropertyValue(UNO_NAME_NAME) >>= aName;
 
-            if (aName.startsWith(sPolicy + "Marking:Text:"))
+            if (aCreator.isMarkingTextKey(aName))
             {
                 const OUString aValue = lcl_getProperty(xPropertyContainer, aName);
                 if (!aValue.isEmpty())
                     aResult.push_back({ svx::ClassificationType::TEXT, aValue, sBlank });
             }
-            else if (aName.startsWith(sPolicy + "BusinessAuthorizationCategory:Name"))
+            else if (aCreator.isCategoryKey(aName))
             {
                 const OUString aValue = lcl_getProperty(xPropertyContainer, aName);
                 if (!aValue.isEmpty())
                     aResult.push_back({ svx::ClassificationType::CATEGORY, aValue, sBlank });
             }
-            else if (aName.startsWith(sPolicy + "Extension:Marking"))
+            else if (aCreator.isMarkingKey(aName))
             {
                 const OUString aValue = lcl_getProperty(xPropertyContainer, aName);
                 if (!aValue.isEmpty())
                     aResult.push_back({ svx::ClassificationType::MARKING, aValue, sBlank });
             }
-            else if (aName.startsWith(sPolicy + "Extension:IntellectualPropertyPart"))
+            else if (aCreator.isIntellectualPropertyPartKey(aName))
             {
                 const OUString aValue = lcl_getProperty(xPropertyContainer, aName);
                 if (!aValue.isEmpty())
@@ -959,7 +958,7 @@ void SwEditShell::ApplyParagraphClassification(std::vector<svx::ClassificationRe
     uno::Reference<frame::XModel> xModel = pDocShell->GetBaseModel();
     uno::Reference<lang::XMultiServiceFactory> xMultiServiceFactory(xModel, uno::UNO_QUERY);
 
-    const OUString sPolicy = SfxClassificationHelper::policyTypeToString(SfxClassificationHelper::getPolicyType());
+    sfx::ClassificationKeyCreator aKeyCreator(SfxClassificationHelper::getPolicyType());
 
     // Prevent recursive validation since this is triggered on node updates, which we do below.
     const bool bOldValidationFlag = SetParagraphSignatureValidation(false);
@@ -979,7 +978,7 @@ void SwEditShell::ApplyParagraphClassification(std::vector<svx::ClassificationRe
     // Since we always insert at the start of the paragraph,
     // need to insert in reverse order.
     std::reverse(aResults.begin(), aResults.end());
-    sal_Int32 nTextNumber = 1;
+
     for (size_t nIndex = 0; nIndex < aResults.size(); ++nIndex)
     {
         const svx::ClassificationResult& rResult = aResults[nIndex];
@@ -995,25 +994,25 @@ void SwEditShell::ApplyParagraphClassification(std::vector<svx::ClassificationRe
         {
             case svx::ClassificationType::TEXT:
             {
-                sKey = sPolicy + "Marking:Text:" + OUString::number(nTextNumber++);
+                sKey = aKeyCreator.makeNumberedMarkingTextKey();
             }
             break;
 
             case svx::ClassificationType::CATEGORY:
             {
-                sKey = sPolicy + "BusinessAuthorizationCategory:Name";
+                sKey = aKeyCreator.makeCategoryKey();
             }
             break;
 
             case svx::ClassificationType::MARKING:
             {
-                sKey = sPolicy + "Extension:Marking";
+                sKey = aKeyCreator.makeMarkingKey();
             }
             break;
 
             case svx::ClassificationType::INTELLECTUAL_PROPERTY_PART:
             {
-                sKey = sPolicy + "Extension:IntellectualPropertyPart";
+                sKey = aKeyCreator.makeIntellectualPropertyPartKey();
             }
             break;
 
@@ -1051,7 +1050,7 @@ std::vector<svx::ClassificationResult> SwEditShell::CollectParagraphClassificati
 
     uno::Reference<container::XEnumeration> xTextPortions = xTextPortionEnumerationAccess->createEnumeration();
 
-    const OUString sPolicy = SfxClassificationHelper::policyTypeToString(SfxClassificationHelper::getPolicyType());
+    const sfx::ClassificationKeyCreator aKeyCreator(SfxClassificationHelper::getPolicyType());
 
     while (xTextPortions->hasMoreElements())
     {
@@ -1074,19 +1073,19 @@ std::vector<svx::ClassificationResult> SwEditShell::CollectParagraphClassificati
         const OUString aName = rdfNamePair.second;
         const OUString aValue = rdfValuePair.second;
         const OUString sBlank("");
-        if (aName.startsWith(sPolicy + "Marking:Text:"))
+        if (aKeyCreator.isMarkingTextKey(aName))
         {
             aResult.push_back({ svx::ClassificationType::TEXT, aValue, sBlank });
         }
-        else if (aName.startsWith(sPolicy + "BusinessAuthorizationCategory:Name"))
+        else if (aKeyCreator.isCategoryKey(aName))
         {
             aResult.push_back({ svx::ClassificationType::CATEGORY, aValue, sBlank });
         }
-        else if (aName.startsWith(sPolicy + "Extension:Marking"))
+        else if (aKeyCreator.isMarkingKey(aName))
         {
             aResult.push_back({ svx::ClassificationType::MARKING, aValue, sBlank });
         }
-        else if (aName.startsWith(sPolicy + "Extension:IntellectualPropertyPart"))
+        else if (aKeyCreator.isIntellectualPropertyPartKey(aName))
         {
             aResult.push_back({ svx::ClassificationType::INTELLECTUAL_PROPERTY_PART, xTextRange->getString(), sBlank });
         }


More information about the Libreoffice-commits mailing list