Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  content.hxx   Sprache: C

 
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * 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/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   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 .
 */

#ifndef INCLUDED_SW_SOURCE_UIBASE_INC_CONTENT_HXX
#define INCLUDED_SW_SOURCE_UIBASE_INC_CONTENT_HXX
#include <memory>
#include "swcont.hxx"

#include <ndarr.hxx>
#include <fmtfld.hxx>
#include <tools/long.hxx>
#include <utility>

class SwWrtShell;
class SwContentArr;
class SwContentType;
class SwFormatField;
class SwTextINetFormat;
class SwTOXBase;
class SwTextFootnote;

//  helper classes

class SwOutlineContent final : public SwContent
{
    SwOutlineNodes::size_type m_nOutlinePos;
    sal_uInt8   m_nOutlineLevel;
    bool    m_bIsMoveable;
    public:
        SwOutlineContent(   const SwContentType* pCnt,
                            const OUString& rName,
                            SwOutlineNodes::size_type nArrPos,
                            sal_uInt8 nLevel,
                            bool bMove,
                            double nYPos) :
            SwContent(pCnt, rName, nYPos),
            m_nOutlinePos(nArrPos), m_nOutlineLevel(nLevel), m_bIsMoveable(bMove) {}

    SwOutlineNodes::size_type GetOutlinePos() const {return m_nOutlinePos;}
    sal_uInt8   GetOutlineLevel() const {return m_nOutlineLevel;}
    bool        IsMoveable() const {return m_bIsMoveable;};
};

class SwRegionContent final : public SwContent
{

    sal_uInt8   m_nRegionLevel;
    const SwSectionFormat* m_pSectionFormat;

    public:
        SwRegionContent(    const SwContentType* pCnt,
                            const OUString& rName,
                            sal_uInt8 nLevel,
                            tools::Long nYPos,
                            const SwSectionFormat* pSectionFormat) :
            SwContent(pCnt, rName, nYPos),
                        m_nRegionLevel(nLevel), m_pSectionFormat(pSectionFormat){}
    sal_uInt8   GetRegionLevel() const {return m_nRegionLevel;}
    const SwSectionFormat* GetSectionFormat() const {return m_pSectionFormat;}

    bool IsProtect() const override;
};

class SwURLFieldContent final : public SwContent
{
    OUString m_sURL;
    const SwTextINetFormat* m_pINetAttr;

public:
    SwURLFieldContent(  const SwContentType* pCnt,
                            const OUString& rName,
                            OUString aURL,
                            const SwTextINetFormat* pAttr,
                            tools::Long nYPos )
        : SwContent( pCnt, rName, nYPos ), m_sURL(std::move( aURL )), m_pINetAttr( pAttr )
    {}

    virtual bool        IsProtect() const override;
    const OUString&     GetURL()    const   { return m_sURL; }
    const SwTextINetFormat* GetINetAttr() const { return m_pINetAttr; }
};

class SwTextFieldContent final : public SwContent
{
    const SwFormatField* m_pFormatField;
public:
    SwTextFieldContent(const SwContentType* pCnt,
                       const OUString& rName,
                       const SwFormatField* pFormatField,
                       tools::Long nYPos)
        : SwContent(pCnt, rName, nYPos),
          m_pFormatField(pFormatField)
    {}

    const SwFormatField* GetFormatField() const {return m_pFormatField;}
    virtual bool IsProtect() const override;
};

class SwTextFootnoteContent final : public SwContent
{
    const SwTextFootnote* m_pTextFootnote;
public:
    SwTextFootnoteContent(const SwContentType* pCnt,
                          const OUString& rName,
                          const SwTextFootnote* pTextFootnote,
                          tools::Long nYPos)
        : SwContent(pCnt, rName, nYPos),
          m_pTextFootnote(pTextFootnote)
    {}

    const SwTextFootnote* GetTextFootnote() const {return m_pTextFootnote;}
};

