sw/source/core/edit/edfcol.cxx                    |   32 +++++++++++-----------
 sw/source/writerfilter/dmapper/SdtHelper.cxx      |   14 ++++-----
 sw/source/writerfilter/rtftok/rtfdocumentimpl.cxx |    6 ++--
 3 files changed, 25 insertions(+), 27 deletions(-)

New commits:
commit d98d02c690108d8db8aa26e086c55efc672a18da
Author:     Noel Grandin <noelgran...@gmail.com>
AuthorDate: Sun Jun 15 08:48:29 2025 +0200
Commit:     Noel Grandin <noelgran...@gmail.com>
CommitDate: Mon Jun 16 18:07:27 2025 +0200

    use more concrete UNO classes
    
    Change-Id: If5cb8de60e3ab64f21a57bb4be2f409cd6d26647
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/186564
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>
    Tested-by: Jenkins

diff --git a/sw/source/core/edit/edfcol.cxx b/sw/source/core/edit/edfcol.cxx
index 8d643b160d5c..c18893a9ee8b 100644
--- a/sw/source/core/edit/edfcol.cxx
+++ b/sw/source/core/edit/edfcol.cxx
@@ -98,6 +98,7 @@
 #include <unotxdoc.hxx>
 #include <unotextbodyhf.hxx>
 #include <unoport.hxx>
+#include <unofield.hxx>
 
 #include <comphelper/diagnose_ex.hxx>
 #include <IDocumentRedlineAccess.hxx>
@@ -707,13 +708,12 @@ SwTextFormatColl& 
SwEditShell::GetTextFormatColl(sal_uInt16 nFormatColl) const
     return *((*(GetDoc()->GetTextFormatColls()))[nFormatColl]);
 }
 
