SVN commit 1098113 by sebsauer: cleanup a bit M +40 -80 excelimport.cc --- trunk/koffice/filters/kspread/excel/import/excelimport.cc #1098112:1098113 @@ -27,7 +27,7 @@ #include #include #include - +#include #include #include #include @@ -133,7 +133,9 @@ QList sheetStyles; QHash fontStyles; QString subScriptStyle, superScriptStyle; - QList charts; + + typedef QPair Chart; + QList charts; QHash rowsRepeatedHash; int rowsRepeated(Row* row, int rowIndex); @@ -141,7 +143,7 @@ int rowsCountTotal, rowsCountDone; void addProgress(int addValue); - bool createStyles(KoOdfWriteStore* store, KoXmlWriter* manifestWriter); + bool createStyles(KoStore* store, KoXmlWriter* manifestWriter, KoGenStyles* mainStyles); bool createContent(KoOdfWriteStore* store); bool createMeta(KoOdfWriteStore* store); bool createSettings(KoOdfWriteStore* store); @@ -255,7 +257,7 @@ } // store document styles - if ( !d->createStyles( &oasisStore, manifestWriter ) ) + if ( !d->createStyles( d->storeout, manifestWriter, d->mainStyles ) ) { kWarning() << "Couldn't open the file 'styles.xml'."; delete d->workbook; @@ -388,13 +390,15 @@ return store->closeContentWriter(); } + + // Writes the styles.xml -bool ExcelImport::Private::createStyles(KoOdfWriteStore* store, KoXmlWriter* manifestWriter) +bool ExcelImport::Private::createStyles(KoStore* store, KoXmlWriter* manifestWriter, KoGenStyles* mainStyles) { Q_UNUSED(manifestWriter); - if (!store->store()->open("styles.xml")) + if (!store->open("styles.xml")) return false; - KoStoreDevice dev(store->store()); + KoStoreDevice dev(store); KoXmlWriter* stylesWriter = new KoXmlWriter(&dev); stylesWriter->startDocument("office:document-styles"); @@ -432,7 +436,7 @@ stylesWriter->endDocument(); delete stylesWriter; - return store->store()->close(); + return store->close(); } // Writes meta-informations into the meta.xml @@ -1458,31 +1462,25 @@ // // // - this->charts << chart; + const QString href = QString("Object%1").arg(this->charts.count()); + this->charts << Chart(href, chart); DrawingObject* drawobj = chart->drawingObject(); Q_ASSERT(drawobj); - const QString href = QString("./Object%1").arg(this->charts.count()); xmlWriter->startElement("draw:frame"); -#if 0 //FIXME + //xmlWriter->addAttribute("table:end-cell-address", "Sheet1.H20"); + //xmlWriter->addAttribute("table:end-x", "0.2953in"); + //xmlWriter->addAttribute("table:end-y", "0.0232in"); xmlWriter->addAttribute("table:end-cell-address", columnName(drawobj->m_colR) + QString::number(drawobj->m_rwB)); xmlWriter->addAttribute("svg:x", QString::number(columnWidth(cell->sheet(),drawobj->m_colL,drawobj->m_dxL))+"pt"); xmlWriter->addAttribute("svg:y", QString::number(rowHeight(cell->sheet(),drawobj->m_rwT,drawobj->m_dyT))+"pt"); xmlWriter->addAttribute("svg:width", QString::number(columnWidth(cell->sheet(),drawobj->m_colR-drawobj->m_colL,drawobj->m_dxR))+"pt"); xmlWriter->addAttribute("svg:height", QString::number(rowHeight(cell->sheet(),drawobj->m_rwB-drawobj->m_rwT,drawobj->m_dyB))+"pt"); -#else - xmlWriter->addAttribute("table:end-cell-address", "Sheet1.H20"); - xmlWriter->addAttribute("table:end-x", "0.2953in"); - xmlWriter->addAttribute("table:end-y", "0.0232in"); - xmlWriter->addAttribute("draw:z-index", "0"); - xmlWriter->addAttribute("svg:x", "0.702in"); - xmlWriter->addAttribute("svg:y", "0.1016in"); - xmlWriter->addAttribute("svg:width", "3.1492in"); - xmlWriter->addAttribute("svg:height", "2.7555in"); -#endif + //xmlWriter->addAttribute("draw:z-index", "0"); + xmlWriter->startElement("draw:object"); xmlWriter->addAttribute("draw:notify-on-update-of-ranges", "Sheet1.D2:Sheet1.F2"); - xmlWriter->addAttribute("xlink:href", href); + xmlWriter->addAttribute("xlink:href", "./" + href); xmlWriter->addAttribute("xlink:type", "simple"); xmlWriter->addAttribute("xlink:show", "embed"); xmlWriter->addAttribute("xlink:actuate", "onLoad"); @@ -1499,9 +1497,9 @@ KoGenStyles styles; KoGenStyles mainStyles; - for(int i = 0; i < this->charts.count(); ++i) { - ChartObject *chart = this->charts[i]; - const QString href = QString("Object%1").arg(i+1); // don't use relative directories here + foreach(const Chart &_chart, this->charts) { + const QString href = _chart.first; + ChartObject *chart = _chart.second; this->storeout->pushDirectory(); this->storeout->enterDirectory(href); @@ -1522,7 +1520,6 @@ //style.addProperty("draw:stroke", "solid"); //style.addProperty("draw:fill-color", "#ff0000"); //bodyWriter->addAttribute("chart:style-name", styles.lookup(style, "ch")); - bodyWriter->addAttribute("chart:style-name", "ch94"); // @@ -1536,13 +1533,12 @@ //chartstyle.addProperty("chart:sort-by-x-values", "false"); //chartstyle.addProperty("chart:right-angled-axes", "true"); //bodyWriter->addAttribute("chart:style-name", styles.lookup(chartstyle, "ch")); - bodyWriter->addAttribute("chart:style-name", "ch98"); bodyWriter->addAttribute("table:cell-range-address", "Sheet1.C2:Sheet1.E2"); //FIXME -bodyWriter->addAttribute("svg:x", "0.16cm"); //FIXME -bodyWriter->addAttribute("svg:y", "0.14cm"); //FIXME -bodyWriter->addAttribute("svg:width", "6.712cm"); //FIXME -bodyWriter->addAttribute("svg:height", "6.58cm"); //FIXME + //bodyWriter->addAttribute("svg:x", "0.16cm"); //FIXME + //bodyWriter->addAttribute("svg:y", "0.14cm"); //FIXME + //bodyWriter->addAttribute("svg:width", "6.712cm"); //FIXME + //bodyWriter->addAttribute("svg:height", "6.58cm"); //FIXME // // @@ -1555,15 +1551,17 @@ //bodyWriter->addAttribute("chart:style-name", styles.lookup(seriesstyle, "ch")); bodyWriter->addAttribute("chart:values-cell-range-address", "Sheet1.C2:Sheet1.E2"); //FIXME -bodyWriter->addAttribute("chart:class", "chart:circle"); //FIXME -for(int j=0; j < 3; ++j) { - //KoGenStyle gs(KoGenStyle::StyleGraphicAuto, "chart"); - //gs.addProperty("draw:fill-color", "#004586"); - bodyWriter->startElement("chart:data-point"); - //bodyWriter->addAttribute("chart-style-name", styles.lookup(gs, "ch")); - bodyWriter->addAttribute("chart-style-name", "ch97"); - bodyWriter->endElement(); -} + bodyWriter->addAttribute("chart:class", "chart:circle"); //FIXME + + /* + for(int j=0; j < 3; ++j) { + //KoGenStyle gs(KoGenStyle::StyleGraphicAuto, "chart"); + //gs.addProperty("draw:fill-color", "#004586"); + bodyWriter->startElement("chart:data-point"); + //bodyWriter->addAttribute("chart-style-name", styles.lookup(gs, "ch")); + bodyWriter->endElement(); + } + */ // // // @@ -1579,47 +1577,9 @@ styles.saveOdfAutomaticStyles(contentWriter, false); s.closeContentWriter(); - if(this->storeout->open("styles.xml")) { - KoStoreDevice dev(this->storeout); - KoXmlWriter* stylesWriter = new KoXmlWriter(&dev); + //KoOdfWriteStore oasisStore(d->storeout); + createStyles(this->storeout, manifestWriter, &mainStyles); - stylesWriter->startDocument("office:document-styles"); - stylesWriter->startElement("office:document-styles"); - stylesWriter->addAttribute("xmlns:office", "urn:oasis:names:tc:opendocument:xmlns:office:1.0"); - stylesWriter->addAttribute("xmlns:style", "urn:oasis:names:tc:opendocument:xmlns:style:1.0"); - stylesWriter->addAttribute("xmlns:text", "urn:oasis:names:tc:opendocument:xmlns:text:1.0"); - stylesWriter->addAttribute("xmlns:table", "urn:oasis:names:tc:opendocument:xmlns:table:1.0"); - stylesWriter->addAttribute("xmlns:draw", "urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"); - stylesWriter->addAttribute("xmlns:fo", "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"); - stylesWriter->addAttribute("xmlns:svg", "urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"); - stylesWriter->addAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink"); - stylesWriter->addAttribute("xmlns:chart", "urn:oasis:names:tc:opendocument:xmlns:chart:1.0"); - stylesWriter->addAttribute("xmlns:dc", "http://purl.org/dc/elements/1.1/"); - stylesWriter->addAttribute("xmlns:meta", "urn:oasis:names:tc:opendocument:xmlns:meta:1.0"); - stylesWriter->addAttribute("xmlns:number", "urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"); - //stylesWriter->addAttribute("xmlns:presentation", "urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"); - //stylesWriter->addAttribute("xmlns:dr3d", "urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"); - stylesWriter->addAttribute("xmlns:math", "http://www.w3.org/1998/Math/MathML"); - //stylesWriter->addAttribute("xmlns:form", "urn:oasis:names:tc:opendocument:xmlns:form:1.0"); - //stylesWriter->addAttribute("xmlns:script", "urn:oasis:names:tc:opendocument:xmlns:script:1.0"); - //stylesWriter->addAttribute("xmlns:dom", "http://www.w3.org/2001/xml-events"); - //stylesWriter->addAttribute("xmlns:xforms", "http://www.w3.org/2002/xforms"); - //stylesWriter->addAttribute("xmlns:xsd", "http://www.w3.org/2001/XMLSchema"); - //stylesWriter->addAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"); - stylesWriter->addAttribute("xmlns:of", "urn:oasis:names:tc:opendocument:xmlns:of:1.2"); - //stylesWriter->addAttribute("xmlns:rdfa", "http://docs.oasis-open.org/opendocument/meta/rdfa#"); - stylesWriter->addAttribute("office:version", "1.2"); - - mainStyles.saveOdfMasterStyles(stylesWriter); - mainStyles.saveOdfDocumentStyles(stylesWriter); // office:style - mainStyles.saveOdfAutomaticStyles(stylesWriter, false); // office:automatic-styles - - stylesWriter->endElement(); // office:document-styles - stylesWriter->endDocument(); - delete stylesWriter; - this->storeout->close(); - } - manifestWriter->addManifestEntry(href, "application/vnd.oasis.opendocument.chart"); manifestWriter->addManifestEntry(QString("%1/styles.xml").arg(href), "text/xml"); manifestWriter->addManifestEntry(QString("%1/content.xml").arg(href), "text/xml");