1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
|
/*
* SPDX-FileCopyrightText: 2011 Boudewijn Rempt <boud@valdyas.org>
* SPDX-FileCopyrightText: 2014-2015 Denis Kuplyakov <dener.kup@gmail.com>
*
* SPDX-License-Identifier: LGPL-2.1-or-later
*/
#ifndef KOSECTION_H
#define KOSECTION_H
#include "kotext_export.h"
#include <QList>
#include <QMetaType>
#include <QPair>
#include <QScopedPointer>
#include <QString>
#include <QTextCursor>
class KoXmlElement;
class KoShapeSavingContext;
class KoTextSharedLoadingData;
class KoSectionEnd;
class KoElementReference;
class KoTextInlineRdf;
class KoSectionPrivate;
/**
* Contains the information about the current text:section.
*
* The <text:section> element has the following attributes:
*
* <ul>
* <li>text:condition
* <li>text:display
* <li>text:name
* <li>text:protected
* <li>text:protection-key
* <li>text:protection-key-digest-algorithm
* <li>text:style-name
* <li>xml:id
* </ul>
* (odf spec v.12)
*/
class KOTEXT_EXPORT KoSection
{
public:
~KoSection();
/// Returns section name
QString name() const;
/// Returns starting and ending position of section in QTextDocument
QPair<int, int> bounds() const;
/// Returns section level. Root section has @c 0 level.
int level() const;
/** Returns inlineRdf associated with section
* @return pointer to the KoTextInlineRdf for this section
*/
KoTextInlineRdf *inlineRdf() const;
/** Sets KoTextInlineRdf for this section
* @param inlineRdf pointer to KoTextInlineRdf to set
*/
void setInlineRdf(KoTextInlineRdf *inlineRdf);
bool loadOdf(const KoXmlElement &element, KoTextSharedLoadingData *sharedData, bool stylesDotXml);
void saveOdf(KoShapeSavingContext &context) const;
protected:
const QScopedPointer<KoSectionPrivate> d_ptr;
private:
Q_DISABLE_COPY(KoSection)
Q_DECLARE_PRIVATE(KoSection)
explicit KoSection(const QTextCursor &cursor, const QString &name, KoSection *parent);
/// Changes section's name to @param name
void setName(const QString &name);
/// Sets paired KoSectionsEnd for this section.
void setSectionEnd(KoSectionEnd *sectionEnd);
/**
* Sets level of section in section tree.
* Root sections have @c 0 level.
*/
void setLevel(int level);
/// Returns a pointer to the parent of the section in tree.
KoSection *parent() const;
/// Returns a vector of pointers to the children of the section.
QVector<KoSection *> children() const;
/**
* Specifies if end bound of section should stay on place when inserting text.
* Used by KoTextLoader on document loading.
* @see QTextCursor::setKeepPositionOnInsert(bool)
*/
void setKeepEndBound(bool state);
/**
* Inserts @param section to position @param childIdx of children
*/
void insertChild(int childIdx, KoSection *section);
/**
* Removes child on position @param childIdx
*/
void removeChild(int childIdx);
friend class KoSectionModel;
friend class KoTextLoader; // accesses setKeepEndBound() function
friend class KoSectionEnd;
friend class TestKoTextEditor; // accesses setKeepEndBound() function
};
Q_DECLARE_METATYPE(KoSection *)
Q_DECLARE_METATYPE(QList<KoSection *>)
#endif // KOSECTION_H
|