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
|
/* This file is part of the KDE project
* Copyright (C) 2010 Thomas Zander <zander@kde.org>
* Copyright (C) 2011 Pavol Korinek <pavol.korinek@ixonos.com>
* Copyright (C) 2011 Lukáš Tvrdý <lukas.tvrdy@ixonos.com>
* Copyright (C) 2011 Ko GmbH <cbo@kogmbh.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifndef TOCGENERATOR_H
#define TOCGENERATOR_H
#include <QTextBlock>
#include <QObject>
class KoTextRangeManager;
class KoTextDocumentLayout;
class KoTableOfContentsGeneratorInfo;
class QTextDocument;
class ToCGenerator : public QObject
{
Q_OBJECT
public:
explicit ToCGenerator(QTextDocument *tocDocument, KoTableOfContentsGeneratorInfo *tocInfo);
~ToCGenerator() override;
virtual void setBlock(const QTextBlock &block);
bool generate();
private:
QString resolvePageNumber(const QTextBlock &headingBlock);
void generateEntry(int outlineLevel, QTextCursor &cursor, QTextBlock &block, int &blockId);
QTextDocument *m_ToCDocument;
KoTableOfContentsGeneratorInfo *m_ToCInfo;
QTextBlock m_block;
QTextDocument *m_document;
KoTextDocumentLayout *m_documentLayout;
bool m_success;
bool m_preservePagebreak;
// Return the ref (name) of the first KoBookmark in the block, if KoBookmark not found, null QString is returned
QString fetchBookmarkRef(const QTextBlock &block, KoTextRangeManager *textRangeManager);
};
#endif
|