20 #include <config_features.h>
21 #include <config_fuzzers.h>
23 #include <textapi.hxx>
26 #include <com/sun/star/frame/XModel.hpp>
27 #include <com/sun/star/text/XText.hpp>
28 #include <com/sun/star/script/Converter.hpp>
29 #include <com/sun/star/text/PlaceholderType.hpp>
30 #include <com/sun/star/text/TemplateDisplayFormat.hpp>
31 #include <com/sun/star/text/PageNumberType.hpp>
32 #include <com/sun/star/text/FilenameDisplayFormat.hpp>
33 #include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
34 #include <com/sun/star/document/XDocumentProperties.hpp>
35 #include <com/sun/star/util/Date.hpp>
36 #include <com/sun/star/util/Duration.hpp>
46 #include <libxml/xmlstring.h>
47 #include <libxml/xmlwriter.h>
50 #include <tools/datetime.hxx>
52 #include <com/sun/star/util/DateTime.hpp>
84 #include <strings.hrc>
90 #define URL_DECODE INetURLObject::DecodeMechanism::Unambiguous
104 sal_uInt16
const nPageNumber, sal_uInt16
const nMaxPage,
108 int const nTmp = nPageNumber + nOff;
137 if (!(bVirt && pDoc))
156 else if( dynamic_cast< const SwFormat* >(
pDesc->GetDefinedIn()) !=
nullptr)
167 sal_uInt16 nSub, sal_uInt32 nFormat,
short nOff,
168 sal_uInt16
const nPageNumber, sal_uInt16
const nMaxPage)
169 :
SwField(pTyp, nFormat), m_nSubType(nSub), m_nOffset(nOff)
170 , m_nPageNumber(nPageNumber)
171 , m_nMaxPage(nMaxPage)
176 sal_uInt16
const nMaxPage)
215 return std::unique_ptr<SwField>(pTmp.release());
225 m_nOffset =
static_cast<short>(rStr.toInt32());
238 rAny <<= static_cast<sal_Int16>(
GetFormat());
245 text::PageNumberType
eType;
246 eType = text::PageNumberType_CURRENT;
248 eType = text::PageNumberType_PREV;
250 eType = text::PageNumberType_NEXT;
284 case text::PageNumberType_CURRENT:
287 case text::PageNumberType_PREV:
290 case text::PageNumberType_NEXT:
315 if((nFormat & 0xff) ==
AF_NAME)
323 return std::make_unique<SwAuthorFieldType>();
343 std::unique_ptr<SwAuthorField> pTmp(
new SwAuthorField( static_cast<SwAuthorFieldType*>(
GetTyp()),
346 return std::unique_ptr<SwField>(pTmp.release());
380 if( *o3tl::doAccess<bool>(rAny) )
406 if( pDShell && pDShell->
HasName() )
428 aRet = aRet.copy(0, nPos);
456 return std::make_unique<SwFileNameFieldType>(
m_rDoc);
475 std::unique_ptr<SwFileNameField> pTmp(
479 return std::unique_ptr<SwField>(pTmp.release());
492 nRet = text::FilenameDisplayFormat::PATH;
498 nRet = text::FilenameDisplayFormat::NAME_AND_EXT;
500 default: nRet = text::FilenameDisplayFormat::FULL;
534 case text::FilenameDisplayFormat::PATH:
540 case text::FilenameDisplayFormat::NAME_AND_EXT:
552 if( *o3tl::doAccess<bool>(rAny) )
576 OSL_ENSURE( nFormat <
FF_END,
"Expand: no valid Format!" );
580 OSL_ENSURE(pDocShell,
"no SwDocShell");
582 uno::Reference<document::XDocumentPropertiesSupplier> xDPS(
583 pDocShell->GetModel(), uno::UNO_QUERY_THROW);
584 uno::Reference<document::XDocumentProperties> xDocProps(
585 xDPS->getDocumentProperties());
586 OSL_ENSURE(xDocProps.is(),
"Doc has no DocumentProperties");
589 aRet = xDocProps->getTemplateName();
590 else if( !xDocProps->getTemplateURL().isEmpty() )
598 aFac.
GetLogicNames( xDocProps->getTemplateURL(), sRegion, sTmp );
607 aRet = aPathName.GetBase();
612 aPathName.removeSegment();
613 aRet = aPathName.GetFull();
616 aRet = aPathName.GetFull();
626 return std::make_unique<SwTemplNameFieldType>(
m_rDoc);
652 case FF_PATH: nRet = text::FilenameDisplayFormat::PATH;
break;
654 case FF_NAME: nRet = text::FilenameDisplayFormat::NAME_AND_EXT;
break;
655 case FF_UI_RANGE: nRet = text::TemplateDisplayFormat::AREA;
break;
656 case FF_UI_NAME: nRet = text::TemplateDisplayFormat::TITLE;
break;
657 default: nRet = text::FilenameDisplayFormat::FULL;
683 case text::FilenameDisplayFormat::PATH:
689 case text::FilenameDisplayFormat::NAME_AND_EXT:
692 case text::TemplateDisplayFormat::AREA :
695 case text::TemplateDisplayFormat::TITLE :
736 OSL_FAIL(
"SwDocStatFieldType::Expand: unknown SubType" );
739 if( nVal <= SHRT_MAX )
742 return OUString::number( nVal );
747 return std::make_unique<SwDocStatFieldType>(
m_rDoc);
767 return std::make_unique<SwDocStatField>(
793 rAny <<= static_cast<sal_Int16>(
GetFormat());
836 return std::make_unique<SwDocInfoFieldType>(
GetDoc());
845 *ppLocalData = *ppAppLocalData;
846 if( nLang != (*ppLocalData)->getLanguageTag().getLanguageType() )
855 OSL_ENSURE(pDocShell,
"no SwDocShell");
856 if (!pDocShell) {
return OUString(); }
858 uno::Reference<document::XDocumentPropertiesSupplier> xDPS(
859 pDocShell->
GetModel(), uno::UNO_QUERY_THROW);
860 uno::Reference<document::XDocumentProperties> xDocProps(
861 xDPS->getDocumentProperties());
862 OSL_ENSURE(xDocProps.is(),
"Doc has no DocumentProperties");
864 sal_uInt16 nExtSub = nSub & 0xff00;
870 case DI_TITLE: aStr = xDocProps->getTitle();
break;
871 case DI_SUBJECT:aStr = xDocProps->getSubject();
break;
872 case DI_KEYS: aStr = ::comphelper::string::convertCommaSeparated(
873 xDocProps->getKeywords());
875 case DI_COMMENT:aStr = xDocProps->getDescription();
break;
876 case DI_DOCNO: aStr = OUString::number(
877 xDocProps->getEditingCycles() );
883 sal_Int32 dur = xDocProps->getEditingDuration();
886 aStr = pLocalData->getTime(
tools::Time(dur/3600, (dur%3600)/60, dur%60),
891 sal_Int32 dur = xDocProps->getEditingDuration();
902 uno::Reference < beans::XPropertySet > xSet(
903 xDocProps->getUserDefinedProperties(),
904 uno::UNO_QUERY_THROW);
905 aAny = xSet->getPropertyValue( rName );
908 uno::Any aNew = xConverter->convertToSimpleType( aAny, uno::TypeClass_STRING );
911 catch (uno::Exception&) {}
917 OUString
aName( xDocProps->getAuthor() );
918 util::DateTime uDT( xDocProps->getCreationDate() );
924 aName = xDocProps->getModifiedBy();
925 uDT = xDocProps->getModificationDate();
930 aName = xDocProps->getPrintedBy();
931 uDT = xDocProps->getPrintDate();
937 if (aDate.IsValidAndGregorian())
950 aStr = pLocalData->getTime( aDate,
967 aStr = pLocalData->getDate( aDate );
983 if( pAppLocalData != pLocalData )
1008 const double fNanoSecondsPerDay = 86400000000000.0;
1009 return ( (rTime.Hours * SAL_CONST_INT64(3600000000000))
1010 + (rTime.Minutes * SAL_CONST_INT64( 60000000000))
1011 + (rTime.Seconds * SAL_CONST_INT64( 1000000000))
1012 + (rTime.NanoSeconds))
1013 / fNanoSecondsPerDay;
1021 return double( nDate - nNullDate );
1040 uno::Reference<document::XDocumentPropertiesSupplier> xDPS( pDocShell->
GetModel(), uno::UNO_QUERY_THROW);
1041 uno::Reference<document::XDocumentProperties> xDocProps( xDPS->getDocumentProperties());
1042 uno::Reference < beans::XPropertySet > xSet( xDocProps->getUserDefinedProperties(), uno::UNO_QUERY_THROW);
1043 uno::Reference < beans::XPropertySetInfo > xSetInfo = xSet->getPropertySetInfo();
1046 if( xSetInfo->hasPropertyByName(
m_aName ) )
1047 aAny = xSet->getPropertyValue(
m_aName );
1057 util::DateTime aDateTime;
1058 util::Duration aDuration;
1065 else if( aAny >>= aDateTime )
1067 double fDateTime = lcl_TimeToDouble<util::DateTime>( aDateTime );
1069 const Date& rNullDate = pFormatter->GetNullDate();
1070 fDateTime += lcl_DateToDouble<util::DateTime>( aDateTime, rNullDate );
1073 else if( aAny >>= aDuration )
1075 sVal = OUStringChar(aDuration.Negative ?
'-' :
'+')
1077 sVal = sVal.replaceFirst(
"%1", OUString::number( aDuration.Years ) );
1078 sVal = sVal.replaceFirst(
"%2", OUString::number( aDuration.Months ) );
1079 sVal = sVal.replaceFirst(
"%3", OUString::number( aDuration.Days ) );
1080 sVal = sVal.replaceFirst(
"%4", OUString::number( aDuration.Hours ) );
1081 sVal = sVal.replaceFirst(
"%5", OUString::number( aDuration.Minutes) );
1082 sVal = sVal.replaceFirst(
"%6", OUString::number( aDuration.Seconds) );
1086 uno::Any aNew = xConverter->convertToSimpleType( aAny, uno::TypeClass_STRING );
1093 catch (uno::Exception&) {}
1131 return std::unique_ptr<SwField>(pField.release());
1165 rAny <<= static_cast<sal_Int16>(
m_aContent.toInt32());
1173 rAny <<= static_cast<sal_Int32>(
GetFormat());
1216 if(*o3tl::doAccess<bool>(rAny))
1234 if(*o3tl::doAccess<bool>(rAny))
1252 return std::make_unique<SwHiddenTextFieldType>(
m_bHidden );
1266 const OUString& rCond,
1267 const OUString& rStr,
1270 SwField( pFieldType ), m_aCond(rCond), m_nSubType(nSub),
1271 m_bCanToggle(bConditional), m_bIsHidden(bHidden), m_bValid(
false)
1293 const OUString& rCond,
1294 const OUString& rTrue,
1295 const OUString& rFalse,
1297 :
SwField( pFieldType ), m_aTRUEText(rTrue), m_aFALSEText(rFalse), m_aCond(rCond), m_nSubType(nSub),
1298 m_bIsHidden(true), m_bValid(
false)
1316 else if( !static_cast<SwHiddenTextFieldType*>(
GetTyp())->GetHiddenFlag() ||
1329 #if !HAVE_FEATURE_DBCONNECTIVITY || ENABLE_FUZZERS
1340 if (sTmpName.getLength()>1 &&
1341 sTmpName.startsWith(
"\"") &&
1342 sTmpName.endsWith(
"\""))
1344 m_aContent = sTmpName.copy(1, sTmpName.getLength() - 2);
1347 else if(sTmpName.indexOf(
'\"')<0 &&
1351 if(sTmpName.startsWith(
"[") && sTmpName.endsWith(
"]"))
1353 sTmpName = sTmpName.copy(1, sTmpName.getLength() - 2);
1355 #if HAVE_FEATURE_DBCONNECTIVITY && !ENABLE_FUZZERS
1358 sal_Int32 nIdx{ 0 };
1359 OUString sDBName(
GetDBName( sTmpName, rDoc ));
1360 OUString sDataSource(sDBName.getToken(0,
DB_DELIM, nIdx));
1361 OUString sDataTableOrQuery(sDBName.getToken(0,
DB_DELIM, nIdx));
1362 if( pMgr->
IsInMerge() && !sDBName.isEmpty() &&
1364 sDataTableOrQuery,
false))
1371 else if( !sDBName.isEmpty() && !sDataSource.isEmpty() &&
1372 !sDataTableOrQuery.isEmpty() )
1393 std::unique_ptr<SwHiddenTextField> pField(
1401 return std::unique_ptr<SwField>(pField.release());
1421 sal_Int32
nPos = rStr.indexOf(
'|');
1509 nPos = rName.indexOf(
DB_DELIM, nPos + 1);
1512 return rName.copy(nPos + 1);
1520 if( nPos != std::u16string_view::npos )
1522 nPos = rName.find(
DB_DELIM, nPos + 1);
1524 if( nPos != std::u16string_view::npos )
1525 return OUString(rName.substr(0, nPos));
1534 OUString& rCondition,
1546 std::vector<sal_Int32> wordPosition;
1548 bool quoted =
false;
1549 bool insideWord =
false;
1550 for (sal_Int32
i = 0;
i < aFieldDefinition.getLength();
i++)
1554 if (aFieldDefinition[
i] ==
'\"')
1562 if (aFieldDefinition[
i] ==
' ')
1571 quoted = (aFieldDefinition[
i] ==
'\"');
1576 wordPosition.push_back(
i);
1577 quoted = (aFieldDefinition[
i] ==
'\"');
1588 if (wordPosition.size() < 4)
1594 const sal_Int32 conditionBegin = wordPosition[1];
1595 const sal_Int32 trueBegin = wordPosition[wordPosition.size() - 2];
1596 const sal_Int32 falseBegin = wordPosition[wordPosition.size() - 1];
1598 const sal_Int32 conditionLength = trueBegin - conditionBegin;
1599 const sal_Int32 trueLength = falseBegin - trueBegin;
1603 rCondition = aFieldDefinition.copy(conditionBegin, conditionLength);
1604 rTrue = aFieldDefinition.copy(trueBegin, trueLength);
1605 rFalse = aFieldDefinition.copy(falseBegin);
1608 rCondition = rCondition.trim();
1609 rTrue = rTrue.trim();
1610 rFalse = rFalse.trim();
1613 if (rCondition.getLength() >= 2)
1615 if (rCondition[0] ==
'\"' && rCondition[rCondition.getLength() - 1] ==
'\"')
1616 rCondition = rCondition.copy(1, rCondition.getLength() - 2);
1618 if (rTrue.getLength() >= 2)
1620 if (rTrue[0] ==
'\"' && rTrue[rTrue.getLength() - 1] ==
'\"')
1621 rTrue = rTrue.copy(1, rTrue.getLength() - 2);
1623 if (rFalse.getLength() >= 2)
1625 if (rFalse[0] ==
'\"' && rFalse[rFalse.getLength() - 1] ==
'\"')
1626 rFalse = rFalse.copy(1, rFalse.getLength() - 2);
1641 return std::make_unique<SwHiddenParaFieldType>();
1647 :
SwField(pTyp), m_aCond(rStr)
1661 return std::unique_ptr<SwField>(pField.release());
1718 return std::make_unique<SwPostItFieldType>(
mrDoc);
1726 const OUString& rAuthor,
1727 const OUString& rText,
1728 const OUString& rInitials,
1729 const OUString& rName,
1731 const bool bResolved,
1732 const sal_uInt32 nPostItId
1736 , m_sAuthor( rAuthor )
1737 , m_sInitials( rInitials )
1739 , m_aDateTime( rDateTime )
1740 , m_bResolved( bResolved )
1785 pRet->SetTextObject( *
mpText );
1789 return std::unique_ptr<SwField>(pRet.release());
1825 mpText = std::move(pText);
1860 auto pObj = std::make_unique<SwTextAPIEditSource>( &rDoc );
1911 OSL_FAIL(
"Not implemented!");
1914 if(
auto aSetDate = o3tl::tryAccess<util::Date>(rAny) )
1921 util::DateTime aDateTimeValue;
1922 if(!(rAny >>= aDateTimeValue))
1935 (
void)xmlTextWriterStartElement(pWriter, BAD_CAST(
"SwPostItField"));
1936 (
void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST(
"name"), BAD_CAST(
GetName().toUtf8().getStr()));
1940 (
void)xmlTextWriterStartElement(pWriter, BAD_CAST(
"mpText"));
1941 (
void)xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST(
"ptr"),
"%p",
mpText ? &*
mpText :
nullptr);
1944 (
void)xmlTextWriterEndElement(pWriter);
1946 (
void)xmlTextWriterEndElement(pWriter);
1958 return std::make_unique<SwExtUserFieldType>();
1966 case EU_FIRSTNAME: nRet = UserOptToken::FirstName;
break;
1967 case EU_NAME: nRet = UserOptToken::LastName;
break;
1970 case EU_COMPANY: nRet = UserOptToken::Company;
break;
1971 case EU_STREET: nRet = UserOptToken::Street;
break;
1972 case EU_TITLE: nRet = UserOptToken::Title;
break;
1973 case EU_POSITION: nRet = UserOptToken::Position;
break;
1976 case EU_FAX: nRet = UserOptToken::Fax;
break;
1977 case EU_EMAIL: nRet = UserOptToken::Email;
break;
1978 case EU_COUNTRY: nRet = UserOptToken::Country;
break;
1979 case EU_ZIP: nRet = UserOptToken::Zip;
break;
1980 case EU_CITY: nRet = UserOptToken::City;
break;
1981 case EU_STATE: nRet = UserOptToken::State;
break;
1983 case EU_APARTMENT: nRet = UserOptToken::Apartment;
break;
1984 default: OSL_ENSURE(
false,
"Field unknown");
1986 if( static_cast<UserOptToken>(USHRT_MAX) != nRet )
1997 SwField(pTyp, nFormat), m_nType(nSubTyp)
2015 return std::unique_ptr<SwField>(pField.release());
2067 if( *o3tl::doAccess<bool>(rAny) )
2087 return std::make_unique<SwRefPageSetFieldType>();
2098 short nOff,
bool bFlag )
2099 :
SwField( pTyp ), m_nOffset( nOff ), m_bOn( bFlag )
2120 SetOffset( static_cast<short>(rStr.toInt32()) );
2131 rAny <<= static_cast<sal_Int16>(
m_nOffset);
2144 m_bOn = *o3tl::doAccess<bool>(rAny);
2171 if (rHint.
GetId() != SfxHintId::SwLegacyModify)
2174 auto const ModifyImpl = [
this](
SwRootFrame const*
const pLayout)
2180 std::vector<SwFormatField*> vFields;
2182 for(
auto pFormatField: vFields)
2183 UpdateField(pFormatField->GetTextField(), aTmpLst, pLayout);
2194 if (pLay->IsHideRedlines())
2196 pLayoutRLHidden = pLay;
2203 ModifyImpl(pLayout);
2204 if (pLayoutRLHidden)
2206 ModifyImpl(pLayoutRLHidden);
2218 std::vector<SwFormatField*> vFields;
2220 for(
auto pFormatField: vFields)
2223 const SwTextField* pTField = pFormatField->GetTextField();
2230 std::pair<Point, bool>
const tmp(aPt,
false);
2232 pLayout,
nullptr, &tmp);
2234 std::unique_ptr<SetGetExpField> pNew;
2251 OSL_ENSURE(bResult,
"where is the Field?");
2256 rTmpLst.
insert( std::move(pNew) );
2259 return !rTmpLst.
empty();
2267 pGetField->
SetText( OUString(), pLayout );
2279 if( itLast != rSetList.
begin() )
2282 const SwTextField* pRefTextField = (*itLast)->GetTextField();
2285 if( pSetField->
IsOn() )
2289 std::pair<Point, bool>
const tmp(aPt,
false);
2291 pLayout,
nullptr, &tmp);
2293 pLayout,
nullptr, &tmp);
2296 if ( pFrame && pRefFrame )
2307 : static_cast<SvxNumType>(pGetField->
GetFormat());
2308 const short nPageNum = std::max<short>(0, pSetField->
GetOffset() + nDiff);
2320 sal_uInt32 nFormat )
2349 return std::unique_ptr<SwField>(pCpy.release());
2366 OSL_ENSURE(!rFrame.
IsInDocBody(),
"Flag incorrect, frame is in DocBody");
2386 if( itLast == aTmpLst.begin() )
2390 const SwTextField* pRefTextField = (*itLast)->GetTextField();
2394 std::pair<Point, bool>
const tmp(aPt,
false);
2396 &rLayout,
nullptr, &tmp);
2397 if( !(pSetField->
IsOn() && pRefFrame) )
2409 const short nPageNum = std::max<short>(0, pSetField->
GetOffset() + nDiff);
2418 rAny <<= static_cast<sal_Int16>(
GetFormat());
2460 return std::make_unique<SwJumpEditFieldType>(
m_rDoc );
2471 const OUString& rText,
const OUString& rHelp )
2472 :
SwField( pTyp, nForm ), m_sText( rText ), m_sHelp( rHelp )
2520 case JE_FMT_TABLE: nRet = text::PlaceholderType::TABLE;
break;
2521 case JE_FMT_FRAME: nRet = text::PlaceholderType::TEXTFRAME;
break;
2522 case JE_FMT_GRAPHIC:nRet = text::PlaceholderType::GRAPHIC;
break;
2523 case JE_FMT_OLE: nRet = text::PlaceholderType::OBJECT;
break;
2525 nRet = text::PlaceholderType::TEXT;
break;
2584 return std::make_unique<SwCombinedCharFieldType>();
2590 const OUString& rChars )
2618 sal_uInt16 nWhichId )
const
2632 sal_uInt16 nWhichId )
virtual SwCharFormat * GetCharFormatFromPool(sal_uInt16 nId)=0
Reference< XTypeConverter > xConverter
virtual void SetPar1(const OUString &rStr) override
set place holder text
SvxNumType GetNumberingType() const
Instances of SwFields and those derived from it occur 0 to n times.
static sal_uInt32 s_nLastPostItId
const SwDocInfoSubType DI_SUB_TIME
SwNodeOffset min(const SwNodeOffset &a, const SwNodeOffset &b)
Base class of the Writer layout elements.
constexpr TypedWhichId< SwFormatPageDesc > RES_PAGEDESC(93)
const_iterator lower_bound(const Value &x) const
IDocumentStatistics const & getIDocumentStatistics() const
virtual OUString ExpandImpl(SwRootFrame const *pLayout) const override
virtual void dumpAsXml(xmlTextWriterPtr pWriter) const
SwPostItField(SwPostItFieldType *, const OUString &rAuthor, const OUString &rText, const OUString &rInitials, const OUString &rName, const DateTime &rDate, const bool bResolved=false, const sal_uInt32 nPostItId=0)
static double lcl_TimeToDouble(const T &rTime)
OUString GetToken(UserOptToken nToken) const
sal_Int32 GetNumberOfParagraphs() const
#define FIELD_PROP_DATE_TIME
Marks a position in the document model.
virtual void SetPar1(const OUString &rStr) override
virtual void SetPar2(const OUString &rStr) override
True/False - String.
virtual bool QueryValue(css::uno::Any &rVal, sal_uInt16 nWhich) const override
Pagedescriptor Client of SwPageDesc that is "described" by the attribute.
LanguageType GetLanguage() const
Language at field position.
virtual std::unique_ptr< SwFieldType > Copy() const override
sal_uLong nPara
paragraphs for document statistic: non-empty and non-hidden ones
virtual bool PutValue(const css::uno::Any &rVal, sal_uInt16 nWhich) override
virtual const SwRootFrame * GetCurrentLayout() const =0
static ShellResource * GetShellRes()
virtual bool PutValue(const css::uno::Any &rVal, sal_uInt16 nWhich) override
SwDocShell * GetDocShell()
sal_uInt32 GetFormat() const
Query parameters for dialog and for BASIC.
virtual sal_uInt16 GetSubType() const override
SvNumberFormatter * GetNumberFormatter(bool bCreate=true)
virtual void SwClientNotify(const SwModify &, const SfxHint &) override
noop, there is nothing to update!
SwDocStatField(SwDocStatFieldType *, sal_uInt16 nSubType, sal_uInt32 nFormat)
virtual OUString ExpandImpl(SwRootFrame const *pLayout) const override
virtual OUString GetPar2() const override
SwNodeOffset StartOfSectionIndex() const
virtual std::unique_ptr< SwFieldType > Copy() const override
virtual bool QueryValue(css::uno::Any &rVal, sal_uInt16 nWhich) const override
virtual void dumpAsXml(xmlTextWriterPtr pWriter) const override
void ChangeExpansion(const SwFrame &rFrame, const SwTextField *pField)
const SwTextNode * GetBodyTextNode(const SwDoc &rDoc, SwPosition &rPos, const SwFrame &rFrame)
Forward declaration: get "BodyTextNode" for exp.fld in Fly's headers/footers/footnotes.
virtual std::unique_ptr< SwField > Copy() const override
Base class of all fields.
OUString Expand(sal_uLong) const
virtual void SetPar2(const OUString &rStr) override
set the PostIt's text
#define FIELD_PROP_USHORT1
virtual bool QueryValue(css::uno::Any &rVal, sal_uInt16 nWhich) const override
SwContentFrame * getLayoutFrame(const SwRootFrame *, const SwPosition *pPos=nullptr, std::pair< Point, bool > const *pViewPosAndCalcFrame=nullptr) const
css::uno::Reference< css::frame::XModel3 > GetModel() const
virtual std::unique_ptr< SwFieldType > Copy() const override
SVL_DLLPUBLIC OUString removePassword(OUString const &rURI, INetURLObject::EncodeMechanism eEncodeMechanism, INetURLObject::DecodeMechanism eDecodeMechanism=INetURLObject::DecodeMechanism::ToIUri, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8)
virtual OUString GetPar2() const override
virtual OUString GetPar1() const override
Author.
OUString m_aTRUEText
Text if condition true.
const SwDocInfoSubType DI_COMMENT
sal_Int16 m_nNumberingType
static double GetDateTime(SwDoc &rDoc, const DateTime &rDT)
virtual bool PutValue(const css::uno::Any &rVal, sal_uInt16 nWhich) override
virtual bool QueryValue(css::uno::Any &rVal, sal_uInt16 nWhich) const override
OUString m_aCond
Condition.
OUString GetLastName(DecodeMechanism eMechanism=DecodeMechanism::ToIUri, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8) const
SwRefPageGetField(SwRefPageGetFieldType *, sal_uInt32 nFormat)
SwNode & GetEndOfPostIts() const
A still empty section.
static sal_Int32 DateToDays(sal_uInt16 nDay, sal_uInt16 nMonth, sal_Int16 nYear)
virtual OUString ExpandImpl(SwRootFrame const *pLayout) const override
bool GetLogicNames(std::u16string_view rPath, OUString &rRegion, OUString &rName) const
SwFileNameField(SwFileNameFieldType *, sal_uInt32 nFormat)
virtual std::unique_ptr< SwField > Copy() const override
SwJumpEditField(SwJumpEditFieldType *, sal_uInt32 nFormat, const OUString &sText, const OUString &sHelp)
void SetResolved(bool bNewState)
static const OUString & GetTypeStr(SwFieldTypesEnum nTypeId)
bool HasWriterListeners() const
SwTemplNameField(SwTemplNameFieldType *, sal_uInt32 nFormat)
The root element of a Writer document layout.
virtual bool QueryValue(css::uno::Any &rVal, sal_uInt16 nWhich) const override
const SwDocInfoSubType DI_EDIT
virtual std::unique_ptr< SwField > Copy() const override
#define FIELD_PROP_SUBTYPE
static void ParseIfFieldDefinition(const OUString &aFieldDefinition, OUString &rCondition, OUString &rTrue, OUString &rFalse)
static LanguageType nLang
void GatherFields(std::vector< SwFormatField * > &rvFormatFields, bool bCollectOnlyInDocNodes=true) const
#define FIELD_PROP_FORMAT
OUString PathToFileName() const
sal_uInt16 GetPhyPageNum() const
virtual std::unique_ptr< SwField > Copy() const override
virtual std::unique_ptr< SwFieldType > Copy() const override
OUString SwResId(TranslateId aId)
css::util::Date GetUNODate() const
rtl::Reference< SwTextAPIObject > m_xTextObject
const LocaleDataWrapper & GetLocaleData() const
OUString ReplacePoint(const OUString &rTmpName, bool bWithCommandType)
OUString m_sCharacters
combine these characters
SwCombinedCharFieldType()
virtual OUString GetFieldName() const override
get name or content
void ChangeExpansion(SwDoc *pDoc, bool bVirtPageNum, const SvxNumType *pNumFormat)
sal_uInt16 GetMonth() const
IDocumentStylePoolAccess const & getIDocumentStylePoolAccess() const
virtual bool PutValue(const css::uno::Any &rVal, sal_uInt16 nWhichId)
virtual sal_uInt16 GetSubType() const override
#define MAX_COMBINED_CHARACTERS
virtual void SetPar1(const OUString &rStr) override
Condition.
virtual std::unique_ptr< SwFieldType > Copy() const override
const SwDocInfoSubType DI_SUBJECT
virtual void SetPar2(const OUString &rStr) override
set hint text
virtual std::unique_ptr< SwField > Copy() const override
virtual void SetLanguage(LanguageType nLng) override
set language of the format
OUString FormatNumber(sal_uInt32 nNum, SvxNumType nFormat, LanguageType nLang)
expand numbering
void SetHiddenFlag(bool bSetHidden)
virtual OUString GetPar1() const override
Placeholder-Text.
virtual OUString ExpandImpl(SwRootFrame const *pLayout) const override
const SwFormatField & GetFormatField() const
o3tl::sorted_vector< SwRootFrame * > GetAllLayouts()
virtual OUString GetPar1() const override
Characters.
OUString Expand(sal_uInt16 nSubType, sal_uInt32 nFormat, LanguageType nLang, const OUString &rName) const
SwHiddenParaField(SwHiddenParaFieldType *, const OUString &rCond)
Direct input, delete old value.
virtual std::unique_ptr< SwFieldType > Copy() const override
virtual void SetSubType(sal_uInt16 nSub) override
virtual bool PutValue(const css::uno::Any &rVal, sal_uInt16 nWhich) override
virtual void SetSubType(sal_uInt16) override
SwTemplNameFieldType(SwDoc &)
SwHiddenTextField(SwHiddenTextFieldType *, bool bConditional, const OUString &rCond, const OUString &rText, bool bHidden, SwFieldTypesEnum nSubType=SwFieldTypesEnum::HiddenText)
#define FIELD_PROP_DOUBLE
virtual bool PutValue(const css::uno::Any &rVal, sal_uInt16 nWhich) override
virtual bool PutValue(const css::uno::Any &rVal, sal_uInt16 nWhich) override
virtual bool QueryValue(css::uno::Any &rVal, sal_uInt16 nWhichId) const
sal_Int32 getTokenCount(std::string_view rIn, char cTok)
virtual OUString GetPar1() const override
Query, set condition.
constexpr OUStringLiteral aData
const SwDocInfoSubType DI_CUSTOM
css::util::DateTime GetUNODateTime() const
sal_Int16 GetYear() const
virtual std::unique_ptr< SwFieldType > Copy() const override
SwDoc * GetDoc()
returns Doc. But be careful!
static double lcl_DateToDouble(const D &rDate, const Date &rNullDate)
const SwDocInfoSubType DI_PRINT
virtual bool QueryValue(css::uno::Any &rVal, sal_uInt16 nWhich) const override
SwAuthorField(SwAuthorFieldType *, sal_uInt32 nFormat)
virtual std::unique_ptr< SwField > Copy() const override
SwDBData const & GetDBData()
virtual bool QueryValue(css::uno::Any &rVal, sal_uInt16 nWhich) const override
void SetName(const OUString &rStr)
virtual OUString GetFieldName() const override
get name or content
virtual std::unique_ptr< SwFieldType > Copy() const override
SwRefPageGetFieldType(SwDoc &rDoc)
virtual std::unique_ptr< SwField > Copy() const override
void Evaluate(SwDoc &rDoc)
get current field value and cache it
virtual std::unique_ptr< SwFieldType > Copy() const override
SwCharFormat * GetCharFormat()
const SwDocInfoSubType DI_KEYS
bool GetMergeColumnCnt(const OUString &rColumnName, LanguageType nLanguage, OUString &rResult, double *pNumber)
SwPageFrame * FindPageFrame()
void ChangeExpansion(const SwFrame *pFrame)
virtual OUString ExpandImpl(SwRootFrame const *pLayout) const override
SwPageDesc * GetPageDesc()
#define FIELD_PROP_USHORT2
virtual sal_uInt16 GetSubType() const override
OUString m_aFALSEText
If condition false.
SwNodeOffset GetIndex() const
const SwDocInfoSubType DI_CREATE
SwFieldTypesEnum
List of FieldTypes at UI.
virtual OUString GetPar2() const override
Hint-Text.
void dumpAsXml(xmlTextWriterPtr pWriter) const
sw::WriterMultiListener m_aDep
virtual OUString ExpandImpl(SwRootFrame const *pLayout) const override
std::vector< OUString > aDocInfoLst
static void lcl_GetLocalDataWrapper(LanguageType nLang, const LocaleDataWrapper **ppAppLocalData, const LocaleDataWrapper **ppLocalData)
SwDocStatFieldType(SwDoc &)
static OUString GetColumnName(const OUString &rName)
void SetFormat(sal_uInt32 const nSet)
virtual OUString ExpandImpl(SwRootFrame const *pLayout) const override
sal_uInt16 GetDay() const
virtual OUString GetPar2() const override
get True/False text
virtual std::unique_ptr< SwFieldType > Copy() const override
virtual void SetPar1(const OUString &rStr) override
set author
const SwDocInfoSubType DI_SUB_DATE
Marks a node in the document model.
css::uno::Type const & get()
virtual bool QueryValue(css::uno::Any &rVal, sal_uInt16 nWhich) const override
virtual bool QueryValue(css::uno::Any &rVal, sal_uInt16 nWhich) const override
bool IsAutomaticLanguage() const
SvxNumType m_nNumberingType
virtual std::unique_ptr< SwField > Copy() const override
A page of the document layout.
SVX_NUM_CHARS_LOWER_LETTER_N
IDocumentLayoutAccess const & getIDocumentLayoutAccess() const
const OUString & GetName() const
virtual bool PutValue(const css::uno::Any &rVal, sal_uInt16 nWhich) override
SwFieldType * GetTyp() const
static OUString GetDBName(std::u16string_view rName, SwDoc &rDoc)
void SetText(const OUString &rText, SwRootFrame const *pLayout)
virtual ~SwPostItField() override
virtual bool PutValue(const css::uno::Any &rVal, sal_uInt16 nWhich) override
void ChangeExpansion(sal_uInt16 const nPageNumber, sal_uInt16 const nMaxPage)
const_iterator begin() const
virtual OUString ExpandImpl(SwRootFrame const *pLayout) const override
const SwDocInfoSubType DI_SUB_AUTHOR
virtual void UpdateFields() override
OUString GetMainURL(DecodeMechanism eMechanism, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8) const
Fields containing values that have to be formatted via number formatter.
void StartListening(SwModify *pDepend)
SwHiddenTextFieldType(bool bSetHidden=true)
virtual bool QueryValue(css::uno::Any &rVal, sal_uInt16 nWhich) const override
virtual std::unique_ptr< SwField > Copy() const override
SwFieldTypesEnum GetTypeId() const
SwTextNode is a paragraph in the document model.
virtual std::unique_ptr< SwField > Copy() const override
virtual std::unique_ptr< SwFieldType > Copy() const override
virtual OUString ExpandImpl(SwRootFrame const *pLayout) const override
virtual std::unique_ptr< SwField > Copy() const override
SwFileNameFieldType(SwDoc &)
IDocumentRedlineAccess const & getIDocumentRedlineAccess() const
SwDocInfoField(SwDocInfoFieldType *, sal_uInt16 nSub, const OUString &rName, sal_uInt32 nFormat=0)
std::optional< OutlinerParaObject > mpText
virtual void SetLanguage(LanguageType nLng)
virtual bool QueryValue(css::uno::Any &rVal, sal_uInt16 nWhich) const override
OUString m_sInitials
Initials of the author.
OUString ExpandValue(const double &rVal, sal_uInt32 nFormat, LanguageType nLng) const
return value formatted as string
const SwDocInfoSubType DI_SUBTYPE_BEGIN
NB: these must denote consecutive integers! NB2: these are extended by 4 DI_INFO values for backward ...
OUString Expand(sal_uInt16 nSubType, SvxNumType nFormat) const
bool IsFieldDeletedInModel(IDocumentRedlineAccess const &rIDRA, SwTextField const &rTextField)
const SwDocInfoSubType DI_DOCNO
virtual std::unique_ptr< SwFieldType > Copy() const override
virtual OUString ExpandImpl(SwRootFrame const *pLayout) const override
virtual std::unique_ptr< SwField > Copy() const override
static OUString Expand(sal_uInt16 nSubType)
virtual std::unique_ptr< SwField > Copy() const override
SwPageNumberField(SwPageNumberFieldType *, sal_uInt16 nSub, sal_uInt32 nFormat, short nOff=0, sal_uInt16 const nPageNumber=0, sal_uInt16 const nMaxPage=0)
SwRefPageSetField(SwRefPageSetFieldType *, short nOff, bool bOn)
OUString Expand(sal_uLong) const
virtual void SwClientNotify(const SwModify &, const SfxHint &) override
overwritten to update all RefPageGet fields
virtual const SwDocStat & GetDocStat() const =0
Document - Statistics.
static OUString Expand(sal_uLong)
INetProtocol GetProtocol() const
virtual std::unique_ptr< SwFieldType > Copy() const override
virtual bool QueryValue(css::uno::Any &rVal, sal_uInt16 nWhich) const override
Item2Range GetItemSurrogates(sal_uInt16 nWhich) const
virtual bool PutValue(const css::uno::Any &rVal, sal_uInt16 nWhich) override
SwJumpEditFieldType(SwDoc &rDoc)
void copy(const fs::path &src, const fs::path &dest)
SwDocInfoFieldType(SwDoc *pDc)
const INetURLObject & GetURLObject() const
Reference< XComponentContext > getProcessComponentContext()
virtual OUString ExpandImpl(SwRootFrame const *pLayout) const override
double getLength(const B2DPolygon &rCandidate)
bool IsHideRedlines() const
Replacement for sw::DocumentRedlineManager::GetRedlineFlags() (this is layout-level redline hiding)...
virtual bool PutValue(const css::uno::Any &rVal, sal_uInt16 nWhich) override
virtual sal_uInt16 GetSubType() const override
virtual bool PutValue(const css::uno::Any &rVal, sal_uInt16 nWhich) override
virtual void CallSwClientNotify(const SfxHint &rHint) const override
virtual OUString ExpandImpl(SwRootFrame const *pLayout) const override
OUString m_sTextRLHidden
hidden redlines
SwPostItFieldType(SwDoc &rDoc)
void SetOffset(short nOff)
virtual bool PutValue(const css::uno::Any &rVal, sal_uInt16 nWhich) override
OUString m_sName
Name of the comment.
bool IsDataSourceOpen(const OUString &rDataSource, const OUString &rTableOrQuery, bool bMergeShell)
check if a data source is open
virtual bool PutValue(const css::uno::Any &rVal, sal_uInt16 nWhich) override
virtual bool PutValue(const css::uno::Any &rVal, sal_uInt16 nWhich) override
virtual OUString GetPar2() const override
Text.
virtual OUString GetDescription() const override
virtual bool QueryValue(css::uno::Any &rVal, sal_uInt16 nWhich) const override
OUString GetFullName() const
struct _xmlTextWriter * xmlTextWriterPtr
SwFieldTypesEnum m_nSubType
virtual OUString ExpandImpl(SwRootFrame const *pLayout) const override
OUString m_aContent
Evaluated DB-text.
const SwDocInfoSubType DI_SUB_FIXED
const SwDocInfoSubType DI_CHANGE
virtual bool QueryValue(css::uno::Any &rVal, sal_uInt16 nWhich) const override
virtual std::unique_ptr< SwFieldType > Copy() const override
SwTextNode & GetTextNode() const
std::pair< const_iterator, bool > insert(Value &&x)
SvxNumType m_nNumberingType
bool m_bIsHidden
Is it not visible?
const SwDocInfoSubType DI_TITLE
bool MakeSetList(SetGetExpFields &rTmpLst, SwRootFrame const *pLayout)
SwNode & GetEndOfExtras() const
This is the last EndNode of a special section.
virtual void SetPar2(const OUString &rStr) override
virtual void SetSubType(sal_uInt16 nSub) override
OUString ExpandValue(const double &rVal, sal_uInt32 nFormat, LanguageType nLng) const
virtual std::unique_ptr< SwField > Copy() const override
bool m_bCanToggle
Can field be toggled alone?
virtual OUString ExpandImpl(SwRootFrame const *pLayout) const override
OUString Expand(SvxNumType nFormat, short nOff, sal_uInt16 const nPageNumber, sal_uInt16 const nMaxPage, const OUString &, LanguageType=LANGUAGE_NONE) const
virtual double GetValue() const
virtual sal_uInt16 GetSubType() const override
sal_uInt16 GetPageNum() const
void UpdateField(SwTextField const *pTextField, SetGetExpFields const &rSetList, SwRootFrame const *pLayout)
SwRootFrame * getRootFrame()
sal_Int32 GetEnumAsInt32(const css::uno::Any &rVal)
SwExtUserField(SwExtUserFieldType *, sal_uInt16 nSub, sal_uInt32 nFormat)
virtual void SetPar2(const OUString &rStr) override
SwDBManager * GetDBManager() const
std::vector< std::unique_ptr< SetGetExpField > >::const_iterator const_iterator
const SwAttrPool & GetAttrPool() const
virtual void SetLanguage(LanguageType nLng) override
set language of the format
virtual OUString GetPar1() const override
bool removeSegment(sal_Int32 nIndex=LAST_SEGMENT, bool bIgnoreFinalSlash=true)
SwCombinedCharField(SwCombinedCharFieldType *, const OUString &rChars)
bool m_bDetectedRangeSegmentation false
void SetTextObject(std::optional< OutlinerParaObject > pText)
bool m_bValid
Is DB-field evaluated?
virtual void SetPar1(const OUString &rStr) override
set condition
SfxMedium * GetMedium() const
const SvxNumberType & GetNumType() const