Table of contents navigation.
[mebook:mebook.git] / generators / epubgenerator.h
1 #ifndef EPUBGENERATOR_H
2 #define EPUBGENERATOR_H
3
4 #include <QHash>
5 #include <QTextBlock>
6
7 #include "core/documentgenerator.h"
8 #include <epub.h>
9
10 #include "epubdocument.h"
11
12 class EpubResourceReply : public QNetworkReply
13 {
14     Q_OBJECT
15 public:
16     EpubResourceReply(QObject *parent, struct epub *nEpub, const QNetworkRequest &req);
17     qint64 bytesAvailable() const;
18     void abort();
19     bool isSequential() const { return true; }
20 protected:
21     qint64 readData(char *data, qint64 maxSize);
22 private:
23     struct epub *mEpub;
24     QUrl requestUrl;
25     int contentSize;
26     qint64 offset;
27     char *buffer;
28 };
29
30
31 class EpubGenerator : public DocumentGenerator
32 {
33     Q_OBJECT
34 public:
35     EpubGenerator(QObject *parent = 0);
36     ~EpubGenerator();
37
38     QString getMetadata(enum epub_metadata type);
39     void generate(const QString &filename);
40
41 /*protected:
42     qint64 readData(char *data, qint64 maxSize);
43     void abort();*/
44 protected:
45     QNetworkReply* createRequest(Operation op, const QNetworkRequest &req, QIODevice* outgoingData = 0);
46
47 private:
48     QHash<QString, QString> epubDocument;
49     struct epub *mEpub;
50
51 signals:
52     void setTitle(QString);
53     void setAuthor(QString);
54     void setPublisher(QString);
55     void setDescription(QString);
56     void setSubject(QString);
57     void setPublishDate(QString);
58     void setCategory(QString);
59     void setCopyright(QString);
60
61     void addChapter(QString, QString*);
62     void addTOCItem(QString);
63     void addSection(QString*);
64 };
65
66
67 #endif