summaryrefslogtreecommitdiffstats
path: root/sw/inc/docufld.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sw/inc/docufld.hxx')
-rw-r--r--sw/inc/docufld.hxx760
1 files changed, 760 insertions, 0 deletions
diff --git a/sw/inc/docufld.hxx b/sw/inc/docufld.hxx
new file mode 100644
index 000000000..511b9c008
--- /dev/null
+++ b/sw/inc/docufld.hxx
@@ -0,0 +1,760 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+#ifndef INCLUDED_SW_INC_DOCUFLD_HXX
+#define INCLUDED_SW_INC_DOCUFLD_HXX
+
+#include <sal/config.h>
+
+#include <string_view>
+
+#include <editeng/outlobj.hxx>
+#include <tools/solar.h>
+#include <tools/date.hxx>
+#include <tools/datetime.hxx>
+#include <rtl/ref.hxx>
+#include <svl/macitem.hxx>
+
+#include "fldbas.hxx"
+
+class SetGetExpFields;
+class SwTextField;
+class SwFrame;
+class OutlinerParaObject;
+class SwTextAPIObject;
+class SwCharFormat;
+
+enum SwAuthorFormat
+{
+ AF_BEGIN,
+ AF_NAME = AF_BEGIN,
+ AF_SHORTCUT,
+ AF_FIXED = 0x8000
+};
+
+// Subtype of document statistics.
+enum SwDocStatSubType
+{
+ DS_BEGIN,
+ DS_PAGE = DS_BEGIN,
+ DS_PARA,
+ DS_WORD,
+ DS_CHAR,
+ DS_TBL,
+ DS_GRF,
+ DS_OLE,
+};
+
+typedef sal_uInt16 SwDocInfoSubType;
+namespace nsSwDocInfoSubType
+{
+ /** NB: these must denote consecutive integers!
+ NB2: these are extended by 4 DI_INFO values for backward compatibility
+ in filter/html/htmlfld.cxx, so make sure that DI_SUBTYPE_END
+ really is the end, and is at least 4 less than DI_SUB_*! */
+ const SwDocInfoSubType DI_SUBTYPE_BEGIN = 0;
+ const SwDocInfoSubType DI_TITLE = DI_SUBTYPE_BEGIN;
+ const SwDocInfoSubType DI_SUBJECT = 1;
+ const SwDocInfoSubType DI_KEYS = 2;
+ const SwDocInfoSubType DI_COMMENT = 3;
+ const SwDocInfoSubType DI_CREATE = 4;
+ const SwDocInfoSubType DI_CHANGE = 5;
+ const SwDocInfoSubType DI_PRINT = 6;
+ const SwDocInfoSubType DI_DOCNO = 7;
+ const SwDocInfoSubType DI_EDIT = 8;
+ const SwDocInfoSubType DI_CUSTOM = 9;
+ const SwDocInfoSubType DI_SUBTYPE_END = 10;
+
+ const SwDocInfoSubType DI_SUB_AUTHOR = 0x0100;
+ const SwDocInfoSubType DI_SUB_TIME = 0x0200;
+ const SwDocInfoSubType DI_SUB_DATE = 0x0300;
+ const SwDocInfoSubType DI_SUB_FIXED = 0x1000;
+ const SwDocInfoSubType DI_SUB_MASK = 0x0f00;
+}
+
+enum SwPageNumSubType
+{
+ PG_RANDOM,
+ PG_NEXT,
+ PG_PREV
+};
+
+// NOTE: Possibly the first 15 values in the below enum are required
+// to exactly match the published constants in css::text::UserDataPart
+// (see offapi/com/sun/star/text/UserDataPart.idl).
+
+enum SwExtUserSubType
+{
+ EU_COMPANY,
+ EU_FIRSTNAME,
+ EU_NAME,
+ EU_SHORTCUT,
+ EU_STREET,
+ EU_COUNTRY,
+ EU_ZIP,
+ EU_CITY,
+ EU_TITLE,
+ EU_POSITION,
+ EU_PHONE_PRIVATE,
+ EU_PHONE_COMPANY,
+ EU_FAX,
+ EU_EMAIL,
+ EU_STATE,
+ EU_FATHERSNAME,
+ EU_APARTMENT
+};
+
+enum SwJumpEditFormat
+{
+ JE_FMT_TEXT,
+ JE_FMT_TABLE,
+ JE_FMT_FRAME,
+ JE_FMT_GRAPHIC,
+ JE_FMT_OLE
+};
+
+class SAL_DLLPUBLIC_RTTI SwPageNumberFieldType final : public SwFieldType
+{
+ SvxNumType m_nNumberingType;
+ bool m_bVirtual;
+
+public:
+ SwPageNumberFieldType();
+
+ OUString Expand( SvxNumType nFormat, short nOff, sal_uInt16 const nPageNumber,
+ sal_uInt16 const nMaxPage, const OUString&, LanguageType = LANGUAGE_NONE ) const;
+ void ChangeExpansion( SwDoc* pDoc,
+ bool bVirtPageNum, const SvxNumType* pNumFormat );
+ virtual std::unique_ptr<SwFieldType> Copy() const override;
+};
+
+// Page numbering.
+class SW_DLLPUBLIC SwPageNumberField final : public SwField
+{
+ OUString m_sUserStr;
+ sal_uInt16 m_nSubType;
+ short m_nOffset;
+ // fdo#58074 store page number in SwField, not SwFieldType
+ sal_uInt16 m_nPageNumber;
+ sal_uInt16 m_nMaxPage;
+
+public:
+ SwPageNumberField(SwPageNumberFieldType*, sal_uInt16 nSub,
+ sal_uInt32 nFormat, short nOff = 0,
+ sal_uInt16 const nPageNumber = 0,
+ sal_uInt16 const nMaxPage = 0);
+
+ void ChangeExpansion(sal_uInt16 const nPageNumber,
+ sal_uInt16 const nMaxPage);
+
+ virtual OUString ExpandImpl(SwRootFrame const* pLayout) const override;
+ virtual std::unique_ptr<SwField> Copy() const override;
+
+ virtual OUString GetPar2() const override;
+ virtual void SetPar2(const OUString& rStr) override;
+
+ virtual sal_uInt16 GetSubType() const override;
+ virtual bool QueryValue( css::uno::Any& rVal, sal_uInt16 nWhich ) const override;
+ virtual bool PutValue( const css::uno::Any& rVal, sal_uInt16 nWhich ) override;
+
+ const OUString& GetUserString() const { return m_sUserStr; }
+ void SetUserString( const OUString& rS ) { m_sUserStr = rS; }
+};
+
+class SwAuthorFieldType final : public SwFieldType
+{
+public:
+ SwAuthorFieldType();
+
+ static OUString Expand(sal_uLong);
+ virtual std::unique_ptr<SwFieldType> Copy() const override;
+};
+
+class SwAuthorField final : public SwField
+{
+ OUString m_aContent;
+
+public:
+ SwAuthorField(SwAuthorFieldType*, sal_uInt32 nFormat);
+
+ virtual OUString ExpandImpl(SwRootFrame const* pLayout) const override;
+ virtual std::unique_ptr<SwField> Copy() const override;
+
+ void SetExpansion(const OUString& rStr) { m_aContent = rStr; }
+
+ virtual bool QueryValue( css::uno::Any& rVal, sal_uInt16 nWhich ) const override;
+ virtual bool PutValue( const css::uno::Any& rVal, sal_uInt16 nWhich ) override;
+};
+
+class SAL_DLLPUBLIC_RTTI SwFileNameFieldType final : public SwFieldType
+{
+ SwDoc& m_rDoc;
+public:
+ SwFileNameFieldType(SwDoc&);
+
+ OUString Expand(sal_uLong) const;
+ virtual std::unique_ptr<SwFieldType> Copy() const override;
+};
+
+class SW_DLLPUBLIC SwFileNameField final : public SwField
+{
+ OUString m_aContent;
+
+public:
+ SwFileNameField(SwFileNameFieldType*, sal_uInt32 nFormat);
+
+ virtual OUString ExpandImpl(SwRootFrame const* pLayout) const override;
+ virtual std::unique_ptr<SwField> Copy() const override;
+
+ void SetExpansion(const OUString& rStr) { m_aContent = rStr; }
+
+ virtual bool QueryValue( css::uno::Any& rVal, sal_uInt16 nWhich ) const override;
+ virtual bool PutValue( const css::uno::Any& rVal, sal_uInt16 nWhich ) override;
+};
+
+class SAL_DLLPUBLIC_RTTI SwTemplNameFieldType final : public SwFieldType
+{
+ SwDoc& m_rDoc;
+public:
+ SwTemplNameFieldType(SwDoc&);
+
+ OUString Expand(sal_uLong) const;
+ virtual std::unique_ptr<SwFieldType> Copy() const override;
+};
+
+class SW_DLLPUBLIC SwTemplNameField final : public SwField
+{
+public:
+ SwTemplNameField(SwTemplNameFieldType*, sal_uInt32 nFormat);
+
+ virtual OUString ExpandImpl(SwRootFrame const* pLayout) const override;
+ virtual std::unique_ptr<SwField> Copy() const override;
+ virtual bool QueryValue( css::uno::Any& rVal, sal_uInt16 nWhich ) const override;
+ virtual bool PutValue( const css::uno::Any& rVal, sal_uInt16 nWhich ) override;
+};
+
+// Document statistics
+class SAL_DLLPUBLIC_RTTI SwDocStatFieldType final : public SwFieldType
+{
+ SwDoc& m_rDoc;
+ SvxNumType m_nNumberingType;
+
+public:
+ SwDocStatFieldType(SwDoc&);
+ OUString Expand(sal_uInt16 nSubType, SvxNumType nFormat) const;
+ virtual std::unique_ptr<SwFieldType> Copy() const override;
+
+ void SetNumFormat( SvxNumType eFormat ) { m_nNumberingType = eFormat; }
+};
+
+class SW_DLLPUBLIC SwDocStatField final : public SwField
+{
+ sal_uInt16 m_nSubType;
+
+public:
+ SwDocStatField( SwDocStatFieldType*,
+ sal_uInt16 nSubType, sal_uInt32 nFormat);
+
+ void ChangeExpansion( const SwFrame* pFrame );
+
+ virtual OUString ExpandImpl(SwRootFrame const* pLayout) const override;
+ virtual std::unique_ptr<SwField> Copy() const override;
+
+ virtual sal_uInt16 GetSubType() const override;
+ virtual void SetSubType(sal_uInt16 nSub) override;
+ virtual bool QueryValue( css::uno::Any& rVal, sal_uInt16 nWhich ) const override;
+ virtual bool PutValue( const css::uno::Any& rVal, sal_uInt16 nWhich ) override;
+};
+
+class SAL_DLLPUBLIC_RTTI SwHiddenTextFieldType final : public SwFieldType
+{
+ bool m_bHidden;
+public:
+ SwHiddenTextFieldType(bool bSetHidden = true);
+
+ virtual std::unique_ptr<SwFieldType> Copy() const override;
+ virtual void UpdateFields() override {};
+
+ void SetHiddenFlag( bool bSetHidden );
+ bool GetHiddenFlag() const { return m_bHidden; }
+};
+
+class SW_DLLPUBLIC SwHiddenTextField final : public SwField
+{
+ OUString m_aTRUEText; ///< Text if condition true.
+ OUString m_aFALSEText; ///< If condition false.
+ OUString m_aContent; ///< Evaluated DB-text.
+
+ OUString m_aCond; ///< Condition.
+ SwFieldTypesEnum m_nSubType;
+
+ bool m_bCanToggle : 1; ///< Can field be toggled alone?
+ bool m_bIsHidden : 1; ///< Is it not visible?
+ bool m_bValid : 1; ///< Is DB-field evaluated?
+
+ virtual OUString ExpandImpl(SwRootFrame const* pLayout) const override;
+ virtual std::unique_ptr<SwField> Copy() const override;
+
+public:
+ SwHiddenTextField( SwHiddenTextFieldType*,
+ bool bConditional,
+ const OUString& rCond,
+ const OUString& rText,
+ bool bHidden,
+ SwFieldTypesEnum nSubType = SwFieldTypesEnum::HiddenText);
+
+ SwHiddenTextField( SwHiddenTextFieldType*,
+ const OUString& rCond,
+ const OUString& rTrue,
+ const OUString& rFalse,
+ SwFieldTypesEnum nSubType = SwFieldTypesEnum::HiddenText);
+
+ virtual OUString GetFieldName() const override;
+
+ void Evaluate(SwDoc& rDoc);
+
+ void SetValue(bool bHidden) { m_bIsHidden = bHidden; }
+ static OUString GetColumnName(const OUString& rName);
+ static OUString GetDBName(std::u16string_view rName, SwDoc& rDoc);
+
+ /// Condition
+ virtual void SetPar1(const OUString& rStr) override;
+ virtual OUString GetPar1() const override;
+
+ /// True/False - String
+ virtual void SetPar2(const OUString& rStr) override;
+ virtual OUString GetPar2() const override;
+
+ virtual sal_uInt16 GetSubType() const override;
+
+ virtual bool QueryValue( css::uno::Any& rVal, sal_uInt16 nWhich ) const override;
+ virtual bool PutValue( const css::uno::Any& rVal, sal_uInt16 nWhich ) override;
+
+ static void ParseIfFieldDefinition(const OUString& aFieldDefinition,
+ OUString& rCondition,
+ OUString& rTrue,
+ OUString& rFalse);
+};
+
+// Field that expands to an empty line (without height).
+class SwHiddenParaFieldType final : public SwFieldType
+{
+public:
+ SwHiddenParaFieldType();
+
+ virtual std::unique_ptr<SwFieldType> Copy() const override;
+ virtual void UpdateFields() override {};
+};
+
+class SwHiddenParaField final : public SwField
+{
+ OUString m_aCond;
+ bool m_bIsHidden;
+public:
+ /// Direct input, delete old value.
+ SwHiddenParaField(SwHiddenParaFieldType*, const OUString& rCond);
+
+ virtual OUString ExpandImpl(SwRootFrame const* pLayout) const override;
+ virtual std::unique_ptr<SwField> Copy() const override;
+
+ void SetHidden(bool bHidden) { m_bIsHidden = bHidden; }
+ bool IsHidden() const { return m_bIsHidden; }
+
+ /// Query, set condition.
+ virtual OUString GetPar1() const override;
+ virtual void SetPar1(const OUString& rStr) override;
+ virtual bool QueryValue( css::uno::Any& rVal, sal_uInt16 nWhich ) const override;
+ virtual bool PutValue( const css::uno::Any& rVal, sal_uInt16 nWhich ) override;
+};
+
+class SAL_DLLPUBLIC_RTTI SwMacroFieldType final : public SwFieldType
+{
+ SwDoc& m_rDoc;
+
+public:
+ SwMacroFieldType(SwDoc&);
+
+ virtual std::unique_ptr<SwFieldType> Copy() const override;
+};
+
+class SW_DLLPUBLIC SwMacroField final : public SwField
+{
+ OUString m_aMacro;
+ OUString m_aText;
+ bool m_bIsScriptURL;
+
+ virtual OUString ExpandImpl(SwRootFrame const* pLayout) const override;
+ virtual std::unique_ptr<SwField> Copy() const override;
+
+public:
+ /// Direct input, delete old value.
+ SwMacroField( SwMacroFieldType*, const OUString& rLibAndName,
+ const OUString& rText);
+
+ const OUString& GetMacro() const { return m_aMacro; }
+ OUString GetLibName() const;
+ OUString GetMacroName() const;
+ SvxMacro GetSvxMacro() const;
+
+ virtual OUString GetFieldName() const override;
+
+ /// Library and FileName
+ virtual OUString GetPar1() const override;
+ virtual void SetPar1(const OUString& rStr) override;
+
+ /// Macrotext
+ virtual OUString GetPar2() const override;
+ virtual void SetPar2(const OUString& rStr) override;
+ virtual bool QueryValue( css::uno::Any& rVal, sal_uInt16 nWhich ) const override;
+ virtual bool PutValue( const css::uno::Any& rVal, sal_uInt16 nWhich ) override;
+
+ static void CreateMacroString( OUString& rMacro,
+ std::u16string_view rMacroName,
+ const OUString& rLibraryName );
+
+ static bool isScriptURL( const OUString& str );
+};
+
+class SAL_DLLPUBLIC_RTTI SwPostItFieldType final : public SwFieldType
+{
+private:
+ SwDoc& mrDoc;
+public:
+ SwPostItFieldType(SwDoc& rDoc);
+
+ virtual std::unique_ptr<SwFieldType> Copy() const override;
+
+ SwDoc& GetDoc() const
+ {
+ return mrDoc;
+ };
+};
+
+class SW_DLLPUBLIC SwPostItField final : public SwField
+{
+ OUString m_sText;
+ OUString m_sAuthor;
+ OUString m_sInitials; ///< Initials of the author.
+ OUString m_sName; ///< Name of the comment.
+ DateTime m_aDateTime;
+ bool m_bResolved;
+ std::optional<OutlinerParaObject> mpText;
+ rtl::Reference<SwTextAPIObject> m_xTextObject;
+ sal_uInt32 m_nPostItId;
+
+public:
+ static sal_uInt32 s_nLastPostItId;
+
+ 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);
+
+ SwPostItField(const SwPostItField&) = delete;
+ SwPostItField* operator=(const SwPostItField&) = delete;
+
+ virtual ~SwPostItField() override;
+
+ virtual OUString ExpandImpl(SwRootFrame const* pLayout) const override;
+ virtual std::unique_ptr<SwField> Copy() const override;
+
+ const DateTime& GetDateTime() const { return m_aDateTime; }
+ Date GetDate() const { return Date(m_aDateTime.GetDate()); }
+ tools::Time GetTime() const { return tools::Time(m_aDateTime.GetTime()); }
+ sal_uInt32 GetPostItId() const { return m_nPostItId; }
+ void SetPostItId(const sal_uInt32 nPostItId = 0);
+
+ /// Author
+ virtual OUString GetPar1() const override;
+ virtual void SetPar1(const OUString& rStr) override;
+
+ /// Text
+ virtual OUString GetPar2() const override;
+ virtual void SetPar2(const OUString& rStr) override;
+ const OUString& GetText() const { return m_sText; }
+ const OUString& GetInitials() const { return m_sInitials;}
+ void SetName(const OUString& rStr);
+ const OUString& GetName() const { return m_sName;}
+
+ const OutlinerParaObject* GetTextObject() const { return mpText ? &*mpText : nullptr;}
+ void SetTextObject( std::optional<OutlinerParaObject> pText );
+
+ void SetResolved(bool bNewState);
+ void ToggleResolved();
+ bool GetResolved() const;
+
+ sal_Int32 GetNumberOfParagraphs() const;
+
+ virtual bool QueryValue( css::uno::Any& rVal, sal_uInt16 nWhich ) const override;
+ virtual bool PutValue( const css::uno::Any& rVal, sal_uInt16 nWhich ) override;
+ virtual OUString GetDescription() const override;
+ virtual void dumpAsXml(xmlTextWriterPtr pWriter) const override;
+};
+
+class SAL_DLLPUBLIC_RTTI SwDocInfoFieldType final : public SwValueFieldType
+{
+public:
+ SwDocInfoFieldType(SwDoc* pDc);
+
+ OUString Expand(sal_uInt16 nSubType, sal_uInt32 nFormat, LanguageType nLang, const OUString& rName) const;
+ virtual std::unique_ptr<SwFieldType> Copy() const override;
+};
+
+class SW_DLLPUBLIC SwDocInfoField final : public SwValueField
+{
+ sal_uInt16 m_nSubType;
+ OUString m_aContent;
+ OUString m_aName;
+
+ virtual OUString ExpandImpl(SwRootFrame const* pLayout) const override;
+ virtual std::unique_ptr<SwField> Copy() const override;
+
+public:
+ SwDocInfoField(SwDocInfoFieldType*, sal_uInt16 nSub, const OUString& rName, sal_uInt32 nFormat=0);
+ SwDocInfoField(SwDocInfoFieldType*, sal_uInt16 nSub, const OUString& rName, const OUString& rValue, sal_uInt32 nFormat=0);
+
+ virtual void SetSubType(sal_uInt16) override;
+ virtual sal_uInt16 GetSubType() const override;
+ virtual void SetLanguage(LanguageType nLng) override;
+ virtual OUString GetFieldName() const override;
+ const OUString& GetName() const { return m_aName; }
+ void SetName( const OUString& rName ) { m_aName = rName; }
+ void SetExpansion(const OUString& rStr) { m_aContent = rStr; }
+ virtual bool QueryValue( css::uno::Any& rVal, sal_uInt16 nWhich ) const override;
+ virtual bool PutValue( const css::uno::Any& rVal, sal_uInt16 nWhich ) override;
+};
+
+// Extended User settings.
+class SwExtUserFieldType final : public SwFieldType
+{
+public:
+ SwExtUserFieldType();
+
+ static OUString Expand(sal_uInt16 nSubType);
+ virtual std::unique_ptr<SwFieldType> Copy() const override;
+};
+
+class SwExtUserField final : public SwField
+{
+ OUString m_aContent;
+ sal_uInt16 m_nType;
+
+public:
+ SwExtUserField(SwExtUserFieldType*, sal_uInt16 nSub, sal_uInt32 nFormat);
+
+ virtual OUString ExpandImpl(SwRootFrame const* pLayout) const override;
+ virtual std::unique_ptr<SwField> Copy() const override;
+
+ virtual sal_uInt16 GetSubType() const override;
+ virtual void SetSubType(sal_uInt16 nSub) override;
+
+ void SetExpansion(const OUString& rStr) { m_aContent = rStr; }
+
+ virtual bool QueryValue( css::uno::Any& rVal, sal_uInt16 nWhich ) const override;
+ virtual bool PutValue( const css::uno::Any& rVal, sal_uInt16 nWhich ) override;
+};
+
+// Relative page numbers - field.
+class SwRefPageSetFieldType final : public SwFieldType
+{
+public:
+ SwRefPageSetFieldType();
+
+ virtual std::unique_ptr<SwFieldType> Copy() const override;
+ virtual void UpdateFields() override {};
+
+private:
+ /// noop, there is nothing to update!
+ virtual void SwClientNotify(const SwModify&, const SfxHint&) override;
+};
+
+// Relative page numbering.
+class SAL_DLLPUBLIC_RTTI SwRefPageSetField final : public SwField
+{
+ short m_nOffset;
+ bool m_bOn;
+
+public:
+ SwRefPageSetField( SwRefPageSetFieldType*, short nOff, bool bOn );
+
+ virtual OUString ExpandImpl(SwRootFrame const* pLayout) const override;
+ virtual std::unique_ptr<SwField> Copy() const override;
+
+ virtual OUString GetPar2() const override;
+ virtual void SetPar2(const OUString& rStr) override;
+
+ bool IsOn() const { return m_bOn; }
+
+ short GetOffset() const { return m_nOffset; }
+ void SetOffset( short nOff ) { m_nOffset = nOff; }
+ virtual bool QueryValue( css::uno::Any& rVal, sal_uInt16 nWhich ) const override;
+ virtual bool PutValue( const css::uno::Any& rVal, sal_uInt16 nWhich ) override;
+};
+
+// Relative page numbers - query field.
+class SwRefPageGetFieldType final : public SwFieldType
+{
+ SwDoc& m_rDoc;
+ sal_Int16 m_nNumberingType;
+
+ void UpdateField(SwTextField const * pTextField,
+ SetGetExpFields const & rSetList, SwRootFrame const* pLayout);
+
+ /// overwritten to update all RefPageGet fields
+ virtual void SwClientNotify(const SwModify&, const SfxHint&) override;
+public:
+ SwRefPageGetFieldType( SwDoc& rDoc );
+ virtual std::unique_ptr<SwFieldType> Copy() const override;
+ bool MakeSetList(SetGetExpFields& rTmpLst, SwRootFrame const* pLayout);
+ SwDoc& GetDoc() const { return m_rDoc; }
+};
+
+// Query relative page numbering.
+class SwRefPageGetField final : public SwField
+{
+ OUString m_sText;
+ OUString m_sTextRLHidden; ///< hidden redlines
+
+public:
+ SwRefPageGetField( SwRefPageGetFieldType*, sal_uInt32 nFormat );
+
+ virtual OUString ExpandImpl(SwRootFrame const* pLayout) const override;
+ virtual std::unique_ptr<SwField> Copy() const override;
+
+ void SetText(const OUString& rText, SwRootFrame const* pLayout);
+
+ void ChangeExpansion(const SwFrame& rFrame, const SwTextField* pField);
+ virtual bool QueryValue( css::uno::Any& rVal, sal_uInt16 nWhich ) const override;
+ virtual bool PutValue( const css::uno::Any& rVal, sal_uInt16 nWhich ) override;
+};
+
+// Field to jump to and edit.
+class SwJumpEditFieldType final : public SwFieldType
+{
+ SwDoc& m_rDoc;
+ sw::WriterMultiListener m_aDep;
+
+public:
+ SwJumpEditFieldType( SwDoc& rDoc );
+ virtual std::unique_ptr<SwFieldType> Copy() const override;
+ virtual void UpdateFields() override {};
+
+ SwCharFormat* GetCharFormat();
+};
+
+class SwJumpEditField final : public SwField
+{
+ OUString m_sText;
+ OUString m_sHelp;
+public:
+ SwJumpEditField( SwJumpEditFieldType*, sal_uInt32 nFormat,
+ const OUString& sText, const OUString& sHelp );
+
+ virtual OUString ExpandImpl(SwRootFrame const* pLayout) const override;
+ virtual std::unique_ptr<SwField> Copy() const override;
+
+ /// Placeholder-Text
+ virtual OUString GetPar1() const override;
+ virtual void SetPar1(const OUString& rStr) override;
+
+ /// Hint-Text
+ virtual OUString GetPar2() const override;
+ virtual void SetPar2(const OUString& rStr) override;
+
+ SwCharFormat* GetCharFormat() const
+ { return static_cast<SwJumpEditFieldType*>(GetTyp())->GetCharFormat(); }
+ virtual bool QueryValue( css::uno::Any& rVal, sal_uInt16 nWhich ) const override;
+ virtual bool PutValue( const css::uno::Any& rVal, sal_uInt16 nWhich ) override;
+};
+
+class SwScriptFieldType final : public SwFieldType
+{
+ SwDoc& m_rDoc;
+public:
+ SwScriptFieldType( SwDoc& rDoc );
+
+ virtual std::unique_ptr<SwFieldType> Copy() const override;
+};
+
+class SW_DLLPUBLIC SwScriptField final : public SwField
+{
+ OUString m_sType; ///< Type of Code (Java/VBScript/...)
+ OUString m_sCode; /**< Code as text.
+ Code as JavaCode ? */
+
+ bool m_bCodeURL; ///< Code contains URL of a script.
+
+public:
+ SwScriptField( SwScriptFieldType*, const OUString& rType,
+ const OUString& rCode, bool bURL );
+
+ virtual OUString GetDescription() const override;
+
+ virtual OUString ExpandImpl(SwRootFrame const* pLayout) const override;
+ virtual std::unique_ptr<SwField> Copy() const override;
+
+ /// Type
+ virtual OUString GetPar1() const override;
+ virtual void SetPar1(const OUString& rStr) override;
+ /// Text
+ virtual OUString GetPar2() const override;
+ virtual void SetPar2(const OUString& rStr) override;
+
+ bool IsCodeURL() const { return m_bCodeURL; }
+ void SetCodeURL( bool bURL ) { m_bCodeURL = bURL; }
+ virtual bool QueryValue( css::uno::Any& rVal, sal_uInt16 nWhich ) const override;
+ virtual bool PutValue( const css::uno::Any& rVal, sal_uInt16 nWhich ) override;
+};
+
+// Combined Character Fieldtype
+class SAL_DLLPUBLIC_RTTI SwCombinedCharFieldType final : public SwFieldType
+{
+public:
+ SwCombinedCharFieldType();
+
+ virtual std::unique_ptr<SwFieldType> Copy() const override;
+};
+
+// ScriptField
+#define MAX_COMBINED_CHARACTERS 6
+
+class SW_DLLPUBLIC SwCombinedCharField final : public SwField
+{
+ OUString m_sCharacters; ///< combine these characters
+
+public:
+ SwCombinedCharField( SwCombinedCharFieldType*, const OUString& rChars );
+
+ virtual OUString ExpandImpl(SwRootFrame const* pLayout) const override;
+ virtual std::unique_ptr<SwField> Copy() const override;
+
+ /// Characters
+ virtual OUString GetPar1() const override;
+ virtual void SetPar1(const OUString& rStr) override;
+
+ virtual bool QueryValue( css::uno::Any& rVal, sal_uInt16 nWhich ) const override;
+ virtual bool PutValue( const css::uno::Any& rVal, sal_uInt16 nWhich ) override;
+};
+
+#endif // INCLUDED_SW_INC_DOCUFLD_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */