summaryrefslogtreecommitdiff
path: root/sw/inc/reffld.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sw/inc/reffld.hxx')
-rw-r--r--sw/inc/reffld.hxx164
1 files changed, 164 insertions, 0 deletions
diff --git a/sw/inc/reffld.hxx b/sw/inc/reffld.hxx
new file mode 100644
index 000000000000..daf690861260
--- /dev/null
+++ b/sw/inc/reffld.hxx
@@ -0,0 +1,164 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef SW_REFFLD_HXX
+#define SW_REFFLD_HXX
+
+#include <fldbas.hxx>
+
+class SfxPoolItem;
+class SwDoc;
+class SwTxtNode;
+class SwTxtFld;
+
+enum REFERENCESUBTYPE
+{
+ REF_SETREFATTR = 0,
+ REF_SEQUENCEFLD,
+ REF_BOOKMARK,
+ REF_OUTLINE,
+ REF_FOOTNOTE,
+ REF_ENDNOTE
+};
+
+enum REFERENCEMARK
+{
+ REF_BEGIN,
+ REF_PAGE = REF_BEGIN,
+ REF_CHAPTER,
+ REF_CONTENT,
+ REF_UPDOWN,
+ REF_PAGE_PGDESC,
+ REF_ONLYNUMBER,
+ REF_ONLYCAPTION,
+ REF_ONLYSEQNO,
+ // --> OD 2007-08-24 #i81002#
+ // new reference format types for referencing bookmarks and set references
+ REF_NUMBER,
+ REF_NUMBER_NO_CONTEXT,
+ REF_NUMBER_FULL_CONTEXT,
+ // <--
+ REF_END
+};
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Referenz holen
+ --------------------------------------------------------------------*/
+
+class SwGetRefFieldType : public SwFieldType
+{
+ SwDoc* pDoc;
+protected:
+ // ueberlagert, um alle Ref-Felder zu updaten
+ virtual void Modify( const SfxPoolItem*, const SfxPoolItem * );
+public:
+ SwGetRefFieldType(SwDoc* pDoc );
+ virtual SwFieldType* Copy() const;
+
+ SwDoc* GetDoc() const { return pDoc; }
+
+ void MergeWithOtherDoc( SwDoc& rDestDoc );
+
+ static SwTxtNode* FindAnchor( SwDoc* pDoc, const String& rRefMark,
+ sal_uInt16 nSubType, sal_uInt16 nSeqNo,
+ sal_uInt16* pStt, sal_uInt16* pEnd = 0 );
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Referenzfeld
+ --------------------------------------------------------------------*/
+
+class SW_DLLPUBLIC SwGetRefField : public SwField
+{
+private:
+ String sSetRefName;
+ String sTxt;
+ sal_uInt16 nSubType;
+ sal_uInt16 nSeqNo;
+
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+
+ // --> OD 2007-08-24 #i81002#
+ String MakeRefNumStr( const SwTxtNode& rTxtNodeOfField,
+ const SwTxtNode& rTxtNodeOfReferencedItem,
+ const sal_uInt32 nRefNumFormat ) const;
+ // <--
+public:
+ SwGetRefField( SwGetRefFieldType*, const String& rSetRef,
+ sal_uInt16 nSubType, sal_uInt16 nSeqNo, sal_uLong nFmt );
+
+ virtual ~SwGetRefField();
+
+ virtual String GetFieldName() const;
+
+ const String& GetSetRefName() const { return sSetRefName; }
+
+ // --> OD 2007-09-06 #i81002#
+ // The <SwTxtFld> instance, which represents the text attribute for the
+ // <SwGetRefField> instance, has to be passed to the method.
+ // This <SwTxtFld> instance is needed for the reference format type REF_UPDOWN
+ // and REF_NUMBER.
+ // Note: This instance may be NULL (field in Undo/Redo). This will cause
+ // no update for these reference format types.
+ void UpdateField( const SwTxtFld* pFldTxtAttr );
+ // <--
+ void SetExpand( const String& rStr ) { sTxt = rStr; }
+
+ // SubType erfragen/setzen
+ virtual sal_uInt16 GetSubType() const;
+ virtual void SetSubType( sal_uInt16 n );
+
+ // --> OD 2007-11-09 #i81002#
+ bool IsRefToHeadingCrossRefBookmark() const;
+ bool IsRefToNumItemCrossRefBookmark() const;
+ const SwTxtNode* GetReferencedTxtNode() const;
+ // <--
+ // --> OD 2008-01-09 #i85090#
+ String GetExpandedTxtOfReferencedTxtNode() const;
+ // <--
+
+ // SequenceNo erfragen/setzen (nur fuer REF_SEQUENCEFLD interressant)
+ sal_uInt16 GetSeqNo() const { return nSeqNo; }
+ void SetSeqNo( sal_uInt16 n ) { nSeqNo = n; }
+
+ // Name der Referenz
+ virtual const String& GetPar1() const;
+ virtual void SetPar1(const String& rStr);
+
+ virtual String GetPar2() const;
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhichId ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhichId );
+
+ void ConvertProgrammaticToUIName();
+
+ virtual String GetDescription() const;
+};
+
+
+#endif // SW_REFFLD_HXX
+