summaryrefslogtreecommitdiff
path: root/sw/inc
diff options
context:
space:
mode:
authorMichael Stahl <mst@openoffice.org>2010-03-16 11:28:30 +0100
committerMichael Stahl <mst@openoffice.org>2010-03-16 11:28:30 +0100
commit99a588660bd7f22a6c16d7b46f3c4fe841445ce0 (patch)
treef14802b9ede6901c2a066d742a8c329db134c42a /sw/inc
parentb0832f9ced2972f84f48d753554c1a5efc63d382 (diff)
odfmetadata4: #i109599#: remove SwSection::operator=():
move most SwSection members to new class SwSectionData. replace evil SwSection::operator=() with SwSection::SetSectionData(). various method signatures changed to take SwSectionData parameter. rename SwDoc::ChgSection() to UpdateSection(). SwUnodo{Ins,Chg,Del}Section: adapt to store SwSectionData/SwTOXBase. regionsw.hxx: SectRepr: change SwSection member to SwSectionData.
Diffstat (limited to 'sw/inc')
-rw-r--r--sw/inc/doc.hxx6
-rw-r--r--sw/inc/editsh.hxx11
-rw-r--r--sw/inc/ndarr.hxx4
-rw-r--r--sw/inc/section.hxx201
-rw-r--r--sw/inc/swabstdlg.hxx4
-rw-r--r--sw/inc/undobj.hxx10
6 files changed, 146 insertions, 90 deletions
diff --git a/sw/inc/doc.hxx b/sw/inc/doc.hxx
index 3b0f82bce4b6..d433ff603b2f 100644
--- a/sw/inc/doc.hxx
+++ b/sw/inc/doc.hxx
@@ -164,6 +164,7 @@ class SwRubyList;
class SwRubyListEntry;
class SwSectionFmt;
class SwSectionFmts;
+class SwSectionData;
class SwSelBoxes;
class SwSpzFrmFmts;
class SwTOXBase;
@@ -1803,7 +1804,7 @@ public:
inline const Link& GetOle2Link() const {return aOle2Link;}
// insert section (the ODF kind of section, not the nodesarray kind)
- SwSection * InsertSwSection(SwPaM const& rRange, SwSection const&,
+ SwSection * InsertSwSection(SwPaM const& rRange, SwSectionData &,
SwTOXBase const*const pTOXBase = 0,
SfxItemSet const*const pAttr = 0, bool const bUpdate = true);
sal_uInt16 IsInsRegionAvailable( const SwPaM& rRange,
@@ -1813,7 +1814,8 @@ public:
const SwSectionFmts& GetSections() const { return *pSectionFmtTbl; }
SwSectionFmt *MakeSectionFmt( SwSectionFmt *pDerivedFrom );
void DelSectionFmt( SwSectionFmt *pFmt, sal_Bool bDelNodes = sal_False );
- void ChgSection( sal_uInt16 nSect, const SwSection&, const SfxItemSet* = 0, sal_Bool bPreventLinkUpdate = FALSE);
+ void UpdateSection(sal_uInt16 const nSect, SwSectionData &,
+ SfxItemSet const*const = 0, bool const bPreventLinkUpdate = false);
String GetUniqueSectionName( const String* pChkStr = 0 ) const;
/* @@@MAINTAINABILITY-HORROR@@@
diff --git a/sw/inc/editsh.hxx b/sw/inc/editsh.hxx
index 8cb9cbd5f26a..2d890f32a8bf 100644
--- a/sw/inc/editsh.hxx
+++ b/sw/inc/editsh.hxx
@@ -88,6 +88,7 @@ class SwTable;
class SwTextBlocks; // fuer GlossaryRW
class SwFmtFtn;
class SwSection;
+class SwSectionData;
class SwSectionFmt;
class SwTOXMarks;
class SwTOXBase;
@@ -805,9 +806,8 @@ public:
// gebe Liste aller Fussnoten und deren Anfangstexte
USHORT GetSeqFtnList( SwSeqFldList& rList, bool bEndNotes = false );
- // SS fuer Bereiche
- const SwSection* InsertSection( const SwSection& rNew,
- const SfxItemSet* = 0 );
+ SwSection const* InsertSection(
+ SwSectionData & rNewData, SfxItemSet const*const = 0 );
BOOL IsInsRegionAvailable() const;
const SwSection* GetCurrSection() const;
// liefert wie GetCurrSection() den aktuellen Bereich, allerdings geht diese Funktion
@@ -821,7 +821,8 @@ public:
USHORT GetSectionFmtPos( const SwSectionFmt& ) const;
const SwSectionFmt& GetSectionFmt(USHORT nFmt) const;
void DelSectionFmt( USHORT nFmt );
- void ChgSection( USHORT nSect, const SwSection&, const SfxItemSet* = 0 );
+ void UpdateSection(sal_uInt16 const nSect, SwSectionData &,
+ SfxItemSet const*const = 0);
BOOL IsAnySectionInDoc( BOOL bChkReadOnly = FALSE,
BOOL bChkHidden = FALSE,
BOOL BChkTOX = FALSE ) const;
@@ -867,7 +868,7 @@ public:
BOOL IsGlblDocSaveLinks() const;
USHORT GetGlobalDocContent( SwGlblDocContents& rArr ) const;
BOOL InsertGlobalDocContent( const SwGlblDocContent& rPos,
- const SwSection& rNew );
+ SwSectionData & rNew );
BOOL InsertGlobalDocContent( const SwGlblDocContent& rPos,
const SwTOXBase& rTOX );
BOOL InsertGlobalDocContent( const SwGlblDocContent& rPos );
diff --git a/sw/inc/ndarr.hxx b/sw/inc/ndarr.hxx
index df629c188dd5..d041dfc488c7 100644
--- a/sw/inc/ndarr.hxx
+++ b/sw/inc/ndarr.hxx
@@ -55,7 +55,7 @@ class SwNodeRange;
class SwOLENode;
class SwOutlineNodes;
class SwPaM;
-class SwSection;
+class SwSectionData;
class SwSectionFmt;
class SwTOXBase;
class SwSectionNode;
@@ -313,7 +313,7 @@ public:
// fuege eine neue SwSection ein
SwSectionNode* InsertTextSection(SwNodeIndex const& rNdIdx,
SwSectionFmt& rSectionFmt,
- SwSection const&,
+ SwSectionData const&,
SwTOXBase const*const pTOXBase,
SwNodeIndex const*const pEnde,
bool const bInsAtStart = true,
diff --git a/sw/inc/section.hxx b/sw/inc/section.hxx
index 6ca584c82a11..6249251a7514 100644
--- a/sw/inc/section.hxx
+++ b/sw/inc/section.hxx
@@ -28,14 +28,15 @@
#ifndef _SECTION_HXX
#define _SECTION_HXX
+#include <boost/utility.hpp>
#include <com/sun/star/uno/Sequence.h>
+
#include <sfx2/lnkbase.hxx>
#include <tools/rtti.hxx>
-#ifndef _TOOLS_REF_HXX
#include <tools/ref.hxx>
-#endif
#include <svl/svarray.hxx>
+
#include <frmfmt.hxx>
@@ -77,61 +78,119 @@ enum LinkCreateType
CREATE_UPDATE // Link connecten und updaten
};
+class SW_DLLPUBLIC SwSectionData
+{
+private:
+ SectionType m_eType;
+
+ String m_sSectionName;
+ String m_sCondition;
+ String m_sLinkFileName;
+ String m_sLinkFilePassword; // JP 27.02.2001: must be changed to Sequence
+ ::com::sun::star::uno::Sequence <sal_Int8> m_Password;
+
+ /// it seems this flag caches the current final "hidden" state
+ bool m_bHiddenFlag : 1;
+ /// flags that correspond to attributes in the format:
+ /// may have different value than format attribute:
+ /// format attr has value for this section, while flag is
+ /// effectively ORed with parent sections!
+ bool m_bProtectFlag : 1;
+ // --> FME 2004-06-22 #114856# edit in readonly sections
+ bool m_bEditInReadonlyFlag : 1;
+ // <--
+ bool m_bHidden : 1; // all paragraphs hidden?
+ bool m_bCondHiddenFlag : 1; // Hiddenflag for condition
+ bool m_bConnectFlag : 1; // connected to server?
+
+public:
+
+ SwSectionData(SectionType const eType, String const& rName);
+ explicit SwSectionData(SwSection const&);
+ SwSectionData(SwSectionData const&);
+ SwSectionData & operator=(SwSectionData const&);
+ bool operator==(SwSectionData const&) const;
+
+ String const& GetSectionName() const { return m_sSectionName; }
+ void SetSectionName(String const& rName){ m_sSectionName = rName; }
+ SectionType GetType() const { return m_eType; }
+ void SetType(SectionType const eNew) { m_eType = eNew; }
+
+ bool IsHidden() const { return m_bHidden; }
+ void SetHidden(bool const bFlag = true) { m_bHidden = bFlag; }
+
+ bool IsHiddenFlag() const { return m_bHiddenFlag; }
+ SW_DLLPRIVATE void
+ SetHiddenFlag(bool const bFlag) { m_bHiddenFlag = bFlag; }
+ bool IsProtectFlag() const { return m_bProtectFlag; }
+ SW_DLLPRIVATE void
+ SetProtectFlag(bool const bFlag) { m_bProtectFlag = bFlag; }
+ // --> FME 2004-06-22 #114856# edit in readonly sections
+ bool IsEditInReadonlyFlag() const { return m_bEditInReadonlyFlag; }
+ void SetEditInReadonlyFlag(bool const bFlag)
+ { m_bEditInReadonlyFlag = bFlag; }
+ // <--
+
+ void SetCondHidden(bool const bFlag = true) { m_bCondHiddenFlag = bFlag; };
+ bool IsCondHidden() const { return m_bCondHiddenFlag; }
+
+ String const& GetCondition() const { return m_sCondition; }
+ void SetCondition(String const& rNew) { m_sCondition = rNew; }
+
+ String const& GetLinkFileName() const { return m_sLinkFileName; };
+ void SetLinkFileName(String const& rNew, String const* pPassWd = 0)
+ {
+ m_sLinkFileName = rNew;
+ if (pPassWd) { SetLinkFilePassword(*pPassWd); }
+ }
+
+ String const& GetLinkFilePassword() const { return m_sLinkFilePassword; }
+ void SetLinkFilePassword(String const& rS) { m_sLinkFilePassword = rS; }
+
+ ::com::sun::star::uno::Sequence<sal_Int8> const& GetPassword() const
+ { return m_Password; }
+ void SetPassword(::com::sun::star::uno::Sequence<sal_Int8> const& rNew)
+ { m_Password = rNew; }
+ bool IsLinkType() const
+ { return (DDE_LINK_SECTION == m_eType) || (FILE_LINK_SECTION == m_eType); }
-class SW_DLLPUBLIC SwSection : public SwClient
+ bool IsConnectFlag() const { return m_bConnectFlag; }
+ void SetConnectFlag(bool const bFlag = true){ m_bConnectFlag = bFlag; }
+};
+
+class SW_DLLPUBLIC SwSection
+ : public SwClient
+ , private ::boost::noncopyable
{
// 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; // JP 27.02.2001: must later changed to Sequence
- ::com::sun::star::uno::Sequence <sal_Int8> aPasswd;
+private:
+ SwSectionData m_Data;
SwServerObjectRef refObj; // falls DataServer -> Pointer gesetzt
::sfx2::SvBaseLinkRef refLink;
- SectionType eType;
-
- BOOL bProtectFlag : 1; // Flags fuer schnelle Abfragen, wird ueber
- // Attribut im Format gesetzt
- BOOL bHiddenFlag : 1; // Flag: Absaetze versteckt ?
- // --> FME 2004-06-22 #114856# edit in readonly sections
- BOOL bEditInReadonlyFlag : 1;
- // <--
- BOOL bHidden : 1; // alle Absaetze nicht sichtbar ?
- BOOL bCondHiddenFlag : 1; // Hiddenflag fuer die Bedingung ?
- BOOL bConnectFlag : 1; // Flag: "Verbindung zum Server" vorhanden?
-
-
- SW_DLLPRIVATE void _SetHiddenFlag( BOOL bHidden, BOOL bCondition );
- SW_DLLPRIVATE void _SetProtectFlag( BOOL bFlag ) { bProtectFlag = bFlag; }
- /* SW_DLLPUBLIC */ BOOL _IsProtect() const;
-
- // --> FME 2004-06-22 #114856# edit in readonly sections
- void _SetEditInReadonlyFlag( BOOL bFlag ) { bEditInReadonlyFlag = bFlag; }
- BOOL _IsEditInReadonly() const;
- // <--
+ SW_DLLPRIVATE void ImplSetHiddenFlag(
+ bool const bHidden, bool const bCondition);
public:
TYPEINFO(); // rtti
- SwSection( SectionType eType, const String& rName,
- SwSectionFmt* pFmt = 0 );
- ~SwSection();
+ SwSection(SectionType const eType, String const& rName,
+ SwSectionFmt & rFormat);
+ virtual ~SwSection();
+
+ bool DataEquals(SwSectionData const& rCmp) const;
- // kopiere nur die Daten der Section!
- // Ableitung bleibt (beim Left) erhalten.
- SwSection& operator=( const SwSection& );
- BOOL operator==( const SwSection& rCmp ) const;
+ void SetSectionData(SwSectionData const& rData);
- const String& GetName() const { return sSectionNm; }
- void SetName( const String& rName ) { sSectionNm = rName; }
- SectionType GetType() const { return eType; }
- void SetType( SectionType eNew ) { eType = eNew; }
+ String const& GetName() const { return m_Data.GetSectionName(); }
+ void SetName(String const& rName) { m_Data.SetSectionName(rName); }
+ SectionType GetType() const { return m_Data.GetType(); }
+ void SetType(SectionType const eType) { return m_Data.SetType(eType); }
SwSectionFmt* GetFmt() { return (SwSectionFmt*)pRegisteredIn; }
SwSectionFmt* GetFmt() const { return (SwSectionFmt*)pRegisteredIn; }
@@ -140,50 +199,47 @@ public:
// setze die Hidden/Protected -> gesamten Baum updaten !
// (Attribute/Flags werden gesetzt/erfragt)
- BOOL IsHidden() const { return bHidden; }
- BOOL IsProtect() const { return GetFmt() ? _IsProtect()
- : IsProtectFlag(); }
-
+ bool IsHidden() const { return m_Data.IsHidden(); }
+ void SetHidden (bool const bFlag = true);
+ bool IsProtect() const;
+ void SetProtect(bool const bFlag = true);
// --> FME 2004-06-22 #114856# edit in readonly sections
- BOOL IsEditInReadonly()const { return GetFmt() ? _IsEditInReadonly() : IsEditInReadonlyFlag(); }
- void SetEditInReadonly( BOOL bFlag = TRUE );
+ bool IsEditInReadonly() const;
+ void SetEditInReadonly(bool const bFlag = true);
// <--
- void SetHidden( BOOL bFlag = TRUE );
- void SetProtect( BOOL bFlag = TRUE );
-
// erfrage die internen Flags (Zustand inklusive Parents nicht, was
// aktuell an der Section gesetzt ist!!)
- BOOL IsHiddenFlag() const { return bHiddenFlag; }
- BOOL IsProtectFlag() const { return bProtectFlag; }
+ bool IsHiddenFlag() const { return m_Data.IsHiddenFlag(); }
+ bool IsProtectFlag() const { return m_Data.IsProtectFlag(); }
// --> FME 2004-06-22 #114856# edit in readonly sections
- BOOL IsEditInReadonlyFlag() const { return bEditInReadonlyFlag; }
+ bool IsEditInReadonlyFlag() const { return m_Data.IsEditInReadonlyFlag(); }
// <--
- void SetCondHidden( BOOL bFlag = TRUE );
- BOOL IsCondHidden() const { return bCondHiddenFlag; }
+ void SetCondHidden(bool const bFlag = true);
+ bool IsCondHidden() const { return m_Data.IsCondHidden(); }
// erfrage (auch ueber die Parents), ob diese Section versteckt sein soll.
BOOL CalcHiddenFlag() const;
inline SwSection* GetParent() const;
- // setze/erfrage die Bedingung
- const String& GetCondition() const { return sCondition; }
- void SetCondition( const String& rNew ) { sCondition = rNew; }
+ String const& GetCondition() const { return m_Data.GetCondition(); }
+ void SetCondition(String const& rNew) { m_Data.SetCondition(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; }
+ void SetLinkFileName(String const& rNew, String const*const pPassWd = 0);
+ // password of linked file (only valid during runtime!)
+ String const& GetLinkFilePassword() const
+ { return m_Data.GetLinkFilePassword(); }
+ void SetLinkFilePassword(String const& rS)
+ { m_Data.SetLinkFilePassword(rS); }
// get / set password of this section
- const ::com::sun::star::uno::Sequence <sal_Int8>&
- GetPasswd() const { return aPasswd; }
- void SetPasswd( const ::com::sun::star::uno::Sequence <sal_Int8>& rNew )
- { aPasswd = rNew; }
+ ::com::sun::star::uno::Sequence<sal_Int8> const& GetPassword() const
+ { return m_Data.GetPassword(); }
+ void SetPassword(::com::sun::star::uno::Sequence <sal_Int8> const& rNew)
+ { m_Data.SetPassword(rNew); }
// Daten Server-Methoden
void SetRefObject( SwServerObject* pObj );
@@ -206,12 +262,12 @@ public:
void MakeChildLinksVisible( const SwSectionNode& rSectNd );
- BOOL IsLinkType() const
- { return DDE_LINK_SECTION == eType || FILE_LINK_SECTION == eType; }
+ bool IsLinkType() const { return m_Data.IsLinkType(); }
// Flags fuer UI - Verbindung geklappt?
- BOOL IsConnectFlag() const { return bConnectFlag; }
- void SetConnectFlag( BOOL bFlag = TRUE ) { bConnectFlag = bFlag; }
+ bool IsConnectFlag() const { return m_Data.IsConnectFlag(); }
+ void SetConnectFlag(bool const bFlag = true)
+ { m_Data.SetConnectFlag(bFlag); }
// return the TOX base class if the section is a TOX section
const SwTOXBase* GetTOXBase() const;
@@ -219,10 +275,7 @@ public:
// --> OD 2007-02-14 #b6521322#
void BreakLink();
// <--
-private:
- // privater Constructor, weil nie kopiert werden darf !!
- SwSection( const SwSection& );
- // @@@ but copy assignment "SwSection & operator= ( const SwSection& )" is public? @@@
+
};
diff --git a/sw/inc/swabstdlg.hxx b/sw/inc/swabstdlg.hxx
index 824e3269e1a5..d189f3c31349 100644
--- a/sw/inc/swabstdlg.hxx
+++ b/sw/inc/swabstdlg.hxx
@@ -73,7 +73,7 @@ class SwForm;
struct CurTOXType;
class SwTOXDescription;
class SwTOXBase;
-class SwSection;
+class SwSectionData;
struct SwDBData;
class SwField;
class Printer;
@@ -194,7 +194,7 @@ public:
class AbstractInsertSectionTabDialog : public VclAbstractDialog //add for SwInsertSectionTabDialog
{
public:
- virtual void SetSection(const SwSection& rSect) = 0;
+ virtual void SetSectionData(SwSectionData const& rSect) = 0;
};
class AbstractSwWordCountDialog : public VclAbstractDialog
diff --git a/sw/inc/undobj.hxx b/sw/inc/undobj.hxx
index c1232bfb52bd..f0b9eac22fda 100644
--- a/sw/inc/undobj.hxx
+++ b/sw/inc/undobj.hxx
@@ -71,7 +71,7 @@ class SwTableBox;
struct SwSortOptions;
class SwFrmFmt;
class SwHistoryBookmark;
-class SwSection;
+class SwSectionData;
class SwSectionFmt;
class SwTOXBase;
class SvxTabStopItem;
@@ -1382,7 +1382,7 @@ public:
class SwUndoInsSection : public SwUndo, private SwUndRng
{
SwHistory* pHistory;
- SwSection* pSection;
+ const ::std::auto_ptr<SwSectionData> m_pSectionData;
const ::std::auto_ptr<SwTOXBase> m_pTOXBase; /// set iff section is TOX
SwRedlineData* pRedlData;
SfxItemSet* pAttr;
@@ -1394,7 +1394,7 @@ class SwUndoInsSection : public SwUndo, private SwUndRng
void Join( SwDoc& rDoc, ULONG nNode );
public:
- SwUndoInsSection(SwPaM const&, SwSection const&,
+ SwUndoInsSection(SwPaM const&, SwSectionData const&,
SfxItemSet const*const pSet, SwTOXBase const*const pTOXBase);
virtual ~SwUndoInsSection();
virtual void Undo( SwUndoIter& );
@@ -1410,7 +1410,7 @@ public:
class SwUndoDelSection : public SwUndo
{
ULONG nSttNd, nEndNd;
- SwSection* pSection;
+ ::std::auto_ptr<SwSectionData> m_pSectionData; /// set iff section not TOX
::std::auto_ptr<SwTOXBase> m_pTOXBase; /// set iff section is TOX
SfxItemSet* pAttr;
public:
@@ -1424,7 +1424,7 @@ public:
class SwUndoChgSection : public SwUndo
{
ULONG nSttNd;
- SwSection* pSection;
+ ::std::auto_ptr<SwSectionData> m_pSectionData;
SfxItemSet* pAttr;
BOOL bOnlyAttrChgd;
public: