File indexing completed on 2024-05-12 16:06:43

0001 /*
0002     SPDX-FileCopyrightText: 2007 Tobias Koenig <tokoe@kde.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #ifndef FICTIONBOOK_CONVERTER_H
0008 #define FICTIONBOOK_CONVERTER_H
0009 
0010 #include <core/textdocumentgenerator.h>
0011 
0012 class QDomElement;
0013 class QTextCharFormat;
0014 class QTextCursor;
0015 class QTextTable;
0016 
0017 namespace FictionBook
0018 {
0019 class Converter : public Okular::TextDocumentConverter
0020 {
0021     Q_OBJECT
0022 
0023 public:
0024     Converter();
0025     ~Converter() override;
0026 
0027     QTextDocument *convert(const QString &fileName) override;
0028 
0029 private:
0030     bool convertBody(const QDomElement &element);
0031     bool convertDescription(const QDomElement &element);
0032     bool convertSection(const QDomElement &element);
0033     bool convertTitle(const QDomElement &element);
0034     bool convertParagraph(const QDomElement &element);
0035     bool convertBinary(const QDomElement &element);
0036     bool convertCover(const QDomElement &element);
0037     bool convertImage(const QDomElement &element);
0038     bool convertEpigraph(const QDomElement &element);
0039     bool convertPoem(const QDomElement &element);
0040     bool convertSubTitle(const QDomElement &element);
0041     bool convertCite(const QDomElement &element);
0042     bool convertEmptyLine(const QDomElement &element);
0043     bool convertLink(const QDomElement &element);
0044     bool convertEmphasis(const QDomElement &element);
0045     bool convertStrong(const QDomElement &element);
0046     bool convertStrikethrough(const QDomElement &element);
0047     bool convertStyle(const QDomElement &element);
0048     bool convertStanza(const QDomElement &element);
0049     bool convertCode(const QDomElement &element);
0050     bool convertSuperScript(const QDomElement &element);
0051     bool convertSubScript(const QDomElement &element);
0052     bool convertTable(const QDomElement &element);
0053     bool convertTableRow(const QDomElement &element, QTextTable &table);
0054     bool convertTableHeaderCell(const QDomElement &element, QTextTable &table, int &column);
0055     bool convertTableCell(const QDomElement &element, QTextTable &table, int &column);
0056     bool convertTableCellHelper(const QDomElement &element, QTextTable &table, int &column, const QTextCharFormat &charFormat);
0057 
0058     bool convertTitleInfo(const QDomElement &element);
0059     bool convertDocumentInfo(const QDomElement &element);
0060     bool convertAuthor(const QDomElement &element, QString &firstName, QString &middleName, QString &lastName, QString &email, QString &nickname);
0061     bool convertDate(const QDomElement &element, QDate &date);
0062     bool convertTextNode(const QDomElement &element, QString &data);
0063     bool convertAnnotation(const QDomElement &element, QString &data);
0064 
0065     QTextDocument *mTextDocument;
0066     QTextCursor *mCursor;
0067 
0068     class TitleInfo;
0069     TitleInfo *mTitleInfo;
0070 
0071     class DocumentInfo;
0072     DocumentInfo *mDocumentInfo;
0073 
0074     int mSectionCounter;
0075 
0076     QMap<QString, QTextBlock> mSectionMap;
0077     QMap<QString, QPair<int, int>> mLocalLinks;
0078 };
0079 
0080 }
0081 
0082 #endif