class SwPostItContent final : public SwContent, public SfxListener
{
    const SwFormatField*     m_pField;
public:
    SwPostItContent( const SwContentType* pCnt,
                            const OUString& rName,
                            const SwFormatField* pFormatField,
                            tools::Long nYPos )
        : SwContent(pCnt, rName, nYPos)
        , m_pField(pFormatField)
    {
        assert(m_pField);
        StartListening(*const_cast<SwFormatField*>(m_pField));
    }

    virtual void Notify(SfxBroadcaster &, SfxHint const& rHint) override
    {
        if (rHint.GetId() == SfxHintId::Dying)
        {
            m_pField = nullptr;
        }
    }

    const SwFormatField* GetPostIt() const  { return m_pField; }
    SwPostItField const* GetPostItField() const;
    virtual bool    IsProtect()     const override;
};

class SwGraphicContent final : public SwContent
{
    OUString      m_sLink;
public:
    SwGraphicContent(const SwContentType* pCnt, const OUString& rName, OUString aLink, tools::Long nYPos)
        : SwContent( pCnt, rName, nYPos ), m_sLink(std::move( aLink ))
        {}
    virtual ~SwGraphicContent() override;

    const OUString&   GetLink() const {return m_sLink;}
};

class SwTOXBaseContent final : public SwContent
{
    const SwTOXBase* m_pBase;
public:
    SwTOXBaseContent(const SwContentType* pCnt, const OUString& rName, tools::Long nYPos, const SwTOXBase& rBase)
        : SwContent( pCnt, rName, nYPos ), m_pBase(&rBase)
        {}
    virtual ~SwTOXBaseContent() override;

    const SwTOXBase* GetTOXBase() const {return m_pBase;}
};

/**
 * Content type, knows it's contents and the WrtShell.
 *
 * The class ContentType contains information to one type of content.
 * MemberArray is only populated if the content is requested by
 * GetMember. It is reloaded after Invalidate() only if the content
 * should be read again.
*/

class SwContentType final : public SwTypeNumber
{
    SwWrtShell*         m_pWrtShell;
    std::unique_ptr<SwContentArr>
                        m_pMember;            // array for content
    OUString            m_sContentTypeName;   // name of content type
    OUString            m_sSingleContentTypeName; // name of content type, singular
    OUString            m_sTypeToken;         // attachment for URL
    size_t              m_nMemberCount;       // content count
    ContentTypeId       m_nContentType;       // content type's Id
    sal_uInt8           m_nOutlineLevel;
    bool                m_bDataValid :    1;
    bool                m_bEdit:          1;  // can this type be edited?
    bool                m_bDelete:        1;  // can this type be deleted?
    bool m_bRenamable = false;

    bool m_bAlphabeticSort = false;

        static OUString     RemoveNewline(const OUString&);
public:
        SwContentType(SwWrtShell* pParent, ContentTypeId nType, sal_uInt8 nLevel );
        virtual ~SwContentType() override;

        /** Fill the List of contents */
        void                FillMemberList(bool* pbContentChanged = nullptr);
        size_t              GetMemberCount() const
                                {return m_nMemberCount;};
        ContentTypeId       GetType() const {return m_nContentType;}

        /** Deliver content, for that if necessary fill the list */
        const SwContent*    GetMember(size_t nIndex);
        const OUString&     GetName() const {return m_sContentTypeName;}
        const OUString&     GetSingleName() const {return m_sSingleContentTypeName;}
        const OUString&     GetTypeToken() const{return m_sTypeToken;}

        void                SetOutlineLevel(sal_uInt8 nNew)
                            {
                                m_nOutlineLevel = nNew;
                                Invalidate();
                            }

        bool IsAlphabeticSort() const {return m_bAlphabeticSort;}
        void SetAlphabeticSort(bool bAlphabetic) {m_bAlphabeticSort = bAlphabetic;}

        void                Invalidate(); // only nMemberCount is read again

        bool                IsEditable() const {return m_bEdit;}
        bool                IsDeletable() const {return m_bDelete;}
        bool IsRenamable() const {return m_bRenamable;}
};

#endif

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Messung V0.5
C=96 H=92 G=93

¤ Dauer der Verarbeitung: 0.15 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge