24 #include <unofield.hxx>
39 #include <unoprnms.hxx>
50 #include <com/sun/star/util/DateTime.hpp>
51 #include <com/sun/star/util/Date.hpp>
52 #include <com/sun/star/beans/PropertyAttribute.hpp>
56 #include <com/sun/star/text/SetVariableType.hpp>
57 #include <com/sun/star/text/WrapTextMode.hpp>
58 #include <com/sun/star/text/TextContentAnchorType.hpp>
68 #include <strings.hrc>
77 #include <tools/datetime.hxx>
86 #include <textapi.hxx>
120 struct ServiceIdResId
187 if (aServiceToRes[
i].nServiceId == nServiceId)
188 return aServiceToRes[
i].nResId;
189 #if OSL_DEBUG_LEVEL > 0
190 OSL_FAIL(
"service id not found");
209 const sal_uInt16 nSubType = rField.
GetSubType();
210 switch( nSubType & 0xff )
262 for(
const ServiceIdResId* pMap = aServiceToRes;
264 if( nWhich == pMap->nResId )
266 nSrvId = pMap->nServiceId;
270 #if OSL_DEBUG_LEVEL > 0
272 OSL_FAIL(
"resid not found");
319 nId = pEntry ? pEntry->
nWID : USHRT_MAX;
400 assert(nRet != USHRT_MAX &&
"wrong service id");
430 , m_nResTypeId(nResId)
442 , m_nResTypeId(nResId)
463 return theSwXFieldMasterUnoTunnelId.
getSeq();
469 return comphelper::getSomethingImpl<SwXFieldMaster>(rId,
this);
475 return "SwXFieldMaster";
493 pEntry =
"SetExpression";
499 pEntry =
"Bibliography";
505 return "com.sun.star.text.fieldmaster." + OUString::createFromAscii(pEntry);
515 uno::Sequence< OUString > SAL_CALL
518 return {
"com.sun.star.text.TextFieldMaster", getServiceName(
m_pImpl->m_nResTypeId) };
535 uno::Reference<beans::XPropertySet>
540 uno::Reference<beans::XPropertySet> xFM;
561 uno::Reference<beans::XPropertySetInfo> SAL_CALL
565 uno::Reference< beans::XPropertySetInfo > aRef =
572 const OUString& rPropertyName,
const uno::Any& rValue)
578 bool bSetValue =
true;
581 const std::vector<OUString>& rExtraArr(
583 const OUString sTypeName = pType->
GetName();
584 static sal_uInt16 nIds[] =
593 for(
const sal_uInt16 * pIds = nIds; *pIds; ++pIds)
595 if(sTypeName == rExtraArr[ *pIds ] )
609 const sal_uInt16 nMemberValueId =
GetFieldTypeMId( rPropertyName, *pType );
610 if ( USHRT_MAX == nMemberValueId )
612 throw beans::UnknownPropertyException(
613 "Unknown property: " + rPropertyName,
614 static_cast< cppu::OWeakObject * >(
this ) );
617 pType->
PutValue( rValue, nMemberValueId );
629 rValue >>= sTypeName;
631 m_pImpl->m_nResTypeId, sTypeName,
false);
635 ( sTypeName ==
SwResId(STR_POOLCOLL_LABEL_TABLE) ||
636 sTypeName ==
SwResId(STR_POOLCOLL_LABEL_DRAWING) ||
637 sTypeName ==
SwResId(STR_POOLCOLL_LABEL_FRAME) ||
638 sTypeName ==
SwResId(STR_POOLCOLL_LABEL_ABB) ||
639 sTypeName ==
SwResId(STR_POOLCOLL_LABEL_FIGURE) )))
641 throw lang::IllegalArgumentException();
649 pType2 =
m_pImpl->m_pDoc->getIDocumentFieldsAccess().InsertFieldType(aType);
659 m_pImpl->m_bParam1 ? SfxLinkUpdateMode::ALWAYS : SfxLinkUpdateMode::ONCALL);
660 pType2 =
m_pImpl->m_pDoc->getIDocumentFieldsAccess().InsertFieldType(aType);
666 if (!
m_pImpl->m_sParam1.isEmpty())
670 pType2 =
m_pImpl->m_pDoc->getIDocumentFieldsAccess().InsertFieldType(aType);
683 throw uno::RuntimeException(
"no field type found!", *
this);
697 throw lang::IllegalArgumentException();
703 throw lang::IllegalArgumentException();
720 if ( ( !
m_pImpl->m_sParam1.isEmpty()
721 || !
m_pImpl->m_sParam5.isEmpty())
722 && !
m_pImpl->m_sParam2.isEmpty()
723 && !
m_pImpl->m_sParam3.isEmpty())
739 if (
m_pImpl->m_sParam1.isEmpty())
749 while (nIndex < m_pImpl->m_sParam1.getLength())
762 nStart, nIndex - nStart, sTmp);
771 throw beans::UnknownPropertyException(
"Unknown property: " + rPropertyName, static_cast < cppu::OWeakObject * > (
this ) );
785 if (!
m_pImpl->m_sParam1.isEmpty())
795 SwFieldType *
const pType =
m_pImpl->m_pDoc->getIDocumentFieldsAccess().InsertFieldType(aType);
823 std::vector<SwFormatField*> vpFields;
825 uno::Sequence<uno::Reference <text::XDependentTextField> >
aSeq(vpFields.size());
826 std::transform(vpFields.begin(), vpFields.end(),
aSeq.getArray(),
834 if (USHRT_MAX == nMId)
836 throw beans::UnknownPropertyException(
837 "Unknown property: " + rPropertyName,
838 static_cast<cppu::OWeakObject *>(
this));
845 OUString aDataSource;
846 aRet >>= aDataSource;
849 OUString *pStr =
nullptr;
852 aObj.
SetURL( aDataSource );
853 bool bIsURL = aObj.
GetProtocol() != INetProtocol::NotValid;
870 uno::Sequence<uno::Reference <text::XDependentTextField> > aRetSeq(0);
892 bool bIsURL = aObj.
GetProtocol() != INetProtocol::NotValid;
919 throw beans::UnknownPropertyException(
"Unknown property: " + rPropertyName, static_cast < cppu::OWeakObject * > (
this ) );
928 OSL_FAIL(
"not implemented");
933 OSL_FAIL(
"not implemented");
938 OSL_FAIL(
"not implemented");
943 OSL_FAIL(
"not implemented");
951 throw uno::RuntimeException();
952 size_t nTypeIdx = SIZE_MAX;
954 for(
size_t i = 0;
i < pTypes->size();
i++ )
956 if((*pTypes)[
i].get()== pFieldType)
961 std::vector<SwFormatField*> vpFields;
963 for(
auto pField : vpFields)
966 m_pImpl->m_pDoc->getIDocumentFieldsAccess().RemoveFieldType(nTypeIdx);
970 const uno::Reference<lang::XEventListener> & xListener)
972 std::unique_lock aGuard(
m_pImpl->m_Mutex);
973 m_pImpl->m_EventListeners.addInterface(aGuard, xListener);
977 const uno::Reference<lang::XEventListener> & xListener)
979 std::unique_lock aGuard(
m_pImpl->m_Mutex);
980 m_pImpl->m_EventListeners.removeInterface(aGuard, xListener);
985 if(rHint.
GetId() == SfxHintId::Dying)
989 uno::Reference<uno::XInterface>
const xThis(
m_wThis);
994 lang::EventObject
const ev(xThis);
995 std::unique_lock aGuard(
m_Mutex);
1008 if((*pTypes)[
i].get() == &rType)
1019 const OUString& rFormula,
1023 const OUString sProgName(
1025 if(sProgName != sTypeName)
1027 const OUString sSource = bQuery ? sTypeName : sProgName;
1028 const OUString sDest = bQuery ? sProgName : sTypeName;
1029 if(rFormula.startsWith(sSource))
1031 return sDest + rFormula.subView(sSource.getLength());
1039 struct SwFieldProperties_Impl
1047 uno::Sequence<beans::PropertyValue> aPropSeq;
1048 uno::Sequence<OUString> aStrings;
1049 std::unique_ptr<util::DateTime> pDateTime;
1053 sal_uInt16 nUSHORT1;
1054 sal_uInt16 nUSHORT2;
1057 bool bFormatIsDefault;
1063 SwFieldProperties_Impl():
1072 bFormatIsDefault(true),
1102 : m_pFieldType(nullptr)
1103 , m_pFormatField(pFormat)
1105 , m_bIsDescriptor(pFormat == nullptr)
1106 , m_bCallUpdate(
false)
1107 , m_nServiceId(pFormat
1110 , m_pProps(pFormat ? nullptr : new SwFieldProperties_Impl)
1118 if (m_xTextObject.is())
1120 m_xTextObject->DisposeEditSource();
1126 m_pFormatField = pFormatField;
1136 return m_pFormatField;
1142 return m_bIsDescriptor;
1146 const SwField* GetField()
const;
1150 if(!m_pDoc && !IsDescriptor())
1151 throw uno::RuntimeException();
1152 else if (IsDescriptor())
1153 return m_pFieldType;
1160 m_pFieldType = &rType;
1166 m_pFieldType =
nullptr;
1174 return theSwXTextFieldUnoTunnelId.
getSeq();
1180 return comphelper::getSomethingImpl<SwXTextField>(rId,
this);
1194 m_pImpl->m_pProps->bBool2 =
true;
1198 m_pImpl->m_pProps->bBool1 =
true;
1202 m_pImpl->m_pProps->nUSHORT2 = USHRT_MAX;
1215 uno::Reference<text::XTextField>
1219 assert(!pFormat || pDoc);
1222 uno::Reference<text::XTextField> xField;
1230 ?
new SwXTextField(const_cast<SwFormatField&>(*pFormat), *pDoc)
1235 const_cast<SwFormatField *
>(pFormat)->SetXTextField(xField);
1238 pField->
m_pImpl->m_wThis = xField;
1263 uno::Reference<text::XTextField>
const xField(
1266 ? comphelper::getFromUnoTunnel<SwXTextField>(uno::Reference<lang::XUnoTunnel>(xField, uno::UNO_QUERY_THROW))
1269 pXField->m_pImpl->SetFormatField(
nullptr,
nullptr);
1274 assert(tempFormat.
GetField() != &rField);
1275 assert(tempFormat.
GetField() != &tempField);
1278 std::shared_ptr<SwPaM> pPamForTextField;
1281 assert(pPamForTextField);
1282 sal_Int32
const nStart(pPamForTextField->Start()->nContent.GetIndex());
1283 rIDCO.DeleteAndJoin(*pPamForTextField);
1285 bool bSuccess = rIDCO.InsertPoolItem(*pPamForTextField, tempFormat);
1288 SwTextField const* pNewAttr(rNode.GetFieldTextAttrAt(nStart,
true));
1290 SwFormatField const& rNewFormat(pNewAttr->GetFormatField());
1292 assert(static_cast<SwSetExpField const*>(rNewFormat.GetField())->GetInputFlag() == (
dynamic_cast<SwTextInputField const*
>(pNewAttr) !=
nullptr));
1295 pXField->m_pImpl->SetFormatField(const_cast<SwFormatField*>(&rNewFormat), &rNode.GetDoc());
1296 const_cast<SwFormatField&
>(rNewFormat).SetXTextField(xField);
1301 const uno::Reference< beans::XPropertySet > & xFieldMaster)
1306 throw uno::RuntimeException();
1307 uno::Reference< lang::XUnoTunnel > xMasterTunnel(xFieldMaster, uno::UNO_QUERY);
1308 if (!xMasterTunnel.is())
1309 throw lang::IllegalArgumentException();
1310 SwXFieldMaster* pMaster = comphelper::getFromUnoTunnel<SwXFieldMaster>(xMasterTunnel);
1316 throw lang::IllegalArgumentException();
1318 m_pImpl->m_sTypeName = pFieldType->GetName();
1319 m_pImpl->SetFieldType(*pFieldType);
1322 uno::Reference< beans::XPropertySet > SAL_CALL
1328 uno::Reference<beans::XPropertySet>
const xRet(
1340 throw uno::RuntimeException();
1346 const uno::Reference< text::XTextRange > & xTextRange)
1351 uno::Reference<lang::XUnoTunnel> xRangeTunnel( xTextRange, uno::UNO_QUERY);
1352 SwXTextRange* pRange = comphelper::getFromUnoTunnel<SwXTextRange>(xRangeTunnel);
1353 OTextCursorHelper* pCursor = comphelper::getFromUnoTunnel<OTextCursorHelper>(xRangeTunnel);
1355 SwDoc* pDoc = pRange ? &pRange->
GetDoc() : pCursor ? pCursor->GetDoc() :
nullptr;
1359 throw lang::IllegalArgumentException();
1364 std::unique_ptr<SwField> xField;
1365 switch (
m_pImpl->m_nServiceId)
1372 if (
m_pImpl->m_pProps->pDateTime)
1374 aDateTime = *(
m_pImpl->m_pProps->pDateTime);
1377 static_cast<SwPostItFieldType*>(pFieldType),
1385 if (
m_pImpl->m_xTextObject.is() )
1390 xField.reset(pPostItField);
1396 xField.reset(
new SwScriptField(static_cast<SwScriptFieldType*>(pFieldType),
1403 sal_uInt16 nSub = 0;
1404 if (
m_pImpl->m_pProps->bBool1)
1406 if (
m_pImpl->m_pProps->bBool2)
1412 static_cast<SwDateTimeFieldType*>(pFieldType),
1413 nSub,
m_pImpl->m_pProps->nFormat);
1414 xField.reset(pDTField);
1415 if (
m_pImpl->m_pProps->fDouble > 0.)
1419 if (
m_pImpl->m_pProps->pDateTime)
1430 sal_Int32 nFormat =
m_pImpl->m_pProps->nFormat;
1431 if (
m_pImpl->m_pProps->bBool2)
1434 static_cast<SwFileNameFieldType*>(pFieldType), nFormat);
1435 xField.reset(pFNField);
1436 if (!
m_pImpl->m_pProps->sPar3.isEmpty())
1439 aFormat <<=
m_pImpl->m_pProps->nFormat;
1446 xField.reset(
new SwTemplNameField(static_cast<SwTemplNameFieldType*>(pFieldType),
1449 aFormat <<=
m_pImpl->m_pProps->nFormat;
1457 static_cast<SwChapterFieldType*>(pFieldType),
1459 xField.reset(pChapterField);
1462 aVal <<= static_cast<sal_Int16>(
m_pImpl->m_pProps->nUSHORT1);
1469 if (
m_pImpl->m_pProps->bBool2)
1474 static_cast<SwAuthorFieldType*>(pFieldType), nFormat);
1475 xField.reset(pAuthorField);
1484 static_cast<SwHiddenTextFieldType*>(pFieldType),
1489 xField.reset(pHTField);
1492 aVal <<=
m_pImpl->m_pProps->sPar4;
1500 static_cast<SwHiddenParaFieldType*>(pFieldType),
1502 xField.reset(pHPField);
1509 xField.reset(
new SwGetRefField(static_cast<SwGetRefFieldType*>(pFieldType),
1515 if (!
m_pImpl->m_pProps->sPar3.isEmpty())
1516 static_cast<SwGetRefField*>(xField.get())->SetExpand(
m_pImpl->m_pProps->sPar3);
1518 aVal <<= static_cast<sal_Int16>(
m_pImpl->m_pProps->nUSHORT1);
1520 aVal <<= static_cast<sal_Int16>(
m_pImpl->m_pProps->nUSHORT2);
1522 aVal <<=
m_pImpl->m_pProps->nSHORT1;
1529 xField.reset(
new SwJumpEditField(static_cast<SwJumpEditFieldType*>(pFieldType),
1557 if (
m_pImpl->m_pProps->bBool2)
1568 if (
m_pImpl->m_pProps->bBool1)
1571 static_cast<SwDocInfoFieldType*>(pFieldType), nSubType,
1573 if (!
m_pImpl->m_pProps->sPar3.isEmpty())
1574 static_cast<SwDocInfoField*>(xField.get())->SetExpansion(
m_pImpl->m_pProps->sPar3);
1579 sal_Int32 nFormat = 0;
1580 if (
m_pImpl->m_pProps->bBool1)
1585 static_cast<SwExtUserFieldType*>(pFieldType),
1586 m_pImpl->m_pProps->nUSHORT1, nFormat);
1587 xField.reset(pEUField);
1596 throw uno::RuntimeException();
1597 sal_uInt16 nUserSubType = (
m_pImpl->m_pProps->bBool1)
1599 if (
m_pImpl->m_pProps->bBool2)
1601 if (
m_pImpl->m_pProps->bFormatIsDefault &&
1604 m_pImpl->m_pProps->nFormat = -1;
1606 xField.reset(
new SwUserField(static_cast<SwUserFieldType*>(pFieldType),
1614 xField.reset(
new SwRefPageSetField( static_cast<SwRefPageSetFieldType*>(pFieldType),
1623 static_cast<SwRefPageGetFieldType*>(pFieldType),
1624 m_pImpl->m_pProps->nUSHORT1 );
1625 xField.reset(pRGField);
1633 static_cast<SwPageNumberFieldType*>(pFieldType),
PG_RANDOM,
1636 xField.reset(pPNField);
1639 aVal <<=
m_pImpl->m_pProps->nSubType;
1648 throw uno::RuntimeException();
1649 xField.reset(
new SwDDEField( static_cast<SwDDEFieldType*>(pFieldType) ));
1659 xField.reset(
new SwDBNameField(static_cast<SwDBNameFieldType*>(pFieldType), aData));
1660 sal_uInt16 nSubType = xField->GetSubType();
1661 if (
m_pImpl->m_pProps->bBool2)
1665 xField->SetSubType(nSubType);
1675 xField.reset(
new SwDBNextSetField(static_cast<SwDBNextSetFieldType*>(pFieldType),
1676 m_pImpl->m_pProps->sPar3, aData));
1688 OUString::number(
m_pImpl->m_pProps->nFormat),
1702 xField.reset(pDBSNField);
1704 sal_uInt16 nSubType = xField->GetSubType();
1705 if (
m_pImpl->m_pProps->bBool2)
1709 xField->SetSubType(nSubType);
1717 throw uno::RuntimeException();
1718 xField.reset(
new SwDBField(static_cast<SwDBFieldType*>(pFieldType),
1720 static_cast<SwDBField*
>(xField.get())->InitContent(
m_pImpl->m_pProps->sPar1);
1722 if (
m_pImpl->m_pProps->bBool2)
1726 xField->SetSubType(nSubType);
1734 throw uno::RuntimeException();
1736 if (
m_pImpl->m_pProps->bFormatIsDefault &&
1739 m_pImpl->m_pProps->nFormat = -1;
1742 static_cast<SwSetExpFieldType*>(pFieldType),
1744 m_pImpl->m_pProps->nUSHORT2 != USHRT_MAX ?
1746 xField.reset(pSEField);
1748 sal_uInt16 nSubType = xField->GetSubType();
1749 if (
m_pImpl->m_pProps->bBool2)
1753 if (
m_pImpl->m_pProps->bBool3)
1757 xField->SetSubType(nSubType);
1761 if (!
m_pImpl->m_pProps->sPar4.isEmpty())
1768 sal_uInt16 nSubType;
1769 switch (
m_pImpl->m_pProps->nSubType)
1776 OSL_FAIL(
"wrong value");
1780 SwFieldType* pSetExpField = pDoc->getIDocumentFieldsAccess().GetFieldType(
1782 bool bSetGetExpFieldUninitialized =
false;
1790 bSetGetExpFieldUninitialized =
true;
1792 if (
m_pImpl->m_pProps->bBool2)
1797 static_cast<SwGetExpFieldType*>(
1799 m_pImpl->m_pProps->sPar1, nSubType,
1801 xField.reset(pGEField);
1803 if (!
m_pImpl->m_pProps->sPar4.isEmpty())
1806 if (bSetGetExpFieldUninitialized)
1816 throw uno::RuntimeException();
1817 sal_uInt16 nInpSubType =
1818 sal::static_int_cast<sal_uInt16>(
1822 new SwInputField(static_cast<SwInputFieldType*>(pFieldType),
1826 pTextField->SetHelp(
m_pImpl->m_pProps->sPar3);
1827 pTextField->SetToolTip(
m_pImpl->m_pProps->sPar4);
1829 xField.reset(pTextField);
1838 if (!
m_pImpl->m_pProps->sPar4.isEmpty())
1840 aName =
m_pImpl->m_pProps->sPar4;
1847 xField.reset(
new SwMacroField(static_cast<SwMacroFieldType*>(pFieldType), aName,
1859 sal_uInt16 nSubType =
DS_PAGE;
1860 switch (
m_pImpl->m_nServiceId)
1872 static_cast<SwDocStatFieldType*>(pFieldType),
1873 nSubType,
m_pImpl->m_pProps->nUSHORT2));
1880 pDoc->getIDocumentFieldsAccess().InsertFieldType(type)),
1882 if (
m_pImpl->m_pProps->aPropSeq.hasElements())
1885 aVal <<=
m_pImpl->m_pProps->aPropSeq;
1899 static_cast<SwDropDownFieldType *>(
1901 xField.reset(pDDField);
1915 if (
m_pImpl->m_pProps->bBool1)
1918 if (
m_pImpl->m_pProps->bFormatIsDefault)
1919 m_pImpl->m_pProps->nFormat = -1;
1921 xField.reset(
new SwTableField( static_cast<SwTableFieldType*>(
1929 default: OSL_FAIL(
"What kind of type is that?");
1933 throw uno::RuntimeException(
"no SwField created?");
1935 xField->SetAutomaticLanguage(!
m_pImpl->m_pProps->bBool4);
1942 pDoc->getIDocumentContentOperations().DeleteAndJoin(aPam);
1945 SwXTextCursor const*
const pTextCursor(dynamic_cast<SwXTextCursor*>(pCursor));
1946 const bool bForceExpandHints(
1959 pDoc->getIDocumentContentOperations().InsertPoolItem(aEnd, aFormat, nInsertFlags);
1962 pDoc->getIDocumentContentOperations().InsertPoolItem(aPam, aFormat, nInsertFlags);
1968 throw uno::RuntimeException(
"no SwTextAttr inserted?");
1971 m_pImpl->SetFormatField(const_cast<SwFormatField*>(&rField), pDoc);
1978 OSL_ENSURE( pPostItField !=
nullptr,
"<SwXTextField::attachToRange(..)> - annotation field missing!" );
1979 if ( pPostItField !=
nullptr )
1988 assert(
m_pImpl->GetFormatField());
1990 m_pImpl->GetFormatField()->SetXTextField(
this);
1992 m_pImpl->m_bIsDescriptor =
false;
1998 else if ( !
m_pImpl->IsDescriptor()
2004 throw lang::IllegalArgumentException();
2012 std::unique_ptr<SwPostItField> pPostItField(static_cast< SwPostItField* >(
m_pImpl->GetFormatField()->GetField()->CopyField().release()));
2014 pPostItField.reset();
2016 m_pImpl->m_pDoc->getIDocumentContentOperations().InsertPoolItem( aEnd, aFormatField );
2024 m_pImpl->m_pDoc->getIDocumentContentOperations().DeleteAndJoin(aPam);
2029 if ( pTextAttr !=
nullptr )
2037 OSL_ENSURE( pField !=
nullptr,
"<SwXTextField::attach(..)> - annotation field missing!" );
2038 if ( pField !=
nullptr )
2050 throw lang::IllegalArgumentException();
2053 uno::Reference< text::XTextRange > SAL_CALL
2064 throw uno::RuntimeException();
2066 std::shared_ptr< SwPaM > pPamForTextField;
2068 if (pPamForTextField ==
nullptr)
2078 if ((*ppMark)->GetName() == pPostItField->
GetName())
2080 pPamForTextField = std::make_shared<SwPaM>((*ppMark)->GetMarkStart(), (*ppMark)->GetMarkEnd());
2087 *
m_pImpl->m_pDoc, *(pPamForTextField->GetPoint()), pPamForTextField->GetMark());
2098 assert(
m_pImpl->GetFormatField()->GetTextField() &&
"<SwXTextField::dispose()> - missing <SwTextField> --> crash");
2102 if (
m_pImpl->m_xTextObject.is())
2104 m_pImpl->m_xTextObject->DisposeEditSource();
2105 m_pImpl->m_xTextObject.clear();
2111 const uno::Reference<lang::XEventListener> & xListener)
2113 std::unique_lock aGuard(
m_pImpl->m_Mutex);
2114 m_pImpl->m_EventListeners.addInterface(aGuard, xListener);
2118 const uno::Reference<lang::XEventListener> & xListener)
2120 std::unique_lock aGuard(
m_pImpl->m_Mutex);
2121 m_pImpl->m_EventListeners.removeInterface(aGuard, xListener);
2124 uno::Reference< beans::XPropertySetInfo > SAL_CALL
2129 uno::Reference< beans::XPropertySetInfo > aRef;
2132 throw uno::RuntimeException();
2136 const uno::Reference<beans::XPropertySetInfo>& xInfo = pPropSet->
getPropertySetInfo();
2138 const uno::Sequence<beans::Property> aPropSeq = xInfo->getProperties();
2147 const OUString& rPropertyName,
const uno::Any& rValue)
2156 throw beans::UnknownPropertyException(
"Unknown property: " + rPropertyName, static_cast < cppu::OWeakObject * > (
this ) );
2157 if ( pEntry->
nFlags & beans::PropertyAttribute::READONLY)
2158 throw beans::PropertyVetoException(
"Property is read-only: " + rPropertyName, static_cast < cppu::OWeakObject * > (
this ) );
2172 OSL_FAIL(
"not implemented");
2180 throw uno::RuntimeException();
2187 assert(
m_pImpl->GetFormatField());
2190 m_pImpl->GetFormatField()->Broadcast(
2195 if (
m_pImpl->GetFormatField()->GetTextField())
2197 m_pImpl->GetFormatField()->GetTextField()->ExpandTextField();
2208 bool* pBool =
nullptr;
2209 switch(pEntry->
nWID)
2212 rValue >>=
m_pImpl->m_pProps->sPar1;
2215 rValue >>=
m_pImpl->m_pProps->sPar2;
2218 rValue >>=
m_pImpl->m_pProps->sPar3;
2221 rValue >>=
m_pImpl->m_pProps->sPar4;
2224 rValue >>=
m_pImpl->m_pProps->nFormat;
2225 m_pImpl->m_pProps->bFormatIsDefault =
false;
2231 rValue >>=
m_pImpl->m_pProps->nByte1;
2234 pBool = &
m_pImpl->m_pProps->bBool1;
2237 pBool = &
m_pImpl->m_pProps->bBool2;
2240 pBool = &
m_pImpl->m_pProps->bBool3;
2243 pBool = &
m_pImpl->m_pProps->bBool4;
2247 auto aTemp = o3tl::tryAccess<util::Date>(rValue);
2249 throw lang::IllegalArgumentException();
2251 m_pImpl->m_pProps->aDate =
Date(aTemp->Day, aTemp->Month, aTemp->Year);
2260 m_pImpl->m_pProps->nUSHORT1 = nVal;
2262 m_pImpl->m_pProps->nUSHORT2 = nVal;
2266 rValue >>=
m_pImpl->m_pProps->nSHORT1;
2270 throw lang::IllegalArgumentException();
2271 rValue >>=
m_pImpl->m_pProps->fDouble;
2275 if (!
m_pImpl->m_pProps->pDateTime)
2276 m_pImpl->m_pProps->pDateTime.reset(
new util::DateTime );
2277 rValue >>= *
m_pImpl->m_pProps->pDateTime;
2280 rValue >>=
m_pImpl->m_pProps->aPropSeq;
2283 rValue >>=
m_pImpl->m_pProps->aStrings;
2290 throw lang::IllegalArgumentException();
2296 throw uno::RuntimeException();
2313 throw beans::UnknownPropertyException(
"Unknown property: " + rPropertyName, static_cast < cppu::OWeakObject * > (
this ) );
2315 switch( pEntry->
nWID )
2318 aRet <<= text::WrapTextMode_NONE;
2321 aRet <<= text::TextContentAnchorType_AS_CHARACTER;
2325 uno::Sequence<text::TextContentAnchorType>
aTypes { text::TextContentAnchorType_AS_CHARACTER };
2336 bool bIsFieldUsed =
false;
2337 bool bIsFieldDisplayed =
false;
2353 else if (pViewShell)
2356 throw uno::RuntimeException();
2362 ?
m_pImpl->GetFormatField()->GetTextField() :
nullptr;
2364 throw uno::RuntimeException();
2372 bool bHidden = rTextNode.
IsHidden();
2375 sal_Int32 nHiddenStart;
2376 sal_Int32 nHiddenEnd;
2379 nHiddenStart, nHiddenEnd );
2387 bIsFieldUsed = bFrame || bHidden;
2388 bIsFieldDisplayed = bIsFieldUsed && !bHidden;
2397 switch(pEntry->
nWID)
2401 if (!
m_pImpl->m_xTextObject.is())
2407 uno::Reference<text::XText> xText(
m_pImpl->m_xTextObject);
2412 aRet <<=
m_pImpl->m_pProps->sPar1;
2415 aRet <<=
m_pImpl->m_pProps->sPar2;
2418 aRet <<=
m_pImpl->m_pProps->sPar3;
2421 aRet <<=
m_pImpl->m_pProps->sPar4;
2424 aRet <<=
m_pImpl->m_pProps->nFormat;
2427 aRet <<=
m_pImpl->m_pProps->nSubType;
2430 aRet <<=
m_pImpl->m_pProps->nByte1;
2433 aRet <<=
m_pImpl->m_pProps->bBool1;
2436 aRet <<=
m_pImpl->m_pProps->bBool2;
2439 aRet <<=
m_pImpl->m_pProps->bBool3;
2442 aRet <<=
m_pImpl->m_pProps->bBool4;
2445 aRet <<=
m_pImpl->m_pProps->aDate.GetUNODate();
2448 aRet <<= static_cast<sal_Int16>(
m_pImpl->m_pProps->nUSHORT1);
2451 aRet <<= static_cast<sal_Int16>(
m_pImpl->m_pProps->nUSHORT2);
2454 aRet <<=
m_pImpl->m_pProps->nSHORT1;
2457 aRet <<=
m_pImpl->m_pProps->fDouble;
2460 if (
m_pImpl->m_pProps->pDateTime)
2461 aRet <<= *
m_pImpl->m_pProps->pDateTime;
2464 aRet <<=
m_pImpl->m_pProps->aPropSeq;
2467 aRet <<=
m_pImpl->m_pProps->aStrings;
2476 throw uno::RuntimeException();
2483 OSL_FAIL(
"not implemented");
2488 OSL_FAIL(
"not implemented");
2493 OSL_FAIL(
"not implemented");
2498 OSL_FAIL(
"not implemented");
2507 switch(pField->
Which())
2550 m_pImpl->GetFormatField()->UpdateTextNode(
nullptr,
nullptr);
2553 m_pImpl->m_bCallUpdate =
true;
2558 return "SwXTextField";
2563 static const char aOldNamePart1[] =
".TextField.DocInfo.";
2564 static const char aOldNamePart2[] =
".TextField.";
2565 OUString sServiceNameCC( rOld );
2566 sal_Int32 nIdx = sServiceNameCC.indexOf( aOldNamePart1 );
2568 sServiceNameCC = sServiceNameCC.replaceAt( nIdx, strlen(aOldNamePart1),
u".textfield.docinfo." );
2569 nIdx = sServiceNameCC.indexOf( aOldNamePart2 );
2571 sServiceNameCC = sServiceNameCC.replaceAt( nIdx, strlen(aOldNamePart2),
u".textfield." );
2572 return sServiceNameCC;
2588 sal_Int32 nLen = sServiceName == sServiceNameCC ? 2 : 3;
2590 uno::Sequence< OUString > aRet( nLen );
2591 OUString* pArray = aRet.getArray();
2594 *pArray++ = sServiceNameCC;
2595 *pArray++ =
"com.sun.star.text.TextContent";
2604 uno::Reference<uno::XInterface>
const xThis(
m_wThis);
2609 lang::EventObject
const ev(xThis);
2610 std::unique_lock aGuard(
m_Mutex);
2617 if(rHint.
GetId() == SfxHintId::Dying)
2619 else if (rHint.
GetId() == SfxHintId::SwLegacyModify)
2622 switch(pLegacyHint->m_pOld ? pLegacyHint->m_pOld->Which() : 0)
2634 return m_pFormatField ? m_pFormatField->GetField() :
nullptr;
2639 return "SwXTextFieldMasters";
2649 uno::Sequence<OUString> aRet {
"com.sun.star.text.TextFieldMasters" };
2681 rTypeName = rName.getToken( 0,
'.', nIdx );
2682 if (rTypeName ==
"User")
2684 else if (rTypeName ==
"DDE")
2686 else if (rTypeName ==
"SetExpression")
2690 const OUString sFieldTypName( rName.getToken( 0,
'.', nIdx ));
2693 if( sUIName != sFieldTypName )
2696 else if (rTypeName.equalsIgnoreAsciiCase(
"DataBase"))
2698 rName = rName.copy(RTL_CONSTASCII_LENGTH(
"DataBase."));
2699 if (!rName.isEmpty())
2702 rName =
"DataBase." + rName;
2706 else if (rTypeName ==
"Bibliography")
2715 throw uno::RuntimeException();
2717 OUString
sName(rName), sTypeName;
2720 throw container::NoSuchElementException(
2721 "SwXTextFieldMasters::getByName(" + rName +
")",
2722 css::uno::Reference<css::uno::XInterface>());
2727 throw container::NoSuchElementException(
2728 "SwXTextFieldMasters::getByName(" + rName +
")",
2729 css::uno::Reference<css::uno::XInterface>());
2731 uno::Reference<beans::XPropertySet>
const xRet(
2741 switch( rFieldType.
Which() )
2744 sField =
"User." + rFieldType.
GetName();
2747 sField =
"DDE." + rFieldType.
GetName();
2755 sField =
"DataBase." + rFieldType.
GetName().replaceAll(OUStringChar(
DB_DELIM),
".");
2759 sField =
"Bibliography";
2774 throw uno::RuntimeException();
2777 const size_t nCount = pFieldTypes->size();
2780 for(
size_t i = 0;
i < nCount; ++
i )
2784 OUString sFieldName;
2787 aFieldNames.push_back(sFieldName);
2798 throw uno::RuntimeException();
2800 OUString
sName(rName), sTypeName;
2821 throw uno::RuntimeException();
2834 return "SwXTextFieldTypes";
2844 uno::Sequence<OUString> aRet {
"com.sun.star.text.TextFields" };
2861 lang::EventObject
const ev(static_cast< ::cppu::OWeakObject&>(*
this));
2862 std::unique_lock aGuard(
m_pImpl->m_Mutex);
2863 m_pImpl->m_RefreshListeners.disposeAndClear(aGuard, ev);
2870 throw uno::RuntimeException();
2883 throw uno::RuntimeException();
2892 throw uno::RuntimeException();
2898 lang::EventObject
const event(static_cast< ::cppu::OWeakObject*>(
this));
2899 std::unique_lock aGuard(
m_pImpl->m_Mutex);
2900 m_pImpl->m_RefreshListeners.notifyEach(aGuard,
2901 & util::XRefreshListener::refreshed, event);
2905 const uno::Reference<util::XRefreshListener> & xListener)
2907 std::unique_lock aGuard(
m_pImpl->m_Mutex);
2908 m_pImpl->m_RefreshListeners.addInterface(aGuard, xListener);
2912 const uno::Reference<util::XRefreshListener> & xListener)
2914 std::unique_lock aGuard(
m_pImpl->m_Mutex);
2915 m_pImpl->m_RefreshListeners.removeInterface(aGuard, xListener);
2923 std::vector<uno::Reference<text::XTextField>>
m_Items;
2935 if(rHint.
GetId() == SfxHintId::Dying)
2943 return "SwXFieldEnumeration";
2951 uno::Sequence<OUString> SAL_CALL
2954 return {
"com.sun.star.text.FieldEnumeration" };
2963 const SwFieldTypes* pFieldTypes =
m_pImpl->m_pDoc->getIDocumentFieldsAccess().GetFieldTypes();
2964 const size_t nCount = pFieldTypes->size();
2968 std::vector<SwFormatField*> vFormatFields;
2970 std::for_each(vFormatFields.begin(), vFormatFields.end(),
2974 const std::vector< uno::Reference<text::XTextField> > MetaFields(
2975 m_pImpl->m_pDoc->GetMetaFieldManager().getMetaFields() );
2976 for (
const auto & rMetaField : MetaFields)
2978 m_pImpl->m_Items.push_back( rMetaField );
2982 for (
auto iter = rMarksAccess.getFieldmarksBegin(); iter != rMarksAccess.getFieldmarksEnd(); ++iter)
2996 return m_pImpl->m_nNextIndex <
static_cast<sal_Int32
>(
m_pImpl->m_Items.size());
3003 if (
m_pImpl->m_nNextIndex >= static_cast<sal_Int32>(
m_pImpl->m_Items.size()))
3004 throw container::NoSuchElementException(
3005 "SwXFieldEnumeration::nextElement",
3006 css::uno::Reference<css::uno::XInterface>());
3008 uno::Reference< text::XTextField > &rxField =
void SetToolTip(const OUString &rToolTip)
Sets the tool tip of the field.
void disposeAndClear(::std::unique_lock<::std::mutex > &rGuard, const css::lang::EventObject &rEvt)
#define PROPERTY_MAP_FLDTYP_CHAPTER
Instances of SwFields and those derived from it occur 0 to n times.
const SwDocInfoSubType DI_SUB_TIME
SwNodeOffset min(const SwNodeOffset &a, const SwNodeOffset &b)
void SetValue(bool bHidden)
virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > &xListener) override
void SetDelimiter(const OUString &s)
IDocumentStatistics const & getIDocumentStatistics() const
SwNode & GetNode(bool bPoint=true) const
#define PROPERTY_MAP_FLDTYP_DATABASE_SET_NUM
The shared part of a user field.
#define FIELD_PROP_DATE_TIME
Marks a position in the document model.
SwServiceType m_nServiceId
#define UNO_NAME_DDE_COMMAND_FILE
LanguageType GetLanguage() const
Language at field position.
virtual void SAL_CALL addVetoableChangeListener(const OUString &rPropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener > &xListener) override
SwXTextFieldMasters(SwDoc *pDoc)
virtual const_iterator_t getAnnotationMarksEnd() const =0
#define UNO_NAME_IS_AUTOMATIC_UPDATE
std::unique_ptr< SwFieldProperties_Impl > m_pProps
virtual void SAL_CALL setPropertyValue(const OUString &rPropertyName, const css::uno::Any &rValue) override
static SwServiceType lcl_GetServiceForField(const SwField &rField)
::sw::UnoImplPtr< Impl > m_pImpl
#define PROPERTY_MAP_FLDTYP_HIDDEN_TEXT
virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() override
sal_uInt32 GetFormat() const
Query parameters for dialog and for BASIC.
virtual void CalcLayout()
virtual sal_uInt16 GetSubType() const override
#define PROPERTY_MAP_FLDTYP_COMBINED_CHARACTERS
SwRect FindLayoutRect(const bool bPrtArea=false, const Point *pPoint=nullptr) const
SwFormatField * m_pFormatField
const SwExtendedSubType SUB_INVISIBLE
Invisible.
#define PROPERTY_MAP_FLDTYP_DDE
constexpr TypedWhichId< SwPtrMsgPoolItem > RES_REMOVE_UNO_OBJECT(181)
virtual ~SwXTextFieldTypes() override
#define FIELD_PROP_STRINGS
#define PROPERTY_MAP_FLDTYP_DATABASE_NEXT_SET
void SetItems(std::vector< OUString > &&rItems)
Sets the items of the dropdown box.
virtual css::uno::Any SAL_CALL getByName(const OUString &rName) override
virtual SwFieldType * GetFieldType(SwFieldIds nResId, const OUString &rName, bool bDbFieldMatching) const =0
void ChgExpStr(const OUString &rExpand, SwRootFrame const *pLayout)
void SetPromptText(const OUString &rStr)
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
SwServiceType GetServiceId() const
virtual css::uno::Any SAL_CALL getPropertyValue(const OUString &rPropertyName) override
#define PROPERTY_MAP_FLDTYP_GET_REFERENCE
wrapper iterator: wraps iterator of implementation while hiding MarkBase class; only IMark instances ...
void SetOutlineLvl(sal_uInt8 n)
virtual void SetModified()=0
Must be called manually at changes of format.
static OUString LocalizeFormula(const SwSetExpField &rField, const OUString &rFormula, bool bQuery)
virtual void SAL_CALL dispose() override
const SwPosition * GetMark() const
const sal_Unicode cTokenSeparator
Base class of all fields.
virtual void SetPar2(const OUString &rStr) override
set the PostIt's text
#define FIELD_PROP_USHORT1
virtual sal_Int64 SAL_CALL getSomething(const css::uno::Sequence< sal_Int8 > &rIdentifier) override
Provides access to the marks of a document.
#define PROPERTY_MAP_FLDTYP_GET_EXP
const SfxItemPropertySet * GetPropertySet(sal_uInt16 PropertyId)
Impl(SwFieldType *const pType, SwDoc *pDoc, SwFieldIds nResId)
#define PROPERTY_MAP_FLDMSTR_USER
constexpr sal_uInt8 MAXLEVEL
virtual void Invalidate() override
virtual sal_Bool SAL_CALL supportsService(const OUString &rServiceName) override
virtual void Notify(const SfxHint &rHint) override
bool IsAtEndOfMeta() const
const SwDocInfoSubType DI_COMMENT
virtual OUString SAL_CALL getPresentation(sal_Bool bShowCommand) override
SwFieldType * GetFieldType() const
SwTextNode * GetpTextNode() const
const sal_uInt16 aDocInfoSubTypeFromService[]
static void CreateMacroString(OUString &rMacro, std::u16string_view rMacroName, const OUString &rLibraryName)
create an internally used macro name from the library and macro name parts
IDocumentMarkAccess * getIDocumentMarkAccess()
const OUString & GetName() const
#define PROPERTY_MAP_FLDTYP_DOCINFO_REVISION
static css::uno::Reference< css::text::XTextField > CreateXTextField(SwDoc *pDoc, SwFormatField const *pFormat, SwServiceType nServiceId=SwServiceType::Invalid)
virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() override
#define PROPERTY_MAP_FLDMSTR_DUMMY0
SAL_DLLPRIVATE css::uno::WeakReference< css::beans::XPropertySet > const & GetXObject() const
#define UNO_NAME_DDE_COMMAND_ELEMENT
std::unique_ptr< Impl > m_pImpl
For old documents the Field-Which IDs must be preserved !!!
const SwDocInfoSubType DI_EDIT
css::uno::Reference< css::beans::XPropertySetInfo > const & getPropertySetInfo() const
#define FIELD_PROP_SUBTYPE
#define UNO_NAME_SUB_TYPE
#define PROPERTY_MAP_FLDTYP_DOCINFO_DATE_TIME
virtual sal_Bool SAL_CALL hasElements() override
virtual void SAL_CALL removeVetoableChangeListener(const OUString &rPropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener > &xListener) override
const SfxItemPropertyMapEntry * getByName(std::u16string_view rName) const
void GatherFields(std::vector< SwFormatField * > &rvFormatFields, bool bCollectOnlyInDocNodes=true) const
uno::WeakReference< uno::XInterface > m_wThis
#define FIELD_PROP_FORMAT
static sal_uInt16 lcl_GetPropMapIdForFieldType(SwFieldIds nWhich)
virtual ~SwXFieldEnumeration() override
OUString SwResId(TranslateId aId)
IDocumentFieldsAccess const & getIDocumentFieldsAccess() const
static void TransmuteLeadToInputField(SwSetExpField &rField)
Convert between SwSetExpField with InputFlag false and InputFlag true.
virtual void SAL_CALL addPropertyChangeListener(const OUString &rPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener > &xListener) override
void SetFormatField(SwFormatField *pFormatField, SwDoc *pDoc)
uno::WeakReference< uno::XInterface > m_wThis
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
virtual css::uno::Any SAL_CALL getPropertyValue(const OUString &rPropertyName) override
virtual void SAL_CALL removeVetoableChangeListener(const OUString &rPropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener > &xListener) override
virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() override
invariant for SwAuthorityField is that it is always registered at its SwAuthorityFieldType via AddFie...
SwXFieldEnumeration(SwDoc &rDoc)
SwXTextFieldTypes(SwDoc *pDoc)
::sw::UnoImplPtr< Impl > m_pImpl
void ChgExpStr(const OUString &rExpand, SwRootFrame const *pLayout)
A wrapper around SfxPoolItem to store the start position of (usually) a text portion, with an optional end.
IDocumentStylePoolAccess const & getIDocumentStylePoolAccess() const
virtual sw::mark::IMark * makeAnnotationMark(const SwPaM &rPaM, const OUString &rName)=0
constexpr OUStringLiteral sServiceName
virtual sal_uInt16 GetSubType() const override
SwFieldType * m_pFieldType
virtual void SAL_CALL dispose() override
#define PROPERTY_MAP_FLDMSTR_BIBLIOGRAPHY
static SwFieldIds lcl_GetIdByName(OUString &rName, OUString &rTypeName)
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
virtual void SAL_CALL removePropertyChangeListener(const OUString &rPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener > &xListener) override
static bool getInstanceName(const SwFieldType &rFieldType, OUString &rName)
const SwDocInfoSubType DI_SUBJECT
static const css::uno::Sequence< sal_Int8 > & getUnoTunnelId()
sal_Int32 GetStart() const
virtual OUString SAL_CALL getImplementationName() override
#define PROPERTY_MAP_FLDTYP_REF_PAGE_SET
bool IsDescriptor() const
static css::uno::Reference< css::text::XTextContent > CreateXFieldmark(SwDoc &rDoc,::sw::mark::IMark *pMark, bool isReplacementObject=false)
void Width(tools::Long nNew)
#define PROPERTY_MAP_FLDTYP_DOCINFO_CUSTOM
void SetExpansion(const OUString &rStr)
#define UNO_NAME_CHAPTER_NUMBERING_LEVEL
const SwFormatField & GetFormatField() const
virtual void Notify(const SfxHint &) override
void SetSelectedItem(const OUString &rItem)
Sets the selected item.
#define PROPERTY_MAP_FLDTYP_DOCINFO_AUTHOR
const ServiceIdResId aServiceToRes[]
void SetExpansion(const OUString &rStr)
#define FIELD_PROP_DOUBLE
const SwGetSetExpType GSE_EXPR
Expression.
virtual bool QueryValue(css::uno::Any &rVal, sal_uInt16 nWhichId) const
#define UNO_NAME_DATA_COMMAND_TYPE
sal_Int32 m_nNextIndex
index of next element to be returned
::sw::UnoImplPtr< Impl > m_pImpl
#define PROPERTY_MAP_FLDTYP_DUMMY_0
virtual SwPageDesc * GetPageDescFromPool(sal_uInt16 nId, bool bRegardLanguage=true)=0
Return required automatic page style.
#define PROPERTY_MAP_FLDTYP_DOCINFO_MISC
virtual OUString SAL_CALL getImplementationName() override
constexpr OUStringLiteral aData
#define SAL_N_ELEMENTS(arr)
const css::uno::Sequence< sal_Int8 > & getSeq() const
const SwDocInfoSubType DI_CUSTOM
Impl(SwPageDesc *const pPageDesc, SwDoc *pDoc, SwFieldIds nResId)
#define UNO_NAME_DDE_COMMAND_TYPE
static SW_DLLPUBLIC const OUString & GetSpecialExtraProgName(const OUString &rExtraUIName)
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
virtual void SAL_CALL addVetoableChangeListener(const OUString &rPropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener > &xListener) override
static sal_Int32 lcl_PropName2TokenPos(std::u16string_view rPropertyName)
virtual css::uno::Sequence< OUString > SAL_CALL getElementNames() override
::comphelper::OInterfaceContainerHelper4< css::lang::XEventListener > m_EventListeners
virtual sal_Int64 SAL_CALL getSomething(const css::uno::Sequence< sal_Int8 > &rIdentifier) override
virtual void UpdateFields()
PaM is Point and Mark: a selection of the document model.
static OUString GetProviderName(SwServiceType nObjectType)
const SwDocInfoSubType DI_PRINT
SwFormatField * GetFormatField()
virtual void SAL_CALL setPropertyValue(const OUString &rPropertyName, const css::uno::Any &rValue) override
constexpr TypedWhichId< SwFormatField > RES_TXTATR_FIELD(RES_TXTATR_NOEND_BEGIN)
#define PROPERTY_MAP_FLDTYP_REF_PAGE_GET
void SetExpansion(const OUString &rStr)
Impl(SwDoc *const pDoc, SwFormatField *const pFormat, SwServiceType nServiceId)
#define UNO_NAME_DEPENDENT_TEXT_FIELDS
void SetSetNumber(tools::Long nNum)
The non-shared part of a user field.
rtl::Reference< SwTextAPIObject > m_xTextObject
const SwPosition * GetPoint() const
const SwExtendedSubType SUB_CMD
Show command.
static sal_uInt16 GetFieldTypeMId(std::u16string_view rProperty, const SwFieldType &rTyp)
SwEditShell const * GetEditShell() const
const SwDocInfoSubType DI_KEYS
::comphelper::OInterfaceContainerHelper4< css::lang::XEventListener > m_EventListeners
virtual OUString SAL_CALL getImplementationName() override
SAL_DLLPRIVATE void SetXObject(css::uno::Reference< css::beans::XPropertySet > const &xFieldMaster)
#define FIELD_PROP_USHORT2
static sal_uInt16 lcl_GetPropertyMapOfService(SwServiceType nServiceId)
const SwDocInfoSubType DI_CREATE
SwFieldTypesEnum
List of FieldTypes at UI.
#define PROPERTY_MAP_FLDTYP_DATABASE
bool HasMark() const
A PaM marks a selection if Point and Mark are distinct positions.
virtual sal_Bool SAL_CALL hasMoreElements() override
constexpr std::enable_if_t< std::is_signed_v< T >, std::make_unsigned_t< T > > make_unsigned(T value)
#define PROPERTY_MAP_FLDTYP_SCRIPT
Force hint expand (only matters for hints with CH_TXTATR).
virtual sal_Bool SAL_CALL supportsService(const OUString &rServiceName) override
const SfxItemPropertyMap & getPropertyMap() const
virtual OUString SAL_CALL getImplementationName() override
std::vector< uno::Reference< text::XTextField > > m_Items
IDocumentState const & getIDocumentState() const
virtual const_iterator_t getAnnotationMarksBegin() const =0
const SwDocInfoSubType DI_SUB_DATE
virtual void SAL_CALL addPropertyChangeListener(const OUString &rPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener > &xListener) override
static const css::uno::Sequence< sal_Int8 > & getUnoTunnelId()
virtual void SAL_CALL addRefreshListener(const css::uno::Reference< css::util::XRefreshListener > &xListener) override
css::uno::Type const & get()
SwNodes & GetNodes()
Node is in which nodes-array/doc?
virtual const SwFieldTypes * GetFieldTypes() const =0
virtual sal_Bool SAL_CALL hasElements() override
virtual sal_Bool SAL_CALL hasByName(const OUString &rName) override
SwTextField * GetFieldTextAttrAt(const sal_Int32 nIndex, const bool bIncludeInputFieldAtStart=false) const
Text operation/manipulation interface.
bool StartListening(SvtBroadcaster &rBroadcaster)
SwXFieldMaster(SwFieldType &rType, SwDoc *pDoc)
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
::comphelper::OInterfaceContainerHelper4< util::XRefreshListener > m_RefreshListeners
#define PROPERTY_MAP_FLDTYP_USER
virtual ~SwXFieldMaster() override
virtual sal_uInt16 GetSubType() const
#define UNO_NAME_NUMBERING_SEPARATOR
IDocumentLayoutAccess const & getIDocumentLayoutAccess() const
#define PROPERTY_MAP_FLDTYP_DATETIME
virtual void QueryValue(css::uno::Any &rVal, sal_uInt16 nWhich) const
const SwPosition * Start() const
const OUString & GetName() const
bool XTextRangeToSwPaM(SwUnoInternalPaM &rToFill, const uno::Reference< text::XTextRange > &xTextRange,::sw::TextRangeMode const eMode)
#define PROPERTY_MAP_FLDTYP_JUMP_EDIT
virtual css::uno::Reference< css::text::XTextRange > SAL_CALL getAnchor() override
#define PROPERTY_MAP_FLDTYP_DOC_INFO
SwFieldType * GetTyp() const
#define PROPERTY_MAP_FLDTYP_DOCINFO_EDIT_TIME
void SetText(const OUString &rText, SwRootFrame const *pLayout)
#define PROPERTY_MAP_FLDTYP_DOCSTAT
bool GetInputFlag() const
void SetName(const OUString &rName)
Sets the name of the field.
#define PROPERTY_MAP_FLDTYP_PAGE_NUM
void SetSeqNumber(sal_uInt16 n)
Logical number, sequence fields.
OUString getDataSource() const
const SwDocInfoSubType DI_SUB_AUTHOR
bool SetURL(std::u16string_view rTheAbsURIRef, EncodeMechanism eMechanism=EncodeMechanism::WasEncoded, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8)
SwFieldType * GetFieldType(bool bDontCreate=false) const
constexpr TypedWhichId< SwFormatField > RES_TXTATR_ANNOTATION(60)
SvtBroadcaster & GetNotifier()
void SetFieldType(SwFieldType *pType)
virtual void SAL_CALL removeRefreshListener(const css::uno::Reference< css::util::XRefreshListener > &xListener) override
#define PROPERTY_MAP_FLDTYP_INPUT
virtual void PutValueToField(const SwPosition &rPos, const css::uno::Any &rVal, sal_uInt16 nWhich)=0
Puts a value into a field at a certain position.
SwTextNode is a paragraph in the document model.
virtual void SAL_CALL attach(const css::uno::Reference< css::text::XTextRange > &xTextRange) override
OUString ExpandField(bool bCached, SwRootFrame const *pLayout) const
expand the field.
#define PROPERTY_MAP_FLDTYP_HIDDEN_PARA
SwFormatField * GetFormatField()
static const std::vector< OUString > & GetExtraUINameArray()
SwFieldIds Which() const
ResId.
#define PROPERTY_MAP_FLDTYP_MACRO
#define UNO_NAME_INSTANCE_NAME
#define PROPERTY_MAP_FLDTYP_TEMPLATE_NAME
virtual OUString GetName() const
Only in derived classes.
virtual void UpdateDocStat(bool bCompleteAsync, bool bFields)=0
Updates the internal document's statistics.
virtual const SwViewShell * GetCurrentViewShell() const =0
Returns the layout set at the document.
const SwDocInfoSubType DI_DOCNO
static OUString Expand(sal_uInt16 nSubType)
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
SwXTextField(SwFormatField &rFormat, SwDoc &rDoc)
#define FIELD_PROP_PROP_SEQ
#define PROPERTY_MAP_FLDMSTR_SET_EXP
css::uno::Sequence< DstElementType > containerToSequence(const SrcType &i_Container)
virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > &xListener) override
#define FN_UNO_ANCHOR_TYPE
#define PROPERTY_MAP_FLDMSTR_DATABASE
static OUString Expand(sal_uLong)
sal_Int32 GetIndex() const
INetProtocol GetProtocol() const
#define PROPERTY_MAP_FLDTYP_DATABASE_NAME
if(aStr!=aBuf) UpdateName_Impl(m_xFollowLb.get()
static OUString OldNameToNewName_Impl(const OUString &rOld)
virtual void Invalidate()
void SetInputFlag(bool bInp)
const SwPosition * End() const
virtual sal_Bool SAL_CALL supportsService(const OUString &rServiceName) override
virtual void SAL_CALL removePropertyChangeListener(const OUString &rPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener > &xListener) override
#define PROPERTY_MAP_FLDTYP_DATABASE_NUM_SET
virtual void PutValue(const css::uno::Any &rVal, sal_uInt16 nWhich)
OUString setToken(const OUString &rIn, sal_Int32 nToken, sal_Unicode cTok, std::u16string_view rNewToken)
#define PROPERTY_MAP_FLDTYP_ANNOTATION
SwUnoPropertyMapProvider aSwMapProvider
virtual OUString GetFieldName() const
get name or content
#define PROPERTY_MAP_FLDTYP_BIBLIOGRAPHY
const SwField * GetField() const
Sequence< sal_Int8 > aSeq
const SwGetSetExpType GSE_FORMULA
Formula.
static SwFieldIds lcl_ServiceIdToResId(SwServiceType nServiceId)
virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > &xListener) override
#define UNO_NAME_DATA_BASE_URL
#define FN_UNO_ANCHOR_TYPES
constexpr TypedWhichId< SwFormatField > RES_TXTATR_INPUTFIELD(55)
void SetExpansion(const OUString &rStr)
virtual sal_Bool SAL_CALL supportsService(const OUString &rServiceName) override
#define UNO_NAME_DATA_TABLE_NAME
virtual void CalcLayout() override
To enable set up of StartActions and EndActions.
virtual OUString SAL_CALL getImplementationName() override
virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > &xListener) override
static bool GetBoundsOfHiddenRange(const SwTextNode &rNode, sal_Int32 nPos, sal_Int32 &rnStartPos, sal_Int32 &rnEndPos, std::vector< sal_Int32 > *pList=nullptr)
Hidden text range information - static and non-version.
#define UNO_NAME_DATA_COLUMN_NAME
constexpr OUStringLiteral COM_TEXT_FLDMASTER_CC
UNO wrapper around an SwFormatField, i.e.
#define UNO_NAME_DATA_BASE_NAME
#define PROPERTY_MAP_FLDTYP_AUTHOR
virtual void SAL_CALL refresh() override
#define PROPERTY_MAP_PARAGRAPH_EXTENSIONS
#define FIELD_PROP_IS_FIELD_DISPLAYED
#define PROPERTY_MAP_FLDTYP_USER_EXT
virtual ~SwXTextField() override
void SetFieldType(SwFieldType &rType)
void SetHelp(const OUString &rHelp)
Sets the help text of the field.
bool IsDocNodes() const
Is the NodesArray the regular one of Doc? (and not the UndoNds, ...) Implementation in doc...
const SwGetSetExpType GSE_STRING
String.
virtual void SetValue(const double &rVal)
detail::Optional< bool >::type tryAccess< bool >(css::uno::Any const &any)
const SwDocInfoSubType DI_SUB_FIXED
const SwDocInfoSubType DI_CHANGE
virtual void SetMark()
Unless this is called, the getter method of Mark will return Point.
#define PROPERTY_MAP_FLDTYP_DROPDOWN
virtual css::uno::Type SAL_CALL getElementType() override
const char *const aFieldNames[]
virtual void SAL_CALL attachTextFieldMaster(const css::uno::Reference< css::beans::XPropertySet > &xFieldMaster) override
#define PROPERTY_MAP_FLDTYP_CONDITIONED_TEXT
virtual css::uno::Any SAL_CALL nextElement() override
virtual void UpdateFields(bool bCloseDB)=0
SwTextNode & GetTextNode() const
#define UNO_NAME_IS_EXPRESSION
static OUString GetProgrammaticName(const SwFieldType &rType, SwDoc &rDoc)
virtual ~SwXTextFieldMasters() override
virtual css::uno::Type SAL_CALL getElementType() override
const SwDocInfoSubType DI_TITLE
#define FIELD_PROP_IS_FIELD_USED
virtual css::uno::Reference< css::beans::XPropertySet > SAL_CALL getTextFieldMaster() override
#define PROPERTY_MAP_FLDMSTR_DDE
void SetHidden(bool bHidden)
static void GetPamForTextField(const SwTextField &rTextField, std::shared_ptr< SwPaM > &rPamForTextField)
#define PROPERTY_MAP_FLDTYP_FILE_NAME
virtual sal_Bool SAL_CALL supportsService(const OUString &rServiceName) override
#define PROPERTY_MAP_FLDTYP_TABLE_FORMULA
SwServiceType
entries in this enum are mapped in an array in unocoll.cxx
sal_Int32 GetEnumAsInt32(const css::uno::Any &rVal)
constexpr TypedWhichId< SwPtrMsgPoolItem > RES_OBJECTDYING(RES_MSG_BEGIN)
const SfxItemPropertyMapEntry * GetPropertyMapEntries(sal_uInt16 PropertyId)
SwTextNode * GetTextNode()
Inline methods from Node.hxx.
#define PROPERTY_MAP_FLDTYP_SET_EXP
static void DeleteTextField(const SwTextField &rTextField)
static const OUString & GetSpecialExtraUIName(const OUString &rExtraProgName)
virtual void SAL_CALL update() override
void SetLateInitialization()
bool m_bDetectedRangeSegmentation false
static css::uno::Reference< css::beans::XPropertySet > CreateXFieldMaster(SwDoc *pDoc, SwFieldType *pType, SwFieldIds nResId=SwFieldIds::Unknown)
void SetUserString(const OUString &rS)
virtual sal_uInt16 GetSubType() const override
virtual void Notify(const SfxHint &rHint) override
#define FIELD_PROP_SHORT1
void SetTextObject(std::optional< OutlinerParaObject > pText)
void SetOffset(tools::Long nMinutes)
virtual void SetValue(tools::Long nNew) override
static const OUString & GetProgName(const OUString &rName, SwGetPoolIdFromName)