4 #include <QXmlContentHandler>
9 /** XML content handler for NCX format. */
10 class NcxHandler: public QXmlContentHandler
13 bool endDocument() {return true;}
14 bool endPrefixMapping(const QString &) {return true;}
15 QString errorString() const {return "";}
16 bool ignorableWhitespace(const QString &) {return true;}
17 bool processingInstruction(const QString &, const QString &) {return true;}
18 void setDocumentLocator(QXmlLocator *) {}
19 bool skippedEntity(const QString &) {return true;}
20 bool startDocument() {return true;}
21 bool startPrefixMapping(const QString &, const QString &) {return true;}
23 NcxHandler(Book &b): book(b) {
24 book.chapters.clear();
27 bool characters(const QString &ch) {
32 bool endElement(const QString &namespaceUri, const QString &name,
33 const QString &qName) {
34 Trace t("NcxHandler::endElement" + name);
39 contentTitle = currentText;
40 } else if (name == "navPoint") {
41 t.trace(QString("url: ") + contentUrl);
42 t.trace(QString("title: ") + contentTitle);
43 t.trace(QString("id:") + contentId);
44 Book::ContentItem item;
45 item.href = book.rootPath() + "/" + contentUrl;
46 item.name = contentTitle;
47 book.content[contentId] = item;
48 book.chapters.append(contentId);
53 bool startElement(const QString &namespaceUri, const QString &name,
54 const QString &qName, const QXmlAttributes &attrs) {
58 if (name == "navPoint") {
59 contentId = attrs.value("id");
60 } else if (name == "content") {
61 contentUrl = attrs.value("src");
74 #endif // NCXHANDLER_H