[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [calligra/export-epub-moji] filters/words/epub: Preparations for moving all the html generation to c
From: Inge Wallin <inge () lysator ! liu ! se>
Date: 2012-07-31 22:22:12
Message-ID: 20120731222212.076ACA60A6 () git ! kde ! org
[Download RAW message or body]
Git commit 777bc23d834c524f15022dd84baf083a82b1d38d by Inge Wallin.
Committed on 01/08/2012 at 00:21.
Pushed by ingwa into branch 'export-epub-moji'.
Preparations for moving all the html generation to convertContent:
- Simplifying some code
- Break out handling of tables into its own file.
M +2 -7 filters/words/epub/exportepub2.cpp
M +91 -84 filters/words/epub/htmlconvert.cpp
http://commits.kde.org/calligra/777bc23d834c524f15022dd84baf083a82b1d38d
diff --git a/filters/words/epub/exportepub2.cpp b/filters/words/epub/exportepub2.cpp
index 4342ddd..52d581b 100644
--- a/filters/words/epub/exportepub2.cpp
+++ b/filters/words/epub/exportepub2.cpp
@@ -109,6 +109,7 @@ KoFilter::ConversionStatus ExportEpub2::convert(const QByteArray \
&from, const QB delete odfStore;
return status;
}
+ epub.addContentFile("stylesheet", "OEBPS/styleSheet.css", "text/css", \
cssContent);
// Create html contents
QByteArray htmlContent;
@@ -141,13 +142,7 @@ KoFilter::ConversionStatus ExportEpub2::convert(const QByteArray \
&from, const QB }
// ----------------------------------------------------------------
- // write contents
-
- epub.addContentFile("stylesheet", "OEBPS/styleSheet.css", "text/css", \
cssContent);
- //epub.addContentFile("body", "OEBPS/body.html", "application/xhtml+xml", \
htmlContent);
-
- // ----------------------------------------------------------------
- // Write epub files
+ // Write the finished epub file to disk
epub.writeEpub(m_chain->outputFile(), to, m_meta);
diff --git a/filters/words/epub/htmlconvert.cpp b/filters/words/epub/htmlconvert.cpp
index 5b69ec7..4425330 100644
--- a/filters/words/epub/htmlconvert.cpp
+++ b/filters/words/epub/htmlconvert.cpp
@@ -39,7 +39,7 @@
static void createHtmlHead(KoXmlWriter *writer, QHash<QString, QString> &metaData);
-
+static void handleTagTable(QDomElement &nodeElement, KoXmlWriter *bodyWriter);
KoFilter::ConversionStatus stylesParse(KoStore *odfStore,
@@ -401,107 +401,31 @@ QPair<KoFilter::ConversionStatus, bool> convertContent(KoStore \
*odfStore, QHash< childNode = doc.documentElement().firstChild();
childNode = childNode.nextSibling();
childNode = childNode.firstChild().firstChild().nextSibling();
- if (!flagMoreHtml) {
- nodeElement = childNode.toElement();
- }
- else {
+
+ // Set childNode to the node we want to operate on next.
+ if (flagMoreHtml) {
for (int i = 0; i <startNode; i++){
childNode = childNode.nextSibling();
}
- nodeElement = childNode.toElement();
sibl = startNode;
}
+ nodeElement = childNode.toElement();
QDomNode pNode;
- bool pFlag = false; // True if inside a top level <p>.
+ bool pFlag = false; // True if inside a top level <p> tag.
while (!nodeElement.isNull() || pFlag) {
//kDebug(30517) << nodeElement.tagName() <<pFlag;
// Check for tag table
if (nodeElement.tagName() == "table") {
- bodyWriter->startElement("table");
- QString styleClass = nodeElement.attribute("style-name");
- bodyWriter->addAttribute("class", styleClass);
- bodyWriter->addAttribute("border", "1");
-
- QDomNode tableNode = childNode.firstChild();
- QDomElement tableElement = tableNode.toElement(); // tag name should be \
table-column
-
- int columnsNumber;
- if (tableElement.hasAttribute("number-columns-repeated")) { // it is Lo \
tables
- columnsNumber = \
tableElement.attribute("number-columns-repeated").toInt();
- tableNode = tableNode.nextSibling();
- tableElement = tableNode.toElement();
- }
- else { // calligra words tables
- while (tableElement.tagName() == "table-column") {
- tableNode = tableNode.nextSibling();
- tableElement = tableNode.toElement();
- columnsNumber++;
- }
- columnsNumber++;
- }
-
- //===== table-row ======
-
- while (tableElement.tagName() == "table-row") { // FIXME: we dont have a \
tag for table-column.
- bodyWriter->startElement("tr");
-
- // ===== table-cell ======
- QDomNode cellNode = tableNode.firstChild();
- QDomElement cellElement = cellNode.toElement();
-
- for (int i = 0; i < columnsNumber; i++) {
- bodyWriter->startElement("td");
- bodyWriter->addAttribute("class", \
cellElement.attribute("style-name"));
-
- // ==== cell text ====
- QDomNode cellTextNode = cellNode.firstChild();
- QDomElement cellTextElement = cellTextNode.toElement();
-
- while (!cellTextElement.isNull()) {
- \
bodyWriter->startElement(cellTextElement.tagName().toUtf8());
- bodyWriter->addAttribute("class", \
cellTextElement.attribute("style-name"));
-
- QDomNode node = cellTextNode.firstChild();
- QDomElement elemet = node.toElement();
-
- // This is for span tag about font-style and font-weight
- // that i should add them with tagz b and i and should be \
other
- // tags what should i do? shoudl i check all ?
- if (node.isElement()) {
- if (elemet.hasAttribute("style-name")) {
- bodyWriter->startElement("span");
- bodyWriter->addAttribute("class", \
elemet.attribute("style-name"));
- QString text = cellTextElement.text();
- bodyWriter->addTextNode(text);
- bodyWriter->endElement(); // tagName()
- }
- }
- else {
- bodyWriter->addTextNode(cellTextElement.text());
- }
- bodyWriter->endElement(); // tagName(p)
- cellTextNode = cellTextNode.nextSibling();
- cellTextElement = cellTextNode.toElement();
- } // end while write tag p
- bodyWriter->endElement();
-
- cellNode = cellNode.nextSibling();
- cellElement = cellNode.toElement();
- } // end for write tag cell
- bodyWriter->endElement();
-
- tableNode = tableNode.nextSibling();
- tableElement = tableNode.toElement();
- } // end while write tag row
+ handleTagTable(nodeElement, bodyWriter);
+ // FIXME: I don't understand this at all. /IW
if (pFlag) {
if (childNode.nextSibling().isNull()) {
- bodyWriter->endElement();
childNode = pNode;
nodeElement = childNode.toElement();
pFlag = false;
@@ -713,3 +637,86 @@ void createHtmlHead(KoXmlWriter *writer, QHash<QString, QString> \
&metaData)
writer->endElement(); // head
}
+
+
+void handleTagTable(QDomElement &nodeElement, KoXmlWriter *bodyWriter)
+{
+ bodyWriter->startElement("table");
+ QString styleClass = nodeElement.attribute("style-name");
+ bodyWriter->addAttribute("class", styleClass);
+ bodyWriter->addAttribute("border", "1");
+
+ QDomNode tableNode = nodeElement.firstChild();
+ QDomElement tableElement = tableNode.toElement(); // tag name should be \
table-column +
+ int columnsNumber;
+ if (tableElement.hasAttribute("number-columns-repeated")) { // it is Lo tables
+ columnsNumber = tableElement.attribute("number-columns-repeated").toInt();
+ tableNode = tableNode.nextSibling();
+ tableElement = tableNode.toElement();
+ }
+ else { // calligra words tables
+ while (tableElement.tagName() == "table-column") {
+ tableNode = tableNode.nextSibling();
+ tableElement = tableNode.toElement();
+ columnsNumber++;
+ }
+ columnsNumber++;
+ }
+
+ //===== table-row ======
+
+ while (tableElement.tagName() == "table-row") { // FIXME: we dont have a tag for \
table-column. + bodyWriter->startElement("tr");
+
+ // ===== table-cell ======
+ QDomNode cellNode = tableNode.firstChild();
+ QDomElement cellElement = cellNode.toElement();
+
+ for (int i = 0; i < columnsNumber; i++) {
+ bodyWriter->startElement("td");
+ bodyWriter->addAttribute("class", cellElement.attribute("style-name"));
+
+ // ==== cell text ====
+ QDomNode cellTextNode = cellNode.firstChild();
+ QDomElement cellTextElement = cellTextNode.toElement();
+
+ while (!cellTextElement.isNull()) {
+ bodyWriter->startElement(cellTextElement.tagName().toUtf8());
+ bodyWriter->addAttribute("class", \
cellTextElement.attribute("style-name")); +
+ QDomNode node = cellTextNode.firstChild();
+ QDomElement elemet = node.toElement();
+
+ // This is for span tag about font-style and font-weight
+ // that i should add them with tagz b and i and should be other
+ // tags what should i do? shoudl i check all ?
+ if (node.isElement()) {
+ if (elemet.hasAttribute("style-name")) {
+ bodyWriter->startElement("span");
+ bodyWriter->addAttribute("class", \
elemet.attribute("style-name")); + QString text = \
cellTextElement.text(); + bodyWriter->addTextNode(text);
+ bodyWriter->endElement(); // span
+ }
+ }
+ else {
+ bodyWriter->addTextNode(cellTextElement.text());
+ }
+ bodyWriter->endElement(); // tagName(p)
+ cellTextNode = cellTextNode.nextSibling();
+ cellTextElement = cellTextNode.toElement();
+ } // end while write tag p
+ bodyWriter->endElement(); // td
+
+ cellNode = cellNode.nextSibling();
+ cellElement = cellNode.toElement();
+ } // end for write tag cell
+ bodyWriter->endElement(); //tr
+
+ tableNode = tableNode.nextSibling();
+ tableElement = tableNode.toElement();
+ } // end while write tag row
+
+ bodyWriter->endElement(); // table
+}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic