Files
libreoffice/sw/inc/section.hxx

387 lines
14 KiB
C++
Raw Normal View History

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
re-base on ALv2 code. Includes: Patches contributed by Oliver-Rainer Wittmann sw34bf06: #i117783# - Writer's implementation of XPagePrintable - apply print settings to new printing routines http://svn.apache.org/viewvc?view=revision&revision=1172115 sw34bf06: #o12311627# use <rtl_random> methods to create unique ids for list styles and list ids http://svn.apache.org/viewvc?view=revision&revision=1172112 sw34bf06 #i114725#,#i115828# - method <SwDoc::ClearDoc()> - clear list structures completely http://svn.apache.org/viewvc?view=revision&revision=1172122 i#118572 - remove ui string and help content regarding usage of Java Mail in Writer's Mail Merge as Java Mail is not used. http://svn.apache.org/viewvc?view=revision&revision=1197035 Patches contributed by Mathias Bauer cws mba34issues01: #i117718#: provide filter name in case storage of medium does not allow to detect one http://svn.apache.org/viewvc?view=revision&revision=1172350 cws mba34issues01: #i117721#: directly provide parameters retrieved from SfxMedium http://svn.apache.org/viewvc?view=revision&revision=1172353 gnumake4 work variously http://svn.apache.org/viewvc?view=revision&revision=1394707 http://svn.apache.org/viewvc?view=revision&revision=1394326 http://svn.apache.org/viewvc?view=revision&revision=1396797 http://svn.apache.org/viewvc?view=revision&revision=1397315 cws mba34issues01: #i117723#: convert assertion into trace http://svn.apache.org/viewvc?view=revision&revision=1172355 cws mba34issues01: #i117699#: keep layout alive until swdoc dies http://svn.apache.org/viewvc?view=revision&revision=1172362 cws mba34issues01: #i117943#: missing color attributes in RTF clipboard http://svn.apache.org/viewvc?view=revision&revision=1172363 Patch contributed by Henning Brinkmann imported patch i#103878 http://svn.apache.org/viewvc?view=revision&revision=1172109 Patches contributed by Michael Stahl sw34bf06: #i117955#: WW8 export: disable storing of section breaks in endnotes http://svn.apache.org/viewvc?view=revision&revision=1172119 Patch contributed by imacat Fixed the Asian language work count. http://svn.apache.org/viewvc?view=revision&revision=1241345 Patch contributed by Pedro Giffuni i#20878 - Add comment with BZ issue for reference. http://svn.apache.org/viewvc?view=revision&revision=1244517 Patch contributed by Andre Fischer Do not add targets for junit tests when junit is disabled. http://svn.apache.org/viewvc?view=revision&revision=1241508 add writerperfect dependency.
2011-03-31 10:05:04 +02:00
/*
* This file is part of the LibreOffice project.
2000-09-18 16:15:01 +00:00
*
re-base on ALv2 code. Includes: Patches contributed by Oliver-Rainer Wittmann sw34bf06: #i117783# - Writer's implementation of XPagePrintable - apply print settings to new printing routines http://svn.apache.org/viewvc?view=revision&revision=1172115 sw34bf06: #o12311627# use <rtl_random> methods to create unique ids for list styles and list ids http://svn.apache.org/viewvc?view=revision&revision=1172112 sw34bf06 #i114725#,#i115828# - method <SwDoc::ClearDoc()> - clear list structures completely http://svn.apache.org/viewvc?view=revision&revision=1172122 i#118572 - remove ui string and help content regarding usage of Java Mail in Writer's Mail Merge as Java Mail is not used. http://svn.apache.org/viewvc?view=revision&revision=1197035 Patches contributed by Mathias Bauer cws mba34issues01: #i117718#: provide filter name in case storage of medium does not allow to detect one http://svn.apache.org/viewvc?view=revision&revision=1172350 cws mba34issues01: #i117721#: directly provide parameters retrieved from SfxMedium http://svn.apache.org/viewvc?view=revision&revision=1172353 gnumake4 work variously http://svn.apache.org/viewvc?view=revision&revision=1394707 http://svn.apache.org/viewvc?view=revision&revision=1394326 http://svn.apache.org/viewvc?view=revision&revision=1396797 http://svn.apache.org/viewvc?view=revision&revision=1397315 cws mba34issues01: #i117723#: convert assertion into trace http://svn.apache.org/viewvc?view=revision&revision=1172355 cws mba34issues01: #i117699#: keep layout alive until swdoc dies http://svn.apache.org/viewvc?view=revision&revision=1172362 cws mba34issues01: #i117943#: missing color attributes in RTF clipboard http://svn.apache.org/viewvc?view=revision&revision=1172363 Patch contributed by Henning Brinkmann imported patch i#103878 http://svn.apache.org/viewvc?view=revision&revision=1172109 Patches contributed by Michael Stahl sw34bf06: #i117955#: WW8 export: disable storing of section breaks in endnotes http://svn.apache.org/viewvc?view=revision&revision=1172119 Patch contributed by imacat Fixed the Asian language work count. http://svn.apache.org/viewvc?view=revision&revision=1241345 Patch contributed by Pedro Giffuni i#20878 - Add comment with BZ issue for reference. http://svn.apache.org/viewvc?view=revision&revision=1244517 Patch contributed by Andre Fischer Do not add targets for junit tests when junit is disabled. http://svn.apache.org/viewvc?view=revision&revision=1241508 add writerperfect dependency.
2011-03-31 10:05:04 +02:00
* 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/.
2000-09-18 16:15:01 +00:00
*
re-base on ALv2 code. Includes: Patches contributed by Oliver-Rainer Wittmann sw34bf06: #i117783# - Writer's implementation of XPagePrintable - apply print settings to new printing routines http://svn.apache.org/viewvc?view=revision&revision=1172115 sw34bf06: #o12311627# use <rtl_random> methods to create unique ids for list styles and list ids http://svn.apache.org/viewvc?view=revision&revision=1172112 sw34bf06 #i114725#,#i115828# - method <SwDoc::ClearDoc()> - clear list structures completely http://svn.apache.org/viewvc?view=revision&revision=1172122 i#118572 - remove ui string and help content regarding usage of Java Mail in Writer's Mail Merge as Java Mail is not used. http://svn.apache.org/viewvc?view=revision&revision=1197035 Patches contributed by Mathias Bauer cws mba34issues01: #i117718#: provide filter name in case storage of medium does not allow to detect one http://svn.apache.org/viewvc?view=revision&revision=1172350 cws mba34issues01: #i117721#: directly provide parameters retrieved from SfxMedium http://svn.apache.org/viewvc?view=revision&revision=1172353 gnumake4 work variously http://svn.apache.org/viewvc?view=revision&revision=1394707 http://svn.apache.org/viewvc?view=revision&revision=1394326 http://svn.apache.org/viewvc?view=revision&revision=1396797 http://svn.apache.org/viewvc?view=revision&revision=1397315 cws mba34issues01: #i117723#: convert assertion into trace http://svn.apache.org/viewvc?view=revision&revision=1172355 cws mba34issues01: #i117699#: keep layout alive until swdoc dies http://svn.apache.org/viewvc?view=revision&revision=1172362 cws mba34issues01: #i117943#: missing color attributes in RTF clipboard http://svn.apache.org/viewvc?view=revision&revision=1172363 Patch contributed by Henning Brinkmann imported patch i#103878 http://svn.apache.org/viewvc?view=revision&revision=1172109 Patches contributed by Michael Stahl sw34bf06: #i117955#: WW8 export: disable storing of section breaks in endnotes http://svn.apache.org/viewvc?view=revision&revision=1172119 Patch contributed by imacat Fixed the Asian language work count. http://svn.apache.org/viewvc?view=revision&revision=1241345 Patch contributed by Pedro Giffuni i#20878 - Add comment with BZ issue for reference. http://svn.apache.org/viewvc?view=revision&revision=1244517 Patch contributed by Andre Fischer Do not add targets for junit tests when junit is disabled. http://svn.apache.org/viewvc?view=revision&revision=1241508 add writerperfect dependency.
2011-03-31 10:05:04 +02:00
* This file incorporates work covered by the following license notice:
2000-09-18 16:15:01 +00:00
*
re-base on ALv2 code. Includes: Patches contributed by Oliver-Rainer Wittmann sw34bf06: #i117783# - Writer's implementation of XPagePrintable - apply print settings to new printing routines http://svn.apache.org/viewvc?view=revision&revision=1172115 sw34bf06: #o12311627# use <rtl_random> methods to create unique ids for list styles and list ids http://svn.apache.org/viewvc?view=revision&revision=1172112 sw34bf06 #i114725#,#i115828# - method <SwDoc::ClearDoc()> - clear list structures completely http://svn.apache.org/viewvc?view=revision&revision=1172122 i#118572 - remove ui string and help content regarding usage of Java Mail in Writer's Mail Merge as Java Mail is not used. http://svn.apache.org/viewvc?view=revision&revision=1197035 Patches contributed by Mathias Bauer cws mba34issues01: #i117718#: provide filter name in case storage of medium does not allow to detect one http://svn.apache.org/viewvc?view=revision&revision=1172350 cws mba34issues01: #i117721#: directly provide parameters retrieved from SfxMedium http://svn.apache.org/viewvc?view=revision&revision=1172353 gnumake4 work variously http://svn.apache.org/viewvc?view=revision&revision=1394707 http://svn.apache.org/viewvc?view=revision&revision=1394326 http://svn.apache.org/viewvc?view=revision&revision=1396797 http://svn.apache.org/viewvc?view=revision&revision=1397315 cws mba34issues01: #i117723#: convert assertion into trace http://svn.apache.org/viewvc?view=revision&revision=1172355 cws mba34issues01: #i117699#: keep layout alive until swdoc dies http://svn.apache.org/viewvc?view=revision&revision=1172362 cws mba34issues01: #i117943#: missing color attributes in RTF clipboard http://svn.apache.org/viewvc?view=revision&revision=1172363 Patch contributed by Henning Brinkmann imported patch i#103878 http://svn.apache.org/viewvc?view=revision&revision=1172109 Patches contributed by Michael Stahl sw34bf06: #i117955#: WW8 export: disable storing of section breaks in endnotes http://svn.apache.org/viewvc?view=revision&revision=1172119 Patch contributed by imacat Fixed the Asian language work count. http://svn.apache.org/viewvc?view=revision&revision=1241345 Patch contributed by Pedro Giffuni i#20878 - Add comment with BZ issue for reference. http://svn.apache.org/viewvc?view=revision&revision=1244517 Patch contributed by Andre Fischer Do not add targets for junit tests when junit is disabled. http://svn.apache.org/viewvc?view=revision&revision=1241508 add writerperfect dependency.
2011-03-31 10:05:04 +02:00
* 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 .
*/
2000-09-18 16:15:01 +00:00
#ifndef INCLUDED_SW_INC_SECTION_HXX
#define INCLUDED_SW_INC_SECTION_HXX
2000-09-18 16:15:01 +00:00
2001-02-27 17:46:19 +00:00
#include <com/sun/star/uno/Sequence.h>
2000-09-18 16:15:01 +00:00
#include <tools/rtti.hxx>
#include <tools/ref.hxx>
#include <svl/smplhint.hxx>
#include <sfx2/lnkbase.hxx>
#include <sfx2/Metadatable.hxx>
2000-09-18 16:15:01 +00:00
#include <frmfmt.hxx>
#include <vector>
2000-09-18 16:15:01 +00:00
namespace com { namespace sun { namespace star {
namespace text { class XTextSection; }
} } }
2000-09-18 16:15:01 +00:00
class SwSectionFmt;
class SwDoc;
class SwSection;
class SwSectionNode;
2000-09-18 16:15:01 +00:00
class SwTOXBase;
#ifndef SW_DECL_SWSERVEROBJECT_DEFINED
#define SW_DECL_SWSERVEROBJECT_DEFINED
class SwServerObject;
typedef tools::SvRef<SwServerObject> SwServerObjectRef;
2000-09-18 16:15:01 +00:00
#endif
typedef std::vector<SwSection*> SwSections;
2000-09-18 16:15:01 +00:00
enum SectionType { CONTENT_SECTION,
TOX_HEADER_SECTION,
TOX_CONTENT_SECTION,
DDE_LINK_SECTION = OBJECT_CLIENT_DDE,
FILE_LINK_SECTION = OBJECT_CLIENT_FILE
};
enum LinkCreateType
{
2011-04-18 20:18:04 +02:00
CREATE_NONE, // Do nothing.
CREATE_CONNECT, // Connect created link.
CREATE_UPDATE // Connect created link and update it.
2000-09-18 16:15:01 +00:00
};
class SW_DLLPUBLIC SwSectionData
{
private:
SectionType m_eType;
OUString m_sSectionName;
OUString m_sCondition;
OUString m_sLinkFileName;
OUString m_sLinkFilePassword; // Must be changed to Sequence.
::com::sun::star::uno::Sequence <sal_Int8> m_Password;
2011-04-18 20:18:04 +02:00
/// It seems this flag caches the current final "hidden" state.
bool m_bHiddenFlag : 1;
2011-04-18 20:18:04 +02:00
/// 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;
2011-04-18 20:18:04 +02:00
// Edit in readonly sections.
bool m_bEditInReadonlyFlag : 1;
2011-04-18 20:18:04 +02:00
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, OUString const& rName);
explicit SwSectionData(SwSection const&);
SwSectionData(SwSectionData const&);
SwSectionData & operator=(SwSectionData const&);
bool operator==(SwSectionData const&) const;
OUString GetSectionName() const { return m_sSectionName; }
void SetSectionName(OUString 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; }
SAL_DLLPRIVATE void
SetHiddenFlag(bool const bFlag) { m_bHiddenFlag = bFlag; }
bool IsProtectFlag() const { return m_bProtectFlag; }
SAL_DLLPRIVATE void
SetProtectFlag(bool const bFlag) { m_bProtectFlag = bFlag; }
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; }
OUString GetCondition() const { return m_sCondition; }
void SetCondition(OUString const& rNew) { m_sCondition = rNew; }
OUString GetLinkFileName() const { return m_sLinkFileName; }
void SetLinkFileName(OUString const& rNew, OUString const* pPassWd = 0)
{
m_sLinkFileName = rNew;
if (pPassWd) { SetLinkFilePassword(*pPassWd); }
}
OUString GetLinkFilePassword() const { return m_sLinkFilePassword; }
void SetLinkFilePassword(OUString 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); }
2000-09-18 16:15:01 +00:00
bool IsConnectFlag() const { return m_bConnectFlag; }
void SetConnectFlag(bool const bFlag = true){ m_bConnectFlag = bFlag; }
static OUString CollapseWhiteSpaces(const OUString& sName);
};
class SW_DLLPUBLIC SwSection
: public SwClient
2000-09-18 16:15:01 +00:00
{
2011-04-18 20:18:04 +02:00
// In order to correctly maintain the flag when creating/deleting frames.
2000-09-18 16:15:01 +00:00
friend class SwSectionNode;
2011-04-18 20:18:04 +02:00
// The "read CTOR" of SwSectionFrm have to change the Hiddenflag.
2000-09-18 16:15:01 +00:00
friend class SwSectionFrm;
private:
mutable SwSectionData m_Data;
2000-09-18 16:15:01 +00:00
2011-04-18 20:18:04 +02:00
SwServerObjectRef m_RefObj; // Set if DataServer.
::sfx2::SvBaseLinkRef m_RefLink;
2000-09-18 16:15:01 +00:00
SAL_DLLPRIVATE void ImplSetHiddenFlag(
bool const bHidden, bool const bCondition);
protected:
virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) SAL_OVERRIDE;
2000-09-18 16:15:01 +00:00
public:
TYPEINFO_OVERRIDE(); // rtti
2000-09-18 16:15:01 +00:00
SwSection(SectionType const eType, OUString const& rName,
SwSectionFmt & rFormat);
virtual ~SwSection();
bool DataEquals(SwSectionData const& rCmp) const;
2000-09-18 16:15:01 +00:00
void SetSectionData(SwSectionData const& rData);
2000-09-18 16:15:01 +00:00
OUString GetSectionName() const { return m_Data.GetSectionName(); }
void SetSectionName(OUString const& rName){ m_Data.SetSectionName(rName); }
SectionType GetType() const { return m_Data.GetType(); }
void SetType(SectionType const eType) { return m_Data.SetType(eType); }
2000-09-18 16:15:01 +00:00
SwSectionFmt* GetFmt() { return (SwSectionFmt*)GetRegisteredIn(); }
SwSectionFmt* GetFmt() const { return (SwSectionFmt*)GetRegisteredIn(); }
2000-09-18 16:15:01 +00:00
2011-04-18 20:18:04 +02:00
// Set hidden/protected -> update the whole tree!
// (Attributes/flags are set/get.)
bool IsHidden() const { return m_Data.IsHidden(); }
void SetHidden (bool const bFlag = true);
bool IsProtect() const;
void SetProtect(bool const bFlag = true);
bool IsEditInReadonly() const;
void SetEditInReadonly(bool const bFlag = true);
2011-04-18 20:18:04 +02:00
// Get internal flags (state including parents, not what is
// currently set at section!).
bool IsHiddenFlag() const { return m_Data.IsHiddenFlag(); }
bool IsProtectFlag() const { return m_Data.IsProtectFlag(); }
bool IsEditInReadonlyFlag() const { return m_Data.IsEditInReadonlyFlag(); }
2000-09-18 16:15:01 +00:00
void SetCondHidden(bool const bFlag = true);
bool IsCondHidden() const { return m_Data.IsCondHidden(); }
2011-04-18 20:18:04 +02:00
// Query (also for parents) if this section is to be hidden.
sal_Bool CalcHiddenFlag() const;
2000-09-18 16:15:01 +00:00
inline SwSection* GetParent() const;
OUString GetCondition() const { return m_Data.GetCondition(); }
void SetCondition(OUString const& rNew) { m_Data.SetCondition(rNew); }
2000-09-18 16:15:01 +00:00
OUString GetLinkFileName() const;
void SetLinkFileName(OUString const& rNew, OUString const*const pPassWd = 0);
2011-04-18 20:18:04 +02:00
// Password of linked file (only valid during runtime!)
OUString GetLinkFilePassword() const
{ return m_Data.GetLinkFilePassword(); }
void SetLinkFilePassword(OUString const& rS)
{ m_Data.SetLinkFilePassword(rS); }
2000-09-18 16:15:01 +00:00
2011-04-18 20:18:04 +02:00
// Get / set password of this section
::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); }
2001-02-27 17:46:19 +00:00
2011-04-18 20:18:04 +02:00
// Data server methods.
void SetRefObject( SwServerObject* pObj );
const SwServerObject* GetObject() const { return & m_RefObj; }
SwServerObject* GetObject() { return & m_RefObj; }
bool IsServer() const { return m_RefObj.Is(); }
2000-09-18 16:15:01 +00:00
2011-04-18 20:18:04 +02:00
// Methods for linked ranges.
sal_uInt16 GetUpdateType() const { return m_RefLink->GetUpdateMode(); }
void SetUpdateType(sal_uInt16 const nType )
{ m_RefLink->SetUpdateMode(nType); }
2000-09-18 16:15:01 +00:00
bool IsConnected() const { return m_RefLink.Is(); }
void UpdateNow() { m_RefLink->Update(); }
void Disconnect() { m_RefLink->Disconnect(); }
2000-09-18 16:15:01 +00:00
const ::sfx2::SvBaseLink& GetBaseLink() const { return *m_RefLink; }
::sfx2::SvBaseLink& GetBaseLink() { return *m_RefLink; }
2000-09-18 16:15:01 +00:00
void CreateLink( LinkCreateType eType );
void MakeChildLinksVisible( const SwSectionNode& rSectNd );
bool IsLinkType() const { return m_Data.IsLinkType(); }
2000-09-18 16:15:01 +00:00
2011-04-18 20:18:04 +02:00
// Flags for UI. Did connection work?
bool IsConnectFlag() const { return m_Data.IsConnectFlag(); }
void SetConnectFlag(bool const bFlag = true)
{ m_Data.SetConnectFlag(bFlag); }
2000-09-18 16:15:01 +00:00
2011-04-18 20:18:04 +02:00
// Return the TOX base class if the section is a TOX section
2000-09-18 16:15:01 +00:00
const SwTOXBase* GetTOXBase() const;
void BreakLink();
2000-09-18 16:15:01 +00:00
};
re-base on ALv2 code. Includes: Patches contributed by Oliver-Rainer Wittmann sw34bf06: #i117783# - Writer's implementation of XPagePrintable - apply print settings to new printing routines http://svn.apache.org/viewvc?view=revision&revision=1172115 sw34bf06: #o12311627# use <rtl_random> methods to create unique ids for list styles and list ids http://svn.apache.org/viewvc?view=revision&revision=1172112 sw34bf06 #i114725#,#i115828# - method <SwDoc::ClearDoc()> - clear list structures completely http://svn.apache.org/viewvc?view=revision&revision=1172122 i#118572 - remove ui string and help content regarding usage of Java Mail in Writer's Mail Merge as Java Mail is not used. http://svn.apache.org/viewvc?view=revision&revision=1197035 Patches contributed by Mathias Bauer cws mba34issues01: #i117718#: provide filter name in case storage of medium does not allow to detect one http://svn.apache.org/viewvc?view=revision&revision=1172350 cws mba34issues01: #i117721#: directly provide parameters retrieved from SfxMedium http://svn.apache.org/viewvc?view=revision&revision=1172353 gnumake4 work variously http://svn.apache.org/viewvc?view=revision&revision=1394707 http://svn.apache.org/viewvc?view=revision&revision=1394326 http://svn.apache.org/viewvc?view=revision&revision=1396797 http://svn.apache.org/viewvc?view=revision&revision=1397315 cws mba34issues01: #i117723#: convert assertion into trace http://svn.apache.org/viewvc?view=revision&revision=1172355 cws mba34issues01: #i117699#: keep layout alive until swdoc dies http://svn.apache.org/viewvc?view=revision&revision=1172362 cws mba34issues01: #i117943#: missing color attributes in RTF clipboard http://svn.apache.org/viewvc?view=revision&revision=1172363 Patch contributed by Henning Brinkmann imported patch i#103878 http://svn.apache.org/viewvc?view=revision&revision=1172109 Patches contributed by Michael Stahl sw34bf06: #i117955#: WW8 export: disable storing of section breaks in endnotes http://svn.apache.org/viewvc?view=revision&revision=1172119 Patch contributed by imacat Fixed the Asian language work count. http://svn.apache.org/viewvc?view=revision&revision=1241345 Patch contributed by Pedro Giffuni i#20878 - Add comment with BZ issue for reference. http://svn.apache.org/viewvc?view=revision&revision=1244517 Patch contributed by Andre Fischer Do not add targets for junit tests when junit is disabled. http://svn.apache.org/viewvc?view=revision&revision=1241508 add writerperfect dependency.
2011-03-31 10:05:04 +02:00
// #i117863#
class SwSectionFrmMoveAndDeleteHint : public SfxSimpleHint
{
public:
SwSectionFrmMoveAndDeleteHint( const sal_Bool bSaveCntnt )
: SfxSimpleHint( SFX_HINT_DYING )
, mbSaveCntnt( bSaveCntnt )
{}
virtual ~SwSectionFrmMoveAndDeleteHint()
{}
sal_Bool IsSaveCntnt() const
{
return mbSaveCntnt;
}
private:
const sal_Bool mbSaveCntnt;
};
2000-09-18 16:15:01 +00:00
enum SectionSort { SORTSECT_NOT, SORTSECT_NAME, SORTSECT_POS };
class SW_DLLPUBLIC SwSectionFmt
: public SwFrmFmt
, public ::sfx2::Metadatable
2000-09-18 16:15:01 +00:00
{
friend class SwDoc;
2011-04-18 20:18:04 +02:00
/** Why does this exist in addition to the m_wXObject in SwFrmFmt?
in case of an index, both a SwXDocumentIndex and a SwXTextSection
register at this SwSectionFmt, so we need to have two refs.
*/
::com::sun::star::uno::WeakReference<
::com::sun::star::text::XTextSection> m_wXTextSection;
SAL_DLLPRIVATE void UpdateParent(); // Parent has been changed.
2000-09-18 16:15:01 +00:00
protected:
SwSectionFmt( SwSectionFmt* pDrvdFrm, SwDoc *pDoc );
virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) SAL_OVERRIDE;
2000-09-18 16:15:01 +00:00
public:
TYPEINFO_OVERRIDE(); // Already contained in base class client.
virtual ~SwSectionFmt();
2000-09-18 16:15:01 +00:00
2011-04-18 20:18:04 +02:00
// Deletes all Frms in aDepend (Frms are recognized via PTR_CAST).
virtual void DelFrms() SAL_OVERRIDE;
2000-09-18 16:15:01 +00:00
2011-04-18 20:18:04 +02:00
// Creates views.
virtual void MakeFrms() SAL_OVERRIDE;
2000-09-18 16:15:01 +00:00
2011-04-18 20:18:04 +02:00
// Get information from Format.
virtual bool GetInfo( SfxPoolItem& ) const SAL_OVERRIDE;
2000-09-18 16:15:01 +00:00
SwSection* GetSection() const;
2000-09-18 16:15:01 +00:00
inline SwSectionFmt* GetParent() const;
inline SwSection* GetParentSection() const;
2011-04-18 20:18:04 +02:00
// All sections that are derived from this one:
// - sorted according to name or position or unsorted
// - all of them or only those that are in the normal Nodes-array.
sal_uInt16 GetChildSections( SwSections& rArr,
2000-09-18 16:15:01 +00:00
SectionSort eSort = SORTSECT_NOT,
sal_Bool bAllSections = sal_True ) const;
2000-09-18 16:15:01 +00:00
2011-04-18 20:18:04 +02:00
// Query whether section is in Nodes-array or in UndoNodes-array.
sal_Bool IsInNodesArr() const;
2000-09-18 16:15:01 +00:00
SwSectionNode* GetSectionNode(bool const bEvenIfInUndo = false);
const SwSectionNode* GetSectionNode(bool const bEvenIfInUndo = false) const
{ return const_cast<SwSectionFmt *>(this)
->GetSectionNode(bEvenIfInUndo); }
2000-09-18 16:15:01 +00:00
2011-04-18 20:18:04 +02:00
// Is section a valid one for global document?
2000-09-18 16:15:01 +00:00
const SwSection* GetGlobalDocSection() const;
SAL_DLLPRIVATE ::com::sun::star::uno::WeakReference<
::com::sun::star::text::XTextSection> const& GetXTextSection() const
{ return m_wXTextSection; }
SAL_DLLPRIVATE void SetXTextSection(::com::sun::star::uno::Reference<
::com::sun::star::text::XTextSection> const& xTextSection)
{ m_wXTextSection = xTextSection; }
// sfx2::Metadatable
virtual ::sfx2::IXmlIdRegistry& GetRegistry() SAL_OVERRIDE;
virtual bool IsInClipboard() const SAL_OVERRIDE;
virtual bool IsInUndo() const SAL_OVERRIDE;
virtual bool IsInContent() const SAL_OVERRIDE;
virtual ::com::sun::star::uno::Reference<
::com::sun::star::rdf::XMetadatable > MakeUnoObject() SAL_OVERRIDE;
2000-09-18 16:15:01 +00:00
};
// -------------- inlines ---------------------------------
inline SwSection* SwSection::GetParent() const
{
SwSectionFmt* pFmt = GetFmt();
SwSection* pRet = 0;
2000-09-18 16:15:01 +00:00
if( pFmt )
pRet = pFmt->GetParentSection();
return pRet;
}
inline SwSectionFmt* SwSectionFmt::GetParent() const
{
SwSectionFmt* pRet = 0;
2000-09-18 16:15:01 +00:00
if( GetRegisteredIn() )
pRet = PTR_CAST( SwSectionFmt, GetRegisteredIn() );
return pRet;
}
inline SwSection* SwSectionFmt::GetParentSection() const
{
SwSectionFmt* pParent = GetParent();
SwSection* pRet = 0;
2000-09-18 16:15:01 +00:00
if( pParent )
{
pRet = pParent->GetSection();
}
2000-09-18 16:15:01 +00:00
return pRet;
}
#endif /* _ INCLUDED_SW_INC_SECTION_HXX */
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */