27
#include "generated/leinputstream.h"
27
29
#include "tablehandler.h"
29
32
#include <wv2/src/handlers.h>
30
33
#include <wv2/src/functor.h>
34
#include <wv2/src/functordata.h>
58
62
class KWordTableHandler;
59
63
class KWordPictureHandler;
60
64
class KWordTextHandler;
61
class KWordDrawingHandler;
65
class KWordGraphicsHandler;
63
67
class Document : public QObject, public wvWare::SubDocumentHandler
67
71
Document(const std::string& fileName, KoFilterChain* chain, KoXmlWriter* bodyWriter,
68
KoGenStyles* mainStyles, KoXmlWriter* metaWriter, KoStore* store, KoXmlWriter* manifestWriter);
72
KoGenStyles* mainStyles, KoXmlWriter* metaWriter, KoXmlWriter* manifestWriter,
73
KoStore* store, POLE::Storage* storage,
74
LEInputStream* data, LEInputStream* table, LEInputStream* wdoc);
69
75
virtual ~Document();
71
KWordTextHandler *textHandler() const {
75
bool hasParser() const {
76
return m_parser != 0L;
78
bool bodyFound() const {
82
77
virtual void bodyStart();
83
78
virtual void bodyEnd();
85
80
virtual void headerStart(wvWare::HeaderData::Type type);
86
81
virtual void headerEnd();
82
virtual void headersMask(QList<bool> mask);
88
84
virtual void footnoteStart();
89
85
virtual void footnoteEnd();
108
104
QString extraName;
111
// Provide access to those attributes for texthandler.cpp and tablehandler.cpp
107
// Provide access to private attributes for our handlers
112
108
QString masterPageName(void) const { return m_masterPageName_list.first(); }
113
109
void set_writeMasterPageName(bool val) { m_writeMasterPageName = val; }
114
110
bool writeMasterPageName(void) const { return m_writeMasterPageName; }
111
bool omittMasterPage(void) const { return m_omittMasterPage; }
115
112
bool writingHeader(void) const { return m_writingHeader; }
116
113
KoXmlWriter* headerWriter(void) const { return m_headerWriter; }
114
KWordTextHandler *textHandler(void) const { return m_textHandler; }
115
bool hasParser(void) const { return m_parser != 0L; }
116
bool bodyFound(void) const { return m_bodyFound; }
119
* Add element val to the backgroud-color stack.
121
void addBgColor(const QString val) { m_bgColors.push(val); }
124
* Remove the last item from the backgroud-color stack.
126
void rmBgColor(void) { m_bgColors.pop(); }
129
* Update the last item of the background-color stack.
131
void updateBgColor(const QString val) { m_bgColors.pop(); m_bgColors.push(val); }
134
* @return the current background-color.
136
QString currentBgColor(void) { return m_bgColors.top(); }
139
* Checks if the header/footer content of the current section differs from
140
* the previous section's header/footer. @return TRUE - different content;
141
* FALSE - no difference or the Header document doesn't exist.
143
bool headersChanged(void) const;
145
POLE::Storage* storage(void) const { return m_storage; }
146
LEInputStream* data_stream(void) const { return m_data_stream; }
147
LEInputStream* table_stream(void) const { return m_table_stream; }
148
LEInputStream* wdocument_stream(void) const { return m_wdocument_stream; }
150
// get the style name used for line numbers
151
QString lineNumbersStyleName() const { return m_lineNumbersStyleName; }
119
153
// Connected to the KWordTextHandler only when parsing the body
120
154
void slotSectionFound(wvWare::SharedPtr<const wvWare::Word97::SEP>);
134
168
void slotTableFound(KWord::Table* table);
136
// Write out the frameset and add the key to the PICTURES tag
137
void slotPictureFound(const QString& frameName, const QString& pictureName, KoXmlWriter* writer,
138
const wvWare::FunctorBase*);
140
void slotDrawingFound(unsigned int globalCP, KoXmlWriter* writer);
142
void slotTextBoxFound(uint lid, KoXmlWriter* writer);
170
void slotInlineObjectFound(const wvWare::PictureData& data, KoXmlWriter* writer);
172
void slotFloatingObjectFound(unsigned int globalCP, KoXmlWriter* writer);
174
void slotTextBoxFound(uint lid, bool bodyDrawing);
144
176
// Similar to footnoteStart/footnoteEnd but for cells.
145
177
// This is connected to KWordTableHandler
158
190
KWordTextHandler* m_textHandler;
159
191
KWordTableHandler* m_tableHandler;
160
192
KWordReplacementHandler* m_replacementHandler;
161
KWordPictureHandler* m_pictureHandler;
162
KWordDrawingHandler* m_drawingHandler;
193
KWordGraphicsHandler* m_graphicsHandler;
164
195
KoFilterChain* m_chain;
165
196
wvWare::SharedPtr<wvWare::Parser> m_parser;
166
197
std::queue<SubDocument> m_subdocQueue;
167
198
std::queue<KWord::Table> m_tableQueue;
168
QStringList m_pictureList; // for <PICTURES>
170
200
bool m_bodyFound;
178
208
KoXmlWriter* m_metaWriter; //for writing to meta.xml
179
209
KoXmlWriter* m_headerWriter; //for header/footer writing in styles.xml
181
// unsigned char m_headerFooters; // a mask of HeaderData::Type bits
182
211
int m_headerCount; //to have a unique name for element we're putting into an masterPageStyle
183
212
bool m_writingHeader; //flag for headers/footers, where we write the actual text to styles.xml
184
213
bool m_evenOpen; //processing an even header/footer
185
214
bool m_firstOpen; //processing a first page header/footer
186
215
QBuffer* m_buffer; //for odd and first page header/footer tags
187
216
QBuffer* m_bufferEven; //for even header/footer tags
218
QList<KoGenStyle*> m_masterPageStyle_list; //master-page styles
219
QList<KoGenStyle*> m_pageLayoutStyle_list; //page-layout styles
220
QStringList m_masterPageName_list; //master-page names
222
QList<bool> m_headersMask; //mask informing of section's empty/nonempty header/footer stories
188
223
QList<bool> m_hasHeader_list; //does master-page/page-layout require a header element
189
224
QList<bool> m_hasFooter_list; //does master-page/page-layout require a footer element
191
QStringList m_masterPageName_list; //master-page names
192
QStringList m_pageLayoutName_list; //page-layout names
193
226
bool m_writeMasterPageName; //whether to write the master-page name into a paragraph/table
227
bool m_omittMasterPage; //whether master-page style for current section has been omitted
195
229
int m_initialFootnoteNumber;
196
230
int m_initialEndnoteNumber;
232
QString m_lineNumbersStyleName;
234
//pointers to the POLE store content
235
LEInputStream* m_data_stream;
236
LEInputStream* m_table_stream;
237
LEInputStream* m_wdocument_stream;
238
POLE::Storage* m_storage; // pointer to the pole storage
240
//A stack for backgroud-colors, which represets a background color context
241
//for automatic colors.
242
QStack<QString> m_bgColors;
199
245
#endif // DOCUMENT_H