File indexing completed on 2024-06-16 04:20:02

0001 /*
0002     Kchmviewer - a CHM and EPUB file viewer with broad language support
0003     SPDX-FileCopyrightText: 2004-2014 George Yunaev gyunaev@ulduzsoft.com
0004 
0005     SPDX-License-Identifier: GPL-3.0-or-later
0006 */
0007 
0008 #ifndef HELPERXMLHANDLER_EPUBCONTENT_H
0009 #define HELPERXMLHANDLER_EPUBCONTENT_H
0010 
0011 #include <QMap>
0012 #include <QString>
0013 #include <QXmlDefaultHandler>
0014 
0015 class HelperXmlHandler_EpubContent : public QXmlDefaultHandler
0016 {
0017 public:
0018     HelperXmlHandler_EpubContent();
0019 
0020     // Keep the tag-associated metadata
0021     QMap<QString, QString> metadata;
0022 
0023     // Manifest storage, id -> href
0024     QMap<QString, QString> manifest;
0025 
0026     // Spline storage
0027     QList<QString> spine;
0028 
0029     // TOC (NCX) filename
0030     QString tocname;
0031 
0032 private:
0033     enum State { STATE_NONE, STATE_IN_METADATA, STATE_IN_MANIFEST, STATE_IN_SPINE };
0034 
0035     bool startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts) override;
0036     bool characters(const QString &ch) override;
0037     bool endElement(const QString &namespaceURI, const QString &localName, const QString &qName) override;
0038 
0039     // Tracking
0040     State m_state;
0041     QString m_tagname;
0042 };
0043 
0044 #endif // HELPERXMLHANDLER_EPUBCONTENT_H