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