summaryrefslogtreecommitdiff
path: root/sw/inc/section.hxx
diff options
context:
space:
mode:
authorJens-Heiner Rechtien <hr@openoffice.org>2000-09-18 16:15:01 +0000
committerJens-Heiner Rechtien <hr@openoffice.org>2000-09-18 16:15:01 +0000
commit7b0b5cdfeed656b279bc32cd929630d5fc25878b (patch)
tree5b89fb8497d7329d26c43f109bb014c54ffb0e8c /sw/inc/section.hxx
parentd791366863cf9659a01b171ce0e727bfe2f28cdf (diff)
initial import
Diffstat (limited to 'sw/inc/section.hxx')
-rw-r--r--sw/inc/section.hxx444
1 files changed, 444 insertions, 0 deletions
diff --git a/sw/inc/section.hxx b/sw/inc/section.hxx
new file mode 100644
index 000000000000..21ce689c636a
--- /dev/null
+++ b/sw/inc/section.hxx
@@ -0,0 +1,444 @@
+/*************************************************************************
+ *
+ * $RCSfile: section.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SECTION_HXX
+#define _SECTION_HXX
+
+
+#ifndef _LNKBASE_HXX //autogen
+#include <so3/lnkbase.hxx>
+#endif
+#ifndef _RTTI_HXX //autogen
+#include <tools/rtti.hxx>
+#endif
+#ifndef _SVARRAY_HXX //autogen
+#include <svtools/svarray.hxx>
+#endif
+#ifndef _SO2REF_HXX //autogen
+#include <so3/so2ref.hxx>
+#endif
+#ifndef _FRMFMT_HXX
+#include <frmfmt.hxx>
+#endif
+
+// Forward Deklaration
+class SwSectionFmt;
+class SwDoc;
+class SwSection;
+class SwTOXBase;
+
+#ifndef SW_DECL_SWSERVEROBJECT_DEFINED
+#define SW_DECL_SWSERVEROBJECT_DEFINED
+class SvPseudoObject;
+SO2_DECL_REF( SwServerObject )
+#endif
+
+SV_DECL_PTRARR( SwSections, SwSection*, 0, 4 )
+
+enum SectionType { CONTENT_SECTION,
+ TOX_HEADER_SECTION,
+ TOX_CONTENT_SECTION,
+ DDE_LINK_SECTION = OBJECT_CLIENT_DDE,
+ FILE_LINK_SECTION = OBJECT_CLIENT_FILE
+/*
+// verbleiben noch:
+ OBJECT_CLIENT_SO = 0x80,
+ OBJECT_CLIENT_OLE = 0x82,
+ OBJECT_CLIENT_OLE_CACHE = 0x83,
+*/
+ };
+
+enum LinkCreateType
+{
+ CREATE_NONE, // nichts weiter tun
+ CREATE_CONNECT, // Link gleich connecten
+ CREATE_UPDATE // Link connecten und updaten
+};
+
+
+class SwSection : public SwClient
+{
+ // damit beim Anlegen/Loeschen von Frames das Flag richtig gepflegt wird!
+ friend class SwSectionNode;
+ // the "read CTOR" of SwSectionFrm have to change the Hiddenflag
+ friend class SwSectionFrm;
+
+ String sSectionNm;
+ String sCondition; // erstmal, vielleicht auch mal ein Feld ??
+ String sLinkFileName, sLinkFilePassWd;
+
+ SwServerObjectRef refObj; // falls DataServer -> Pointer gesetzt
+ SvBaseLinkRef refLink;
+
+ SectionType eType;
+
+ BOOL bProtectFlag : 1; // Flags fuer schnelle Abfragen, wird ueber
+ // Attribut im Format gesetzt
+ BOOL bHiddenFlag : 1; // Flag: Absaetze versteckt ?
+ BOOL bHidden : 1; // alle Absaetze nicht sichtbar ?
+ BOOL bCondHiddenFlag : 1; // Hiddenflag fuer die Bedingung ?
+ BOOL bConnectFlag : 1; // Flag: "Verbindung zum Server" vorhanden?
+
+
+ void _SetHiddenFlag( int bHidden, int bCondition );
+ void _SetProtectFlag( int bFlag ) { bProtectFlag = bFlag; }
+
+ int _IsProtect() const;
+
+public:
+ TYPEINFO(); // rtti
+
+ SwSection( SectionType eType, const String& rName,
+ SwSectionFmt* pFmt = 0 );
+ ~SwSection();
+
+ // kopiere nur die Daten der Section!
+ // Ableitung bleibt (beim Left) erhalten.
+ SwSection& operator=( const SwSection& );
+ int operator==( const SwSection& rCmp ) const;
+
+ const String& GetName() const { return sSectionNm; }
+ void SetName( const String& rName ) { sSectionNm = rName; }
+ const SectionType GetType() const { return eType; }
+ void SetType( SectionType eNew ) { eType = eNew; }
+
+ SwSectionFmt* GetFmt() { return (SwSectionFmt*)pRegisteredIn; }
+ SwSectionFmt* GetFmt() const { return (SwSectionFmt*)pRegisteredIn; }
+
+ virtual void Modify( SfxPoolItem* pOld, SfxPoolItem* pNew );
+
+ // setze die Hidden/Protected -> gesamten Baum updaten !
+ // (Attribute/Flags werden gesetzt/erfragt)
+ int IsHidden() const { return bHidden; }
+ int IsProtect() const { return GetFmt() ? _IsProtect()
+ : IsProtectFlag(); }
+
+ void SetHidden( int bFlag = TRUE );
+ void SetProtect( int bFlag = TRUE );
+
+ // erfrage die internen Flags (Zustand inklusive Parents nicht, was
+ // aktuell an der Section gesetzt ist!!)
+ int IsHiddenFlag() const { return bHiddenFlag; }
+ int IsProtectFlag() const { return bProtectFlag; }
+
+ void SetCondHidden( int bFlag = TRUE );
+ int IsCondHidden() const { return bCondHiddenFlag; }
+ // erfrage (auch ueber die Parents), ob diese Section versteckt sein soll.
+ int CalcHiddenFlag() const;
+
+
+ inline SwSection* GetParent() const;
+
+ // setze/erfrage die Bedingung
+ const String& GetCondition() const { return sCondition; }
+ void SetCondition( const String& rNew ) { sCondition = rNew; }
+
+ // setze/erfrage den gelinkten FileNamen
+ const String& GetLinkFileName() const;
+ void SetLinkFileName( const String& rNew, const String* pPassWd = 0 );
+ // Passwort des gelinkten Files (nur waehrend der Laufzeit gueltig!)
+ const String& GetLinkFilePassWd() const { return sLinkFilePassWd; }
+ void SetLinkFilePassWd( const String& rS ) { sLinkFilePassWd = rS; }
+
+ // Daten Server-Methoden
+ void SetRefObject( SvPseudoObject* pObj );
+ const SwServerObject* GetObject() const { return &refObj; }
+ SwServerObject* GetObject() { return &refObj; }
+ BOOL IsServer() const { return refObj.Is(); }
+
+ // Methoden fuer gelinkte Bereiche
+ USHORT GetUpdateType() const { return refLink->GetUpdateMode(); }
+ void SetUpdateType( USHORT nType ) { refLink->SetUpdateMode( nType ); }
+
+ BOOL IsConnected() const { return refLink.Is(); }
+ void UpdateNow() { refLink->Update(); }
+ void Disconnect() { refLink->Disconnect(); }
+
+ const SvBaseLink& GetBaseLink() const { return *refLink; }
+
+ void CreateLink( LinkCreateType eType );
+
+ void MakeChildLinksVisible( const SwSectionNode& rSectNd );
+
+ BOOL IsLinkType() const
+ { return DDE_LINK_SECTION == eType || FILE_LINK_SECTION == eType; }
+
+ // Flags fuer UI - Verbindung geklappt?
+ BOOL IsConnectFlag() const { return bConnectFlag; }
+ void SetConnectFlag( BOOL bFlag = TRUE ) { bConnectFlag = bFlag; }
+
+ // return the TOX base class if the section is a TOX section
+ const SwTOXBase* GetTOXBase() const;
+
+private:
+ // privater Constructor, weil nie kopiert werden darf !!
+ SwSection( const SwSection& );
+};
+
+
+enum SectionSort { SORTSECT_NOT, SORTSECT_NAME, SORTSECT_POS };
+
+class SwSectionFmt : public SwFrmFmt
+{
+ friend class SwDoc;
+ SwSection* _GetSection() const;
+ void UpdateParent(); // Parent wurde veraendert
+
+protected:
+ SwSectionFmt( SwSectionFmt* pDrvdFrm, SwDoc *pDoc );
+
+public:
+ TYPEINFO(); //Bereits in Basisklasse Client drin.
+ ~SwSectionFmt();
+
+ //Vernichtet alle Frms in aDepend (Frms werden per PTR_CAST erkannt).
+ virtual void DelFrms();
+
+ //Erzeugt die Ansichten
+ virtual void MakeFrms();
+
+ virtual void Modify( SfxPoolItem* pOld, SfxPoolItem* pNew );
+ // erfrage vom Format Informationen
+ virtual BOOL GetInfo( SfxPoolItem& ) const;
+
+ SwSection* GetSection() const { return (SwSection*)_GetSection(); }
+ inline SwSectionFmt* GetParent() const;
+ inline SwSection* GetParentSection() const;
+
+ // alle Sections, die von dieser abgeleitet sind
+ // - sortiert nach : Name oder Position oder unsortiert
+ // - alle oder nur die, die sich im normalten Nodes-Array befinden
+ USHORT GetChildSections( SwSections& rArr,
+ SectionSort eSort = SORTSECT_NOT,
+ int bAllSections = TRUE ) const;
+
+ // erfrage, ob sich die Section im Nodes-Array oder UndoNodes-Array
+ // befindet.
+ int IsInNodesArr() const;
+
+ SwSectionNode* GetSectionNode( BOOL bAlways = FALSE );
+ const SwSectionNode* GetSectionNode( BOOL bAlways = FALSE ) const
+ { return ((SwSectionFmt*)this)->GetSectionNode( bAlways ); }
+
+ // ist die Section eine gueltige fuers GlobalDocument?
+ const SwSection* GetGlobalDocSection() const;
+};
+
+// -------------- inlines ---------------------------------
+
+inline SwSection* SwSection::GetParent() const
+{
+ register SwSectionFmt* pFmt = GetFmt();
+ register SwSection* pRet = 0;
+ if( pFmt )
+ pRet = pFmt->GetParentSection();
+ return pRet;
+}
+
+inline SwSectionFmt* SwSectionFmt::GetParent() const
+{
+ register SwSectionFmt* pRet = 0;
+ if( GetRegisteredIn() )
+ pRet = PTR_CAST( SwSectionFmt, GetRegisteredIn() );
+ return pRet;
+}
+
+inline SwSection* SwSectionFmt::GetParentSection() const
+{
+ register SwSectionFmt* pParent = GetParent();
+ register SwSection* pRet = 0;
+ if( pParent )
+ pRet = pParent->_GetSection();
+ return pRet;
+}
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.40 2000/09/18 16:03:26 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.39 2000/09/08 13:24:23 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.38 2000/04/19 15:41:58 jp
+ Unicode changes
+
+ Revision 1.37 2000/02/11 14:26:27 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.36 1999/11/18 17:52:28 jp
+ new: GetTOXBase
+
+ Revision 1.35 1999/07/27 18:20:18 JP
+ replace class SwTOXBaseRange with SwTOXBaseSection - TOX use now SwSections
+
+
+ Rev 1.34 27 Jul 1999 20:20:18 JP
+ replace class SwTOXBaseRange with SwTOXBaseSection - TOX use now SwSections
+
+ Rev 1.33 23 Jul 1999 15:53:40 JP
+ Bug #67465#: SwSectionFrm CTOR have to change the hiddenflag
+
+ Rev 1.32 21 Jun 1999 10:08:44 JP
+ new enums for new TOXs
+
+ Rev 1.31 25 Mar 1999 21:20:34 JP
+ Bug #63929#: autom. erzeugen von Tabs im Inhaltsverzeichnis
+
+ Rev 1.30 29 Oct 1998 14:26:18 JP
+ Task #58637#: neu Is-/SetConnectFlag
+
+ Rev 1.29 26 Oct 1998 17:29:44 JP
+ Bug #54342#: Section merkt sich das Passwort der Datei
+
+ Rev 1.28 12 Jun 1998 14:33:16 JP
+ Bug #51097#: im DTOR des SectionFormates ggfs. die ChildLinks sichbar machen
+
+ Rev 1.27 27 Apr 1998 21:16:44 JP
+ Set-/SetCondition: Flag fuers Convertieren entfernt
+
+ Rev 1.26 04 Aug 1997 16:43:06 MH
+ chg: header
+
+ Rev 1.25 23 Jun 1997 15:44:16 JP
+ neu: GetGlobalDocSection
+
+ Rev 1.24 13 Jun 1997 14:54:10 JP
+ neu: CalcHiddenFlag
+
+ Rev 1.23 29 Oct 1996 16:17:58 MA
+ includes
+
+ Rev 1.22 16 Oct 1996 16:31:22 JP
+ unbenutzte Methoden entfernt
+
+ Rev 1.21 10 Jul 1996 17:58:54 OM
+ LocalizeDBName in Expfld verschoben
+
+ Rev 1.20 10 Jul 1996 17:49:02 OM
+ LocalizeDBName in Expfld verschoben
+
+ Rev 1.19 25 Jun 1996 12:24:14 MA
+ headerfiles
+
+ Rev 1.18 11 Jun 1996 16:56:56 JP
+ GetLinkFileName: nicht mehr als Inline muessen ggfs. auf den Link zugreifen
+
+ Rev 1.17 24 May 1996 15:42:14 OM
+ Bedingungen in Bereichen wandeln
+
+ Rev 1.16 07 Mar 1996 18:11:16 JP
+ IsConnect - auf Is() abfragen
+
+ Rev 1.15 12 Feb 1996 18:16:18 JP
+ Erweiterung: gelinkte Bereiche
+
+ Rev 1.14 08 Feb 1996 19:14:26 JP
+ Erweiterung fuer gelinkte Bereiche
+
+ Rev 1.13 30 Nov 1995 12:54:36 JP
+ _SetHiddenFlag - beide Flags ueber geben (Hidden&CondHidden)
+
+ Rev 1.12 08 Nov 1995 10:03:06 OS
+ ChangeCondition => SetCondition
+
+ Rev 1.11 11 Jul 1995 18:39:46 JP
+ neu: GetSectionNode, Set-/IsCondHidden - Bedingung auswerten
+
+ Rev 1.10 29 Jun 1995 21:11:06 JP
+ Section mit Servier-Funktionalitaet
+
+ Rev 1.9 19 Jun 1995 16:45:16 MA
+ Umbau fuer daemliche Compiler
+
+ Rev 1.8 14 Jun 1995 16:07:46 JP
+ inline vor den inline Methoden
+
+ Rev 1.7 06 Apr 1995 12:42:24 JP
+ neu: Member & Methoden fuer den 'gelinkten' Filenamen
+
+ Rev 1.6 23 Feb 1995 17:38:46 JP
+ neu: SetName - setze neuen Namen an der Section
+
+ Rev 1.5 03 Feb 1995 18:17:30 JP
+ IsProtect jetzt inline
+
+ Rev 1.4 01 Feb 1995 10:52:32 JP
+ neu: erfrage/setze Bedingung
+
+ Rev 1.3 26 Jan 1995 18:47:56 JP
+ GetChildSection: erweitert fuer UI
+
+ Rev 1.2 26 Jan 1995 11:35:18 JP
+ SectionNode als friend der Section - zum Pfegen des HiddenFlags
+
+ Rev 1.1 24 Jan 1995 20:03:12 JP
+ neu: IsInNodesArr - abfrage, ob Section nicht im UndoNodes-Array steht
+
+ Rev 1.0 18 Jan 1995 19:22:58 JP
+ Initial revision.
+
+*************************************************************************/
+
+#endif
+ //_SECTION_HXX
+