-static void insertFieldToDocument(rtl::Reference<SwXTextDocument> const & 
rxMultiServiceFactory,
-                           uno::Reference<text::XText> const & rxText, 
uno::Reference<text::XParagraphCursor> const & rxParagraphCursor,
+static void insertFieldToDocument(uno::Reference<text::XText> const & rxText, 
uno::Reference<text::XParagraphCursor> const & rxParagraphCursor,
                            OUString const & rsKey)
 {
-    uno::Reference<beans::XPropertySet> 
xField(rxMultiServiceFactory->createInstance(DocInfoServiceName), 
uno::UNO_QUERY);
+    rtl::Reference<SwXTextField> xField = 
SwXTextField::CreateXTextField(nullptr, nullptr, 
SwServiceType::FieldTypeDocInfoCustom);
     xField->setPropertyValue(UNO_NAME_NAME, uno::Any(rsKey));
-    uno::Reference<text::XTextContent> xTextContent(xField, uno::UNO_QUERY);
+    uno::Reference<text::XTextContent> xTextContent(xField);
 
     rxText->insertTextContent(rxParagraphCursor, xTextContent, false);
 }
@@ -885,16 +885,16 @@ void 
SwEditShell::ApplyAdvancedClassification(std::vector<svx::ClassificationRes
                     OUString sKey = aCreator.makeNumberedTextKey();
 
                     
svx::classification::addOrInsertDocumentProperty(xPropertyContainer, sKey, 
rResult.msName);
-                    insertFieldToDocument(xModel, xHeaderText, 
xHeaderParagraphCursor, sKey);
-                    insertFieldToDocument(xModel, xFooterText, 
xFooterParagraphCursor, sKey);
+                    insertFieldToDocument(xHeaderText, xHeaderParagraphCursor, 
sKey);
+                    insertFieldToDocument(xFooterText, xFooterParagraphCursor, 
sKey);
                 }
                 break;
 
                 case svx::ClassificationType::CATEGORY:
                 {
                     OUString sKey = aCreator.makeCategoryNameKey();
-                    insertFieldToDocument(xModel, xHeaderText, 
xHeaderParagraphCursor, sKey);
-                    insertFieldToDocument(xModel, xFooterText, 
xFooterParagraphCursor, sKey);
+                    insertFieldToDocument(xHeaderText, xHeaderParagraphCursor, 
sKey);
+                    insertFieldToDocument(xFooterText, xFooterParagraphCursor, 
sKey);
                 }
                 break;
 
@@ -902,8 +902,8 @@ void 
SwEditShell::ApplyAdvancedClassification(std::vector<svx::ClassificationRes
                 {
                     OUString sKey = aCreator.makeNumberedMarkingKey();
                     
svx::classification::addOrInsertDocumentProperty(xPropertyContainer, sKey, 
rResult.msName);
-                    insertFieldToDocument(xModel, xHeaderText, 
xHeaderParagraphCursor, sKey);
-                    insertFieldToDocument(xModel, xFooterText, 
xFooterParagraphCursor, sKey);
+                    insertFieldToDocument(xHeaderText, xHeaderParagraphCursor, 
sKey);
+                    insertFieldToDocument(xFooterText, xFooterParagraphCursor, 
sKey);
                 }
                 break;
 
@@ -911,8 +911,8 @@ void 
SwEditShell::ApplyAdvancedClassification(std::vector<svx::ClassificationRes
                 {
                     OUString sKey = 
aCreator.makeNumberedIntellectualPropertyPartKey();
                     
svx::classification::addOrInsertDocumentProperty(xPropertyContainer, sKey, 
rResult.msName);
-                    insertFieldToDocument(xModel, xHeaderText, 
xHeaderParagraphCursor, sKey);
-                    insertFieldToDocument(xModel, xFooterText, 
xFooterParagraphCursor, sKey);
+                    insertFieldToDocument(xHeaderText, xHeaderParagraphCursor, 
sKey);
+                    insertFieldToDocument(xFooterText, xFooterParagraphCursor, 
sKey);
                 }
                 break;
 
@@ -1127,9 +1127,9 @@ void SwEditShell::SetClassification(const OUString& 
rName, SfxClassificationPoli
                 if (!lcl_hasField(xHeaderText, DocInfoServiceName, 
Concat2View(SfxClassificationHelper::PROP_PREFIX_INTELLECTUALPROPERTY() + 
SfxClassificationHelper::PROP_DOCHEADER())))
                 {
                     // Append a field to the end of the header text.
-                    uno::Reference<beans::XPropertySet> 
xField(xModel->createInstance(DocInfoServiceName), uno::UNO_QUERY);
+                    rtl::Reference<SwXTextField> xField = 
SwXTextField::CreateXTextField(nullptr, nullptr, 
SwServiceType::FieldTypeDocInfoCustom);
                     xField->setPropertyValue(UNO_NAME_NAME, 
uno::Any(SfxClassificationHelper::PROP_PREFIX_INTELLECTUALPROPERTY() + 
SfxClassificationHelper::PROP_DOCHEADER()));
-                    uno::Reference<text::XTextContent> xTextContent(xField, 
uno::UNO_QUERY);
+                    uno::Reference<text::XTextContent> xTextContent(xField);
                     xHeaderText->insertTextContent(xHeaderText->getEnd(), 
xTextContent, /*bAbsorb=*/false);
                 }
             }
@@ -1154,9 +1154,9 @@ void SwEditShell::SetClassification(const OUString& 
rName, SfxClassificationPoli
             if (!lcl_hasField(xFooterText, DocInfoServiceName, sFooter))
             {
                 // Append a field to the end of the footer text.
-                uno::Reference<beans::XPropertySet> 
xField(xModel->createInstance(DocInfoServiceName), uno::UNO_QUERY);
+                rtl::Reference<SwXTextField> xField = 
SwXTextField::CreateXTextField(nullptr, nullptr, 
SwServiceType::FieldTypeDocInfoCustom);
                 xField->setPropertyValue(UNO_NAME_NAME, uno::Any(sFooter));
-                uno::Reference<text::XTextContent> xTextContent(xField, 
uno::UNO_QUERY);
+                uno::Reference<text::XTextContent> xTextContent(xField);
                 xFooterText->insertTextContent(xFooterText->getEnd(), 
xTextContent, /*bAbsorb=*/false);
             }
         }
diff --git a/sw/source/writerfilter/dmapper/SdtHelper.cxx 
b/sw/source/writerfilter/dmapper/SdtHelper.cxx
index 8563e2d6fe38..74292c0a8a8e 100644
--- a/sw/source/writerfilter/dmapper/SdtHelper.cxx
+++ b/sw/source/writerfilter/dmapper/SdtHelper.cxx
@@ -35,6 +35,7 @@
 #include <unobookmark.hxx>
 #include <unocontentcontrol.hxx>
 #include <unoport.hxx>
+#include <unofield.hxx>
 
 namespace writerfilter::dmapper
 {
@@ -287,10 +288,8 @@ void SdtHelper::createDropDownControl()
     if (bDropDown)
     {
         // create field
-        uno::Reference<css::text::XTextField> xControlModel(
-            m_rDM_Impl.GetTextDocument()->createInstance(
-                u"com.sun.star.text.TextField.DropDown"_ustr),
-            uno::UNO_QUERY);
+        rtl::Reference<SwXTextField> xControlModel
+            = SwXTextField::CreateXTextField(nullptr, nullptr, 
SwServiceType::FieldTypeDropdown);
 
         const auto it = std::find_if(
             m_aDropDownItems.begin(), m_aDropDownItems.end(),
@@ -302,10 +301,9 @@ void SdtHelper::createDropDownControl()
         }
 
         // set properties
-        uno::Reference<beans::XPropertySet> xPropertySet(xControlModel, 
uno::UNO_QUERY);
-        xPropertySet->setPropertyValue(u"SelectedItem"_ustr, 
uno::Any(aDefaultText));
-        xPropertySet->setPropertyValue(u"Items"_ustr,
-                                       
uno::Any(comphelper::containerToSequence(m_aDropDownItems)));
+        xControlModel->setPropertyValue(u"SelectedItem"_ustr, 
uno::Any(aDefaultText));
+        xControlModel->setPropertyValue(
+            u"Items"_ustr, 
uno::Any(comphelper::containerToSequence(m_aDropDownItems)));
 
         // add it into document
         m_rDM_Impl.appendTextContent(xControlModel, 
uno::Sequence<beans::PropertyValue>());
diff --git a/sw/source/writerfilter/rtftok/rtfdocumentimpl.cxx 
b/sw/source/writerfilter/rtftok/rtfdocumentimpl.cxx
index b6a08f364c5f..e814e13fbc06 100644
--- a/sw/source/writerfilter/rtftok/rtfdocumentimpl.cxx
+++ b/sw/source/writerfilter/rtftok/rtfdocumentimpl.cxx
@@ -58,6 +58,7 @@
 #include "rtfcharsets.hxx"
 #include <unotxdoc.hxx>
 #include <unodraw.hxx>
+#include <unofield.hxx>
 
 using namespace com::sun::star;
 
@@ -3584,9 +3585,8 @@ void RTFDocumentImpl::afterPopState(RTFParserState& 
rState)
                         uno::UNO_QUERY_THROW);
                     xMaster->setPropertyValue(u"Name"_ustr,
                                               
uno::Any(m_aStates.top().getDocVarName()));
-                    uno::Reference<text::XDependentTextField> xField(
-                        
m_xDstDoc->createInstance(u"com.sun.star.text.TextField.User"_ustr),
-                        uno::UNO_QUERY);
+                    rtl::Reference<SwXTextField> xField = 
SwXTextField::CreateXTextField(
+                        nullptr, nullptr, SwServiceType::FieldTypeUser);
                     xField->attachTextFieldMaster(xMaster);
                     
xField->getTextFieldMaster()->setPropertyValue(u"Content"_ustr,
                                                                    
uno::Any(docvar));

Reply via email to