2010-10-14 08:30:41 +02:00
|
|
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
2011-03-31 10:05:04 +02:00
|
|
|
/*
|
|
|
|
* This file is part of the LibreOffice project.
|
2000-09-18 16:15:01 +00:00
|
|
|
*
|
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
|
|
|
*
|
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
|
|
|
*
|
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
|
|
|
|
2013-11-05 02:17:53 +01: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>
|
2010-03-16 11:28:30 +01:00
|
|
|
|
2001-03-08 20:28:23 +00:00
|
|
|
#include <tools/ref.hxx>
|
2016-09-22 22:20:48 +02:00
|
|
|
#include <svl/hint.hxx>
|
2010-03-16 11:28:35 +01:00
|
|
|
#include <sfx2/lnkbase.hxx>
|
|
|
|
#include <sfx2/Metadatable.hxx>
|
2010-03-16 11:28:30 +01:00
|
|
|
|
2017-10-23 22:30:30 +02:00
|
|
|
#include "frmfmt.hxx"
|
2012-05-16 10:18:27 +02:00
|
|
|
#include <vector>
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2010-01-08 17:13:51 +01:00
|
|
|
namespace com { namespace sun { namespace star {
|
|
|
|
namespace text { class XTextSection; }
|
|
|
|
} } }
|
|
|
|
|
2015-05-20 13:05:49 +02:00
|
|
|
class SwSectionFormat;
|
2000-09-18 16:15:01 +00:00
|
|
|
class SwDoc;
|
|
|
|
class SwSection;
|
2005-06-14 15:27:26 +00:00
|
|
|
class SwSectionNode;
|
2000-09-18 16:15:01 +00:00
|
|
|
class SwTOXBase;
|
2014-04-07 12:31:09 +02:00
|
|
|
class SwServerObject;
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2012-05-16 10:18:27 +02:00
|
|
|
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
|
|
|
};
|
|
|
|
|
2010-03-16 11:28:30 +01:00
|
|
|
class SW_DLLPUBLIC SwSectionData
|
|
|
|
{
|
|
|
|
private:
|
|
|
|
SectionType m_eType;
|
|
|
|
|
2013-08-15 16:08:35 +02:00
|
|
|
OUString m_sSectionName;
|
|
|
|
OUString m_sCondition;
|
|
|
|
OUString m_sLinkFileName;
|
|
|
|
OUString m_sLinkFilePassword; // Must be changed to Sequence.
|
2015-11-05 15:55:58 +02:00
|
|
|
css::uno::Sequence <sal_Int8> m_Password;
|
2010-03-16 11:28:30 +01:00
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
/// It seems this flag caches the current final "hidden" state.
|
2010-03-16 11:28:30 +01:00
|
|
|
bool m_bHiddenFlag : 1;
|
2011-04-18 20:18:04 +02:00
|
|
|
/// Flags that correspond to attributes in the format:
|
2010-03-16 11:28:30 +01:00
|
|
|
/// 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.
|
2010-03-16 11:28:30 +01:00
|
|
|
bool m_bEditInReadonlyFlag : 1;
|
2010-11-15 11:59:57 +00:00
|
|
|
|
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?
|
2010-03-16 11:28:30 +01:00
|
|
|
|
|
|
|
public:
|
|
|
|
|
2013-08-15 16:08:35 +02:00
|
|
|
SwSectionData(SectionType const eType, OUString const& rName);
|
2010-03-16 11:28:30 +01:00
|
|
|
explicit SwSectionData(SwSection const&);
|
|
|
|
SwSectionData(SwSectionData const&);
|
|
|
|
SwSectionData & operator=(SwSectionData const&);
|
|
|
|
bool operator==(SwSectionData const&) const;
|
|
|
|
|
2016-04-13 15:33:00 +02:00
|
|
|
const OUString& GetSectionName() const { return m_sSectionName; }
|
2013-08-15 16:08:35 +02:00
|
|
|
void SetSectionName(OUString const& rName){ m_sSectionName = rName; }
|
2010-03-16 11:28:30 +01:00
|
|
|
SectionType GetType() const { return m_eType; }
|
|
|
|
void SetType(SectionType const eNew) { m_eType = eNew; }
|
|
|
|
|
|
|
|
bool IsHidden() const { return m_bHidden; }
|
2016-08-18 14:34:31 +02:00
|
|
|
void SetHidden(bool const bFlag) { m_bHidden = bFlag; }
|
2010-03-16 11:28:30 +01:00
|
|
|
|
|
|
|
bool IsHiddenFlag() const { return m_bHiddenFlag; }
|
2014-02-03 14:43:37 +01:00
|
|
|
SAL_DLLPRIVATE void
|
2010-03-16 11:28:30 +01:00
|
|
|
SetHiddenFlag(bool const bFlag) { m_bHiddenFlag = bFlag; }
|
|
|
|
bool IsProtectFlag() const { return m_bProtectFlag; }
|
2014-02-03 14:43:37 +01:00
|
|
|
SAL_DLLPRIVATE void
|
2010-03-16 11:28:30 +01:00
|
|
|
SetProtectFlag(bool const bFlag) { m_bProtectFlag = bFlag; }
|
|
|
|
bool IsEditInReadonlyFlag() const { return m_bEditInReadonlyFlag; }
|
|
|
|
void SetEditInReadonlyFlag(bool const bFlag)
|
|
|
|
{ m_bEditInReadonlyFlag = bFlag; }
|
|
|
|
|
2016-08-18 14:34:31 +02:00
|
|
|
void SetCondHidden(bool const bFlag) { m_bCondHiddenFlag = bFlag; }
|
2010-03-16 11:28:30 +01:00
|
|
|
bool IsCondHidden() const { return m_bCondHiddenFlag; }
|
|
|
|
|
2016-04-13 15:33:00 +02:00
|
|
|
const OUString& GetCondition() const { return m_sCondition; }
|
2013-08-15 16:08:35 +02:00
|
|
|
void SetCondition(OUString const& rNew) { m_sCondition = rNew; }
|
2010-03-16 11:28:30 +01:00
|
|
|
|
2016-04-13 15:33:00 +02:00
|
|
|
const OUString& GetLinkFileName() const { return m_sLinkFileName; }
|
2016-02-29 10:59:14 +02:00
|
|
|
void SetLinkFileName(OUString const& rNew)
|
2010-03-16 11:28:30 +01:00
|
|
|
{
|
|
|
|
m_sLinkFileName = rNew;
|
|
|
|
}
|
|
|
|
|
2016-04-13 15:33:00 +02:00
|
|
|
const OUString& GetLinkFilePassword() const { return m_sLinkFilePassword; }
|
2013-08-15 16:08:35 +02:00
|
|
|
void SetLinkFilePassword(OUString const& rS){ m_sLinkFilePassword = rS; }
|
2010-03-16 11:28:30 +01:00
|
|
|
|
2015-11-05 15:55:58 +02:00
|
|
|
css::uno::Sequence<sal_Int8> const& GetPassword() const
|
2010-03-16 11:28:30 +01:00
|
|
|
{ return m_Password; }
|
2015-11-05 15:55:58 +02:00
|
|
|
void SetPassword(css::uno::Sequence<sal_Int8> const& rNew)
|
2010-03-16 11:28:30 +01:00
|
|
|
{ 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
|
|
|
|
2010-03-16 11:28:30 +01:00
|
|
|
bool IsConnectFlag() const { return m_bConnectFlag; }
|
2016-08-18 14:34:31 +02:00
|
|
|
void SetConnectFlag(bool const bFlag){ m_bConnectFlag = bFlag; }
|
2013-08-15 20:10:00 +02:00
|
|
|
|
2014-03-17 09:14:55 +02:00
|
|
|
static OUString CollapseWhiteSpaces(const OUString& sName);
|
2010-03-16 11:28:30 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
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;
|
2015-11-25 06:03:10 -05:00
|
|
|
// The "read CTOR" of SwSectionFrame have to change the Hiddenflag.
|
|
|
|
friend class SwSectionFrame;
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2010-03-16 11:28:30 +01:00
|
|
|
private:
|
2013-08-15 16:24:25 +02:00
|
|
|
mutable SwSectionData m_Data;
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2014-07-04 10:31:22 +02:00
|
|
|
tools::SvRef<SwServerObject> m_RefObj; // Set if DataServer.
|
2015-10-27 08:55:31 +02:00
|
|
|
tools::SvRef<sfx2::SvBaseLink> m_RefLink;
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2014-02-03 14:43:37 +01:00
|
|
|
SAL_DLLPRIVATE void ImplSetHiddenFlag(
|
2010-03-16 11:28:30 +01:00
|
|
|
bool const bHidden, bool const bCondition);
|
2004-11-16 09:19:29 +00:00
|
|
|
|
2010-12-17 09:02:23 +01:00
|
|
|
protected:
|
2015-10-12 16:04:04 +02:00
|
|
|
virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) override;
|
2010-12-17 09:02:23 +01:00
|
|
|
|
2000-09-18 16:15:01 +00:00
|
|
|
public:
|
|
|
|
|
2013-08-15 16:08:35 +02:00
|
|
|
SwSection(SectionType const eType, OUString const& rName,
|
2015-05-20 13:05:49 +02:00
|
|
|
SwSectionFormat & rFormat);
|
2016-09-13 13:09:01 +02:00
|
|
|
virtual ~SwSection() override;
|
2010-03-16 11:28:30 +01:00
|
|
|
|
|
|
|
bool DataEquals(SwSectionData const& rCmp) const;
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2010-03-16 11:28:30 +01:00
|
|
|
void SetSectionData(SwSectionData const& rData);
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2017-12-20 13:28:53 +02:00
|
|
|
const OUString& GetSectionName() const { return m_Data.GetSectionName(); }
|
2013-08-15 16:08:35 +02:00
|
|
|
void SetSectionName(OUString const& rName){ m_Data.SetSectionName(rName); }
|
2010-03-16 11:28:30 +01:00
|
|
|
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
|
|
|
|
2015-05-20 13:05:49 +02:00
|
|
|
inline SwSectionFormat* GetFormat();
|
|
|
|
inline SwSectionFormat const * GetFormat() const;
|
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.)
|
2010-03-16 11:28:30 +01:00
|
|
|
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);
|
2004-11-16 09:19:29 +00:00
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
// Get internal flags (state including parents, not what is
|
|
|
|
// currently set at section!).
|
2010-03-16 11:28:30 +01:00
|
|
|
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
|
|
|
|
2016-08-18 14:34:31 +02:00
|
|
|
void SetCondHidden(bool const bFlag);
|
2010-03-16 11:28:30 +01:00
|
|
|
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.
|
2014-04-25 14:00:35 +02:00
|
|
|
bool CalcHiddenFlag() const;
|
2000-09-18 16:15:01 +00:00
|
|
|
|
|
|
|
inline SwSection* GetParent() const;
|
|
|
|
|
2017-12-31 21:34:58 +02:00
|
|
|
OUString const & GetCondition() const { return m_Data.GetCondition(); }
|
2013-08-15 16:08:35 +02:00
|
|
|
void SetCondition(OUString const& rNew) { m_Data.SetCondition(rNew); }
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2017-12-31 21:34:58 +02:00
|
|
|
OUString const & GetLinkFileName() const;
|
2016-02-29 10:59:14 +02:00
|
|
|
void SetLinkFileName(OUString const& rNew);
|
2011-04-18 20:18:04 +02:00
|
|
|
// Password of linked file (only valid during runtime!)
|
2017-12-31 21:34:58 +02:00
|
|
|
OUString const & GetLinkFilePassword() const
|
2010-03-16 11:28:30 +01:00
|
|
|
{ return m_Data.GetLinkFilePassword(); }
|
2013-08-15 16:08:35 +02:00
|
|
|
void SetLinkFilePassword(OUString const& rS)
|
2010-03-16 11:28:30 +01:00
|
|
|
{ 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
|
2015-11-05 15:55:58 +02:00
|
|
|
css::uno::Sequence<sal_Int8> const& GetPassword() const
|
2010-03-16 11:28:30 +01:00
|
|
|
{ return m_Data.GetPassword(); }
|
2001-02-27 17:46:19 +00:00
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
// Data server methods.
|
2001-03-08 20:28:23 +00:00
|
|
|
void SetRefObject( SwServerObject* pObj );
|
2016-10-12 20:04:41 +02:00
|
|
|
const SwServerObject* GetObject() const { return m_RefObj.get(); }
|
|
|
|
SwServerObject* GetObject() { return m_RefObj.get(); }
|
2017-01-25 12:03:58 +02:00
|
|
|
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.
|
2015-03-23 14:23:01 +02:00
|
|
|
SfxLinkUpdateMode GetUpdateType() const { return m_RefLink->GetUpdateMode(); }
|
|
|
|
void SetUpdateType(SfxLinkUpdateMode nType )
|
2010-03-16 11:28:31 +01:00
|
|
|
{ m_RefLink->SetUpdateMode(nType); }
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2017-01-25 12:03:58 +02:00
|
|
|
bool IsConnected() const { return m_RefLink.is(); }
|
2010-03-16 11:28:31 +01:00
|
|
|
void UpdateNow() { m_RefLink->Update(); }
|
|
|
|
void Disconnect() { m_RefLink->Disconnect(); }
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2010-03-16 11:28:31 +01: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 );
|
|
|
|
|
2015-05-04 10:29:18 +02:00
|
|
|
static void MakeChildLinksVisible( const SwSectionNode& rSectNd );
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2010-03-16 11:28:30 +01:00
|
|
|
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?
|
2010-03-16 11:28:30 +01:00
|
|
|
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;
|
|
|
|
|
2007-05-10 08:14:42 +00:00
|
|
|
void BreakLink();
|
2010-03-16 11:28:30 +01:00
|
|
|
|
2000-09-18 16:15:01 +00:00
|
|
|
};
|
|
|
|
|
2011-03-31 10:05:04 +02:00
|
|
|
// #i117863#
|
2016-09-22 22:20:48 +02:00
|
|
|
class SwSectionFrameMoveAndDeleteHint : public SfxHint
|
2011-05-13 15:44:49 +02:00
|
|
|
{
|
|
|
|
public:
|
2015-11-25 06:03:10 -05:00
|
|
|
SwSectionFrameMoveAndDeleteHint( const bool bSaveContent )
|
2016-12-08 10:26:01 +02:00
|
|
|
: SfxHint( SfxHintId::Dying )
|
2015-05-20 13:05:49 +02:00
|
|
|
, mbSaveContent( bSaveContent )
|
2011-05-13 15:44:49 +02:00
|
|
|
{}
|
|
|
|
|
2015-05-20 13:05:49 +02:00
|
|
|
bool IsSaveContent() const
|
2011-05-13 15:44:49 +02:00
|
|
|
{
|
2015-05-20 13:05:49 +02:00
|
|
|
return mbSaveContent;
|
2011-05-13 15:44:49 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
private:
|
2015-05-20 13:05:49 +02:00
|
|
|
const bool mbSaveContent;
|
2011-05-13 15:44:49 +02:00
|
|
|
};
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2017-02-10 12:37:10 +02:00
|
|
|
enum class SectionSort { Not, Pos };
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2015-05-20 13:05:49 +02:00
|
|
|
class SW_DLLPUBLIC SwSectionFormat
|
|
|
|
: public SwFrameFormat
|
2010-03-16 11:28:35 +01:00
|
|
|
, public ::sfx2::Metadatable
|
2000-09-18 16:15:01 +00:00
|
|
|
{
|
|
|
|
friend class SwDoc;
|
2004-08-23 07:38:00 +00:00
|
|
|
|
2015-05-20 13:05:49 +02:00
|
|
|
/** Why does this exist in addition to the m_wXObject in SwFrameFormat?
|
2010-01-08 17:13:51 +01:00
|
|
|
in case of an index, both a SwXDocumentIndex and a SwXTextSection
|
2015-05-20 13:05:49 +02:00
|
|
|
register at this SwSectionFormat, so we need to have two refs.
|
2010-01-08 17:13:51 +01:00
|
|
|
*/
|
2015-11-05 15:55:58 +02:00
|
|
|
css::uno::WeakReference<css::text::XTextSection> m_wXTextSection;
|
2010-01-08 17:13:51 +01:00
|
|
|
|
2014-02-03 14:43:37 +01:00
|
|
|
SAL_DLLPRIVATE void UpdateParent(); // Parent has been changed.
|
2000-09-18 16:15:01 +00:00
|
|
|
|
|
|
|
protected:
|
2015-11-25 06:03:10 -05:00
|
|
|
SwSectionFormat( SwFrameFormat* pDrvdFrame, SwDoc *pDoc );
|
2016-12-08 09:25:32 +01:00
|
|
|
virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) override;
|
2000-09-18 16:15:01 +00:00
|
|
|
|
|
|
|
public:
|
2016-09-13 13:09:01 +02:00
|
|
|
virtual ~SwSectionFormat() override;
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2015-11-25 06:03:10 -05:00
|
|
|
// Deletes all Frames in aDepend (Frames are recognized via dynamic_cast).
|
|
|
|
virtual void DelFrames() override;
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
// Creates views.
|
2015-11-25 06:03:10 -05:00
|
|
|
virtual void MakeFrames() override;
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
// Get information from Format.
|
2015-10-12 16:04:04 +02:00
|
|
|
virtual bool GetInfo( SfxPoolItem& ) const override;
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2010-03-16 11:28:35 +01:00
|
|
|
SwSection* GetSection() const;
|
2015-05-20 13:05:49 +02:00
|
|
|
inline SwSectionFormat* GetParent() const;
|
2000-09-18 16:15:01 +00:00
|
|
|
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.
|
2015-03-01 19:10:46 +01:00
|
|
|
void GetChildSections( SwSections& rArr,
|
2017-02-10 12:37:10 +02:00
|
|
|
SectionSort eSort = SectionSort::Not,
|
2014-04-25 14:00:35 +02:00
|
|
|
bool bAllSections = 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.
|
2014-04-25 14:00:35 +02:00
|
|
|
bool IsInNodesArr() const;
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2016-03-04 09:24:56 +02:00
|
|
|
SwSectionNode* GetSectionNode();
|
2016-02-29 10:59:14 +02:00
|
|
|
const SwSectionNode* GetSectionNode() const
|
2015-05-20 13:05:49 +02:00
|
|
|
{ return const_cast<SwSectionFormat *>(this)
|
2016-02-29 10:59:14 +02:00
|
|
|
->GetSectionNode(); }
|
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;
|
2010-01-08 17:13:51 +01:00
|
|
|
|
2015-11-05 15:55:58 +02:00
|
|
|
SAL_DLLPRIVATE css::uno::WeakReference<css::text::XTextSection> const& GetXTextSection() const
|
2010-01-08 17:13:51 +01:00
|
|
|
{ return m_wXTextSection; }
|
2015-11-05 15:55:58 +02:00
|
|
|
SAL_DLLPRIVATE void SetXTextSection(css::uno::Reference<css::text::XTextSection> const& xTextSection)
|
2010-01-08 17:13:51 +01:00
|
|
|
{ m_wXTextSection = xTextSection; }
|
|
|
|
|
2010-03-16 11:28:35 +01:00
|
|
|
// sfx2::Metadatable
|
2015-10-12 16:04:04 +02:00
|
|
|
virtual ::sfx2::IXmlIdRegistry& GetRegistry() override;
|
|
|
|
virtual bool IsInClipboard() const override;
|
|
|
|
virtual bool IsInUndo() const override;
|
|
|
|
virtual bool IsInContent() const override;
|
2015-11-05 15:55:58 +02:00
|
|
|
virtual css::uno::Reference< css::rdf::XMetadatable > MakeUnoObject() override;
|
2015-02-16 09:19:03 +01:00
|
|
|
void dumpAsXml(struct _xmlTextWriter* pWriter) const;
|
2010-03-16 11:28:35 +01:00
|
|
|
|
2000-09-18 16:15:01 +00:00
|
|
|
};
|
|
|
|
|
2015-05-20 13:05:49 +02:00
|
|
|
SwSectionFormat* SwSection::GetFormat()
|
2015-01-22 08:11:58 +01:00
|
|
|
{
|
2015-05-20 13:05:49 +02:00
|
|
|
return static_cast<SwSectionFormat*>(GetRegisteredIn());
|
2015-01-22 08:11:58 +01:00
|
|
|
}
|
|
|
|
|
2015-05-20 13:05:49 +02:00
|
|
|
SwSectionFormat const * SwSection::GetFormat() const
|
2015-01-22 08:11:58 +01:00
|
|
|
{
|
2015-05-20 13:05:49 +02:00
|
|
|
return static_cast<SwSectionFormat const *>(GetRegisteredIn());
|
2015-01-22 08:11:58 +01:00
|
|
|
}
|
|
|
|
|
2000-09-18 16:15:01 +00:00
|
|
|
inline SwSection* SwSection::GetParent() const
|
|
|
|
{
|
2015-05-20 13:05:49 +02:00
|
|
|
SwSectionFormat const * pFormat = GetFormat();
|
2015-11-10 10:25:48 +01:00
|
|
|
SwSection* pRet = nullptr;
|
2015-05-20 13:05:49 +02:00
|
|
|
if( pFormat )
|
|
|
|
pRet = pFormat->GetParentSection();
|
2000-09-18 16:15:01 +00:00
|
|
|
return pRet;
|
|
|
|
}
|
|
|
|
|
2015-05-20 13:05:49 +02:00
|
|
|
inline SwSectionFormat* SwSectionFormat::GetParent() const
|
2000-09-18 16:15:01 +00:00
|
|
|
{
|
2015-11-10 10:25:48 +01:00
|
|
|
SwSectionFormat* pRet = nullptr;
|
2000-09-18 16:15:01 +00:00
|
|
|
if( GetRegisteredIn() )
|
2015-09-30 16:10:07 +02:00
|
|
|
pRet = const_cast<SwSectionFormat*>(dynamic_cast< const SwSectionFormat* >( GetRegisteredIn() ));
|
2000-09-18 16:15:01 +00:00
|
|
|
return pRet;
|
|
|
|
}
|
|
|
|
|
2015-05-20 13:05:49 +02:00
|
|
|
inline SwSection* SwSectionFormat::GetParentSection() const
|
2000-09-18 16:15:01 +00:00
|
|
|
{
|
2015-05-20 13:05:49 +02:00
|
|
|
SwSectionFormat* pParent = GetParent();
|
2015-11-10 10:25:48 +01:00
|
|
|
SwSection* pRet = nullptr;
|
2000-09-18 16:15:01 +00:00
|
|
|
if( pParent )
|
2010-03-16 11:28:35 +01:00
|
|
|
{
|
|
|
|
pRet = pParent->GetSection();
|
|
|
|
}
|
2000-09-18 16:15:01 +00:00
|
|
|
return pRet;
|
|
|
|
}
|
|
|
|
|
2013-11-05 02:17:53 +01:00
|
|
|
#endif /* _ INCLUDED_SW_INC_SECTION_HXX */
|
2010-10-14 08:30:41 +02:00
|
|
|
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|